diff --git a/docs/transcripts/_9_bK_WjuYY_ryan_fleury_raddbg_walkthrough.json b/docs/transcripts/_9_bK_WjuYY_ryan_fleury_raddbg_walkthrough.json new file mode 100644 index 00000000..6f37d378 --- /dev/null +++ b/docs/transcripts/_9_bK_WjuYY_ryan_fleury_raddbg_walkthrough.json @@ -0,0 +1,35807 @@ +{ + "video_id": "_9_bK_WjuYY", + "segments": [ + { + "start": 1.73, + "duration": 0.0, + "text": "[Music]" + }, + { + "start": 14.799, + "duration": 0.0, + "text": "All<00:00:14.880> right,<00:00:15.280> good<00:00:15.599> morning<00:00:16.080> everybody.<00:00:17.279> I" + }, + { + "start": 17.51, + "duration": 0.0, + "text": "All right, good morning everybody. I" + }, + { + "start": 17.52, + "duration": 0.0, + "text": "All right, good morning everybody. I hope<00:00:17.680> we<00:00:17.920> all<00:00:18.160> had<00:00:18.320> a<00:00:18.480> great<00:00:18.720> time<00:00:19.119> drinking" + }, + { + "start": 19.59, + "duration": 0.0, + "text": "hope we all had a great time drinking" + }, + { + "start": 19.6, + "duration": 0.0, + "text": "hope we all had a great time drinking yesterday,<00:00:20.240> hanging<00:00:20.640> out,<00:00:20.960> the<00:00:21.199> nice<00:00:21.439> dinner." + }, + { + "start": 22.39, + "duration": 0.0, + "text": "yesterday, hanging out, the nice dinner." + }, + { + "start": 22.4, + "duration": 0.0, + "text": "yesterday, hanging out, the nice dinner. Uh<00:00:22.640> for<00:00:22.880> the<00:00:23.039> future<00:00:23.359> dinners,<00:00:23.840> alcohol<00:00:24.240> is" + }, + { + "start": 24.47, + "duration": 0.0, + "text": "Uh for the future dinners, alcohol is" + }, + { + "start": 24.48, + "duration": 0.0, + "text": "Uh for the future dinners, alcohol is not<00:00:24.720> included.<00:00:25.359> We'll<00:00:25.600> run<00:00:25.760> out<00:00:25.920> of<00:00:26.160> money" + }, + { + "start": 27.83, + "duration": 0.0, + "text": "not included. We'll run out of money" + }, + { + "start": 27.84, + "duration": 0.0, + "text": "not included. We'll run out of money today.<00:00:28.240> Our<00:00:28.400> first<00:00:28.560> speaker<00:00:28.800> is<00:00:29.039> Ryan.<00:00:29.599> You" + }, + { + "start": 29.75, + "duration": 0.0, + "text": "today. Our first speaker is Ryan. You" + }, + { + "start": 29.76, + "duration": 0.0, + "text": "today. Our first speaker is Ryan. You know,<00:00:29.840> we<00:00:30.000> all<00:00:30.160> know<00:00:30.320> Ryan<00:00:30.800> strikes<00:00:31.279> fear<00:00:31.599> in" + }, + { + "start": 31.91, + "duration": 0.0, + "text": "know, we all know Ryan strikes fear in" + }, + { + "start": 31.92, + "duration": 0.0, + "text": "know, we all know Ryan strikes fear in his<00:00:32.079> enemies<00:00:32.640> because<00:00:32.960> he's<00:00:33.280> so<00:00:33.840> good<00:00:34.000> at<00:00:34.239> what" + }, + { + "start": 34.389, + "duration": 0.0, + "text": "his enemies because he's so good at what" + }, + { + "start": 34.399, + "duration": 0.0, + "text": "his enemies because he's so good at what he<00:00:34.559> does.<00:00:35.440> And<00:00:35.680> now,<00:00:36.079> as<00:00:36.320> you<00:00:36.480> remember<00:00:36.719> from" + }, + { + "start": 36.95, + "duration": 0.0, + "text": "he does. And now, as you remember from" + }, + { + "start": 36.96, + "duration": 0.0, + "text": "he does. And now, as you remember from yesterday,<00:00:37.680> he's<00:00:38.000> learned<00:00:38.239> to<00:00:38.480> ride<00:00:38.800> the" + }, + { + "start": 38.95, + "duration": 0.0, + "text": "yesterday, he's learned to ride the" + }, + { + "start": 38.96, + "duration": 0.0, + "text": "yesterday, he's learned to ride the moose." + }, + { + "start": 41.03, + "duration": 0.0, + "text": "moose." + }, + { + "start": 41.04, + "duration": 0.0, + "text": "moose. >> That's<00:00:41.280> true.<00:00:42.640> So<00:00:43.040> truly<00:00:43.520> now,<00:00:43.840> he<00:00:44.160> will<00:00:44.320> be" + }, + { + "start": 44.549, + "duration": 0.0, + "text": ">> That's true. So truly now, he will be" + }, + { + "start": 44.559, + "duration": 0.0, + "text": ">> That's true. So truly now, he will be completely<00:00:45.200> undefeated.<00:00:46.559> Everybody,<00:00:47.039> Ryan" + }, + { + "start": 47.43, + "duration": 0.0, + "text": "completely undefeated. Everybody, Ryan" + }, + { + "start": 47.44, + "duration": 0.0, + "text": "completely undefeated. Everybody, Ryan Flurry." + }, + { + "start": 55.36, + "duration": 0.0, + "text": ">> All<00:00:55.440> right.<00:00:55.840> Uh,<00:00:56.239> well,<00:00:56.399> thank<00:00:56.559> you,<00:00:56.800> Sam." + }, + { + "start": 57.189, + "duration": 0.0, + "text": ">> All right. Uh, well, thank you, Sam." + }, + { + "start": 57.199, + "duration": 0.0, + "text": ">> All right. Uh, well, thank you, Sam. That<00:00:57.440> was<00:00:57.520> a<00:00:57.840> great<00:00:58.079> introduction.<00:00:58.480> It<00:00:58.640> was" + }, + { + "start": 58.709, + "duration": 0.0, + "text": "That was a great introduction. It was" + }, + { + "start": 58.719, + "duration": 0.0, + "text": "That was a great introduction. It was not<00:00:58.800> a<00:00:58.960> real<00:00:59.120> moose,<00:00:59.600> by<00:00:59.680> the<00:00:59.840> way.<00:01:00.000> It<00:01:00.239> was" + }, + { + "start": 60.31, + "duration": 0.0, + "text": "not a real moose, by the way. It was" + }, + { + "start": 60.32, + "duration": 0.0, + "text": "not a real moose, by the way. It was fake<00:01:00.640> for<00:01:00.879> for<00:01:01.199> those<00:01:01.520> watching<00:01:01.840> online.<00:01:02.480> Um," + }, + { + "start": 63.349, + "duration": 0.0, + "text": "fake for for those watching online. Um," + }, + { + "start": 63.359, + "duration": 0.0, + "text": "fake for for those watching online. Um, so,<00:01:03.760> hi<00:01:04.000> everyone.<00:01:04.720> Uh,<00:01:05.119> thanks<00:01:05.360> for<00:01:05.519> being" + }, + { + "start": 65.91, + "duration": 0.0, + "text": "so, hi everyone. Uh, thanks for being" + }, + { + "start": 65.92, + "duration": 0.0, + "text": "so, hi everyone. Uh, thanks for being here<00:01:06.240> and<00:01:06.400> and<00:01:06.799> coming<00:01:07.040> to<00:01:07.200> listen.<00:01:07.520> Uh,<00:01:07.680> thank" + }, + { + "start": 67.83, + "duration": 0.0, + "text": "here and and coming to listen. Uh, thank" + }, + { + "start": 67.84, + "duration": 0.0, + "text": "here and and coming to listen. Uh, thank you<00:01:07.920> to<00:01:08.080> Sam,<00:01:08.479> Sander,<00:01:08.799> and<00:01:08.960> Charlie<00:01:09.360> for" + }, + { + "start": 69.67, + "duration": 0.0, + "text": "you to Sam, Sander, and Charlie for" + }, + { + "start": 69.68, + "duration": 0.0, + "text": "you to Sam, Sander, and Charlie for organizing<00:01:10.240> this.<00:01:10.640> This<00:01:10.880> has<00:01:11.040> been,<00:01:11.920> uh," + }, + { + "start": 72.149, + "duration": 0.0, + "text": "organizing this. This has been, uh," + }, + { + "start": 72.159, + "duration": 0.0, + "text": "organizing this. This has been, uh, absolutely<00:01:12.640> amazing.<00:01:13.040> Like<00:01:13.200> the<00:01:13.439> best<00:01:13.600> energy" + }, + { + "start": 73.91, + "duration": 0.0, + "text": "absolutely amazing. Like the best energy" + }, + { + "start": 73.92, + "duration": 0.0, + "text": "absolutely amazing. Like the best energy of<00:01:14.080> any<00:01:14.240> conference<00:01:14.560> I've<00:01:14.799> been<00:01:14.880> to<00:01:15.280> by<00:01:15.600> far." + }, + { + "start": 75.99, + "duration": 0.0, + "text": "of any conference I've been to by far." + }, + { + "start": 76.0, + "duration": 0.0, + "text": "of any conference I've been to by far. So,<00:01:16.479> thank<00:01:16.640> you<00:01:16.799> guys<00:01:16.960> so<00:01:17.200> much.<00:01:17.520> Um,<00:01:18.960> yes," + }, + { + "start": 79.67, + "duration": 0.0, + "text": "So, thank you guys so much. Um, yes," + }, + { + "start": 79.68, + "duration": 0.0, + "text": "So, thank you guys so much. Um, yes, clap<00:01:20.000> for<00:01:20.159> that." + }, + { + "start": 84.88, + "duration": 0.0, + "text": "And<00:01:25.280> uh<00:01:25.680> I'm<00:01:26.000> honored<00:01:26.320> to<00:01:26.560> be<00:01:26.720> here<00:01:26.880> because" + }, + { + "start": 87.109, + "duration": 0.0, + "text": "And uh I'm honored to be here because" + }, + { + "start": 87.119, + "duration": 0.0, + "text": "And uh I'm honored to be here because there's<00:01:27.360> so<00:01:27.520> many<00:01:27.680> people<00:01:27.840> you've<00:01:28.080> brought" + }, + { + "start": 88.31, + "duration": 0.0, + "text": "there's so many people you've brought" + }, + { + "start": 88.32, + "duration": 0.0, + "text": "there's so many people you've brought that<00:01:28.560> I<00:01:28.799> really<00:01:29.040> respect.<00:01:29.520> So<00:01:29.680> I'm<00:01:30.080> I<00:01:30.320> it's" + }, + { + "start": 90.55, + "duration": 0.0, + "text": "that I really respect. So I'm I it's" + }, + { + "start": 90.56, + "duration": 0.0, + "text": "that I really respect. So I'm I it's like<00:01:31.119> dream<00:01:31.439> come<00:01:31.600> true<00:01:31.840> to<00:01:32.000> be<00:01:32.079> here<00:01:32.320> and" + }, + { + "start": 92.55, + "duration": 0.0, + "text": "like dream come true to be here and" + }, + { + "start": 92.56, + "duration": 0.0, + "text": "like dream come true to be here and speak<00:01:32.799> alongside<00:01:33.280> them.<00:01:33.520> So<00:01:34.400> uh<00:01:34.560> for<00:01:34.720> those" + }, + { + "start": 94.87, + "duration": 0.0, + "text": "speak alongside them. So uh for those" + }, + { + "start": 94.88, + "duration": 0.0, + "text": "speak alongside them. So uh for those who've<00:01:35.200> not<00:01:35.759> uh<00:01:35.920> who<00:01:36.159> have<00:01:36.240> not<00:01:36.400> yet<00:01:36.640> met,<00:01:36.880> my" + }, + { + "start": 97.03, + "duration": 0.0, + "text": "who've not uh who have not yet met, my" + }, + { + "start": 97.04, + "duration": 0.0, + "text": "who've not uh who have not yet met, my name<00:01:37.119> is<00:01:37.200> Ryan<00:01:37.520> Flurry.<00:01:38.320> Um<00:01:38.799> I<00:01:39.119> work<00:01:39.280> on<00:01:39.439> the" + }, + { + "start": 99.59, + "duration": 0.0, + "text": "name is Ryan Flurry. Um I work on the" + }, + { + "start": 99.6, + "duration": 0.0, + "text": "name is Ryan Flurry. Um I work on the RAD<00:01:39.920> debugger,<00:01:40.320> which<00:01:40.479> is<00:01:40.560> the<00:01:40.720> project" + }, + { + "start": 101.109, + "duration": 0.0, + "text": "RAD debugger, which is the project" + }, + { + "start": 101.119, + "duration": 0.0, + "text": "RAD debugger, which is the project originally<00:01:41.600> started<00:01:41.840> by<00:01:41.920> Rad<00:01:42.240> Game<00:01:42.479> tools." + }, + { + "start": 102.71, + "duration": 0.0, + "text": "originally started by Rad Game tools." + }, + { + "start": 102.72, + "duration": 0.0, + "text": "originally started by Rad Game tools. You<00:01:42.799> may<00:01:42.880> have<00:01:43.040> heard<00:01:43.119> of<00:01:43.200> it<00:01:43.680> from<00:01:43.920> like<00:01:44.240> 2013" + }, + { + "start": 104.87, + "duration": 0.0, + "text": "You may have heard of it from like 2013" + }, + { + "start": 104.88, + "duration": 0.0, + "text": "You may have heard of it from like 2013 or<00:01:45.040> whatever<00:01:45.520> when<00:01:45.759> it<00:01:45.920> started<00:01:46.240> when<00:01:46.399> I<00:01:46.640> was" + }, + { + "start": 106.71, + "duration": 0.0, + "text": "or whatever when it started when I was" + }, + { + "start": 106.72, + "duration": 0.0, + "text": "or whatever when it started when I was like<00:01:47.280> 15<00:01:47.680> or<00:01:47.920> something.<00:01:48.640> Um<00:01:49.280> it's<00:01:49.520> gone" + }, + { + "start": 109.749, + "duration": 0.0, + "text": "like 15 or something. Um it's gone" + }, + { + "start": 109.759, + "duration": 0.0, + "text": "like 15 or something. Um it's gone through<00:01:50.320> some<00:01:50.560> some<00:01:51.119> successive<00:01:51.680> teams.<00:01:52.159> Um" + }, + { + "start": 113.429, + "duration": 0.0, + "text": "through some some successive teams. Um" + }, + { + "start": 113.439, + "duration": 0.0, + "text": "through some some successive teams. Um uh<00:01:53.920> but<00:01:54.320> uh<00:01:54.479> RAD<00:01:54.720> game<00:01:54.880> tool<00:01:55.040> is<00:01:55.200> now<00:01:55.360> part<00:01:55.439> of" + }, + { + "start": 115.51, + "duration": 0.0, + "text": "uh but uh RAD game tool is now part of" + }, + { + "start": 115.52, + "duration": 0.0, + "text": "uh but uh RAD game tool is now part of Epic<00:01:55.840> Games.<00:01:56.159> If<00:01:56.320> it<00:01:56.479> needs<00:01:56.640> to<00:01:56.720> be<00:01:56.880> said" + }, + { + "start": 117.109, + "duration": 0.0, + "text": "Epic Games. If it needs to be said" + }, + { + "start": 117.119, + "duration": 0.0, + "text": "Epic Games. If it needs to be said though,<00:01:57.360> I'm<00:01:57.520> not<00:01:57.680> here<00:01:57.759> to<00:01:57.920> represent<00:01:58.240> them." + }, + { + "start": 118.469, + "duration": 0.0, + "text": "though, I'm not here to represent them." + }, + { + "start": 118.479, + "duration": 0.0, + "text": "though, I'm not here to represent them. I'm<00:01:58.719> here<00:01:58.880> on<00:01:59.040> my<00:01:59.119> own<00:01:59.520> uh<00:01:59.680> own<00:01:59.840> behalf.<00:02:00.399> So" + }, + { + "start": 121.429, + "duration": 0.0, + "text": "I'm here on my own uh own behalf. So" + }, + { + "start": 121.439, + "duration": 0.0, + "text": "I'm here on my own uh own behalf. So while<00:02:01.680> working<00:02:01.920> on<00:02:02.159> on<00:02:02.640> uh<00:02:02.719> the<00:02:02.880> Rad<00:02:03.119> debugger," + }, + { + "start": 123.429, + "duration": 0.0, + "text": "while working on on uh the Rad debugger," + }, + { + "start": 123.439, + "duration": 0.0, + "text": "while working on on uh the Rad debugger, I<00:02:03.520> tried<00:02:03.680> to<00:02:03.759> prioritize<00:02:04.320> something<00:02:04.880> that" + }, + { + "start": 125.19, + "duration": 0.0, + "text": "I tried to prioritize something that" + }, + { + "start": 125.2, + "duration": 0.0, + "text": "I tried to prioritize something that I've<00:02:05.360> always<00:02:05.520> felt<00:02:05.759> is<00:02:06.000> missing<00:02:06.320> from" + }, + { + "start": 126.55, + "duration": 0.0, + "text": "I've always felt is missing from" + }, + { + "start": 126.56, + "duration": 0.0, + "text": "I've always felt is missing from programming<00:02:07.040> tooling,<00:02:07.439> which<00:02:07.600> is<00:02:08.000> uh<00:02:08.160> good" + }, + { + "start": 128.389, + "duration": 0.0, + "text": "programming tooling, which is uh good" + }, + { + "start": 128.399, + "duration": 0.0, + "text": "programming tooling, which is uh good visual<00:02:08.800> feedback.<00:02:09.599> So<00:02:10.319> having<00:02:10.800> open" + }, + { + "start": 131.11, + "duration": 0.0, + "text": "visual feedback. So having open" + }, + { + "start": 131.12, + "duration": 0.0, + "text": "visual feedback. So having open visibility<00:02:11.520> into<00:02:11.760> a<00:02:12.000> system.<00:02:12.640> Um<00:02:13.200> I've<00:02:13.440> always" + }, + { + "start": 133.589, + "duration": 0.0, + "text": "visibility into a system. Um I've always" + }, + { + "start": 133.599, + "duration": 0.0, + "text": "visibility into a system. Um I've always felt<00:02:13.760> that<00:02:13.920> computers<00:02:14.239> are<00:02:14.400> very<00:02:14.560> opaque." + }, + { + "start": 136.07, + "duration": 0.0, + "text": "felt that computers are very opaque." + }, + { + "start": 136.08, + "duration": 0.0, + "text": "felt that computers are very opaque. Um,<00:02:16.720> coming<00:02:16.959> from<00:02:17.120> game<00:02:17.360> development,<00:02:18.160> uh," + }, + { + "start": 138.949, + "duration": 0.0, + "text": "Um, coming from game development, uh," + }, + { + "start": 138.959, + "duration": 0.0, + "text": "Um, coming from game development, uh, it's<00:02:19.440> really<00:02:19.680> easy<00:02:19.920> to<00:02:20.080> learn<00:02:20.239> when<00:02:20.480> you<00:02:20.879> are" + }, + { + "start": 141.11, + "duration": 0.0, + "text": "it's really easy to learn when you are" + }, + { + "start": 141.12, + "duration": 0.0, + "text": "it's really easy to learn when you are always<00:02:21.360> debugging<00:02:21.760> things<00:02:21.920> that<00:02:22.160> it's<00:02:22.319> very" + }, + { + "start": 142.47, + "duration": 0.0, + "text": "always debugging things that it's very" + }, + { + "start": 142.48, + "duration": 0.0, + "text": "always debugging things that it's very useful.<00:02:22.800> We<00:02:22.959> saw<00:02:23.120> in<00:02:23.440> Dennis's<00:02:24.000> talk<00:02:24.160> that" + }, + { + "start": 144.309, + "duration": 0.0, + "text": "useful. We saw in Dennis's talk that" + }, + { + "start": 144.319, + "duration": 0.0, + "text": "useful. We saw in Dennis's talk that it's<00:02:24.560> like<00:02:24.720> if<00:02:24.959> you're<00:02:25.040> looking<00:02:25.200> at" + }, + { + "start": 145.51, + "duration": 0.0, + "text": "it's like if you're looking at" + }, + { + "start": 145.52, + "duration": 0.0, + "text": "it's like if you're looking at timestamps,<00:02:26.480> it's<00:02:26.800> totally<00:02:27.200> different" + }, + { + "start": 147.35, + "duration": 0.0, + "text": "timestamps, it's totally different" + }, + { + "start": 147.36, + "duration": 0.0, + "text": "timestamps, it's totally different experience<00:02:27.599> than<00:02:27.840> looking<00:02:28.000> at<00:02:28.080> a<00:02:28.239> profile<00:02:28.560> at" + }, + { + "start": 148.63, + "duration": 0.0, + "text": "experience than looking at a profile at" + }, + { + "start": 148.64, + "duration": 0.0, + "text": "experience than looking at a profile at a<00:02:28.800> flame<00:02:29.120> graph,<00:02:29.360> right?<00:02:29.520> It's<00:02:29.760> completely" + }, + { + "start": 150.07, + "duration": 0.0, + "text": "a flame graph, right? It's completely" + }, + { + "start": 150.08, + "duration": 0.0, + "text": "a flame graph, right? It's completely different<00:02:30.319> experience.<00:02:31.360> Um,<00:02:31.920> and<00:02:32.400> game" + }, + { + "start": 152.63, + "duration": 0.0, + "text": "different experience. Um, and game" + }, + { + "start": 152.64, + "duration": 0.0, + "text": "different experience. Um, and game developers,<00:02:33.200> you<00:02:33.519> always<00:02:33.840> are<00:02:34.080> visualizing" + }, + { + "start": 154.55, + "duration": 0.0, + "text": "developers, you always are visualizing" + }, + { + "start": 154.56, + "duration": 0.0, + "text": "developers, you always are visualizing things.<00:02:34.879> You're<00:02:35.120> always<00:02:35.280> trying<00:02:35.519> to<00:02:35.680> get<00:02:35.920> a" + }, + { + "start": 156.07, + "duration": 0.0, + "text": "things. You're always trying to get a" + }, + { + "start": 156.08, + "duration": 0.0, + "text": "things. You're always trying to get a different<00:02:36.319> view<00:02:36.480> into<00:02:36.720> your<00:02:36.879> data<00:02:37.040> to<00:02:37.200> make" + }, + { + "start": 157.35, + "duration": 0.0, + "text": "different view into your data to make" + }, + { + "start": 157.36, + "duration": 0.0, + "text": "different view into your data to make something<00:02:37.599> clear." + }, + { + "start": 159.35, + "duration": 0.0, + "text": "something clear." + }, + { + "start": 159.36, + "duration": 0.0, + "text": "something clear. Um,<00:02:40.480> and<00:02:40.800> we<00:02:41.120> use<00:02:41.360> those<00:02:41.680> visualization<00:02:42.239> tools" + }, + { + "start": 162.55, + "duration": 0.0, + "text": "Um, and we use those visualization tools" + }, + { + "start": 162.56, + "duration": 0.0, + "text": "Um, and we use those visualization tools to<00:02:42.879> create<00:02:43.599> better<00:02:44.000> software<00:02:45.120> more" + }, + { + "start": 165.67, + "duration": 0.0, + "text": "to create better software more" + }, + { + "start": 165.68, + "duration": 0.0, + "text": "to create better software more efficiently,<00:02:46.080> which<00:02:46.239> is<00:02:46.319> why<00:02:46.480> we're<00:02:46.640> all" + }, + { + "start": 166.71, + "duration": 0.0, + "text": "efficiently, which is why we're all" + }, + { + "start": 166.72, + "duration": 0.0, + "text": "efficiently, which is why we're all here,<00:02:46.959> right?<00:02:47.760> Um,<00:02:48.800> so<00:02:49.760> in<00:02:50.000> other<00:02:50.160> words,<00:02:50.400> it's" + }, + { + "start": 170.55, + "duration": 0.0, + "text": "here, right? Um, so in other words, it's" + }, + { + "start": 170.56, + "duration": 0.0, + "text": "here, right? Um, so in other words, it's it's<00:02:50.800> useful<00:02:51.120> when<00:02:51.760> cracking<00:02:52.080> the<00:02:52.319> code.<00:02:52.879> I" + }, + { + "start": 173.19, + "duration": 0.0, + "text": "it's useful when cracking the code. I" + }, + { + "start": 173.2, + "duration": 0.0, + "text": "it's useful when cracking the code. I did<00:02:53.360> the<00:02:53.599> title<00:02:53.920> thing.<00:02:54.319> So" + }, + { + "start": 175.91, + "duration": 0.0, + "text": "did the title thing. So" + }, + { + "start": 175.92, + "duration": 0.0, + "text": "did the title thing. So um<00:02:56.560> so<00:02:56.720> there<00:02:56.959> are<00:02:57.040> many<00:02:57.280> talks<00:02:58.000> uh<00:02:58.080> or" + }, + { + "start": 178.39, + "duration": 0.0, + "text": "um so there are many talks uh or" + }, + { + "start": 178.4, + "duration": 0.0, + "text": "um so there are many talks uh or resources<00:02:59.120> on<00:02:59.519> debuggers<00:03:00.319> but<00:03:00.879> um<00:03:01.120> my" + }, + { + "start": 181.35, + "duration": 0.0, + "text": "resources on debuggers but um my" + }, + { + "start": 181.36, + "duration": 0.0, + "text": "resources on debuggers but um my impression<00:03:01.599> is<00:03:01.760> that<00:03:01.920> not<00:03:02.159> many<00:03:02.319> of<00:03:02.400> them" + }, + { + "start": 182.55, + "duration": 0.0, + "text": "impression is that not many of them" + }, + { + "start": 182.56, + "duration": 0.0, + "text": "impression is that not many of them focus<00:03:02.879> on<00:03:03.599> this<00:03:03.840> visualization<00:03:04.560> problem<00:03:05.599> even" + }, + { + "start": 185.83, + "duration": 0.0, + "text": "focus on this visualization problem even" + }, + { + "start": 185.84, + "duration": 0.0, + "text": "focus on this visualization problem even though<00:03:06.000> I<00:03:06.159> would<00:03:06.319> claim<00:03:06.720> it's<00:03:07.599> perhaps<00:03:08.000> the" + }, + { + "start": 188.229, + "duration": 0.0, + "text": "though I would claim it's perhaps the" + }, + { + "start": 188.239, + "duration": 0.0, + "text": "though I would claim it's perhaps the most<00:03:08.480> important<00:03:08.720> problem<00:03:08.879> that<00:03:09.120> a<00:03:09.280> debugger" + }, + { + "start": 189.67, + "duration": 0.0, + "text": "most important problem that a debugger" + }, + { + "start": 189.68, + "duration": 0.0, + "text": "most important problem that a debugger needs<00:03:09.840> to<00:03:10.000> solve<00:03:10.239> is<00:03:10.480> is<00:03:10.800> quick<00:03:11.200> good" + }, + { + "start": 191.35, + "duration": 0.0, + "text": "needs to solve is is quick good" + }, + { + "start": 191.36, + "duration": 0.0, + "text": "needs to solve is is quick good visualization<00:03:12.080> flexible<00:03:12.480> visualization" + }, + { + "start": 193.67, + "duration": 0.0, + "text": "visualization flexible visualization" + }, + { + "start": 193.68, + "duration": 0.0, + "text": "visualization flexible visualization into<00:03:14.000> your<00:03:14.159> data.<00:03:15.440> Um<00:03:15.760> so<00:03:16.080> I'm<00:03:16.319> going<00:03:16.400> to" + }, + { + "start": 196.47, + "duration": 0.0, + "text": "into your data. Um so I'm going to" + }, + { + "start": 196.48, + "duration": 0.0, + "text": "into your data. Um so I'm going to present<00:03:16.720> all<00:03:16.879> the<00:03:16.959> work<00:03:17.120> that<00:03:17.280> I've<00:03:17.440> done<00:03:17.599> on" + }, + { + "start": 197.83, + "duration": 0.0, + "text": "present all the work that I've done on" + }, + { + "start": 197.84, + "duration": 0.0, + "text": "present all the work that I've done on that<00:03:18.000> problem<00:03:18.640> to<00:03:18.800> you<00:03:18.879> all<00:03:19.120> today.<00:03:20.080> Now,<00:03:20.319> if" + }, + { + "start": 200.47, + "duration": 0.0, + "text": "that problem to you all today. Now, if" + }, + { + "start": 200.48, + "duration": 0.0, + "text": "that problem to you all today. Now, if you<00:03:20.560> aren't<00:03:20.800> familiar<00:03:21.040> with<00:03:21.200> debuggers,<00:03:22.319> um," + }, + { + "start": 202.47, + "duration": 0.0, + "text": "you aren't familiar with debuggers, um," + }, + { + "start": 202.48, + "duration": 0.0, + "text": "you aren't familiar with debuggers, um, or<00:03:22.720> if<00:03:22.879> you<00:03:22.959> don't<00:03:23.120> know<00:03:23.200> what<00:03:23.360> I<00:03:23.519> mean<00:03:23.760> by" + }, + { + "start": 204.07, + "duration": 0.0, + "text": "or if you don't know what I mean by" + }, + { + "start": 204.08, + "duration": 0.0, + "text": "or if you don't know what I mean by visualization<00:03:24.720> using<00:03:24.959> a<00:03:25.120> debugger,<00:03:26.319> uh,<00:03:26.400> I" + }, + { + "start": 206.55, + "duration": 0.0, + "text": "visualization using a debugger, uh, I" + }, + { + "start": 206.56, + "duration": 0.0, + "text": "visualization using a debugger, uh, I have<00:03:26.640> some<00:03:26.800> videos<00:03:27.040> of<00:03:27.120> the<00:03:27.200> RAD<00:03:27.440> debugger" + }, + { + "start": 207.83, + "duration": 0.0, + "text": "have some videos of the RAD debugger" + }, + { + "start": 207.84, + "duration": 0.0, + "text": "have some videos of the RAD debugger that<00:03:28.000> I'd<00:03:28.239> like<00:03:28.319> to<00:03:28.560> share<00:03:28.800> to<00:03:28.959> set<00:03:29.120> the<00:03:29.360> stage" + }, + { + "start": 209.589, + "duration": 0.0, + "text": "that I'd like to share to set the stage" + }, + { + "start": 209.599, + "duration": 0.0, + "text": "that I'd like to share to set the stage for<00:03:30.000> everything<00:03:30.319> I'm<00:03:30.560> going<00:03:30.640> to<00:03:30.720> talk<00:03:30.879> about." + }, + { + "start": 212.949, + "duration": 0.0, + "text": "for everything I'm going to talk about." + }, + { + "start": 212.959, + "duration": 0.0, + "text": "for everything I'm going to talk about. So,<00:03:33.680> uh,<00:03:33.920> first<00:03:34.159> thing,<00:03:34.400> if<00:03:34.640> I've<00:03:34.799> got<00:03:35.040> I've" + }, + { + "start": 215.27, + "duration": 0.0, + "text": "So, uh, first thing, if I've got I've" + }, + { + "start": 215.28, + "duration": 0.0, + "text": "So, uh, first thing, if I've got I've got<00:03:35.360> my<00:03:35.519> little<00:03:35.680> game<00:03:36.000> project,<00:03:36.879> shameless" + }, + { + "start": 217.35, + "duration": 0.0, + "text": "got my little game project, shameless" + }, + { + "start": 217.36, + "duration": 0.0, + "text": "got my little game project, shameless plug,<00:03:38.080> it's<00:03:38.319> not<00:03:38.480> really<00:03:38.959> special<00:03:39.280> yet,<00:03:39.519> but," + }, + { + "start": 220.229, + "duration": 0.0, + "text": "plug, it's not really special yet, but," + }, + { + "start": 220.239, + "duration": 0.0, + "text": "plug, it's not really special yet, but, uh,<00:03:40.400> you<00:03:40.560> know,<00:03:40.640> if<00:03:40.799> I've<00:03:40.959> got<00:03:41.040> this<00:03:41.280> program," + }, + { + "start": 221.589, + "duration": 0.0, + "text": "uh, you know, if I've got this program," + }, + { + "start": 221.599, + "duration": 0.0, + "text": "uh, you know, if I've got this program, I<00:03:41.760> can<00:03:41.840> do<00:03:42.000> things<00:03:42.159> in<00:03:42.319> the<00:03:42.480> program.<00:03:43.599> Um" + }, + { + "start": 225.11, + "duration": 0.0, + "text": "I can do things in the program. Um" + }, + { + "start": 225.12, + "duration": 0.0, + "text": "I can do things in the program. Um if<00:03:45.360> I<00:03:45.519> want<00:03:45.599> to<00:03:45.760> run<00:03:45.920> that<00:03:46.080> from<00:03:46.239> within<00:03:46.400> the" + }, + { + "start": 226.55, + "duration": 0.0, + "text": "if I want to run that from within the" + }, + { + "start": 226.56, + "duration": 0.0, + "text": "if I want to run that from within the debugger<00:03:46.959> in<00:03:47.120> the<00:03:47.200> case<00:03:47.360> of<00:03:47.440> rad<00:03:47.680> debugger<00:03:47.920> I" + }, + { + "start": 227.99, + "duration": 0.0, + "text": "debugger in the case of rad debugger I" + }, + { + "start": 228.0, + "duration": 0.0, + "text": "debugger in the case of rad debugger I can<00:03:48.080> do<00:03:48.159> radg<00:03:48.959> same<00:03:49.200> command<00:03:49.519> line<00:03:50.159> opens<00:03:50.480> up" + }, + { + "start": 230.55, + "duration": 0.0, + "text": "can do radg same command line opens up" + }, + { + "start": 230.56, + "duration": 0.0, + "text": "can do radg same command line opens up the<00:03:50.720> debugger<00:03:51.040> I<00:03:51.200> can<00:03:51.280> either<00:03:51.519> launch<00:03:51.840> the" + }, + { + "start": 232.07, + "duration": 0.0, + "text": "the debugger I can either launch the" + }, + { + "start": 232.08, + "duration": 0.0, + "text": "the debugger I can either launch the program<00:03:53.040> from<00:03:53.920> like<00:03:54.319> uh<00:03:54.400> with<00:03:54.560> the<00:03:54.640> debugger" + }, + { + "start": 235.11, + "duration": 0.0, + "text": "program from like uh with the debugger" + }, + { + "start": 235.12, + "duration": 0.0, + "text": "program from like uh with the debugger attached" + }, + { + "start": 236.789, + "duration": 0.0, + "text": "attached" + }, + { + "start": 236.799, + "duration": 0.0, + "text": "attached um<00:03:58.239> I<00:03:58.480> can<00:03:58.560> also<00:03:58.799> step<00:03:59.040> into<00:03:59.200> the<00:03:59.360> program" + }, + { + "start": 239.67, + "duration": 0.0, + "text": "um I can also step into the program" + }, + { + "start": 239.68, + "duration": 0.0, + "text": "um I can also step into the program these<00:03:59.840> are<00:04:00.000> all<00:04:00.159> very<00:04:00.319> common<00:04:00.560> debugger" + }, + { + "start": 240.949, + "duration": 0.0, + "text": "these are all very common debugger" + }, + { + "start": 240.959, + "duration": 0.0, + "text": "these are all very common debugger features<00:04:01.280> right<00:04:01.439> I<00:04:01.599> can<00:04:01.680> step<00:04:01.840> through<00:04:02.080> the" + }, + { + "start": 242.229, + "duration": 0.0, + "text": "features right I can step through the" + }, + { + "start": 242.239, + "duration": 0.0, + "text": "features right I can step through the code<00:04:03.280> um" + }, + { + "start": 245.35, + "duration": 0.0, + "text": "code um" + }, + { + "start": 245.36, + "duration": 0.0, + "text": "code um so<00:04:05.519> in<00:04:05.680> that<00:04:05.840> case<00:04:06.000> I'm<00:04:06.159> stepping<00:04:06.319> over<00:04:06.560> lines" + }, + { + "start": 246.789, + "duration": 0.0, + "text": "so in that case I'm stepping over lines" + }, + { + "start": 246.799, + "duration": 0.0, + "text": "so in that case I'm stepping over lines of<00:04:06.879> source<00:04:07.200> code<00:04:07.760> I<00:04:07.920> can<00:04:08.080> evaluate<00:04:08.560> things<00:04:08.720> if" + }, + { + "start": 248.949, + "duration": 0.0, + "text": "of source code I can evaluate things if" + }, + { + "start": 248.959, + "duration": 0.0, + "text": "of source code I can evaluate things if I<00:04:09.120> hover<00:04:09.360> them" + }, + { + "start": 252.48, + "duration": 0.0, + "text": "uh<00:04:12.720> so<00:04:12.879> if<00:04:13.120> I<00:04:13.280> put<00:04:13.680> uh<00:04:13.760> I<00:04:14.000> can<00:04:14.159> put<00:04:14.239> a<00:04:14.400> variable" + }, + { + "start": 254.869, + "duration": 0.0, + "text": "uh so if I put uh I can put a variable" + }, + { + "start": 254.879, + "duration": 0.0, + "text": "uh so if I put uh I can put a variable into<00:04:15.200> the<00:04:15.439> watch<00:04:15.760> window<00:04:16.000> here.<00:04:17.040> Uh<00:04:17.759> so<00:04:18.000> in" + }, + { + "start": 258.15, + "duration": 0.0, + "text": "into the watch window here. Uh so in" + }, + { + "start": 258.16, + "duration": 0.0, + "text": "into the watch window here. Uh so in this<00:04:18.239> case<00:04:18.400> it's<00:04:18.560> the<00:04:18.720> global<00:04:19.040> shared<00:04:19.280> and<00:04:19.440> if" + }, + { + "start": 259.59, + "duration": 0.0, + "text": "this case it's the global shared and if" + }, + { + "start": 259.6, + "duration": 0.0, + "text": "this case it's the global shared and if I<00:04:19.680> expand<00:04:19.919> that<00:04:20.160> you<00:04:20.320> can<00:04:20.400> see<00:04:20.479> as<00:04:20.639> I<00:04:20.799> step" + }, + { + "start": 260.949, + "duration": 0.0, + "text": "I expand that you can see as I step" + }, + { + "start": 260.959, + "duration": 0.0, + "text": "I expand that you can see as I step through<00:04:21.120> the<00:04:21.280> code<00:04:21.440> you<00:04:21.680> see<00:04:21.840> things<00:04:22.079> change" + }, + { + "start": 262.39, + "duration": 0.0, + "text": "through the code you see things change" + }, + { + "start": 262.4, + "duration": 0.0, + "text": "through the code you see things change live.<00:04:22.800> It's<00:04:23.040> very<00:04:23.759> very<00:04:24.080> common<00:04:24.320> debugger<00:04:25.280> um" + }, + { + "start": 265.59, + "duration": 0.0, + "text": "live. It's very very common debugger um" + }, + { + "start": 265.6, + "duration": 0.0, + "text": "live. It's very very common debugger um features<00:04:26.080> really.<00:04:27.280> Um<00:04:28.080> debuggers<00:04:28.720> also<00:04:29.040> tend" + }, + { + "start": 269.27, + "duration": 0.0, + "text": "features really. Um debuggers also tend" + }, + { + "start": 269.28, + "duration": 0.0, + "text": "features really. Um debuggers also tend to<00:04:29.440> have<00:04:29.600> like<00:04:29.840> features<00:04:30.240> to<00:04:31.199> uh<00:04:31.520> navigate<00:04:31.919> to" + }, + { + "start": 272.15, + "duration": 0.0, + "text": "to have like features to uh navigate to" + }, + { + "start": 272.16, + "duration": 0.0, + "text": "to have like features to uh navigate to different<00:04:32.320> parts<00:04:32.560> of<00:04:32.639> the<00:04:32.880> code.<00:04:33.360> Um<00:04:33.919> so<00:04:34.080> I<00:04:34.320> can" + }, + { + "start": 274.39, + "duration": 0.0, + "text": "different parts of the code. Um so I can" + }, + { + "start": 274.4, + "duration": 0.0, + "text": "different parts of the code. Um so I can go<00:04:34.560> to<00:04:34.800> some<00:04:35.360> to<00:04:35.600> some<00:04:35.840> function<00:04:36.160> and<00:04:36.320> and" + }, + { + "start": 276.71, + "duration": 0.0, + "text": "go to some to some function and and" + }, + { + "start": 276.72, + "duration": 0.0, + "text": "go to some to some function and and place<00:04:36.880> a<00:04:37.040> break<00:04:37.280> point<00:04:37.600> say<00:04:37.840> stop<00:04:38.080> at<00:04:38.240> this" + }, + { + "start": 278.39, + "duration": 0.0, + "text": "place a break point say stop at this" + }, + { + "start": 278.4, + "duration": 0.0, + "text": "place a break point say stop at this line<00:04:38.560> of<00:04:38.720> source<00:04:38.960> code<00:04:40.240> and<00:04:40.479> so<00:04:40.639> on.<00:04:40.880> Right?" + }, + { + "start": 281.11, + "duration": 0.0, + "text": "line of source code and so on. Right?" + }, + { + "start": 281.12, + "duration": 0.0, + "text": "line of source code and so on. Right? That's<00:04:41.360> like<00:04:42.560> pretty<00:04:42.880> basic<00:04:43.120> debugger<00:04:43.600> stuff." + }, + { + "start": 284.71, + "duration": 0.0, + "text": "That's like pretty basic debugger stuff." + }, + { + "start": 284.72, + "duration": 0.0, + "text": "That's like pretty basic debugger stuff. Um,<00:04:45.600> that's<00:04:45.840> like<00:04:46.000> this<00:04:46.160> is<00:04:46.240> what<00:04:46.320> it<00:04:46.479> looks" + }, + { + "start": 286.55, + "duration": 0.0, + "text": "Um, that's like this is what it looks" + }, + { + "start": 286.56, + "duration": 0.0, + "text": "Um, that's like this is what it looks like<00:04:46.720> to<00:04:46.880> use<00:04:46.960> one,<00:04:47.280> right?" + }, + { + "start": 290.8, + "duration": 0.0, + "text": "Google<00:04:51.120> Slides<00:04:51.360> is<00:04:51.520> weird<00:04:51.759> with<00:04:52.080> videos." + }, + { + "start": 292.55, + "duration": 0.0, + "text": "Google Slides is weird with videos." + }, + { + "start": 292.56, + "duration": 0.0, + "text": "Google Slides is weird with videos. Okay,<00:04:52.800> so<00:04:53.040> let's<00:04:53.199> say<00:04:53.280> I've<00:04:53.440> got<00:04:53.520> a<00:04:53.680> crash<00:04:53.840> in" + }, + { + "start": 294.07, + "duration": 0.0, + "text": "Okay, so let's say I've got a crash in" + }, + { + "start": 294.08, + "duration": 0.0, + "text": "Okay, so let's say I've got a crash in my<00:04:54.160> game.<00:04:54.800> Um,<00:04:55.120> I'm<00:04:55.440> hooked<00:04:55.759> up<00:04:55.840> to<00:04:56.000> my<00:04:56.160> game.<00:04:56.320> I" + }, + { + "start": 296.469, + "duration": 0.0, + "text": "my game. Um, I'm hooked up to my game. I" + }, + { + "start": 296.479, + "duration": 0.0, + "text": "my game. Um, I'm hooked up to my game. I hit<00:04:56.639> F5<00:04:57.280> or<00:04:57.600> I<00:04:57.919> press<00:04:58.160> the<00:04:58.479> green<00:04:58.639> arrow.<00:04:58.960> F5<00:04:59.280> is" + }, + { + "start": 299.43, + "duration": 0.0, + "text": "hit F5 or I press the green arrow. F5 is" + }, + { + "start": 299.44, + "duration": 0.0, + "text": "hit F5 or I press the green arrow. F5 is the<00:04:59.520> hotkey<00:04:59.759> for<00:04:59.919> that.<00:05:00.400> Uh,<00:05:00.560> the<00:05:00.720> debugger" + }, + { + "start": 301.11, + "duration": 0.0, + "text": "the hotkey for that. Uh, the debugger" + }, + { + "start": 301.12, + "duration": 0.0, + "text": "the hotkey for that. Uh, the debugger will<00:05:01.280> catch<00:05:01.440> that.<00:05:01.680> It'll<00:05:02.000> show<00:05:02.080> me<00:05:02.240> where" + }, + { + "start": 302.469, + "duration": 0.0, + "text": "will catch that. It'll show me where" + }, + { + "start": 302.479, + "duration": 0.0, + "text": "will catch that. It'll show me where that<00:05:02.639> is.<00:05:02.880> I<00:05:03.040> can<00:05:03.120> dig<00:05:03.360> into<00:05:03.600> things<00:05:03.759> like<00:05:03.919> the" + }, + { + "start": 304.07, + "duration": 0.0, + "text": "that is. I can dig into things like the" + }, + { + "start": 304.08, + "duration": 0.0, + "text": "that is. I can dig into things like the call<00:05:04.320> stack.<00:05:05.040> I<00:05:05.280> can<00:05:05.440> see<00:05:05.680> I<00:05:05.919> can<00:05:06.080> evaluate" + }, + { + "start": 306.55, + "duration": 0.0, + "text": "call stack. I can see I can evaluate" + }, + { + "start": 306.56, + "duration": 0.0, + "text": "call stack. I can see I can evaluate things<00:05:06.800> still.<00:05:07.120> I<00:05:07.280> can<00:05:07.440> I<00:05:07.680> can<00:05:07.840> see<00:05:08.000> why<00:05:08.320> some" + }, + { + "start": 308.55, + "duration": 0.0, + "text": "things still. I can I can see why some" + }, + { + "start": 308.56, + "duration": 0.0, + "text": "things still. I can I can see why some bug<00:05:08.880> is<00:05:09.039> happening,<00:05:09.360> right?<00:05:09.440> I<00:05:09.680> can<00:05:09.840> see<00:05:10.320> I<00:05:10.560> can" + }, + { + "start": 310.79, + "duration": 0.0, + "text": "bug is happening, right? I can see I can" + }, + { + "start": 310.8, + "duration": 0.0, + "text": "bug is happening, right? I can see I can sort<00:05:10.960> of<00:05:11.039> get<00:05:11.199> visibility<00:05:11.600> into<00:05:11.919> the<00:05:12.080> system" + }, + { + "start": 312.55, + "duration": 0.0, + "text": "sort of get visibility into the system" + }, + { + "start": 312.56, + "duration": 0.0, + "text": "sort of get visibility into the system when<00:05:12.960> something<00:05:13.199> goes<00:05:13.440> wrong.<00:05:14.479> Um<00:05:14.720> I<00:05:14.960> can<00:05:15.120> go" + }, + { + "start": 315.27, + "duration": 0.0, + "text": "when something goes wrong. Um I can go" + }, + { + "start": 315.28, + "duration": 0.0, + "text": "when something goes wrong. Um I can go back<00:05:15.680> uh<00:05:15.919> frames<00:05:16.240> in<00:05:16.320> the<00:05:16.479> call<00:05:16.720> stack.<00:05:17.600> Uh" + }, + { + "start": 318.15, + "duration": 0.0, + "text": "back uh frames in the call stack. Uh" + }, + { + "start": 318.16, + "duration": 0.0, + "text": "back uh frames in the call stack. Uh stuff<00:05:18.400> like<00:05:18.639> this." + }, + { + "start": 323.44, + "duration": 0.0, + "text": "Okay.<00:05:24.320> So<00:05:24.560> you<00:05:24.720> know<00:05:24.960> let's<00:05:25.120> say<00:05:25.360> like<00:05:25.600> in<00:05:25.759> in" + }, + { + "start": 326.15, + "duration": 0.0, + "text": "Okay. So you know let's say like in in" + }, + { + "start": 326.16, + "duration": 0.0, + "text": "Okay. So you know let's say like in in my<00:05:26.320> game<00:05:26.560> for<00:05:26.639> example<00:05:26.960> the<00:05:27.199> the<00:05:27.360> player<00:05:27.680> can" + }, + { + "start": 327.909, + "duration": 0.0, + "text": "my game for example the the player can" + }, + { + "start": 327.919, + "duration": 0.0, + "text": "my game for example the the player can like<00:05:28.240> hit<00:05:28.479> something.<00:05:28.880> So<00:05:28.960> if<00:05:29.199> I<00:05:29.520> go<00:05:29.600> ahead<00:05:29.840> and" + }, + { + "start": 329.99, + "duration": 0.0, + "text": "like hit something. So if I go ahead and" + }, + { + "start": 330.0, + "duration": 0.0, + "text": "like hit something. So if I go ahead and spawn<00:05:30.639> a<00:05:31.120> a<00:05:31.280> little<00:05:31.440> jelly<00:05:31.840> entity<00:05:32.160> here<00:05:32.720> I<00:05:32.960> can" + }, + { + "start": 333.029, + "duration": 0.0, + "text": "spawn a a little jelly entity here I can" + }, + { + "start": 333.039, + "duration": 0.0, + "text": "spawn a a little jelly entity here I can walk<00:05:33.199> up<00:05:33.440> as<00:05:33.680> the<00:05:33.840> player<00:05:34.160> and<00:05:34.400> punch<00:05:34.639> it.<00:05:35.600> If<00:05:35.840> I" + }, + { + "start": 335.99, + "duration": 0.0, + "text": "walk up as the player and punch it. If I" + }, + { + "start": 336.0, + "duration": 0.0, + "text": "walk up as the player and punch it. If I wanted<00:05:36.160> to<00:05:36.400> specifically<00:05:36.960> stop<00:05:37.680> when<00:05:38.560> that" + }, + { + "start": 338.95, + "duration": 0.0, + "text": "wanted to specifically stop when that" + }, + { + "start": 338.96, + "duration": 0.0, + "text": "wanted to specifically stop when that punching<00:05:39.360> code<00:05:39.680> path<00:05:39.840> is<00:05:40.000> hitting,<00:05:40.320> I<00:05:40.479> can<00:05:40.639> go" + }, + { + "start": 340.71, + "duration": 0.0, + "text": "punching code path is hitting, I can go" + }, + { + "start": 340.72, + "duration": 0.0, + "text": "punching code path is hitting, I can go and<00:05:40.960> find<00:05:41.120> wherever<00:05:41.440> I<00:05:41.520> wrote<00:05:41.759> the<00:05:41.919> code,<00:05:42.400> put" + }, + { + "start": 342.55, + "duration": 0.0, + "text": "and find wherever I wrote the code, put" + }, + { + "start": 342.56, + "duration": 0.0, + "text": "and find wherever I wrote the code, put a<00:05:42.639> break<00:05:42.880> point<00:05:43.120> there,<00:05:43.440> and<00:05:43.680> then<00:05:43.840> I<00:05:44.080> can<00:05:44.240> just" + }, + { + "start": 344.629, + "duration": 0.0, + "text": "a break point there, and then I can just" + }, + { + "start": 344.639, + "duration": 0.0, + "text": "a break point there, and then I can just like<00:05:45.840> uh<00:05:46.080> wait<00:05:46.320> for<00:05:46.479> some<00:05:46.800> wait<00:05:47.039> for<00:05:47.120> that" + }, + { + "start": 347.27, + "duration": 0.0, + "text": "like uh wait for some wait for that" + }, + { + "start": 347.28, + "duration": 0.0, + "text": "like uh wait for some wait for that event<00:05:47.520> to<00:05:47.680> happen,<00:05:47.919> right?<00:05:48.080> Wait<00:05:48.240> for<00:05:48.320> that" + }, + { + "start": 348.469, + "duration": 0.0, + "text": "event to happen, right? Wait for that" + }, + { + "start": 348.479, + "duration": 0.0, + "text": "event to happen, right? Wait for that code<00:05:48.639> path<00:05:48.800> to<00:05:48.960> be<00:05:49.039> executed.<00:05:49.840> You<00:05:50.080> stop.<00:05:50.800> Um" + }, + { + "start": 351.029, + "duration": 0.0, + "text": "code path to be executed. You stop. Um" + }, + { + "start": 351.039, + "duration": 0.0, + "text": "code path to be executed. You stop. Um and<00:05:51.280> at<00:05:51.440> that<00:05:51.600> point,<00:05:51.759> I<00:05:51.919> can<00:05:52.000> inspect<00:05:52.320> the" + }, + { + "start": 352.469, + "duration": 0.0, + "text": "and at that point, I can inspect the" + }, + { + "start": 352.479, + "duration": 0.0, + "text": "and at that point, I can inspect the state,<00:05:52.720> right?<00:05:52.960> Most,<00:05:53.280> you<00:05:53.440> know,<00:05:53.600> very" + }, + { + "start": 353.749, + "duration": 0.0, + "text": "state, right? Most, you know, very" + }, + { + "start": 353.759, + "duration": 0.0, + "text": "state, right? Most, you know, very common<00:05:54.000> debugger<00:05:54.400> stuff,<00:05:54.560> but<00:05:54.800> I<00:05:54.960> know<00:05:55.039> a<00:05:55.199> lot" + }, + { + "start": 355.27, + "duration": 0.0, + "text": "common debugger stuff, but I know a lot" + }, + { + "start": 355.28, + "duration": 0.0, + "text": "common debugger stuff, but I know a lot of<00:05:55.360> people<00:05:55.520> don't.<00:05:55.919> They<00:05:56.160> claim<00:05:56.479> they<00:05:56.639> don't" + }, + { + "start": 356.79, + "duration": 0.0, + "text": "of people don't. They claim they don't" + }, + { + "start": 356.8, + "duration": 0.0, + "text": "of people don't. They claim they don't use<00:05:56.960> debugger,<00:05:57.440> so<00:05:57.840> I<00:05:58.080> figured<00:05:58.320> I<00:05:58.560> would<00:05:58.639> just" + }, + { + "start": 358.87, + "duration": 0.0, + "text": "use debugger, so I figured I would just" + }, + { + "start": 358.88, + "duration": 0.0, + "text": "use debugger, so I figured I would just show<00:05:59.039> it.<00:05:59.440> Um<00:06:00.639> you<00:06:00.880> can<00:06:00.960> also<00:06:01.120> add<00:06:01.280> conditions" + }, + { + "start": 361.59, + "duration": 0.0, + "text": "show it. Um you can also add conditions" + }, + { + "start": 361.6, + "duration": 0.0, + "text": "show it. Um you can also add conditions to<00:06:01.680> a<00:06:01.840> breakpoint.<00:06:02.240> You<00:06:02.320> could<00:06:02.479> say<00:06:02.800> only<00:06:03.120> stop" + }, + { + "start": 363.35, + "duration": 0.0, + "text": "to a breakpoint. You could say only stop" + }, + { + "start": 363.36, + "duration": 0.0, + "text": "to a breakpoint. You could say only stop if<00:06:03.680> this<00:06:03.840> condition<00:06:04.160> is<00:06:04.319> true.<00:06:04.639> So<00:06:04.800> in<00:06:04.960> this" + }, + { + "start": 365.029, + "duration": 0.0, + "text": "if this condition is true. So in this" + }, + { + "start": 365.039, + "duration": 0.0, + "text": "if this condition is true. So in this case,<00:06:05.199> I'm<00:06:05.360> checking<00:06:06.000> if<00:06:06.240> it's<00:06:06.479> specifically" + }, + { + "start": 367.029, + "duration": 0.0, + "text": "case, I'm checking if it's specifically" + }, + { + "start": 367.039, + "duration": 0.0, + "text": "case, I'm checking if it's specifically the<00:06:07.280> player's<00:06:07.680> right<00:06:07.919> hand<00:06:08.080> or<00:06:08.319> right<00:06:08.560> hand<00:06:08.960> uh" + }, + { + "start": 369.35, + "duration": 0.0, + "text": "the player's right hand or right hand uh" + }, + { + "start": 369.36, + "duration": 0.0, + "text": "the player's right hand or right hand uh from<00:06:09.600> our<00:06:09.759> perspective,<00:06:10.319> right?" + }, + { + "start": 371.909, + "duration": 0.0, + "text": "from our perspective, right?" + }, + { + "start": 371.919, + "duration": 0.0, + "text": "from our perspective, right? So<00:06:12.080> yeah,<00:06:12.319> there<00:06:12.479> you<00:06:12.639> go." + }, + { + "start": 375.59, + "duration": 0.0, + "text": "So yeah, there you go." + }, + { + "start": 375.6, + "duration": 0.0, + "text": "So yeah, there you go. Uh<00:06:15.840> so<00:06:16.000> what<00:06:16.160> exactly<00:06:16.479> do<00:06:16.639> I<00:06:16.720> mean<00:06:16.880> by" + }, + { + "start": 376.95, + "duration": 0.0, + "text": "Uh so what exactly do I mean by" + }, + { + "start": 376.96, + "duration": 0.0, + "text": "Uh so what exactly do I mean by visualization?<00:06:17.840> Um<00:06:18.720> as<00:06:19.120> I<00:06:19.360> kind<00:06:19.520> of<00:06:19.600> covered" + }, + { + "start": 379.909, + "duration": 0.0, + "text": "visualization? Um as I kind of covered" + }, + { + "start": 379.919, + "duration": 0.0, + "text": "visualization? Um as I kind of covered already,<00:06:20.160> a<00:06:20.400> basic<00:06:20.639> version<00:06:20.720> of<00:06:20.880> this<00:06:21.039> is<00:06:21.199> the" + }, + { + "start": 381.35, + "duration": 0.0, + "text": "already, a basic version of this is the" + }, + { + "start": 381.36, + "duration": 0.0, + "text": "already, a basic version of this is the watch<00:06:21.600> window,<00:06:22.240> right?<00:06:22.479> You<00:06:22.720> can<00:06:22.800> evaluate<00:06:23.360> an" + }, + { + "start": 383.59, + "duration": 0.0, + "text": "watch window, right? You can evaluate an" + }, + { + "start": 383.6, + "duration": 0.0, + "text": "watch window, right? You can evaluate an expression<00:06:24.479> um<00:06:24.560> and<00:06:24.800> see<00:06:25.039> things<00:06:25.280> change." + }, + { + "start": 386.07, + "duration": 0.0, + "text": "expression um and see things change." + }, + { + "start": 386.08, + "duration": 0.0, + "text": "expression um and see things change. Another<00:06:26.400> example<00:06:27.039> would<00:06:27.280> be<00:06:28.080> memory<00:06:28.479> view." + }, + { + "start": 389.029, + "duration": 0.0, + "text": "Another example would be memory view." + }, + { + "start": 389.039, + "duration": 0.0, + "text": "Another example would be memory view. It's<00:06:29.199> just<00:06:29.360> another<00:06:29.680> very<00:06:30.000> common<00:06:31.199> uh" + }, + { + "start": 391.67, + "duration": 0.0, + "text": "It's just another very common uh" + }, + { + "start": 391.68, + "duration": 0.0, + "text": "It's just another very common uh visualization<00:06:32.560> technique<00:06:32.880> in<00:06:33.120> a<00:06:33.199> debugger." + }, + { + "start": 393.43, + "duration": 0.0, + "text": "visualization technique in a debugger." + }, + { + "start": 393.44, + "duration": 0.0, + "text": "visualization technique in a debugger. you<00:06:33.680> just<00:06:33.759> want<00:06:33.840> to<00:06:34.000> see<00:06:34.080> a<00:06:34.240> grid<00:06:34.400> of<00:06:34.560> bytes<00:06:35.280> uh" + }, + { + "start": 395.35, + "duration": 0.0, + "text": "you just want to see a grid of bytes uh" + }, + { + "start": 395.36, + "duration": 0.0, + "text": "you just want to see a grid of bytes uh in<00:06:35.680> sort<00:06:35.840> of<00:06:35.919> a<00:06:36.000> hex<00:06:36.240> editor<00:06:36.720> style<00:06:37.039> view.<00:06:38.000> Um" + }, + { + "start": 399.11, + "duration": 0.0, + "text": "in sort of a hex editor style view. Um" + }, + { + "start": 399.12, + "duration": 0.0, + "text": "in sort of a hex editor style view. Um and<00:06:39.280> then<00:06:39.440> many<00:06:39.680> of<00:06:39.759> the<00:06:39.840> same<00:06:40.000> things<00:06:40.160> apply" + }, + { + "start": 400.39, + "duration": 0.0, + "text": "and then many of the same things apply" + }, + { + "start": 400.4, + "duration": 0.0, + "text": "and then many of the same things apply right<00:06:40.639> as<00:06:40.800> I<00:06:40.960> step<00:06:41.120> through<00:06:41.280> the<00:06:41.440> program<00:06:41.759> I" + }, + { + "start": 401.909, + "duration": 0.0, + "text": "right as I step through the program I" + }, + { + "start": 401.919, + "duration": 0.0, + "text": "right as I step through the program I can<00:06:42.080> I<00:06:42.319> can<00:06:43.039> see<00:06:43.600> particular<00:06:44.000> bytes<00:06:44.400> change." + }, + { + "start": 404.71, + "duration": 0.0, + "text": "can I can see particular bytes change." + }, + { + "start": 404.72, + "duration": 0.0, + "text": "can I can see particular bytes change. So<00:06:44.800> here<00:06:44.960> I'm<00:06:45.120> evaluating<00:06:45.520> the<00:06:45.680> string" + }, + { + "start": 405.909, + "duration": 0.0, + "text": "So here I'm evaluating the string" + }, + { + "start": 405.919, + "duration": 0.0, + "text": "So here I'm evaluating the string variable<00:06:47.360> um" + }, + { + "start": 409.27, + "duration": 0.0, + "text": "variable um" + }, + { + "start": 409.28, + "duration": 0.0, + "text": "variable um and<00:06:49.520> then<00:06:49.680> I<00:06:50.160> assume<00:06:50.560> I<00:06:50.800> think<00:06:50.880> I<00:06:51.039> go<00:06:51.199> to<00:06:51.360> the<00:06:51.680> to" + }, + { + "start": 411.83, + "duration": 0.0, + "text": "and then I assume I think I go to the to" + }, + { + "start": 411.84, + "duration": 0.0, + "text": "and then I assume I think I go to the to the<00:06:52.000> memory<00:06:52.240> for<00:06:52.400> it<00:06:52.560> and<00:06:52.720> if<00:06:52.880> I<00:06:53.039> step<00:06:53.280> you'll" + }, + { + "start": 413.59, + "duration": 0.0, + "text": "the memory for it and if I step you'll" + }, + { + "start": 413.6, + "duration": 0.0, + "text": "the memory for it and if I step you'll see<00:06:53.919> it<00:06:54.160> changes" + }, + { + "start": 415.749, + "duration": 0.0, + "text": "see it changes" + }, + { + "start": 415.759, + "duration": 0.0, + "text": "see it changes etc.<00:06:56.080> So,<00:06:56.400> so<00:06:56.800> basic<00:06:57.360> very<00:06:57.600> common<00:06:57.840> debugger" + }, + { + "start": 418.309, + "duration": 0.0, + "text": "etc. So, so basic very common debugger" + }, + { + "start": 418.319, + "duration": 0.0, + "text": "etc. So, so basic very common debugger visualiza<00:06:58.880> uh<00:06:59.039> visualization<00:06:59.599> features<00:07:00.000> but" + }, + { + "start": 420.15, + "duration": 0.0, + "text": "visualiza uh visualization features but" + }, + { + "start": 420.16, + "duration": 0.0, + "text": "visualiza uh visualization features but this<00:07:00.319> is<00:07:00.479> like<00:07:00.960> this<00:07:01.199> is<00:07:01.360> the<00:07:01.520> subject.<00:07:02.080> Now" + }, + { + "start": 423.029, + "duration": 0.0, + "text": "this is like this is the subject. Now" + }, + { + "start": 423.039, + "duration": 0.0, + "text": "this is like this is the subject. Now again<00:07:03.360> just<00:07:03.520> a<00:07:03.680> couple<00:07:03.840> basic<00:07:04.160> examples<00:07:04.479> we'll" + }, + { + "start": 424.629, + "duration": 0.0, + "text": "again just a couple basic examples we'll" + }, + { + "start": 424.639, + "duration": 0.0, + "text": "again just a couple basic examples we'll get<00:07:04.800> into<00:07:05.039> more<00:07:05.440> later" + }, + { + "start": 426.95, + "duration": 0.0, + "text": "get into more later" + }, + { + "start": 426.96, + "duration": 0.0, + "text": "get into more later but<00:07:07.440> I<00:07:07.599> find<00:07:07.759> this<00:07:08.000> particular<00:07:08.400> problem" + }, + { + "start": 428.79, + "duration": 0.0, + "text": "but I find this particular problem" + }, + { + "start": 428.8, + "duration": 0.0, + "text": "but I find this particular problem important<00:07:09.599> because<00:07:09.840> for<00:07:10.080> me<00:07:10.240> while<00:07:10.479> learning" + }, + { + "start": 430.87, + "duration": 0.0, + "text": "important because for me while learning" + }, + { + "start": 430.88, + "duration": 0.0, + "text": "important because for me while learning programming<00:07:11.520> things<00:07:11.759> would<00:07:11.919> often<00:07:12.240> feel<00:07:13.120> like" + }, + { + "start": 433.35, + "duration": 0.0, + "text": "programming things would often feel like" + }, + { + "start": 433.36, + "duration": 0.0, + "text": "programming things would often feel like this.<00:07:13.919> Now<00:07:14.160> for<00:07:14.319> those<00:07:14.560> who<00:07:14.720> don't<00:07:14.800> know<00:07:14.880> what" + }, + { + "start": 435.029, + "duration": 0.0, + "text": "this. Now for those who don't know what" + }, + { + "start": 435.039, + "duration": 0.0, + "text": "this. Now for those who don't know what this<00:07:15.199> is<00:07:15.759> either<00:07:16.479> this<00:07:16.639> is<00:07:16.800> the<00:07:16.960> origin<00:07:17.199> of<00:07:17.280> the" + }, + { + "start": 437.43, + "duration": 0.0, + "text": "this is either this is the origin of the" + }, + { + "start": 437.44, + "duration": 0.0, + "text": "this is either this is the origin of the term<00:07:17.759> blackbox.<00:07:18.720> Uh<00:07:18.880> it's<00:07:19.039> a<00:07:19.199> flight<00:07:19.360> log" + }, + { + "start": 439.589, + "duration": 0.0, + "text": "term blackbox. Uh it's a flight log" + }, + { + "start": 439.599, + "duration": 0.0, + "text": "term blackbox. Uh it's a flight log recording<00:07:19.919> device.<00:07:20.479> Uh<00:07:21.039> and<00:07:21.360> yes<00:07:21.919> I<00:07:22.160> thought" + }, + { + "start": 442.23, + "duration": 0.0, + "text": "recording device. Uh and yes I thought" + }, + { + "start": 442.24, + "duration": 0.0, + "text": "recording device. Uh and yes I thought it<00:07:22.479> would<00:07:22.560> have<00:07:22.639> been<00:07:22.800> black<00:07:23.120> as<00:07:23.360> well.<00:07:24.400> uh<00:07:24.560> but" + }, + { + "start": 444.79, + "duration": 0.0, + "text": "it would have been black as well. uh but" + }, + { + "start": 444.8, + "duration": 0.0, + "text": "it would have been black as well. uh but no<00:07:25.039> it's<00:07:25.360> orange<00:07:25.680> for<00:07:26.000> whatever<00:07:26.319> reason<00:07:26.880> but" + }, + { + "start": 447.589, + "duration": 0.0, + "text": "no it's orange for whatever reason but" + }, + { + "start": 447.599, + "duration": 0.0, + "text": "no it's orange for whatever reason but in<00:07:27.919> programming<00:07:28.319> we've<00:07:28.560> abstracted<00:07:29.039> the<00:07:29.199> term" + }, + { + "start": 450.07, + "duration": 0.0, + "text": "in programming we've abstracted the term" + }, + { + "start": 450.08, + "duration": 0.0, + "text": "in programming we've abstracted the term as<00:07:30.319> we<00:07:30.479> know<00:07:30.720> programs<00:07:31.120> can<00:07:31.199> be<00:07:31.360> understood<00:07:31.840> as" + }, + { + "start": 452.07, + "duration": 0.0, + "text": "as we know programs can be understood as" + }, + { + "start": 452.08, + "duration": 0.0, + "text": "as we know programs can be understood as a<00:07:32.319> transform<00:07:33.039> from<00:07:33.280> A<00:07:33.440> to<00:07:33.599> B<00:07:33.919> right<00:07:34.160> some<00:07:34.319> input" + }, + { + "start": 454.71, + "duration": 0.0, + "text": "a transform from A to B right some input" + }, + { + "start": 454.72, + "duration": 0.0, + "text": "a transform from A to B right some input data<00:07:35.039> in<00:07:35.280> some<00:07:35.440> format<00:07:35.840> A<00:07:36.160> to<00:07:36.400> some<00:07:36.560> output" + }, + { + "start": 456.95, + "duration": 0.0, + "text": "data in some format A to some output" + }, + { + "start": 456.96, + "duration": 0.0, + "text": "data in some format A to some output data<00:07:37.280> in<00:07:37.520> format<00:07:37.919> B<00:07:39.199> um<00:07:40.160> we<00:07:40.400> use<00:07:40.479> the<00:07:40.639> term" + }, + { + "start": 460.87, + "duration": 0.0, + "text": "data in format B um we use the term" + }, + { + "start": 460.88, + "duration": 0.0, + "text": "data in format B um we use the term blackbox<00:07:41.440> when<00:07:41.599> we<00:07:41.840> don't<00:07:42.000> know<00:07:42.160> anything" + }, + { + "start": 462.469, + "duration": 0.0, + "text": "blackbox when we don't know anything" + }, + { + "start": 462.479, + "duration": 0.0, + "text": "blackbox when we don't know anything about<00:07:42.800> why" + }, + { + "start": 464.39, + "duration": 0.0, + "text": "about why" + }, + { + "start": 464.4, + "duration": 0.0, + "text": "about why something<00:07:44.800> happens<00:07:45.520> between<00:07:45.840> A<00:07:46.080> and<00:07:46.240> B<00:07:46.960> we" + }, + { + "start": 467.11, + "duration": 0.0, + "text": "something happens between A and B we" + }, + { + "start": 467.12, + "duration": 0.0, + "text": "something happens between A and B we don't<00:07:47.280> know<00:07:47.680> why<00:07:47.919> it<00:07:48.080> produces<00:07:48.400> B<00:07:48.639> we<00:07:48.720> don't" + }, + { + "start": 468.87, + "duration": 0.0, + "text": "don't know why it produces B we don't" + }, + { + "start": 468.88, + "duration": 0.0, + "text": "don't know why it produces B we don't know<00:07:48.960> how<00:07:49.120> it's<00:07:49.360> happening<00:07:50.000> we<00:07:50.160> hit<00:07:50.319> a<00:07:50.479> button" + }, + { + "start": 470.71, + "duration": 0.0, + "text": "know how it's happening we hit a button" + }, + { + "start": 470.72, + "duration": 0.0, + "text": "know how it's happening we hit a button we<00:07:50.880> run<00:07:51.039> a<00:07:51.199> program<00:07:51.759> and<00:07:52.000> something<00:07:52.400> happens" + }, + { + "start": 472.79, + "duration": 0.0, + "text": "we run a program and something happens" + }, + { + "start": 472.8, + "duration": 0.0, + "text": "we run a program and something happens out<00:07:53.039> pops<00:07:53.280> a" + }, + { + "start": 474.23, + "duration": 0.0, + "text": "out pops a" + }, + { + "start": 474.24, + "duration": 0.0, + "text": "out pops a You<00:07:54.400> know,<00:07:54.560> maybe<00:07:55.199> you<00:07:55.440> hope<00:07:56.240> it<00:07:56.400> works<00:07:57.120> great" + }, + { + "start": 477.35, + "duration": 0.0, + "text": "You know, maybe you hope it works great" + }, + { + "start": 477.36, + "duration": 0.0, + "text": "You know, maybe you hope it works great and<00:07:57.599> if<00:07:57.680> it<00:07:57.840> doesn't<00:07:58.639> go,<00:07:59.360> right?<00:08:00.240> Another<00:08:00.560> way" + }, + { + "start": 480.629, + "duration": 0.0, + "text": "and if it doesn't go, right? Another way" + }, + { + "start": 480.639, + "duration": 0.0, + "text": "and if it doesn't go, right? Another way of<00:08:00.800> looking<00:08:00.960> at<00:08:01.120> this<00:08:01.360> is<00:08:01.520> that<00:08:01.680> the<00:08:01.840> arrow<00:08:02.160> in" + }, + { + "start": 482.309, + "duration": 0.0, + "text": "of looking at this is that the arrow in" + }, + { + "start": 482.319, + "duration": 0.0, + "text": "of looking at this is that the arrow in the<00:08:02.400> middle,<00:08:02.960> the<00:08:03.280> code" + }, + { + "start": 485.27, + "duration": 0.0, + "text": "the middle, the code" + }, + { + "start": 485.28, + "duration": 0.0, + "text": "the middle, the code is<00:08:05.520> showing<00:08:05.840> very<00:08:06.160> few<00:08:06.400> signs<00:08:06.639> of<00:08:06.879> life.<00:08:07.680> Your" + }, + { + "start": 487.909, + "duration": 0.0, + "text": "is showing very few signs of life. Your" + }, + { + "start": 487.919, + "duration": 0.0, + "text": "is showing very few signs of life. Your program<00:08:08.160> is<00:08:08.400> doing<00:08:08.560> something<00:08:08.879> maybe" + }, + { + "start": 489.11, + "duration": 0.0, + "text": "program is doing something maybe" + }, + { + "start": 489.12, + "duration": 0.0, + "text": "program is doing something maybe undesirable<00:08:10.080> and<00:08:10.240> you<00:08:10.479> don't<00:08:10.639> know<00:08:10.879> why." + }, + { + "start": 491.67, + "duration": 0.0, + "text": "undesirable and you don't know why." + }, + { + "start": 491.68, + "duration": 0.0, + "text": "undesirable and you don't know why. There's<00:08:12.000> very<00:08:12.240> little<00:08:12.479> information<00:08:12.879> coming" + }, + { + "start": 493.11, + "duration": 0.0, + "text": "There's very little information coming" + }, + { + "start": 493.12, + "duration": 0.0, + "text": "There's very little information coming out<00:08:13.280> of<00:08:13.360> the<00:08:13.599> system.<00:08:14.560> Meanwhile,<00:08:14.960> you<00:08:15.120> just" + }, + { + "start": 495.27, + "duration": 0.0, + "text": "out of the system. Meanwhile, you just" + }, + { + "start": 495.28, + "duration": 0.0, + "text": "out of the system. Meanwhile, you just want<00:08:15.360> your<00:08:15.520> program<00:08:15.759> to<00:08:15.919> work." + }, + { + "start": 497.589, + "duration": 0.0, + "text": "want your program to work." + }, + { + "start": 497.599, + "duration": 0.0, + "text": "want your program to work. As<00:08:17.840> I<00:08:18.080> see<00:08:18.160> it,<00:08:18.800> the<00:08:19.039> challenge<00:08:19.280> here<00:08:19.440> is<00:08:19.520> that" + }, + { + "start": 499.749, + "duration": 0.0, + "text": "As I see it, the challenge here is that" + }, + { + "start": 499.759, + "duration": 0.0, + "text": "As I see it, the challenge here is that computers<00:08:20.080> are<00:08:20.319> inherently<00:08:20.800> opaque<00:08:21.120> to<00:08:21.199> us." + }, + { + "start": 501.27, + "duration": 0.0, + "text": "computers are inherently opaque to us." + }, + { + "start": 501.28, + "duration": 0.0, + "text": "computers are inherently opaque to us. They're<00:08:21.599> doing<00:08:22.000> billions<00:08:22.400> and<00:08:22.639> billions<00:08:22.960> of" + }, + { + "start": 503.11, + "duration": 0.0, + "text": "They're doing billions and billions of" + }, + { + "start": 503.12, + "duration": 0.0, + "text": "They're doing billions and billions of things<00:08:23.919> per<00:08:24.160> second.<00:08:25.120> And<00:08:25.280> so<00:08:25.520> there's" + }, + { + "start": 505.749, + "duration": 0.0, + "text": "things per second. And so there's" + }, + { + "start": 505.759, + "duration": 0.0, + "text": "things per second. And so there's actually<00:08:25.919> an<00:08:26.080> enormous<00:08:26.479> amount<00:08:26.639> of" + }, + { + "start": 506.79, + "duration": 0.0, + "text": "actually an enormous amount of" + }, + { + "start": 506.8, + "duration": 0.0, + "text": "actually an enormous amount of information<00:08:27.199> you<00:08:27.360> might<00:08:27.599> actually<00:08:27.919> imagine" + }, + { + "start": 508.79, + "duration": 0.0, + "text": "information you might actually imagine" + }, + { + "start": 508.8, + "duration": 0.0, + "text": "information you might actually imagine needing<00:08:29.280> in<00:08:29.520> order<00:08:29.680> to<00:08:29.919> understand<00:08:30.240> what's" + }, + { + "start": 510.55, + "duration": 0.0, + "text": "needing in order to understand what's" + }, + { + "start": 510.56, + "duration": 0.0, + "text": "needing in order to understand what's happening." + }, + { + "start": 512.469, + "duration": 0.0, + "text": "happening." + }, + { + "start": 512.479, + "duration": 0.0, + "text": "happening. So<00:08:32.640> it's<00:08:32.800> always<00:08:32.959> a<00:08:33.120> game<00:08:33.279> of<00:08:33.440> understanding" + }, + { + "start": 513.829, + "duration": 0.0, + "text": "So it's always a game of understanding" + }, + { + "start": 513.839, + "duration": 0.0, + "text": "So it's always a game of understanding how<00:08:34.080> to<00:08:34.479> narrow<00:08:34.800> down<00:08:34.959> to<00:08:35.120> the<00:08:35.279> subset<00:08:35.599> of" + }, + { + "start": 515.829, + "duration": 0.0, + "text": "how to narrow down to the subset of" + }, + { + "start": 515.839, + "duration": 0.0, + "text": "how to narrow down to the subset of information<00:08:36.320> you<00:08:36.560> actually<00:08:36.719> care<00:08:36.959> about<00:08:37.120> and" + }, + { + "start": 517.43, + "duration": 0.0, + "text": "information you actually care about and" + }, + { + "start": 517.44, + "duration": 0.0, + "text": "information you actually care about and presenting<00:08:37.760> it<00:08:37.919> in<00:08:38.000> a<00:08:38.159> way<00:08:38.240> that<00:08:38.399> makes<00:08:38.560> sense." + }, + { + "start": 519.589, + "duration": 0.0, + "text": "presenting it in a way that makes sense." + }, + { + "start": 519.599, + "duration": 0.0, + "text": "presenting it in a way that makes sense. Um" + }, + { + "start": 523.2, + "duration": 0.0, + "text": "now<00:08:43.440> one<00:08:43.599> of<00:08:43.680> the<00:08:43.839> first<00:08:44.320> ways<00:08:44.560> we<00:08:44.800> learn<00:08:45.040> to" + }, + { + "start": 525.19, + "duration": 0.0, + "text": "now one of the first ways we learn to" + }, + { + "start": 525.2, + "duration": 0.0, + "text": "now one of the first ways we learn to extract<00:08:45.680> information<00:08:46.640> uh<00:08:46.800> from<00:08:46.959> a<00:08:47.120> program<00:08:47.360> is" + }, + { + "start": 527.509, + "duration": 0.0, + "text": "extract information uh from a program is" + }, + { + "start": 527.519, + "duration": 0.0, + "text": "extract information uh from a program is through<00:08:47.680> textual<00:08:48.160> logging<00:08:49.040> or<00:08:49.519> uh<00:08:49.680> print" + }, + { + "start": 529.91, + "duration": 0.0, + "text": "through textual logging or uh print" + }, + { + "start": 529.92, + "duration": 0.0, + "text": "through textual logging or uh print debugging." + }, + { + "start": 531.59, + "duration": 0.0, + "text": "debugging." + }, + { + "start": 531.6, + "duration": 0.0, + "text": "debugging. uh<00:08:51.760> your<00:08:52.000> program<00:08:52.240> does<00:08:52.399> whatever<00:08:52.720> it<00:08:52.880> was" + }, + { + "start": 533.03, + "duration": 0.0, + "text": "uh your program does whatever it was" + }, + { + "start": 533.04, + "duration": 0.0, + "text": "uh your program does whatever it was going<00:08:53.200> to<00:08:53.360> do<00:08:53.760> and<00:08:54.000> then<00:08:54.160> in<00:08:54.399> addition<00:08:54.640> to" + }, + { + "start": 534.79, + "duration": 0.0, + "text": "going to do and then in addition to" + }, + { + "start": 534.8, + "duration": 0.0, + "text": "going to do and then in addition to whatever<00:08:55.120> it<00:08:55.279> was<00:08:55.440> going<00:08:55.519> to<00:08:55.600> do<00:08:55.760> like<00:08:55.920> the" + }, + { + "start": 536.07, + "duration": 0.0, + "text": "whatever it was going to do like the" + }, + { + "start": 536.08, + "duration": 0.0, + "text": "whatever it was going to do like the thing<00:08:56.160> you<00:08:56.320> actually<00:08:56.560> wanted<00:08:56.720> it<00:08:56.959> to<00:08:57.040> do<00:08:57.600> it<00:08:57.760> it" + }, + { + "start": 538.15, + "duration": 0.0, + "text": "thing you actually wanted it to do it it" + }, + { + "start": 538.16, + "duration": 0.0, + "text": "thing you actually wanted it to do it it produces<00:08:58.480> a<00:08:58.720> parallel<00:08:59.200> output<00:08:59.680> which<00:08:59.920> is<00:09:00.080> just" + }, + { + "start": 540.23, + "duration": 0.0, + "text": "produces a parallel output which is just" + }, + { + "start": 540.24, + "duration": 0.0, + "text": "produces a parallel output which is just like<00:09:00.480> the<00:09:00.640> textual<00:09:01.120> log<00:09:01.360> of<00:09:01.519> of<00:09:02.160> what<00:09:02.399> happens" + }, + { + "start": 542.63, + "duration": 0.0, + "text": "like the textual log of of what happens" + }, + { + "start": 542.64, + "duration": 0.0, + "text": "like the textual log of of what happens they<00:09:02.880> come<00:09:03.040> from<00:09:03.360> print<00:09:03.600> statements<00:09:04.000> you" + }, + { + "start": 544.07, + "duration": 0.0, + "text": "they come from print statements you" + }, + { + "start": 544.08, + "duration": 0.0, + "text": "they come from print statements you annotate<00:09:04.480> your<00:09:04.640> program<00:09:04.880> with<00:09:05.680> now<00:09:05.839> you'll" + }, + { + "start": 546.07, + "duration": 0.0, + "text": "annotate your program with now you'll" + }, + { + "start": 546.08, + "duration": 0.0, + "text": "annotate your program with now you'll see<00:09:06.320> some<00:09:06.480> people<00:09:06.800> make<00:09:06.959> the<00:09:07.200> argument<00:09:07.920> that" + }, + { + "start": 548.15, + "duration": 0.0, + "text": "see some people make the argument that" + }, + { + "start": 548.16, + "duration": 0.0, + "text": "see some people make the argument that this<00:09:08.399> is<00:09:08.480> all<00:09:08.640> they<00:09:08.800> need" + }, + { + "start": 550.79, + "duration": 0.0, + "text": "this is all they need" + }, + { + "start": 550.8, + "duration": 0.0, + "text": "this is all they need and<00:09:10.959> what<00:09:11.360> what<00:09:11.600> I'm<00:09:11.760> about<00:09:11.920> to<00:09:12.080> say<00:09:12.240> might" + }, + { + "start": 552.47, + "duration": 0.0, + "text": "and what what I'm about to say might" + }, + { + "start": 552.48, + "duration": 0.0, + "text": "and what what I'm about to say might surprise<00:09:12.800> you<00:09:13.440> but<00:09:13.600> in<00:09:13.839> one<00:09:14.000> sense<00:09:14.800> they're" + }, + { + "start": 555.11, + "duration": 0.0, + "text": "surprise you but in one sense they're" + }, + { + "start": 555.12, + "duration": 0.0, + "text": "surprise you but in one sense they're right<00:09:16.160> but<00:09:16.320> there<00:09:16.399> are<00:09:16.560> two<00:09:16.720> problems<00:09:16.880> with" + }, + { + "start": 557.03, + "duration": 0.0, + "text": "right but there are two problems with" + }, + { + "start": 557.04, + "duration": 0.0, + "text": "right but there are two problems with their<00:09:17.200> argument<00:09:18.000> one<00:09:18.240> problem<00:09:18.560> we<00:09:18.800> can<00:09:18.959> solve" + }, + { + "start": 559.269, + "duration": 0.0, + "text": "their argument one problem we can solve" + }, + { + "start": 559.279, + "duration": 0.0, + "text": "their argument one problem we can solve while<00:09:19.440> keeping<00:09:19.680> print<00:09:19.920> debugging" + }, + { + "start": 560.87, + "duration": 0.0, + "text": "while keeping print debugging" + }, + { + "start": 560.88, + "duration": 0.0, + "text": "while keeping print debugging One<00:09:21.040> problem<00:09:21.279> we<00:09:21.519> cannot" + }, + { + "start": 563.269, + "duration": 0.0, + "text": "One problem we cannot" + }, + { + "start": 563.279, + "duration": 0.0, + "text": "One problem we cannot problem<00:09:23.600> number<00:09:23.839> one" + }, + { + "start": 566.23, + "duration": 0.0, + "text": "problem number one" + }, + { + "start": 566.24, + "duration": 0.0, + "text": "problem number one text<00:09:26.640> often<00:09:26.959> sucks" + }, + { + "start": 570.64, + "duration": 0.0, + "text": "uh<00:09:31.040> it's<00:09:31.200> often<00:09:31.519> insufficient<00:09:32.080> right<00:09:32.240> you" + }, + { + "start": 572.389, + "duration": 0.0, + "text": "uh it's often insufficient right you" + }, + { + "start": 572.399, + "duration": 0.0, + "text": "uh it's often insufficient right you can't<00:09:32.560> understand<00:09:32.800> what<00:09:32.959> it's<00:09:33.200> actually" + }, + { + "start": 573.35, + "duration": 0.0, + "text": "can't understand what it's actually" + }, + { + "start": 573.36, + "duration": 0.0, + "text": "can't understand what it's actually encoding<00:09:34.000> let's<00:09:34.240> go<00:09:34.320> ahead<00:09:34.480> and<00:09:34.560> do<00:09:34.640> an" + }, + { + "start": 574.79, + "duration": 0.0, + "text": "encoding let's go ahead and do an" + }, + { + "start": 574.8, + "duration": 0.0, + "text": "encoding let's go ahead and do an example<00:09:36.160> let's<00:09:36.399> say<00:09:36.560> we<00:09:36.720> have<00:09:36.800> some<00:09:36.959> image" + }, + { + "start": 577.19, + "duration": 0.0, + "text": "example let's say we have some image" + }, + { + "start": 577.2, + "duration": 0.0, + "text": "example let's say we have some image format<00:09:38.160> decoding<00:09:38.959> uh<00:09:39.440> we<00:09:39.680> have<00:09:39.760> some<00:09:39.920> image" + }, + { + "start": 580.23, + "duration": 0.0, + "text": "format decoding uh we have some image" + }, + { + "start": 580.24, + "duration": 0.0, + "text": "format decoding uh we have some image format<00:09:40.560> decoding<00:09:41.120> code<00:09:42.480> and<00:09:43.120> uh<00:09:43.519> we<00:09:44.080> we<00:09:44.399> want" + }, + { + "start": 584.55, + "duration": 0.0, + "text": "format decoding code and uh we we want" + }, + { + "start": 584.56, + "duration": 0.0, + "text": "format decoding code and uh we we want to<00:09:44.720> test<00:09:44.880> it<00:09:45.040> and<00:09:45.279> we<00:09:45.519> expect<00:09:45.760> to<00:09:46.000> get<00:09:46.320> you<00:09:46.480> know" + }, + { + "start": 586.63, + "duration": 0.0, + "text": "to test it and we expect to get you know" + }, + { + "start": 586.64, + "duration": 0.0, + "text": "to test it and we expect to get you know something<00:09:46.800> like<00:09:47.040> this<00:09:47.279> image" + }, + { + "start": 590.64, + "duration": 0.0, + "text": "Can<00:09:50.880> anyone<00:09:51.120> tell<00:09:51.279> me<00:09:51.440> where<00:09:51.600> the<00:09:51.760> bad<00:09:52.000> pixels" + }, + { + "start": 592.47, + "duration": 0.0, + "text": "Can anyone tell me where the bad pixels" + }, + { + "start": 592.48, + "duration": 0.0, + "text": "Can anyone tell me where the bad pixels are<00:09:52.720> after<00:09:52.959> I've<00:09:53.120> loaded<00:09:53.360> the<00:09:53.519> image?<00:09:53.680> I've" + }, + { + "start": 593.91, + "duration": 0.0, + "text": "are after I've loaded the image? I've" + }, + { + "start": 593.92, + "duration": 0.0, + "text": "are after I've loaded the image? I've I've<00:09:54.080> done<00:09:54.240> the<00:09:54.399> print<00:09:54.640> f<00:09:54.800> debugging." + }, + { + "start": 596.63, + "duration": 0.0, + "text": "I've done the print f debugging." + }, + { + "start": 596.64, + "duration": 0.0, + "text": "I've done the print f debugging. Okay," + }, + { + "start": 599.11, + "duration": 0.0, + "text": "Okay," + }, + { + "start": 599.12, + "duration": 0.0, + "text": "Okay, if<00:09:59.279> you're<00:09:59.440> looking<00:09:59.519> at<00:09:59.680> this,<00:09:59.920> it's<00:10:00.080> like," + }, + { + "start": 600.23, + "duration": 0.0, + "text": "if you're looking at this, it's like," + }, + { + "start": 600.24, + "duration": 0.0, + "text": "if you're looking at this, it's like, oh,<00:10:00.640> like<00:10:00.880> what's<00:10:01.040> that?<00:10:01.360> What<00:10:01.440> are<00:10:01.600> those" + }, + { + "start": 601.829, + "duration": 0.0, + "text": "oh, like what's that? What are those" + }, + { + "start": 601.839, + "duration": 0.0, + "text": "oh, like what's that? What are those fuchsia<00:10:02.320> pixels<00:10:02.720> in<00:10:02.880> the<00:10:03.040> corner,<00:10:03.279> right?" + }, + { + "start": 603.43, + "duration": 0.0, + "text": "fuchsia pixels in the corner, right?" + }, + { + "start": 603.44, + "duration": 0.0, + "text": "fuchsia pixels in the corner, right? Like<00:10:03.600> what<00:10:03.760> is<00:10:03.920> that<00:10:04.080> about?<00:10:05.040> So,<00:10:05.279> you<00:10:05.440> can" + }, + { + "start": 605.59, + "duration": 0.0, + "text": "Like what is that about? So, you can" + }, + { + "start": 605.6, + "duration": 0.0, + "text": "Like what is that about? So, you can instantly<00:10:06.000> see<00:10:06.160> the<00:10:06.399> problem<00:10:06.720> when<00:10:06.959> it's" + }, + { + "start": 607.19, + "duration": 0.0, + "text": "instantly see the problem when it's" + }, + { + "start": 607.2, + "duration": 0.0, + "text": "instantly see the problem when it's presented<00:10:07.440> to<00:10:07.519> you<00:10:07.680> in<00:10:07.839> a<00:10:08.000> different<00:10:08.160> way." + }, + { + "start": 609.19, + "duration": 0.0, + "text": "presented to you in a different way." + }, + { + "start": 609.2, + "duration": 0.0, + "text": "presented to you in a different way. Similarly,<00:10:09.680> you<00:10:09.839> have<00:10:09.920> some<00:10:10.080> 3D<00:10:10.480> geometry" + }, + { + "start": 610.87, + "duration": 0.0, + "text": "Similarly, you have some 3D geometry" + }, + { + "start": 610.88, + "duration": 0.0, + "text": "Similarly, you have some 3D geometry data<00:10:11.519> and<00:10:11.760> I<00:10:12.000> give<00:10:12.080> you<00:10:12.240> this." + }, + { + "start": 614.389, + "duration": 0.0, + "text": "data and I give you this." + }, + { + "start": 614.399, + "duration": 0.0, + "text": "data and I give you this. you're<00:10:14.640> not<00:10:14.720> going<00:10:14.800> to<00:10:14.880> be<00:10:15.040> very<00:10:15.279> quick<00:10:15.440> to" + }, + { + "start": 615.67, + "duration": 0.0, + "text": "you're not going to be very quick to" + }, + { + "start": 615.68, + "duration": 0.0, + "text": "you're not going to be very quick to like<00:10:16.480> pick<00:10:16.720> out<00:10:16.959> where<00:10:17.200> the<00:10:17.360> broken<00:10:17.680> vertex" + }, + { + "start": 618.069, + "duration": 0.0, + "text": "like pick out where the broken vertex" + }, + { + "start": 618.079, + "duration": 0.0, + "text": "like pick out where the broken vertex is,<00:10:18.399> right?" + }, + { + "start": 620.23, + "duration": 0.0, + "text": "is, right?" + }, + { + "start": 620.24, + "duration": 0.0, + "text": "is, right? Um," + }, + { + "start": 622.23, + "duration": 0.0, + "text": "Um," + }, + { + "start": 622.24, + "duration": 0.0, + "text": "Um, but<00:10:22.640> if<00:10:22.880> I<00:10:23.040> show<00:10:23.200> you<00:10:23.360> this,<00:10:23.680> it's<00:10:23.920> like,<00:10:24.160> wow," + }, + { + "start": 624.47, + "duration": 0.0, + "text": "but if I show you this, it's like, wow," + }, + { + "start": 624.48, + "duration": 0.0, + "text": "but if I show you this, it's like, wow, something's<00:10:24.800> really<00:10:24.959> off<00:10:25.200> there,<00:10:25.440> right?" + }, + { + "start": 625.59, + "duration": 0.0, + "text": "something's really off there, right?" + }, + { + "start": 625.6, + "duration": 0.0, + "text": "something's really off there, right? It's<00:10:25.760> like<00:10:25.839> you've<00:10:26.079> got<00:10:26.160> this<00:10:26.320> cube<00:10:26.560> structure" + }, + { + "start": 627.35, + "duration": 0.0, + "text": "It's like you've got this cube structure" + }, + { + "start": 627.36, + "duration": 0.0, + "text": "It's like you've got this cube structure and<00:10:27.600> then,<00:10:28.320> uh,<00:10:29.440> what's<00:10:29.760> that<00:10:29.920> vertex<00:10:30.560> doing" + }, + { + "start": 630.87, + "duration": 0.0, + "text": "and then, uh, what's that vertex doing" + }, + { + "start": 630.88, + "duration": 0.0, + "text": "and then, uh, what's that vertex doing over<00:10:31.120> there?<00:10:31.360> Like,<00:10:31.519> what<00:10:31.680> is<00:10:31.760> that<00:10:31.920> about?" + }, + { + "start": 632.63, + "duration": 0.0, + "text": "over there? Like, what is that about?" + }, + { + "start": 632.64, + "duration": 0.0, + "text": "over there? Like, what is that about? You<00:10:32.800> know,<00:10:34.240> so<00:10:34.959> there<00:10:35.120> are<00:10:35.279> numerous<00:10:35.760> examples" + }, + { + "start": 636.15, + "duration": 0.0, + "text": "You know, so there are numerous examples" + }, + { + "start": 636.16, + "duration": 0.0, + "text": "You know, so there are numerous examples like<00:10:36.399> this.<00:10:37.040> Text<00:10:37.279> is<00:10:37.440> sometimes<00:10:37.839> exactly" + }, + { + "start": 638.15, + "duration": 0.0, + "text": "like this. Text is sometimes exactly" + }, + { + "start": 638.16, + "duration": 0.0, + "text": "like this. Text is sometimes exactly what<00:10:38.399> you<00:10:38.560> want.<00:10:38.880> It's<00:10:39.040> often<00:10:39.360> times<00:10:40.240> uh<00:10:40.640> not." + }, + { + "start": 641.75, + "duration": 0.0, + "text": "what you want. It's often times uh not." + }, + { + "start": 641.76, + "duration": 0.0, + "text": "what you want. It's often times uh not. Uh<00:10:42.399> but<00:10:42.720> this<00:10:42.880> is<00:10:42.959> the<00:10:43.120> problem<00:10:43.279> I<00:10:43.440> suggested" + }, + { + "start": 643.829, + "duration": 0.0, + "text": "Uh but this is the problem I suggested" + }, + { + "start": 643.839, + "duration": 0.0, + "text": "Uh but this is the problem I suggested we<00:10:44.000> could<00:10:44.160> solve.<00:10:44.880> So<00:10:45.120> even<00:10:45.279> when<00:10:45.519> text<00:10:45.760> is<00:10:45.920> not" + }, + { + "start": 646.15, + "duration": 0.0, + "text": "we could solve. So even when text is not" + }, + { + "start": 646.16, + "duration": 0.0, + "text": "we could solve. So even when text is not enough,<00:10:46.640> you<00:10:46.880> didn't<00:10:47.120> necessarily<00:10:47.680> need<00:10:47.920> your" + }, + { + "start": 648.15, + "duration": 0.0, + "text": "enough, you didn't necessarily need your" + }, + { + "start": 648.16, + "duration": 0.0, + "text": "enough, you didn't necessarily need your log<00:10:48.880> to<00:10:49.200> just<00:10:49.440> produce<00:10:49.760> text.<00:10:50.079> You<00:10:50.240> didn't" + }, + { + "start": 650.389, + "duration": 0.0, + "text": "log to just produce text. You didn't" + }, + { + "start": 650.399, + "duration": 0.0, + "text": "log to just produce text. You didn't just<00:10:50.640> need<00:10:50.800> the<00:10:50.959> print<00:10:51.279> statement,<00:10:51.680> right?<00:10:52.000> Or" + }, + { + "start": 652.23, + "duration": 0.0, + "text": "just need the print statement, right? Or" + }, + { + "start": 652.24, + "duration": 0.0, + "text": "just need the print statement, right? Or maybe<00:10:52.399> that's<00:10:52.640> not<00:10:52.800> the<00:10:52.880> only<00:10:53.040> thing<00:10:53.120> you" + }, + { + "start": 653.269, + "duration": 0.0, + "text": "maybe that's not the only thing you" + }, + { + "start": 653.279, + "duration": 0.0, + "text": "maybe that's not the only thing you could<00:10:53.440> have<00:10:53.680> done.<00:10:54.640> So<00:10:54.800> this<00:10:55.040> is<00:10:55.120> an<00:10:55.279> example" + }, + { + "start": 655.509, + "duration": 0.0, + "text": "could have done. So this is an example" + }, + { + "start": 655.519, + "duration": 0.0, + "text": "could have done. So this is an example of<00:10:55.680> one<00:10:55.920> solution<00:10:56.079> to<00:10:56.320> that<00:10:56.480> problem.<00:10:56.880> This<00:10:57.040> is" + }, + { + "start": 657.11, + "duration": 0.0, + "text": "of one solution to that problem. This is" + }, + { + "start": 657.12, + "duration": 0.0, + "text": "of one solution to that problem. This is graph<00:10:57.440> viz<00:10:58.640> um<00:10:59.360> uh<00:10:59.440> or<00:10:59.600> a<00:10:59.760> screenshot<00:11:00.079> from<00:11:00.160> the" + }, + { + "start": 660.23, + "duration": 0.0, + "text": "graph viz um uh or a screenshot from the" + }, + { + "start": 660.24, + "duration": 0.0, + "text": "graph viz um uh or a screenshot from the graph<00:11:00.480> viz<00:11:00.720> visualizer.<00:11:01.360> In<00:11:01.519> this<00:11:01.600> case,<00:11:01.839> you" + }, + { + "start": 662.069, + "duration": 0.0, + "text": "graph viz visualizer. In this case, you" + }, + { + "start": 662.079, + "duration": 0.0, + "text": "graph viz visualizer. In this case, you your<00:11:02.240> program<00:11:02.560> still<00:11:02.720> outputs<00:11:03.120> text,<00:11:04.079> but" + }, + { + "start": 664.31, + "duration": 0.0, + "text": "your program still outputs text, but" + }, + { + "start": 664.32, + "duration": 0.0, + "text": "your program still outputs text, but it's<00:11:04.800> um<00:11:06.160> uh<00:11:06.399> it<00:11:06.640> outputs<00:11:07.120> text<00:11:07.279> in<00:11:07.440> a" + }, + { + "start": 667.59, + "duration": 0.0, + "text": "it's um uh it outputs text in a" + }, + { + "start": 667.6, + "duration": 0.0, + "text": "it's um uh it outputs text in a structured<00:11:07.920> format<00:11:08.240> that<00:11:08.399> can<00:11:08.480> be<00:11:08.640> parsed<00:11:08.880> by" + }, + { + "start": 668.949, + "duration": 0.0, + "text": "structured format that can be parsed by" + }, + { + "start": 668.959, + "duration": 0.0, + "text": "structured format that can be parsed by a<00:11:09.040> visualizer<00:11:09.519> program.<00:11:10.240> present<00:11:10.560> your<00:11:10.720> data" + }, + { + "start": 670.949, + "duration": 0.0, + "text": "a visualizer program. present your data" + }, + { + "start": 670.959, + "duration": 0.0, + "text": "a visualizer program. present your data like<00:11:11.120> a<00:11:11.279> graph<00:11:11.519> like<00:11:11.680> this,<00:11:12.160> right?" + }, + { + "start": 674.23, + "duration": 0.0, + "text": "like a graph like this, right?" + }, + { + "start": 674.24, + "duration": 0.0, + "text": "like a graph like this, right? Another<00:11:14.560> example,<00:11:14.959> this<00:11:15.120> is<00:11:15.279> a<00:11:15.440> mustache<00:11:16.160> made" + }, + { + "start": 676.47, + "duration": 0.0, + "text": "Another example, this is a mustache made" + }, + { + "start": 676.48, + "duration": 0.0, + "text": "Another example, this is a mustache made by<00:11:16.720> Casey,<00:11:17.120> who<00:11:17.279> you<00:11:17.440> all<00:11:17.600> heard<00:11:17.760> from" + }, + { + "start": 678.069, + "duration": 0.0, + "text": "by Casey, who you all heard from" + }, + { + "start": 678.079, + "duration": 0.0, + "text": "by Casey, who you all heard from yesterday.<00:11:19.040> Um,<00:11:19.519> specifically<00:11:20.160> designed<00:11:20.480> to" + }, + { + "start": 680.949, + "duration": 0.0, + "text": "yesterday. Um, specifically designed to" + }, + { + "start": 680.959, + "duration": 0.0, + "text": "yesterday. Um, specifically designed to debug<00:11:21.760> image<00:11:22.000> and<00:11:22.240> video<00:11:22.480> compression" + }, + { + "start": 683.11, + "duration": 0.0, + "text": "debug image and video compression" + }, + { + "start": 683.12, + "duration": 0.0, + "text": "debug image and video compression software.<00:11:24.079> Um,<00:11:24.560> so<00:11:24.800> this<00:11:25.120> system<00:11:25.440> works" + }, + { + "start": 685.99, + "duration": 0.0, + "text": "software. Um, so this system works" + }, + { + "start": 686.0, + "duration": 0.0, + "text": "software. Um, so this system works pretty<00:11:26.320> much<00:11:26.399> the<00:11:26.560> same<00:11:26.720> way<00:11:26.800> as<00:11:27.040> print" + }, + { + "start": 687.269, + "duration": 0.0, + "text": "pretty much the same way as print" + }, + { + "start": 687.279, + "duration": 0.0, + "text": "pretty much the same way as print debugging,<00:11:28.079> but<00:11:28.399> it's<00:11:28.800> structured,<00:11:29.360> right?" + }, + { + "start": 689.509, + "duration": 0.0, + "text": "debugging, but it's structured, right?" + }, + { + "start": 689.519, + "duration": 0.0, + "text": "debugging, but it's structured, right? It's<00:11:29.680> not<00:11:29.839> just<00:11:30.000> textual<00:11:30.399> data.<00:11:30.640> It's<00:11:30.800> not" + }, + { + "start": 690.949, + "duration": 0.0, + "text": "It's not just textual data. It's not" + }, + { + "start": 690.959, + "duration": 0.0, + "text": "It's not just textual data. It's not presented<00:11:31.200> as<00:11:31.360> text<00:11:31.680> as<00:11:31.839> just<00:11:32.079> textual<00:11:32.480> data." + }, + { + "start": 693.75, + "duration": 0.0, + "text": "presented as text as just textual data." + }, + { + "start": 693.76, + "duration": 0.0, + "text": "presented as text as just textual data. Um,<00:11:35.040> in<00:11:35.200> the<00:11:35.360> same<00:11:35.519> vein,<00:11:36.240> there's<00:11:36.480> this" + }, + { + "start": 696.71, + "duration": 0.0, + "text": "Um, in the same vein, there's this" + }, + { + "start": 696.72, + "duration": 0.0, + "text": "Um, in the same vein, there's this program<00:11:37.120> called<00:11:37.360> render<00:11:37.680> doc.<00:11:38.880> Um,<00:11:39.440> anyone" + }, + { + "start": 699.75, + "duration": 0.0, + "text": "program called render doc. Um, anyone" + }, + { + "start": 699.76, + "duration": 0.0, + "text": "program called render doc. Um, anyone who's<00:11:40.079> done<00:11:40.320> any<00:11:40.560> amount<00:11:40.800> of<00:11:40.880> GPU<00:11:41.360> programming" + }, + { + "start": 701.829, + "duration": 0.0, + "text": "who's done any amount of GPU programming" + }, + { + "start": 701.839, + "duration": 0.0, + "text": "who's done any amount of GPU programming probably<00:11:42.240> knows<00:11:43.120> that<00:11:43.360> like<00:11:43.680> this<00:11:44.079> without" + }, + { + "start": 704.389, + "duration": 0.0, + "text": "probably knows that like this without" + }, + { + "start": 704.399, + "duration": 0.0, + "text": "probably knows that like this without this<00:11:44.640> program,<00:11:45.040> your<00:11:45.279> life<00:11:46.320> was<00:11:46.640> probably" + }, + { + "start": 706.949, + "duration": 0.0, + "text": "this program, your life was probably" + }, + { + "start": 706.959, + "duration": 0.0, + "text": "this program, your life was probably pretty<00:11:47.200> bad.<00:11:47.600> Like,<00:11:48.000> uh,<00:11:48.640> everyone<00:11:48.959> has<00:11:49.120> their" + }, + { + "start": 709.35, + "duration": 0.0, + "text": "pretty bad. Like, uh, everyone has their" + }, + { + "start": 709.36, + "duration": 0.0, + "text": "pretty bad. Like, uh, everyone has their story<00:11:49.519> of<00:11:49.680> like<00:11:49.920> you<00:11:50.079> set<00:11:50.240> up<00:11:50.399> all<00:11:50.560> this" + }, + { + "start": 710.79, + "duration": 0.0, + "text": "story of like you set up all this" + }, + { + "start": 710.8, + "duration": 0.0, + "text": "story of like you set up all this boilerplate<00:11:51.440> OpenGL,<00:11:52.000> Vulcan<00:11:52.399> code," + }, + { + "start": 712.63, + "duration": 0.0, + "text": "boilerplate OpenGL, Vulcan code," + }, + { + "start": 712.64, + "duration": 0.0, + "text": "boilerplate OpenGL, Vulcan code, whatever<00:11:52.880> it<00:11:53.040> is.<00:11:54.000> You<00:11:54.160> run<00:11:54.399> your<00:11:54.560> program," + }, + { + "start": 714.87, + "duration": 0.0, + "text": "whatever it is. You run your program," + }, + { + "start": 714.88, + "duration": 0.0, + "text": "whatever it is. You run your program, you're<00:11:55.120> really<00:11:55.279> excited<00:11:56.399> and<00:11:56.560> there's<00:11:56.800> a" + }, + { + "start": 716.949, + "duration": 0.0, + "text": "you're really excited and there's a" + }, + { + "start": 716.959, + "duration": 0.0, + "text": "you're really excited and there's a black<00:11:57.200> screen<00:11:57.760> like<00:11:58.000> it's<00:11:58.160> just<00:11:58.320> like<00:11:58.480> what's" + }, + { + "start": 718.63, + "duration": 0.0, + "text": "black screen like it's just like what's" + }, + { + "start": 718.64, + "duration": 0.0, + "text": "black screen like it's just like what's what's<00:11:58.959> going<00:11:59.040> on,<00:11:59.440> right?<00:12:00.480> Um,<00:12:01.440> render<00:12:01.760> doc's" + }, + { + "start": 722.069, + "duration": 0.0, + "text": "what's going on, right? Um, render doc's" + }, + { + "start": 722.079, + "duration": 0.0, + "text": "what's going on, right? Um, render doc's like<00:12:02.240> extremely<00:12:02.560> useful.<00:12:02.880> So,<00:12:02.959> it<00:12:03.120> sort<00:12:03.279> of" + }, + { + "start": 723.35, + "duration": 0.0, + "text": "like extremely useful. So, it sort of" + }, + { + "start": 723.36, + "duration": 0.0, + "text": "like extremely useful. So, it sort of logs<00:12:03.680> all<00:12:03.760> the<00:12:03.920> API<00:12:04.240> calls<00:12:04.560> you<00:12:04.720> get<00:12:05.040> and<00:12:05.279> it" + }, + { + "start": 725.509, + "duration": 0.0, + "text": "logs all the API calls you get and it" + }, + { + "start": 725.519, + "duration": 0.0, + "text": "logs all the API calls you get and it captures<00:12:05.920> state.<00:12:06.240> It<00:12:06.399> hooks<00:12:06.720> those<00:12:06.880> APIs<00:12:07.279> and" + }, + { + "start": 727.509, + "duration": 0.0, + "text": "captures state. It hooks those APIs and" + }, + { + "start": 727.519, + "duration": 0.0, + "text": "captures state. It hooks those APIs and it<00:12:07.760> captures<00:12:08.160> that<00:12:08.399> state<00:12:09.040> and<00:12:09.279> presents<00:12:09.600> it" + }, + { + "start": 729.75, + "duration": 0.0, + "text": "it captures that state and presents it" + }, + { + "start": 729.76, + "duration": 0.0, + "text": "it captures that state and presents it in<00:12:09.920> this<00:12:10.079> form.<00:12:10.320> It<00:12:10.399> knows<00:12:10.639> the<00:12:10.800> before<00:12:10.959> and" + }, + { + "start": 731.11, + "duration": 0.0, + "text": "in this form. It knows the before and" + }, + { + "start": 731.12, + "duration": 0.0, + "text": "in this form. It knows the before and after<00:12:11.360> states<00:12:11.600> of<00:12:11.760> every<00:12:11.920> GPU<00:12:12.399> resource<00:12:12.720> that" + }, + { + "start": 732.949, + "duration": 0.0, + "text": "after states of every GPU resource that" + }, + { + "start": 732.959, + "duration": 0.0, + "text": "after states of every GPU resource that you<00:12:13.040> touch<00:12:14.160> um<00:12:14.959> when<00:12:15.120> you<00:12:15.360> when<00:12:15.519> you<00:12:15.600> make" + }, + { + "start": 735.75, + "duration": 0.0, + "text": "you touch um when you when you make" + }, + { + "start": 735.76, + "duration": 0.0, + "text": "you touch um when you when you make those<00:12:15.920> API<00:12:16.320> calls,<00:12:16.639> right?<00:12:17.680> Or<00:12:18.000> caused<00:12:18.240> by<00:12:18.399> the" + }, + { + "start": 738.55, + "duration": 0.0, + "text": "those API calls, right? Or caused by the" + }, + { + "start": 738.56, + "duration": 0.0, + "text": "those API calls, right? Or caused by the work<00:12:18.959> implied<00:12:19.360> by<00:12:19.519> those<00:12:19.680> API<00:12:20.000> calls.<00:12:20.639> Uh<00:12:20.800> so" + }, + { + "start": 741.03, + "duration": 0.0, + "text": "work implied by those API calls. Uh so" + }, + { + "start": 741.04, + "duration": 0.0, + "text": "work implied by those API calls. Uh so it's<00:12:21.120> another<00:12:21.360> example.<00:12:21.680> It's<00:12:21.839> yet<00:12:22.000> another" + }, + { + "start": 742.23, + "duration": 0.0, + "text": "it's another example. It's yet another" + }, + { + "start": 742.24, + "duration": 0.0, + "text": "it's another example. It's yet another structure<00:12:22.480> of<00:12:22.639> a<00:12:22.800> structured<00:12:23.600> non-extual" + }, + { + "start": 744.31, + "duration": 0.0, + "text": "structure of a structured non-extual" + }, + { + "start": 744.32, + "duration": 0.0, + "text": "structure of a structured non-extual log.<00:12:25.120> So<00:12:25.360> just<00:12:25.519> to<00:12:25.680> be<00:12:25.839> clear,<00:12:26.560> I'm<00:12:26.800> not<00:12:26.880> saying" + }, + { + "start": 747.03, + "duration": 0.0, + "text": "log. So just to be clear, I'm not saying" + }, + { + "start": 747.04, + "duration": 0.0, + "text": "log. So just to be clear, I'm not saying that<00:12:27.279> logging<00:12:27.680> is<00:12:27.920> wrong<00:12:28.399> or<00:12:28.720> not<00:12:28.959> useful<00:12:29.519> or" + }, + { + "start": 749.75, + "duration": 0.0, + "text": "that logging is wrong or not useful or" + }, + { + "start": 749.76, + "duration": 0.0, + "text": "that logging is wrong or not useful or can't<00:12:30.000> be<00:12:30.160> better<00:12:30.480> than<00:12:30.720> just<00:12:30.880> like<00:12:31.040> helpless" + }, + { + "start": 751.35, + "duration": 0.0, + "text": "can't be better than just like helpless" + }, + { + "start": 751.36, + "duration": 0.0, + "text": "can't be better than just like helpless print<00:12:31.600> debugging.<00:12:32.639> But<00:12:32.800> there's<00:12:32.959> another" + }, + { + "start": 753.269, + "duration": 0.0, + "text": "print debugging. But there's another" + }, + { + "start": 753.279, + "duration": 0.0, + "text": "print debugging. But there's another problem.<00:12:34.720> Problem<00:12:35.040> number<00:12:35.279> two" + }, + { + "start": 757.59, + "duration": 0.0, + "text": "problem. Problem number two" + }, + { + "start": 757.6, + "duration": 0.0, + "text": "problem. Problem number two is<00:12:37.920> time<00:12:38.720> and<00:12:38.959> thus<00:12:39.279> money<00:12:39.600> and<00:12:39.839> sanity.<00:12:41.279> The" + }, + { + "start": 761.509, + "duration": 0.0, + "text": "is time and thus money and sanity. The" + }, + { + "start": 761.519, + "duration": 0.0, + "text": "is time and thus money and sanity. The second<00:12:41.760> major<00:12:42.079> problem<00:12:42.480> with<00:12:42.800> log<00:12:43.360> uh" + }, + { + "start": 763.59, + "duration": 0.0, + "text": "second major problem with log uh" + }, + { + "start": 763.6, + "duration": 0.0, + "text": "second major problem with log uh debugging<00:12:44.079> is<00:12:44.320> that<00:12:44.880> it<00:12:45.040> often<00:12:45.360> requires" + }, + { + "start": 765.75, + "duration": 0.0, + "text": "debugging is that it often requires" + }, + { + "start": 765.76, + "duration": 0.0, + "text": "debugging is that it often requires modifications<00:12:46.320> of<00:12:46.560> the<00:12:46.800> program<00:12:47.600> that<00:12:47.839> you're" + }, + { + "start": 767.99, + "duration": 0.0, + "text": "modifications of the program that you're" + }, + { + "start": 768.0, + "duration": 0.0, + "text": "modifications of the program that you're digging<00:12:48.320> into.<00:12:48.959> So<00:12:49.120> let's<00:12:49.360> set<00:12:49.519> aside<00:12:49.760> the" + }, + { + "start": 769.91, + "duration": 0.0, + "text": "digging into. So let's set aside the" + }, + { + "start": 769.92, + "duration": 0.0, + "text": "digging into. So let's set aside the cases<00:12:50.079> where<00:12:50.240> you<00:12:50.399> can't<00:12:50.560> actually<00:12:50.720> do<00:12:50.880> that," + }, + { + "start": 771.11, + "duration": 0.0, + "text": "cases where you can't actually do that," + }, + { + "start": 771.12, + "duration": 0.0, + "text": "cases where you can't actually do that, right?<00:12:51.519> Like<00:12:51.680> you're<00:12:51.920> not<00:12:52.000> doing<00:12:52.160> any<00:12:52.399> reverse" + }, + { + "start": 772.71, + "duration": 0.0, + "text": "right? Like you're not doing any reverse" + }, + { + "start": 772.72, + "duration": 0.0, + "text": "right? Like you're not doing any reverse engineering.<00:12:53.680> You're<00:12:53.920> not<00:12:54.399> uh<00:12:55.040> you're<00:12:55.200> not" + }, + { + "start": 775.43, + "duration": 0.0, + "text": "engineering. You're not uh you're not" + }, + { + "start": 775.44, + "duration": 0.0, + "text": "engineering. You're not uh you're not doing<00:12:55.600> any<00:12:55.760> of<00:12:55.839> that.<00:12:56.160> You<00:12:56.399> can<00:12:56.480> control<00:12:56.800> your" + }, + { + "start": 776.949, + "duration": 0.0, + "text": "doing any of that. You can control your" + }, + { + "start": 776.959, + "duration": 0.0, + "text": "doing any of that. You can control your program.<00:12:57.279> You<00:12:57.440> can<00:12:57.519> modify<00:12:57.760> the<00:12:58.000> program." + }, + { + "start": 778.389, + "duration": 0.0, + "text": "program. You can modify the program." + }, + { + "start": 778.399, + "duration": 0.0, + "text": "program. You can modify the program. There's<00:12:58.639> still<00:12:58.800> a<00:12:59.040> problem<00:12:59.200> with<00:12:59.519> requiring" + }, + { + "start": 779.91, + "duration": 0.0, + "text": "There's still a problem with requiring" + }, + { + "start": 779.92, + "duration": 0.0, + "text": "There's still a problem with requiring that<00:13:00.160> in<00:13:00.399> order<00:13:00.560> to<00:13:00.720> get<00:13:01.040> at<00:13:01.360> very<00:13:01.600> simple" + }, + { + "start": 781.91, + "duration": 0.0, + "text": "that in order to get at very simple" + }, + { + "start": 781.92, + "duration": 0.0, + "text": "that in order to get at very simple information." + }, + { + "start": 783.43, + "duration": 0.0, + "text": "information." + }, + { + "start": 783.44, + "duration": 0.0, + "text": "information. Let's<00:13:03.680> walk<00:13:03.920> through<00:13:04.079> the<00:13:04.320> series<00:13:04.480> of<00:13:04.720> steps" + }, + { + "start": 785.75, + "duration": 0.0, + "text": "Let's walk through the series of steps" + }, + { + "start": 785.76, + "duration": 0.0, + "text": "Let's walk through the series of steps you<00:13:06.000> might<00:13:06.160> go<00:13:06.320> through<00:13:06.480> when<00:13:06.720> using<00:13:06.959> logs<00:13:08.079> uh" + }, + { + "start": 788.15, + "duration": 0.0, + "text": "you might go through when using logs uh" + }, + { + "start": 788.16, + "duration": 0.0, + "text": "you might go through when using logs uh in<00:13:08.399> order<00:13:08.480> to<00:13:08.720> debug<00:13:09.279> a<00:13:09.519> black<00:13:09.839> box.<00:13:11.040> So<00:13:11.279> first" + }, + { + "start": 791.67, + "duration": 0.0, + "text": "in order to debug a black box. So first" + }, + { + "start": 791.68, + "duration": 0.0, + "text": "in order to debug a black box. So first you're<00:13:11.920> presumably<00:13:12.800> writing<00:13:13.120> some<00:13:13.360> code<00:13:13.600> for" + }, + { + "start": 793.75, + "duration": 0.0, + "text": "you're presumably writing some code for" + }, + { + "start": 793.76, + "duration": 0.0, + "text": "you're presumably writing some code for some<00:13:13.920> actual<00:13:14.240> task<00:13:14.480> you<00:13:14.720> have.<00:13:15.519> Um,<00:13:16.320> number" + }, + { + "start": 796.629, + "duration": 0.0, + "text": "some actual task you have. Um, number" + }, + { + "start": 796.639, + "duration": 0.0, + "text": "some actual task you have. Um, number two,<00:13:16.880> you<00:13:17.200> build,<00:13:17.600> right?<00:13:17.760> You<00:13:17.920> wait<00:13:18.000> for<00:13:18.160> your" + }, + { + "start": 798.23, + "duration": 0.0, + "text": "two, you build, right? You wait for your" + }, + { + "start": 798.24, + "duration": 0.0, + "text": "two, you build, right? You wait for your build<00:13:18.399> to<00:13:18.560> complete,<00:13:19.120> you<00:13:19.360> run,<00:13:19.760> create" + }, + { + "start": 800.069, + "duration": 0.0, + "text": "build to complete, you run, create" + }, + { + "start": 800.079, + "duration": 0.0, + "text": "build to complete, you run, create whatever<00:13:20.399> state<00:13:20.639> you<00:13:20.880> wanted<00:13:21.120> to<00:13:21.200> be<00:13:21.279> in<00:13:21.519> to" + }, + { + "start": 801.75, + "duration": 0.0, + "text": "whatever state you wanted to be in to" + }, + { + "start": 801.76, + "duration": 0.0, + "text": "whatever state you wanted to be in to observe<00:13:22.160> the<00:13:22.320> code<00:13:22.480> that<00:13:22.720> you<00:13:22.800> wrote,<00:13:23.279> and" + }, + { + "start": 803.509, + "duration": 0.0, + "text": "observe the code that you wrote, and" + }, + { + "start": 803.519, + "duration": 0.0, + "text": "observe the code that you wrote, and then<00:13:23.680> you<00:13:24.000> check<00:13:24.240> the<00:13:24.399> log,<00:13:24.639> right?<00:13:24.880> You" + }, + { + "start": 804.949, + "duration": 0.0, + "text": "then you check the log, right? You" + }, + { + "start": 804.959, + "duration": 0.0, + "text": "then you check the log, right? You observe<00:13:25.279> the<00:13:25.440> log." + }, + { + "start": 807.99, + "duration": 0.0, + "text": "observe the log." + }, + { + "start": 808.0, + "duration": 0.0, + "text": "observe the log. And<00:13:28.079> then<00:13:28.240> a<00:13:28.480> very<00:13:28.720> common<00:13:29.279> outcome<00:13:29.680> of<00:13:29.839> this" + }, + { + "start": 810.069, + "duration": 0.0, + "text": "And then a very common outcome of this" + }, + { + "start": 810.079, + "duration": 0.0, + "text": "And then a very common outcome of this process<00:13:30.480> is<00:13:31.040> you<00:13:31.200> realize<00:13:31.600> info<00:13:31.920> you<00:13:32.079> didn't" + }, + { + "start": 812.55, + "duration": 0.0, + "text": "process is you realize info you didn't" + }, + { + "start": 812.56, + "duration": 0.0, + "text": "process is you realize info you didn't uh<00:13:32.639> you<00:13:32.880> needed<00:13:33.360> isn't<00:13:33.760> logged,<00:13:34.800> you<00:13:34.959> add<00:13:35.200> new" + }, + { + "start": 815.35, + "duration": 0.0, + "text": "uh you needed isn't logged, you add new" + }, + { + "start": 815.36, + "duration": 0.0, + "text": "uh you needed isn't logged, you add new logging<00:13:35.760> code,<00:13:35.920> and<00:13:36.079> you<00:13:36.240> go<00:13:36.399> back<00:13:36.560> up<00:13:36.639> to<00:13:36.800> the" + }, + { + "start": 816.949, + "duration": 0.0, + "text": "logging code, and you go back up to the" + }, + { + "start": 816.959, + "duration": 0.0, + "text": "logging code, and you go back up to the build<00:13:37.200> step,<00:13:37.440> and<00:13:37.600> you<00:13:37.760> run<00:13:37.920> an<00:13:38.160> observe.<00:13:38.639> Same" + }, + { + "start": 818.87, + "duration": 0.0, + "text": "build step, and you run an observe. Same" + }, + { + "start": 818.88, + "duration": 0.0, + "text": "build step, and you run an observe. Same thing<00:13:38.959> with<00:13:39.120> profiling.<00:13:39.920> Same<00:13:40.079> thing<00:13:40.160> with" + }, + { + "start": 820.629, + "duration": 0.0, + "text": "thing with profiling. Same thing with" + }, + { + "start": 820.639, + "duration": 0.0, + "text": "thing with profiling. Same thing with any<00:13:40.959> form<00:13:41.120> of<00:13:41.279> logging<00:13:41.680> is<00:13:41.839> like<00:13:42.000> this,<00:13:42.320> right?" + }, + { + "start": 822.55, + "duration": 0.0, + "text": "any form of logging is like this, right?" + }, + { + "start": 822.56, + "duration": 0.0, + "text": "any form of logging is like this, right? because<00:13:42.800> you're<00:13:43.040> it's<00:13:43.600> explicitly<00:13:44.240> wired" + }, + { + "start": 824.55, + "duration": 0.0, + "text": "because you're it's explicitly wired" + }, + { + "start": 824.56, + "duration": 0.0, + "text": "because you're it's explicitly wired into<00:13:44.880> the<00:13:45.040> to<00:13:45.200> the<00:13:45.360> program's<00:13:45.839> code,<00:13:46.160> right?" + }, + { + "start": 827.43, + "duration": 0.0, + "text": "into the to the program's code, right?" + }, + { + "start": 827.44, + "duration": 0.0, + "text": "into the to the program's code, right? In<00:13:47.680> other<00:13:47.839> words,<00:13:49.120> let's<00:13:49.360> say<00:13:49.519> you're<00:13:49.680> missing" + }, + { + "start": 829.91, + "duration": 0.0, + "text": "In other words, let's say you're missing" + }, + { + "start": 829.92, + "duration": 0.0, + "text": "In other words, let's say you're missing some<00:13:50.240> expression<00:13:50.720> X<00:13:51.200> from<00:13:51.440> the<00:13:51.600> log,<00:13:52.000> where<00:13:52.240> X" + }, + { + "start": 832.55, + "duration": 0.0, + "text": "some expression X from the log, where X" + }, + { + "start": 832.56, + "duration": 0.0, + "text": "some expression X from the log, where X could<00:13:52.720> be<00:13:52.800> anything<00:13:53.040> you<00:13:53.279> might<00:13:53.440> evaluate" + }, + { + "start": 833.99, + "duration": 0.0, + "text": "could be anything you might evaluate" + }, + { + "start": 834.0, + "duration": 0.0, + "text": "could be anything you might evaluate within<00:13:54.240> a<00:13:54.399> log<00:13:54.639> or<00:13:54.880> print<00:13:55.120> statement<00:13:56.320> after" + }, + { + "start": 836.629, + "duration": 0.0, + "text": "within a log or print statement after" + }, + { + "start": 836.639, + "duration": 0.0, + "text": "within a log or print statement after you<00:13:56.880> discover<00:13:57.279> this,<00:13:58.240> the<00:13:58.480> new<00:13:58.800> information" + }, + { + "start": 839.189, + "duration": 0.0, + "text": "you discover this, the new information" + }, + { + "start": 839.199, + "duration": 0.0, + "text": "you discover this, the new information you<00:13:59.680> have<00:13:59.920> that<00:14:00.160> you<00:14:00.320> could<00:14:00.480> enter<00:14:00.720> into<00:14:00.880> the" + }, + { + "start": 841.11, + "duration": 0.0, + "text": "you have that you could enter into the" + }, + { + "start": 841.12, + "duration": 0.0, + "text": "you have that you could enter into the system<00:14:01.519> is<00:14:01.760> simply<00:14:02.160> X.<00:14:03.199> In<00:14:03.360> a<00:14:03.600> very<00:14:04.000> basic," + }, + { + "start": 844.629, + "duration": 0.0, + "text": "system is simply X. In a very basic," + }, + { + "start": 844.639, + "duration": 0.0, + "text": "system is simply X. In a very basic, more<00:14:04.959> ideal<00:14:06.320> user<00:14:06.720> flow,<00:14:07.600> you<00:14:07.760> would<00:14:07.920> just" + }, + { + "start": 848.069, + "duration": 0.0, + "text": "more ideal user flow, you would just" + }, + { + "start": 848.079, + "duration": 0.0, + "text": "more ideal user flow, you would just have<00:14:08.240> to<00:14:08.399> write<00:14:08.560> that.<00:14:08.800> You<00:14:08.959> just<00:14:09.040> have<00:14:09.120> to<00:14:09.279> say" + }, + { + "start": 849.43, + "duration": 0.0, + "text": "have to write that. You just have to say" + }, + { + "start": 849.44, + "duration": 0.0, + "text": "have to write that. You just have to say X.<00:14:09.760> X<00:14:10.000> is<00:14:10.079> what<00:14:10.240> I'm<00:14:10.399> looking<00:14:10.560> for,<00:14:11.279> right?" + }, + { + "start": 851.59, + "duration": 0.0, + "text": "X. X is what I'm looking for, right?" + }, + { + "start": 851.6, + "duration": 0.0, + "text": "X. X is what I'm looking for, right? Instead,<00:14:12.160> you'd<00:14:12.560> find<00:14:12.639> a<00:14:12.800> spot<00:14:12.959> in<00:14:13.120> your<00:14:13.279> code," + }, + { + "start": 853.91, + "duration": 0.0, + "text": "Instead, you'd find a spot in your code," + }, + { + "start": 853.92, + "duration": 0.0, + "text": "Instead, you'd find a spot in your code, write<00:14:14.160> the<00:14:14.399> extra<00:14:14.639> printing<00:14:14.959> or<00:14:15.120> logging" + }, + { + "start": 855.509, + "duration": 0.0, + "text": "write the extra printing or logging" + }, + { + "start": 855.519, + "duration": 0.0, + "text": "write the extra printing or logging code,<00:14:15.760> and<00:14:16.000> that's<00:14:16.160> like<00:14:16.320> the<00:14:16.480> best<00:14:16.720> case," + }, + { + "start": 856.949, + "duration": 0.0, + "text": "code, and that's like the best case," + }, + { + "start": 856.959, + "duration": 0.0, + "text": "code, and that's like the best case, right?<00:14:17.199> We<00:14:17.360> don't<00:14:17.440> know<00:14:17.440> what<00:14:17.680> it's<00:14:17.839> going<00:14:17.920> to" + }, + { + "start": 857.99, + "duration": 0.0, + "text": "right? We don't know what it's going to" + }, + { + "start": 858.0, + "duration": 0.0, + "text": "right? We don't know what it's going to look<00:14:18.160> like.<00:14:18.959> Um,<00:14:19.440> you<00:14:19.680> build," + }, + { + "start": 861.189, + "duration": 0.0, + "text": "look like. Um, you build," + }, + { + "start": 861.199, + "duration": 0.0, + "text": "look like. Um, you build, you<00:14:21.440> run<00:14:21.600> and<00:14:21.760> recreate<00:14:22.160> whatever<00:14:22.480> state<00:14:22.720> you" + }, + { + "start": 862.87, + "duration": 0.0, + "text": "you run and recreate whatever state you" + }, + { + "start": 862.88, + "duration": 0.0, + "text": "you run and recreate whatever state you wanted<00:14:23.120> to<00:14:23.199> be<00:14:23.279> in,<00:14:23.680> and<00:14:23.920> you<00:14:24.079> browse<00:14:24.320> the<00:14:24.480> log" + }, + { + "start": 864.71, + "duration": 0.0, + "text": "wanted to be in, and you browse the log" + }, + { + "start": 864.72, + "duration": 0.0, + "text": "wanted to be in, and you browse the log again." + }, + { + "start": 866.55, + "duration": 0.0, + "text": "again." + }, + { + "start": 866.56, + "duration": 0.0, + "text": "again. And<00:14:27.040> needless<00:14:27.440> to<00:14:27.600> say,<00:14:27.760> the<00:14:28.000> huge<00:14:28.240> problem" + }, + { + "start": 868.389, + "duration": 0.0, + "text": "And needless to say, the huge problem" + }, + { + "start": 868.399, + "duration": 0.0, + "text": "And needless to say, the huge problem with<00:14:28.639> this,<00:14:29.839> this<00:14:30.320> is<00:14:30.720> roughly<00:14:31.199> instant<00:14:31.839> for" + }, + { + "start": 872.069, + "duration": 0.0, + "text": "with this, this is roughly instant for" + }, + { + "start": 872.079, + "duration": 0.0, + "text": "with this, this is roughly instant for the<00:14:32.320> user." + }, + { + "start": 874.23, + "duration": 0.0, + "text": "the user." + }, + { + "start": 874.24, + "duration": 0.0, + "text": "the user. This<00:14:34.639> is<00:14:34.880> often<00:14:35.279> frustratingly<00:14:36.000> long.<00:14:37.199> So" + }, + { + "start": 877.43, + "duration": 0.0, + "text": "This is often frustratingly long. So" + }, + { + "start": 877.44, + "duration": 0.0, + "text": "This is often frustratingly long. So even<00:14:37.600> in<00:14:37.839> a<00:14:38.000> small<00:14:38.320> wellorganized<00:14:38.959> codebase" + }, + { + "start": 879.35, + "duration": 0.0, + "text": "even in a small wellorganized codebase" + }, + { + "start": 879.36, + "duration": 0.0, + "text": "even in a small wellorganized codebase that<00:14:39.600> builds<00:14:39.920> very<00:14:40.160> quickly<00:14:41.440> uh<00:14:41.600> that's" + }, + { + "start": 881.99, + "duration": 0.0, + "text": "that builds very quickly uh that's" + }, + { + "start": 882.0, + "duration": 0.0, + "text": "that builds very quickly uh that's optimized<00:14:42.560> for<00:14:42.800> very<00:14:43.120> good<00:14:43.360> development" + }, + { + "start": 883.829, + "duration": 0.0, + "text": "optimized for very good development" + }, + { + "start": 883.839, + "duration": 0.0, + "text": "optimized for very good development times<00:14:45.120> this<00:14:45.360> will<00:14:45.519> take<00:14:45.680> many<00:14:45.920> extra<00:14:46.240> seconds." + }, + { + "start": 887.99, + "duration": 0.0, + "text": "times this will take many extra seconds." + }, + { + "start": 888.0, + "duration": 0.0, + "text": "times this will take many extra seconds. Um<00:14:48.399> furthermore<00:14:48.880> if<00:14:48.959> a<00:14:49.120> codebase<00:14:49.519> isn't" + }, + { + "start": 889.75, + "duration": 0.0, + "text": "Um furthermore if a codebase isn't" + }, + { + "start": 889.76, + "duration": 0.0, + "text": "Um furthermore if a codebase isn't prepared<00:14:50.000> to<00:14:50.240> recreate<00:14:50.720> state<00:14:51.040> very<00:14:51.279> easily" + }, + { + "start": 891.75, + "duration": 0.0, + "text": "prepared to recreate state very easily" + }, + { + "start": 891.76, + "duration": 0.0, + "text": "prepared to recreate state very easily which<00:14:51.920> it<00:14:52.160> very<00:14:52.320> often<00:14:52.639> is<00:14:53.279> uh<00:14:53.600> not<00:14:53.839> prepared" + }, + { + "start": 894.15, + "duration": 0.0, + "text": "which it very often is uh not prepared" + }, + { + "start": 894.16, + "duration": 0.0, + "text": "which it very often is uh not prepared to<00:14:54.320> do<00:14:54.399> that<00:14:55.199> um<00:14:55.360> it'll<00:14:55.680> be<00:14:56.079> much<00:14:56.320> worse." + }, + { + "start": 898.79, + "duration": 0.0, + "text": "to do that um it'll be much worse." + }, + { + "start": 898.8, + "duration": 0.0, + "text": "to do that um it'll be much worse. And<00:14:59.040> lastly,<00:14:59.360> browsing<00:14:59.760> the<00:14:59.920> log<00:15:00.160> itself<00:15:01.040> can" + }, + { + "start": 901.269, + "duration": 0.0, + "text": "And lastly, browsing the log itself can" + }, + { + "start": 901.279, + "duration": 0.0, + "text": "And lastly, browsing the log itself can often<00:15:01.519> be<00:15:01.680> quite<00:15:01.920> slow.<00:15:02.240> And<00:15:02.399> the<00:15:02.560> reason<00:15:02.720> why" + }, + { + "start": 902.87, + "duration": 0.0, + "text": "often be quite slow. And the reason why" + }, + { + "start": 902.88, + "duration": 0.0, + "text": "often be quite slow. And the reason why is<00:15:03.120> that<00:15:03.279> it's<00:15:03.360> a<00:15:03.519> fire<00:15:03.760> hose<00:15:04.000> of<00:15:04.160> information," + }, + { + "start": 904.55, + "duration": 0.0, + "text": "is that it's a fire hose of information," + }, + { + "start": 904.56, + "duration": 0.0, + "text": "is that it's a fire hose of information, right?<00:15:04.800> You<00:15:04.959> have<00:15:05.120> so<00:15:05.279> much<00:15:05.440> information" + }, + { + "start": 905.829, + "duration": 0.0, + "text": "right? You have so much information" + }, + { + "start": 905.839, + "duration": 0.0, + "text": "right? You have so much information pouring<00:15:06.240> into<00:15:06.480> you.<00:15:07.360> Um,<00:15:07.600> and<00:15:07.839> you're<00:15:08.079> just" + }, + { + "start": 908.23, + "duration": 0.0, + "text": "pouring into you. Um, and you're just" + }, + { + "start": 908.24, + "duration": 0.0, + "text": "pouring into you. Um, and you're just like<00:15:08.480> looking<00:15:08.639> for<00:15:08.959> if<00:15:09.199> you're<00:15:09.760> sometimes<00:15:10.079> the" + }, + { + "start": 910.23, + "duration": 0.0, + "text": "like looking for if you're sometimes the" + }, + { + "start": 910.24, + "duration": 0.0, + "text": "like looking for if you're sometimes the log<00:15:10.399> is<00:15:10.560> useful<00:15:10.800> information,<00:15:11.199> right?" + }, + { + "start": 911.43, + "duration": 0.0, + "text": "log is useful information, right?" + }, + { + "start": 911.44, + "duration": 0.0, + "text": "log is useful information, right? Sometimes<00:15:11.680> you<00:15:11.839> want<00:15:11.920> to<00:15:12.000> see<00:15:12.160> it<00:15:12.320> over<00:15:12.560> time," + }, + { + "start": 912.87, + "duration": 0.0, + "text": "Sometimes you want to see it over time," + }, + { + "start": 912.88, + "duration": 0.0, + "text": "Sometimes you want to see it over time, but<00:15:13.120> if<00:15:13.279> you're<00:15:13.360> trying<00:15:13.440> to<00:15:13.600> zoom<00:15:13.839> in<00:15:14.000> and" + }, + { + "start": 914.23, + "duration": 0.0, + "text": "but if you're trying to zoom in and" + }, + { + "start": 914.24, + "duration": 0.0, + "text": "but if you're trying to zoom in and really<00:15:14.480> narrow<00:15:14.800> in<00:15:14.959> on<00:15:15.120> one<00:15:15.360> particular" + }, + { + "start": 915.67, + "duration": 0.0, + "text": "really narrow in on one particular" + }, + { + "start": 915.68, + "duration": 0.0, + "text": "really narrow in on one particular thing,<00:15:15.920> you<00:15:16.160> have<00:15:16.240> a<00:15:16.480> whole<00:15:16.639> window<00:15:16.880> of" + }, + { + "start": 917.03, + "duration": 0.0, + "text": "thing, you have a whole window of" + }, + { + "start": 917.04, + "duration": 0.0, + "text": "thing, you have a whole window of information<00:15:17.360> that<00:15:17.519> you<00:15:17.600> have<00:15:17.680> to<00:15:17.839> look" + }, + { + "start": 917.91, + "duration": 0.0, + "text": "information that you have to look" + }, + { + "start": 917.92, + "duration": 0.0, + "text": "information that you have to look through." + }, + { + "start": 919.43, + "duration": 0.0, + "text": "through." + }, + { + "start": 919.44, + "duration": 0.0, + "text": "through. Um,<00:15:20.480> so" + }, + { + "start": 922.79, + "duration": 0.0, + "text": "Um, so" + }, + { + "start": 922.8, + "duration": 0.0, + "text": "Um, so I<00:15:23.040> think<00:15:23.120> of<00:15:23.360> this<00:15:23.519> problem<00:15:24.079> as<00:15:24.399> being<00:15:25.120> related" + }, + { + "start": 925.91, + "duration": 0.0, + "text": "I think of this problem as being related" + }, + { + "start": 925.92, + "duration": 0.0, + "text": "I think of this problem as being related to<00:15:26.480> information<00:15:26.880> flow.<00:15:28.320> uh<00:15:28.399> a<00:15:28.639> constant<00:15:29.040> cycle" + }, + { + "start": 929.35, + "duration": 0.0, + "text": "to information flow. uh a constant cycle" + }, + { + "start": 929.36, + "duration": 0.0, + "text": "to information flow. uh a constant cycle of<00:15:29.519> information<00:15:30.000> passing<00:15:30.399> between<00:15:30.639> the<00:15:30.800> user" + }, + { + "start": 931.11, + "duration": 0.0, + "text": "of information passing between the user" + }, + { + "start": 931.12, + "duration": 0.0, + "text": "of information passing between the user and<00:15:31.279> the<00:15:31.519> computer.<00:15:32.320> So<00:15:32.800> you<00:15:33.440> on<00:15:33.680> the<00:15:33.839> left" + }, + { + "start": 934.069, + "duration": 0.0, + "text": "and the computer. So you on the left" + }, + { + "start": 934.079, + "duration": 0.0, + "text": "and the computer. So you on the left there<00:15:35.440> good<00:15:35.680> good<00:15:36.000> diagram.<00:15:36.639> Pass<00:15:36.880> down<00:15:37.120> your" + }, + { + "start": 937.269, + "duration": 0.0, + "text": "there good good diagram. Pass down your" + }, + { + "start": 937.279, + "duration": 0.0, + "text": "there good good diagram. Pass down your your<00:15:37.440> your<00:15:37.839> information<00:15:38.240> as<00:15:38.399> inputs." + }, + { + "start": 939.03, + "duration": 0.0, + "text": "your your information as inputs." + }, + { + "start": 939.04, + "duration": 0.0, + "text": "your your information as inputs. Computer<00:15:39.360> returns<00:15:39.600> it<00:15:39.760> back<00:15:39.920> out<00:15:40.000> as<00:15:40.240> outputs," + }, + { + "start": 940.629, + "duration": 0.0, + "text": "Computer returns it back out as outputs," + }, + { + "start": 940.639, + "duration": 0.0, + "text": "Computer returns it back out as outputs, right?" + }, + { + "start": 942.31, + "duration": 0.0, + "text": "right?" + }, + { + "start": 942.32, + "duration": 0.0, + "text": "right? Um<00:15:43.760> so<00:15:44.000> we<00:15:44.240> repeat<00:15:44.639> we<00:15:44.959> repeat<00:15:45.199> this<00:15:45.360> cycle<00:15:45.600> of" + }, + { + "start": 945.75, + "duration": 0.0, + "text": "Um so we repeat we repeat this cycle of" + }, + { + "start": 945.76, + "duration": 0.0, + "text": "Um so we repeat we repeat this cycle of information<00:15:46.000> flow<00:15:46.240> in<00:15:46.399> order<00:15:46.560> to<00:15:46.800> sort<00:15:47.040> of" + }, + { + "start": 947.11, + "duration": 0.0, + "text": "information flow in order to sort of" + }, + { + "start": 947.12, + "duration": 0.0, + "text": "information flow in order to sort of refine<00:15:47.440> our<00:15:47.600> data<00:15:47.760> over<00:15:48.000> time.<00:15:48.160> It's<00:15:48.320> this" + }, + { + "start": 948.47, + "duration": 0.0, + "text": "refine our data over time. It's this" + }, + { + "start": 948.48, + "duration": 0.0, + "text": "refine our data over time. It's this constant<00:15:48.880> back<00:15:49.040> and<00:15:49.279> forth<00:15:49.920> with<00:15:50.079> the" + }, + { + "start": 950.31, + "duration": 0.0, + "text": "constant back and forth with the" + }, + { + "start": 950.32, + "duration": 0.0, + "text": "constant back and forth with the computer.<00:15:50.639> You<00:15:50.800> start<00:15:50.959> with<00:15:51.120> some<00:15:51.279> very" + }, + { + "start": 951.509, + "duration": 0.0, + "text": "computer. You start with some very" + }, + { + "start": 951.519, + "duration": 0.0, + "text": "computer. You start with some very unrefined<00:15:52.160> state<00:15:52.639> or<00:15:52.800> or<00:15:53.120> no<00:15:53.360> state<00:15:53.519> at<00:15:53.680> all" + }, + { + "start": 953.99, + "duration": 0.0, + "text": "unrefined state or or no state at all" + }, + { + "start": 954.0, + "duration": 0.0, + "text": "unrefined state or or no state at all and<00:15:54.240> then<00:15:54.399> you<00:15:54.959> progressively<00:15:55.519> refine<00:15:55.839> it." + }, + { + "start": 956.15, + "duration": 0.0, + "text": "and then you progressively refine it." + }, + { + "start": 956.16, + "duration": 0.0, + "text": "and then you progressively refine it. you<00:15:56.480> you<00:15:56.880> build<00:15:57.120> towards<00:15:57.440> whatever<00:15:57.759> you're" + }, + { + "start": 957.91, + "duration": 0.0, + "text": "you you build towards whatever you're" + }, + { + "start": 957.92, + "duration": 0.0, + "text": "you you build towards whatever you're trying<00:15:58.000> to<00:15:58.160> build<00:15:58.399> towards." + }, + { + "start": 961.519, + "duration": 0.0, + "text": "For<00:16:01.839> programmers,<00:16:02.560> the<00:16:02.800> data<00:16:03.040> we're<00:16:03.199> working" + }, + { + "start": 963.35, + "duration": 0.0, + "text": "For programmers, the data we're working" + }, + { + "start": 963.36, + "duration": 0.0, + "text": "For programmers, the data we're working on<00:16:03.519> is<00:16:03.759> code.<00:16:04.160> So<00:16:04.320> if<00:16:04.480> we<00:16:04.639> zoom<00:16:04.800> into<00:16:05.120> one<00:16:05.279> of" + }, + { + "start": 965.35, + "duration": 0.0, + "text": "on is code. So if we zoom into one of" + }, + { + "start": 965.36, + "duration": 0.0, + "text": "on is code. So if we zoom into one of those<00:16:05.519> like<00:16:05.680> little<00:16:05.839> blob<00:16:06.240> shapes,<00:16:06.480> we've<00:16:06.720> got" + }, + { + "start": 966.79, + "duration": 0.0, + "text": "those like little blob shapes, we've got" + }, + { + "start": 966.8, + "duration": 0.0, + "text": "those like little blob shapes, we've got A<00:16:07.040> to<00:16:07.199> B<00:16:07.600> prime<00:16:07.839> and<00:16:07.920> then<00:16:08.079> A<00:16:08.240> to<00:16:08.399> B<00:16:08.560> double" + }, + { + "start": 968.87, + "duration": 0.0, + "text": "A to B prime and then A to B double" + }, + { + "start": 968.88, + "duration": 0.0, + "text": "A to B prime and then A to B double prime.<00:16:09.519> That's<00:16:09.680> what<00:16:09.839> we're<00:16:10.000> refining." + }, + { + "start": 972.23, + "duration": 0.0, + "text": "prime. That's what we're refining." + }, + { + "start": 972.24, + "duration": 0.0, + "text": "prime. That's what we're refining. Uh<00:16:12.480> the<00:16:12.720> information<00:16:13.120> flow<00:16:13.600> cycle<00:16:13.920> is<00:16:14.160> sort<00:16:14.320> of" + }, + { + "start": 974.389, + "duration": 0.0, + "text": "Uh the information flow cycle is sort of" + }, + { + "start": 974.399, + "duration": 0.0, + "text": "Uh the information flow cycle is sort of what<00:16:14.639> pushes<00:16:14.880> this<00:16:15.040> forward,<00:16:15.279> right?<00:16:15.440> We<00:16:15.600> see" + }, + { + "start": 975.67, + "duration": 0.0, + "text": "what pushes this forward, right? We see" + }, + { + "start": 975.68, + "duration": 0.0, + "text": "what pushes this forward, right? We see the<00:16:15.759> outputs<00:16:16.079> from<00:16:16.160> one<00:16:16.320> state,<00:16:16.560> we<00:16:16.720> produce" + }, + { + "start": 977.189, + "duration": 0.0, + "text": "the outputs from one state, we produce" + }, + { + "start": 977.199, + "duration": 0.0, + "text": "the outputs from one state, we produce information<00:16:17.600> that<00:16:17.759> encodes<00:16:18.079> a<00:16:18.240> new<00:16:18.399> state<00:16:18.560> and" + }, + { + "start": 978.71, + "duration": 0.0, + "text": "information that encodes a new state and" + }, + { + "start": 978.72, + "duration": 0.0, + "text": "information that encodes a new state and and<00:16:18.800> and<00:16:19.120> so<00:16:19.279> on<00:16:19.360> and<00:16:19.600> so<00:16:19.759> forth.<00:16:20.800> Um" + }, + { + "start": 983.509, + "duration": 0.0, + "text": "and and so on and so forth. Um" + }, + { + "start": 983.519, + "duration": 0.0, + "text": "and and so on and so forth. Um uh<00:16:23.680> oh.<00:16:24.399> So<00:16:24.639> we<00:16:24.800> can<00:16:24.880> think<00:16:24.959> of<00:16:25.120> this" + }, + { + "start": 985.269, + "duration": 0.0, + "text": "uh oh. So we can think of this" + }, + { + "start": 985.279, + "duration": 0.0, + "text": "uh oh. So we can think of this refinement<00:16:25.680> process<00:16:26.079> as<00:16:26.399> like<00:16:26.560> a<00:16:26.800> repeating" + }, + { + "start": 987.189, + "duration": 0.0, + "text": "refinement process as like a repeating" + }, + { + "start": 987.199, + "duration": 0.0, + "text": "refinement process as like a repeating cycle<00:16:27.440> across<00:16:27.839> time.<00:16:28.720> Um<00:16:29.360> and<00:16:29.519> now<00:16:29.839> maybe<00:16:30.079> this" + }, + { + "start": 990.31, + "duration": 0.0, + "text": "cycle across time. Um and now maybe this" + }, + { + "start": 990.32, + "duration": 0.0, + "text": "cycle across time. Um and now maybe this is<00:16:30.480> all<00:16:30.880> just<00:16:31.199> like<00:16:31.440> a<00:16:31.680> little<00:16:32.000> abstract<00:16:32.720> and<00:16:32.959> I" + }, + { + "start": 993.11, + "duration": 0.0, + "text": "is all just like a little abstract and I" + }, + { + "start": 993.12, + "duration": 0.0, + "text": "is all just like a little abstract and I get<00:16:33.279> it.<00:16:33.839> But<00:16:33.920> the<00:16:34.160> reason<00:16:34.320> I<00:16:34.480> frame<00:16:34.639> it<00:16:34.800> this" + }, + { + "start": 994.949, + "duration": 0.0, + "text": "get it. But the reason I frame it this" + }, + { + "start": 994.959, + "duration": 0.0, + "text": "get it. But the reason I frame it this way<00:16:35.360> is<00:16:35.600> to<00:16:35.839> associate<00:16:36.880> um<00:16:37.199> certain<00:16:37.519> problems" + }, + { + "start": 997.749, + "duration": 0.0, + "text": "way is to associate um certain problems" + }, + { + "start": 997.759, + "duration": 0.0, + "text": "way is to associate um certain problems on<00:16:38.000> computers<00:16:38.880> like<00:16:39.120> with<00:16:39.360> programming<00:16:39.759> or" + }, + { + "start": 999.91, + "duration": 0.0, + "text": "on computers like with programming or" + }, + { + "start": 999.92, + "duration": 0.0, + "text": "on computers like with programming or debugging<00:16:40.959> or<00:16:41.519> uh<00:16:41.680> or<00:16:42.000> understanding" + }, + { + "start": 1002.47, + "duration": 0.0, + "text": "debugging or uh or understanding" + }, + { + "start": 1002.48, + "duration": 0.0, + "text": "debugging or uh or understanding anything<00:16:42.880> with<00:16:43.120> certain<00:16:43.920> uh<00:16:44.000> undesirable" + }, + { + "start": 1004.71, + "duration": 0.0, + "text": "anything with certain uh undesirable" + }, + { + "start": 1004.72, + "duration": 0.0, + "text": "anything with certain uh undesirable properties<00:16:45.040> of<00:16:45.199> this<00:16:45.360> sort<00:16:45.519> of<00:16:45.600> like<00:16:45.759> wave" + }, + { + "start": 1006.069, + "duration": 0.0, + "text": "properties of this sort of like wave" + }, + { + "start": 1006.079, + "duration": 0.0, + "text": "properties of this sort of like wave pattern<00:16:46.320> that<00:16:46.480> you<00:16:46.639> end<00:16:46.720> up<00:16:46.880> seeing.<00:16:48.320> For" + }, + { + "start": 1008.47, + "duration": 0.0, + "text": "pattern that you end up seeing. For" + }, + { + "start": 1008.48, + "duration": 0.0, + "text": "pattern that you end up seeing. For instance,<00:16:49.680> programming<00:16:50.160> can<00:16:50.399> feel<00:16:50.560> very" + }, + { + "start": 1010.79, + "duration": 0.0, + "text": "instance, programming can feel very" + }, + { + "start": 1010.8, + "duration": 0.0, + "text": "instance, programming can feel very frustrating" + }, + { + "start": 1012.389, + "duration": 0.0, + "text": "frustrating" + }, + { + "start": 1012.399, + "duration": 0.0, + "text": "frustrating um<00:16:52.639> or<00:16:53.120> more<00:16:53.360> opaque<00:16:53.759> or<00:16:53.920> more<00:16:54.079> difficult<00:16:54.320> to" + }, + { + "start": 1014.47, + "duration": 0.0, + "text": "um or more opaque or more difficult to" + }, + { + "start": 1014.48, + "duration": 0.0, + "text": "um or more opaque or more difficult to understand<00:16:55.120> when<00:16:55.440> this<00:16:55.600> cycle<00:16:55.839> has<00:16:56.000> a<00:16:56.079> much" + }, + { + "start": 1016.23, + "duration": 0.0, + "text": "understand when this cycle has a much" + }, + { + "start": 1016.24, + "duration": 0.0, + "text": "understand when this cycle has a much longer<00:16:56.560> frequency.<00:16:57.600> Um<00:16:58.639> if<00:16:58.800> the<00:16:58.959> flow<00:16:59.199> of" + }, + { + "start": 1019.35, + "duration": 0.0, + "text": "longer frequency. Um if the flow of" + }, + { + "start": 1019.36, + "duration": 0.0, + "text": "longer frequency. Um if the flow of information<00:16:59.680> is<00:16:59.839> blocked<00:17:00.160> on<00:17:00.320> something," + }, + { + "start": 1020.55, + "duration": 0.0, + "text": "information is blocked on something," + }, + { + "start": 1020.56, + "duration": 0.0, + "text": "information is blocked on something, let's<00:17:00.720> just<00:17:00.880> use<00:17:01.040> compile<00:17:01.440> times<00:17:01.680> as<00:17:01.839> an" + }, + { + "start": 1021.99, + "duration": 0.0, + "text": "let's just use compile times as an" + }, + { + "start": 1022.0, + "duration": 0.0, + "text": "let's just use compile times as an example.<00:17:02.639> You<00:17:02.800> tweak<00:17:03.120> something,<00:17:03.759> you" + }, + { + "start": 1023.99, + "duration": 0.0, + "text": "example. You tweak something, you" + }, + { + "start": 1024.0, + "duration": 0.0, + "text": "example. You tweak something, you accidentally<00:17:04.480> touch<00:17:04.640> a<00:17:04.799> C++<00:17:05.360> header<00:17:05.679> file," + }, + { + "start": 1025.99, + "duration": 0.0, + "text": "accidentally touch a C++ header file," + }, + { + "start": 1026.0, + "duration": 0.0, + "text": "accidentally touch a C++ header file, you're<00:17:06.160> in<00:17:06.400> like<00:17:06.559> some<00:17:06.799> major<00:17:07.199> nightmare<00:17:08.240> uh" + }, + { + "start": 1028.549, + "duration": 0.0, + "text": "you're in like some major nightmare uh" + }, + { + "start": 1028.559, + "duration": 0.0, + "text": "you're in like some major nightmare uh C++<00:17:09.039> codebase,<00:17:09.679> you<00:17:09.839> hit<00:17:10.000> build,<00:17:10.240> and<00:17:10.400> you're" + }, + { + "start": 1030.47, + "duration": 0.0, + "text": "C++ codebase, you hit build, and you're" + }, + { + "start": 1030.48, + "duration": 0.0, + "text": "C++ codebase, you hit build, and you're like,<00:17:10.640> great,<00:17:10.880> I<00:17:11.039> can't<00:17:11.120> wait<00:17:11.280> to<00:17:11.439> test<00:17:11.679> this" + }, + { + "start": 1031.909, + "duration": 0.0, + "text": "like, great, I can't wait to test this" + }, + { + "start": 1031.919, + "duration": 0.0, + "text": "like, great, I can't wait to test this new<00:17:12.160> like<00:17:12.480> jump<00:17:13.199> speed<00:17:13.439> or<00:17:13.679> whatever.<00:17:14.480> And" + }, + { + "start": 1034.63, + "duration": 0.0, + "text": "new like jump speed or whatever. And" + }, + { + "start": 1034.64, + "duration": 0.0, + "text": "new like jump speed or whatever. And it's<00:17:14.880> like<00:17:15.679> 10<00:17:15.919> minutes<00:17:16.559> just<00:17:16.799> gone.<00:17:17.520> Um" + }, + { + "start": 1040.799, + "duration": 0.0, + "text": "uh<00:17:21.280> that's<00:17:21.600> an<00:17:21.760> example<00:17:22.000> of<00:17:22.240> like" + }, + { + "start": 1042.47, + "duration": 0.0, + "text": "uh that's an example of like" + }, + { + "start": 1042.48, + "duration": 0.0, + "text": "uh that's an example of like deterioration<00:17:23.039> of<00:17:23.199> this<00:17:23.439> information<00:17:23.760> flow," + }, + { + "start": 1044.069, + "duration": 0.0, + "text": "deterioration of this information flow," + }, + { + "start": 1044.079, + "duration": 0.0, + "text": "deterioration of this information flow, the<00:17:24.240> quality<00:17:24.400> of<00:17:24.559> this<00:17:24.799> information<00:17:25.199> flow" + }, + { + "start": 1045.829, + "duration": 0.0, + "text": "the quality of this information flow" + }, + { + "start": 1045.839, + "duration": 0.0, + "text": "the quality of this information flow just<00:17:26.079> due<00:17:26.319> to<00:17:26.559> this<00:17:27.039> frequency<00:17:27.520> expanding." + }, + { + "start": 1049.029, + "duration": 0.0, + "text": "just due to this frequency expanding." + }, + { + "start": 1049.039, + "duration": 0.0, + "text": "just due to this frequency expanding. Um<00:17:29.919> so<00:17:30.240> this<00:17:30.559> is<00:17:30.880> less<00:17:31.200> efficient.<00:17:32.000> It's<00:17:32.160> less" + }, + { + "start": 1052.39, + "duration": 0.0, + "text": "Um so this is less efficient. It's less" + }, + { + "start": 1052.4, + "duration": 0.0, + "text": "Um so this is less efficient. It's less effective.<00:17:33.039> It's<00:17:33.280> not<00:17:33.440> good.<00:17:34.559> Furthermore," + }, + { + "start": 1055.029, + "duration": 0.0, + "text": "effective. It's not good. Furthermore," + }, + { + "start": 1055.039, + "duration": 0.0, + "text": "effective. It's not good. Furthermore, the<00:17:35.200> information<00:17:35.440> flow<00:17:35.760> doesn't<00:17:36.000> only<00:17:36.160> have<00:17:36.240> a" + }, + { + "start": 1056.39, + "duration": 0.0, + "text": "the information flow doesn't only have a" + }, + { + "start": 1056.4, + "duration": 0.0, + "text": "the information flow doesn't only have a frequency<00:17:36.720> but<00:17:36.880> a<00:17:37.039> band<00:17:37.440> a<00:17:37.600> bandwidth<00:17:38.080> as" + }, + { + "start": 1058.23, + "duration": 0.0, + "text": "frequency but a band a bandwidth as" + }, + { + "start": 1058.24, + "duration": 0.0, + "text": "frequency but a band a bandwidth as well.<00:17:39.360> Now<00:17:39.600> to<00:17:39.760> be<00:17:39.840> fair,<00:17:40.080> I<00:17:40.240> probably<00:17:40.400> could" + }, + { + "start": 1060.549, + "duration": 0.0, + "text": "well. Now to be fair, I probably could" + }, + { + "start": 1060.559, + "duration": 0.0, + "text": "well. Now to be fair, I probably could have<00:17:40.640> drawn<00:17:40.880> that<00:17:41.039> as<00:17:41.280> like<00:17:41.840> the<00:17:42.080> amplitude," + }, + { + "start": 1062.549, + "duration": 0.0, + "text": "have drawn that as like the amplitude," + }, + { + "start": 1062.559, + "duration": 0.0, + "text": "have drawn that as like the amplitude, but<00:17:42.720> I<00:17:42.960> just<00:17:43.120> wanted<00:17:43.360> to<00:17:43.520> make<00:17:43.600> it<00:17:43.760> like<00:17:44.000> thick" + }, + { + "start": 1064.23, + "duration": 0.0, + "text": "but I just wanted to make it like thick" + }, + { + "start": 1064.24, + "duration": 0.0, + "text": "but I just wanted to make it like thick versus<00:17:44.559> thin<00:17:44.799> for<00:17:45.039> whatever<00:17:45.280> reason.<00:17:45.440> I<00:17:45.600> don't" + }, + { + "start": 1065.75, + "duration": 0.0, + "text": "versus thin for whatever reason. I don't" + }, + { + "start": 1065.76, + "duration": 0.0, + "text": "versus thin for whatever reason. I don't It's<00:17:45.919> all<00:17:46.000> abstract,<00:17:46.400> but<00:17:46.559> you<00:17:46.720> get<00:17:46.799> the" + }, + { + "start": 1066.95, + "duration": 0.0, + "text": "It's all abstract, but you get the" + }, + { + "start": 1066.96, + "duration": 0.0, + "text": "It's all abstract, but you get the point.<00:17:47.600> Um,<00:17:48.720> it,<00:17:49.039> you<00:17:49.120> know,<00:17:49.200> if<00:17:49.440> you're" + }, + { + "start": 1069.59, + "duration": 0.0, + "text": "point. Um, it, you know, if you're" + }, + { + "start": 1069.6, + "duration": 0.0, + "text": "point. Um, it, you know, if you're waiting<00:17:49.760> a<00:17:49.919> long<00:17:50.080> time<00:17:50.160> for<00:17:50.400> some<00:17:50.559> information" + }, + { + "start": 1070.87, + "duration": 0.0, + "text": "waiting a long time for some information" + }, + { + "start": 1070.88, + "duration": 0.0, + "text": "waiting a long time for some information to<00:17:51.039> come<00:17:51.200> back,<00:17:51.440> it's<00:17:51.600> better<00:17:51.760> if<00:17:51.919> you<00:17:52.080> get<00:17:52.160> a" + }, + { + "start": 1072.31, + "duration": 0.0, + "text": "to come back, it's better if you get a" + }, + { + "start": 1072.32, + "duration": 0.0, + "text": "to come back, it's better if you get a lot<00:17:52.400> of<00:17:52.559> information.<00:17:53.360> If<00:17:53.600> you<00:17:53.679> get<00:17:53.840> very" + }, + { + "start": 1074.07, + "duration": 0.0, + "text": "lot of information. If you get very" + }, + { + "start": 1074.08, + "duration": 0.0, + "text": "lot of information. If you get very little<00:17:54.320> information<00:17:54.880> and<00:17:55.360> you're<00:17:55.600> waiting<00:17:55.760> a" + }, + { + "start": 1075.909, + "duration": 0.0, + "text": "little information and you're waiting a" + }, + { + "start": 1075.919, + "duration": 0.0, + "text": "little information and you're waiting a long<00:17:56.080> time<00:17:56.160> for<00:17:56.320> it,<00:17:56.480> it's<00:17:56.720> like<00:17:56.880> almost" + }, + { + "start": 1077.11, + "duration": 0.0, + "text": "long time for it, it's like almost" + }, + { + "start": 1077.12, + "duration": 0.0, + "text": "long time for it, it's like almost completely<00:17:57.520> useless." + }, + { + "start": 1080.23, + "duration": 0.0, + "text": "completely useless." + }, + { + "start": 1080.24, + "duration": 0.0, + "text": "completely useless. Um," + }, + { + "start": 1081.99, + "duration": 0.0, + "text": "Um," + }, + { + "start": 1082.0, + "duration": 0.0, + "text": "Um, so<00:18:02.880> the<00:18:03.120> goal<00:18:03.440> is<00:18:03.679> to<00:18:03.840> maximize<00:18:04.320> frequency<00:18:05.360> and" + }, + { + "start": 1085.83, + "duration": 0.0, + "text": "so the goal is to maximize frequency and" + }, + { + "start": 1085.84, + "duration": 0.0, + "text": "so the goal is to maximize frequency and maximize<00:18:06.400> useful<00:18:06.799> bandwidth." + }, + { + "start": 1088.63, + "duration": 0.0, + "text": "maximize useful bandwidth." + }, + { + "start": 1088.64, + "duration": 0.0, + "text": "maximize useful bandwidth. So<00:18:08.880> let's<00:18:09.120> take<00:18:09.200> a<00:18:09.520> look<00:18:09.760> at<00:18:10.080> logging<00:18:10.559> from" + }, + { + "start": 1090.789, + "duration": 0.0, + "text": "So let's take a look at logging from" + }, + { + "start": 1090.799, + "duration": 0.0, + "text": "So let's take a look at logging from this<00:18:10.960> perspective.<00:18:11.600> Um<00:18:11.919> logging<00:18:12.480> does" + }, + { + "start": 1092.71, + "duration": 0.0, + "text": "this perspective. Um logging does" + }, + { + "start": 1092.72, + "duration": 0.0, + "text": "this perspective. Um logging does obviously<00:18:13.200> have<00:18:13.440> the<00:18:13.679> ability<00:18:13.919> to<00:18:14.080> provide" + }, + { + "start": 1094.71, + "duration": 0.0, + "text": "obviously have the ability to provide" + }, + { + "start": 1094.72, + "duration": 0.0, + "text": "obviously have the ability to provide useful<00:18:15.120> information.<00:18:16.160> Um<00:18:16.640> it<00:18:16.880> can" + }, + { + "start": 1097.029, + "duration": 0.0, + "text": "useful information. Um it can" + }, + { + "start": 1097.039, + "duration": 0.0, + "text": "useful information. Um it can dramatically<00:18:17.440> improve<00:18:17.760> the<00:18:17.919> bandwidth<00:18:18.559> uh" + }, + { + "start": 1098.87, + "duration": 0.0, + "text": "dramatically improve the bandwidth uh" + }, + { + "start": 1098.88, + "duration": 0.0, + "text": "dramatically improve the bandwidth uh improve<00:18:19.120> the<00:18:19.280> bandwidth<00:18:19.600> of<00:18:19.840> information<00:18:20.559> uh" + }, + { + "start": 1101.029, + "duration": 0.0, + "text": "improve the bandwidth of information uh" + }, + { + "start": 1101.039, + "duration": 0.0, + "text": "improve the bandwidth of information uh output<00:18:21.440> from<00:18:21.600> the<00:18:21.760> computer<00:18:22.000> back<00:18:22.160> to<00:18:22.320> you." + }, + { + "start": 1103.11, + "duration": 0.0, + "text": "output from the computer back to you." + }, + { + "start": 1103.12, + "duration": 0.0, + "text": "output from the computer back to you. But<00:18:23.280> it<00:18:23.520> can<00:18:23.679> require<00:18:24.160> many<00:18:24.480> slow<00:18:24.720> iterations" + }, + { + "start": 1105.19, + "duration": 0.0, + "text": "But it can require many slow iterations" + }, + { + "start": 1105.2, + "duration": 0.0, + "text": "But it can require many slow iterations to<00:18:25.440> refine<00:18:25.760> for<00:18:26.000> some<00:18:26.160> debugging<00:18:26.640> case.<00:18:26.880> And" + }, + { + "start": 1107.029, + "duration": 0.0, + "text": "to refine for some debugging case. And" + }, + { + "start": 1107.039, + "duration": 0.0, + "text": "to refine for some debugging case. And again<00:18:27.280> there's<00:18:27.679> there's<00:18:27.919> a<00:18:28.080> universe<00:18:28.400> of" + }, + { + "start": 1108.63, + "duration": 0.0, + "text": "again there's there's a universe of" + }, + { + "start": 1108.64, + "duration": 0.0, + "text": "again there's there's a universe of information<00:18:28.880> you<00:18:29.120> could<00:18:29.200> be<00:18:29.360> looking<00:18:29.520> at.<00:18:30.000> You" + }, + { + "start": 1110.15, + "duration": 0.0, + "text": "information you could be looking at. You" + }, + { + "start": 1110.16, + "duration": 0.0, + "text": "information you could be looking at. You can't<00:18:30.320> log<00:18:30.640> all<00:18:30.720> of<00:18:30.880> it.<00:18:31.600> Um<00:18:32.160> and<00:18:32.559> and<00:18:32.799> it<00:18:32.960> can" + }, + { + "start": 1113.35, + "duration": 0.0, + "text": "can't log all of it. Um and and it can" + }, + { + "start": 1113.36, + "duration": 0.0, + "text": "can't log all of it. Um and and it can uh<00:18:33.919> also<00:18:34.240> slow<00:18:34.480> down<00:18:34.640> the<00:18:34.799> execution<00:18:35.120> of<00:18:35.200> the" + }, + { + "start": 1115.35, + "duration": 0.0, + "text": "uh also slow down the execution of the" + }, + { + "start": 1115.36, + "duration": 0.0, + "text": "uh also slow down the execution of the program<00:18:35.600> itself.<00:18:35.919> So<00:18:36.160> it's<00:18:36.480> you<00:18:36.640> you<00:18:36.960> get<00:18:37.120> a" + }, + { + "start": 1117.35, + "duration": 0.0, + "text": "program itself. So it's you you get a" + }, + { + "start": 1117.36, + "duration": 0.0, + "text": "program itself. So it's you you get a little<00:18:37.440> bit<00:18:37.520> thicker<00:18:37.840> bandwidth<00:18:38.880> but<00:18:39.600> you" + }, + { + "start": 1119.99, + "duration": 0.0, + "text": "little bit thicker bandwidth but you" + }, + { + "start": 1120.0, + "duration": 0.0, + "text": "little bit thicker bandwidth but you decrease<00:18:40.400> the<00:18:40.559> frequency<00:18:40.960> a<00:18:41.120> bit." + }, + { + "start": 1122.87, + "duration": 0.0, + "text": "decrease the frequency a bit." + }, + { + "start": 1122.88, + "duration": 0.0, + "text": "decrease the frequency a bit. Um<00:18:43.919> so<00:18:44.400> hopefully<00:18:44.799> I've<00:18:44.960> been<00:18:45.120> convincing" + }, + { + "start": 1125.59, + "duration": 0.0, + "text": "Um so hopefully I've been convincing" + }, + { + "start": 1125.6, + "duration": 0.0, + "text": "Um so hopefully I've been convincing enough<00:18:46.559> to<00:18:46.720> to<00:18:47.120> show<00:18:47.360> that<00:18:47.760> while<00:18:48.000> logs<00:18:48.400> can<00:18:48.559> be" + }, + { + "start": 1128.71, + "duration": 0.0, + "text": "enough to to show that while logs can be" + }, + { + "start": 1128.72, + "duration": 0.0, + "text": "enough to to show that while logs can be good<00:18:48.880> and<00:18:49.120> while<00:18:49.840> this<00:18:50.080> is<00:18:50.320> a<00:18:50.640> completely" + }, + { + "start": 1131.11, + "duration": 0.0, + "text": "good and while this is a completely" + }, + { + "start": 1131.12, + "duration": 0.0, + "text": "good and while this is a completely valid<00:18:51.520> technique,<00:18:52.400> it's<00:18:52.640> it's<00:18:53.200> uh<00:18:53.440> it<00:18:53.679> can<00:18:53.760> be" + }, + { + "start": 1133.909, + "duration": 0.0, + "text": "valid technique, it's it's uh it can be" + }, + { + "start": 1133.919, + "duration": 0.0, + "text": "valid technique, it's it's uh it can be less<00:18:54.160> efficient<00:18:54.480> than<00:18:54.640> what<00:18:54.799> you<00:18:54.960> might<00:18:55.600> uh" + }, + { + "start": 1135.75, + "duration": 0.0, + "text": "less efficient than what you might uh" + }, + { + "start": 1135.76, + "duration": 0.0, + "text": "less efficient than what you might uh imagine<00:18:56.080> is<00:18:56.320> the<00:18:56.480> ideal<00:18:56.799> case." + }, + { + "start": 1138.789, + "duration": 0.0, + "text": "imagine is the ideal case." + }, + { + "start": 1138.799, + "duration": 0.0, + "text": "imagine is the ideal case. That's<00:18:58.960> where<00:18:59.120> a<00:18:59.280> debugger<00:18:59.600> comes<00:18:59.760> into<00:19:00.000> play." + }, + { + "start": 1141.83, + "duration": 0.0, + "text": "That's where a debugger comes into play." + }, + { + "start": 1141.84, + "duration": 0.0, + "text": "That's where a debugger comes into play. So<00:19:02.000> I'll<00:19:02.240> start<00:19:02.320> by<00:19:02.480> saying<00:19:02.559> that<00:19:02.720> I<00:19:02.880> often<00:19:03.120> see" + }, + { + "start": 1143.27, + "duration": 0.0, + "text": "So I'll start by saying that I often see" + }, + { + "start": 1143.28, + "duration": 0.0, + "text": "So I'll start by saying that I often see debuggers<00:19:03.919> misunderstood.<00:19:04.720> If<00:19:04.960> you<00:19:05.120> if<00:19:05.280> I" + }, + { + "start": 1145.43, + "duration": 0.0, + "text": "debuggers misunderstood. If you if I" + }, + { + "start": 1145.44, + "duration": 0.0, + "text": "debuggers misunderstood. If you if I could<00:19:05.520> have<00:19:05.679> gone<00:19:05.919> back<00:19:06.160> in<00:19:06.400> time,<00:19:07.039> I<00:19:07.280> pro<00:19:07.600> like" + }, + { + "start": 1147.83, + "duration": 0.0, + "text": "could have gone back in time, I pro like" + }, + { + "start": 1147.84, + "duration": 0.0, + "text": "could have gone back in time, I pro like in<00:19:08.160> if<00:19:08.320> I<00:19:08.480> was<00:19:08.559> in<00:19:08.799> charge,<00:19:09.280> I<00:19:09.520> wouldn't<00:19:09.760> have" + }, + { + "start": 1150.07, + "duration": 0.0, + "text": "in if I was in charge, I wouldn't have" + }, + { + "start": 1150.08, + "duration": 0.0, + "text": "in if I was in charge, I wouldn't have called<00:19:10.240> them<00:19:10.400> that<00:19:10.720> probably.<00:19:10.960> I<00:19:11.120> mean,<00:19:11.280> I" + }, + { + "start": 1151.43, + "duration": 0.0, + "text": "called them that probably. I mean, I" + }, + { + "start": 1151.44, + "duration": 0.0, + "text": "called them that probably. I mean, I understand<00:19:11.600> it's<00:19:11.840> like<00:19:11.919> the<00:19:12.080> physical<00:19:12.320> bug<00:19:12.480> in" + }, + { + "start": 1152.63, + "duration": 0.0, + "text": "understand it's like the physical bug in" + }, + { + "start": 1152.64, + "duration": 0.0, + "text": "understand it's like the physical bug in the<00:19:12.720> machine.<00:19:12.960> Everyone<00:19:13.200> knows<00:19:13.440> the<00:19:13.760> story." + }, + { + "start": 1154.07, + "duration": 0.0, + "text": "the machine. Everyone knows the story." + }, + { + "start": 1154.08, + "duration": 0.0, + "text": "the machine. Everyone knows the story. But,<00:19:14.799> you<00:19:14.960> know,<00:19:15.120> it<00:19:15.280> might<00:19:15.520> illuminate<00:19:15.919> them" + }, + { + "start": 1156.07, + "duration": 0.0, + "text": "But, you know, it might illuminate them" + }, + { + "start": 1156.08, + "duration": 0.0, + "text": "But, you know, it might illuminate them a<00:19:16.240> little<00:19:16.320> bit<00:19:16.480> today<00:19:16.880> like<00:19:17.120> modern<00:19:17.440> debuggers" + }, + { + "start": 1157.909, + "duration": 0.0, + "text": "a little bit today like modern debuggers" + }, + { + "start": 1157.919, + "duration": 0.0, + "text": "a little bit today like modern debuggers if<00:19:18.080> you<00:19:18.160> think<00:19:18.400> about<00:19:18.640> them<00:19:18.799> as<00:19:18.960> just<00:19:19.039> a" + }, + { + "start": 1159.19, + "duration": 0.0, + "text": "if you think about them as just a" + }, + { + "start": 1159.2, + "duration": 0.0, + "text": "if you think about them as just a program<00:19:19.440> analyzer.<00:19:20.000> So,<00:19:20.000> it's<00:19:20.080> giving<00:19:20.240> you<00:19:20.320> a" + }, + { + "start": 1160.47, + "duration": 0.0, + "text": "program analyzer. So, it's giving you a" + }, + { + "start": 1160.48, + "duration": 0.0, + "text": "program analyzer. So, it's giving you a window<00:19:20.720> into<00:19:20.880> your<00:19:21.120> program." + }, + { + "start": 1162.71, + "duration": 0.0, + "text": "window into your program." + }, + { + "start": 1162.72, + "duration": 0.0, + "text": "window into your program. Uh<00:19:23.039> really,<00:19:23.280> it's<00:19:23.520> just<00:19:23.919> giving<00:19:24.160> you" + }, + { + "start": 1164.39, + "duration": 0.0, + "text": "Uh really, it's just giving you" + }, + { + "start": 1164.4, + "duration": 0.0, + "text": "Uh really, it's just giving you information<00:19:24.799> extraction<00:19:25.280> tools." + }, + { + "start": 1166.95, + "duration": 0.0, + "text": "information extraction tools." + }, + { + "start": 1166.96, + "duration": 0.0, + "text": "information extraction tools. Uh<00:19:27.280> in<00:19:27.520> any<00:19:27.760> case," + }, + { + "start": 1170.07, + "duration": 0.0, + "text": "Uh in any case," + }, + { + "start": 1170.08, + "duration": 0.0, + "text": "Uh in any case, a<00:19:30.320> debugger<00:19:30.720> allows<00:19:30.960> us<00:19:31.200> to<00:19:32.000> analyze<00:19:32.400> a" + }, + { + "start": 1172.63, + "duration": 0.0, + "text": "a debugger allows us to analyze a" + }, + { + "start": 1172.64, + "duration": 0.0, + "text": "a debugger allows us to analyze a program<00:19:32.960> at<00:19:33.200> runtime." + }, + { + "start": 1174.789, + "duration": 0.0, + "text": "program at runtime." + }, + { + "start": 1174.799, + "duration": 0.0, + "text": "program at runtime. without<00:19:35.120> modifying<00:19:35.600> it.<00:19:36.400> Um<00:19:36.880> you<00:19:37.120> can<00:19:37.200> use" + }, + { + "start": 1177.35, + "duration": 0.0, + "text": "without modifying it. Um you can use" + }, + { + "start": 1177.36, + "duration": 0.0, + "text": "without modifying it. Um you can use structural<00:19:37.760> information<00:19:38.080> about<00:19:38.240> the<00:19:38.400> program" + }, + { + "start": 1178.63, + "duration": 0.0, + "text": "structural information about the program" + }, + { + "start": 1178.64, + "duration": 0.0, + "text": "structural information about the program stored<00:19:38.880> in<00:19:39.039> debug<00:19:39.360> info<00:19:40.080> to<00:19:40.320> get<00:19:40.559> like" + }, + { + "start": 1180.95, + "duration": 0.0, + "text": "stored in debug info to get like" + }, + { + "start": 1180.96, + "duration": 0.0, + "text": "stored in debug info to get like readaloud<00:19:41.520> print<00:19:41.760> loop<00:19:42.000> style<00:19:42.240> features<00:19:42.720> at" + }, + { + "start": 1182.95, + "duration": 0.0, + "text": "readaloud print loop style features at" + }, + { + "start": 1182.96, + "duration": 0.0, + "text": "readaloud print loop style features at the<00:19:43.120> limit.<00:19:44.400> Um<00:19:44.799> and<00:19:45.039> therefore<00:19:45.360> you<00:19:45.600> shortcut" + }, + { + "start": 1185.99, + "duration": 0.0, + "text": "the limit. Um and therefore you shortcut" + }, + { + "start": 1186.0, + "duration": 0.0, + "text": "the limit. Um and therefore you shortcut the<00:19:46.160> code<00:19:46.320> modification<00:19:46.880> process" + }, + { + "start": 1187.19, + "duration": 0.0, + "text": "the code modification process" + }, + { + "start": 1187.2, + "duration": 0.0, + "text": "the code modification process altogether.<00:19:47.679> You<00:19:47.760> you<00:19:48.080> completely<00:19:48.559> avoid<00:19:48.799> the" + }, + { + "start": 1188.95, + "duration": 0.0, + "text": "altogether. You you completely avoid the" + }, + { + "start": 1188.96, + "duration": 0.0, + "text": "altogether. You you completely avoid the tool<00:19:49.200> chain.<00:19:50.080> Um<00:19:50.880> so<00:19:51.280> importantly<00:19:51.760> debugger" + }, + { + "start": 1192.15, + "duration": 0.0, + "text": "tool chain. Um so importantly debugger" + }, + { + "start": 1192.16, + "duration": 0.0, + "text": "tool chain. Um so importantly debugger allows<00:19:52.400> us<00:19:52.559> to<00:19:52.960> avoid<00:19:53.440> that<00:19:53.760> second<00:19:54.080> problem" + }, + { + "start": 1194.71, + "duration": 0.0, + "text": "allows us to avoid that second problem" + }, + { + "start": 1194.72, + "duration": 0.0, + "text": "allows us to avoid that second problem of<00:19:54.960> modification<00:19:55.520> time.<00:19:55.840> How<00:19:56.080> long<00:19:56.320> does<00:19:56.480> it" + }, + { + "start": 1196.63, + "duration": 0.0, + "text": "of modification time. How long does it" + }, + { + "start": 1196.64, + "duration": 0.0, + "text": "of modification time. How long does it take<00:19:57.120> for<00:19:57.360> me<00:19:57.600> to<00:19:58.320> get<00:19:58.480> some<00:19:58.720> new<00:19:58.960> information" + }, + { + "start": 1199.27, + "duration": 0.0, + "text": "take for me to get some new information" + }, + { + "start": 1199.28, + "duration": 0.0, + "text": "take for me to get some new information out<00:19:59.440> of<00:19:59.600> the<00:19:59.760> system?<00:20:00.400> All<00:20:00.400> right.<00:20:01.760> Um,<00:20:02.880> so<00:20:03.280> the" + }, + { + "start": 1203.51, + "duration": 0.0, + "text": "out of the system? All right. Um, so the" + }, + { + "start": 1203.52, + "duration": 0.0, + "text": "out of the system? All right. Um, so the reason<00:20:03.600> I've<00:20:03.840> been<00:20:04.000> so<00:20:04.160> focused<00:20:04.320> on<00:20:04.400> debugger" + }, + { + "start": 1204.87, + "duration": 0.0, + "text": "reason I've been so focused on debugger" + }, + { + "start": 1204.88, + "duration": 0.0, + "text": "reason I've been so focused on debugger visualization<00:20:05.520> and<00:20:05.760> the<00:20:05.919> reason<00:20:06.080> why<00:20:06.559> I<00:20:07.200> would" + }, + { + "start": 1207.43, + "duration": 0.0, + "text": "visualization and the reason why I would" + }, + { + "start": 1207.44, + "duration": 0.0, + "text": "visualization and the reason why I would argue<00:20:07.679> it's<00:20:07.919> important<00:20:08.160> and<00:20:08.400> hopefully<00:20:08.880> it's" + }, + { + "start": 1209.11, + "duration": 0.0, + "text": "argue it's important and hopefully it's" + }, + { + "start": 1209.12, + "duration": 0.0, + "text": "argue it's important and hopefully it's been<00:20:09.360> convincing<00:20:09.760> and<00:20:10.160> justifies<00:20:10.720> this<00:20:10.880> talk." + }, + { + "start": 1211.59, + "duration": 0.0, + "text": "been convincing and justifies this talk." + }, + { + "start": 1211.6, + "duration": 0.0, + "text": "been convincing and justifies this talk. Um,<00:20:12.240> first<00:20:12.559> the<00:20:12.720> visualizations<00:20:13.440> don't<00:20:13.600> need" + }, + { + "start": 1213.669, + "duration": 0.0, + "text": "Um, first the visualizations don't need" + }, + { + "start": 1213.679, + "duration": 0.0, + "text": "Um, first the visualizations don't need to<00:20:13.760> be<00:20:13.919> textual<00:20:14.480> and<00:20:14.720> second<00:20:15.120> they<00:20:15.280> don't<00:20:15.440> need" + }, + { + "start": 1215.59, + "duration": 0.0, + "text": "to be textual and second they don't need" + }, + { + "start": 1215.6, + "duration": 0.0, + "text": "to be textual and second they don't need to<00:20:15.679> be<00:20:15.919> they<00:20:16.160> don't<00:20:16.320> need<00:20:16.480> to<00:20:16.640> require<00:20:17.039> this" + }, + { + "start": 1217.19, + "duration": 0.0, + "text": "to be they don't need to require this" + }, + { + "start": 1217.2, + "duration": 0.0, + "text": "to be they don't need to require this this<00:20:17.600> build<00:20:18.640> run<00:20:19.039> recreate<00:20:19.520> state<00:20:20.000> observe" + }, + { + "start": 1220.47, + "duration": 0.0, + "text": "this build run recreate state observe" + }, + { + "start": 1220.48, + "duration": 0.0, + "text": "this build run recreate state observe loop." + }, + { + "start": 1223.11, + "duration": 0.0, + "text": "loop." + }, + { + "start": 1223.12, + "duration": 0.0, + "text": "loop. So<00:20:23.440> in<00:20:23.600> order<00:20:23.840> to<00:20:24.000> be<00:20:24.160> useful<00:20:24.400> a<00:20:24.559> debugger<00:20:24.880> has" + }, + { + "start": 1224.95, + "duration": 0.0, + "text": "So in order to be useful a debugger has" + }, + { + "start": 1224.96, + "duration": 0.0, + "text": "So in order to be useful a debugger has to<00:20:25.039> meet<00:20:25.200> that<00:20:25.360> mandate.<00:20:26.320> It<00:20:26.480> needs<00:20:26.640> to" + }, + { + "start": 1226.71, + "duration": 0.0, + "text": "to meet that mandate. It needs to" + }, + { + "start": 1226.72, + "duration": 0.0, + "text": "to meet that mandate. It needs to provide<00:20:26.960> a<00:20:27.120> variety<00:20:27.360> of<00:20:27.760> visualizations<00:20:28.559> not" + }, + { + "start": 1228.71, + "duration": 0.0, + "text": "provide a variety of visualizations not" + }, + { + "start": 1228.72, + "duration": 0.0, + "text": "provide a variety of visualizations not just<00:20:28.880> textual<00:20:29.440> ones.<00:20:30.080> and<00:20:30.240> it<00:20:30.480> needs<00:20:30.640> to<00:20:30.720> be" + }, + { + "start": 1230.789, + "duration": 0.0, + "text": "just textual ones. and it needs to be" + }, + { + "start": 1230.799, + "duration": 0.0, + "text": "just textual ones. and it needs to be able<00:20:30.880> to<00:20:31.039> do<00:20:31.120> it<00:20:31.280> quickly.<00:20:32.400> Um,<00:20:32.799> if<00:20:32.960> it<00:20:33.120> can't" + }, + { + "start": 1233.35, + "duration": 0.0, + "text": "able to do it quickly. Um, if it can't" + }, + { + "start": 1233.36, + "duration": 0.0, + "text": "able to do it quickly. Um, if it can't provide<00:20:33.679> a<00:20:34.000> variety,<00:20:34.799> then<00:20:35.440> um,<00:20:35.919> it<00:20:36.080> forces" + }, + { + "start": 1236.39, + "duration": 0.0, + "text": "provide a variety, then um, it forces" + }, + { + "start": 1236.4, + "duration": 0.0, + "text": "provide a variety, then um, it forces the<00:20:36.559> programmer<00:20:36.799> to<00:20:36.960> go<00:20:37.039> back<00:20:37.120> to<00:20:37.280> custom" + }, + { + "start": 1237.51, + "duration": 0.0, + "text": "the programmer to go back to custom" + }, + { + "start": 1237.52, + "duration": 0.0, + "text": "the programmer to go back to custom logging<00:20:37.919> tools.<00:20:38.720> And<00:20:38.880> if<00:20:39.039> it<00:20:39.200> can't<00:20:39.440> do<00:20:39.600> it" + }, + { + "start": 1239.75, + "duration": 0.0, + "text": "logging tools. And if it can't do it" + }, + { + "start": 1239.76, + "duration": 0.0, + "text": "logging tools. And if it can't do it quickly,<00:20:40.159> it's<00:20:40.400> faster<00:20:40.720> anyways<00:20:41.039> for<00:20:41.200> the" + }, + { + "start": 1241.35, + "duration": 0.0, + "text": "quickly, it's faster anyways for the" + }, + { + "start": 1241.36, + "duration": 0.0, + "text": "quickly, it's faster anyways for the programmer<00:20:41.679> to<00:20:41.840> go<00:20:42.000> back<00:20:42.080> to<00:20:42.159> the<00:20:42.320> program<00:20:42.559> and" + }, + { + "start": 1242.71, + "duration": 0.0, + "text": "programmer to go back to the program and" + }, + { + "start": 1242.72, + "duration": 0.0, + "text": "programmer to go back to the program and just<00:20:42.799> write<00:20:42.960> their<00:20:43.120> own<00:20:43.280> custom<00:20:43.520> visualizer," + }, + { + "start": 1244.149, + "duration": 0.0, + "text": "just write their own custom visualizer," + }, + { + "start": 1244.159, + "duration": 0.0, + "text": "just write their own custom visualizer, right?<00:20:44.480> So,<00:20:44.559> if<00:20:44.720> it<00:20:44.960> can't<00:20:45.120> do<00:20:45.280> both<00:20:45.520> of<00:20:45.679> those" + }, + { + "start": 1245.909, + "duration": 0.0, + "text": "right? So, if it can't do both of those" + }, + { + "start": 1245.919, + "duration": 0.0, + "text": "right? So, if it can't do both of those things,<00:20:46.880> then<00:20:47.360> the<00:20:47.760> utility<00:20:48.000> of<00:20:48.080> a<00:20:48.240> debugger" + }, + { + "start": 1248.63, + "duration": 0.0, + "text": "things, then the utility of a debugger" + }, + { + "start": 1248.64, + "duration": 0.0, + "text": "things, then the utility of a debugger dramatically<00:20:49.120> drops." + }, + { + "start": 1252.799, + "duration": 0.0, + "text": "So,<00:20:53.039> let's<00:20:53.280> look<00:20:53.360> at<00:20:53.520> how<00:20:53.600> this<00:20:53.840> will<00:20:54.000> work." + }, + { + "start": 1255.59, + "duration": 0.0, + "text": "So, let's look at how this will work." + }, + { + "start": 1255.6, + "duration": 0.0, + "text": "So, let's look at how this will work. I'll<00:20:55.840> start<00:20:56.000> with<00:20:56.080> a<00:20:56.320> brief<00:20:56.559> introduction<00:20:56.960> to" + }, + { + "start": 1257.11, + "duration": 0.0, + "text": "I'll start with a brief introduction to" + }, + { + "start": 1257.12, + "duration": 0.0, + "text": "I'll start with a brief introduction to the<00:20:57.360> basics<00:20:57.600> of<00:20:57.760> how<00:20:58.080> debuggers<00:20:58.640> work<00:20:58.799> with" + }, + { + "start": 1258.95, + "duration": 0.0, + "text": "the basics of how debuggers work with" + }, + { + "start": 1258.96, + "duration": 0.0, + "text": "the basics of how debuggers work with your<00:20:59.200> programs<00:20:59.600> at<00:20:59.840> all<00:21:00.000> and<00:21:00.159> then<00:21:00.320> we'll" + }, + { + "start": 1260.549, + "duration": 0.0, + "text": "your programs at all and then we'll" + }, + { + "start": 1260.559, + "duration": 0.0, + "text": "your programs at all and then we'll build<00:21:00.720> up<00:21:01.039> from<00:21:01.280> there." + }, + { + "start": 1263.029, + "duration": 0.0, + "text": "build up from there." + }, + { + "start": 1263.039, + "duration": 0.0, + "text": "build up from there. First,<00:21:03.360> let's<00:21:03.600> consider<00:21:03.919> how<00:21:04.080> your<00:21:04.240> program" + }, + { + "start": 1264.47, + "duration": 0.0, + "text": "First, let's consider how your program" + }, + { + "start": 1264.48, + "duration": 0.0, + "text": "First, let's consider how your program is<00:21:04.799> executing<00:21:05.440> on<00:21:05.679> a<00:21:05.840> modern<00:21:06.159> operating" + }, + { + "start": 1266.549, + "duration": 0.0, + "text": "is executing on a modern operating" + }, + { + "start": 1266.559, + "duration": 0.0, + "text": "is executing on a modern operating system.<00:21:07.360> And<00:21:07.679> note<00:21:07.919> that<00:21:08.159> like<00:21:08.320> the" + }, + { + "start": 1268.47, + "duration": 0.0, + "text": "system. And note that like the" + }, + { + "start": 1268.48, + "duration": 0.0, + "text": "system. And note that like the terminology<00:21:08.960> I<00:21:09.120> use,<00:21:09.360> it<00:21:09.520> differs<00:21:09.840> across<00:21:10.960> uh" + }, + { + "start": 1271.11, + "duration": 0.0, + "text": "terminology I use, it differs across uh" + }, + { + "start": 1271.12, + "duration": 0.0, + "text": "terminology I use, it differs across uh environments<00:21:11.600> or<00:21:11.919> platforms,<00:21:12.400> but<00:21:12.559> you<00:21:12.799> can" + }, + { + "start": 1272.95, + "duration": 0.0, + "text": "environments or platforms, but you can" + }, + { + "start": 1272.96, + "duration": 0.0, + "text": "environments or platforms, but you can find<00:21:13.280> analoges<00:21:13.840> of<00:21:14.000> everything.<00:21:14.559> Um<00:21:14.880> it's" + }, + { + "start": 1275.11, + "duration": 0.0, + "text": "find analoges of everything. Um it's" + }, + { + "start": 1275.12, + "duration": 0.0, + "text": "find analoges of everything. Um it's all,<00:21:15.840> you<00:21:16.000> know,<00:21:16.559> you'll<00:21:16.880> you'll<00:21:17.120> find<00:21:17.280> the" + }, + { + "start": 1277.51, + "duration": 0.0, + "text": "all, you know, you'll you'll find the" + }, + { + "start": 1277.52, + "duration": 0.0, + "text": "all, you know, you'll you'll find the matching<00:21:17.840> terms<00:21:18.240> if<00:21:18.480> you<00:21:18.559> look.<00:21:19.679> Um<00:21:20.080> so<00:21:20.240> when" + }, + { + "start": 1280.39, + "duration": 0.0, + "text": "matching terms if you look. Um so when" + }, + { + "start": 1280.4, + "duration": 0.0, + "text": "matching terms if you look. Um so when you<00:21:20.559> start<00:21:20.640> your<00:21:20.799> program,<00:21:21.120> you<00:21:21.200> know,<00:21:21.280> you've" + }, + { + "start": 1281.51, + "duration": 0.0, + "text": "you start your program, you know, you've" + }, + { + "start": 1281.52, + "duration": 0.0, + "text": "you start your program, you know, you've got<00:21:21.600> your<00:21:21.760> executables<00:21:22.799> uh<00:21:22.960> file<00:21:23.200> on<00:21:23.360> disk." + }, + { + "start": 1283.75, + "duration": 0.0, + "text": "got your executables uh file on disk." + }, + { + "start": 1283.76, + "duration": 0.0, + "text": "got your executables uh file on disk. there's<00:21:23.919> a<00:21:24.000> bunch<00:21:24.080> of<00:21:24.159> DL<00:21:24.640> files<00:21:24.880> on<00:21:25.120> disk.<00:21:25.919> Uh" + }, + { + "start": 1286.23, + "duration": 0.0, + "text": "there's a bunch of DL files on disk. Uh" + }, + { + "start": 1286.24, + "duration": 0.0, + "text": "there's a bunch of DL files on disk. Uh those<00:21:26.640> can<00:21:26.799> be<00:21:26.960> referred<00:21:27.200> to<00:21:27.360> as<00:21:27.520> executable" + }, + { + "start": 1288.149, + "duration": 0.0, + "text": "those can be referred to as executable" + }, + { + "start": 1288.159, + "duration": 0.0, + "text": "those can be referred to as executable images." + }, + { + "start": 1289.909, + "duration": 0.0, + "text": "images." + }, + { + "start": 1289.919, + "duration": 0.0, + "text": "images. Um<00:21:30.240> when<00:21:30.480> you<00:21:30.640> launch<00:21:30.880> your<00:21:31.120> process,<00:21:32.000> the<00:21:32.240> the" + }, + { + "start": 1292.63, + "duration": 0.0, + "text": "Um when you launch your process, the the" + }, + { + "start": 1292.64, + "duration": 0.0, + "text": "Um when you launch your process, the the kernel's<00:21:33.039> loader<00:21:33.280> is<00:21:33.440> actually<00:21:33.679> going<00:21:33.840> to" + }, + { + "start": 1293.99, + "duration": 0.0, + "text": "kernel's loader is actually going to" + }, + { + "start": 1294.0, + "duration": 0.0, + "text": "kernel's loader is actually going to take<00:21:34.559> those<00:21:34.880> images<00:21:35.760> and<00:21:36.320> uh<00:21:36.480> it<00:21:37.280> it<00:21:37.600> produces" + }, + { + "start": 1297.99, + "duration": 0.0, + "text": "take those images and uh it it produces" + }, + { + "start": 1298.0, + "duration": 0.0, + "text": "take those images and uh it it produces modules.<00:21:38.480> Modules<00:21:38.799> aren't<00:21:39.039> exactly<00:21:39.280> the<00:21:39.440> same" + }, + { + "start": 1299.51, + "duration": 0.0, + "text": "modules. Modules aren't exactly the same" + }, + { + "start": 1299.52, + "duration": 0.0, + "text": "modules. Modules aren't exactly the same as<00:21:39.760> executable<00:21:40.240> images,<00:21:40.480> but<00:21:40.640> you<00:21:40.720> can<00:21:40.880> think" + }, + { + "start": 1300.95, + "duration": 0.0, + "text": "as executable images, but you can think" + }, + { + "start": 1300.96, + "duration": 0.0, + "text": "as executable images, but you can think of<00:21:41.039> modules<00:21:41.440> as<00:21:41.600> sort<00:21:41.760> of<00:21:42.000> the<00:21:42.240> loaded" + }, + { + "start": 1302.63, + "duration": 0.0, + "text": "of modules as sort of the loaded" + }, + { + "start": 1302.64, + "duration": 0.0, + "text": "of modules as sort of the loaded equivalent<00:21:43.200> into<00:21:43.440> your<00:21:43.679> address<00:21:44.000> space<00:21:44.799> of" + }, + { + "start": 1305.11, + "duration": 0.0, + "text": "equivalent into your address space of" + }, + { + "start": 1305.12, + "duration": 0.0, + "text": "equivalent into your address space of those<00:21:45.360> executable<00:21:45.919> images." + }, + { + "start": 1307.669, + "duration": 0.0, + "text": "those executable images." + }, + { + "start": 1307.679, + "duration": 0.0, + "text": "those executable images. Um<00:21:48.159> the<00:21:48.320> process<00:21:48.640> also<00:21:48.880> includes<00:21:49.120> a<00:21:49.280> page" + }, + { + "start": 1309.51, + "duration": 0.0, + "text": "Um the process also includes a page" + }, + { + "start": 1309.52, + "duration": 0.0, + "text": "Um the process also includes a page table<00:21:49.840> to<00:21:50.080> map<00:21:50.320> from,<00:21:50.720> you<00:21:50.880> know,<00:21:50.960> it's<00:21:51.120> got<00:21:51.200> a" + }, + { + "start": 1311.35, + "duration": 0.0, + "text": "table to map from, you know, it's got a" + }, + { + "start": 1311.36, + "duration": 0.0, + "text": "table to map from, you know, it's got a virtual<00:21:51.600> address<00:21:51.840> base.<00:21:52.159> It<00:21:52.240> maps<00:21:52.480> from" + }, + { + "start": 1312.63, + "duration": 0.0, + "text": "virtual address base. It maps from" + }, + { + "start": 1312.64, + "duration": 0.0, + "text": "virtual address base. It maps from virtual<00:21:52.880> addresses<00:21:53.200> to<00:21:53.360> physical<00:21:53.679> addresses." + }, + { + "start": 1314.71, + "duration": 0.0, + "text": "virtual addresses to physical addresses." + }, + { + "start": 1314.72, + "duration": 0.0, + "text": "virtual addresses to physical addresses. Um," + }, + { + "start": 1317.11, + "duration": 0.0, + "text": "Um," + }, + { + "start": 1317.12, + "duration": 0.0, + "text": "Um, and<00:21:57.600> uh,<00:21:57.679> your<00:21:57.919> process<00:21:58.240> also<00:21:58.880> contains<00:21:59.200> one" + }, + { + "start": 1319.35, + "duration": 0.0, + "text": "and uh, your process also contains one" + }, + { + "start": 1319.36, + "duration": 0.0, + "text": "and uh, your process also contains one or<00:21:59.520> more<00:21:59.679> threads<00:22:00.000> that<00:22:00.159> are<00:22:00.320> executing<00:22:00.720> just," + }, + { + "start": 1321.11, + "duration": 0.0, + "text": "or more threads that are executing just," + }, + { + "start": 1321.12, + "duration": 0.0, + "text": "or more threads that are executing just, you<00:22:01.280> know,<00:22:01.360> pieces<00:22:01.679> of<00:22:01.919> code,<00:22:02.400> right?<00:22:03.760> Uh,<00:22:04.000> and" + }, + { + "start": 1324.31, + "duration": 0.0, + "text": "you know, pieces of code, right? Uh, and" + }, + { + "start": 1324.32, + "duration": 0.0, + "text": "you know, pieces of code, right? Uh, and each<00:22:04.559> one<00:22:04.799> includes<00:22:05.200> things<00:22:05.440> like<00:22:05.760> a<00:22:06.000> register" + }, + { + "start": 1326.47, + "duration": 0.0, + "text": "each one includes things like a register" + }, + { + "start": 1326.48, + "duration": 0.0, + "text": "each one includes things like a register file.<00:22:07.360> Um,<00:22:07.600> the<00:22:07.840> kernel<00:22:08.320> scheduler<00:22:08.799> then<00:22:08.960> is" + }, + { + "start": 1329.029, + "duration": 0.0, + "text": "file. Um, the kernel scheduler then is" + }, + { + "start": 1329.039, + "duration": 0.0, + "text": "file. Um, the kernel scheduler then is like,<00:22:09.280> I've<00:22:09.440> got<00:22:09.520> all<00:22:09.600> these<00:22:09.760> threads.<00:22:10.080> I'll" + }, + { + "start": 1330.31, + "duration": 0.0, + "text": "like, I've got all these threads. I'll" + }, + { + "start": 1330.32, + "duration": 0.0, + "text": "like, I've got all these threads. I'll start<00:22:10.480> putting<00:22:10.720> them<00:22:10.799> onto<00:22:11.039> these<00:22:11.200> cores." + }, + { + "start": 1331.59, + "duration": 0.0, + "text": "start putting them onto these cores." + }, + { + "start": 1331.6, + "duration": 0.0, + "text": "start putting them onto these cores. We'll<00:22:11.760> schedule<00:22:12.000> them,<00:22:12.320> get<00:22:12.480> them<00:22:12.640> going,<00:22:13.360> and" + }, + { + "start": 1333.59, + "duration": 0.0, + "text": "We'll schedule them, get them going, and" + }, + { + "start": 1333.6, + "duration": 0.0, + "text": "We'll schedule them, get them going, and then<00:22:13.760> your<00:22:14.000> program<00:22:14.320> is<00:22:14.640> executing." + }, + { + "start": 1336.95, + "duration": 0.0, + "text": "then your program is executing." + }, + { + "start": 1336.96, + "duration": 0.0, + "text": "then your program is executing. So,<00:22:17.200> a<00:22:17.360> debugger<00:22:17.840> is<00:22:18.000> just<00:22:18.159> a<00:22:18.400> program.<00:22:19.360> And<00:22:19.520> so" + }, + { + "start": 1339.669, + "duration": 0.0, + "text": "So, a debugger is just a program. And so" + }, + { + "start": 1339.679, + "duration": 0.0, + "text": "So, a debugger is just a program. And so when<00:22:19.840> it<00:22:20.000> executes<00:22:20.480> it's<00:22:20.640> just<00:22:20.799> another" + }, + { + "start": 1341.19, + "duration": 0.0, + "text": "when it executes it's just another" + }, + { + "start": 1341.2, + "duration": 0.0, + "text": "when it executes it's just another process<00:22:22.159> uh<00:22:22.320> one<00:22:22.559> which<00:22:22.799> the<00:22:23.039> kernel<00:22:23.520> records" + }, + { + "start": 1343.909, + "duration": 0.0, + "text": "process uh one which the kernel records" + }, + { + "start": 1343.919, + "duration": 0.0, + "text": "process uh one which the kernel records as<00:22:24.159> being<00:22:24.400> attached<00:22:25.360> to<00:22:26.000> uh" + }, + { + "start": 1349.2, + "duration": 0.0, + "text": "ah<00:22:29.520> got<00:22:29.679> it<00:22:29.919> thanks<00:22:31.120> uh<00:22:31.280> it's<00:22:31.520> just<00:22:31.760> another" + }, + { + "start": 1351.99, + "duration": 0.0, + "text": "ah got it thanks uh it's just another" + }, + { + "start": 1352.0, + "duration": 0.0, + "text": "ah got it thanks uh it's just another process<00:22:32.400> but<00:22:32.799> uh<00:22:32.880> the<00:22:33.120> kernel<00:22:33.520> is<00:22:33.760> just" + }, + { + "start": 1354.31, + "duration": 0.0, + "text": "process but uh the kernel is just" + }, + { + "start": 1354.32, + "duration": 0.0, + "text": "process but uh the kernel is just recording<00:22:34.799> the<00:22:35.039> debugger<00:22:35.520> as<00:22:35.760> being<00:22:36.000> attached" + }, + { + "start": 1356.549, + "duration": 0.0, + "text": "recording the debugger as being attached" + }, + { + "start": 1356.559, + "duration": 0.0, + "text": "recording the debugger as being attached to<00:22:37.360> the<00:22:37.600> debuggy.<00:22:38.080> It's<00:22:38.240> just<00:22:38.320> a<00:22:38.480> state<00:22:38.720> in<00:22:38.880> the" + }, + { + "start": 1358.95, + "duration": 0.0, + "text": "to the debuggy. It's just a state in the" + }, + { + "start": 1358.96, + "duration": 0.0, + "text": "to the debuggy. It's just a state in the kernel." + }, + { + "start": 1360.47, + "duration": 0.0, + "text": "kernel." + }, + { + "start": 1360.48, + "duration": 0.0, + "text": "kernel. Um,<00:22:41.760> so,<00:22:42.320> uh,<00:22:42.880> when<00:22:43.120> a<00:22:43.280> debugger<00:22:43.600> is<00:22:43.760> attached" + }, + { + "start": 1363.99, + "duration": 0.0, + "text": "Um, so, uh, when a debugger is attached" + }, + { + "start": 1364.0, + "duration": 0.0, + "text": "Um, so, uh, when a debugger is attached to<00:22:44.080> another<00:22:44.400> process,<00:22:44.960> which<00:22:45.280> I<00:22:45.440> refer<00:22:45.600> to<00:22:45.760> as" + }, + { + "start": 1365.909, + "duration": 0.0, + "text": "to another process, which I refer to as" + }, + { + "start": 1365.919, + "duration": 0.0, + "text": "to another process, which I refer to as the<00:22:46.080> debug,<00:22:47.200> I<00:22:47.360> don't<00:22:47.440> know<00:22:47.520> if<00:22:47.679> anyone<00:22:47.919> else" + }, + { + "start": 1368.07, + "duration": 0.0, + "text": "the debug, I don't know if anyone else" + }, + { + "start": 1368.08, + "duration": 0.0, + "text": "the debug, I don't know if anyone else does<00:22:48.320> that,<00:22:48.480> but<00:22:48.799> it's<00:22:49.039> kind<00:22:49.200> of,<00:22:49.440> you<00:22:49.600> know,<00:22:49.760> I" + }, + { + "start": 1369.909, + "duration": 0.0, + "text": "does that, but it's kind of, you know, I" + }, + { + "start": 1369.919, + "duration": 0.0, + "text": "does that, but it's kind of, you know, I don't<00:22:50.000> know,<00:22:50.320> hopefully<00:22:50.720> hopefully<00:22:51.039> it's" + }, + { + "start": 1371.27, + "duration": 0.0, + "text": "don't know, hopefully hopefully it's" + }, + { + "start": 1371.28, + "duration": 0.0, + "text": "don't know, hopefully hopefully it's clear.<00:22:51.600> Hope<00:22:51.840> I<00:22:52.000> don't<00:22:52.159> fumble<00:22:52.880> it.<00:22:53.200> But<00:22:53.760> point" + }, + { + "start": 1373.99, + "duration": 0.0, + "text": "clear. Hope I don't fumble it. But point" + }, + { + "start": 1374.0, + "duration": 0.0, + "text": "clear. Hope I don't fumble it. But point being,<00:22:54.480> uh,<00:22:54.640> when<00:22:54.880> you're<00:22:55.039> attached<00:22:55.440> as<00:22:55.600> debug" + }, + { + "start": 1375.99, + "duration": 0.0, + "text": "being, uh, when you're attached as debug" + }, + { + "start": 1376.0, + "duration": 0.0, + "text": "being, uh, when you're attached as debug as<00:22:56.159> the<00:22:56.320> debugger,<00:22:56.720> the<00:22:56.799> kernel<00:22:57.120> will<00:22:57.280> report" + }, + { + "start": 1377.51, + "duration": 0.0, + "text": "as the debugger, the kernel will report" + }, + { + "start": 1377.52, + "duration": 0.0, + "text": "as the debugger, the kernel will report to<00:22:57.679> the<00:22:57.760> debugger<00:22:58.559> uh,<00:22:58.720> debug<00:22:59.039> events.<00:22:59.360> You" + }, + { + "start": 1379.51, + "duration": 0.0, + "text": "to the debugger uh, debug events. You" + }, + { + "start": 1379.52, + "duration": 0.0, + "text": "to the debugger uh, debug events. You get<00:22:59.840> sort<00:23:00.000> of<00:23:00.080> a<00:23:00.240> series<00:23:00.400> of<00:23:00.559> debug<00:23:00.960> events." + }, + { + "start": 1381.43, + "duration": 0.0, + "text": "get sort of a series of debug events." + }, + { + "start": 1381.44, + "duration": 0.0, + "text": "get sort of a series of debug events. Um,<00:23:02.799> sometimes<00:23:03.120> the<00:23:03.280> building<00:23:03.520> blocks<00:23:03.679> that" + }, + { + "start": 1383.83, + "duration": 0.0, + "text": "Um, sometimes the building blocks that" + }, + { + "start": 1383.84, + "duration": 0.0, + "text": "Um, sometimes the building blocks that the<00:23:03.919> colonel<00:23:04.159> provides<00:23:04.400> are<00:23:04.559> lower<00:23:04.799> than" + }, + { + "start": 1384.95, + "duration": 0.0, + "text": "the colonel provides are lower than" + }, + { + "start": 1384.96, + "duration": 0.0, + "text": "the colonel provides are lower than this,<00:23:05.280> but<00:23:06.240> in<00:23:06.400> principle,<00:23:06.799> this<00:23:06.960> is<00:23:07.120> sort<00:23:07.280> of" + }, + { + "start": 1387.51, + "duration": 0.0, + "text": "this, but in principle, this is sort of" + }, + { + "start": 1387.52, + "duration": 0.0, + "text": "this, but in principle, this is sort of how<00:23:07.760> it's<00:23:08.000> how<00:23:08.159> you<00:23:08.320> can<00:23:08.480> conceptualize<00:23:09.039> it." + }, + { + "start": 1389.909, + "duration": 0.0, + "text": "how it's how you can conceptualize it." + }, + { + "start": 1389.919, + "duration": 0.0, + "text": "how it's how you can conceptualize it. Um,<00:23:10.480> and<00:23:10.640> these<00:23:10.880> debug<00:23:11.200> events<00:23:11.440> include" + }, + { + "start": 1391.669, + "duration": 0.0, + "text": "Um, and these debug events include" + }, + { + "start": 1391.679, + "duration": 0.0, + "text": "Um, and these debug events include things<00:23:11.840> like,<00:23:12.080> okay,<00:23:12.240> a<00:23:12.400> thread<00:23:12.559> has<00:23:12.720> been" + }, + { + "start": 1392.789, + "duration": 0.0, + "text": "things like, okay, a thread has been" + }, + { + "start": 1392.799, + "duration": 0.0, + "text": "things like, okay, a thread has been created,<00:23:13.120> a<00:23:13.280> module<00:23:13.520> has<00:23:13.679> been<00:23:13.840> loaded," + }, + { + "start": 1395.59, + "duration": 0.0, + "text": "created, a module has been loaded," + }, + { + "start": 1395.6, + "duration": 0.0, + "text": "created, a module has been loaded, etc.<00:23:16.640> Or,<00:23:17.039> oh,<00:23:17.280> I<00:23:17.440> should<00:23:17.600> say,<00:23:17.840> this<00:23:18.000> one's" + }, + { + "start": 1398.31, + "duration": 0.0, + "text": "etc. Or, oh, I should say, this one's" + }, + { + "start": 1398.32, + "duration": 0.0, + "text": "etc. Or, oh, I should say, this one's important,<00:23:18.960> or<00:23:19.280> an<00:23:19.520> exception<00:23:19.840> has<00:23:20.080> been<00:23:20.159> hit," + }, + { + "start": 1400.549, + "duration": 0.0, + "text": "important, or an exception has been hit," + }, + { + "start": 1400.559, + "duration": 0.0, + "text": "important, or an exception has been hit, right?<00:23:21.120> Like<00:23:21.280> a<00:23:21.520> hardware<00:23:21.840> exception." + }, + { + "start": 1403.59, + "duration": 0.0, + "text": "right? Like a hardware exception." + }, + { + "start": 1403.6, + "duration": 0.0, + "text": "right? Like a hardware exception. Um,<00:23:24.000> so<00:23:24.159> the<00:23:24.400> debugger<00:23:24.799> process<00:23:25.120> control," + }, + { + "start": 1405.59, + "duration": 0.0, + "text": "Um, so the debugger process control," + }, + { + "start": 1405.6, + "duration": 0.0, + "text": "Um, so the debugger process control, like<00:23:25.760> the<00:23:25.919> piece<00:23:26.080> of<00:23:26.159> the<00:23:26.240> debugger<00:23:26.640> that's" + }, + { + "start": 1406.789, + "duration": 0.0, + "text": "like the piece of the debugger that's" + }, + { + "start": 1406.799, + "duration": 0.0, + "text": "like the piece of the debugger that's doing<00:23:26.960> process<00:23:27.280> control,<00:23:27.600> and<00:23:27.760> the<00:23:27.919> debuggy" + }, + { + "start": 1408.31, + "duration": 0.0, + "text": "doing process control, and the debuggy" + }, + { + "start": 1408.32, + "duration": 0.0, + "text": "doing process control, and the debuggy are<00:23:28.480> in<00:23:28.640> kind<00:23:28.720> of<00:23:28.799> one<00:23:28.960> of<00:23:29.120> two<00:23:29.360> states,<00:23:29.600> you" + }, + { + "start": 1409.75, + "duration": 0.0, + "text": "are in kind of one of two states, you" + }, + { + "start": 1409.76, + "duration": 0.0, + "text": "are in kind of one of two states, you can<00:23:29.840> think<00:23:30.000> of<00:23:30.080> it.<00:23:31.360> um<00:23:31.760> either<00:23:32.000> the" + }, + { + "start": 1412.149, + "duration": 0.0, + "text": "can think of it. um either the" + }, + { + "start": 1412.159, + "duration": 0.0, + "text": "can think of it. um either the debugger's<00:23:32.720> process<00:23:33.039> control<00:23:33.679> is<00:23:34.000> running" + }, + { + "start": 1415.11, + "duration": 0.0, + "text": "debugger's process control is running" + }, + { + "start": 1415.12, + "duration": 0.0, + "text": "debugger's process control is running and<00:23:35.360> the<00:23:35.520> debuggy<00:23:36.000> is<00:23:36.240> paused<00:23:37.520> or<00:23:38.000> the" + }, + { + "start": 1418.23, + "duration": 0.0, + "text": "and the debuggy is paused or the" + }, + { + "start": 1418.24, + "duration": 0.0, + "text": "and the debuggy is paused or the debugger<00:23:38.720> process<00:23:39.120> control<00:23:39.360> is<00:23:39.600> paused<00:23:40.320> and" + }, + { + "start": 1420.549, + "duration": 0.0, + "text": "debugger process control is paused and" + }, + { + "start": 1420.559, + "duration": 0.0, + "text": "debugger process control is paused and the<00:23:40.720> debug<00:23:41.360> is<00:23:41.679> running.<00:23:42.159> So<00:23:42.320> it<00:23:42.559> get<00:23:42.799> kind<00:23:42.960> of" + }, + { + "start": 1423.029, + "duration": 0.0, + "text": "the debug is running. So it get kind of" + }, + { + "start": 1423.039, + "duration": 0.0, + "text": "the debug is running. So it get kind of a<00:23:43.360> pingpong<00:23:43.919> between<00:23:44.159> these<00:23:44.400> two<00:23:44.559> states<00:23:44.799> is" + }, + { + "start": 1425.029, + "duration": 0.0, + "text": "a pingpong between these two states is" + }, + { + "start": 1425.039, + "duration": 0.0, + "text": "a pingpong between these two states is happening." + }, + { + "start": 1427.59, + "duration": 0.0, + "text": "happening." + }, + { + "start": 1427.6, + "duration": 0.0, + "text": "happening. Uh<00:23:47.840> and<00:23:48.080> this<00:23:48.240> means<00:23:48.400> that<00:23:48.720> execution<00:23:49.679> between" + }, + { + "start": 1429.909, + "duration": 0.0, + "text": "Uh and this means that execution between" + }, + { + "start": 1429.919, + "duration": 0.0, + "text": "Uh and this means that execution between a<00:23:50.080> debugger<00:23:50.480> and<00:23:50.640> debug<00:23:51.280> can<00:23:51.440> sort<00:23:51.600> of<00:23:51.679> be<00:23:52.000> you" + }, + { + "start": 1432.23, + "duration": 0.0, + "text": "a debugger and debug can sort of be you" + }, + { + "start": 1432.24, + "duration": 0.0, + "text": "a debugger and debug can sort of be you can<00:23:52.320> think<00:23:52.400> of<00:23:52.480> it<00:23:52.640> as<00:23:52.799> interled<00:23:53.280> across<00:23:53.600> time" + }, + { + "start": 1433.909, + "duration": 0.0, + "text": "can think of it as interled across time" + }, + { + "start": 1433.919, + "duration": 0.0, + "text": "can think of it as interled across time like<00:23:54.320> it's<00:23:54.559> mutually<00:23:54.960> exclusive<00:23:55.520> only<00:23:55.760> one<00:23:55.919> is" + }, + { + "start": 1436.149, + "duration": 0.0, + "text": "like it's mutually exclusive only one is" + }, + { + "start": 1436.159, + "duration": 0.0, + "text": "like it's mutually exclusive only one is really<00:23:56.400> doing<00:23:56.559> things<00:23:57.679> uh<00:23:57.760> at<00:23:58.000> a<00:23:58.159> time." + }, + { + "start": 1439.59, + "duration": 0.0, + "text": "really doing things uh at a time." + }, + { + "start": 1439.6, + "duration": 0.0, + "text": "really doing things uh at a time. This<00:23:59.840> allows<00:24:00.080> the<00:24:00.159> debugger<00:24:00.559> to<00:24:00.720> sort<00:24:00.880> of" + }, + { + "start": 1440.95, + "duration": 0.0, + "text": "This allows the debugger to sort of" + }, + { + "start": 1440.96, + "duration": 0.0, + "text": "This allows the debugger to sort of interle<00:24:01.360> its<00:24:01.600> execution<00:24:02.480> with<00:24:02.720> the<00:24:02.880> debuggy" + }, + { + "start": 1443.35, + "duration": 0.0, + "text": "interle its execution with the debuggy" + }, + { + "start": 1443.36, + "duration": 0.0, + "text": "interle its execution with the debuggy in<00:24:03.440> a<00:24:03.520> variety<00:24:03.760> of<00:24:03.840> ways.<00:24:04.080> So<00:24:04.240> this<00:24:04.400> is<00:24:04.480> how<00:24:04.640> the" + }, + { + "start": 1444.789, + "duration": 0.0, + "text": "in a variety of ways. So this is how the" + }, + { + "start": 1444.799, + "duration": 0.0, + "text": "in a variety of ways. So this is how the runtime<00:24:05.520> code<00:24:05.840> modification<00:24:06.720> actually" + }, + { + "start": 1447.029, + "duration": 0.0, + "text": "runtime code modification actually" + }, + { + "start": 1447.039, + "duration": 0.0, + "text": "runtime code modification actually works.<00:24:07.679> It's<00:24:07.919> that<00:24:08.320> the<00:24:08.559> debugger<00:24:09.120> has<00:24:09.360> the" + }, + { + "start": 1449.51, + "duration": 0.0, + "text": "works. It's that the debugger has the" + }, + { + "start": 1449.52, + "duration": 0.0, + "text": "works. It's that the debugger has the opportunity<00:24:09.840> to<00:24:10.080> sort<00:24:10.240> of<00:24:10.400> mutate<00:24:10.880> the<00:24:11.120> debug" + }, + { + "start": 1452.149, + "duration": 0.0, + "text": "opportunity to sort of mutate the debug" + }, + { + "start": 1452.159, + "duration": 0.0, + "text": "opportunity to sort of mutate the debug live<00:24:12.720> before<00:24:12.960> it<00:24:13.200> continues.<00:24:13.760> So<00:24:13.919> you<00:24:14.080> can" + }, + { + "start": 1454.31, + "duration": 0.0, + "text": "live before it continues. So you can" + }, + { + "start": 1454.32, + "duration": 0.0, + "text": "live before it continues. So you can change<00:24:14.640> how<00:24:14.799> it's<00:24:15.039> actually<00:24:15.279> executing." + }, + { + "start": 1455.99, + "duration": 0.0, + "text": "change how it's actually executing." + }, + { + "start": 1456.0, + "duration": 0.0, + "text": "change how it's actually executing. That's<00:24:16.240> how<00:24:16.400> it<00:24:16.480> avoids<00:24:16.880> the<00:24:17.120> whole<00:24:17.440> build" + }, + { + "start": 1457.75, + "duration": 0.0, + "text": "That's how it avoids the whole build" + }, + { + "start": 1457.76, + "duration": 0.0, + "text": "That's how it avoids the whole build step<00:24:18.159> alto<00:24:18.400> together.<00:24:19.360> Um" + }, + { + "start": 1461.029, + "duration": 0.0, + "text": "step alto together. Um" + }, + { + "start": 1461.039, + "duration": 0.0, + "text": "step alto together. Um now<00:24:21.200> the<00:24:21.360> granularity<00:24:21.840> here<00:24:22.000> is<00:24:22.159> somewhat" + }, + { + "start": 1462.39, + "duration": 0.0, + "text": "now the granularity here is somewhat" + }, + { + "start": 1462.4, + "duration": 0.0, + "text": "now the granularity here is somewhat subtle<00:24:23.039> and<00:24:23.279> it<00:24:23.440> varies<00:24:23.679> by<00:24:23.919> platform.<00:24:24.480> So," + }, + { + "start": 1465.029, + "duration": 0.0, + "text": "subtle and it varies by platform. So," + }, + { + "start": 1465.039, + "duration": 0.0, + "text": "subtle and it varies by platform. So, you<00:24:25.200> know,<00:24:25.360> for<00:24:25.520> example,<00:24:26.159> while<00:24:26.480> the<00:24:26.640> debuggy" + }, + { + "start": 1467.11, + "duration": 0.0, + "text": "you know, for example, while the debuggy" + }, + { + "start": 1467.12, + "duration": 0.0, + "text": "you know, for example, while the debuggy is<00:24:27.279> executing,<00:24:27.600> the<00:24:27.760> debugger<00:24:28.080> could<00:24:28.240> still" + }, + { + "start": 1468.39, + "duration": 0.0, + "text": "is executing, the debugger could still" + }, + { + "start": 1468.4, + "duration": 0.0, + "text": "is executing, the debugger could still be<00:24:28.559> doing<00:24:28.720> UI<00:24:29.200> like<00:24:30.000> um<00:24:30.480> you<00:24:30.720> know," + }, + { + "start": 1472.71, + "duration": 0.0, + "text": "be doing UI like um you know," + }, + { + "start": 1472.72, + "duration": 0.0, + "text": "be doing UI like um you know, it's<00:24:33.039> not<00:24:33.200> necessarily<00:24:34.000> exactly<00:24:34.559> that,<00:24:35.279> you" + }, + { + "start": 1475.43, + "duration": 0.0, + "text": "it's not necessarily exactly that, you" + }, + { + "start": 1475.44, + "duration": 0.0, + "text": "it's not necessarily exactly that, you know,<00:24:35.679> the<00:24:35.840> the<00:24:36.240> entire<00:24:36.559> debugger<00:24:36.960> is<00:24:37.120> stopped" + }, + { + "start": 1477.35, + "duration": 0.0, + "text": "know, the the entire debugger is stopped" + }, + { + "start": 1477.36, + "duration": 0.0, + "text": "know, the the entire debugger is stopped while<00:24:37.600> the<00:24:37.760> debuggy<00:24:38.960> uh<00:24:39.120> is<00:24:39.360> running.<00:24:40.320> Um" + }, + { + "start": 1482.149, + "duration": 0.0, + "text": "while the debuggy uh is running. Um" + }, + { + "start": 1482.159, + "duration": 0.0, + "text": "while the debuggy uh is running. Um now<00:24:42.400> on<00:24:42.640> Windows,<00:24:43.360> it<00:24:43.600> tends<00:24:43.840> to<00:24:44.000> look<00:24:44.159> a<00:24:44.320> lot" + }, + { + "start": 1484.47, + "duration": 0.0, + "text": "now on Windows, it tends to look a lot" + }, + { + "start": 1484.48, + "duration": 0.0, + "text": "now on Windows, it tends to look a lot like<00:24:44.640> this<00:24:45.120> um<00:24:45.279> because<00:24:45.520> it's<00:24:45.760> explicitly" + }, + { + "start": 1486.39, + "duration": 0.0, + "text": "like this um because it's explicitly" + }, + { + "start": 1486.4, + "duration": 0.0, + "text": "like this um because it's explicitly like<00:24:46.799> wait<00:24:47.039> for<00:24:47.200> a<00:24:47.279> debug<00:24:47.679> event<00:24:47.919> API.<00:24:48.720> Um<00:24:49.039> so" + }, + { + "start": 1489.19, + "duration": 0.0, + "text": "like wait for a debug event API. Um so" + }, + { + "start": 1489.2, + "duration": 0.0, + "text": "like wait for a debug event API. Um so in<00:24:49.360> that<00:24:49.520> case,<00:24:49.679> it's<00:24:49.919> like<00:24:50.080> your<00:24:50.240> thread<00:24:50.400> is" + }, + { + "start": 1490.63, + "duration": 0.0, + "text": "in that case, it's like your thread is" + }, + { + "start": 1490.64, + "duration": 0.0, + "text": "in that case, it's like your thread is literally<00:24:50.960> sleeping<00:24:51.279> here.<00:24:51.919> So<00:24:52.559> um<00:24:52.799> it<00:24:53.039> looks" + }, + { + "start": 1493.75, + "duration": 0.0, + "text": "literally sleeping here. So um it looks" + }, + { + "start": 1493.76, + "duration": 0.0, + "text": "literally sleeping here. So um it looks it<00:24:54.000> looks<00:24:54.240> a<00:24:54.400> lot<00:24:54.480> like<00:24:54.720> this.<00:24:55.120> Uh<00:24:55.679> but<00:24:56.080> you" + }, + { + "start": 1496.149, + "duration": 0.0, + "text": "it looks a lot like this. Uh but you" + }, + { + "start": 1496.159, + "duration": 0.0, + "text": "it looks a lot like this. Uh but you know<00:24:56.400> hope<00:24:56.640> hopefully<00:24:56.960> that's<00:24:57.200> clear<00:24:57.360> enough." + }, + { + "start": 1498.149, + "duration": 0.0, + "text": "know hope hopefully that's clear enough." + }, + { + "start": 1498.159, + "duration": 0.0, + "text": "know hope hopefully that's clear enough. Um" + }, + { + "start": 1501.11, + "duration": 0.0, + "text": "Um" + }, + { + "start": 1501.12, + "duration": 0.0, + "text": "Um so<00:25:01.679> this<00:25:01.919> interled<00:25:02.720> uh<00:25:02.880> execution<00:25:03.760> like<00:25:03.919> I" + }, + { + "start": 1504.07, + "duration": 0.0, + "text": "so this interled uh execution like I" + }, + { + "start": 1504.08, + "duration": 0.0, + "text": "so this interled uh execution like I said<00:25:04.480> the<00:25:04.720> debugger<00:25:05.120> can<00:25:05.200> do<00:25:05.279> a<00:25:05.440> bunch<00:25:05.600> of" + }, + { + "start": 1505.669, + "duration": 0.0, + "text": "said the debugger can do a bunch of" + }, + { + "start": 1505.679, + "duration": 0.0, + "text": "said the debugger can do a bunch of things<00:25:06.080> like<00:25:06.880> read<00:25:07.440> registers,<00:25:08.080> write" + }, + { + "start": 1508.39, + "duration": 0.0, + "text": "things like read registers, write" + }, + { + "start": 1508.4, + "duration": 0.0, + "text": "things like read registers, write registers,<00:25:09.440> read<00:25:09.760> debug<00:25:10.159> events<00:25:10.559> or<00:25:10.880> obtain" + }, + { + "start": 1511.269, + "duration": 0.0, + "text": "registers, read debug events or obtain" + }, + { + "start": 1511.279, + "duration": 0.0, + "text": "registers, read debug events or obtain debug<00:25:11.679> events," + }, + { + "start": 1514.149, + "duration": 0.0, + "text": "debug events," + }, + { + "start": 1514.159, + "duration": 0.0, + "text": "debug events, read<00:25:14.400> memory,<00:25:15.120> write<00:25:15.360> memory" + }, + { + "start": 1517.11, + "duration": 0.0, + "text": "read memory, write memory" + }, + { + "start": 1517.12, + "duration": 0.0, + "text": "read memory, write memory um<00:25:17.520> and<00:25:17.760> so<00:25:17.919> on.<00:25:18.640> Uh<00:25:19.039> and<00:25:19.279> then<00:25:19.679> you<00:25:19.840> know<00:25:20.080> from" + }, + { + "start": 1520.549, + "duration": 0.0, + "text": "um and so on. Uh and then you know from" + }, + { + "start": 1520.559, + "duration": 0.0, + "text": "um and so on. Uh and then you know from the" + }, + { + "start": 1522.31, + "duration": 0.0, + "text": "the" + }, + { + "start": 1522.32, + "duration": 0.0, + "text": "the well<00:25:22.559> that<00:25:22.799> covers<00:25:23.039> all<00:25:23.120> of<00:25:23.200> it<00:25:23.360> right<00:25:23.600> read" + }, + { + "start": 1523.75, + "duration": 0.0, + "text": "well that covers all of it right read" + }, + { + "start": 1523.76, + "duration": 0.0, + "text": "well that covers all of it right read and<00:25:23.919> write<00:25:24.159> is<00:25:24.559> reading<00:25:24.960> is<00:25:25.039> is<00:25:25.360> the<00:25:25.520> blue<00:25:25.760> and" + }, + { + "start": 1525.99, + "duration": 0.0, + "text": "and write is reading is is the blue and" + }, + { + "start": 1526.0, + "duration": 0.0, + "text": "and write is reading is is the blue and then<00:25:26.640> writing<00:25:26.960> is<00:25:27.120> the<00:25:27.279> orange<00:25:27.600> right?" + }, + { + "start": 1530.07, + "duration": 0.0, + "text": "then writing is the orange right?" + }, + { + "start": 1530.08, + "duration": 0.0, + "text": "then writing is the orange right? So<00:25:30.640> we<00:25:30.880> know<00:25:30.960> that<00:25:31.120> a<00:25:31.279> debugger<00:25:31.840> can<00:25:32.080> read" + }, + { + "start": 1532.31, + "duration": 0.0, + "text": "So we know that a debugger can read" + }, + { + "start": 1532.32, + "duration": 0.0, + "text": "So we know that a debugger can read registers<00:25:32.799> in<00:25:32.960> memory<00:25:33.440> which<00:25:33.600> is<00:25:33.760> really<00:25:33.919> the" + }, + { + "start": 1534.07, + "duration": 0.0, + "text": "registers in memory which is really the" + }, + { + "start": 1534.08, + "duration": 0.0, + "text": "registers in memory which is really the main<00:25:34.240> building<00:25:34.559> block<00:25:35.279> for<00:25:35.520> like<00:25:35.760> extracting" + }, + { + "start": 1536.31, + "duration": 0.0, + "text": "main building block for like extracting" + }, + { + "start": 1536.32, + "duration": 0.0, + "text": "main building block for like extracting information<00:25:36.720> out<00:25:36.880> of<00:25:36.960> a<00:25:37.200> process<00:25:37.520> right<00:25:37.679> you" + }, + { + "start": 1537.83, + "duration": 0.0, + "text": "information out of a process right you" + }, + { + "start": 1537.84, + "duration": 0.0, + "text": "information out of a process right you kind<00:25:38.000> of<00:25:38.159> you<00:25:38.400> can<00:25:38.480> read<00:25:38.720> memory<00:25:39.760> right<00:25:40.080> and<00:25:40.240> so" + }, + { + "start": 1540.47, + "duration": 0.0, + "text": "kind of you can read memory right and so" + }, + { + "start": 1540.48, + "duration": 0.0, + "text": "kind of you can read memory right and so like<00:25:40.640> all<00:25:40.799> we<00:25:40.960> need<00:25:41.120> is<00:25:41.360> to<00:25:41.520> like<00:25:41.679> ask<00:25:41.919> the<00:25:42.080> user" + }, + { + "start": 1542.23, + "duration": 0.0, + "text": "like all we need is to like ask the user" + }, + { + "start": 1542.24, + "duration": 0.0, + "text": "like all we need is to like ask the user for<00:25:42.400> an<00:25:42.559> address<00:25:43.039> you<00:25:43.120> know<00:25:43.279> ask<00:25:43.520> them<00:25:43.679> for<00:25:43.760> a" + }, + { + "start": 1543.909, + "duration": 0.0, + "text": "for an address you know ask them for a" + }, + { + "start": 1543.919, + "duration": 0.0, + "text": "for an address you know ask them for a size<00:25:44.080> and<00:25:44.240> then<00:25:44.320> we<00:25:44.400> just<00:25:44.559> show<00:25:44.640> them<00:25:44.720> the" + }, + { + "start": 1544.87, + "duration": 0.0, + "text": "size and then we just show them the" + }, + { + "start": 1544.88, + "duration": 0.0, + "text": "size and then we just show them the bytes<00:25:45.120> and<00:25:45.200> then<00:25:45.360> we're<00:25:45.440> done<00:25:45.679> right" + }, + { + "start": 1545.909, + "duration": 0.0, + "text": "bytes and then we're done right" + }, + { + "start": 1545.919, + "duration": 0.0, + "text": "bytes and then we're done right visualization<00:25:47.120> the<00:25:47.360> end<00:25:48.400> um<00:25:49.360> obviously<00:25:49.679> not" + }, + { + "start": 1549.99, + "duration": 0.0, + "text": "visualization the end um obviously not" + }, + { + "start": 1550.0, + "duration": 0.0, + "text": "visualization the end um obviously not as<00:25:50.159> the<00:25:50.400> user<00:25:50.880> you<00:25:51.039> don't<00:25:51.200> want<00:25:51.279> to<00:25:51.360> ask<00:25:51.600> about" + }, + { + "start": 1551.83, + "duration": 0.0, + "text": "as the user you don't want to ask about" + }, + { + "start": 1551.84, + "duration": 0.0, + "text": "as the user you don't want to ask about address<00:25:52.400> uh<00:25:52.559> what<00:25:52.799> what<00:25:52.960> did<00:25:53.120> I<00:25:53.279> write<00:25:53.679> 0x1<00:25:54.559> f4" + }, + { + "start": 1555.11, + "duration": 0.0, + "text": "address uh what what did I write 0x1 f4" + }, + { + "start": 1555.12, + "duration": 0.0, + "text": "address uh what what did I write 0x1 f4 3<00:25:55.440> b5<00:25:55.919> c<00:25:56.159> 0<00:25:56.640> b<00:25:56.799> 0" + }, + { + "start": 1558.47, + "duration": 0.0, + "text": "3 b5 c 0 b 0" + }, + { + "start": 1558.48, + "duration": 0.0, + "text": "3 b5 c 0 b 0 you<00:25:58.640> wanted<00:25:58.880> to<00:25:58.960> ask<00:25:59.120> about<00:25:59.440> X" + }, + { + "start": 1561.43, + "duration": 0.0, + "text": "you wanted to ask about X" + }, + { + "start": 1561.44, + "duration": 0.0, + "text": "you wanted to ask about X and<00:26:01.679> ideally<00:26:02.080> the<00:26:02.240> system<00:26:02.480> which<00:26:03.039> allows<00:26:03.279> you" + }, + { + "start": 1563.43, + "duration": 0.0, + "text": "and ideally the system which allows you" + }, + { + "start": 1563.44, + "duration": 0.0, + "text": "and ideally the system which allows you to<00:26:03.600> ask<00:26:03.760> about<00:26:03.919> X<00:26:04.720> is<00:26:05.039> flexible<00:26:05.520> enough<00:26:06.480> such" + }, + { + "start": 1566.71, + "duration": 0.0, + "text": "to ask about X is flexible enough such" + }, + { + "start": 1566.72, + "duration": 0.0, + "text": "to ask about X is flexible enough such that<00:26:07.039> X<00:26:07.279> is<00:26:07.520> a<00:26:07.679> large<00:26:08.000> set<00:26:08.159> of<00:26:08.240> expressions.<00:26:08.720> It" + }, + { + "start": 1568.789, + "duration": 0.0, + "text": "that X is a large set of expressions. It" + }, + { + "start": 1568.799, + "duration": 0.0, + "text": "that X is a large set of expressions. It could<00:26:08.960> be<00:26:09.200> it<00:26:09.360> could<00:26:09.520> be<00:26:09.679> many<00:26:09.919> things<00:26:10.000> you" + }, + { + "start": 1570.23, + "duration": 0.0, + "text": "could be it could be many things you" + }, + { + "start": 1570.24, + "duration": 0.0, + "text": "could be it could be many things you could<00:26:10.320> ask<00:26:10.480> about<00:26:10.720> your<00:26:10.880> program." + }, + { + "start": 1573.35, + "duration": 0.0, + "text": "could ask about your program." + }, + { + "start": 1573.36, + "duration": 0.0, + "text": "could ask about your program. Um<00:26:13.760> debuggers<00:26:14.240> know<00:26:14.320> how<00:26:14.400> to<00:26:14.559> evaluate" + }, + { + "start": 1574.87, + "duration": 0.0, + "text": "Um debuggers know how to evaluate" + }, + { + "start": 1574.88, + "duration": 0.0, + "text": "Um debuggers know how to evaluate something<00:26:15.120> like<00:26:15.279> X<00:26:16.240> through<00:26:17.039> uh<00:26:17.200> an<00:26:17.440> evalu<00:26:18.080> uh" + }, + { + "start": 1578.23, + "duration": 0.0, + "text": "something like X through uh an evalu uh" + }, + { + "start": 1578.24, + "duration": 0.0, + "text": "something like X through uh an evalu uh an<00:26:18.480> expression<00:26:18.960> evaluation<00:26:19.600> system.<00:26:20.559> And" + }, + { + "start": 1580.71, + "duration": 0.0, + "text": "an expression evaluation system. And" + }, + { + "start": 1580.72, + "duration": 0.0, + "text": "an expression evaluation system. And this<00:26:20.880> is<00:26:20.960> where<00:26:21.120> all<00:26:21.279> the<00:26:21.440> visualization" + }, + { + "start": 1581.99, + "duration": 0.0, + "text": "this is where all the visualization" + }, + { + "start": 1582.0, + "duration": 0.0, + "text": "this is where all the visualization stuff<00:26:22.240> starts<00:26:22.640> kind<00:26:22.799> of<00:26:22.880> piecing<00:26:23.279> together." + }, + { + "start": 1583.669, + "duration": 0.0, + "text": "stuff starts kind of piecing together." + }, + { + "start": 1583.679, + "duration": 0.0, + "text": "stuff starts kind of piecing together. So<00:26:23.840> let's<00:26:24.000> dig<00:26:24.159> into<00:26:24.400> that." + }, + { + "start": 1586.39, + "duration": 0.0, + "text": "So let's dig into that." + }, + { + "start": 1586.4, + "duration": 0.0, + "text": "So let's dig into that. Evaluating<00:26:27.039> expressions,<00:26:27.679> it's<00:26:27.919> just<00:26:28.080> a" + }, + { + "start": 1588.23, + "duration": 0.0, + "text": "Evaluating expressions, it's just a" + }, + { + "start": 1588.24, + "duration": 0.0, + "text": "Evaluating expressions, it's just a compiler.<00:26:28.720> It's<00:26:28.880> just<00:26:29.039> a<00:26:29.200> compiler<00:26:29.600> problem." + }, + { + "start": 1590.149, + "duration": 0.0, + "text": "compiler. It's just a compiler problem." + }, + { + "start": 1590.159, + "duration": 0.0, + "text": "compiler. It's just a compiler problem. Normal<00:26:30.480> compiler<00:26:30.960> problem.<00:26:31.200> We<00:26:31.360> know<00:26:31.440> how<00:26:31.600> to" + }, + { + "start": 1591.669, + "duration": 0.0, + "text": "Normal compiler problem. We know how to" + }, + { + "start": 1591.679, + "duration": 0.0, + "text": "Normal compiler problem. We know how to solve<00:26:31.919> those.<00:26:32.400> If<00:26:32.640> we<00:26:32.799> have<00:26:32.880> some<00:26:33.360> textual" + }, + { + "start": 1593.909, + "duration": 0.0, + "text": "solve those. If we have some textual" + }, + { + "start": 1593.919, + "duration": 0.0, + "text": "solve those. If we have some textual expression<00:26:34.400> like<00:26:34.640> entity.targets<00:26:35.840> at<00:26:36.080> five," + }, + { + "start": 1597.269, + "duration": 0.0, + "text": "expression like entity.targets at five," + }, + { + "start": 1597.279, + "duration": 0.0, + "text": "expression like entity.targets at five, the<00:26:37.520> first<00:26:37.679> step<00:26:37.840> we<00:26:38.080> can<00:26:38.159> use<00:26:38.320> to<00:26:38.480> understand" + }, + { + "start": 1598.789, + "duration": 0.0, + "text": "the first step we can use to understand" + }, + { + "start": 1598.799, + "duration": 0.0, + "text": "the first step we can use to understand that<00:26:39.039> expression<00:26:40.400> is<00:26:40.640> to<00:26:40.799> parse<00:26:41.039> it<00:26:41.440> into<00:26:41.679> a" + }, + { + "start": 1601.83, + "duration": 0.0, + "text": "that expression is to parse it into a" + }, + { + "start": 1601.84, + "duration": 0.0, + "text": "that expression is to parse it into a structured<00:26:42.240> representation.<00:26:43.279> Now<00:26:43.600> Sam<00:26:44.159> has" + }, + { + "start": 1604.39, + "duration": 0.0, + "text": "structured representation. Now Sam has" + }, + { + "start": 1604.4, + "duration": 0.0, + "text": "structured representation. Now Sam has some<00:26:44.640> opinions<00:26:46.080> that<00:26:46.400> will<00:26:47.039> invalidate<00:26:47.840> what" + }, + { + "start": 1608.07, + "duration": 0.0, + "text": "some opinions that will invalidate what" + }, + { + "start": 1608.08, + "duration": 0.0, + "text": "some opinions that will invalidate what what<00:26:48.240> I<00:26:48.400> say<00:26:48.720> maybe,<00:26:48.960> but<00:26:49.279> but<00:26:49.600> you<00:26:49.679> know<00:26:49.840> the" + }, + { + "start": 1609.99, + "duration": 0.0, + "text": "what I say maybe, but but you know the" + }, + { + "start": 1610.0, + "duration": 0.0, + "text": "what I say maybe, but but you know the traditional<00:26:50.320> pipeline<00:26:50.720> is<00:26:50.880> like<00:26:51.039> okay,<00:26:51.279> first" + }, + { + "start": 1611.43, + "duration": 0.0, + "text": "traditional pipeline is like okay, first" + }, + { + "start": 1611.44, + "duration": 0.0, + "text": "traditional pipeline is like okay, first you're<00:26:51.600> going<00:26:51.600> to<00:26:51.760> parse<00:26:51.919> it<00:26:52.080> into<00:26:52.240> some<00:26:52.400> sort" + }, + { + "start": 1612.47, + "duration": 0.0, + "text": "you're going to parse it into some sort" + }, + { + "start": 1612.48, + "duration": 0.0, + "text": "you're going to parse it into some sort of<00:26:52.559> abstract<00:26:52.960> syntax<00:26:53.360> tree<00:26:53.679> structure.<00:26:54.640> Um," + }, + { + "start": 1615.029, + "duration": 0.0, + "text": "of abstract syntax tree structure. Um," + }, + { + "start": 1615.039, + "duration": 0.0, + "text": "of abstract syntax tree structure. Um, you<00:26:55.200> know,<00:26:55.279> in<00:26:55.440> this<00:26:55.600> case,<00:26:56.080> not<00:26:56.320> surprising," + }, + { + "start": 1617.11, + "duration": 0.0, + "text": "you know, in this case, not surprising," + }, + { + "start": 1617.12, + "duration": 0.0, + "text": "you know, in this case, not surprising, square<00:26:57.440> brackets<00:26:57.760> at<00:26:57.919> the<00:26:58.000> top,<00:26:58.240> five<00:26:58.480> on<00:26:58.640> the" + }, + { + "start": 1618.789, + "duration": 0.0, + "text": "square brackets at the top, five on the" + }, + { + "start": 1618.799, + "duration": 0.0, + "text": "square brackets at the top, five on the right,<00:26:59.039> dot<00:26:59.279> operator<00:26:59.679> on<00:26:59.840> the<00:26:59.919> left," + }, + { + "start": 1620.149, + "duration": 0.0, + "text": "right, dot operator on the left," + }, + { + "start": 1620.159, + "duration": 0.0, + "text": "right, dot operator on the left, entity.targets" + }, + { + "start": 1621.909, + "duration": 0.0, + "text": "entity.targets" + }, + { + "start": 1621.919, + "duration": 0.0, + "text": "entity.targets for<00:27:02.080> the<00:27:02.240> children<00:27:02.480> of<00:27:02.559> the<00:27:02.720> dot<00:27:02.960> operator." + }, + { + "start": 1625.51, + "duration": 0.0, + "text": "for the children of the dot operator." + }, + { + "start": 1625.52, + "duration": 0.0, + "text": "for the children of the dot operator. From<00:27:05.760> there,<00:27:06.720> um,<00:27:07.039> you<00:27:07.279> know,<00:27:07.760> you<00:27:07.919> can" + }, + { + "start": 1628.07, + "duration": 0.0, + "text": "From there, um, you know, you can" + }, + { + "start": 1628.08, + "duration": 0.0, + "text": "From there, um, you know, you can evaluate<00:27:08.400> types<00:27:08.720> for<00:27:08.799> the<00:27:08.880> abstract<00:27:09.279> syntax" + }, + { + "start": 1629.51, + "duration": 0.0, + "text": "evaluate types for the abstract syntax" + }, + { + "start": 1629.52, + "duration": 0.0, + "text": "evaluate types for the abstract syntax tree.<00:27:09.760> You<00:27:09.840> can<00:27:09.919> type<00:27:10.159> check<00:27:10.320> it,<00:27:10.799> you<00:27:10.960> can" + }, + { + "start": 1631.11, + "duration": 0.0, + "text": "tree. You can type check it, you can" + }, + { + "start": 1631.12, + "duration": 0.0, + "text": "tree. You can type check it, you can interpret<00:27:11.520> it,<00:27:12.000> or<00:27:12.240> you<00:27:12.400> can<00:27:12.480> produce<00:27:12.799> any" + }, + { + "start": 1632.95, + "duration": 0.0, + "text": "interpret it, or you can produce any" + }, + { + "start": 1632.96, + "duration": 0.0, + "text": "interpret it, or you can produce any intermediate<00:27:13.520> representation<00:27:14.240> that<00:27:14.480> you" + }, + { + "start": 1634.71, + "duration": 0.0, + "text": "intermediate representation that you" + }, + { + "start": 1634.72, + "duration": 0.0, + "text": "intermediate representation that you need.<00:27:15.520> Um,<00:27:15.760> you<00:27:15.919> can<00:27:16.000> lower<00:27:16.240> down<00:27:16.400> to<00:27:16.559> bite" + }, + { + "start": 1636.789, + "duration": 0.0, + "text": "need. Um, you can lower down to bite" + }, + { + "start": 1636.799, + "duration": 0.0, + "text": "need. Um, you can lower down to bite code.<00:27:17.279> You<00:27:17.440> could<00:27:17.520> even<00:27:17.679> lower<00:27:17.919> down<00:27:18.080> to" + }, + { + "start": 1638.149, + "duration": 0.0, + "text": "code. You could even lower down to" + }, + { + "start": 1638.159, + "duration": 0.0, + "text": "code. You could even lower down to native<00:27:18.559> code.<00:27:19.679> In<00:27:19.919> this<00:27:20.080> particular<00:27:20.480> case,<00:27:21.120> if" + }, + { + "start": 1641.35, + "duration": 0.0, + "text": "native code. In this particular case, if" + }, + { + "start": 1641.36, + "duration": 0.0, + "text": "native code. In this particular case, if we<00:27:21.520> boil<00:27:21.919> down<00:27:22.159> to<00:27:22.400> like<00:27:22.559> a<00:27:22.799> simple<00:27:23.120> sort<00:27:23.279> of" + }, + { + "start": 1643.43, + "duration": 0.0, + "text": "we boil down to like a simple sort of" + }, + { + "start": 1643.44, + "duration": 0.0, + "text": "we boil down to like a simple sort of stack<00:27:23.760> machine<00:27:24.400> like<00:27:24.640> intermediate" + }, + { + "start": 1645.11, + "duration": 0.0, + "text": "stack machine like intermediate" + }, + { + "start": 1645.12, + "duration": 0.0, + "text": "stack machine like intermediate representation<00:27:25.600> bite<00:27:25.919> code<00:27:26.400> uh<00:27:26.640> like<00:27:26.960> format" + }, + { + "start": 1648.549, + "duration": 0.0, + "text": "representation bite code uh like format" + }, + { + "start": 1648.559, + "duration": 0.0, + "text": "representation bite code uh like format um<00:27:29.360> you<00:27:29.520> know<00:27:29.760> not<00:27:30.000> that<00:27:30.159> surprising<00:27:30.960> push<00:27:31.200> the" + }, + { + "start": 1651.35, + "duration": 0.0, + "text": "um you know not that surprising push the" + }, + { + "start": 1651.36, + "duration": 0.0, + "text": "um you know not that surprising push the address<00:27:31.679> of<00:27:31.760> entity<00:27:32.080> add<00:27:32.240> the<00:27:32.320> offset<00:27:32.640> of" + }, + { + "start": 1652.789, + "duration": 0.0, + "text": "address of entity add the offset of" + }, + { + "start": 1652.799, + "duration": 0.0, + "text": "address of entity add the offset of targets<00:27:33.360> add<00:27:33.600> five<00:27:33.840> times<00:27:34.240> you<00:27:34.400> know<00:27:34.480> the" + }, + { + "start": 1654.63, + "duration": 0.0, + "text": "targets add five times you know the" + }, + { + "start": 1654.64, + "duration": 0.0, + "text": "targets add five times you know the element<00:27:34.960> size<00:27:35.120> of<00:27:35.279> whatever<00:27:35.520> this<00:27:35.679> array<00:27:35.919> is" + }, + { + "start": 1656.23, + "duration": 0.0, + "text": "element size of whatever this array is" + }, + { + "start": 1656.24, + "duration": 0.0, + "text": "element size of whatever this array is and<00:27:36.400> then<00:27:36.559> you<00:27:36.640> pop<00:27:36.880> and<00:27:36.960> that's<00:27:37.120> your<00:27:37.279> address" + }, + { + "start": 1657.59, + "duration": 0.0, + "text": "and then you pop and that's your address" + }, + { + "start": 1657.6, + "duration": 0.0, + "text": "and then you pop and that's your address of<00:27:37.760> entity.target<00:27:38.320> target<00:27:38.559> set<00:27:38.880> five" + }, + { + "start": 1660.47, + "duration": 0.0, + "text": "of entity.target target set five" + }, + { + "start": 1660.48, + "duration": 0.0, + "text": "of entity.target target set five and<00:27:40.720> then<00:27:40.960> obviously<00:27:41.279> to<00:27:41.440> compute<00:27:41.760> the<00:27:41.919> value" + }, + { + "start": 1662.07, + "duration": 0.0, + "text": "and then obviously to compute the value" + }, + { + "start": 1662.08, + "duration": 0.0, + "text": "and then obviously to compute the value of<00:27:42.240> something<00:27:42.400> you<00:27:42.559> just<00:27:42.720> read<00:27:42.880> from<00:27:43.039> whatever" + }, + { + "start": 1663.35, + "duration": 0.0, + "text": "of something you just read from whatever" + }, + { + "start": 1663.36, + "duration": 0.0, + "text": "of something you just read from whatever that<00:27:43.520> address<00:27:43.840> is<00:27:44.240> because<00:27:44.559> the<00:27:44.799> debugger<00:27:45.200> can" + }, + { + "start": 1665.35, + "duration": 0.0, + "text": "that address is because the debugger can" + }, + { + "start": 1665.36, + "duration": 0.0, + "text": "that address is because the debugger can do<00:27:45.520> that<00:27:45.919> and<00:27:46.159> then<00:27:46.559> you've<00:27:46.799> got<00:27:46.960> your<00:27:47.200> value." + }, + { + "start": 1669.43, + "duration": 0.0, + "text": "do that and then you've got your value." + }, + { + "start": 1669.44, + "duration": 0.0, + "text": "do that and then you've got your value. So<00:27:49.600> the<00:27:49.760> full<00:27:50.000> pipeline<00:27:50.720> might<00:27:50.960> look" + }, + { + "start": 1671.19, + "duration": 0.0, + "text": "So the full pipeline might look" + }, + { + "start": 1671.2, + "duration": 0.0, + "text": "So the full pipeline might look something<00:27:51.360> like<00:27:51.520> this<00:27:52.320> and<00:27:52.559> we<00:27:52.799> can<00:27:52.960> call<00:27:53.200> that" + }, + { + "start": 1673.51, + "duration": 0.0, + "text": "something like this and we can call that" + }, + { + "start": 1673.52, + "duration": 0.0, + "text": "something like this and we can call that an<00:27:53.760> evaluation.<00:27:54.960> Um<00:27:55.279> so<00:27:55.440> you<00:27:55.600> start<00:27:55.679> with<00:27:55.840> the" + }, + { + "start": 1675.99, + "duration": 0.0, + "text": "an evaluation. Um so you start with the" + }, + { + "start": 1676.0, + "duration": 0.0, + "text": "an evaluation. Um so you start with the text<00:27:56.159> you<00:27:56.240> get<00:27:56.320> an<00:27:56.480> abstract<00:27:56.799> syntax<00:27:57.200> tree<00:27:57.919> you" + }, + { + "start": 1678.07, + "duration": 0.0, + "text": "text you get an abstract syntax tree you" + }, + { + "start": 1678.08, + "duration": 0.0, + "text": "text you get an abstract syntax tree you get<00:27:58.240> an<00:27:58.480> intermediate<00:27:58.960> representation<00:27:59.840> you" + }, + { + "start": 1679.909, + "duration": 0.0, + "text": "get an intermediate representation you" + }, + { + "start": 1679.919, + "duration": 0.0, + "text": "get an intermediate representation you know<00:28:00.000> a<00:28:00.240> type<00:28:00.720> pops<00:28:01.039> out<00:28:01.600> and<00:28:01.840> you<00:28:02.000> get<00:28:02.159> a<00:28:02.559> uh" + }, + { + "start": 1682.789, + "duration": 0.0, + "text": "know a type pops out and you get a uh" + }, + { + "start": 1682.799, + "duration": 0.0, + "text": "know a type pops out and you get a uh value<00:28:03.520> finally<00:28:03.919> at<00:28:04.080> the<00:28:04.240> end." + }, + { + "start": 1686.07, + "duration": 0.0, + "text": "value finally at the end." + }, + { + "start": 1686.08, + "duration": 0.0, + "text": "value finally at the end. But<00:28:06.320> how<00:28:06.399> does<00:28:06.559> our<00:28:06.960> compiler<00:28:08.000> know<00:28:08.240> what<00:28:08.399> the" + }, + { + "start": 1688.63, + "duration": 0.0, + "text": "But how does our compiler know what the" + }, + { + "start": 1688.64, + "duration": 0.0, + "text": "But how does our compiler know what the address<00:28:08.880> of<00:28:09.039> entity<00:28:09.360> is?<00:28:09.679> Like<00:28:09.919> what<00:28:10.080> was" + }, + { + "start": 1690.23, + "duration": 0.0, + "text": "address of entity is? Like what was" + }, + { + "start": 1690.24, + "duration": 0.0, + "text": "address of entity is? Like what was that?<00:28:10.640> And<00:28:10.880> how<00:28:11.039> do<00:28:11.200> we<00:28:11.600> we<00:28:12.000> like<00:28:12.240> the<00:28:12.399> com<00:28:12.640> our" + }, + { + "start": 1692.95, + "duration": 0.0, + "text": "that? And how do we we like the com our" + }, + { + "start": 1692.96, + "duration": 0.0, + "text": "that? And how do we we like the com our compiler<00:28:13.679> really<00:28:13.919> wants<00:28:14.159> to<00:28:14.320> talk<00:28:14.480> about<00:28:14.720> the" + }, + { + "start": 1694.95, + "duration": 0.0, + "text": "compiler really wants to talk about the" + }, + { + "start": 1694.96, + "duration": 0.0, + "text": "compiler really wants to talk about the same<00:28:15.200> things<00:28:15.840> that<00:28:16.159> the<00:28:16.480> actual<00:28:16.880> program" + }, + { + "start": 1697.269, + "duration": 0.0, + "text": "same things that the actual program" + }, + { + "start": 1697.279, + "duration": 0.0, + "text": "same things that the actual program compiler<00:28:18.240> talked<00:28:18.480> about<00:28:18.720> like<00:28:18.880> the<00:28:18.960> thing" + }, + { + "start": 1699.11, + "duration": 0.0, + "text": "compiler talked about like the thing" + }, + { + "start": 1699.12, + "duration": 0.0, + "text": "compiler talked about like the thing you're<00:28:19.440> interacting<00:28:19.840> with<00:28:20.000> when<00:28:20.240> you<00:28:20.320> write" + }, + { + "start": 1700.47, + "duration": 0.0, + "text": "you're interacting with when you write" + }, + { + "start": 1700.48, + "duration": 0.0, + "text": "you're interacting with when you write the<00:28:20.640> code.<00:28:21.200> You<00:28:21.440> the<00:28:21.679> debugger<00:28:22.159> wanted<00:28:22.399> to" + }, + { + "start": 1702.549, + "duration": 0.0, + "text": "the code. You the debugger wanted to" + }, + { + "start": 1702.559, + "duration": 0.0, + "text": "the code. You the debugger wanted to talk<00:28:22.799> about<00:28:23.039> that<00:28:23.360> stuff<00:28:24.000> too.<00:28:24.640> And<00:28:24.799> we<00:28:24.960> can<00:28:25.120> do" + }, + { + "start": 1705.19, + "duration": 0.0, + "text": "talk about that stuff too. And we can do" + }, + { + "start": 1705.2, + "duration": 0.0, + "text": "talk about that stuff too. And we can do that<00:28:25.679> with<00:28:26.000> debug<00:28:26.320> info<00:28:26.880> which<00:28:27.120> is<00:28:27.279> provided" + }, + { + "start": 1707.51, + "duration": 0.0, + "text": "that with debug info which is provided" + }, + { + "start": 1707.52, + "duration": 0.0, + "text": "that with debug info which is provided to<00:28:27.679> us<00:28:27.840> by<00:28:28.000> the<00:28:28.159> compiler<00:28:28.559> and<00:28:28.640> linker." + }, + { + "start": 1711.43, + "duration": 0.0, + "text": "to us by the compiler and linker." + }, + { + "start": 1711.44, + "duration": 0.0, + "text": "to us by the compiler and linker. Whoops." + }, + { + "start": 1713.269, + "duration": 0.0, + "text": "Whoops." + }, + { + "start": 1713.279, + "duration": 0.0, + "text": "Whoops. Okay.<00:28:34.559> So<00:28:34.880> debug<00:28:35.279> info<00:28:35.919> contains<00:28:36.320> a<00:28:36.640> like<00:28:36.799> a" + }, + { + "start": 1716.95, + "duration": 0.0, + "text": "Okay. So debug info contains a like a" + }, + { + "start": 1716.96, + "duration": 0.0, + "text": "Okay. So debug info contains a like a ton<00:28:37.120> of<00:28:37.279> stuff<00:28:37.520> like<00:28:37.679> there's<00:28:37.919> just<00:28:38.080> tons<00:28:38.240> of" + }, + { + "start": 1718.389, + "duration": 0.0, + "text": "ton of stuff like there's just tons of" + }, + { + "start": 1718.399, + "duration": 0.0, + "text": "ton of stuff like there's just tons of stuff<00:28:38.559> in<00:28:38.720> there.<00:28:39.200> I'm<00:28:39.360> not<00:28:39.520> going<00:28:39.600> to<00:28:39.679> cover" + }, + { + "start": 1719.83, + "duration": 0.0, + "text": "stuff in there. I'm not going to cover" + }, + { + "start": 1719.84, + "duration": 0.0, + "text": "stuff in there. I'm not going to cover all<00:28:40.000> of<00:28:40.159> it.<00:28:40.640> Um<00:28:41.039> but<00:28:41.279> you<00:28:41.440> can<00:28:41.520> think<00:28:41.679> of<00:28:41.840> it<00:28:42.000> as" + }, + { + "start": 1722.23, + "duration": 0.0, + "text": "all of it. Um but you can think of it as" + }, + { + "start": 1722.24, + "duration": 0.0, + "text": "all of it. Um but you can think of it as sort<00:28:42.320> of<00:28:42.399> a<00:28:42.640> serialization<00:28:43.919> of<00:28:44.159> what<00:28:44.320> the" + }, + { + "start": 1724.47, + "duration": 0.0, + "text": "sort of a serialization of what the" + }, + { + "start": 1724.48, + "duration": 0.0, + "text": "sort of a serialization of what the compiler<00:28:44.880> and<00:28:45.039> linker<00:28:45.440> did<00:28:45.679> to<00:28:45.919> turn<00:28:46.320> your" + }, + { + "start": 1726.47, + "duration": 0.0, + "text": "compiler and linker did to turn your" + }, + { + "start": 1726.48, + "duration": 0.0, + "text": "compiler and linker did to turn your highle<00:28:46.960> source<00:28:47.200> code<00:28:47.919> into<00:28:49.120> your" + }, + { + "start": 1731.11, + "duration": 0.0, + "text": "highle source code into your" + }, + { + "start": 1731.12, + "duration": 0.0, + "text": "highle source code into your final<00:28:51.760> uh<00:28:52.000> you<00:28:52.159> know<00:28:52.320> executable<00:28:52.799> images" + }, + { + "start": 1733.19, + "duration": 0.0, + "text": "final uh you know executable images" + }, + { + "start": 1733.2, + "duration": 0.0, + "text": "final uh you know executable images right<00:28:54.159> so<00:28:54.399> it's<00:28:54.559> sort<00:28:54.640> of<00:28:54.720> a<00:28:54.880> recording<00:28:55.200> of" + }, + { + "start": 1735.35, + "duration": 0.0, + "text": "right so it's sort of a recording of" + }, + { + "start": 1735.36, + "duration": 0.0, + "text": "right so it's sort of a recording of like<00:28:55.520> what<00:28:55.679> work<00:28:56.000> happened<00:28:56.640> if<00:28:56.799> that<00:28:57.039> makes" + }, + { + "start": 1737.19, + "duration": 0.0, + "text": "like what work happened if that makes" + }, + { + "start": 1737.2, + "duration": 0.0, + "text": "like what work happened if that makes sense." + }, + { + "start": 1738.389, + "duration": 0.0, + "text": "sense." + }, + { + "start": 1738.399, + "duration": 0.0, + "text": "sense. Um<00:28:59.120> so<00:28:59.600> one<00:28:59.840> thing<00:28:59.919> that<00:29:00.159> debug<00:29:00.559> info<00:29:00.799> has" + }, + { + "start": 1741.029, + "duration": 0.0, + "text": "Um so one thing that debug info has" + }, + { + "start": 1741.039, + "duration": 0.0, + "text": "Um so one thing that debug info has which<00:29:01.200> I<00:29:01.360> don't<00:29:01.520> cover<00:29:01.679> here<00:29:01.840> because<00:29:02.080> it's" + }, + { + "start": 1742.23, + "duration": 0.0, + "text": "which I don't cover here because it's" + }, + { + "start": 1742.24, + "duration": 0.0, + "text": "which I don't cover here because it's not<00:29:02.399> exactly<00:29:02.720> relevant<00:29:03.039> to<00:29:03.279> this<00:29:03.520> talk<00:29:04.240> is" + }, + { + "start": 1744.63, + "duration": 0.0, + "text": "not exactly relevant to this talk is" + }, + { + "start": 1744.64, + "duration": 0.0, + "text": "not exactly relevant to this talk is line<00:29:04.960> information<00:29:05.600> which<00:29:05.840> will<00:29:06.240> take<00:29:06.720> uh<00:29:06.799> it" + }, + { + "start": 1747.029, + "duration": 0.0, + "text": "line information which will take uh it" + }, + { + "start": 1747.039, + "duration": 0.0, + "text": "line information which will take uh it takes<00:29:07.200> like<00:29:07.840> ranges<00:29:08.159> of<00:29:08.320> exeu<00:29:08.880> ex<00:29:08.880> executable" + }, + { + "start": 1749.51, + "duration": 0.0, + "text": "takes like ranges of exeu ex executable" + }, + { + "start": 1749.52, + "duration": 0.0, + "text": "takes like ranges of exeu ex executable code<00:29:09.840> inside<00:29:10.159> of<00:29:10.320> your<00:29:11.279> uh<00:29:11.440> inside<00:29:11.679> of<00:29:11.760> your" + }, + { + "start": 1751.909, + "duration": 0.0, + "text": "code inside of your uh inside of your" + }, + { + "start": 1751.919, + "duration": 0.0, + "text": "code inside of your uh inside of your executable<00:29:12.480> image<00:29:12.880> and<00:29:13.039> it<00:29:13.279> maps<00:29:13.520> it<00:29:13.679> to<00:29:13.760> some" + }, + { + "start": 1753.99, + "duration": 0.0, + "text": "executable image and it maps it to some" + }, + { + "start": 1754.0, + "duration": 0.0, + "text": "executable image and it maps it to some source<00:29:14.240> location.<00:29:14.960> So<00:29:15.120> that's<00:29:15.279> like<00:29:15.440> one" + }, + { + "start": 1755.669, + "duration": 0.0, + "text": "source location. So that's like one" + }, + { + "start": 1755.679, + "duration": 0.0, + "text": "source location. So that's like one thing<00:29:16.080> used<00:29:16.240> to<00:29:16.399> implement<00:29:16.640> things<00:29:16.799> like" + }, + { + "start": 1756.95, + "duration": 0.0, + "text": "thing used to implement things like" + }, + { + "start": 1756.96, + "duration": 0.0, + "text": "thing used to implement things like stepping.<00:29:18.399> Not<00:29:18.640> going<00:29:18.720> to<00:29:18.799> get<00:29:18.960> into<00:29:19.120> that" + }, + { + "start": 1759.269, + "duration": 0.0, + "text": "stepping. Not going to get into that" + }, + { + "start": 1759.279, + "duration": 0.0, + "text": "stepping. Not going to get into that here<00:29:19.679> but<00:29:19.840> that's<00:29:20.080> in<00:29:20.240> debug<00:29:20.559> info<00:29:20.960> too.<00:29:22.000> Um," + }, + { + "start": 1763.35, + "duration": 0.0, + "text": "here but that's in debug info too. Um," + }, + { + "start": 1763.36, + "duration": 0.0, + "text": "here but that's in debug info too. Um, so<00:29:23.600> these<00:29:23.840> are<00:29:24.000> all<00:29:24.159> the<00:29:24.320> parts<00:29:24.559> that<00:29:24.720> I<00:29:25.039> would" + }, + { + "start": 1765.269, + "duration": 0.0, + "text": "so these are all the parts that I would" + }, + { + "start": 1765.279, + "duration": 0.0, + "text": "so these are all the parts that I would consider<00:29:25.679> relevant<00:29:26.080> for<00:29:26.399> like<00:29:27.039> evaluation," + }, + { + "start": 1767.59, + "duration": 0.0, + "text": "consider relevant for like evaluation," + }, + { + "start": 1767.6, + "duration": 0.0, + "text": "consider relevant for like evaluation, the<00:29:27.840> basics<00:29:28.159> of<00:29:28.320> an<00:29:28.480> evaluation<00:29:29.039> system," + }, + { + "start": 1769.35, + "duration": 0.0, + "text": "the basics of an evaluation system," + }, + { + "start": 1769.36, + "duration": 0.0, + "text": "the basics of an evaluation system, right?<00:29:30.240> So<00:29:30.320> you've<00:29:30.559> got<00:29:30.720> types,<00:29:31.760> globals," + }, + { + "start": 1772.23, + "duration": 0.0, + "text": "right? So you've got types, globals," + }, + { + "start": 1772.24, + "duration": 0.0, + "text": "right? So you've got types, globals, thread<00:29:32.480> locals,<00:29:32.880> procedures,<00:29:33.600> location" + }, + { + "start": 1774.07, + "duration": 0.0, + "text": "thread locals, procedures, location" + }, + { + "start": 1774.08, + "duration": 0.0, + "text": "thread locals, procedures, location info,<00:29:34.480> scopes,<00:29:34.799> and<00:29:34.960> locals.<00:29:35.440> All<00:29:35.679> this" + }, + { + "start": 1776.149, + "duration": 0.0, + "text": "info, scopes, and locals. All this" + }, + { + "start": 1776.159, + "duration": 0.0, + "text": "info, scopes, and locals. All this information<00:29:36.559> about<00:29:36.720> all<00:29:36.880> of<00:29:37.039> these<00:29:37.200> is<00:29:37.360> inside" + }, + { + "start": 1777.669, + "duration": 0.0, + "text": "information about all of these is inside" + }, + { + "start": 1777.679, + "duration": 0.0, + "text": "information about all of these is inside debug<00:29:38.000> info." + }, + { + "start": 1781.52, + "duration": 0.0, + "text": "The<00:29:41.760> thing<00:29:41.840> about<00:29:42.000> debug<00:29:42.399> info<00:29:42.960> very<00:29:43.279> cross" + }, + { + "start": 1783.59, + "duration": 0.0, + "text": "The thing about debug info very cross" + }, + { + "start": 1783.6, + "duration": 0.0, + "text": "The thing about debug info very cross referential.<00:29:44.480> So<00:29:44.720> globals<00:29:46.000> all<00:29:46.240> point<00:29:46.480> to" + }, + { + "start": 1786.63, + "duration": 0.0, + "text": "referential. So globals all point to" + }, + { + "start": 1786.64, + "duration": 0.0, + "text": "referential. So globals all point to their<00:29:46.880> type<00:29:47.120> information.<00:29:47.600> So<00:29:47.840> a<00:29:48.000> global" + }, + { + "start": 1788.31, + "duration": 0.0, + "text": "their type information. So a global" + }, + { + "start": 1788.32, + "duration": 0.0, + "text": "their type information. So a global variable<00:29:48.640> obviously<00:29:48.960> has<00:29:49.120> a<00:29:49.279> type.<00:29:49.919> Global" + }, + { + "start": 1790.23, + "duration": 0.0, + "text": "variable obviously has a type. Global" + }, + { + "start": 1790.24, + "duration": 0.0, + "text": "variable obviously has a type. Global gets<00:29:50.480> a<00:29:50.640> type.<00:29:51.840> Thread<00:29:52.080> locals<00:29:52.399> get<00:29:52.480> a<00:29:52.559> type." + }, + { + "start": 1792.789, + "duration": 0.0, + "text": "gets a type. Thread locals get a type." + }, + { + "start": 1792.799, + "duration": 0.0, + "text": "gets a type. Thread locals get a type. Procedures<00:29:53.200> get<00:29:53.279> a<00:29:53.520> type.<00:29:54.399> Local<00:29:54.799> variables" + }, + { + "start": 1795.19, + "duration": 0.0, + "text": "Procedures get a type. Local variables" + }, + { + "start": 1795.2, + "duration": 0.0, + "text": "Procedures get a type. Local variables obviously<00:29:55.520> get<00:29:55.679> a<00:29:55.840> type." + }, + { + "start": 1798.389, + "duration": 0.0, + "text": "obviously get a type." + }, + { + "start": 1798.399, + "duration": 0.0, + "text": "obviously get a type. Locals<00:29:59.039> refer<00:29:59.279> to<00:29:59.440> their<00:29:59.679> location<00:30:00.080> info." + }, + { + "start": 1801.669, + "duration": 0.0, + "text": "Locals refer to their location info." + }, + { + "start": 1801.679, + "duration": 0.0, + "text": "Locals refer to their location info. Hint<00:30:02.399> for<00:30:02.640> the<00:30:02.960> address<00:30:03.279> entity<00:30:03.679> thing.<00:30:03.840> We'll" + }, + { + "start": 1804.07, + "duration": 0.0, + "text": "Hint for the address entity thing. We'll" + }, + { + "start": 1804.08, + "duration": 0.0, + "text": "Hint for the address entity thing. We'll get<00:30:04.159> there.<00:30:04.960> Um,<00:30:05.200> and<00:30:05.520> scopes<00:30:05.840> refer<00:30:06.080> to<00:30:06.159> the" + }, + { + "start": 1806.31, + "duration": 0.0, + "text": "get there. Um, and scopes refer to the" + }, + { + "start": 1806.32, + "duration": 0.0, + "text": "get there. Um, and scopes refer to the local<00:30:06.480> variables<00:30:06.799> that<00:30:06.960> they<00:30:07.120> contain.<00:30:07.520> And" + }, + { + "start": 1807.59, + "duration": 0.0, + "text": "local variables that they contain. And" + }, + { + "start": 1807.6, + "duration": 0.0, + "text": "local variables that they contain. And the<00:30:07.760> procedures<00:30:08.240> refer<00:30:09.279> to<00:30:09.440> the<00:30:09.679> scopes<00:30:10.880> um" + }, + { + "start": 1811.029, + "duration": 0.0, + "text": "the procedures refer to the scopes um" + }, + { + "start": 1811.039, + "duration": 0.0, + "text": "the procedures refer to the scopes um that<00:30:11.200> that<00:30:11.520> that<00:30:11.760> are<00:30:11.919> sort<00:30:12.000> of<00:30:12.080> nested<00:30:12.480> under" + }, + { + "start": 1812.71, + "duration": 0.0, + "text": "that that that are sort of nested under" + }, + { + "start": 1812.72, + "duration": 0.0, + "text": "that that that are sort of nested under them." + }, + { + "start": 1815.19, + "duration": 0.0, + "text": "them." + }, + { + "start": 1815.2, + "duration": 0.0, + "text": "them. Zoom<00:30:15.440> into<00:30:15.679> types.<00:30:16.240> Types<00:30:16.640> take<00:30:16.799> the<00:30:16.880> form<00:30:17.120> of" + }, + { + "start": 1817.19, + "duration": 0.0, + "text": "Zoom into types. Types take the form of" + }, + { + "start": 1817.2, + "duration": 0.0, + "text": "Zoom into types. Types take the form of a<00:30:17.360> directed<00:30:17.760> graph." + }, + { + "start": 1820.31, + "duration": 0.0, + "text": "a directed graph." + }, + { + "start": 1820.32, + "duration": 0.0, + "text": "a directed graph. So<00:30:20.559> let's<00:30:20.720> say<00:30:20.799> I've<00:30:21.039> got<00:30:21.120> some<00:30:21.360> type<00:30:21.919> in32" + }, + { + "start": 1822.63, + "duration": 0.0, + "text": "So let's say I've got some type in32" + }, + { + "start": 1822.64, + "duration": 0.0, + "text": "So let's say I've got some type in32 four<00:30:22.799> bytes.<00:30:23.120> Everyone<00:30:23.360> knows<00:30:23.520> what<00:30:23.600> an<00:30:23.760> in32" + }, + { + "start": 1824.31, + "duration": 0.0, + "text": "four bytes. Everyone knows what an in32" + }, + { + "start": 1824.32, + "duration": 0.0, + "text": "four bytes. Everyone knows what an in32 is<00:30:24.559> here<00:30:24.880> I<00:30:25.039> would<00:30:25.200> imagine.<00:30:26.320> Um<00:30:26.960> the<00:30:27.200> type" + }, + { + "start": 1827.43, + "duration": 0.0, + "text": "is here I would imagine. Um the type" + }, + { + "start": 1827.44, + "duration": 0.0, + "text": "is here I would imagine. Um the type information<00:30:28.000> records<00:30:28.320> that<00:30:28.559> as<00:30:28.720> sort<00:30:28.799> of<00:30:28.880> a" + }, + { + "start": 1829.029, + "duration": 0.0, + "text": "information records that as sort of a" + }, + { + "start": 1829.039, + "duration": 0.0, + "text": "information records that as sort of a basic<00:30:29.279> type.<00:30:30.080> It<00:30:30.320> can<00:30:30.399> encode<00:30:30.720> like<00:30:30.880> the<00:30:31.039> name" + }, + { + "start": 1831.19, + "duration": 0.0, + "text": "basic type. It can encode like the name" + }, + { + "start": 1831.2, + "duration": 0.0, + "text": "basic type. It can encode like the name of<00:30:31.360> it<00:30:31.919> and<00:30:32.159> then<00:30:32.480> its<00:30:32.799> size<00:30:33.039> and<00:30:33.279> then" + }, + { + "start": 1833.43, + "duration": 0.0, + "text": "of it and then its size and then" + }, + { + "start": 1833.44, + "duration": 0.0, + "text": "of it and then its size and then probably<00:30:33.760> like<00:30:33.919> it's<00:30:34.159> just<00:30:34.320> got<00:30:34.399> a<00:30:34.559> fixed<00:30:34.799> code" + }, + { + "start": 1835.029, + "duration": 0.0, + "text": "probably like it's just got a fixed code" + }, + { + "start": 1835.039, + "duration": 0.0, + "text": "probably like it's just got a fixed code for<00:30:35.279> this<00:30:35.520> in<00:30:35.760> in<00:30:35.760> in<00:30:36.640> pretty<00:30:36.880> much<00:30:37.039> every" + }, + { + "start": 1837.19, + "duration": 0.0, + "text": "for this in in in pretty much every" + }, + { + "start": 1837.2, + "duration": 0.0, + "text": "for this in in in pretty much every case.<00:30:38.399> Um" + }, + { + "start": 1840.149, + "duration": 0.0, + "text": "case. Um" + }, + { + "start": 1840.159, + "duration": 0.0, + "text": "case. Um types<00:30:40.559> can<00:30:40.640> also<00:30:40.880> act<00:30:41.039> as<00:30:41.200> type<00:30:41.440> operators<00:30:42.159> on" + }, + { + "start": 1842.71, + "duration": 0.0, + "text": "types can also act as type operators on" + }, + { + "start": 1842.72, + "duration": 0.0, + "text": "types can also act as type operators on on<00:30:42.960> some<00:30:43.120> other<00:30:43.279> type.<00:30:43.600> So<00:30:43.679> you've<00:30:43.840> got<00:30:43.919> a" + }, + { + "start": 1844.07, + "duration": 0.0, + "text": "on some other type. So you've got a" + }, + { + "start": 1844.08, + "duration": 0.0, + "text": "on some other type. So you've got a type,<00:30:44.320> it<00:30:44.480> can<00:30:44.559> point<00:30:44.799> to<00:30:44.960> another<00:30:45.200> type<00:30:45.760> and" + }, + { + "start": 1845.99, + "duration": 0.0, + "text": "type, it can point to another type and" + }, + { + "start": 1846.0, + "duration": 0.0, + "text": "type, it can point to another type and say<00:30:46.159> I'm<00:30:46.399> an<00:30:46.640> operator<00:30:47.039> on<00:30:47.200> that<00:30:47.360> type.<00:30:48.000> So" + }, + { + "start": 1848.63, + "duration": 0.0, + "text": "say I'm an operator on that type. So" + }, + { + "start": 1848.64, + "duration": 0.0, + "text": "say I'm an operator on that type. So here<00:30:49.679> I've<00:30:49.919> got<00:30:50.080> this<00:30:50.399> 16<00:30:50.720> array<00:30:51.039> type<00:30:51.600> and<00:30:51.840> it" + }, + { + "start": 1851.99, + "duration": 0.0, + "text": "here I've got this 16 array type and it" + }, + { + "start": 1852.0, + "duration": 0.0, + "text": "here I've got this 16 array type and it points<00:30:52.240> at<00:30:52.320> the<00:30:52.480> N32<00:30:53.120> type<00:30:53.679> and<00:30:54.080> and<00:30:54.320> if<00:30:54.480> I" + }, + { + "start": 1854.549, + "duration": 0.0, + "text": "points at the N32 type and and if I" + }, + { + "start": 1854.559, + "duration": 0.0, + "text": "points at the N32 type and and if I point<00:30:54.720> at<00:30:54.880> the<00:30:55.120> 16<00:30:55.919> array<00:30:56.320> node,<00:30:57.120> that's<00:30:57.360> an<00:30:57.520> in" + }, + { + "start": 1857.99, + "duration": 0.0, + "text": "point at the 16 array node, that's an in" + }, + { + "start": 1858.0, + "duration": 0.0, + "text": "point at the 16 array node, that's an in that's<00:30:58.159> a<00:30:58.320> 16<00:30:58.640> array<00:30:58.799> of<00:30:58.880> N32s." + }, + { + "start": 1863.36, + "duration": 0.0, + "text": "If<00:31:03.600> I've<00:31:03.760> got<00:31:03.840> a<00:31:04.000> pointer<00:31:04.399> type<00:31:05.760> um<00:31:05.919> pointing" + }, + { + "start": 1866.23, + "duration": 0.0, + "text": "If I've got a pointer type um pointing" + }, + { + "start": 1866.24, + "duration": 0.0, + "text": "If I've got a pointer type um pointing to<00:31:06.399> the<00:31:06.480> N32,<00:31:07.520> if<00:31:07.760> I<00:31:07.840> point<00:31:08.000> at<00:31:08.240> that,<00:31:08.640> if<00:31:08.799> I<00:31:08.960> say" + }, + { + "start": 1869.19, + "duration": 0.0, + "text": "to the N32, if I point at that, if I say" + }, + { + "start": 1869.2, + "duration": 0.0, + "text": "to the N32, if I point at that, if I say like<00:31:09.440> that<00:31:09.679> type,<00:31:10.000> that's<00:31:10.240> going<00:31:10.240> to<00:31:10.320> be<00:31:10.399> an" + }, + { + "start": 1870.549, + "duration": 0.0, + "text": "like that type, that's going to be an" + }, + { + "start": 1870.559, + "duration": 0.0, + "text": "like that type, that's going to be an N32<00:31:11.279> pointer." + }, + { + "start": 1873.83, + "duration": 0.0, + "text": "N32 pointer." + }, + { + "start": 1873.84, + "duration": 0.0, + "text": "N32 pointer. double<00:31:14.159> pointer" + }, + { + "start": 1877.36, + "duration": 0.0, + "text": "32<00:31:17.840> array<00:31:18.320> of<00:31:18.559> double<00:31:18.880> pointer" + }, + { + "start": 1883.12, + "duration": 0.0, + "text": "type<00:31:23.440> information<00:31:23.840> maybe<00:31:24.080> unsurprisingly" + }, + { + "start": 1884.789, + "duration": 0.0, + "text": "type information maybe unsurprisingly" + }, + { + "start": 1884.799, + "duration": 0.0, + "text": "type information maybe unsurprisingly also<00:31:25.120> covers<00:31:25.600> uh<00:31:25.760> userdefined<00:31:26.320> types<00:31:26.640> like" + }, + { + "start": 1886.87, + "duration": 0.0, + "text": "also covers uh userdefined types like" + }, + { + "start": 1886.88, + "duration": 0.0, + "text": "also covers uh userdefined types like structures" + }, + { + "start": 1888.95, + "duration": 0.0, + "text": "structures" + }, + { + "start": 1888.96, + "duration": 0.0, + "text": "structures if<00:31:29.200> I've<00:31:29.360> got<00:31:29.520> two<00:31:29.679> structures<00:31:30.000> here<00:31:30.320> and" + }, + { + "start": 1890.47, + "duration": 0.0, + "text": "if I've got two structures here and" + }, + { + "start": 1890.48, + "duration": 0.0, + "text": "if I've got two structures here and we've<00:31:30.640> got<00:31:30.799> entity<00:31:31.440> ve<00:31:31.840> 3<00:31:32.559> um<00:31:32.799> entity's<00:31:33.279> got" + }, + { + "start": 1893.75, + "duration": 0.0, + "text": "we've got entity ve 3 um entity's got" + }, + { + "start": 1893.76, + "duration": 0.0, + "text": "we've got entity ve 3 um entity's got position<00:31:34.080> velocity<00:31:34.559> vec<00:31:34.799> 3<00:31:34.960> x<00:31:35.200> y<00:31:35.279> and<00:31:35.520> z<00:31:35.919> then" + }, + { + "start": 1896.149, + "duration": 0.0, + "text": "position velocity vec 3 x y and z then" + }, + { + "start": 1896.159, + "duration": 0.0, + "text": "position velocity vec 3 x y and z then there's<00:31:36.320> some<00:31:36.480> base<00:31:36.720> type<00:31:36.960> float<00:31:37.360> 32<00:31:38.720> um<00:31:39.440> you" + }, + { + "start": 1899.59, + "duration": 0.0, + "text": "there's some base type float 32 um you" + }, + { + "start": 1899.6, + "duration": 0.0, + "text": "there's some base type float 32 um you know" + }, + { + "start": 1901.19, + "duration": 0.0, + "text": "know" + }, + { + "start": 1901.2, + "duration": 0.0, + "text": "know not<00:31:41.440> that<00:31:41.679> surprising<00:31:42.080> hopefully<00:31:42.720> position" + }, + { + "start": 1903.11, + "duration": 0.0, + "text": "not that surprising hopefully position" + }, + { + "start": 1903.12, + "duration": 0.0, + "text": "not that surprising hopefully position points<00:31:43.440> of<00:31:43.519> velocity<00:31:44.399> points<00:31:44.640> of<00:31:44.799> ve<00:31:45.440> xyz" + }, + { + "start": 1905.99, + "duration": 0.0, + "text": "points of velocity points of ve xyz" + }, + { + "start": 1906.0, + "duration": 0.0, + "text": "points of velocity points of ve xyz point<00:31:46.159> to<00:31:46.320> float<00:31:46.640> 32.<00:31:47.120> That's<00:31:47.279> how<00:31:47.440> that'd<00:31:47.600> be" + }, + { + "start": 1907.75, + "duration": 0.0, + "text": "point to float 32. That's how that'd be" + }, + { + "start": 1907.76, + "duration": 0.0, + "text": "point to float 32. That's how that'd be laid<00:31:47.919> out." + }, + { + "start": 1910.389, + "duration": 0.0, + "text": "laid out." + }, + { + "start": 1910.399, + "duration": 0.0, + "text": "laid out. So<00:31:51.200> like<00:31:51.360> I<00:31:51.519> said,<00:31:51.840> debug<00:31:52.240> info<00:31:52.640> has<00:31:53.279> uh<00:31:53.440> data" + }, + { + "start": 1913.669, + "duration": 0.0, + "text": "So like I said, debug info has uh data" + }, + { + "start": 1913.679, + "duration": 0.0, + "text": "So like I said, debug info has uh data bounce<00:31:54.000> scopes<00:31:54.559> in<00:31:54.799> your<00:31:55.039> program.<00:31:56.320> So<00:31:56.559> let's" + }, + { + "start": 1916.71, + "duration": 0.0, + "text": "bounce scopes in your program. So let's" + }, + { + "start": 1916.72, + "duration": 0.0, + "text": "bounce scopes in your program. So let's say<00:31:56.799> I've<00:31:57.039> got<00:31:57.120> this<00:31:57.279> procedure<00:31:57.679> update." + }, + { + "start": 1918.47, + "duration": 0.0, + "text": "say I've got this procedure update." + }, + { + "start": 1918.48, + "duration": 0.0, + "text": "say I've got this procedure update. We've<00:31:58.720> got<00:31:59.039> uh<00:31:59.120> some<00:31:59.360> local<00:31:59.679> variable<00:32:00.159> entity" + }, + { + "start": 1920.87, + "duration": 0.0, + "text": "We've got uh some local variable entity" + }, + { + "start": 1920.88, + "duration": 0.0, + "text": "We've got uh some local variable entity pointer<00:32:01.360> entities.<00:32:02.399> Um<00:32:03.600> and<00:32:03.840> we've<00:32:04.159> got<00:32:04.240> two" + }, + { + "start": 1924.47, + "duration": 0.0, + "text": "pointer entities. Um and we've got two" + }, + { + "start": 1924.48, + "duration": 0.0, + "text": "pointer entities. Um and we've got two loops.<00:32:05.039> We've<00:32:05.279> got<00:32:05.440> some<00:32:06.000> idx<00:32:06.399> variable." + }, + { + "start": 1926.87, + "duration": 0.0, + "text": "loops. We've got some idx variable." + }, + { + "start": 1926.88, + "duration": 0.0, + "text": "loops. We've got some idx variable. That's<00:32:07.039> how<00:32:07.120> I<00:32:07.200> shorten<00:32:07.600> index.<00:32:08.480> I<00:32:08.640> don't<00:32:08.799> know" + }, + { + "start": 1928.87, + "duration": 0.0, + "text": "That's how I shorten index. I don't know" + }, + { + "start": 1928.88, + "duration": 0.0, + "text": "That's how I shorten index. I don't know how<00:32:09.039> many<00:32:09.200> people<00:32:09.440> do<00:32:09.600> that,<00:32:09.760> but<00:32:10.640> uh<00:32:10.799> so<00:32:11.039> index" + }, + { + "start": 1931.59, + "duration": 0.0, + "text": "how many people do that, but uh so index" + }, + { + "start": 1931.6, + "duration": 0.0, + "text": "how many people do that, but uh so index and<00:32:11.840> then<00:32:12.159> you<00:32:12.320> know<00:32:12.399> we've<00:32:12.640> got<00:32:12.960> maybe<00:32:13.200> we're" + }, + { + "start": 1933.43, + "duration": 0.0, + "text": "and then you know we've got maybe we're" + }, + { + "start": 1933.44, + "duration": 0.0, + "text": "and then you know we've got maybe we're looping<00:32:13.679> over<00:32:13.840> the<00:32:14.000> entities<00:32:14.399> or<00:32:14.559> or" + }, + { + "start": 1935.11, + "duration": 0.0, + "text": "looping over the entities or or" + }, + { + "start": 1935.12, + "duration": 0.0, + "text": "looping over the entities or or whatever.<00:32:15.840> So<00:32:16.000> if<00:32:16.159> we<00:32:16.320> have<00:32:16.399> this<00:32:16.799> then<00:32:17.200> in" + }, + { + "start": 1937.43, + "duration": 0.0, + "text": "whatever. So if we have this then in" + }, + { + "start": 1937.44, + "duration": 0.0, + "text": "whatever. So if we have this then in debug<00:32:17.760> info<00:32:18.240> you've<00:32:18.399> got<00:32:18.480> a<00:32:18.640> procedure<00:32:19.120> record" + }, + { + "start": 1939.75, + "duration": 0.0, + "text": "debug info you've got a procedure record" + }, + { + "start": 1939.76, + "duration": 0.0, + "text": "debug info you've got a procedure record for<00:32:20.080> for<00:32:20.320> the<00:32:20.480> update<00:32:21.519> procedure.<00:32:22.880> It<00:32:23.120> points" + }, + { + "start": 1943.43, + "duration": 0.0, + "text": "for for the update procedure. It points" + }, + { + "start": 1943.44, + "duration": 0.0, + "text": "for for the update procedure. It points at<00:32:23.519> a<00:32:23.760> at<00:32:23.919> a<00:32:24.080> scope<00:32:24.399> tree<00:32:25.440> um<00:32:25.760> underneath<00:32:26.320> which" + }, + { + "start": 1946.95, + "duration": 0.0, + "text": "at a at a scope tree um underneath which" + }, + { + "start": 1946.96, + "duration": 0.0, + "text": "at a at a scope tree um underneath which uh<00:32:27.200> you<00:32:27.440> also<00:32:27.600> have<00:32:27.760> local<00:32:28.000> variables.<00:32:28.320> So" + }, + { + "start": 1948.389, + "duration": 0.0, + "text": "uh you also have local variables. So" + }, + { + "start": 1948.399, + "duration": 0.0, + "text": "uh you also have local variables. So you've<00:32:28.640> got<00:32:28.720> at<00:32:28.880> the<00:32:28.960> root<00:32:29.200> scope<00:32:29.360> you've<00:32:29.519> got" + }, + { + "start": 1949.59, + "duration": 0.0, + "text": "you've got at the root scope you've got" + }, + { + "start": 1949.6, + "duration": 0.0, + "text": "you've got at the root scope you've got the<00:32:29.760> entities<00:32:30.159> variable<00:32:30.880> at<00:32:31.039> the<00:32:31.279> two" + }, + { + "start": 1951.83, + "duration": 0.0, + "text": "the entities variable at the two" + }, + { + "start": 1951.84, + "duration": 0.0, + "text": "the entities variable at the two subscopes<00:32:32.559> you've<00:32:32.799> got<00:32:33.039> two<00:32:33.279> different<00:32:33.600> index" + }, + { + "start": 1953.99, + "duration": 0.0, + "text": "subscopes you've got two different index" + }, + { + "start": 1954.0, + "duration": 0.0, + "text": "subscopes you've got two different index variables" + }, + { + "start": 1955.669, + "duration": 0.0, + "text": "variables" + }, + { + "start": 1955.679, + "duration": 0.0, + "text": "variables and<00:32:36.080> each<00:32:36.320> one<00:32:36.480> of<00:32:36.559> the<00:32:36.720> variables<00:32:37.600> contain<00:32:38.159> uh" + }, + { + "start": 1958.31, + "duration": 0.0, + "text": "and each one of the variables contain uh" + }, + { + "start": 1958.32, + "duration": 0.0, + "text": "and each one of the variables contain uh points<00:32:38.480> at<00:32:38.640> their<00:32:38.880> type<00:32:39.039> info.<00:32:40.159> So<00:32:41.039> you've<00:32:41.360> got" + }, + { + "start": 1962.23, + "duration": 0.0, + "text": "points at their type info. So you've got" + }, + { + "start": 1962.24, + "duration": 0.0, + "text": "points at their type info. So you've got index<00:32:43.679> maybe<00:32:44.000> points<00:32:44.240> to<00:32:44.320> in<00:32:44.640> 64" + }, + { + "start": 1966.389, + "duration": 0.0, + "text": "index maybe points to in 64" + }, + { + "start": 1966.399, + "duration": 0.0, + "text": "index maybe points to in 64 entities<00:32:47.440> points<00:32:47.760> to<00:32:48.000> a<00:32:48.159> pointer<00:32:48.480> which" + }, + { + "start": 1968.71, + "duration": 0.0, + "text": "entities points to a pointer which" + }, + { + "start": 1968.72, + "duration": 0.0, + "text": "entities points to a pointer which points<00:32:48.880> to<00:32:48.960> an<00:32:49.200> entity<00:32:49.519> type.<00:32:50.559> That's<00:32:50.799> how<00:32:50.960> the" + }, + { + "start": 1971.11, + "duration": 0.0, + "text": "points to an entity type. That's how the" + }, + { + "start": 1971.12, + "duration": 0.0, + "text": "points to an entity type. That's how the type<00:32:51.360> might<00:32:51.600> show<00:32:51.760> up." + }, + { + "start": 1976.32, + "duration": 0.0, + "text": "A<00:32:56.480> variable<00:32:56.799> like<00:32:57.200> index<00:32:58.000> not<00:32:58.240> only<00:32:58.559> refers<00:32:58.799> to" + }, + { + "start": 1979.029, + "duration": 0.0, + "text": "A variable like index not only refers to" + }, + { + "start": 1979.039, + "duration": 0.0, + "text": "A variable like index not only refers to an<00:32:59.120> in64<00:33:00.080> might<00:33:00.320> also<00:33:00.640> refer<00:33:01.039> to" + }, + { + "start": 1983.19, + "duration": 0.0, + "text": "an in64 might also refer to" + }, + { + "start": 1983.2, + "duration": 0.0, + "text": "an in64 might also refer to its<00:33:03.519> location<00:33:04.000> information.<00:33:05.039> And<00:33:05.200> this" + }, + { + "start": 1985.43, + "duration": 0.0, + "text": "its location information. And this" + }, + { + "start": 1985.44, + "duration": 0.0, + "text": "its location information. And this location<00:33:05.840> info<00:33:06.240> is<00:33:06.399> how<00:33:06.559> our<00:33:06.720> debugger's" + }, + { + "start": 1987.19, + "duration": 0.0, + "text": "location info is how our debugger's" + }, + { + "start": 1987.2, + "duration": 0.0, + "text": "location info is how our debugger's expression<00:33:07.600> compiler<00:33:08.399> can<00:33:08.640> actually" + }, + { + "start": 1988.789, + "duration": 0.0, + "text": "expression compiler can actually" + }, + { + "start": 1988.799, + "duration": 0.0, + "text": "expression compiler can actually understand<00:33:09.200> where<00:33:09.440> certain<00:33:09.679> variables<00:33:10.159> live." + }, + { + "start": 1990.549, + "duration": 0.0, + "text": "understand where certain variables live." + }, + { + "start": 1990.559, + "duration": 0.0, + "text": "understand where certain variables live. So<00:33:10.720> if<00:33:10.880> our<00:33:11.039> variable<00:33:11.440> index<00:33:12.000> within<00:33:12.399> some" + }, + { + "start": 1992.63, + "duration": 0.0, + "text": "So if our variable index within some" + }, + { + "start": 1992.64, + "duration": 0.0, + "text": "So if our variable index within some scope<00:33:12.880> is<00:33:13.120> at<00:33:13.279> like<00:33:13.440> the<00:33:13.600> value<00:33:13.679> of<00:33:13.840> the<00:33:14.000> stack" + }, + { + "start": 1994.23, + "duration": 0.0, + "text": "scope is at like the value of the stack" + }, + { + "start": 1994.24, + "duration": 0.0, + "text": "scope is at like the value of the stack pointer<00:33:15.120> minus<00:33:15.519> 64<00:33:15.919> bytes<00:33:16.960> um<00:33:17.200> then<00:33:17.440> the" + }, + { + "start": 1997.669, + "duration": 0.0, + "text": "pointer minus 64 bytes um then the" + }, + { + "start": 1997.679, + "duration": 0.0, + "text": "pointer minus 64 bytes um then the location<00:33:18.000> info<00:33:18.320> is<00:33:18.559> what's<00:33:18.799> going<00:33:18.880> to<00:33:19.039> tell<00:33:19.279> us" + }, + { + "start": 1999.43, + "duration": 0.0, + "text": "location info is what's going to tell us" + }, + { + "start": 1999.44, + "duration": 0.0, + "text": "location info is what's going to tell us that<00:33:19.679> it's<00:33:19.840> going<00:33:19.919> to<00:33:20.000> encode<00:33:20.320> that<00:33:20.559> somehow." + }, + { + "start": 2002.47, + "duration": 0.0, + "text": "that it's going to encode that somehow." + }, + { + "start": 2002.48, + "duration": 0.0, + "text": "that it's going to encode that somehow. It<00:33:22.720> might<00:33:22.880> also<00:33:23.120> tell<00:33:23.279> us<00:33:23.440> that<00:33:24.080> um<00:33:24.240> a<00:33:24.399> reg<00:33:24.799> a" + }, + { + "start": 2004.95, + "duration": 0.0, + "text": "It might also tell us that um a reg a" + }, + { + "start": 2004.96, + "duration": 0.0, + "text": "It might also tell us that um a reg a variable<00:33:25.279> lives<00:33:25.519> inside<00:33:25.760> of<00:33:25.840> a<00:33:26.000> register<00:33:26.880> or" + }, + { + "start": 2007.83, + "duration": 0.0, + "text": "variable lives inside of a register or" + }, + { + "start": 2007.84, + "duration": 0.0, + "text": "variable lives inside of a register or the<00:33:28.159> value<00:33:29.120> of<00:33:29.279> a<00:33:29.519> variable<00:33:30.000> is<00:33:30.399> like<00:33:31.519> uh<00:33:31.760> you" + }, + { + "start": 2011.909, + "duration": 0.0, + "text": "the value of a variable is like uh you" + }, + { + "start": 2011.919, + "duration": 0.0, + "text": "the value of a variable is like uh you know<00:33:32.159> it<00:33:32.399> could<00:33:32.480> be<00:33:32.559> arbitrarily<00:33:33.120> complicated" + }, + { + "start": 2013.59, + "duration": 0.0, + "text": "know it could be arbitrarily complicated" + }, + { + "start": 2013.6, + "duration": 0.0, + "text": "know it could be arbitrarily complicated really<00:33:33.919> that<00:33:34.159> it<00:33:34.240> can<00:33:34.320> be<00:33:34.480> computed<00:33:34.880> somehow." + }, + { + "start": 2015.75, + "duration": 0.0, + "text": "really that it can be computed somehow." + }, + { + "start": 2015.76, + "duration": 0.0, + "text": "really that it can be computed somehow. Um<00:33:36.640> but<00:33:36.880> those<00:33:37.120> cases<00:33:37.440> tend<00:33:37.600> to<00:33:37.679> show<00:33:37.760> up<00:33:37.919> in" + }, + { + "start": 2018.07, + "duration": 0.0, + "text": "Um but those cases tend to show up in" + }, + { + "start": 2018.08, + "duration": 0.0, + "text": "Um but those cases tend to show up in optimized<00:33:38.480> builds,<00:33:38.720> right?<00:33:38.960> You're<00:33:39.120> not" + }, + { + "start": 2019.269, + "duration": 0.0, + "text": "optimized builds, right? You're not" + }, + { + "start": 2019.279, + "duration": 0.0, + "text": "optimized builds, right? You're not always<00:33:39.519> going<00:33:39.600> to<00:33:39.760> have<00:33:40.320> complicated<00:33:40.799> cases" + }, + { + "start": 2021.19, + "duration": 0.0, + "text": "always going to have complicated cases" + }, + { + "start": 2021.2, + "duration": 0.0, + "text": "always going to have complicated cases like<00:33:41.360> that.<00:33:42.480> Um<00:33:43.120> global<00:33:43.440> variables<00:33:43.760> and" + }, + { + "start": 2023.909, + "duration": 0.0, + "text": "like that. Um global variables and" + }, + { + "start": 2023.919, + "duration": 0.0, + "text": "like that. Um global variables and thread<00:33:44.159> locals<00:33:44.559> tend<00:33:44.799> to<00:33:44.960> have<00:33:45.760> much<00:33:46.080> simpler" + }, + { + "start": 2026.87, + "duration": 0.0, + "text": "thread locals tend to have much simpler" + }, + { + "start": 2026.88, + "duration": 0.0, + "text": "thread locals tend to have much simpler uh<00:33:47.039> location<00:33:47.360> info.<00:33:47.919> they<00:33:48.159> tend<00:33:48.320> to<00:33:48.480> be<00:33:48.559> like" + }, + { + "start": 2028.789, + "duration": 0.0, + "text": "uh location info. they tend to be like" + }, + { + "start": 2028.799, + "duration": 0.0, + "text": "uh location info. they tend to be like fixed<00:33:49.200> offset<00:33:49.679> like<00:33:49.919> address<00:33:50.240> offsets<00:33:51.120> into" + }, + { + "start": 2031.83, + "duration": 0.0, + "text": "fixed offset like address offsets into" + }, + { + "start": 2031.84, + "duration": 0.0, + "text": "fixed offset like address offsets into in<00:33:52.080> the<00:33:52.320> case<00:33:52.399> of<00:33:52.559> globals<00:33:53.039> like<00:33:53.120> a<00:33:53.519> like<00:33:53.760> a" + }, + { + "start": 2033.909, + "duration": 0.0, + "text": "in the case of globals like a like a" + }, + { + "start": 2033.919, + "duration": 0.0, + "text": "in the case of globals like a like a module<00:33:54.320> or<00:33:54.559> something." + }, + { + "start": 2036.31, + "duration": 0.0, + "text": "module or something." + }, + { + "start": 2036.32, + "duration": 0.0, + "text": "module or something. So<00:33:57.360> with<00:33:57.600> all<00:33:57.679> of<00:33:57.840> those<00:33:58.000> pieces<00:33:58.320> we<00:33:58.480> can<00:33:58.559> sort" + }, + { + "start": 2038.71, + "duration": 0.0, + "text": "So with all of those pieces we can sort" + }, + { + "start": 2038.72, + "duration": 0.0, + "text": "So with all of those pieces we can sort of<00:33:58.799> put<00:33:59.039> together<00:33:59.679> a<00:33:59.919> compiler<00:34:00.399> in<00:34:00.640> the" + }, + { + "start": 2040.789, + "duration": 0.0, + "text": "of put together a compiler in the" + }, + { + "start": 2040.799, + "duration": 0.0, + "text": "of put together a compiler in the debugger<00:34:01.760> which<00:34:02.080> evaluates<00:34:02.640> expressions." + }, + { + "start": 2044.47, + "duration": 0.0, + "text": "debugger which evaluates expressions." + }, + { + "start": 2044.48, + "duration": 0.0, + "text": "debugger which evaluates expressions. So" + }, + { + "start": 2046.23, + "duration": 0.0, + "text": "So" + }, + { + "start": 2046.24, + "duration": 0.0, + "text": "So now<00:34:06.480> that<00:34:06.640> we<00:34:06.720> know<00:34:06.880> how<00:34:06.960> to<00:34:07.120> compute<00:34:07.519> the" + }, + { + "start": 2047.75, + "duration": 0.0, + "text": "now that we know how to compute the" + }, + { + "start": 2047.76, + "duration": 0.0, + "text": "now that we know how to compute the value<00:34:08.399> of<00:34:08.639> an<00:34:08.879> expression,<00:34:09.280> I'll<00:34:09.520> unpack<00:34:09.839> how" + }, + { + "start": 2050.069, + "duration": 0.0, + "text": "value of an expression, I'll unpack how" + }, + { + "start": 2050.079, + "duration": 0.0, + "text": "value of an expression, I'll unpack how we<00:34:10.240> can<00:34:10.399> begin<00:34:10.960> to<00:34:11.440> uh<00:34:11.599> to<00:34:11.839> visualize<00:34:12.320> it." + }, + { + "start": 2053.829, + "duration": 0.0, + "text": "we can begin to uh to visualize it." + }, + { + "start": 2053.839, + "duration": 0.0, + "text": "we can begin to uh to visualize it. So<00:34:14.320> the<00:34:14.639> most<00:34:14.800> basic<00:34:15.119> form<00:34:15.359> of<00:34:15.520> visualization" + }, + { + "start": 2056.47, + "duration": 0.0, + "text": "So the most basic form of visualization" + }, + { + "start": 2056.48, + "duration": 0.0, + "text": "So the most basic form of visualization that<00:34:16.720> we<00:34:16.879> can<00:34:17.040> do<00:34:17.119> for<00:34:17.280> an<00:34:17.440> evaluation<00:34:18.320> is<00:34:18.720> turn" + }, + { + "start": 2058.95, + "duration": 0.0, + "text": "that we can do for an evaluation is turn" + }, + { + "start": 2058.96, + "duration": 0.0, + "text": "that we can do for an evaluation is turn its<00:34:19.280> value<00:34:19.520> into<00:34:19.760> a<00:34:19.919> string,<00:34:20.240> right?<00:34:20.480> Just" + }, + { + "start": 2060.629, + "duration": 0.0, + "text": "its value into a string, right? Just" + }, + { + "start": 2060.639, + "duration": 0.0, + "text": "its value into a string, right? Just turn<00:34:20.720> it<00:34:20.879> into<00:34:21.119> text." + }, + { + "start": 2063.75, + "duration": 0.0, + "text": "turn it into text." + }, + { + "start": 2063.76, + "duration": 0.0, + "text": "turn it into text. So<00:34:24.320> you<00:34:24.480> know,<00:34:24.639> for<00:34:24.720> example,<00:34:25.520> you've<00:34:25.839> got<00:34:26.879> uh" + }, + { + "start": 2067.03, + "duration": 0.0, + "text": "So you know, for example, you've got uh" + }, + { + "start": 2067.04, + "duration": 0.0, + "text": "So you know, for example, you've got uh some<00:34:27.280> entity<00:34:28.000> expression,<00:34:28.800> you<00:34:29.040> want<00:34:29.119> to<00:34:29.200> turn" + }, + { + "start": 2069.349, + "duration": 0.0, + "text": "some entity expression, you want to turn" + }, + { + "start": 2069.359, + "duration": 0.0, + "text": "some entity expression, you want to turn it<00:34:29.440> into<00:34:29.679> a<00:34:29.760> string<00:34:30.000> like<00:34:30.159> this.<00:34:30.399> You've<00:34:30.639> got," + }, + { + "start": 2070.869, + "duration": 0.0, + "text": "it into a string like this. You've got," + }, + { + "start": 2070.879, + "duration": 0.0, + "text": "it into a string like this. You've got, you<00:34:30.960> know,<00:34:31.359> left<00:34:31.599> curly<00:34:32.079> brace<00:34:32.399> and<00:34:32.560> then<00:34:32.639> you" + }, + { + "start": 2072.79, + "duration": 0.0, + "text": "you know, left curly brace and then you" + }, + { + "start": 2072.8, + "duration": 0.0, + "text": "you know, left curly brace and then you put<00:34:32.960> print<00:34:33.200> out<00:34:33.359> all<00:34:33.520> the<00:34:33.679> members<00:34:34.320> uh" + }, + { + "start": 2074.389, + "duration": 0.0, + "text": "put print out all the members uh" + }, + { + "start": 2074.399, + "duration": 0.0, + "text": "put print out all the members uh recursively<00:34:35.599> and<00:34:35.839> so<00:34:36.000> on." + }, + { + "start": 2078.95, + "duration": 0.0, + "text": "recursively and so on." + }, + { + "start": 2078.96, + "duration": 0.0, + "text": "recursively and so on. So<00:34:39.200> what<00:34:39.440> this<00:34:39.599> code<00:34:39.919> path<00:34:40.240> does<00:34:40.560> is<00:34:41.040> sort<00:34:41.280> of" + }, + { + "start": 2081.349, + "duration": 0.0, + "text": "So what this code path does is sort of" + }, + { + "start": 2081.359, + "duration": 0.0, + "text": "So what this code path does is sort of inherently<00:34:42.000> dependent<00:34:42.399> on<00:34:42.879> what<00:34:43.280> on<00:34:43.679> the<00:34:43.919> type" + }, + { + "start": 2084.23, + "duration": 0.0, + "text": "inherently dependent on what on the type" + }, + { + "start": 2084.24, + "duration": 0.0, + "text": "inherently dependent on what on the type information<00:34:45.040> of<00:34:45.280> some<00:34:45.520> evaluation.<00:34:46.159> So<00:34:46.320> you" + }, + { + "start": 2086.47, + "duration": 0.0, + "text": "information of some evaluation. So you" + }, + { + "start": 2086.48, + "duration": 0.0, + "text": "information of some evaluation. So you could<00:34:46.639> first<00:34:46.800> note<00:34:47.040> that<00:34:47.200> we've<00:34:47.440> got<00:34:47.520> a<00:34:47.760> set<00:34:47.919> of" + }, + { + "start": 2088.47, + "duration": 0.0, + "text": "could first note that we've got a set of" + }, + { + "start": 2088.48, + "duration": 0.0, + "text": "could first note that we've got a set of like<00:34:48.879> known<00:34:49.280> simple<00:34:49.679> cases,<00:34:50.079> right?<00:34:50.399> We<00:34:50.639> know" + }, + { + "start": 2090.79, + "duration": 0.0, + "text": "like known simple cases, right? We know" + }, + { + "start": 2090.8, + "duration": 0.0, + "text": "like known simple cases, right? We know how<00:34:50.960> to<00:34:51.040> print<00:34:51.200> an<00:34:51.359> integer.<00:34:51.760> We<00:34:51.839> know<00:34:51.919> how<00:34:52.079> to" + }, + { + "start": 2092.149, + "duration": 0.0, + "text": "how to print an integer. We know how to" + }, + { + "start": 2092.159, + "duration": 0.0, + "text": "how to print an integer. We know how to print<00:34:52.320> a<00:34:52.480> floating<00:34:52.800> point.<00:34:53.599> We<00:34:53.839> know<00:34:54.000> how<00:34:54.159> to" + }, + { + "start": 2094.23, + "duration": 0.0, + "text": "print a floating point. We know how to" + }, + { + "start": 2094.24, + "duration": 0.0, + "text": "print a floating point. We know how to print<00:34:55.359> uh<00:34:55.839> well,<00:34:56.159> okay,<00:34:56.560> strings<00:34:56.879> are" + }, + { + "start": 2097.03, + "duration": 0.0, + "text": "print uh well, okay, strings are" + }, + { + "start": 2097.04, + "duration": 0.0, + "text": "print uh well, okay, strings are complicated.<00:34:57.920> Um<00:34:58.800> but<00:34:59.040> we<00:34:59.200> know<00:34:59.280> how<00:34:59.440> to<00:34:59.520> print" + }, + { + "start": 2099.75, + "duration": 0.0, + "text": "complicated. Um but we know how to print" + }, + { + "start": 2099.76, + "duration": 0.0, + "text": "complicated. Um but we know how to print those<00:35:00.079> those<00:35:00.400> two,<00:35:00.640> right?<00:35:00.800> It's<00:35:00.960> like<00:35:01.040> an" + }, + { + "start": 2101.19, + "duration": 0.0, + "text": "those those two, right? It's like an" + }, + { + "start": 2101.2, + "duration": 0.0, + "text": "those those two, right? It's like an integer.<00:35:01.680> We<00:35:01.839> know<00:35:01.920> how<00:35:02.079> to<00:35:02.160> do<00:35:02.320> that.<00:35:02.640> you" + }, + { + "start": 2102.79, + "duration": 0.0, + "text": "integer. We know how to do that. you" + }, + { + "start": 2102.8, + "duration": 0.0, + "text": "integer. We know how to do that. you know,<00:35:02.960> maybe<00:35:03.119> we<00:35:03.280> can<00:35:03.359> change<00:35:03.520> the<00:35:03.680> radics." + }, + { + "start": 2104.47, + "duration": 0.0, + "text": "know, maybe we can change the radics." + }, + { + "start": 2104.48, + "duration": 0.0, + "text": "know, maybe we can change the radics. Um," + }, + { + "start": 2106.47, + "duration": 0.0, + "text": "Um," + }, + { + "start": 2106.48, + "duration": 0.0, + "text": "Um, with<00:35:06.640> floating<00:35:07.040> point" + }, + { + "start": 2108.55, + "duration": 0.0, + "text": "with floating point" + }, + { + "start": 2108.56, + "duration": 0.0, + "text": "with floating point also,<00:35:08.880> you<00:35:09.040> can<00:35:09.119> change<00:35:09.359> the<00:35:09.520> radex.<00:35:10.320> Uh,<00:35:10.560> but" + }, + { + "start": 2110.79, + "duration": 0.0, + "text": "also, you can change the radex. Uh, but" + }, + { + "start": 2110.8, + "duration": 0.0, + "text": "also, you can change the radex. Uh, but you<00:35:10.960> know,<00:35:11.040> we<00:35:11.200> know<00:35:11.280> how<00:35:11.440> to<00:35:11.520> print<00:35:11.680> these<00:35:11.920> two" + }, + { + "start": 2112.069, + "duration": 0.0, + "text": "you know, we know how to print these two" + }, + { + "start": 2112.079, + "duration": 0.0, + "text": "you know, we know how to print these two things.<00:35:13.040> With<00:35:13.599> uh<00:35:14.560> strings,<00:35:14.960> it's<00:35:15.280> relatively" + }, + { + "start": 2115.91, + "duration": 0.0, + "text": "things. With uh strings, it's relatively" + }, + { + "start": 2115.92, + "duration": 0.0, + "text": "things. With uh strings, it's relatively basic,<00:35:16.400> but<00:35:16.640> it's<00:35:16.960> it's<00:35:17.359> not<00:35:17.520> as<00:35:17.680> it's<00:35:18.000> not<00:35:18.079> as" + }, + { + "start": 2118.23, + "duration": 0.0, + "text": "basic, but it's it's not as it's not as" + }, + { + "start": 2118.24, + "duration": 0.0, + "text": "basic, but it's it's not as it's not as trivial<00:35:18.560> as<00:35:18.640> those<00:35:18.880> first<00:35:19.040> two<00:35:19.200> cases<00:35:19.520> because" + }, + { + "start": 2119.75, + "duration": 0.0, + "text": "trivial as those first two cases because" + }, + { + "start": 2119.76, + "duration": 0.0, + "text": "trivial as those first two cases because strings<00:35:21.040> um<00:35:21.680> they're<00:35:21.920> not<00:35:22.160> normally<00:35:22.480> encoded" + }, + { + "start": 2123.03, + "duration": 0.0, + "text": "strings um they're not normally encoded" + }, + { + "start": 2123.04, + "duration": 0.0, + "text": "strings um they're not normally encoded as<00:35:23.760> uh<00:35:24.160> or<00:35:24.400> they're<00:35:24.640> normally<00:35:24.880> encoded<00:35:25.200> as<00:35:25.440> a" + }, + { + "start": 2125.589, + "duration": 0.0, + "text": "as uh or they're normally encoded as a" + }, + { + "start": 2125.599, + "duration": 0.0, + "text": "as uh or they're normally encoded as a like<00:35:25.760> a<00:35:26.000> pointer<00:35:26.560> or<00:35:26.800> an<00:35:27.040> array<00:35:27.280> of<00:35:27.440> characters" + }, + { + "start": 2127.91, + "duration": 0.0, + "text": "like a pointer or an array of characters" + }, + { + "start": 2127.92, + "duration": 0.0, + "text": "like a pointer or an array of characters in<00:35:28.079> in<00:35:28.320> the<00:35:28.400> case<00:35:28.560> of<00:35:28.640> like<00:35:28.800> C<00:35:29.040> types." + }, + { + "start": 2129.27, + "duration": 0.0, + "text": "in in the case of like C types." + }, + { + "start": 2129.28, + "duration": 0.0, + "text": "in in the case of like C types. Obviously<00:35:29.680> there's<00:35:29.839> formal<00:35:30.240> types<00:35:30.480> in<00:35:30.640> the" + }, + { + "start": 2130.87, + "duration": 0.0, + "text": "Obviously there's formal types in the" + }, + { + "start": 2130.88, + "duration": 0.0, + "text": "Obviously there's formal types in the languages<00:35:31.280> but<00:35:31.520> in<00:35:31.680> terms<00:35:31.839> of<00:35:31.920> debug<00:35:32.320> info" + }, + { + "start": 2133.03, + "duration": 0.0, + "text": "languages but in terms of debug info" + }, + { + "start": 2133.04, + "duration": 0.0, + "text": "languages but in terms of debug info there's<00:35:33.280> no<00:35:33.520> string<00:35:34.000> like<00:35:34.160> there's<00:35:34.320> no<00:35:34.480> formal" + }, + { + "start": 2134.79, + "duration": 0.0, + "text": "there's no string like there's no formal" + }, + { + "start": 2134.8, + "duration": 0.0, + "text": "there's no string like there's no formal string<00:35:35.040> type<00:35:35.200> in<00:35:35.359> the<00:35:35.440> debug<00:35:35.839> info<00:35:36.160> obviously" + }, + { + "start": 2136.55, + "duration": 0.0, + "text": "string type in the debug info obviously" + }, + { + "start": 2136.56, + "duration": 0.0, + "text": "string type in the debug info obviously because<00:35:36.800> debug<00:35:37.119> info<00:35:37.440> evolves<00:35:37.839> around<00:35:38.320> sort" + }, + { + "start": 2138.47, + "duration": 0.0, + "text": "because debug info evolves around sort" + }, + { + "start": 2138.48, + "duration": 0.0, + "text": "because debug info evolves around sort of<00:35:38.560> the<00:35:38.720> C<00:35:38.960> tool<00:35:39.200> chain<00:35:39.839> there's<00:35:40.160> the<00:35:40.400> standard" + }, + { + "start": 2140.79, + "duration": 0.0, + "text": "of the C tool chain there's the standard" + }, + { + "start": 2140.8, + "duration": 0.0, + "text": "of the C tool chain there's the standard of<00:35:41.280> string<00:35:41.520> types<00:35:41.760> in<00:35:42.000> other<00:35:42.160> languages<00:35:43.119> not" + }, + { + "start": 2143.589, + "duration": 0.0, + "text": "of string types in other languages not" + }, + { + "start": 2143.599, + "duration": 0.0, + "text": "of string types in other languages not buried<00:35:43.920> that<00:35:44.079> deep<00:35:44.240> in<00:35:44.400> the<00:35:44.560> ecosystem." + }, + { + "start": 2146.79, + "duration": 0.0, + "text": "buried that deep in the ecosystem." + }, + { + "start": 2146.8, + "duration": 0.0, + "text": "buried that deep in the ecosystem. Um,<00:35:47.440> so<00:35:47.599> if<00:35:47.760> it's<00:35:47.920> a<00:35:48.000> pointer<00:35:48.320> to<00:35:48.480> a<00:35:48.640> character" + }, + { + "start": 2148.95, + "duration": 0.0, + "text": "Um, so if it's a pointer to a character" + }, + { + "start": 2148.96, + "duration": 0.0, + "text": "Um, so if it's a pointer to a character type,<00:35:49.359> it's<00:35:49.599> a<00:35:49.760> pretty<00:35:50.000> safe<00:35:50.240> bet<00:35:50.480> that<00:35:50.720> it's<00:35:50.880> a" + }, + { + "start": 2151.03, + "duration": 0.0, + "text": "type, it's a pretty safe bet that it's a" + }, + { + "start": 2151.04, + "duration": 0.0, + "text": "type, it's a pretty safe bet that it's a string.<00:35:51.599> But<00:35:51.760> if<00:35:51.839> it's<00:35:52.000> a<00:35:52.079> pointer<00:35:52.400> to<00:35:52.480> a<00:35:52.640> U8," + }, + { + "start": 2153.589, + "duration": 0.0, + "text": "string. But if it's a pointer to a U8," + }, + { + "start": 2153.599, + "duration": 0.0, + "text": "string. But if it's a pointer to a U8, it's<00:35:53.839> like<00:35:54.800> maybe<00:35:55.119> a<00:35:55.280> string.<00:35:55.680> Like<00:35:55.920> who<00:35:56.160> knows" + }, + { + "start": 2156.39, + "duration": 0.0, + "text": "it's like maybe a string. Like who knows" + }, + { + "start": 2156.4, + "duration": 0.0, + "text": "it's like maybe a string. Like who knows for<00:35:56.640> sure,<00:35:56.960> probably,<00:35:57.920> maybe<00:35:58.320> not,<00:35:58.800> you<00:35:58.960> know," + }, + { + "start": 2159.27, + "duration": 0.0, + "text": "for sure, probably, maybe not, you know," + }, + { + "start": 2159.28, + "duration": 0.0, + "text": "for sure, probably, maybe not, you know, not<00:35:59.520> really<00:35:59.760> clear.<00:36:00.240> But<00:36:00.320> you<00:36:00.560> can<00:36:00.640> try<00:36:00.800> it<00:36:00.960> and" + }, + { + "start": 2161.109, + "duration": 0.0, + "text": "not really clear. But you can try it and" + }, + { + "start": 2161.119, + "duration": 0.0, + "text": "not really clear. But you can try it and then<00:36:01.280> if<00:36:01.440> it<00:36:01.599> doesn't<00:36:02.079> produce<00:36:02.400> any,<00:36:02.800> you" + }, + { + "start": 2162.87, + "duration": 0.0, + "text": "then if it doesn't produce any, you" + }, + { + "start": 2162.88, + "duration": 0.0, + "text": "then if it doesn't produce any, you know,<00:36:03.119> seemingly<00:36:03.520> readable<00:36:03.920> text,<00:36:04.880> you<00:36:05.040> know," + }, + { + "start": 2165.349, + "duration": 0.0, + "text": "know, seemingly readable text, you know," + }, + { + "start": 2165.359, + "duration": 0.0, + "text": "know, seemingly readable text, you know, maybe<00:36:05.680> don't<00:36:05.839> use<00:36:06.079> it.<00:36:07.040> Um,<00:36:07.760> the<00:36:08.000> other<00:36:08.160> caveat" + }, + { + "start": 2168.47, + "duration": 0.0, + "text": "maybe don't use it. Um, the other caveat" + }, + { + "start": 2168.48, + "duration": 0.0, + "text": "maybe don't use it. Um, the other caveat is<00:36:08.640> that<00:36:08.800> you<00:36:08.960> don't<00:36:09.119> actually<00:36:09.280> know<00:36:09.440> how<00:36:09.680> many" + }, + { + "start": 2169.91, + "duration": 0.0, + "text": "is that you don't actually know how many" + }, + { + "start": 2169.92, + "duration": 0.0, + "text": "is that you don't actually know how many characters<00:36:10.720> you're<00:36:10.960> working<00:36:11.119> with,<00:36:11.440> right?" + }, + { + "start": 2171.589, + "duration": 0.0, + "text": "characters you're working with, right?" + }, + { + "start": 2171.599, + "duration": 0.0, + "text": "characters you're working with, right? you<00:36:11.760> don't<00:36:12.079> because<00:36:12.320> it's<00:36:12.560> just<00:36:12.720> pointers<00:36:13.280> in" + }, + { + "start": 2173.51, + "duration": 0.0, + "text": "you don't because it's just pointers in" + }, + { + "start": 2173.52, + "duration": 0.0, + "text": "you don't because it's just pointers in the<00:36:13.599> type<00:36:13.839> info.<00:36:14.560> You<00:36:14.800> don't<00:36:14.960> know<00:36:15.200> that<00:36:15.440> like" + }, + { + "start": 2175.589, + "duration": 0.0, + "text": "the type info. You don't know that like" + }, + { + "start": 2175.599, + "duration": 0.0, + "text": "the type info. You don't know that like that's,<00:36:16.160> you<00:36:16.240> know,<00:36:16.400> that's<00:36:16.560> what<00:36:16.720> everyone" + }, + { + "start": 2176.95, + "duration": 0.0, + "text": "that's, you know, that's what everyone" + }, + { + "start": 2176.96, + "duration": 0.0, + "text": "that's, you know, that's what everyone talks<00:36:17.119> about<00:36:17.200> with<00:36:17.359> pointers.<00:36:17.760> You<00:36:17.920> don't" + }, + { + "start": 2178.069, + "duration": 0.0, + "text": "talks about with pointers. You don't" + }, + { + "start": 2178.079, + "duration": 0.0, + "text": "talks about with pointers. You don't know<00:36:19.119> how<00:36:19.359> many<00:36:19.520> things<00:36:19.760> they're<00:36:20.000> pointing" + }, + { + "start": 2180.23, + "duration": 0.0, + "text": "know how many things they're pointing" + }, + { + "start": 2180.24, + "duration": 0.0, + "text": "know how many things they're pointing to,<00:36:20.960> you<00:36:21.119> know.<00:36:21.280> So,<00:36:22.000> um,<00:36:22.400> you<00:36:22.560> know," + }, + { + "start": 2184.23, + "duration": 0.0, + "text": "to, you know. So, um, you know," + }, + { + "start": 2184.24, + "duration": 0.0, + "text": "to, you know. So, um, you know, you<00:36:24.400> kind<00:36:24.560> of<00:36:24.640> have<00:36:24.800> to<00:36:24.880> guess.<00:36:25.119> You<00:36:25.280> could" + }, + { + "start": 2185.349, + "duration": 0.0, + "text": "you kind of have to guess. You could" + }, + { + "start": 2185.359, + "duration": 0.0, + "text": "you kind of have to guess. You could say,<00:36:25.599> I've<00:36:25.839> got<00:36:25.920> some<00:36:26.160> fixed<00:36:26.400> upper<00:36:26.720> limit." + }, + { + "start": 2187.03, + "duration": 0.0, + "text": "say, I've got some fixed upper limit." + }, + { + "start": 2187.04, + "duration": 0.0, + "text": "say, I've got some fixed upper limit. I'll<00:36:27.280> look<00:36:27.359> for<00:36:27.520> a<00:36:27.680> null<00:36:27.920> terminator.<00:36:28.800> Um,<00:36:29.280> you" + }, + { + "start": 2189.43, + "duration": 0.0, + "text": "I'll look for a null terminator. Um, you" + }, + { + "start": 2189.44, + "duration": 0.0, + "text": "I'll look for a null terminator. Um, you know,<00:36:29.520> the<00:36:29.760> UI<00:36:30.000> can<00:36:30.160> only<00:36:30.320> render<00:36:30.640> so<00:36:30.800> much" + }, + { + "start": 2190.95, + "duration": 0.0, + "text": "know, the UI can only render so much" + }, + { + "start": 2190.96, + "duration": 0.0, + "text": "know, the UI can only render so much text<00:36:31.280> anyways.<00:36:31.920> So,<00:36:32.079> you<00:36:32.240> can<00:36:32.560> have<00:36:32.720> a<00:36:32.880> pretty" + }, + { + "start": 2193.03, + "duration": 0.0, + "text": "text anyways. So, you can have a pretty" + }, + { + "start": 2193.04, + "duration": 0.0, + "text": "text anyways. So, you can have a pretty small<00:36:33.280> limit,<00:36:33.920> but,<00:36:34.240> you<00:36:34.400> know,<00:36:35.119> not<00:36:35.359> too" + }, + { + "start": 2195.589, + "duration": 0.0, + "text": "small limit, but, you know, not too" + }, + { + "start": 2195.599, + "duration": 0.0, + "text": "small limit, but, you know, not too difficult.<00:36:36.880> With<00:36:37.119> enum<00:36:37.520> values,<00:36:38.640> you<00:36:38.800> can" + }, + { + "start": 2198.87, + "duration": 0.0, + "text": "difficult. With enum values, you can" + }, + { + "start": 2198.88, + "duration": 0.0, + "text": "difficult. With enum values, you can just<00:36:39.040> look<00:36:39.200> at<00:36:39.280> the<00:36:39.359> enum<00:36:39.760> type<00:36:39.920> info<00:36:40.160> since" + }, + { + "start": 2200.31, + "duration": 0.0, + "text": "just look at the enum type info since" + }, + { + "start": 2200.32, + "duration": 0.0, + "text": "just look at the enum type info since that's<00:36:40.560> in<00:36:40.880> in<00:36:41.119> the<00:36:41.280> debug<00:36:41.680> info.<00:36:42.320> You<00:36:42.480> can" + }, + { + "start": 2202.63, + "duration": 0.0, + "text": "that's in in the debug info. You can" + }, + { + "start": 2202.64, + "duration": 0.0, + "text": "that's in in the debug info. You can like<00:36:43.119> try<00:36:43.359> to<00:36:43.520> find<00:36:43.839> some<00:36:44.079> member<00:36:44.400> inside<00:36:44.640> of" + }, + { + "start": 2204.71, + "duration": 0.0, + "text": "like try to find some member inside of" + }, + { + "start": 2204.72, + "duration": 0.0, + "text": "like try to find some member inside of the<00:36:44.880> enum<00:36:45.280> type<00:36:45.440> info.<00:36:45.839> See<00:36:46.000> if<00:36:46.320> an<00:36:46.560> integer" + }, + { + "start": 2206.95, + "duration": 0.0, + "text": "the enum type info. See if an integer" + }, + { + "start": 2206.96, + "duration": 0.0, + "text": "the enum type info. See if an integer evaluation<00:36:47.839> or<00:36:48.079> an<00:36:48.640> uh<00:36:48.880> you<00:36:49.040> know,<00:36:49.200> you'd<00:36:49.520> have" + }, + { + "start": 2209.589, + "duration": 0.0, + "text": "evaluation or an uh you know, you'd have" + }, + { + "start": 2209.599, + "duration": 0.0, + "text": "evaluation or an uh you know, you'd have it<00:36:49.839> as<00:36:50.000> an<00:36:50.079> enum<00:36:50.560> evaluation.<00:36:51.520> Uh<00:36:51.760> you<00:36:52.000> could" + }, + { + "start": 2212.069, + "duration": 0.0, + "text": "it as an enum evaluation. Uh you could" + }, + { + "start": 2212.079, + "duration": 0.0, + "text": "it as an enum evaluation. Uh you could say<00:36:52.320> like<00:36:52.480> I've<00:36:52.720> got<00:36:52.880> this<00:36:53.040> integer<00:36:53.440> value." + }, + { + "start": 2213.75, + "duration": 0.0, + "text": "say like I've got this integer value." + }, + { + "start": 2213.76, + "duration": 0.0, + "text": "say like I've got this integer value. Let's<00:36:54.000> try<00:36:54.079> to<00:36:54.240> look<00:36:54.320> up<00:36:54.480> at<00:36:54.640> the<00:36:54.800> enum<00:36:55.200> type" + }, + { + "start": 2215.43, + "duration": 0.0, + "text": "Let's try to look up at the enum type" + }, + { + "start": 2215.44, + "duration": 0.0, + "text": "Let's try to look up at the enum type information.<00:36:56.000> Find<00:36:56.240> out<00:36:57.200> if<00:36:57.440> there's<00:36:57.599> a" + }, + { + "start": 2217.75, + "duration": 0.0, + "text": "information. Find out if there's a" + }, + { + "start": 2217.76, + "duration": 0.0, + "text": "information. Find out if there's a member<00:36:57.920> inside<00:36:58.160> of<00:36:58.240> the<00:36:58.400> enum<00:36:59.040> that<00:37:00.160> um<00:37:01.359> that" + }, + { + "start": 2222.31, + "duration": 0.0, + "text": "member inside of the enum that um that" + }, + { + "start": 2222.32, + "duration": 0.0, + "text": "member inside of the enum that um that there's<00:37:02.560> a<00:37:02.720> member<00:37:02.880> that<00:37:03.119> has<00:37:03.280> a<00:37:03.440> value<00:37:03.599> that" + }, + { + "start": 2223.829, + "duration": 0.0, + "text": "there's a member that has a value that" + }, + { + "start": 2223.839, + "duration": 0.0, + "text": "there's a member that has a value that matches<00:37:04.160> whatever<00:37:04.480> value<00:37:04.720> I<00:37:04.880> evaluated.<00:37:05.599> then" + }, + { + "start": 2225.75, + "duration": 0.0, + "text": "matches whatever value I evaluated. then" + }, + { + "start": 2225.76, + "duration": 0.0, + "text": "matches whatever value I evaluated. then I<00:37:05.920> use<00:37:06.079> the<00:37:06.240> name<00:37:07.040> if<00:37:07.280> if<00:37:07.520> not<00:37:07.680> then<00:37:07.839> maybe<00:37:08.000> I" + }, + { + "start": 2228.15, + "duration": 0.0, + "text": "I use the name if if not then maybe I" + }, + { + "start": 2228.16, + "duration": 0.0, + "text": "I use the name if if not then maybe I just<00:37:08.320> fall<00:37:08.480> back<00:37:08.560> to<00:37:08.640> the<00:37:08.800> integer<00:37:09.119> case<00:37:09.599> or" + }, + { + "start": 2229.91, + "duration": 0.0, + "text": "just fall back to the integer case or" + }, + { + "start": 2229.92, + "duration": 0.0, + "text": "just fall back to the integer case or whatever." + }, + { + "start": 2232.15, + "duration": 0.0, + "text": "whatever." + }, + { + "start": 2232.16, + "duration": 0.0, + "text": "whatever. The<00:37:12.400> only<00:37:12.560> missing<00:37:12.880> piece<00:37:13.040> here<00:37:13.680> are<00:37:14.000> compound" + }, + { + "start": 2234.47, + "duration": 0.0, + "text": "The only missing piece here are compound" + }, + { + "start": 2234.48, + "duration": 0.0, + "text": "The only missing piece here are compound types<00:37:14.800> like<00:37:14.960> strrus,<00:37:15.440> unions<00:37:15.760> and<00:37:15.920> arrays." + }, + { + "start": 2237.51, + "duration": 0.0, + "text": "types like strrus, unions and arrays." + }, + { + "start": 2237.52, + "duration": 0.0, + "text": "types like strrus, unions and arrays. Uh<00:37:17.839> so<00:37:18.000> with<00:37:18.160> a<00:37:18.320> strruct" + }, + { + "start": 2240.15, + "duration": 0.0, + "text": "Uh so with a strruct" + }, + { + "start": 2240.16, + "duration": 0.0, + "text": "Uh so with a strruct might<00:37:20.320> want<00:37:20.480> something<00:37:20.720> like<00:37:20.800> that<00:37:21.040> like<00:37:21.200> I" + }, + { + "start": 2241.349, + "duration": 0.0, + "text": "might want something like that like I" + }, + { + "start": 2241.359, + "duration": 0.0, + "text": "might want something like that like I mentioned<00:37:21.599> earlier<00:37:22.000> braces<00:37:22.720> iterate<00:37:23.119> the" + }, + { + "start": 2243.349, + "duration": 0.0, + "text": "mentioned earlier braces iterate the" + }, + { + "start": 2243.359, + "duration": 0.0, + "text": "mentioned earlier braces iterate the members." + }, + { + "start": 2246.31, + "duration": 0.0, + "text": "members." + }, + { + "start": 2246.32, + "duration": 0.0, + "text": "members. So<00:37:27.040> this<00:37:27.280> can<00:37:27.440> be<00:37:27.599> done<00:37:27.760> by<00:37:28.000> just<00:37:28.400> you<00:37:28.640> walk" + }, + { + "start": 2249.03, + "duration": 0.0, + "text": "So this can be done by just you walk" + }, + { + "start": 2249.04, + "duration": 0.0, + "text": "So this can be done by just you walk basically<00:37:29.359> the<00:37:29.520> strct<00:37:29.839> members<00:37:30.079> recursively." + }, + { + "start": 2251.589, + "duration": 0.0, + "text": "basically the strct members recursively." + }, + { + "start": 2251.599, + "duration": 0.0, + "text": "basically the strct members recursively. So<00:37:31.760> you<00:37:31.920> walk<00:37:32.079> to<00:37:32.240> each<00:37:32.880> uh<00:37:33.200> child<00:37:33.839> and<00:37:34.000> then" + }, + { + "start": 2254.15, + "duration": 0.0, + "text": "So you walk to each uh child and then" + }, + { + "start": 2254.16, + "duration": 0.0, + "text": "So you walk to each uh child and then when<00:37:34.320> you<00:37:34.480> come<00:37:34.640> across<00:37:34.960> another<00:37:35.520> compound" + }, + { + "start": 2255.91, + "duration": 0.0, + "text": "when you come across another compound" + }, + { + "start": 2255.92, + "duration": 0.0, + "text": "when you come across another compound strct,<00:37:36.160> you've<00:37:36.320> got<00:37:36.400> a<00:37:36.480> strct<00:37:36.720> inside<00:37:36.960> of<00:37:37.040> a" + }, + { + "start": 2257.109, + "duration": 0.0, + "text": "strct, you've got a strct inside of a" + }, + { + "start": 2257.119, + "duration": 0.0, + "text": "strct, you've got a strct inside of a strruct.<00:37:37.680> You've<00:37:37.839> got<00:37:37.920> to<00:37:38.079> say,<00:37:38.240> okay,<00:37:38.480> I'm" + }, + { + "start": 2258.63, + "duration": 0.0, + "text": "strruct. You've got to say, okay, I'm" + }, + { + "start": 2258.64, + "duration": 0.0, + "text": "strruct. You've got to say, okay, I'm going<00:37:38.720> to<00:37:38.800> recursively<00:37:39.280> descend<00:37:39.599> into<00:37:39.760> that." + }, + { + "start": 2259.99, + "duration": 0.0, + "text": "going to recursively descend into that." + }, + { + "start": 2260.0, + "duration": 0.0, + "text": "going to recursively descend into that. So<00:37:40.079> I<00:37:40.240> go,<00:37:40.720> you<00:37:40.960> know,<00:37:41.359> um<00:37:41.599> doesn't<00:37:41.839> have<00:37:41.920> to<00:37:42.000> be" + }, + { + "start": 2262.15, + "duration": 0.0, + "text": "So I go, you know, um doesn't have to be" + }, + { + "start": 2262.16, + "duration": 0.0, + "text": "So I go, you know, um doesn't have to be literally<00:37:42.480> recursive,<00:37:43.280> but<00:37:43.680> you<00:37:43.839> know,<00:37:44.480> uh" + }, + { + "start": 2264.63, + "duration": 0.0, + "text": "literally recursive, but you know, uh" + }, + { + "start": 2264.64, + "duration": 0.0, + "text": "literally recursive, but you know, uh the<00:37:44.800> the<00:37:45.119> sort<00:37:45.280> of<00:37:45.359> algorithm<00:37:45.760> is<00:37:45.920> sort<00:37:46.079> of" + }, + { + "start": 2266.15, + "duration": 0.0, + "text": "the the sort of algorithm is sort of" + }, + { + "start": 2266.16, + "duration": 0.0, + "text": "the the sort of algorithm is sort of recursive.<00:37:46.640> You<00:37:46.720> need<00:37:46.800> like<00:37:46.960> a<00:37:47.119> stack.<00:37:47.839> So<00:37:49.280> um" + }, + { + "start": 2270.23, + "duration": 0.0, + "text": "recursive. You need like a stack. So um" + }, + { + "start": 2270.24, + "duration": 0.0, + "text": "recursive. You need like a stack. So um so<00:37:50.480> yeah,<00:37:50.640> you<00:37:50.800> walk<00:37:51.040> the<00:37:51.200> children,<00:37:51.599> you<00:37:51.760> do" + }, + { + "start": 2271.99, + "duration": 0.0, + "text": "so yeah, you walk the children, you do" + }, + { + "start": 2272.0, + "duration": 0.0, + "text": "so yeah, you walk the children, you do that,<00:37:52.640> you<00:37:52.880> can<00:37:52.960> get<00:37:53.040> a<00:37:53.200> string<00:37:53.440> like<00:37:53.599> that." + }, + { + "start": 2276.31, + "duration": 0.0, + "text": "that, you can get a string like that." + }, + { + "start": 2276.32, + "duration": 0.0, + "text": "that, you can get a string like that. Um<00:37:57.119> with<00:37:57.359> arrays,<00:37:57.920> very<00:37:58.160> similar<00:37:58.480> problem." + }, + { + "start": 2279.03, + "duration": 0.0, + "text": "Um with arrays, very similar problem." + }, + { + "start": 2279.04, + "duration": 0.0, + "text": "Um with arrays, very similar problem. you've<00:37:59.359> got<00:37:59.520> some<00:37:59.760> you<00:37:59.920> know<00:38:00.000> you<00:38:00.160> have<00:38:00.240> some" + }, + { + "start": 2280.39, + "duration": 0.0, + "text": "you've got some you know you have some" + }, + { + "start": 2280.4, + "duration": 0.0, + "text": "you've got some you know you have some notion<00:38:00.640> of<00:38:00.800> how<00:38:00.960> many<00:38:01.119> elements<00:38:01.440> are<00:38:01.599> in<00:38:01.680> the" + }, + { + "start": 2281.829, + "duration": 0.0, + "text": "notion of how many elements are in the" + }, + { + "start": 2281.839, + "duration": 0.0, + "text": "notion of how many elements are in the array.<00:38:02.000> So<00:38:02.079> you<00:38:02.320> can<00:38:02.400> say<00:38:02.800> well<00:38:02.960> I<00:38:03.119> found<00:38:03.280> the" + }, + { + "start": 2283.51, + "duration": 0.0, + "text": "array. So you can say well I found the" + }, + { + "start": 2283.52, + "duration": 0.0, + "text": "array. So you can say well I found the base<00:38:03.760> address<00:38:04.000> of<00:38:04.079> the<00:38:04.240> array<00:38:04.480> but<00:38:04.640> to" + }, + { + "start": 2284.87, + "duration": 0.0, + "text": "base address of the array but to" + }, + { + "start": 2284.88, + "duration": 0.0, + "text": "base address of the array but to actually<00:38:05.040> visualize<00:38:05.440> this<00:38:05.599> as<00:38:05.760> a<00:38:05.920> string<00:38:06.160> I" + }, + { + "start": 2286.31, + "duration": 0.0, + "text": "actually visualize this as a string I" + }, + { + "start": 2286.32, + "duration": 0.0, + "text": "actually visualize this as a string I want<00:38:06.400> to<00:38:06.560> go<00:38:06.960> okay<00:38:07.280> go<00:38:07.440> to<00:38:07.599> the<00:38:07.760> first<00:38:08.000> element" + }, + { + "start": 2288.79, + "duration": 0.0, + "text": "want to go okay go to the first element" + }, + { + "start": 2288.8, + "duration": 0.0, + "text": "want to go okay go to the first element turn<00:38:08.960> it<00:38:09.119> into<00:38:09.280> a<00:38:09.520> string<00:38:10.160> second<00:38:10.480> element" + }, + { + "start": 2290.87, + "duration": 0.0, + "text": "turn it into a string second element" + }, + { + "start": 2290.88, + "duration": 0.0, + "text": "turn it into a string second element turn<00:38:11.040> it<00:38:11.200> into<00:38:11.359> a<00:38:11.520> string<00:38:12.079> commas<00:38:12.480> delimiting" + }, + { + "start": 2293.03, + "duration": 0.0, + "text": "turn it into a string commas delimiting" + }, + { + "start": 2293.04, + "duration": 0.0, + "text": "turn it into a string commas delimiting them<00:38:14.000> pretty<00:38:14.320> basic<00:38:14.640> problem" + }, + { + "start": 2297.589, + "duration": 0.0, + "text": "them pretty basic problem" + }, + { + "start": 2297.599, + "duration": 0.0, + "text": "them pretty basic problem um<00:38:18.880> this<00:38:19.040> is<00:38:19.200> also<00:38:19.440> recursive<00:38:20.800> uh<00:38:21.280> so" + }, + { + "start": 2306.4, + "duration": 0.0, + "text": "so<00:38:27.200> what<00:38:27.440> I<00:38:27.599> want<00:38:27.680> to<00:38:27.760> note<00:38:28.079> here<00:38:28.400> is<00:38:28.640> that<00:38:28.880> both" + }, + { + "start": 2309.109, + "duration": 0.0, + "text": "so what I want to note here is that both" + }, + { + "start": 2309.119, + "duration": 0.0, + "text": "so what I want to note here is that both of<00:38:29.280> these<00:38:30.079> uh<00:38:30.320> exhibit<00:38:30.720> sort<00:38:30.960> of" + }, + { + "start": 2311.829, + "duration": 0.0, + "text": "of these uh exhibit sort of" + }, + { + "start": 2311.839, + "duration": 0.0, + "text": "of these uh exhibit sort of a<00:38:32.160> single<00:38:32.400> pattern<00:38:33.040> that<00:38:33.280> we<00:38:33.440> can<00:38:33.520> think<00:38:33.680> of" + }, + { + "start": 2313.829, + "duration": 0.0, + "text": "a single pattern that we can think of" + }, + { + "start": 2313.839, + "duration": 0.0, + "text": "a single pattern that we can think of which<00:38:34.000> is<00:38:34.160> that<00:38:34.400> if<00:38:34.560> we've<00:38:34.800> got<00:38:34.960> some" + }, + { + "start": 2315.109, + "duration": 0.0, + "text": "which is that if we've got some" + }, + { + "start": 2315.119, + "duration": 0.0, + "text": "which is that if we've got some evaluation<00:38:36.079> you've<00:38:36.400> computed<00:38:36.800> some" + }, + { + "start": 2316.95, + "duration": 0.0, + "text": "evaluation you've computed some" + }, + { + "start": 2316.96, + "duration": 0.0, + "text": "evaluation you've computed some evaluation<00:38:38.320> certain<00:38:38.640> types<00:38:39.119> can<00:38:39.280> produce<00:38:39.599> a" + }, + { + "start": 2319.91, + "duration": 0.0, + "text": "evaluation certain types can produce a" + }, + { + "start": 2319.92, + "duration": 0.0, + "text": "evaluation certain types can produce a set<00:38:40.160> of<00:38:40.400> child<00:38:40.720> evaluations<00:38:41.520> right<00:38:41.680> so<00:38:41.839> in<00:38:42.000> the" + }, + { + "start": 2322.069, + "duration": 0.0, + "text": "set of child evaluations right so in the" + }, + { + "start": 2322.079, + "duration": 0.0, + "text": "set of child evaluations right so in the case<00:38:42.160> of<00:38:42.320> the<00:38:42.480> strruct<00:38:43.599> you<00:38:43.760> produce<00:38:44.079> all<00:38:44.160> the" + }, + { + "start": 2324.31, + "duration": 0.0, + "text": "case of the strruct you produce all the" + }, + { + "start": 2324.32, + "duration": 0.0, + "text": "case of the strruct you produce all the members<00:38:45.119> and<00:38:45.359> if<00:38:45.520> in<00:38:45.760> the<00:38:45.839> case<00:38:45.920> of<00:38:46.079> arrays<00:38:46.640> you" + }, + { + "start": 2326.87, + "duration": 0.0, + "text": "members and if in the case of arrays you" + }, + { + "start": 2326.88, + "duration": 0.0, + "text": "members and if in the case of arrays you produce<00:38:47.119> all<00:38:47.359> of<00:38:47.440> the<00:38:47.920> array<00:38:48.240> elements" + }, + { + "start": 2331.92, + "duration": 0.0, + "text": "um" + }, + { + "start": 2333.589, + "duration": 0.0, + "text": "um" + }, + { + "start": 2333.599, + "duration": 0.0, + "text": "um another<00:38:53.920> common<00:38:54.240> case<00:38:54.560> just<00:38:54.880> before<00:38:55.119> I<00:38:55.280> move" + }, + { + "start": 2335.43, + "duration": 0.0, + "text": "another common case just before I move" + }, + { + "start": 2335.44, + "duration": 0.0, + "text": "another common case just before I move on<00:38:56.000> pointers<00:38:56.880> uh<00:38:57.599> don't<00:38:57.839> always<00:38:58.079> point<00:38:58.240> to" + }, + { + "start": 2338.39, + "duration": 0.0, + "text": "on pointers uh don't always point to" + }, + { + "start": 2338.4, + "duration": 0.0, + "text": "on pointers uh don't always point to strings<00:38:58.960> obviously<00:38:59.280> like<00:38:59.520> sometimes<00:38:59.760> they" + }, + { + "start": 2339.99, + "duration": 0.0, + "text": "strings obviously like sometimes they" + }, + { + "start": 2340.0, + "duration": 0.0, + "text": "strings obviously like sometimes they point<00:39:00.160> to<00:39:00.320> a<00:39:00.480> strruct" + }, + { + "start": 2341.829, + "duration": 0.0, + "text": "point to a strruct" + }, + { + "start": 2341.839, + "duration": 0.0, + "text": "point to a strruct Um<00:39:03.040> so<00:39:03.760> uh<00:39:04.240> in<00:39:04.480> those<00:39:04.720> cases<00:39:05.119> you<00:39:05.280> don't<00:39:05.440> just" + }, + { + "start": 2345.67, + "duration": 0.0, + "text": "Um so uh in those cases you don't just" + }, + { + "start": 2345.68, + "duration": 0.0, + "text": "Um so uh in those cases you don't just want<00:39:05.760> to<00:39:05.920> see<00:39:06.079> like<00:39:06.400> oh<00:39:06.640> my<00:39:06.880> pointer<00:39:07.280> value<00:39:07.599> is" + }, + { + "start": 2347.829, + "duration": 0.0, + "text": "want to see like oh my pointer value is" + }, + { + "start": 2347.839, + "duration": 0.0, + "text": "want to see like oh my pointer value is like<00:39:08.720> that<00:39:09.119> it's<00:39:09.280> like<00:39:09.440> you<00:39:09.680> want<00:39:09.760> to<00:39:09.839> see<00:39:09.920> what" + }, + { + "start": 2350.069, + "duration": 0.0, + "text": "like that it's like you want to see what" + }, + { + "start": 2350.079, + "duration": 0.0, + "text": "like that it's like you want to see what it's<00:39:10.320> pointing<00:39:10.560> to<00:39:10.880> often<00:39:11.599> um<00:39:11.680> other<00:39:11.920> than" + }, + { + "start": 2352.15, + "duration": 0.0, + "text": "it's pointing to often um other than" + }, + { + "start": 2352.16, + "duration": 0.0, + "text": "it's pointing to often um other than strruct<00:39:12.480> memory.<00:39:12.720> So<00:39:12.880> in<00:39:13.040> that<00:39:13.200> case<00:39:13.920> uh" + }, + { + "start": 2353.99, + "duration": 0.0, + "text": "strruct memory. So in that case uh" + }, + { + "start": 2354.0, + "duration": 0.0, + "text": "strruct memory. So in that case uh that's<00:39:14.240> also<00:39:14.480> another<00:39:14.800> case<00:39:15.040> of<00:39:15.280> expansion" + }, + { + "start": 2357.27, + "duration": 0.0, + "text": "that's also another case of expansion" + }, + { + "start": 2357.28, + "duration": 0.0, + "text": "that's also another case of expansion uh<00:39:17.440> you<00:39:17.599> just<00:39:17.760> dreference<00:39:18.320> the<00:39:18.480> pointer<00:39:18.880> you" + }, + { + "start": 2359.109, + "duration": 0.0, + "text": "uh you just dreference the pointer you" + }, + { + "start": 2359.119, + "duration": 0.0, + "text": "uh you just dreference the pointer you that's<00:39:19.359> your<00:39:19.680> child<00:39:20.000> evaluation<00:39:20.560> basically" + }, + { + "start": 2361.349, + "duration": 0.0, + "text": "that's your child evaluation basically" + }, + { + "start": 2361.359, + "duration": 0.0, + "text": "that's your child evaluation basically and<00:39:21.599> then<00:39:21.760> you<00:39:22.000> actually<00:39:22.240> do<00:39:22.320> the<00:39:22.480> recur" + }, + { + "start": 2362.87, + "duration": 0.0, + "text": "and then you actually do the recur" + }, + { + "start": 2362.88, + "duration": 0.0, + "text": "and then you actually do the recur recursive<00:39:23.359> path.<00:39:23.680> So<00:39:23.839> if<00:39:24.000> you're<00:39:24.079> pointing<00:39:24.320> at" + }, + { + "start": 2364.47, + "duration": 0.0, + "text": "recursive path. So if you're pointing at" + }, + { + "start": 2364.48, + "duration": 0.0, + "text": "recursive path. So if you're pointing at an<00:39:24.640> integer<00:39:24.960> you<00:39:25.119> print<00:39:25.200> the<00:39:25.359> integer.<00:39:25.599> If" + }, + { + "start": 2365.67, + "duration": 0.0, + "text": "an integer you print the integer. If" + }, + { + "start": 2365.68, + "duration": 0.0, + "text": "an integer you print the integer. If you're<00:39:25.760> pointing<00:39:26.000> out<00:39:26.079> the<00:39:26.160> array<00:39:26.400> you<00:39:26.480> print" + }, + { + "start": 2366.63, + "duration": 0.0, + "text": "you're pointing out the array you print" + }, + { + "start": 2366.64, + "duration": 0.0, + "text": "you're pointing out the array you print the<00:39:26.800> array.<00:39:27.119> so<00:39:27.280> on<00:39:27.440> and<00:39:27.599> so<00:39:27.680> forth.<00:39:27.920> It's<00:39:28.000> just" + }, + { + "start": 2368.069, + "duration": 0.0, + "text": "the array. so on and so forth. It's just" + }, + { + "start": 2368.079, + "duration": 0.0, + "text": "the array. so on and so forth. It's just one<00:39:28.320> layer<00:39:28.400> of<00:39:28.480> interaction<00:39:28.960> removed,<00:39:29.440> right?" + }, + { + "start": 2370.63, + "duration": 0.0, + "text": "one layer of interaction removed, right?" + }, + { + "start": 2370.64, + "duration": 0.0, + "text": "one layer of interaction removed, right? So<00:39:30.800> that<00:39:30.960> gives<00:39:31.119> us<00:39:31.280> all<00:39:31.359> the<00:39:31.520> building<00:39:31.760> blocks" + }, + { + "start": 2371.99, + "duration": 0.0, + "text": "So that gives us all the building blocks" + }, + { + "start": 2372.0, + "duration": 0.0, + "text": "So that gives us all the building blocks we<00:39:32.240> need<00:39:32.960> actually<00:39:33.440> to<00:39:33.680> build<00:39:33.839> a<00:39:34.000> very<00:39:34.160> simple" + }, + { + "start": 2374.39, + "duration": 0.0, + "text": "we need actually to build a very simple" + }, + { + "start": 2374.4, + "duration": 0.0, + "text": "we need actually to build a very simple watch<00:39:34.720> window." + }, + { + "start": 2376.47, + "duration": 0.0, + "text": "watch window." + }, + { + "start": 2376.48, + "duration": 0.0, + "text": "watch window. Uh<00:39:36.720> you<00:39:36.880> input<00:39:37.200> expressions<00:39:37.599> and<00:39:37.760> then<00:39:37.920> you" + }, + { + "start": 2378.069, + "duration": 0.0, + "text": "Uh you input expressions and then you" + }, + { + "start": 2378.079, + "duration": 0.0, + "text": "Uh you input expressions and then you just<00:39:38.480> stringify<00:39:39.040> them.<00:39:39.359> You<00:39:39.520> know,<00:39:39.599> they've" + }, + { + "start": 2379.829, + "duration": 0.0, + "text": "just stringify them. You know, they've" + }, + { + "start": 2379.839, + "duration": 0.0, + "text": "just stringify them. You know, they've got<00:39:40.000> type<00:39:40.240> info.<00:39:40.640> You<00:39:40.800> could<00:39:40.880> write<00:39:41.040> a<00:39:41.200> very" + }, + { + "start": 2381.349, + "duration": 0.0, + "text": "got type info. You could write a very" + }, + { + "start": 2381.359, + "duration": 0.0, + "text": "got type info. You could write a very simple<00:39:42.160> uh<00:39:42.400> stringification<00:39:43.440> path,<00:39:43.760> if<00:39:44.000> you" + }, + { + "start": 2384.069, + "duration": 0.0, + "text": "simple uh stringification path, if you" + }, + { + "start": 2384.079, + "duration": 0.0, + "text": "simple uh stringification path, if you will,<00:39:44.720> uh<00:39:44.880> for<00:39:45.119> the<00:39:45.359> type.<00:39:46.480> There<00:39:46.640> you<00:39:46.800> go." + }, + { + "start": 2388.63, + "duration": 0.0, + "text": "will, uh for the type. There you go." + }, + { + "start": 2388.64, + "duration": 0.0, + "text": "will, uh for the type. There you go. Um<00:39:49.599> that<00:39:49.839> gives<00:39:50.000> you<00:39:50.079> a<00:39:50.160> watch<00:39:50.400> window.<00:39:50.960> But<00:39:51.119> a" + }, + { + "start": 2391.349, + "duration": 0.0, + "text": "Um that gives you a watch window. But a" + }, + { + "start": 2391.359, + "duration": 0.0, + "text": "Um that gives you a watch window. But a very<00:39:51.520> useful<00:39:51.839> property<00:39:52.079> of<00:39:52.240> a<00:39:52.400> watch<00:39:52.640> window" + }, + { + "start": 2393.03, + "duration": 0.0, + "text": "very useful property of a watch window" + }, + { + "start": 2393.04, + "duration": 0.0, + "text": "very useful property of a watch window is<00:39:53.359> not<00:39:53.680> only<00:39:53.839> that<00:39:54.079> you<00:39:54.240> can<00:39:54.640> enter<00:39:54.880> an" + }, + { + "start": 2395.109, + "duration": 0.0, + "text": "is not only that you can enter an" + }, + { + "start": 2395.119, + "duration": 0.0, + "text": "is not only that you can enter an expression,<00:39:55.920> but<00:39:56.079> that<00:39:56.320> you<00:39:56.480> can<00:39:56.640> also<00:39:57.440> expand" + }, + { + "start": 2397.829, + "duration": 0.0, + "text": "expression, but that you can also expand" + }, + { + "start": 2397.839, + "duration": 0.0, + "text": "expression, but that you can also expand them." + }, + { + "start": 2399.91, + "duration": 0.0, + "text": "them." + }, + { + "start": 2399.92, + "duration": 0.0, + "text": "them. So<00:40:00.320> this<00:40:00.560> is<00:40:00.720> really<00:40:01.119> useful<00:40:01.520> because<00:40:01.920> you" + }, + { + "start": 2401.99, + "duration": 0.0, + "text": "So this is really useful because you" + }, + { + "start": 2402.0, + "duration": 0.0, + "text": "So this is really useful because you know<00:40:02.160> more<00:40:02.320> often<00:40:02.560> than<00:40:02.720> not<00:40:03.040> like<00:40:03.359> that" + }, + { + "start": 2403.589, + "duration": 0.0, + "text": "know more often than not like that" + }, + { + "start": 2403.599, + "duration": 0.0, + "text": "know more often than not like that single<00:40:04.000> line<00:40:04.240> visualization<00:40:04.800> path.<00:40:05.200> It's" + }, + { + "start": 2405.43, + "duration": 0.0, + "text": "single line visualization path. It's" + }, + { + "start": 2405.44, + "duration": 0.0, + "text": "single line visualization path. It's like<00:40:05.680> you've<00:40:06.000> got<00:40:06.640> 256<00:40:07.440> elements<00:40:07.680> in<00:40:07.839> an<00:40:08.000> array" + }, + { + "start": 2408.23, + "duration": 0.0, + "text": "like you've got 256 elements in an array" + }, + { + "start": 2408.24, + "duration": 0.0, + "text": "like you've got 256 elements in an array or<00:40:08.480> or<00:40:08.640> whatever<00:40:09.440> and<00:40:09.760> you<00:40:09.920> only<00:40:10.160> see<00:40:10.240> the" + }, + { + "start": 2410.47, + "duration": 0.0, + "text": "or or whatever and you only see the" + }, + { + "start": 2410.48, + "duration": 0.0, + "text": "or or whatever and you only see the first<00:40:10.640> eight.<00:40:11.040> You<00:40:11.200> don't<00:40:11.280> want<00:40:11.359> to<00:40:11.520> be<00:40:11.680> like" + }, + { + "start": 2411.99, + "duration": 0.0, + "text": "first eight. You don't want to be like" + }, + { + "start": 2412.0, + "duration": 0.0, + "text": "first eight. You don't want to be like okay<00:40:12.320> now<00:40:12.480> evaluate<00:40:13.040> array<00:40:13.359> plus<00:40:13.760> 8<00:40:14.079> and<00:40:14.240> then" + }, + { + "start": 2414.39, + "duration": 0.0, + "text": "okay now evaluate array plus 8 and then" + }, + { + "start": 2414.4, + "duration": 0.0, + "text": "okay now evaluate array plus 8 and then array<00:40:14.720> plus<00:40:15.040> 16<00:40:15.280> and<00:40:15.440> array<00:40:15.760> plus<00:40:16.000> 32.<00:40:16.400> It's" + }, + { + "start": 2416.55, + "duration": 0.0, + "text": "array plus 16 and array plus 32. It's" + }, + { + "start": 2416.56, + "duration": 0.0, + "text": "array plus 16 and array plus 32. It's like<00:40:16.640> a<00:40:16.800> whole<00:40:16.880> nightmare,<00:40:17.359> right?<00:40:18.480> Um,<00:40:19.920> same" + }, + { + "start": 2420.15, + "duration": 0.0, + "text": "like a whole nightmare, right? Um, same" + }, + { + "start": 2420.16, + "duration": 0.0, + "text": "like a whole nightmare, right? Um, same thing<00:40:20.320> with<00:40:20.480> strrus<00:40:21.280> especially<00:40:22.079> you<00:40:22.320> know" + }, + { + "start": 2422.87, + "duration": 0.0, + "text": "thing with strrus especially you know" + }, + { + "start": 2422.88, + "duration": 0.0, + "text": "thing with strrus especially you know you<00:40:23.119> don't<00:40:23.200> want<00:40:23.359> to<00:40:23.440> force<00:40:23.760> the<00:40:23.920> user<00:40:24.240> to<00:40:24.400> like" + }, + { + "start": 2424.55, + "duration": 0.0, + "text": "you don't want to force the user to like" + }, + { + "start": 2424.56, + "duration": 0.0, + "text": "you don't want to force the user to like think<00:40:24.720> of<00:40:24.960> like<00:40:25.440> oh<00:40:25.760> like<00:40:25.920> what<00:40:26.160> was<00:40:26.240> the<00:40:26.400> fifth" + }, + { + "start": 2426.63, + "duration": 0.0, + "text": "think of like oh like what was the fifth" + }, + { + "start": 2426.64, + "duration": 0.0, + "text": "think of like oh like what was the fifth element<00:40:26.960> of<00:40:27.200> entity<00:40:27.680> like<00:40:27.839> let<00:40:28.000> me<00:40:28.079> put<00:40:28.160> that" + }, + { + "start": 2428.31, + "duration": 0.0, + "text": "element of entity like let me put that" + }, + { + "start": 2428.32, + "duration": 0.0, + "text": "element of entity like let me put that in<00:40:28.480> as<00:40:28.640> a<00:40:28.800> second<00:40:28.960> expression<00:40:29.520> that<00:40:29.680> just" + }, + { + "start": 2429.829, + "duration": 0.0, + "text": "in as a second expression that just" + }, + { + "start": 2429.839, + "duration": 0.0, + "text": "in as a second expression that just sucks.<00:40:30.160> So<00:40:30.320> expansion<00:40:30.960> very<00:40:31.280> easy<00:40:31.680> design" + }, + { + "start": 2432.069, + "duration": 0.0, + "text": "sucks. So expansion very easy design" + }, + { + "start": 2432.079, + "duration": 0.0, + "text": "sucks. So expansion very easy design extension<00:40:32.720> we<00:40:32.960> could<00:40:33.040> do<00:40:33.119> to<00:40:33.280> the<00:40:33.359> watch" + }, + { + "start": 2433.589, + "duration": 0.0, + "text": "extension we could do to the watch" + }, + { + "start": 2433.599, + "duration": 0.0, + "text": "extension we could do to the watch window<00:40:33.839> to<00:40:33.920> just<00:40:34.079> speed<00:40:34.320> those<00:40:34.480> things<00:40:34.640> up<00:40:34.800> a" + }, + { + "start": 2434.95, + "duration": 0.0, + "text": "window to just speed those things up a" + }, + { + "start": 2434.96, + "duration": 0.0, + "text": "window to just speed those things up a little<00:40:35.040> bit<00:40:35.520> in<00:40:35.760> those<00:40:35.920> cases<00:40:36.240> if<00:40:36.400> the<00:40:36.560> user<00:40:36.720> is" + }, + { + "start": 2436.87, + "duration": 0.0, + "text": "little bit in those cases if the user is" + }, + { + "start": 2436.88, + "duration": 0.0, + "text": "little bit in those cases if the user is looking<00:40:37.119> for<00:40:37.359> entity.position<00:40:38.320> they<00:40:38.480> don't" + }, + { + "start": 2438.55, + "duration": 0.0, + "text": "looking for entity.position they don't" + }, + { + "start": 2438.56, + "duration": 0.0, + "text": "looking for entity.position they don't even<00:40:38.720> have<00:40:38.800> to<00:40:38.960> type<00:40:39.200> entity.position<00:40:40.160> is" + }, + { + "start": 2440.39, + "duration": 0.0, + "text": "even have to type entity.position is" + }, + { + "start": 2440.4, + "duration": 0.0, + "text": "even have to type entity.position is just<00:40:40.560> there.<00:40:40.960> So<00:40:41.119> that's<00:40:41.280> even<00:40:41.520> faster," + }, + { + "start": 2441.91, + "duration": 0.0, + "text": "just there. So that's even faster," + }, + { + "start": 2441.92, + "duration": 0.0, + "text": "just there. So that's even faster, right,<00:40:42.160> than<00:40:42.320> having<00:40:42.560> to<00:40:42.720> do<00:40:42.880> like<00:40:44.000> the<00:40:44.320> print" + }, + { + "start": 2444.87, + "duration": 0.0, + "text": "right, than having to do like the print" + }, + { + "start": 2444.88, + "duration": 0.0, + "text": "right, than having to do like the print uh<00:40:45.040> sort<00:40:45.200> of<00:40:45.280> the<00:40:45.520> print<00:40:45.920> writing<00:40:46.320> even" + }, + { + "start": 2446.55, + "duration": 0.0, + "text": "uh sort of the print writing even" + }, + { + "start": 2446.56, + "duration": 0.0, + "text": "uh sort of the print writing even writing<00:40:46.880> the<00:40:47.119> expression<00:40:47.440> that<00:40:47.599> you<00:40:47.760> want<00:40:47.839> to" + }, + { + "start": 2447.91, + "duration": 0.0, + "text": "writing the expression that you want to" + }, + { + "start": 2447.92, + "duration": 0.0, + "text": "writing the expression that you want to print.<00:40:48.320> We<00:40:48.480> don't<00:40:48.640> even<00:40:48.800> have<00:40:48.960> to<00:40:49.119> do<00:40:49.200> that." + }, + { + "start": 2451.829, + "duration": 0.0, + "text": "print. We don't even have to do that." + }, + { + "start": 2451.839, + "duration": 0.0, + "text": "print. We don't even have to do that. Lucky<00:40:52.160> for<00:40:52.320> us,<00:40:52.960> we<00:40:53.200> already<00:40:53.359> know<00:40:53.520> how<00:40:53.680> to" + }, + { + "start": 2453.829, + "duration": 0.0, + "text": "Lucky for us, we already know how to" + }, + { + "start": 2453.839, + "duration": 0.0, + "text": "Lucky for us, we already know how to expand<00:40:54.079> an<00:40:54.320> evaluation.<00:40:55.680> That's<00:40:55.920> why<00:40:56.000> I<00:40:56.160> made" + }, + { + "start": 2456.309, + "duration": 0.0, + "text": "expand an evaluation. That's why I made" + }, + { + "start": 2456.319, + "duration": 0.0, + "text": "expand an evaluation. That's why I made that<00:40:56.480> note.<00:40:57.359> It's<00:40:57.680> you<00:40:57.920> take<00:40:58.000> an<00:40:58.160> evaluation" + }, + { + "start": 2458.63, + "duration": 0.0, + "text": "that note. It's you take an evaluation" + }, + { + "start": 2458.64, + "duration": 0.0, + "text": "that note. It's you take an evaluation and<00:40:58.800> you<00:40:58.960> produce<00:40:59.119> a<00:40:59.280> list<00:40:59.440> of<00:40:59.520> evaluations." + }, + { + "start": 2460.15, + "duration": 0.0, + "text": "and you produce a list of evaluations." + }, + { + "start": 2460.16, + "duration": 0.0, + "text": "and you produce a list of evaluations. You<00:41:00.319> need<00:41:00.480> it<00:41:00.800> for<00:41:01.680> the<00:41:02.240> uh<00:41:02.640> for<00:41:02.960> the<00:41:03.200> recursive" + }, + { + "start": 2463.91, + "duration": 0.0, + "text": "You need it for the uh for the recursive" + }, + { + "start": 2463.92, + "duration": 0.0, + "text": "You need it for the uh for the recursive children<00:41:04.319> walking<00:41:04.720> case<00:41:05.040> when<00:41:05.280> you<00:41:05.599> take" + }, + { + "start": 2466.309, + "duration": 0.0, + "text": "children walking case when you take" + }, + { + "start": 2466.319, + "duration": 0.0, + "text": "children walking case when you take structures<00:41:06.640> or<00:41:06.880> arrays<00:41:07.200> and<00:41:07.359> turn<00:41:07.520> them<00:41:07.760> into" + }, + { + "start": 2468.069, + "duration": 0.0, + "text": "structures or arrays and turn them into" + }, + { + "start": 2468.079, + "duration": 0.0, + "text": "structures or arrays and turn them into a<00:41:08.319> string,<00:41:08.720> right?" + }, + { + "start": 2471.839, + "duration": 0.0, + "text": "um<00:41:12.240> you<00:41:12.480> can<00:41:12.640> use<00:41:12.800> that<00:41:13.040> same<00:41:13.200> path<00:41:13.520> to<00:41:13.760> produce" + }, + { + "start": 2473.99, + "duration": 0.0, + "text": "um you can use that same path to produce" + }, + { + "start": 2474.0, + "duration": 0.0, + "text": "um you can use that same path to produce a<00:41:14.160> tree<00:41:14.319> of<00:41:14.400> evaluations.<00:41:15.440> So<00:41:16.000> you<00:41:16.160> know<00:41:16.240> if<00:41:16.400> I" + }, + { + "start": 2476.55, + "duration": 0.0, + "text": "a tree of evaluations. So you know if I" + }, + { + "start": 2476.56, + "duration": 0.0, + "text": "a tree of evaluations. So you know if I evaluate<00:41:16.880> the<00:41:17.040> root<00:41:17.280> level<00:41:17.520> entity<00:41:18.160> that" + }, + { + "start": 2478.39, + "duration": 0.0, + "text": "evaluate the root level entity that" + }, + { + "start": 2478.4, + "duration": 0.0, + "text": "evaluate the root level entity that produces<00:41:18.720> a<00:41:18.960> list<00:41:19.119> of<00:41:19.280> subealuations<00:41:20.000> which" + }, + { + "start": 2480.15, + "duration": 0.0, + "text": "produces a list of subealuations which" + }, + { + "start": 2480.16, + "duration": 0.0, + "text": "produces a list of subealuations which are<00:41:20.480> named<00:41:20.880> position<00:41:21.359> velocity<00:41:21.680> in<00:41:21.839> this<00:41:22.000> case" + }, + { + "start": 2482.87, + "duration": 0.0, + "text": "are named position velocity in this case" + }, + { + "start": 2482.88, + "duration": 0.0, + "text": "are named position velocity in this case um<00:41:23.280> and<00:41:23.440> I<00:41:23.599> can<00:41:23.760> build<00:41:23.920> the<00:41:24.079> tree<00:41:24.720> that<00:41:25.040> way<00:41:26.000> but" + }, + { + "start": 2486.23, + "duration": 0.0, + "text": "um and I can build the tree that way but" + }, + { + "start": 2486.24, + "duration": 0.0, + "text": "um and I can build the tree that way but there's<00:41:26.400> a<00:41:26.560> problem." + }, + { + "start": 2488.23, + "duration": 0.0, + "text": "there's a problem." + }, + { + "start": 2488.24, + "duration": 0.0, + "text": "there's a problem. Let's<00:41:28.480> say<00:41:28.560> we've<00:41:28.800> got<00:41:28.880> an<00:41:29.040> array<00:41:29.520> of<00:41:29.760> 1" + }, + { + "start": 2489.91, + "duration": 0.0, + "text": "Let's say we've got an array of 1" + }, + { + "start": 2489.92, + "duration": 0.0, + "text": "Let's say we've got an array of 1 billion<00:41:30.319> integers." + }, + { + "start": 2494.88, + "duration": 0.0, + "text": "I<00:41:35.040> evaluate<00:41:35.520> it,<00:41:35.760> turn<00:41:35.920> it<00:41:36.079> into<00:41:36.319> a<00:41:36.480> string," + }, + { + "start": 2499.109, + "duration": 0.0, + "text": "I evaluate it, turn it into a string," + }, + { + "start": 2499.119, + "duration": 0.0, + "text": "I evaluate it, turn it into a string, or<00:41:39.440> in<00:41:39.760> general,<00:41:40.240> if<00:41:40.480> I<00:41:40.640> expand<00:41:40.880> it,<00:41:41.040> like<00:41:41.200> I'm" + }, + { + "start": 2501.43, + "duration": 0.0, + "text": "or in general, if I expand it, like I'm" + }, + { + "start": 2501.44, + "duration": 0.0, + "text": "or in general, if I expand it, like I'm trying<00:41:41.520> to<00:41:42.319> open<00:41:42.640> it<00:41:42.800> in<00:41:43.280> watch<00:41:43.599> window." + }, + { + "start": 2504.15, + "duration": 0.0, + "text": "trying to open it in watch window." + }, + { + "start": 2504.16, + "duration": 0.0, + "text": "trying to open it in watch window. Either<00:41:44.480> case,<00:41:45.119> I<00:41:45.359> have<00:41:45.440> to<00:41:45.599> produce<00:41:45.839> a<00:41:46.000> list<00:41:46.079> of" + }, + { + "start": 2506.23, + "duration": 0.0, + "text": "Either case, I have to produce a list of" + }, + { + "start": 2506.24, + "duration": 0.0, + "text": "Either case, I have to produce a list of child<00:41:46.560> evaluations" + }, + { + "start": 2508.95, + "duration": 0.0, + "text": "child evaluations" + }, + { + "start": 2508.96, + "duration": 0.0, + "text": "child evaluations that<00:41:49.200> requires<00:41:49.520> 1<00:41:49.680> billion<00:41:50.000> expansions." + }, + { + "start": 2511.109, + "duration": 0.0, + "text": "that requires 1 billion expansions." + }, + { + "start": 2511.119, + "duration": 0.0, + "text": "that requires 1 billion expansions. Unsurprisingly,<00:41:52.319> now<00:41:52.560> you<00:41:52.800> may<00:41:52.960> think<00:41:53.040> that" + }, + { + "start": 2513.27, + "duration": 0.0, + "text": "Unsurprisingly, now you may think that" + }, + { + "start": 2513.28, + "duration": 0.0, + "text": "Unsurprisingly, now you may think that that's<00:41:53.440> like<00:41:53.680> very<00:41:53.920> contrived<00:41:54.640> or<00:41:54.800> or" + }, + { + "start": 2515.109, + "duration": 0.0, + "text": "that's like very contrived or or" + }, + { + "start": 2515.119, + "duration": 0.0, + "text": "that's like very contrived or or whatever,<00:41:55.599> but<00:41:55.839> remember<00:41:56.079> that<00:41:56.240> the<00:41:56.400> debugger" + }, + { + "start": 2516.79, + "duration": 0.0, + "text": "whatever, but remember that the debugger" + }, + { + "start": 2516.8, + "duration": 0.0, + "text": "whatever, but remember that the debugger needs<00:41:56.960> to<00:41:57.119> work<00:41:57.200> with<00:41:58.000> uh<00:41:58.240> needs<00:41:58.400> to<00:41:58.480> work" + }, + { + "start": 2518.63, + "duration": 0.0, + "text": "needs to work with uh needs to work" + }, + { + "start": 2518.64, + "duration": 0.0, + "text": "needs to work with uh needs to work gracefully<00:41:59.119> with<00:41:59.359> arbitrary<00:41:59.839> code.<00:42:00.319> Doesn't" + }, + { + "start": 2521.109, + "duration": 0.0, + "text": "gracefully with arbitrary code. Doesn't" + }, + { + "start": 2521.119, + "duration": 0.0, + "text": "gracefully with arbitrary code. Doesn't shouldn't<00:42:01.440> matter<00:42:01.680> what<00:42:01.839> the<00:42:02.000> user<00:42:02.240> actually" + }, + { + "start": 2522.47, + "duration": 0.0, + "text": "shouldn't matter what the user actually" + }, + { + "start": 2522.48, + "duration": 0.0, + "text": "shouldn't matter what the user actually puts.<00:42:02.880> If<00:42:03.040> it's<00:42:03.200> complete<00:42:03.440> bogus,<00:42:03.839> the" + }, + { + "start": 2523.99, + "duration": 0.0, + "text": "puts. If it's complete bogus, the" + }, + { + "start": 2524.0, + "duration": 0.0, + "text": "puts. If it's complete bogus, the debugger<00:42:04.400> should<00:42:04.640> at<00:42:04.640> least<00:42:05.200> handle<00:42:05.520> it" + }, + { + "start": 2525.67, + "duration": 0.0, + "text": "debugger should at least handle it" + }, + { + "start": 2525.68, + "duration": 0.0, + "text": "debugger should at least handle it gracefully.<00:42:06.720> Furthermore,<00:42:07.280> if<00:42:07.440> you<00:42:07.520> ever" + }, + { + "start": 2527.75, + "duration": 0.0, + "text": "gracefully. Furthermore, if you ever" + }, + { + "start": 2527.76, + "duration": 0.0, + "text": "gracefully. Furthermore, if you ever like<00:42:08.000> generate<00:42:08.480> an<00:42:08.720> array<00:42:09.040> type<00:42:09.440> and<00:42:09.599> you're" + }, + { + "start": 2529.829, + "duration": 0.0, + "text": "like generate an array type and you're" + }, + { + "start": 2529.839, + "duration": 0.0, + "text": "like generate an array type and you're saying<00:42:09.920> like,<00:42:10.160> oh,<00:42:10.319> the<00:42:10.480> size<00:42:10.640> of<00:42:10.800> this<00:42:10.960> array" + }, + { + "start": 2531.19, + "duration": 0.0, + "text": "saying like, oh, the size of this array" + }, + { + "start": 2531.2, + "duration": 0.0, + "text": "saying like, oh, the size of this array is<00:42:11.440> actually<00:42:11.680> sized<00:42:12.000> by<00:42:12.160> this<00:42:12.400> variable<00:42:12.720> over" + }, + { + "start": 2532.95, + "duration": 0.0, + "text": "is actually sized by this variable over" + }, + { + "start": 2532.96, + "duration": 0.0, + "text": "is actually sized by this variable over here<00:42:13.520> and<00:42:13.760> that<00:42:13.920> variable<00:42:14.160> is<00:42:14.319> not" + }, + { + "start": 2534.47, + "duration": 0.0, + "text": "here and that variable is not" + }, + { + "start": 2534.48, + "duration": 0.0, + "text": "here and that variable is not initialized<00:42:15.040> at<00:42:15.200> some<00:42:15.440> point<00:42:15.520> in<00:42:15.760> the" + }, + { + "start": 2535.91, + "duration": 0.0, + "text": "initialized at some point in the" + }, + { + "start": 2535.92, + "duration": 0.0, + "text": "initialized at some point in the program.<00:42:16.240> It'll<00:42:16.480> be<00:42:16.560> complete<00:42:16.880> bogus.<00:42:17.280> It'll" + }, + { + "start": 2537.51, + "duration": 0.0, + "text": "program. It'll be complete bogus. It'll" + }, + { + "start": 2537.52, + "duration": 0.0, + "text": "program. It'll be complete bogus. It'll it<00:42:17.760> could<00:42:17.839> be<00:42:18.000> something<00:42:18.160> like<00:42:18.319> 1<00:42:18.560> billion<00:42:19.280> and" + }, + { + "start": 2539.91, + "duration": 0.0, + "text": "it could be something like 1 billion and" + }, + { + "start": 2539.92, + "duration": 0.0, + "text": "it could be something like 1 billion and you<00:42:20.079> know<00:42:20.240> then<00:42:20.400> you<00:42:20.560> have<00:42:20.640> to<00:42:20.800> handle<00:42:20.960> it" + }, + { + "start": 2541.19, + "duration": 0.0, + "text": "you know then you have to handle it" + }, + { + "start": 2541.2, + "duration": 0.0, + "text": "you know then you have to handle it anyways,<00:42:21.680> right?" + }, + { + "start": 2543.19, + "duration": 0.0, + "text": "anyways, right?" + }, + { + "start": 2543.2, + "duration": 0.0, + "text": "anyways, right? This<00:42:23.359> problem<00:42:23.599> doesn't<00:42:23.839> stop<00:42:24.079> there.<00:42:25.040> Let's" + }, + { + "start": 2545.27, + "duration": 0.0, + "text": "This problem doesn't stop there. Let's" + }, + { + "start": 2545.28, + "duration": 0.0, + "text": "This problem doesn't stop there. Let's say<00:42:25.359> you've<00:42:25.520> got<00:42:25.599> a<00:42:25.760> structure<00:42:26.000> like<00:42:26.160> this," + }, + { + "start": 2546.39, + "duration": 0.0, + "text": "say you've got a structure like this," + }, + { + "start": 2546.4, + "duration": 0.0, + "text": "say you've got a structure like this, some<00:42:26.640> linked<00:42:26.960> list<00:42:27.200> node,<00:42:27.680> got<00:42:27.839> a<00:42:28.000> next" + }, + { + "start": 2548.23, + "duration": 0.0, + "text": "some linked list node, got a next" + }, + { + "start": 2548.24, + "duration": 0.0, + "text": "some linked list node, got a next pointer<00:42:28.560> in<00:42:28.720> x<00:42:28.880> and<00:42:29.040> y<00:42:29.599> in<00:42:29.920> 32.<00:42:31.359> Um" + }, + { + "start": 2555.119, + "duration": 0.0, + "text": "uh<00:42:36.319> whoops.<00:42:37.680> So<00:42:38.079> let's<00:42:38.319> walk<00:42:38.480> through<00:42:38.640> the" + }, + { + "start": 2558.79, + "duration": 0.0, + "text": "uh whoops. So let's walk through the" + }, + { + "start": 2558.8, + "duration": 0.0, + "text": "uh whoops. So let's walk through the steps<00:42:38.960> to<00:42:39.280> actually<00:42:39.520> visualize<00:42:39.920> it.<00:42:40.079> We're" + }, + { + "start": 2560.309, + "duration": 0.0, + "text": "steps to actually visualize it. We're" + }, + { + "start": 2560.319, + "duration": 0.0, + "text": "steps to actually visualize it. We're evaluating<00:42:40.720> node.<00:42:41.040> We<00:42:41.119> want<00:42:41.200> to<00:42:41.280> turn<00:42:41.440> it<00:42:41.599> into" + }, + { + "start": 2561.75, + "duration": 0.0, + "text": "evaluating node. We want to turn it into" + }, + { + "start": 2561.76, + "duration": 0.0, + "text": "evaluating node. We want to turn it into a<00:42:41.920> string.<00:42:42.640> Whoops.<00:42:43.200> That<00:42:43.680> goes<00:42:43.920> through<00:42:44.079> all" + }, + { + "start": 2564.23, + "duration": 0.0, + "text": "a string. Whoops. That goes through all" + }, + { + "start": 2564.24, + "duration": 0.0, + "text": "a string. Whoops. That goes through all I<00:42:44.400> guess<00:42:44.480> I<00:42:44.640> could<00:42:44.720> just<00:42:44.880> do<00:42:44.960> that.<00:42:45.200> That's" + }, + { + "start": 2565.349, + "duration": 0.0, + "text": "I guess I could just do that. That's" + }, + { + "start": 2565.359, + "duration": 0.0, + "text": "I guess I could just do that. That's that's<00:42:45.680> fine.<00:42:46.079> Step<00:42:46.319> one,<00:42:46.560> push<00:42:46.720> a<00:42:46.880> left" + }, + { + "start": 2567.109, + "duration": 0.0, + "text": "that's fine. Step one, push a left" + }, + { + "start": 2567.119, + "duration": 0.0, + "text": "that's fine. Step one, push a left brace,<00:42:47.440> descend<00:42:47.839> to<00:42:47.920> next,<00:42:48.160> push<00:42:48.319> string<00:42:48.480> of" + }, + { + "start": 2568.55, + "duration": 0.0, + "text": "brace, descend to next, push string of" + }, + { + "start": 2568.56, + "duration": 0.0, + "text": "brace, descend to next, push string of x,<00:42:48.720> push<00:42:48.880> string<00:42:49.119> of<00:42:49.200> y," + }, + { + "start": 2570.95, + "duration": 0.0, + "text": "x, push string of y," + }, + { + "start": 2570.96, + "duration": 0.0, + "text": "x, push string of y, and<00:42:51.119> then<00:42:51.280> we<00:42:51.440> wrap<00:42:51.599> it<00:42:51.680> all<00:42:51.760> up<00:42:51.920> with<00:42:52.000> a" + }, + { + "start": 2572.15, + "duration": 0.0, + "text": "and then we wrap it all up with a" + }, + { + "start": 2572.16, + "duration": 0.0, + "text": "and then we wrap it all up with a closing<00:42:52.400> brace.<00:42:52.720> Right.<00:42:53.280> Problem<00:42:53.520> here<00:42:53.680> is" + }, + { + "start": 2573.829, + "duration": 0.0, + "text": "closing brace. Right. Problem here is" + }, + { + "start": 2573.839, + "duration": 0.0, + "text": "closing brace. Right. Problem here is that<00:42:54.000> that<00:42:54.319> is<00:42:54.560> recursive.<00:42:55.680> So<00:42:56.880> um<00:42:57.599> begins<00:42:58.000> the" + }, + { + "start": 2578.23, + "duration": 0.0, + "text": "that that is recursive. So um begins the" + }, + { + "start": 2578.24, + "duration": 0.0, + "text": "that that is recursive. So um begins the entire<00:42:58.640> process<00:42:58.960> again<00:42:59.200> and<00:42:59.440> then<00:42:59.599> it<00:42:59.760> just" + }, + { + "start": 2579.91, + "duration": 0.0, + "text": "entire process again and then it just" + }, + { + "start": 2579.92, + "duration": 0.0, + "text": "entire process again and then it just descends<00:43:00.240> and<00:43:00.400> descends<00:43:00.720> and<00:43:00.880> descends." + }, + { + "start": 2581.67, + "duration": 0.0, + "text": "descends and descends and descends." + }, + { + "start": 2581.68, + "duration": 0.0, + "text": "descends and descends and descends. Maybe<00:43:01.920> you're<00:43:02.160> like<00:43:02.720> I<00:43:02.960> know<00:43:03.040> the<00:43:03.280> solution" + }, + { + "start": 2583.67, + "duration": 0.0, + "text": "Maybe you're like I know the solution" + }, + { + "start": 2583.68, + "duration": 0.0, + "text": "Maybe you're like I know the solution stop<00:43:04.000> when<00:43:04.079> you<00:43:04.240> hit<00:43:04.319> a<00:43:04.400> null<00:43:04.720> pointer<00:43:05.760> can't" + }, + { + "start": 2586.069, + "duration": 0.0, + "text": "stop when you hit a null pointer can't" + }, + { + "start": 2586.079, + "duration": 0.0, + "text": "stop when you hit a null pointer can't do<00:43:06.240> that.<00:43:06.720> Remember<00:43:06.960> it's<00:43:07.200> any<00:43:07.440> arbitrary" + }, + { + "start": 2587.99, + "duration": 0.0, + "text": "do that. Remember it's any arbitrary" + }, + { + "start": 2588.0, + "duration": 0.0, + "text": "do that. Remember it's any arbitrary structure.<00:43:08.800> In<00:43:09.040> fact<00:43:10.160> uh<00:43:10.319> a<00:43:10.560> very<00:43:10.720> common<00:43:10.960> case" + }, + { + "start": 2591.19, + "duration": 0.0, + "text": "structure. In fact uh a very common case" + }, + { + "start": 2591.2, + "duration": 0.0, + "text": "structure. In fact uh a very common case is<00:43:11.359> like<00:43:11.520> sentinel<00:43:11.920> nodes<00:43:12.160> for<00:43:12.240> example<00:43:12.480> or" + }, + { + "start": 2592.71, + "duration": 0.0, + "text": "is like sentinel nodes for example or" + }, + { + "start": 2592.72, + "duration": 0.0, + "text": "is like sentinel nodes for example or like<00:43:12.880> nil<00:43:13.200> nodes<00:43:13.680> they<00:43:13.920> point<00:43:14.160> at<00:43:14.319> themselves." + }, + { + "start": 2594.79, + "duration": 0.0, + "text": "like nil nodes they point at themselves." + }, + { + "start": 2594.8, + "duration": 0.0, + "text": "like nil nodes they point at themselves. So<00:43:14.960> you'll<00:43:15.200> just<00:43:15.359> go<00:43:15.599> forever<00:43:15.920> and<00:43:16.160> you<00:43:16.400> have" + }, + { + "start": 2596.55, + "duration": 0.0, + "text": "So you'll just go forever and you have" + }, + { + "start": 2596.56, + "duration": 0.0, + "text": "So you'll just go forever and you have to<00:43:16.640> be<00:43:16.720> able<00:43:16.880> to<00:43:17.119> handle<00:43:17.440> this<00:43:17.680> case<00:43:17.920> right." + }, + { + "start": 2599.99, + "duration": 0.0, + "text": "to be able to handle this case right." + }, + { + "start": 2600.0, + "duration": 0.0, + "text": "to be able to handle this case right. Um<00:43:21.040> so" + }, + { + "start": 2602.55, + "duration": 0.0, + "text": "Um so" + }, + { + "start": 2602.56, + "duration": 0.0, + "text": "Um so in<00:43:22.800> either<00:43:23.119> case<00:43:23.760> the<00:43:24.000> billion<00:43:24.319> array<00:43:24.560> of" + }, + { + "start": 2604.63, + "duration": 0.0, + "text": "in either case the billion array of" + }, + { + "start": 2604.64, + "duration": 0.0, + "text": "in either case the billion array of integers<00:43:25.440> or<00:43:25.760> the<00:43:26.240> recursing<00:43:26.720> node<00:43:27.040> structure" + }, + { + "start": 2608.23, + "duration": 0.0, + "text": "integers or the recursing node structure" + }, + { + "start": 2608.24, + "duration": 0.0, + "text": "integers or the recursing node structure um<00:43:28.480> and<00:43:28.800> many<00:43:29.119> other<00:43:29.359> like<00:43:29.680> similar<00:43:30.160> sort<00:43:30.400> of" + }, + { + "start": 2610.63, + "duration": 0.0, + "text": "um and many other like similar sort of" + }, + { + "start": 2610.64, + "duration": 0.0, + "text": "um and many other like similar sort of kinds<00:43:30.960> of<00:43:31.119> problems.<00:43:31.760> The<00:43:32.000> fundamental" + }, + { + "start": 2612.55, + "duration": 0.0, + "text": "kinds of problems. The fundamental" + }, + { + "start": 2612.56, + "duration": 0.0, + "text": "kinds of problems. The fundamental problem<00:43:32.800> here<00:43:33.440> is<00:43:33.680> that<00:43:33.920> we<00:43:34.160> have<00:43:34.319> not" + }, + { + "start": 2614.47, + "duration": 0.0, + "text": "problem here is that we have not" + }, + { + "start": 2614.48, + "duration": 0.0, + "text": "problem here is that we have not properly<00:43:34.880> bounded<00:43:35.280> the<00:43:35.520> problem.<00:43:36.640> Uh<00:43:37.119> the<00:43:37.520> we" + }, + { + "start": 2617.75, + "duration": 0.0, + "text": "properly bounded the problem. Uh the we" + }, + { + "start": 2617.76, + "duration": 0.0, + "text": "properly bounded the problem. Uh the we haven't<00:43:37.920> we<00:43:38.079> haven't<00:43:38.240> properly<00:43:38.640> bounded<00:43:39.440> the" + }, + { + "start": 2620.309, + "duration": 0.0, + "text": "haven't we haven't properly bounded the" + }, + { + "start": 2620.319, + "duration": 0.0, + "text": "haven't we haven't properly bounded the set<00:43:40.560> of<00:43:40.720> information<00:43:41.040> that<00:43:41.200> the<00:43:41.359> debugger" + }, + { + "start": 2621.75, + "duration": 0.0, + "text": "set of information that the debugger" + }, + { + "start": 2621.76, + "duration": 0.0, + "text": "set of information that the debugger actually<00:43:41.920> has<00:43:42.160> to<00:43:42.240> work<00:43:42.400> with.<00:43:42.640> Right?<00:43:42.800> the" + }, + { + "start": 2622.95, + "duration": 0.0, + "text": "actually has to work with. Right? the" + }, + { + "start": 2622.96, + "duration": 0.0, + "text": "actually has to work with. Right? the debugger<00:43:43.359> can<00:43:43.520> just<00:43:43.680> like<00:43:44.640> we<00:43:45.200> so<00:43:45.440> far<00:43:45.599> we've" + }, + { + "start": 2625.829, + "duration": 0.0, + "text": "debugger can just like we so far we've" + }, + { + "start": 2625.839, + "duration": 0.0, + "text": "debugger can just like we so far we've only<00:43:46.000> sketched<00:43:46.319> out<00:43:46.480> if<00:43:46.720> like<00:43:47.119> this<00:43:47.280> is<00:43:47.359> a" + }, + { + "start": 2627.589, + "duration": 0.0, + "text": "only sketched out if like this is a" + }, + { + "start": 2627.599, + "duration": 0.0, + "text": "only sketched out if like this is a magical<00:43:48.000> function<00:43:48.480> you<00:43:48.640> can<00:43:48.800> do<00:43:48.880> this<00:43:49.040> and" + }, + { + "start": 2629.19, + "duration": 0.0, + "text": "magical function you can do this and" + }, + { + "start": 2629.2, + "duration": 0.0, + "text": "magical function you can do this and then<00:43:49.359> the<00:43:49.520> debugger<00:43:49.839> just<00:43:50.000> calls<00:43:50.160> them<00:43:50.400> gets<00:43:50.560> a" + }, + { + "start": 2630.71, + "duration": 0.0, + "text": "then the debugger just calls them gets a" + }, + { + "start": 2630.72, + "duration": 0.0, + "text": "then the debugger just calls them gets a list<00:43:50.800> of<00:43:50.880> evaluations<00:43:51.520> it's<00:43:51.680> like<00:43:52.160> okay<00:43:52.640> now" + }, + { + "start": 2632.79, + "duration": 0.0, + "text": "list of evaluations it's like okay now" + }, + { + "start": 2632.8, + "duration": 0.0, + "text": "list of evaluations it's like okay now you've<00:43:52.960> got<00:43:53.040> a<00:43:53.280> billion<00:43:53.680> things<00:43:53.920> to<00:43:54.240> go<00:43:54.400> and<00:43:54.640> do" + }, + { + "start": 2635.67, + "duration": 0.0, + "text": "you've got a billion things to go and do" + }, + { + "start": 2635.68, + "duration": 0.0, + "text": "you've got a billion things to go and do not<00:43:55.839> really<00:43:56.079> realistic<00:43:56.480> we<00:43:56.640> need<00:43:56.720> to<00:43:56.880> scope<00:43:57.119> it" + }, + { + "start": 2637.27, + "duration": 0.0, + "text": "not really realistic we need to scope it" + }, + { + "start": 2637.28, + "duration": 0.0, + "text": "not really realistic we need to scope it we<00:43:57.359> need<00:43:57.440> to<00:43:57.599> bound<00:43:57.839> it<00:43:58.240> again<00:43:58.560> the<00:43:58.800> debugger" + }, + { + "start": 2639.109, + "duration": 0.0, + "text": "we need to bound it again the debugger" + }, + { + "start": 2639.119, + "duration": 0.0, + "text": "we need to bound it again the debugger has<00:43:59.200> to<00:43:59.359> be<00:43:59.520> fast" + }, + { + "start": 2641.43, + "duration": 0.0, + "text": "has to be fast" + }, + { + "start": 2641.44, + "duration": 0.0, + "text": "has to be fast um" + }, + { + "start": 2643.43, + "duration": 0.0, + "text": "um" + }, + { + "start": 2643.44, + "duration": 0.0, + "text": "um so" + }, + { + "start": 2645.03, + "duration": 0.0, + "text": "so" + }, + { + "start": 2645.04, + "duration": 0.0, + "text": "so um" + }, + { + "start": 2647.51, + "duration": 0.0, + "text": "um" + }, + { + "start": 2647.52, + "duration": 0.0, + "text": "um note<00:44:07.920> that<00:44:08.160> a<00:44:08.319> debugger<00:44:08.720> UI<00:44:09.520> cannot<00:44:10.240> uh<00:44:11.040> you" + }, + { + "start": 2651.19, + "duration": 0.0, + "text": "note that a debugger UI cannot uh you" + }, + { + "start": 2651.2, + "duration": 0.0, + "text": "note that a debugger UI cannot uh you can't<00:44:11.359> visualize<00:44:11.760> arbitrarily<00:44:12.240> many<00:44:12.560> things" + }, + { + "start": 2653.03, + "duration": 0.0, + "text": "can't visualize arbitrarily many things" + }, + { + "start": 2653.04, + "duration": 0.0, + "text": "can't visualize arbitrarily many things anyways.<00:44:13.920> So<00:44:14.079> it<00:44:14.240> can't<00:44:14.560> visualize<00:44:14.960> a<00:44:15.200> billion" + }, + { + "start": 2655.43, + "duration": 0.0, + "text": "anyways. So it can't visualize a billion" + }, + { + "start": 2655.44, + "duration": 0.0, + "text": "anyways. So it can't visualize a billion integers.<00:44:16.240> It<00:44:16.400> can<00:44:16.560> only<00:44:16.800> visualize<00:44:17.359> like" + }, + { + "start": 2657.589, + "duration": 0.0, + "text": "integers. It can only visualize like" + }, + { + "start": 2657.599, + "duration": 0.0, + "text": "integers. It can only visualize like some<00:44:17.839> windowed<00:44:18.400> range<00:44:18.640> of<00:44:18.800> it." + }, + { + "start": 2660.87, + "duration": 0.0, + "text": "some windowed range of it." + }, + { + "start": 2660.88, + "duration": 0.0, + "text": "some windowed range of it. Um<00:44:21.920> there's<00:44:22.160> really<00:44:22.319> only<00:44:22.560> so<00:44:22.720> many<00:44:22.880> visual" + }, + { + "start": 2663.51, + "duration": 0.0, + "text": "Um there's really only so many visual" + }, + { + "start": 2663.52, + "duration": 0.0, + "text": "Um there's really only so many visual visualizations<00:44:24.160> you<00:44:24.319> can<00:44:24.480> actually<00:44:24.640> fit<00:44:24.960> on<00:44:25.119> a" + }, + { + "start": 2665.27, + "duration": 0.0, + "text": "visualizations you can actually fit on a" + }, + { + "start": 2665.28, + "duration": 0.0, + "text": "visualizations you can actually fit on a screen,<00:44:25.839> right?<00:44:26.880> So<00:44:26.960> you<00:44:27.119> can<00:44:27.280> use<00:44:27.440> those<00:44:27.599> sort" + }, + { + "start": 2667.75, + "duration": 0.0, + "text": "screen, right? So you can use those sort" + }, + { + "start": 2667.76, + "duration": 0.0, + "text": "screen, right? So you can use those sort of<00:44:27.839> like<00:44:28.079> soft<00:44:28.400> up<00:44:28.720> you<00:44:28.960> can<00:44:29.040> use<00:44:29.280> that<00:44:29.680> fact<00:44:30.000> to" + }, + { + "start": 2670.23, + "duration": 0.0, + "text": "of like soft up you can use that fact to" + }, + { + "start": 2670.24, + "duration": 0.0, + "text": "of like soft up you can use that fact to sort<00:44:30.400> of<00:44:30.480> form<00:44:30.880> soft<00:44:31.119> upper<00:44:31.520> limits<00:44:32.160> to<00:44:32.400> what" + }, + { + "start": 2672.55, + "duration": 0.0, + "text": "sort of form soft upper limits to what" + }, + { + "start": 2672.56, + "duration": 0.0, + "text": "sort of form soft upper limits to what you<00:44:32.720> actually<00:44:32.880> have<00:44:33.040> to<00:44:33.119> grab<00:44:33.359> as<00:44:33.599> the" + }, + { + "start": 2673.75, + "duration": 0.0, + "text": "you actually have to grab as the" + }, + { + "start": 2673.76, + "duration": 0.0, + "text": "you actually have to grab as the debugger." + }, + { + "start": 2675.43, + "duration": 0.0, + "text": "debugger." + }, + { + "start": 2675.44, + "duration": 0.0, + "text": "debugger. So<00:44:36.000> um<00:44:36.800> to<00:44:37.119> do<00:44:37.280> that<00:44:37.839> these<00:44:38.319> expansions<00:44:39.200> or" + }, + { + "start": 2679.67, + "duration": 0.0, + "text": "So um to do that these expansions or" + }, + { + "start": 2679.68, + "duration": 0.0, + "text": "So um to do that these expansions or anything<00:44:40.160> like<00:44:40.480> sort<00:44:40.720> of<00:44:40.800> that<00:44:41.520> that<00:44:41.920> could" + }, + { + "start": 2682.15, + "duration": 0.0, + "text": "anything like sort of that that could" + }, + { + "start": 2682.16, + "duration": 0.0, + "text": "anything like sort of that that could expand<00:44:42.560> like<00:44:42.880> that<00:44:43.520> needs<00:44:43.760> to<00:44:43.839> be<00:44:44.000> windowed" + }, + { + "start": 2685.03, + "duration": 0.0, + "text": "expand like that needs to be windowed" + }, + { + "start": 2685.04, + "duration": 0.0, + "text": "expand like that needs to be windowed right" + }, + { + "start": 2687.43, + "duration": 0.0, + "text": "right" + }, + { + "start": 2687.44, + "duration": 0.0, + "text": "right needs<00:44:47.680> to<00:44:47.760> be<00:44:47.920> windowed.<00:44:48.400> So<00:44:48.560> instead<00:44:48.880> of" + }, + { + "start": 2689.19, + "duration": 0.0, + "text": "needs to be windowed. So instead of" + }, + { + "start": 2689.2, + "duration": 0.0, + "text": "needs to be windowed. So instead of taking<00:44:49.520> an<00:44:49.920> an<00:44:50.160> evaluation<00:44:50.720> producing<00:44:51.040> a<00:44:51.200> list" + }, + { + "start": 2691.27, + "duration": 0.0, + "text": "taking an an evaluation producing a list" + }, + { + "start": 2691.28, + "duration": 0.0, + "text": "taking an an evaluation producing a list of<00:44:51.440> evaluations<00:44:52.400> we<00:44:52.640> need<00:44:52.720> to<00:44:52.880> scope<00:44:53.200> it.<00:44:53.359> We" + }, + { + "start": 2693.51, + "duration": 0.0, + "text": "of evaluations we need to scope it. We" + }, + { + "start": 2693.52, + "duration": 0.0, + "text": "of evaluations we need to scope it. We can<00:44:53.680> say<00:44:53.920> we<00:44:54.160> we're<00:44:54.400> taking<00:44:54.640> an<00:44:54.800> evaluation" + }, + { + "start": 2695.349, + "duration": 0.0, + "text": "can say we we're taking an evaluation" + }, + { + "start": 2695.359, + "duration": 0.0, + "text": "can say we we're taking an evaluation and<00:44:55.520> some<00:44:55.760> range<00:44:56.079> of<00:44:56.560> within<00:44:56.880> that<00:44:57.119> expansion." + }, + { + "start": 2697.829, + "duration": 0.0, + "text": "and some range of within that expansion." + }, + { + "start": 2697.839, + "duration": 0.0, + "text": "and some range of within that expansion. We<00:44:58.000> produce<00:44:58.240> a<00:44:58.400> list<00:44:58.560> of<00:44:58.720> evaluations<00:44:59.280> just" + }, + { + "start": 2699.51, + "duration": 0.0, + "text": "We produce a list of evaluations just" + }, + { + "start": 2699.52, + "duration": 0.0, + "text": "We produce a list of evaluations just for<00:44:59.680> that<00:44:59.839> range,<00:45:00.240> right?<00:45:00.400> We<00:45:00.560> need<00:45:00.720> some" + }, + { + "start": 2701.19, + "duration": 0.0, + "text": "for that range, right? We need some" + }, + { + "start": 2701.2, + "duration": 0.0, + "text": "for that range, right? We need some windowed<00:45:01.680> range.<00:45:02.640> When<00:45:02.880> we<00:45:03.040> generate<00:45:03.359> a" + }, + { + "start": 2703.51, + "duration": 0.0, + "text": "windowed range. When we generate a" + }, + { + "start": 2703.52, + "duration": 0.0, + "text": "windowed range. When we generate a string,<00:45:04.319> you<00:45:04.480> know,<00:45:05.760> you<00:45:06.000> can't<00:45:06.160> just<00:45:06.319> go" + }, + { + "start": 2706.47, + "duration": 0.0, + "text": "string, you know, you can't just go" + }, + { + "start": 2706.48, + "duration": 0.0, + "text": "string, you know, you can't just go forever.<00:45:07.119> Maybe<00:45:07.359> you<00:45:07.520> say,<00:45:07.680> I<00:45:07.920> I've<00:45:08.079> got<00:45:08.160> an" + }, + { + "start": 2708.309, + "duration": 0.0, + "text": "forever. Maybe you say, I I've got an" + }, + { + "start": 2708.319, + "duration": 0.0, + "text": "forever. Maybe you say, I I've got an evaluation.<00:45:08.800> I've<00:45:08.960> got<00:45:09.040> a<00:45:09.200> font<00:45:10.480> and<00:45:10.640> I've<00:45:10.880> got" + }, + { + "start": 2710.95, + "duration": 0.0, + "text": "evaluation. I've got a font and I've got" + }, + { + "start": 2710.96, + "duration": 0.0, + "text": "evaluation. I've got a font and I've got some<00:45:11.200> pixel<00:45:11.599> range<00:45:12.560> um<00:45:12.640> that,<00:45:13.040> you<00:45:13.119> know," + }, + { + "start": 2713.27, + "duration": 0.0, + "text": "some pixel range um that, you know," + }, + { + "start": 2713.28, + "duration": 0.0, + "text": "some pixel range um that, you know, delimmits<00:45:13.760> how<00:45:13.920> many<00:45:14.079> characters<00:45:14.400> I<00:45:14.560> actually" + }, + { + "start": 2714.79, + "duration": 0.0, + "text": "delimmits how many characters I actually" + }, + { + "start": 2714.8, + "duration": 0.0, + "text": "delimmits how many characters I actually want<00:45:14.880> to<00:45:14.960> generate<00:45:15.200> and<00:45:15.440> then<00:45:15.520> I<00:45:15.599> get<00:45:15.680> a<00:45:15.760> string" + }, + { + "start": 2715.91, + "duration": 0.0, + "text": "want to generate and then I get a string" + }, + { + "start": 2715.92, + "duration": 0.0, + "text": "want to generate and then I get a string at<00:45:16.079> the<00:45:16.160> end<00:45:16.319> there." + }, + { + "start": 2718.309, + "duration": 0.0, + "text": "at the end there." + }, + { + "start": 2718.319, + "duration": 0.0, + "text": "at the end there. Now<00:45:19.359> if<00:45:19.520> we<00:45:19.680> imagine<00:45:20.000> windowing<00:45:20.480> a<00:45:20.640> list<00:45:20.800> of" + }, + { + "start": 2721.19, + "duration": 0.0, + "text": "Now if we imagine windowing a list of" + }, + { + "start": 2721.2, + "duration": 0.0, + "text": "Now if we imagine windowing a list of rows<00:45:21.920> like<00:45:22.319> in<00:45:22.480> a<00:45:22.640> watch<00:45:22.880> window,<00:45:23.599> it's<00:45:23.760> a<00:45:23.920> very" + }, + { + "start": 2724.069, + "duration": 0.0, + "text": "rows like in a watch window, it's a very" + }, + { + "start": 2724.079, + "duration": 0.0, + "text": "rows like in a watch window, it's a very simple<00:45:24.400> problem.<00:45:25.040> Um<00:45:25.359> especially<00:45:25.680> because" + }, + { + "start": 2725.829, + "duration": 0.0, + "text": "simple problem. Um especially because" + }, + { + "start": 2725.839, + "duration": 0.0, + "text": "simple problem. Um especially because the<00:45:26.079> rows<00:45:26.240> are<00:45:26.400> all<00:45:26.480> like<00:45:26.720> uniformly<00:45:27.280> sized," + }, + { + "start": 2727.67, + "duration": 0.0, + "text": "the rows are all like uniformly sized," + }, + { + "start": 2727.68, + "duration": 0.0, + "text": "the rows are all like uniformly sized, right?<00:45:28.960> Um<00:45:29.760> you're<00:45:30.000> storing<00:45:30.240> some<00:45:30.560> state" + }, + { + "start": 2730.95, + "duration": 0.0, + "text": "right? Um you're storing some state" + }, + { + "start": 2730.96, + "duration": 0.0, + "text": "right? Um you're storing some state somewhere<00:45:31.359> that<00:45:31.680> you<00:45:31.839> know<00:45:32.000> deter<00:45:32.480> determines" + }, + { + "start": 2732.87, + "duration": 0.0, + "text": "somewhere that you know deter determines" + }, + { + "start": 2732.88, + "duration": 0.0, + "text": "somewhere that you know deter determines your<00:45:33.040> scroll<00:45:33.440> position" + }, + { + "start": 2735.829, + "duration": 0.0, + "text": "your scroll position" + }, + { + "start": 2735.839, + "duration": 0.0, + "text": "your scroll position and<00:45:36.079> that<00:45:36.400> combined<00:45:36.800> with<00:45:37.040> like<00:45:37.280> how<00:45:37.599> large" + }, + { + "start": 2737.91, + "duration": 0.0, + "text": "and that combined with like how large" + }, + { + "start": 2737.92, + "duration": 0.0, + "text": "and that combined with like how large the<00:45:38.160> visible<00:45:38.480> range<00:45:38.720> is<00:45:38.960> will<00:45:39.200> tell<00:45:39.359> you<00:45:39.680> you" + }, + { + "start": 2739.75, + "duration": 0.0, + "text": "the visible range is will tell you you" + }, + { + "start": 2739.76, + "duration": 0.0, + "text": "the visible range is will tell you you know<00:45:39.920> depending<00:45:40.160> on<00:45:40.319> how<00:45:40.480> you're<00:45:40.640> storing" + }, + { + "start": 2740.79, + "duration": 0.0, + "text": "know depending on how you're storing" + }, + { + "start": 2740.8, + "duration": 0.0, + "text": "know depending on how you're storing that<00:45:40.960> scroll<00:45:41.280> offset.<00:45:41.839> you<00:45:42.000> know,<00:45:42.160> you<00:45:42.240> can" + }, + { + "start": 2742.309, + "duration": 0.0, + "text": "that scroll offset. you know, you can" + }, + { + "start": 2742.319, + "duration": 0.0, + "text": "that scroll offset. you know, you can store<00:45:42.480> it<00:45:42.560> in<00:45:42.720> a<00:45:42.880> number<00:45:42.960> of<00:45:43.119> ways,<00:45:43.280> but<00:45:43.520> you" + }, + { + "start": 2743.67, + "duration": 0.0, + "text": "store it in a number of ways, but you" + }, + { + "start": 2743.68, + "duration": 0.0, + "text": "store it in a number of ways, but you could<00:45:43.760> pretty<00:45:44.000> easily<00:45:44.240> compute,<00:45:44.880> oh,<00:45:45.040> I'm" + }, + { + "start": 2745.19, + "duration": 0.0, + "text": "could pretty easily compute, oh, I'm" + }, + { + "start": 2745.2, + "duration": 0.0, + "text": "could pretty easily compute, oh, I'm viewing<00:45:45.520> this<00:45:45.680> index<00:45:46.000> to<00:45:46.160> this<00:45:46.400> this<00:45:46.720> index," + }, + { + "start": 2747.19, + "duration": 0.0, + "text": "viewing this index to this this index," + }, + { + "start": 2747.2, + "duration": 0.0, + "text": "viewing this index to this this index, right?" + }, + { + "start": 2749.829, + "duration": 0.0, + "text": "right?" + }, + { + "start": 2749.839, + "duration": 0.0, + "text": "right? Um," + }, + { + "start": 2751.67, + "duration": 0.0, + "text": "Um," + }, + { + "start": 2751.68, + "duration": 0.0, + "text": "Um, not<00:45:51.920> surprisingly,<00:45:52.960> region<00:45:53.359> before<00:45:53.599> and" + }, + { + "start": 2753.75, + "duration": 0.0, + "text": "not surprisingly, region before and" + }, + { + "start": 2753.76, + "duration": 0.0, + "text": "not surprisingly, region before and after<00:45:54.400> not<00:45:54.720> visible.<00:45:55.200> Don't<00:45:55.440> need<00:45:55.599> to<00:45:55.680> do" + }, + { + "start": 2755.829, + "duration": 0.0, + "text": "after not visible. Don't need to do" + }, + { + "start": 2755.839, + "duration": 0.0, + "text": "after not visible. Don't need to do anything<00:45:56.000> for<00:45:56.240> you.<00:45:56.400> You<00:45:56.640> don't<00:45:56.800> actually" + }, + { + "start": 2757.03, + "duration": 0.0, + "text": "anything for you. You don't actually" + }, + { + "start": 2757.04, + "duration": 0.0, + "text": "anything for you. You don't actually have<00:45:57.280> to<00:45:57.440> compute<00:45:57.839> anything<00:45:58.480> for<00:45:58.800> those.<00:45:59.359> Work" + }, + { + "start": 2759.67, + "duration": 0.0, + "text": "have to compute anything for those. Work" + }, + { + "start": 2759.68, + "duration": 0.0, + "text": "have to compute anything for those. Work only<00:45:59.839> needs<00:46:00.000> to<00:46:00.160> be<00:46:00.240> done<00:46:00.319> for<00:46:00.480> the<00:46:00.560> visible" + }, + { + "start": 2760.95, + "duration": 0.0, + "text": "only needs to be done for the visible" + }, + { + "start": 2760.96, + "duration": 0.0, + "text": "only needs to be done for the visible region." + }, + { + "start": 2762.79, + "duration": 0.0, + "text": "region." + }, + { + "start": 2762.8, + "duration": 0.0, + "text": "region. But<00:46:03.040> if<00:46:03.200> we<00:46:03.359> take<00:46:03.440> a<00:46:03.599> look<00:46:03.680> at<00:46:03.839> an<00:46:04.000> actual<00:46:04.240> watch" + }, + { + "start": 2764.55, + "duration": 0.0, + "text": "But if we take a look at an actual watch" + }, + { + "start": 2764.56, + "duration": 0.0, + "text": "But if we take a look at an actual watch window,<00:46:05.040> you<00:46:05.200> might<00:46:05.359> notice<00:46:05.760> it's<00:46:06.079> not<00:46:06.240> really" + }, + { + "start": 2766.39, + "duration": 0.0, + "text": "window, you might notice it's not really" + }, + { + "start": 2766.4, + "duration": 0.0, + "text": "window, you might notice it's not really a<00:46:06.640> list.<00:46:07.040> It's<00:46:07.280> kind<00:46:07.440> of<00:46:07.520> this<00:46:07.920> tree" + }, + { + "start": 2768.23, + "duration": 0.0, + "text": "a list. It's kind of this tree" + }, + { + "start": 2768.24, + "duration": 0.0, + "text": "a list. It's kind of this tree structure,<00:46:09.200> right?<00:46:09.599> It's<00:46:09.839> a<00:46:10.000> tree<00:46:10.240> of<00:46:10.400> lists" + }, + { + "start": 2770.95, + "duration": 0.0, + "text": "structure, right? It's a tree of lists" + }, + { + "start": 2770.96, + "duration": 0.0, + "text": "structure, right? It's a tree of lists where<00:46:11.280> each<00:46:12.079> list<00:46:12.640> in<00:46:13.040> the<00:46:13.280> tree<00:46:13.520> kind<00:46:13.760> of" + }, + { + "start": 2773.829, + "duration": 0.0, + "text": "where each list in the tree kind of" + }, + { + "start": 2773.839, + "duration": 0.0, + "text": "where each list in the tree kind of interrupts<00:46:14.400> the<00:46:14.560> parent<00:46:15.200> list." + }, + { + "start": 2778.88, + "duration": 0.0, + "text": "Um<00:46:19.359> so<00:46:19.839> this<00:46:20.400> these<00:46:20.720> are<00:46:20.800> all<00:46:20.880> the<00:46:21.040> members<00:46:21.280> of" + }, + { + "start": 2781.43, + "duration": 0.0, + "text": "Um so this these are all the members of" + }, + { + "start": 2781.44, + "duration": 0.0, + "text": "Um so this these are all the members of shared<00:46:21.920> on<00:46:22.160> this<00:46:22.319> level.<00:46:23.760> These<00:46:24.079> are<00:46:24.160> the" + }, + { + "start": 2784.309, + "duration": 0.0, + "text": "shared on this level. These are the" + }, + { + "start": 2784.319, + "duration": 0.0, + "text": "shared on this level. These are the members<00:46:24.560> of<00:46:24.720> the<00:46:24.880> control<00:46:25.200> bindings<00:46:25.680> member." + }, + { + "start": 2786.95, + "duration": 0.0, + "text": "members of the control bindings member." + }, + { + "start": 2786.96, + "duration": 0.0, + "text": "members of the control bindings member. These<00:46:27.280> are<00:46:27.359> the<00:46:27.520> members<00:46:28.079> uh<00:46:28.160> these<00:46:28.400> are<00:46:28.480> the" + }, + { + "start": 2788.63, + "duration": 0.0, + "text": "These are the members uh these are the" + }, + { + "start": 2788.64, + "duration": 0.0, + "text": "These are the members uh these are the elements<00:46:28.880> of<00:46:29.040> the<00:46:29.200> bindings<00:46:29.599> array<00:46:29.839> inside<00:46:30.079> of" + }, + { + "start": 2790.23, + "duration": 0.0, + "text": "elements of the bindings array inside of" + }, + { + "start": 2790.24, + "duration": 0.0, + "text": "elements of the bindings array inside of control<00:46:30.560> bindings." + }, + { + "start": 2793.68, + "duration": 0.0, + "text": "Oh<00:46:33.920> no.<00:46:35.280> Uh<00:46:35.760> these<00:46:36.079> are<00:46:36.160> the<00:46:36.560> uh<00:46:36.640> the<00:46:36.880> members" + }, + { + "start": 2797.19, + "duration": 0.0, + "text": "Oh no. Uh these are the uh the members" + }, + { + "start": 2797.2, + "duration": 0.0, + "text": "Oh no. Uh these are the uh the members of<00:46:37.359> bindings<00:46:37.839> at<00:46:38.079> four." + }, + { + "start": 2799.99, + "duration": 0.0, + "text": "of bindings at four." + }, + { + "start": 2800.0, + "duration": 0.0, + "text": "of bindings at four. Um," + }, + { + "start": 2803.119, + "duration": 0.0, + "text": "wait.<00:46:43.920> Yeah,<00:46:44.160> bindings<00:46:44.640> of<00:46:44.800> four.<00:46:45.040> Yep.<00:46:45.760> So," + }, + { + "start": 2805.91, + "duration": 0.0, + "text": "wait. Yeah, bindings of four. Yep. So," + }, + { + "start": 2805.92, + "duration": 0.0, + "text": "wait. Yeah, bindings of four. Yep. So, if<00:46:46.160> you<00:46:46.240> encode<00:46:46.640> that<00:46:46.880> hierarchy<00:46:47.359> into<00:46:47.680> sort" + }, + { + "start": 2807.829, + "duration": 0.0, + "text": "if you encode that hierarchy into sort" + }, + { + "start": 2807.839, + "duration": 0.0, + "text": "if you encode that hierarchy into sort of<00:46:47.920> a<00:46:48.079> tree<00:46:48.319> structure,<00:46:48.720> if<00:46:48.880> you're<00:46:48.960> just" + }, + { + "start": 2809.109, + "duration": 0.0, + "text": "of a tree structure, if you're just" + }, + { + "start": 2809.119, + "duration": 0.0, + "text": "of a tree structure, if you're just going<00:46:49.280> to<00:46:49.440> like<00:46:50.000> build<00:46:50.319> that<00:46:50.880> explicitly," + }, + { + "start": 2811.51, + "duration": 0.0, + "text": "going to like build that explicitly," + }, + { + "start": 2811.52, + "duration": 0.0, + "text": "going to like build that explicitly, it'd<00:46:51.760> look<00:46:52.079> something<00:46:52.400> like<00:46:52.640> this.<00:46:54.000> So,<00:46:55.280> um," + }, + { + "start": 2816.39, + "duration": 0.0, + "text": "it'd look something like this. So, um," + }, + { + "start": 2816.4, + "duration": 0.0, + "text": "it'd look something like this. So, um, you've<00:46:56.640> got<00:46:56.720> your<00:46:57.119> watch<00:46:57.359> list,<00:46:57.680> which<00:46:57.839> is" + }, + { + "start": 2817.99, + "duration": 0.0, + "text": "you've got your watch list, which is" + }, + { + "start": 2818.0, + "duration": 0.0, + "text": "you've got your watch list, which is just<00:46:58.160> some<00:46:58.319> number<00:46:58.480> of<00:46:58.640> watch<00:46:58.880> expressions," + }, + { + "start": 2819.829, + "duration": 0.0, + "text": "just some number of watch expressions," + }, + { + "start": 2819.839, + "duration": 0.0, + "text": "just some number of watch expressions, members<00:47:00.160> of<00:47:00.480> members<00:47:00.800> of<00:47:01.040> shared,<00:47:01.440> members<00:47:01.680> of" + }, + { + "start": 2821.829, + "duration": 0.0, + "text": "members of members of shared, members of" + }, + { + "start": 2821.839, + "duration": 0.0, + "text": "members of members of shared, members of control<00:47:02.079> bindings,<00:47:02.800> elements<00:47:03.119> of<00:47:03.280> bindings," + }, + { + "start": 2823.91, + "duration": 0.0, + "text": "control bindings, elements of bindings," + }, + { + "start": 2823.92, + "duration": 0.0, + "text": "control bindings, elements of bindings, members<00:47:04.160> of<00:47:04.319> bindings<00:47:04.720> at<00:47:04.880> four.<00:47:05.680> For<00:47:06.000> this" + }, + { + "start": 2826.23, + "duration": 0.0, + "text": "members of bindings at four. For this" + }, + { + "start": 2826.24, + "duration": 0.0, + "text": "members of bindings at four. For this example,<00:47:06.560> that's<00:47:06.800> what<00:47:06.880> we<00:47:07.040> would<00:47:07.280> see," + }, + { + "start": 2827.51, + "duration": 0.0, + "text": "example, that's what we would see," + }, + { + "start": 2827.52, + "duration": 0.0, + "text": "example, that's what we would see, right?<00:47:07.760> So<00:47:07.920> let's<00:47:08.160> see<00:47:08.240> how<00:47:08.400> we<00:47:08.560> can<00:47:08.640> take<00:47:08.800> a" + }, + { + "start": 2828.95, + "duration": 0.0, + "text": "right? So let's see how we can take a" + }, + { + "start": 2828.96, + "duration": 0.0, + "text": "right? So let's see how we can take a structure<00:47:09.280> like<00:47:09.520> this<00:47:10.000> and<00:47:10.240> window<00:47:10.640> it." + }, + { + "start": 2832.309, + "duration": 0.0, + "text": "structure like this and window it." + }, + { + "start": 2832.319, + "duration": 0.0, + "text": "structure like this and window it. So<00:47:12.720> first<00:47:13.359> let's<00:47:13.680> label<00:47:14.079> each<00:47:14.319> node.<00:47:14.960> Um<00:47:16.160> W<00:47:16.400> is" + }, + { + "start": 2836.55, + "duration": 0.0, + "text": "So first let's label each node. Um W is" + }, + { + "start": 2836.56, + "duration": 0.0, + "text": "So first let's label each node. Um W is watch<00:47:16.800> list.<00:47:17.040> S<00:47:17.280> is<00:47:17.440> shared.<00:47:18.079> C<00:47:18.319> is<00:47:18.480> the<00:47:18.640> member" + }, + { + "start": 2839.03, + "duration": 0.0, + "text": "watch list. S is shared. C is the member" + }, + { + "start": 2839.04, + "duration": 0.0, + "text": "watch list. S is shared. C is the member members<00:47:19.359> of<00:47:19.520> control<00:47:19.839> bindings.<00:47:20.720> B<00:47:20.960> is<00:47:21.119> the" + }, + { + "start": 2841.27, + "duration": 0.0, + "text": "members of control bindings. B is the" + }, + { + "start": 2841.28, + "duration": 0.0, + "text": "members of control bindings. B is the elements<00:47:21.520> of<00:47:21.680> bindings.<00:47:22.480> Four<00:47:22.640> is<00:47:22.800> the" + }, + { + "start": 2842.95, + "duration": 0.0, + "text": "elements of bindings. Four is the" + }, + { + "start": 2842.96, + "duration": 0.0, + "text": "elements of bindings. Four is the members<00:47:23.440> of<00:47:23.839> bindings<00:47:24.319> at<00:47:24.480> four." + }, + { + "start": 2846.15, + "duration": 0.0, + "text": "members of bindings at four." + }, + { + "start": 2846.16, + "duration": 0.0, + "text": "members of bindings at four. We<00:47:26.400> can<00:47:26.560> also<00:47:26.720> say<00:47:26.960> that<00:47:27.599> each<00:47:27.920> node<00:47:28.400> sort<00:47:28.640> of" + }, + { + "start": 2848.87, + "duration": 0.0, + "text": "We can also say that each node sort of" + }, + { + "start": 2848.88, + "duration": 0.0, + "text": "We can also say that each node sort of uh<00:47:29.119> splits<00:47:29.599> the<00:47:29.839> parent<00:47:30.400> at<00:47:30.720> some<00:47:30.960> particular" + }, + { + "start": 2851.43, + "duration": 0.0, + "text": "uh splits the parent at some particular" + }, + { + "start": 2851.44, + "duration": 0.0, + "text": "uh splits the parent at some particular index<00:47:31.839> in<00:47:32.079> the<00:47:32.240> range.<00:47:32.560> So<00:47:33.359> s<00:47:33.920> uh<00:47:34.079> let's<00:47:34.319> just" + }, + { + "start": 2854.47, + "duration": 0.0, + "text": "index in the range. So s uh let's just" + }, + { + "start": 2854.48, + "duration": 0.0, + "text": "index in the range. So s uh let's just say<00:47:34.640> they<00:47:34.880> all<00:47:35.119> split<00:47:35.359> their<00:47:35.520> parent<00:47:35.839> at<00:47:36.480> uh" + }, + { + "start": 2856.71, + "duration": 0.0, + "text": "say they all split their parent at uh" + }, + { + "start": 2856.72, + "duration": 0.0, + "text": "say they all split their parent at uh you<00:47:36.880> know<00:47:37.040> s<00:47:37.440> subscript<00:47:38.079> whatever<00:47:38.400> that<00:47:38.560> node" + }, + { + "start": 2858.87, + "duration": 0.0, + "text": "you know s subscript whatever that node" + }, + { + "start": 2858.88, + "duration": 0.0, + "text": "you know s subscript whatever that node happens<00:47:39.119> to<00:47:39.280> be." + }, + { + "start": 2864.48, + "duration": 0.0, + "text": "We<00:47:44.640> then<00:47:44.880> turn<00:47:45.040> this<00:47:45.200> tree<00:47:45.440> into<00:47:45.680> a<00:47:45.839> flat<00:47:46.079> list." + }, + { + "start": 2866.39, + "duration": 0.0, + "text": "We then turn this tree into a flat list." + }, + { + "start": 2866.4, + "duration": 0.0, + "text": "We then turn this tree into a flat list. Right?<00:47:46.640> You<00:47:46.800> have<00:47:46.880> this<00:47:47.040> tree<00:47:47.280> structure<00:47:48.240> and" + }, + { + "start": 2868.87, + "duration": 0.0, + "text": "Right? You have this tree structure and" + }, + { + "start": 2868.88, + "duration": 0.0, + "text": "Right? You have this tree structure and um<00:47:49.119> each<00:47:49.440> split<00:47:49.920> actually<00:47:50.160> causes<00:47:50.880> two<00:47:51.599> uh" + }, + { + "start": 2872.23, + "duration": 0.0, + "text": "um each split actually causes two uh" + }, + { + "start": 2872.24, + "duration": 0.0, + "text": "um each split actually causes two uh ranges<00:47:52.560> of<00:47:52.960> rows<00:47:53.040> to<00:47:53.200> be<00:47:53.359> generated.<00:47:53.760> Right?" + }, + { + "start": 2873.91, + "duration": 0.0, + "text": "ranges of rows to be generated. Right?" + }, + { + "start": 2873.92, + "duration": 0.0, + "text": "ranges of rows to be generated. Right? You've<00:47:54.079> got<00:47:54.240> W<00:47:54.560> for<00:47:54.720> the<00:47:54.880> top<00:47:55.760> um<00:47:56.720> uh<00:47:57.040> well" + }, + { + "start": 2877.27, + "duration": 0.0, + "text": "You've got W for the top um uh well" + }, + { + "start": 2877.28, + "duration": 0.0, + "text": "You've got W for the top um uh well you've<00:47:57.440> got<00:47:57.599> W<00:47:57.839> as<00:47:58.000> the<00:47:58.160> top<00:47:58.319> node<00:47:58.560> and<00:47:58.800> then" + }, + { + "start": 2879.03, + "duration": 0.0, + "text": "you've got W as the top node and then" + }, + { + "start": 2879.04, + "duration": 0.0, + "text": "you've got W as the top node and then the<00:47:59.359> things<00:47:59.599> before<00:47:59.920> the<00:48:00.160> splits<00:48:00.720> are<00:48:01.040> W<00:48:01.359> pre" + }, + { + "start": 2881.589, + "duration": 0.0, + "text": "the things before the splits are W pre" + }, + { + "start": 2881.599, + "duration": 0.0, + "text": "the things before the splits are W pre and<00:48:01.760> the<00:48:01.920> things<00:48:02.079> after<00:48:02.319> the<00:48:02.480> splits<00:48:02.720> are<00:48:02.880> W" + }, + { + "start": 2883.19, + "duration": 0.0, + "text": "and the things after the splits are W" + }, + { + "start": 2883.2, + "duration": 0.0, + "text": "and the things after the splits are W post<00:48:03.839> in<00:48:04.000> this<00:48:04.160> particular<00:48:04.480> case<00:48:04.720> for<00:48:04.880> one" + }, + { + "start": 2885.19, + "duration": 0.0, + "text": "post in this particular case for one" + }, + { + "start": 2885.2, + "duration": 0.0, + "text": "post in this particular case for one child<00:48:05.440> split<00:48:05.680> it's<00:48:05.760> a<00:48:05.839> very<00:48:06.000> simple<00:48:06.160> case" + }, + { + "start": 2886.39, + "duration": 0.0, + "text": "child split it's a very simple case" + }, + { + "start": 2886.4, + "duration": 0.0, + "text": "child split it's a very simple case right<00:48:06.560> you've<00:48:06.720> only<00:48:06.880> got<00:48:06.960> one<00:48:07.200> split<00:48:07.440> per<00:48:07.599> node" + }, + { + "start": 2887.829, + "duration": 0.0, + "text": "right you've only got one split per node" + }, + { + "start": 2887.839, + "duration": 0.0, + "text": "right you've only got one split per node but<00:48:08.640> um<00:48:08.880> but<00:48:09.040> yes<00:48:09.280> you've<00:48:09.440> got<00:48:09.599> W<00:48:09.760> pre<00:48:10.880> and<00:48:11.119> so" + }, + { + "start": 2891.19, + "duration": 0.0, + "text": "but um but yes you've got W pre and so" + }, + { + "start": 2891.2, + "duration": 0.0, + "text": "but um but yes you've got W pre and so on<00:48:11.359> and<00:48:11.520> so<00:48:11.680> forth<00:48:12.240> doesn't<00:48:12.400> have<00:48:12.560> any<00:48:12.720> splits" + }, + { + "start": 2893.03, + "duration": 0.0, + "text": "on and so forth doesn't have any splits" + }, + { + "start": 2893.04, + "duration": 0.0, + "text": "on and so forth doesn't have any splits underneath<00:48:13.359> it<00:48:13.520> so<00:48:13.680> you<00:48:13.839> just<00:48:13.920> get<00:48:14.079> four<00:48:15.280> um" + }, + { + "start": 2895.51, + "duration": 0.0, + "text": "underneath it so you just get four um" + }, + { + "start": 2895.52, + "duration": 0.0, + "text": "underneath it so you just get four um but<00:48:15.760> you<00:48:15.920> can<00:48:16.079> flatten<00:48:16.400> it<00:48:16.560> this<00:48:16.800> way" + }, + { + "start": 2900.48, + "duration": 0.0, + "text": "and<00:48:20.640> looking<00:48:20.880> back<00:48:20.960> at<00:48:21.119> the<00:48:21.359> original<00:48:21.599> image" + }, + { + "start": 2902.549, + "duration": 0.0, + "text": "and looking back at the original image" + }, + { + "start": 2902.559, + "duration": 0.0, + "text": "and looking back at the original image we<00:48:22.800> can<00:48:22.880> see<00:48:23.040> these<00:48:23.280> ranges<00:48:23.760> directly,<00:48:24.559> right?" + }, + { + "start": 2905.349, + "duration": 0.0, + "text": "we can see these ranges directly, right?" + }, + { + "start": 2905.359, + "duration": 0.0, + "text": "we can see these ranges directly, right? Here's<00:48:25.760> W<00:48:26.000> pre,<00:48:26.960> here's<00:48:27.280> S<00:48:27.520> pre,<00:48:28.640> here's<00:48:29.040> C" + }, + { + "start": 2909.27, + "duration": 0.0, + "text": "Here's W pre, here's S pre, here's C" + }, + { + "start": 2909.28, + "duration": 0.0, + "text": "Here's W pre, here's S pre, here's C pre," + }, + { + "start": 2910.79, + "duration": 0.0, + "text": "pre," + }, + { + "start": 2910.8, + "duration": 0.0, + "text": "pre, here's<00:48:31.119> B<00:48:31.359> pre,<00:48:32.160> here's<00:48:32.400> all<00:48:32.480> the<00:48:32.640> members" + }, + { + "start": 2912.87, + "duration": 0.0, + "text": "here's B pre, here's all the members" + }, + { + "start": 2912.88, + "duration": 0.0, + "text": "here's B pre, here's all the members before,<00:48:33.359> no,<00:48:33.599> no<00:48:33.839> splits,<00:48:34.240> right?<00:48:34.480> So,<00:48:34.559> that's" + }, + { + "start": 2914.79, + "duration": 0.0, + "text": "before, no, no splits, right? So, that's" + }, + { + "start": 2914.8, + "duration": 0.0, + "text": "before, no, no splits, right? So, that's all<00:48:34.880> of<00:48:35.040> them.<00:48:36.160> Uh,<00:48:36.400> and<00:48:36.559> then<00:48:36.720> we<00:48:36.880> pop<00:48:37.119> back" + }, + { + "start": 2917.27, + "duration": 0.0, + "text": "all of them. Uh, and then we pop back" + }, + { + "start": 2917.28, + "duration": 0.0, + "text": "all of them. Uh, and then we pop back out,<00:48:37.440> right?<00:48:37.599> We've<00:48:37.760> got<00:48:37.920> B<00:48:38.160> post.<00:48:39.040> Cost" + }, + { + "start": 2919.75, + "duration": 0.0, + "text": "out, right? We've got B post. Cost" + }, + { + "start": 2919.76, + "duration": 0.0, + "text": "out, right? We've got B post. Cost happens<00:48:40.079> to<00:48:40.240> be<00:48:40.319> empty,<00:48:40.800> right?<00:48:41.040> There's<00:48:41.200> no" + }, + { + "start": 2921.349, + "duration": 0.0, + "text": "happens to be empty, right? There's no" + }, + { + "start": 2921.359, + "duration": 0.0, + "text": "happens to be empty, right? There's no members<00:48:41.680> after<00:48:42.720> um<00:48:42.960> bindings,<00:48:43.520> which<00:48:44.000> no" + }, + { + "start": 2924.309, + "duration": 0.0, + "text": "members after um bindings, which no" + }, + { + "start": 2924.319, + "duration": 0.0, + "text": "members after um bindings, which no problem." + }, + { + "start": 2925.99, + "duration": 0.0, + "text": "problem." + }, + { + "start": 2926.0, + "duration": 0.0, + "text": "problem. And<00:48:46.160> then<00:48:46.319> we<00:48:46.400> get<00:48:46.559> S<00:48:46.800> post." + }, + { + "start": 2928.47, + "duration": 0.0, + "text": "And then we get S post." + }, + { + "start": 2928.48, + "duration": 0.0, + "text": "And then we get S post. um<00:48:48.720> that's<00:48:48.960> all<00:48:49.040> you<00:48:49.200> can<00:48:49.280> see<00:48:49.359> in<00:48:49.520> this<00:48:49.599> image," + }, + { + "start": 2929.75, + "duration": 0.0, + "text": "um that's all you can see in this image," + }, + { + "start": 2929.76, + "duration": 0.0, + "text": "um that's all you can see in this image, but<00:48:50.000> then<00:48:50.079> there'd<00:48:50.319> be<00:48:50.400> a<00:48:50.559> W<00:48:50.800> post<00:48:51.359> further<00:48:51.760> on" + }, + { + "start": 2932.069, + "duration": 0.0, + "text": "but then there'd be a W post further on" + }, + { + "start": 2932.079, + "duration": 0.0, + "text": "but then there'd be a W post further on like<00:48:52.720> you<00:48:52.880> know<00:48:52.960> I<00:48:53.119> think<00:48:53.200> there<00:48:53.520> technically" + }, + { + "start": 2933.91, + "duration": 0.0, + "text": "like you know I think there technically" + }, + { + "start": 2933.92, + "duration": 0.0, + "text": "like you know I think there technically should<00:48:54.160> be<00:48:54.319> but<00:48:54.960> um<00:48:55.440> there<00:48:55.920> but<00:48:56.160> you<00:48:56.319> can't" + }, + { + "start": 2936.39, + "duration": 0.0, + "text": "should be but um there but you can't" + }, + { + "start": 2936.4, + "duration": 0.0, + "text": "should be but um there but you can't really<00:48:56.640> see<00:48:56.720> it<00:48:56.960> but<00:48:57.280> there'd<00:48:57.520> be<00:48:57.599> a<00:48:57.680> W<00:48:57.920> post" + }, + { + "start": 2938.15, + "duration": 0.0, + "text": "really see it but there'd be a W post" + }, + { + "start": 2938.16, + "duration": 0.0, + "text": "really see it but there'd be a W post after<00:48:58.400> that.<00:48:59.280> So<00:48:59.599> given<00:48:59.920> this<00:49:00.079> flat<00:49:00.319> list<00:49:00.559> of" + }, + { + "start": 2940.71, + "duration": 0.0, + "text": "after that. So given this flat list of" + }, + { + "start": 2940.72, + "duration": 0.0, + "text": "after that. So given this flat list of ranges<00:49:01.680> um<00:49:01.839> of<00:49:02.079> evaluations<00:49:02.720> we<00:49:02.880> can<00:49:02.960> then" + }, + { + "start": 2943.109, + "duration": 0.0, + "text": "ranges um of evaluations we can then" + }, + { + "start": 2943.119, + "duration": 0.0, + "text": "ranges um of evaluations we can then perform<00:49:03.440> the<00:49:03.599> windowing<00:49:04.079> on<00:49:04.240> that<00:49:04.480> structure." + }, + { + "start": 2944.79, + "duration": 0.0, + "text": "perform the windowing on that structure." + }, + { + "start": 2944.8, + "duration": 0.0, + "text": "perform the windowing on that structure. You've<00:49:04.960> got<00:49:05.040> a<00:49:05.200> you've<00:49:05.440> got<00:49:05.520> a<00:49:05.680> linear<00:49:06.000> list<00:49:06.319> at" + }, + { + "start": 2946.47, + "duration": 0.0, + "text": "You've got a you've got a linear list at" + }, + { + "start": 2946.48, + "duration": 0.0, + "text": "You've got a you've got a linear list at that<00:49:06.720> point<00:49:06.880> you<00:49:07.119> know<00:49:07.280> how<00:49:07.599> big<00:49:07.839> each<00:49:08.079> of" + }, + { + "start": 2948.15, + "duration": 0.0, + "text": "that point you know how big each of" + }, + { + "start": 2948.16, + "duration": 0.0, + "text": "that point you know how big each of these<00:49:08.400> ranges<00:49:08.800> are.<00:49:09.359> Then<00:49:09.599> you<00:49:09.760> can<00:49:10.160> uh<00:49:10.400> window" + }, + { + "start": 2950.79, + "duration": 0.0, + "text": "these ranges are. Then you can uh window" + }, + { + "start": 2950.8, + "duration": 0.0, + "text": "these ranges are. Then you can uh window that<00:49:10.960> list.<00:49:11.280> it's<00:49:11.520> sort<00:49:11.680> of<00:49:12.000> um<00:49:13.440> you're" + }, + { + "start": 2953.67, + "duration": 0.0, + "text": "that list. it's sort of um you're" + }, + { + "start": 2953.68, + "duration": 0.0, + "text": "that list. it's sort of um you're performing<00:49:14.000> windowing<00:49:14.400> on<00:49:14.480> a<00:49:14.640> much<00:49:14.800> more" + }, + { + "start": 2954.95, + "duration": 0.0, + "text": "performing windowing on a much more" + }, + { + "start": 2954.96, + "duration": 0.0, + "text": "performing windowing on a much more limited<00:49:15.280> range<00:49:15.599> than<00:49:15.760> the<00:49:16.000> full<00:49:16.240> set<00:49:16.400> of" + }, + { + "start": 2956.549, + "duration": 0.0, + "text": "limited range than the full set of" + }, + { + "start": 2956.559, + "duration": 0.0, + "text": "limited range than the full set of possible<00:49:17.119> rows.<00:49:17.359> Right?" + }, + { + "start": 2960.309, + "duration": 0.0, + "text": "possible rows. Right?" + }, + { + "start": 2960.319, + "duration": 0.0, + "text": "possible rows. Right? So<00:49:20.720> uh<00:49:20.800> in<00:49:21.040> my<00:49:21.200> terminology<00:49:21.680> and<00:49:21.920> the<00:49:22.079> way<00:49:22.160> that" + }, + { + "start": 2962.309, + "duration": 0.0, + "text": "So uh in my terminology and the way that" + }, + { + "start": 2962.319, + "duration": 0.0, + "text": "So uh in my terminology and the way that I<00:49:22.480> implement<00:49:22.800> this<00:49:23.359> uh<00:49:23.599> each<00:49:23.839> one<00:49:24.000> of<00:49:24.079> those" + }, + { + "start": 2964.309, + "duration": 0.0, + "text": "I implement this uh each one of those" + }, + { + "start": 2964.319, + "duration": 0.0, + "text": "I implement this uh each one of those nodes<00:49:24.720> the<00:49:25.200> in<00:49:25.440> the<00:49:25.680> sort<00:49:25.920> of<00:49:26.079> tree<00:49:26.319> of<00:49:26.640> ranged" + }, + { + "start": 2967.109, + "duration": 0.0, + "text": "nodes the in the sort of tree of ranged" + }, + { + "start": 2967.119, + "duration": 0.0, + "text": "nodes the in the sort of tree of ranged evaluations<00:49:27.680> or<00:49:28.000> whatever<00:49:28.319> you<00:49:28.400> want<00:49:28.480> to<00:49:28.559> call" + }, + { + "start": 2968.71, + "duration": 0.0, + "text": "evaluations or whatever you want to call" + }, + { + "start": 2968.72, + "duration": 0.0, + "text": "evaluations or whatever you want to call it<00:49:28.960> I<00:49:29.119> call<00:49:29.280> it<00:49:29.440> a<00:49:29.599> block.<00:49:30.240> Um<00:49:31.599> and<00:49:31.760> so<00:49:31.920> to<00:49:32.160> do" + }, + { + "start": 2972.23, + "duration": 0.0, + "text": "it I call it a block. Um and so to do" + }, + { + "start": 2972.24, + "duration": 0.0, + "text": "it I call it a block. Um and so to do this<00:49:32.400> step<00:49:32.640> of<00:49:32.800> evaluation<00:49:33.839> visualization<00:49:34.480> we" + }, + { + "start": 2974.63, + "duration": 0.0, + "text": "this step of evaluation visualization we" + }, + { + "start": 2974.64, + "duration": 0.0, + "text": "this step of evaluation visualization we produce<00:49:34.880> a<00:49:35.040> block<00:49:35.280> tree<00:49:35.839> from<00:49:36.079> an<00:49:36.240> evaluation." + }, + { + "start": 2977.19, + "duration": 0.0, + "text": "produce a block tree from an evaluation." + }, + { + "start": 2977.2, + "duration": 0.0, + "text": "produce a block tree from an evaluation. So<00:49:37.359> a<00:49:37.599> block<00:49:38.000> contains<00:49:38.319> an<00:49:38.559> evaluation<00:49:39.440> some" + }, + { + "start": 2979.67, + "duration": 0.0, + "text": "So a block contains an evaluation some" + }, + { + "start": 2979.68, + "duration": 0.0, + "text": "So a block contains an evaluation some root<00:49:40.000> evaluation<00:49:40.480> and<00:49:40.640> then<00:49:40.800> it<00:49:40.960> says<00:49:41.760> uh<00:49:41.920> I'm" + }, + { + "start": 2982.15, + "duration": 0.0, + "text": "root evaluation and then it says uh I'm" + }, + { + "start": 2982.16, + "duration": 0.0, + "text": "root evaluation and then it says uh I'm the<00:49:42.480> range<00:49:42.720> of<00:49:43.280> you<00:49:43.440> know<00:49:43.599> 0<00:49:43.920> to<00:49:45.040> n<00:49:45.680> of<00:49:46.079> the<00:49:46.240> or" + }, + { + "start": 2986.63, + "duration": 0.0, + "text": "the range of you know 0 to n of the or" + }, + { + "start": 2986.64, + "duration": 0.0, + "text": "the range of you know 0 to n of the or you<00:49:46.800> know<00:49:47.119> n<00:49:47.280> to<00:49:47.520> n<00:49:47.760> maybe<00:49:48.640> uh<00:49:48.800> of<00:49:49.200> like<00:49:49.440> within" + }, + { + "start": 2989.829, + "duration": 0.0, + "text": "you know n to n maybe uh of like within" + }, + { + "start": 2989.839, + "duration": 0.0, + "text": "you know n to n maybe uh of like within this<00:49:50.079> evaluation<00:49:50.640> I'm<00:49:50.880> sort<00:49:51.040> of<00:49:51.200> like<00:49:51.440> here's" + }, + { + "start": 2991.67, + "duration": 0.0, + "text": "this evaluation I'm sort of like here's" + }, + { + "start": 2991.68, + "duration": 0.0, + "text": "this evaluation I'm sort of like here's the<00:49:51.839> root<00:49:52.000> evaluation<00:49:52.480> that<00:49:52.720> I'm<00:49:52.880> going<00:49:52.960> to" + }, + { + "start": 2993.03, + "duration": 0.0, + "text": "the root evaluation that I'm going to" + }, + { + "start": 2993.04, + "duration": 0.0, + "text": "the root evaluation that I'm going to look<00:49:53.200> at<00:49:53.359> the<00:49:53.839> these<00:49:54.319> children<00:49:54.559> of<00:49:54.800> that." + }, + { + "start": 2996.47, + "duration": 0.0, + "text": "look at the these children of that." + }, + { + "start": 2996.48, + "duration": 0.0, + "text": "look at the these children of that. Um,<00:49:57.839> so<00:49:58.640> given<00:49:58.960> this<00:49:59.200> example,<00:49:59.839> you've<00:50:00.000> got<00:50:00.079> a" + }, + { + "start": 3000.23, + "duration": 0.0, + "text": "Um, so given this example, you've got a" + }, + { + "start": 3000.24, + "duration": 0.0, + "text": "Um, so given this example, you've got a ve<00:50:00.640> 4<00:50:01.760> array<00:50:02.400> of<00:50:02.640> 1<00:50:02.880> billion<00:50:03.440> ve<00:50:03.760> 4s.<00:50:04.640> Um,<00:50:05.680> uh," + }, + { + "start": 3005.829, + "duration": 0.0, + "text": "ve 4 array of 1 billion ve 4s. Um, uh," + }, + { + "start": 3005.839, + "duration": 0.0, + "text": "ve 4 array of 1 billion ve 4s. Um, uh, with<00:50:06.000> the<00:50:06.160> element<00:50:06.480> at,<00:50:06.880> uh,<00:50:07.040> you've<00:50:07.200> got<00:50:07.280> the" + }, + { + "start": 3007.43, + "duration": 0.0, + "text": "with the element at, uh, you've got the" + }, + { + "start": 3007.44, + "duration": 0.0, + "text": "with the element at, uh, you've got the element<00:50:07.760> at<00:50:07.920> 1<00:50:08.160> million<00:50:08.559> expanded.<00:50:09.040> So<00:50:09.200> you've" + }, + { + "start": 3009.43, + "duration": 0.0, + "text": "element at 1 million expanded. So you've" + }, + { + "start": 3009.44, + "duration": 0.0, + "text": "element at 1 million expanded. So you've like<00:50:09.920> scrolled<00:50:10.319> a<00:50:10.559> long<00:50:10.720> way<00:50:10.880> and<00:50:11.119> then<00:50:11.200> you've" + }, + { + "start": 3011.43, + "duration": 0.0, + "text": "like scrolled a long way and then you've" + }, + { + "start": 3011.44, + "duration": 0.0, + "text": "like scrolled a long way and then you've like<00:50:11.599> clicked," + }, + { + "start": 3013.91, + "duration": 0.0, + "text": "like clicked," + }, + { + "start": 3013.92, + "duration": 0.0, + "text": "like clicked, you<00:50:14.160> get<00:50:14.240> this<00:50:14.480> block<00:50:14.720> tree,<00:50:14.960> right?<00:50:15.119> You've" + }, + { + "start": 3015.27, + "duration": 0.0, + "text": "you get this block tree, right? You've" + }, + { + "start": 3015.28, + "duration": 0.0, + "text": "you get this block tree, right? You've got<00:50:15.440> some<00:50:15.599> root<00:50:15.920> evaluation<00:50:16.480> for<00:50:16.720> array.<00:50:18.160> Um," + }, + { + "start": 3018.95, + "duration": 0.0, + "text": "got some root evaluation for array. Um," + }, + { + "start": 3018.96, + "duration": 0.0, + "text": "got some root evaluation for array. Um, and<00:50:19.119> then<00:50:19.280> when<00:50:19.440> you<00:50:19.599> expand<00:50:19.839> array,<00:50:20.160> you<00:50:20.319> need" + }, + { + "start": 3020.39, + "duration": 0.0, + "text": "and then when you expand array, you need" + }, + { + "start": 3020.4, + "duration": 0.0, + "text": "and then when you expand array, you need a<00:50:20.559> block<00:50:20.720> for<00:50:20.880> that<00:50:21.119> expansion.<00:50:21.599> So<00:50:21.680> you<00:50:21.839> get" + }, + { + "start": 3022.23, + "duration": 0.0, + "text": "a block for that expansion. So you get" + }, + { + "start": 3022.24, + "duration": 0.0, + "text": "a block for that expansion. So you get one<00:50:22.480> node<00:50:22.720> that's<00:50:23.040> 0<00:50:23.280> to<00:50:23.440> 1<00:50:23.680> billion.<00:50:24.160> And<00:50:24.400> then" + }, + { + "start": 3024.87, + "duration": 0.0, + "text": "one node that's 0 to 1 billion. And then" + }, + { + "start": 3024.88, + "duration": 0.0, + "text": "one node that's 0 to 1 billion. And then you've<00:50:25.119> got<00:50:25.440> one<00:50:25.680> node<00:50:26.000> for<00:50:26.160> the<00:50:26.319> members<00:50:26.559> of" + }, + { + "start": 3026.71, + "duration": 0.0, + "text": "you've got one node for the members of" + }, + { + "start": 3026.72, + "duration": 0.0, + "text": "you've got one node for the members of the<00:50:26.880> 1<00:50:27.119> millionth<00:50:27.839> or<00:50:28.160> sorry<00:50:29.040> 1<00:50:29.280> million<00:50:29.680> and" + }, + { + "start": 3029.99, + "duration": 0.0, + "text": "the 1 millionth or sorry 1 million and" + }, + { + "start": 3030.0, + "duration": 0.0, + "text": "the 1 millionth or sorry 1 million and first<00:50:30.400> element.<00:50:31.280> Um<00:50:31.760> you<00:50:31.920> get<00:50:32.160> you<00:50:32.480> hopefully" + }, + { + "start": 3032.79, + "duration": 0.0, + "text": "first element. Um you get you hopefully" + }, + { + "start": 3032.8, + "duration": 0.0, + "text": "first element. Um you get you hopefully get<00:50:32.960> the<00:50:33.119> picture." + }, + { + "start": 3039.04, + "duration": 0.0, + "text": "Um" + }, + { + "start": 3042.48, + "duration": 0.0, + "text": "so<00:50:43.280> um<00:50:44.400> when<00:50:44.640> we're<00:50:44.880> actually<00:50:45.040> building<00:50:45.280> this" + }, + { + "start": 3045.51, + "duration": 0.0, + "text": "so um when we're actually building this" + }, + { + "start": 3045.52, + "duration": 0.0, + "text": "so um when we're actually building this block<00:50:45.760> tree<00:50:45.920> structure<00:50:46.240> so<00:50:46.400> we<00:50:46.559> have<00:50:46.720> an" + }, + { + "start": 3046.87, + "duration": 0.0, + "text": "block tree structure so we have an" + }, + { + "start": 3046.88, + "duration": 0.0, + "text": "block tree structure so we have an evaluation<00:50:47.680> we<00:50:47.839> need<00:50:48.000> to<00:50:48.079> sort<00:50:48.240> of<00:50:48.400> build<00:50:48.640> this" + }, + { + "start": 3048.87, + "duration": 0.0, + "text": "evaluation we need to sort of build this" + }, + { + "start": 3048.88, + "duration": 0.0, + "text": "evaluation we need to sort of build this block<00:50:49.200> structure<00:50:49.520> here.<00:50:50.720> And<00:50:51.040> the<00:50:51.200> way<00:50:51.359> we<00:50:51.520> can" + }, + { + "start": 3051.589, + "duration": 0.0, + "text": "block structure here. And the way we can" + }, + { + "start": 3051.599, + "duration": 0.0, + "text": "block structure here. And the way we can do<00:50:51.760> that<00:50:51.920> is<00:50:52.079> by<00:50:52.319> storing<00:50:52.800> some<00:50:53.119> kind<00:50:53.359> of" + }, + { + "start": 3053.75, + "duration": 0.0, + "text": "do that is by storing some kind of" + }, + { + "start": 3053.76, + "duration": 0.0, + "text": "do that is by storing some kind of expansion<00:50:54.240> state,<00:50:54.559> right?<00:50:54.720> We<00:50:54.880> need<00:50:54.960> to<00:50:55.200> sort" + }, + { + "start": 3055.349, + "duration": 0.0, + "text": "expansion state, right? We need to sort" + }, + { + "start": 3055.359, + "duration": 0.0, + "text": "expansion state, right? We need to sort of<00:50:55.680> have<00:50:55.920> some<00:50:56.240> data<00:50:56.559> structure<00:50:56.880> that<00:50:57.200> records" + }, + { + "start": 3058.39, + "duration": 0.0, + "text": "of have some data structure that records" + }, + { + "start": 3058.4, + "duration": 0.0, + "text": "of have some data structure that records which<00:50:58.640> nodes<00:50:58.960> are<00:50:59.119> expanded.<00:50:59.599> And<00:50:59.760> how<00:50:59.920> do<00:51:00.000> we" + }, + { + "start": 3060.15, + "duration": 0.0, + "text": "which nodes are expanded. And how do we" + }, + { + "start": 3060.16, + "duration": 0.0, + "text": "which nodes are expanded. And how do we record<00:51:00.480> that<00:51:00.800> if<00:51:01.200> you<00:51:01.359> know<00:51:01.440> we<00:51:01.680> don't<00:51:01.839> want<00:51:01.920> to" + }, + { + "start": 3062.069, + "duration": 0.0, + "text": "record that if you know we don't want to" + }, + { + "start": 3062.079, + "duration": 0.0, + "text": "record that if you know we don't want to store<00:51:02.400> something<00:51:02.640> for<00:51:02.800> every<00:51:03.119> row<00:51:03.200> because" + }, + { + "start": 3063.349, + "duration": 0.0, + "text": "store something for every row because" + }, + { + "start": 3063.359, + "duration": 0.0, + "text": "store something for every row because then<00:51:03.520> we're<00:51:03.599> back<00:51:03.760> in<00:51:03.920> the<00:51:04.079> same<00:51:04.319> problem," + }, + { + "start": 3064.63, + "duration": 0.0, + "text": "then we're back in the same problem," + }, + { + "start": 3064.64, + "duration": 0.0, + "text": "then we're back in the same problem, right?<00:51:04.880> It's<00:51:05.040> like<00:51:05.680> I<00:51:05.839> don't<00:51:06.000> want<00:51:06.079> to<00:51:06.240> store<00:51:06.559> 1" + }, + { + "start": 3066.71, + "duration": 0.0, + "text": "right? It's like I don't want to store 1" + }, + { + "start": 3066.72, + "duration": 0.0, + "text": "right? It's like I don't want to store 1 billion<00:51:07.200> expansion<00:51:07.680> states,<00:51:08.240> right?<00:51:08.559> Um<00:51:08.880> so" + }, + { + "start": 3069.109, + "duration": 0.0, + "text": "billion expansion states, right? Um so" + }, + { + "start": 3069.119, + "duration": 0.0, + "text": "billion expansion states, right? Um so we<00:51:09.359> need<00:51:09.440> to<00:51:09.599> find<00:51:09.839> some<00:51:10.079> kind<00:51:10.240> of<00:51:10.480> sparse" + }, + { + "start": 3071.109, + "duration": 0.0, + "text": "we need to find some kind of sparse" + }, + { + "start": 3071.119, + "duration": 0.0, + "text": "we need to find some kind of sparse representation<00:51:12.319> for<00:51:12.559> that<00:51:12.800> information." + }, + { + "start": 3076.24, + "duration": 0.0, + "text": "Um<00:51:16.960> so<00:51:17.280> to<00:51:17.520> see<00:51:17.680> how<00:51:17.839> that<00:51:18.000> might<00:51:18.240> work," + }, + { + "start": 3078.63, + "duration": 0.0, + "text": "Um so to see how that might work," + }, + { + "start": 3078.64, + "duration": 0.0, + "text": "Um so to see how that might work, consider<00:51:18.960> a<00:51:19.119> watch<00:51:19.440> tree<00:51:19.680> like<00:51:19.920> this.<00:51:20.880> Um<00:51:21.359> you" + }, + { + "start": 3081.589, + "duration": 0.0, + "text": "consider a watch tree like this. Um you" + }, + { + "start": 3081.599, + "duration": 0.0, + "text": "consider a watch tree like this. Um you need<00:51:21.760> a<00:51:21.920> data<00:51:22.160> structure<00:51:22.400> which<00:51:22.800> would<00:51:23.119> be" + }, + { + "start": 3083.27, + "duration": 0.0, + "text": "need a data structure which would be" + }, + { + "start": 3083.28, + "duration": 0.0, + "text": "need a data structure which would be able<00:51:23.440> to<00:51:23.760> sort<00:51:24.000> of<00:51:24.079> uniquely<00:51:24.720> pick<00:51:25.040> out" + }, + { + "start": 3085.349, + "duration": 0.0, + "text": "able to sort of uniquely pick out" + }, + { + "start": 3085.359, + "duration": 0.0, + "text": "able to sort of uniquely pick out certain<00:51:25.760> points<00:51:26.000> in<00:51:26.240> the<00:51:26.400> tree<00:51:27.280> and<00:51:27.680> store<00:51:27.839> a" + }, + { + "start": 3088.069, + "duration": 0.0, + "text": "certain points in the tree and store a" + }, + { + "start": 3088.079, + "duration": 0.0, + "text": "certain points in the tree and store a state<00:51:28.240> for<00:51:28.480> them<00:51:28.720> and<00:51:28.960> store<00:51:29.200> only<00:51:29.520> those" + }, + { + "start": 3089.75, + "duration": 0.0, + "text": "state for them and store only those" + }, + { + "start": 3089.76, + "duration": 0.0, + "text": "state for them and store only those expansion<00:51:30.240> states." + }, + { + "start": 3091.99, + "duration": 0.0, + "text": "expansion states." + }, + { + "start": 3092.0, + "duration": 0.0, + "text": "expansion states. Um<00:51:32.880> so<00:51:33.119> let's<00:51:33.359> say<00:51:33.520> A,<00:51:33.760> B,<00:51:34.000> C,<00:51:34.079> and<00:51:34.319> D.<00:51:34.559> Those" + }, + { + "start": 3094.71, + "duration": 0.0, + "text": "Um so let's say A, B, C, and D. Those" + }, + { + "start": 3094.72, + "duration": 0.0, + "text": "Um so let's say A, B, C, and D. Those are<00:51:34.800> the<00:51:34.960> nodes<00:51:35.359> that<00:51:35.599> we<00:51:35.760> want<00:51:35.920> to<00:51:36.079> sort<00:51:36.240> of<00:51:36.319> be" + }, + { + "start": 3096.39, + "duration": 0.0, + "text": "are the nodes that we want to sort of be" + }, + { + "start": 3096.4, + "duration": 0.0, + "text": "are the nodes that we want to sort of be able<00:51:36.559> to<00:51:36.720> uniquely<00:51:37.119> define." + }, + { + "start": 3099.43, + "duration": 0.0, + "text": "able to uniquely define." + }, + { + "start": 3099.44, + "duration": 0.0, + "text": "able to uniquely define. And<00:51:39.599> then<00:51:39.839> you<00:51:39.920> know<00:51:40.000> once<00:51:40.240> we<00:51:40.400> have<00:51:40.480> that<00:51:40.720> data" + }, + { + "start": 3100.95, + "duration": 0.0, + "text": "And then you know once we have that data" + }, + { + "start": 3100.96, + "duration": 0.0, + "text": "And then you know once we have that data structure<00:51:41.520> when<00:51:41.760> we're<00:51:41.920> building<00:51:42.160> the<00:51:42.319> block" + }, + { + "start": 3102.47, + "duration": 0.0, + "text": "structure when we're building the block" + }, + { + "start": 3102.48, + "duration": 0.0, + "text": "structure when we're building the block tree<00:51:42.640> we<00:51:42.800> can<00:51:42.880> go<00:51:42.960> ahead<00:51:43.200> and<00:51:43.359> say<00:51:43.839> here's<00:51:44.160> my" + }, + { + "start": 3104.47, + "duration": 0.0, + "text": "tree we can go ahead and say here's my" + }, + { + "start": 3104.48, + "duration": 0.0, + "text": "tree we can go ahead and say here's my here's<00:51:44.800> my<00:51:45.440> spot<00:51:45.680> in<00:51:45.839> the<00:51:46.000> tree<00:51:46.400> check<00:51:46.559> if<00:51:46.800> it's" + }, + { + "start": 3106.95, + "duration": 0.0, + "text": "here's my spot in the tree check if it's" + }, + { + "start": 3106.96, + "duration": 0.0, + "text": "here's my spot in the tree check if it's expanded<00:51:48.000> um<00:51:48.160> in<00:51:48.400> the<00:51:48.559> sparse<00:51:48.960> expansion" + }, + { + "start": 3109.349, + "duration": 0.0, + "text": "expanded um in the sparse expansion" + }, + { + "start": 3109.359, + "duration": 0.0, + "text": "expanded um in the sparse expansion state<00:51:49.760> and<00:51:49.920> if<00:51:50.160> it's<00:51:50.400> expanded<00:51:50.880> then<00:51:51.040> we" + }, + { + "start": 3111.43, + "duration": 0.0, + "text": "state and if it's expanded then we" + }, + { + "start": 3111.44, + "duration": 0.0, + "text": "state and if it's expanded then we recursively<00:51:52.000> descend<00:51:52.319> right<00:51:52.640> then<00:51:52.800> we<00:51:52.960> build" + }, + { + "start": 3113.109, + "duration": 0.0, + "text": "recursively descend right then we build" + }, + { + "start": 3113.119, + "duration": 0.0, + "text": "recursively descend right then we build another<00:51:53.440> block<00:51:53.680> in<00:51:53.920> the<00:51:54.079> in<00:51:54.240> the<00:51:54.400> block<00:51:54.559> tree." + }, + { + "start": 3116.39, + "duration": 0.0, + "text": "another block in the in the block tree." + }, + { + "start": 3116.4, + "duration": 0.0, + "text": "another block in the in the block tree. Oh<00:51:56.720> no." + }, + { + "start": 3119.27, + "duration": 0.0, + "text": "Oh no." + }, + { + "start": 3119.28, + "duration": 0.0, + "text": "Oh no. Okay.<00:51:59.920> One<00:52:00.240> way<00:52:00.319> of<00:52:00.480> defining<00:52:01.119> uh<00:52:01.280> A,<00:52:01.520> B,<00:52:01.680> C," + }, + { + "start": 3121.75, + "duration": 0.0, + "text": "Okay. One way of defining uh A, B, C," + }, + { + "start": 3121.76, + "duration": 0.0, + "text": "Okay. One way of defining uh A, B, C, and<00:52:02.000> D<00:52:02.400> for<00:52:02.720> any<00:52:03.040> tree" + }, + { + "start": 3124.549, + "duration": 0.0, + "text": "and D for any tree" + }, + { + "start": 3124.559, + "duration": 0.0, + "text": "and D for any tree um<00:52:04.880> is<00:52:05.119> to<00:52:05.440> store<00:52:05.760> a<00:52:06.079> walk<00:52:06.480> from<00:52:06.720> the<00:52:06.880> root<00:52:07.119> node" + }, + { + "start": 3127.27, + "duration": 0.0, + "text": "um is to store a walk from the root node" + }, + { + "start": 3127.28, + "duration": 0.0, + "text": "um is to store a walk from the root node of<00:52:07.440> the<00:52:07.599> tree<00:52:08.000> down<00:52:09.040> um<00:52:09.359> to<00:52:09.599> whatever<00:52:10.000> child" + }, + { + "start": 3130.309, + "duration": 0.0, + "text": "of the tree down um to whatever child" + }, + { + "start": 3130.319, + "duration": 0.0, + "text": "of the tree down um to whatever child you're<00:52:10.480> going<00:52:10.559> to<00:52:10.640> end<00:52:10.800> up<00:52:10.960> at.<00:52:11.599> Um<00:52:12.240> so,<00:52:12.640> you" + }, + { + "start": 3132.79, + "duration": 0.0, + "text": "you're going to end up at. Um so, you" + }, + { + "start": 3132.8, + "duration": 0.0, + "text": "you're going to end up at. Um so, you know,<00:52:12.960> consider<00:52:13.359> that<00:52:14.000> uh<00:52:14.559> we<00:52:14.880> know<00:52:15.680> that<00:52:16.160> each" + }, + { + "start": 3136.79, + "duration": 0.0, + "text": "know, consider that uh we know that each" + }, + { + "start": 3136.8, + "duration": 0.0, + "text": "know, consider that uh we know that each we<00:52:17.119> know<00:52:17.359> each<00:52:17.839> uh<00:52:18.000> index<00:52:18.400> within<00:52:18.720> some<00:52:19.040> parent" + }, + { + "start": 3140.549, + "duration": 0.0, + "text": "we know each uh index within some parent" + }, + { + "start": 3140.559, + "duration": 0.0, + "text": "we know each uh index within some parent uh<00:52:21.280> of<00:52:21.599> some<00:52:21.920> of<00:52:22.160> some<00:52:22.400> one<00:52:22.559> of<00:52:22.640> these<00:52:22.880> rows.<00:52:23.040> We" + }, + { + "start": 3143.19, + "duration": 0.0, + "text": "uh of some of some one of these rows. We" + }, + { + "start": 3143.2, + "duration": 0.0, + "text": "uh of some of some one of these rows. We know<00:52:23.280> the<00:52:23.440> index<00:52:23.760> within<00:52:24.000> its<00:52:24.240> parent,<00:52:24.559> right?" + }, + { + "start": 3145.27, + "duration": 0.0, + "text": "know the index within its parent, right?" + }, + { + "start": 3145.28, + "duration": 0.0, + "text": "know the index within its parent, right? So,<00:52:25.440> we've<00:52:25.680> got<00:52:26.240> one<00:52:26.480> is<00:52:26.640> the<00:52:26.800> first<00:52:26.960> one<00:52:27.119> at" + }, + { + "start": 3147.27, + "duration": 0.0, + "text": "So, we've got one is the first one at" + }, + { + "start": 3147.28, + "duration": 0.0, + "text": "So, we've got one is the first one at the<00:52:27.440> root<00:52:27.760> level.<00:52:28.400> We've<00:52:28.640> got<00:52:28.800> one<00:52:29.200> underneath" + }, + { + "start": 3149.67, + "duration": 0.0, + "text": "the root level. We've got one underneath" + }, + { + "start": 3149.68, + "duration": 0.0, + "text": "the root level. We've got one underneath that<00:52:30.800> and<00:52:30.960> then<00:52:31.119> we've<00:52:31.359> got<00:52:31.839> one<00:52:32.079> and<00:52:32.319> two" + }, + { + "start": 3152.71, + "duration": 0.0, + "text": "that and then we've got one and two" + }, + { + "start": 3152.72, + "duration": 0.0, + "text": "that and then we've got one and two underneath<00:52:33.200> that." + }, + { + "start": 3157.2, + "duration": 0.0, + "text": "This<00:52:37.359> node's<00:52:37.839> ID<00:52:38.079> can<00:52:38.319> then<00:52:38.559> be<00:52:39.200> uh<00:52:39.280> encoded<00:52:39.760> as" + }, + { + "start": 3159.99, + "duration": 0.0, + "text": "This node's ID can then be uh encoded as" + }, + { + "start": 3160.0, + "duration": 0.0, + "text": "This node's ID can then be uh encoded as okay<00:52:40.319> well<00:52:40.640> we<00:52:40.880> start<00:52:41.040> at<00:52:41.599> one<00:52:41.839> and<00:52:42.000> then<00:52:42.160> we" + }, + { + "start": 3162.309, + "duration": 0.0, + "text": "okay well we start at one and then we" + }, + { + "start": 3162.319, + "duration": 0.0, + "text": "okay well we start at one and then we walk<00:52:42.559> to<00:52:42.720> one." + }, + { + "start": 3164.549, + "duration": 0.0, + "text": "walk to one." + }, + { + "start": 3164.559, + "duration": 0.0, + "text": "walk to one. Um<00:52:45.839> here<00:52:46.319> you<00:52:46.480> know<00:52:46.559> you<00:52:46.720> you<00:52:46.960> start<00:52:47.119> at<00:52:47.359> one" + }, + { + "start": 3167.829, + "duration": 0.0, + "text": "Um here you know you you start at one" + }, + { + "start": 3167.839, + "duration": 0.0, + "text": "Um here you know you you start at one you<00:52:48.000> walk<00:52:48.160> to<00:52:48.400> one<00:52:48.640> you<00:52:48.800> walk<00:52:48.960> to<00:52:49.119> two.<00:52:49.440> That's" + }, + { + "start": 3169.67, + "duration": 0.0, + "text": "you walk to one you walk to two. That's" + }, + { + "start": 3169.68, + "duration": 0.0, + "text": "you walk to one you walk to two. That's that<00:52:49.920> that's<00:52:50.160> how<00:52:50.240> we<00:52:50.400> can<00:52:50.480> encode<00:52:50.800> that" + }, + { + "start": 3170.95, + "duration": 0.0, + "text": "that that's how we can encode that" + }, + { + "start": 3170.96, + "duration": 0.0, + "text": "that that's how we can encode that position<00:52:51.200> in<00:52:51.440> the<00:52:51.520> tree<00:52:52.240> here." + }, + { + "start": 3172.87, + "duration": 0.0, + "text": "position in the tree here." + }, + { + "start": 3172.88, + "duration": 0.0, + "text": "position in the tree here. Unsurprisingly<00:52:53.520> one<00:52:53.680> to<00:52:53.839> one<00:52:54.000> to<00:52:54.160> one." + }, + { + "start": 3176.309, + "duration": 0.0, + "text": "Unsurprisingly one to one to one." + }, + { + "start": 3176.319, + "duration": 0.0, + "text": "Unsurprisingly one to one to one. Now," + }, + { + "start": 3179.839, + "duration": 0.0, + "text": "okay,<00:53:00.640> right.<00:53:01.040> One<00:53:01.280> undesirable<00:53:02.079> property<00:53:02.400> of" + }, + { + "start": 3182.549, + "duration": 0.0, + "text": "okay, right. One undesirable property of" + }, + { + "start": 3182.559, + "duration": 0.0, + "text": "okay, right. One undesirable property of this<00:53:02.720> is<00:53:02.880> that<00:53:03.040> this<00:53:03.200> is<00:53:03.359> like<00:53:03.520> a<00:53:04.079> variable" + }, + { + "start": 3184.47, + "duration": 0.0, + "text": "this is that this is like a variable" + }, + { + "start": 3184.48, + "duration": 0.0, + "text": "this is that this is like a variable length<00:53:04.800> encoding<00:53:05.359> of<00:53:05.599> a<00:53:05.760> particular<00:53:06.079> spot<00:53:06.240> in" + }, + { + "start": 3186.39, + "duration": 0.0, + "text": "length encoding of a particular spot in" + }, + { + "start": 3186.4, + "duration": 0.0, + "text": "length encoding of a particular spot in the<00:53:06.559> tree.<00:53:06.880> You<00:53:07.040> have<00:53:07.200> to<00:53:07.280> store<00:53:07.440> this<00:53:07.680> chain" + }, + { + "start": 3187.91, + "duration": 0.0, + "text": "the tree. You have to store this chain" + }, + { + "start": 3187.92, + "duration": 0.0, + "text": "the tree. You have to store this chain of<00:53:08.079> walk<00:53:08.720> steps<00:53:09.200> to<00:53:09.520> get<00:53:09.680> from<00:53:09.839> the<00:53:10.000> root<00:53:10.240> node" + }, + { + "start": 3190.549, + "duration": 0.0, + "text": "of walk steps to get from the root node" + }, + { + "start": 3190.559, + "duration": 0.0, + "text": "of walk steps to get from the root node down.<00:53:11.359> Um,<00:53:12.720> and<00:53:13.040> so<00:53:13.520> all<00:53:13.760> your<00:53:14.079> ids<00:53:14.319> become" + }, + { + "start": 3194.549, + "duration": 0.0, + "text": "down. Um, and so all your ids become" + }, + { + "start": 3194.559, + "duration": 0.0, + "text": "down. Um, and so all your ids become variable<00:53:14.880> lengths.<00:53:15.200> Now,<00:53:15.359> obviously<00:53:15.680> you" + }, + { + "start": 3195.829, + "duration": 0.0, + "text": "variable lengths. Now, obviously you" + }, + { + "start": 3195.839, + "duration": 0.0, + "text": "variable lengths. Now, obviously you could<00:53:16.000> just<00:53:16.160> do<00:53:16.319> that,<00:53:16.800> but<00:53:17.040> I<00:53:17.200> figured<00:53:17.440> I" + }, + { + "start": 3197.589, + "duration": 0.0, + "text": "could just do that, but I figured I" + }, + { + "start": 3197.599, + "duration": 0.0, + "text": "could just do that, but I figured I would<00:53:17.680> include<00:53:18.000> how<00:53:18.160> you<00:53:18.400> don't<00:53:18.559> do<00:53:18.720> that<00:53:18.880> or" + }, + { + "start": 3199.19, + "duration": 0.0, + "text": "would include how you don't do that or" + }, + { + "start": 3199.2, + "duration": 0.0, + "text": "would include how you don't do that or how<00:53:19.359> you<00:53:19.520> don't<00:53:19.680> need<00:53:19.839> to<00:53:20.000> do<00:53:20.160> that.<00:53:20.559> Um<00:53:20.880> simple" + }, + { + "start": 3201.109, + "duration": 0.0, + "text": "how you don't need to do that. Um simple" + }, + { + "start": 3201.119, + "duration": 0.0, + "text": "how you don't need to do that. Um simple way<00:53:21.280> to<00:53:21.440> eliminate<00:53:21.839> that<00:53:22.640> would<00:53:22.960> just<00:53:23.200> be" + }, + { + "start": 3203.43, + "duration": 0.0, + "text": "way to eliminate that would just be" + }, + { + "start": 3203.44, + "duration": 0.0, + "text": "way to eliminate that would just be consider<00:53:24.480> first<00:53:24.720> we<00:53:24.960> can<00:53:25.040> consider<00:53:25.359> it<00:53:25.520> as" + }, + { + "start": 3205.67, + "duration": 0.0, + "text": "consider first we can consider it as" + }, + { + "start": 3205.68, + "duration": 0.0, + "text": "consider first we can consider it as sort<00:53:25.760> of<00:53:25.839> a<00:53:26.079> parent<00:53:27.359> uh<00:53:27.599> ID<00:53:27.920> and<00:53:28.079> then<00:53:28.240> some" + }, + { + "start": 3208.47, + "duration": 0.0, + "text": "sort of a parent uh ID and then some" + }, + { + "start": 3208.48, + "duration": 0.0, + "text": "sort of a parent uh ID and then some child<00:53:28.880> ID.<00:53:29.520> Uh<00:53:29.760> so<00:53:29.920> we<00:53:30.079> have<00:53:30.240> some<00:53:30.800> encoding<00:53:31.440> of" + }, + { + "start": 3211.75, + "duration": 0.0, + "text": "child ID. Uh so we have some encoding of" + }, + { + "start": 3211.76, + "duration": 0.0, + "text": "child ID. Uh so we have some encoding of the<00:53:32.079> walk<00:53:32.480> from<00:53:33.119> uh<00:53:33.359> the<00:53:33.599> walk<00:53:33.760> to<00:53:33.920> the<00:53:34.079> parent" + }, + { + "start": 3214.549, + "duration": 0.0, + "text": "the walk from uh the walk to the parent" + }, + { + "start": 3214.559, + "duration": 0.0, + "text": "the walk from uh the walk to the parent and<00:53:34.800> then<00:53:34.960> we<00:53:35.359> encode<00:53:35.760> the<00:53:35.920> additional<00:53:36.319> step" + }, + { + "start": 3216.549, + "duration": 0.0, + "text": "and then we encode the additional step" + }, + { + "start": 3216.559, + "duration": 0.0, + "text": "and then we encode the additional step that<00:53:36.720> we<00:53:36.880> take<00:53:37.440> at<00:53:37.760> this<00:53:38.000> particular<00:53:38.319> spot<00:53:38.640> by" + }, + { + "start": 3218.79, + "duration": 0.0, + "text": "that we take at this particular spot by" + }, + { + "start": 3218.8, + "duration": 0.0, + "text": "that we take at this particular spot by saying<00:53:39.119> here's<00:53:39.359> my<00:53:39.599> child<00:53:39.920> index<00:53:40.319> or<00:53:40.559> ID<00:53:40.800> or" + }, + { + "start": 3220.95, + "duration": 0.0, + "text": "saying here's my child index or ID or" + }, + { + "start": 3220.96, + "duration": 0.0, + "text": "saying here's my child index or ID or whatever." + }, + { + "start": 3224.559, + "duration": 0.0, + "text": "So<00:53:45.119> um<00:53:45.920> this<00:53:46.160> node<00:53:46.480> here<00:53:47.200> uh<00:53:47.359> the<00:53:47.760> the<00:53:48.640> yellow" + }, + { + "start": 3229.43, + "duration": 0.0, + "text": "So um this node here uh the the yellow" + }, + { + "start": 3229.44, + "duration": 0.0, + "text": "So um this node here uh the the yellow one<00:53:49.680> the<00:53:50.000> one<00:53:50.240> circled<00:53:50.559> in<00:53:50.720> yellow<00:53:51.280> the<00:53:51.520> way<00:53:51.599> we" + }, + { + "start": 3231.75, + "duration": 0.0, + "text": "one the one circled in yellow the way we" + }, + { + "start": 3231.76, + "duration": 0.0, + "text": "one the one circled in yellow the way we define<00:53:52.000> that<00:53:52.160> key<00:53:52.400> is<00:53:52.559> you<00:53:52.720> know<00:53:52.800> we<00:53:52.880> have<00:53:52.960> some" + }, + { + "start": 3233.109, + "duration": 0.0, + "text": "define that key is you know we have some" + }, + { + "start": 3233.119, + "duration": 0.0, + "text": "define that key is you know we have some encoding<00:53:53.440> of<00:53:53.599> the<00:53:53.680> walk<00:53:53.839> to<00:53:54.000> the<00:53:54.160> parent" + }, + { + "start": 3234.47, + "duration": 0.0, + "text": "encoding of the walk to the parent" + }, + { + "start": 3234.48, + "duration": 0.0, + "text": "encoding of the walk to the parent unique<00:53:54.880> child<00:53:55.200> ID<00:53:55.920> this<00:53:56.160> one<00:53:56.559> same<00:53:56.880> thing" + }, + { + "start": 3239.03, + "duration": 0.0, + "text": "unique child ID this one same thing" + }, + { + "start": 3239.04, + "duration": 0.0, + "text": "unique child ID this one same thing really<00:53:59.359> easy<00:53:59.599> way<00:53:59.680> to<00:53:59.839> do<00:54:00.000> that<00:54:00.400> get<00:54:00.559> a" + }, + { + "start": 3240.71, + "duration": 0.0, + "text": "really easy way to do that get a" + }, + { + "start": 3240.72, + "duration": 0.0, + "text": "really easy way to do that get a cumulative<00:54:01.200> hash<00:54:01.599> of<00:54:01.839> the<00:54:02.079> walk.<00:54:02.480> So" + }, + { + "start": 3243.03, + "duration": 0.0, + "text": "cumulative hash of the walk. So" + }, + { + "start": 3243.04, + "duration": 0.0, + "text": "cumulative hash of the walk. So basically<00:54:03.520> we<00:54:03.760> can<00:54:03.920> start<00:54:04.160> we<00:54:04.400> start<00:54:04.559> with" + }, + { + "start": 3244.71, + "duration": 0.0, + "text": "basically we can start we start with" + }, + { + "start": 3244.72, + "duration": 0.0, + "text": "basically we can start we start with some<00:54:04.880> default<00:54:05.280> hash<00:54:06.000> and<00:54:06.160> then<00:54:06.400> some<00:54:06.559> some<00:54:06.960> ID" + }, + { + "start": 3247.19, + "duration": 0.0, + "text": "some default hash and then some some ID" + }, + { + "start": 3247.2, + "duration": 0.0, + "text": "some default hash and then some some ID for<00:54:07.280> the<00:54:07.440> root<00:54:07.680> node<00:54:08.079> and<00:54:08.319> then<00:54:08.480> we<00:54:08.720> hash<00:54:09.040> that" + }, + { + "start": 3249.27, + "duration": 0.0, + "text": "for the root node and then we hash that" + }, + { + "start": 3249.28, + "duration": 0.0, + "text": "for the root node and then we hash that and<00:54:09.520> that's<00:54:09.680> an<00:54:09.839> encoding<00:54:10.240> of<00:54:10.400> the<00:54:10.559> walk<00:54:10.720> to" + }, + { + "start": 3250.87, + "duration": 0.0, + "text": "and that's an encoding of the walk to" + }, + { + "start": 3250.88, + "duration": 0.0, + "text": "and that's an encoding of the walk to the<00:54:11.040> parent<00:54:11.599> recursively.<00:54:12.240> Right?<00:54:12.480> So<00:54:12.960> for<00:54:13.200> so" + }, + { + "start": 3253.43, + "duration": 0.0, + "text": "the parent recursively. Right? So for so" + }, + { + "start": 3253.44, + "duration": 0.0, + "text": "the parent recursively. Right? So for so for<00:54:13.680> the<00:54:14.400> for<00:54:14.640> the<00:54:14.800> middle<00:54:14.960> one<00:54:15.119> there<00:54:15.359> we<00:54:15.520> hash" + }, + { + "start": 3255.829, + "duration": 0.0, + "text": "for the for the middle one there we hash" + }, + { + "start": 3255.839, + "duration": 0.0, + "text": "for the for the middle one there we hash the<00:54:16.000> top<00:54:16.160> one<00:54:16.559> we<00:54:16.800> get<00:54:16.880> some<00:54:17.119> ID.<00:54:17.839> Um<00:54:18.880> similarly" + }, + { + "start": 3259.829, + "duration": 0.0, + "text": "the top one we get some ID. Um similarly" + }, + { + "start": 3259.839, + "duration": 0.0, + "text": "the top one we get some ID. Um similarly oh<00:54:20.079> my<00:54:20.240> gosh<00:54:21.200> this<00:54:21.440> thing<00:54:21.760> sticks." + }, + { + "start": 3264.63, + "duration": 0.0, + "text": "oh my gosh this thing sticks." + }, + { + "start": 3264.64, + "duration": 0.0, + "text": "oh my gosh this thing sticks. Okay." + }, + { + "start": 3266.39, + "duration": 0.0, + "text": "Okay." + }, + { + "start": 3266.4, + "duration": 0.0, + "text": "Okay. Okay.<00:54:26.880> All<00:54:26.880> right.<00:54:27.200> All<00:54:27.200> right.<00:54:27.520> All<00:54:27.520> right." + }, + { + "start": 3269.43, + "duration": 0.0, + "text": "Okay. All right. All right. All right." + }, + { + "start": 3269.44, + "duration": 0.0, + "text": "Okay. All right. All right. All right. That<00:54:29.760> one" + }, + { + "start": 3271.829, + "duration": 0.0, + "text": "That one" + }, + { + "start": 3271.839, + "duration": 0.0, + "text": "That one ignore<00:54:32.160> everything<00:54:32.480> you<00:54:32.640> just<00:54:32.880> saw.<00:54:33.920> Um<00:54:34.319> that" + }, + { + "start": 3274.549, + "duration": 0.0, + "text": "ignore everything you just saw. Um that" + }, + { + "start": 3274.559, + "duration": 0.0, + "text": "ignore everything you just saw. Um that one<00:54:34.800> you<00:54:34.880> know<00:54:34.960> you<00:54:35.119> hash<00:54:35.359> the<00:54:35.520> parent<00:54:35.920> and<00:54:36.160> so" + }, + { + "start": 3276.309, + "duration": 0.0, + "text": "one you know you hash the parent and so" + }, + { + "start": 3276.319, + "duration": 0.0, + "text": "one you know you hash the parent and so on.<00:54:36.559> Right." + }, + { + "start": 3277.829, + "duration": 0.0, + "text": "on. Right." + }, + { + "start": 3277.839, + "duration": 0.0, + "text": "on. Right. So<00:54:38.319> then<00:54:38.720> because<00:54:39.040> you<00:54:39.280> can<00:54:39.440> have<00:54:39.520> these<00:54:39.760> like" + }, + { + "start": 3279.91, + "duration": 0.0, + "text": "So then because you can have these like" + }, + { + "start": 3279.92, + "duration": 0.0, + "text": "So then because you can have these like sort<00:54:40.079> of<00:54:40.160> unique<00:54:40.480> keys,<00:54:41.119> it's<00:54:41.280> pretty<00:54:41.440> easy<00:54:41.599> at" + }, + { + "start": 3281.75, + "duration": 0.0, + "text": "sort of unique keys, it's pretty easy at" + }, + { + "start": 3281.76, + "duration": 0.0, + "text": "sort of unique keys, it's pretty easy at that<00:54:41.920> point<00:54:42.079> to<00:54:42.319> have<00:54:42.480> a<00:54:42.640> sparse<00:54:43.200> data" + }, + { + "start": 3283.51, + "duration": 0.0, + "text": "that point to have a sparse data" + }, + { + "start": 3283.52, + "duration": 0.0, + "text": "that point to have a sparse data structure<00:54:43.760> that's<00:54:44.079> like<00:54:44.480> look,<00:54:44.720> we're<00:54:44.880> only" + }, + { + "start": 3285.03, + "duration": 0.0, + "text": "structure that's like look, we're only" + }, + { + "start": 3285.04, + "duration": 0.0, + "text": "structure that's like look, we're only talking<00:54:45.280> about<00:54:45.359> the<00:54:45.599> hashes<00:54:45.920> that<00:54:46.160> have" + }, + { + "start": 3286.309, + "duration": 0.0, + "text": "talking about the hashes that have" + }, + { + "start": 3286.319, + "duration": 0.0, + "text": "talking about the hashes that have actually<00:54:46.559> the<00:54:46.800> hashes<00:54:47.040> and<00:54:47.359> ids<00:54:47.599> that<00:54:47.680> have" + }, + { + "start": 3287.91, + "duration": 0.0, + "text": "actually the hashes and ids that have" + }, + { + "start": 3287.92, + "duration": 0.0, + "text": "actually the hashes and ids that have actually<00:54:48.160> been<00:54:48.319> expanded.<00:54:49.280> Um<00:54:50.240> and<00:54:50.400> then<00:54:50.559> you" + }, + { + "start": 3290.79, + "duration": 0.0, + "text": "actually been expanded. Um and then you" + }, + { + "start": 3290.8, + "duration": 0.0, + "text": "actually been expanded. Um and then you can<00:54:50.960> actually<00:54:51.520> uh<00:54:51.920> you<00:54:52.079> know<00:54:52.319> look<00:54:52.480> it<00:54:52.640> up<00:54:52.800> and" + }, + { + "start": 3292.95, + "duration": 0.0, + "text": "can actually uh you know look it up and" + }, + { + "start": 3292.96, + "duration": 0.0, + "text": "can actually uh you know look it up and produce<00:54:53.119> the<00:54:53.280> block<00:54:53.520> tree,<00:54:53.839> right?<00:54:54.800> So<00:54:54.960> let's" + }, + { + "start": 3295.19, + "duration": 0.0, + "text": "produce the block tree, right? So let's" + }, + { + "start": 3295.2, + "duration": 0.0, + "text": "produce the block tree, right? So let's zoom<00:54:55.440> back<00:54:55.599> out.<00:54:56.480> Start<00:54:56.640> with<00:54:56.800> an<00:54:56.960> evaluation" + }, + { + "start": 3297.91, + "duration": 0.0, + "text": "zoom back out. Start with an evaluation" + }, + { + "start": 3297.92, + "duration": 0.0, + "text": "zoom back out. Start with an evaluation which<00:54:58.160> again<00:54:58.480> that's<00:54:58.640> produced<00:54:58.960> by<00:54:59.119> the" + }, + { + "start": 3299.27, + "duration": 0.0, + "text": "which again that's produced by the" + }, + { + "start": 3299.28, + "duration": 0.0, + "text": "which again that's produced by the compiler<00:54:59.680> by<00:54:59.839> the<00:55:00.000> debuggers<00:55:00.480> compiler." + }, + { + "start": 3302.069, + "duration": 0.0, + "text": "compiler by the debuggers compiler." + }, + { + "start": 3302.079, + "duration": 0.0, + "text": "compiler by the debuggers compiler. Um<00:55:03.359> using<00:55:03.680> the<00:55:03.920> expansion<00:55:04.400> state<00:55:04.720> you<00:55:04.880> can" + }, + { + "start": 3304.95, + "duration": 0.0, + "text": "Um using the expansion state you can" + }, + { + "start": 3304.96, + "duration": 0.0, + "text": "Um using the expansion state you can produce<00:55:05.200> a<00:55:05.440> block<00:55:05.680> tree." + }, + { + "start": 3308.47, + "duration": 0.0, + "text": "produce a block tree." + }, + { + "start": 3308.48, + "duration": 0.0, + "text": "produce a block tree. Um<00:55:09.200> a<00:55:09.440> block<00:55:09.760> tree<00:55:10.079> can<00:55:10.400> be<00:55:10.559> used<00:55:10.800> to<00:55:11.040> produce<00:55:11.280> a" + }, + { + "start": 3311.51, + "duration": 0.0, + "text": "Um a block tree can be used to produce a" + }, + { + "start": 3311.52, + "duration": 0.0, + "text": "Um a block tree can be used to produce a list<00:55:11.680> of<00:55:12.000> pairs.<00:55:12.400> You<00:55:12.559> can<00:55:12.640> think<00:55:12.800> of<00:55:12.880> it<00:55:13.440> uh" + }, + { + "start": 3313.589, + "duration": 0.0, + "text": "list of pairs. You can think of it uh" + }, + { + "start": 3313.599, + "duration": 0.0, + "text": "list of pairs. You can think of it uh you<00:55:13.839> know<00:55:14.079> each<00:55:14.319> pair<00:55:14.559> containing<00:55:14.960> you've<00:55:15.119> got" + }, + { + "start": 3315.27, + "duration": 0.0, + "text": "you know each pair containing you've got" + }, + { + "start": 3315.28, + "duration": 0.0, + "text": "you know each pair containing you've got some<00:55:15.520> block<00:55:15.760> and<00:55:15.920> then<00:55:16.079> some<00:55:16.319> range<00:55:16.640> within" + }, + { + "start": 3316.95, + "duration": 0.0, + "text": "some block and then some range within" + }, + { + "start": 3316.96, + "duration": 0.0, + "text": "some block and then some range within that<00:55:17.200> block." + }, + { + "start": 3318.79, + "duration": 0.0, + "text": "that block." + }, + { + "start": 3318.8, + "duration": 0.0, + "text": "that block. Um<00:55:19.280> so<00:55:19.440> that<00:55:19.680> would<00:55:19.839> be<00:55:19.920> like<00:55:20.240> you<00:55:20.319> know<00:55:20.400> the<00:55:20.640> W" + }, + { + "start": 3320.87, + "duration": 0.0, + "text": "Um so that would be like you know the W" + }, + { + "start": 3320.88, + "duration": 0.0, + "text": "Um so that would be like you know the W pre<00:55:22.079> and<00:55:22.240> so<00:55:22.480> on.<00:55:23.040> That<00:55:23.280> would<00:55:23.359> be<00:55:23.520> like<00:55:23.920> that" + }, + { + "start": 3324.23, + "duration": 0.0, + "text": "pre and so on. That would be like that" + }, + { + "start": 3324.24, + "duration": 0.0, + "text": "pre and so on. That would be like that step.<00:55:25.440> And<00:55:25.599> so<00:55:25.839> that<00:55:26.079> forms<00:55:26.480> like<00:55:26.640> the<00:55:26.880> linear" + }, + { + "start": 3327.109, + "duration": 0.0, + "text": "step. And so that forms like the linear" + }, + { + "start": 3327.119, + "duration": 0.0, + "text": "step. And so that forms like the linear sequence<00:55:27.440> of<00:55:27.520> blocks<00:55:27.839> right?<00:55:28.079> got<00:55:28.240> like<00:55:28.559> these" + }, + { + "start": 3328.95, + "duration": 0.0, + "text": "sequence of blocks right? got like these" + }, + { + "start": 3328.96, + "duration": 0.0, + "text": "sequence of blocks right? got like these rows<00:55:29.119> and<00:55:29.200> these<00:55:29.520> rows<00:55:29.599> and<00:55:29.760> these<00:55:30.000> rows<00:55:30.160> and" + }, + { + "start": 3330.23, + "duration": 0.0, + "text": "rows and these rows and these rows and" + }, + { + "start": 3330.24, + "duration": 0.0, + "text": "rows and these rows and these rows and these<00:55:30.559> rows<00:55:31.040> and<00:55:31.359> you're<00:55:31.680> not<00:55:31.839> doing<00:55:32.400> per<00:55:32.800> row" + }, + { + "start": 3332.87, + "duration": 0.0, + "text": "these rows and you're not doing per row" + }, + { + "start": 3332.88, + "duration": 0.0, + "text": "these rows and you're not doing per row work<00:55:33.119> anymore.<00:55:34.000> And<00:55:34.240> finally,<00:55:35.680> remember<00:55:36.400> that" + }, + { + "start": 3336.63, + "duration": 0.0, + "text": "work anymore. And finally, remember that" + }, + { + "start": 3336.64, + "duration": 0.0, + "text": "work anymore. And finally, remember that we<00:55:36.800> have<00:55:36.960> a<00:55:37.119> way<00:55:37.280> to<00:55:37.359> take<00:55:37.520> an<00:55:37.680> evaluation<00:55:38.400> and" + }, + { + "start": 3338.549, + "duration": 0.0, + "text": "we have a way to take an evaluation and" + }, + { + "start": 3338.559, + "duration": 0.0, + "text": "we have a way to take an evaluation and given<00:55:38.960> some<00:55:39.119> range<00:55:39.359> under<00:55:39.599> that<00:55:39.760> evaluation," + }, + { + "start": 3340.309, + "duration": 0.0, + "text": "given some range under that evaluation," + }, + { + "start": 3340.319, + "duration": 0.0, + "text": "given some range under that evaluation, we<00:55:40.480> can<00:55:40.640> expand<00:55:40.960> it<00:55:41.200> to<00:55:41.440> all<00:55:41.520> the<00:55:41.680> children" + }, + { + "start": 3342.069, + "duration": 0.0, + "text": "we can expand it to all the children" + }, + { + "start": 3342.079, + "duration": 0.0, + "text": "we can expand it to all the children evaluations." + }, + { + "start": 3343.91, + "duration": 0.0, + "text": "evaluations." + }, + { + "start": 3343.92, + "duration": 0.0, + "text": "evaluations. So" + }, + { + "start": 3346.549, + "duration": 0.0, + "text": "So" + }, + { + "start": 3346.559, + "duration": 0.0, + "text": "So with<00:55:46.800> that<00:55:46.960> list,<00:55:47.200> you<00:55:47.359> can<00:55:47.520> produce<00:55:47.680> a<00:55:47.839> final" + }, + { + "start": 3348.15, + "duration": 0.0, + "text": "with that list, you can produce a final" + }, + { + "start": 3348.16, + "duration": 0.0, + "text": "with that list, you can produce a final list<00:55:48.319> of<00:55:48.880> row<00:55:49.040> evaluations.<00:55:49.599> Right?<00:55:49.839> That's" + }, + { + "start": 3349.99, + "duration": 0.0, + "text": "list of row evaluations. Right? That's" + }, + { + "start": 3350.0, + "duration": 0.0, + "text": "list of row evaluations. Right? That's how<00:55:50.160> you<00:55:50.640> with<00:55:50.880> the<00:55:51.119> global<00:55:51.440> viewing<00:55:51.839> range" + }, + { + "start": 3352.15, + "duration": 0.0, + "text": "how you with the global viewing range" + }, + { + "start": 3352.16, + "duration": 0.0, + "text": "how you with the global viewing range you<00:55:52.319> can<00:55:52.480> you<00:55:52.720> can<00:55:52.799> use<00:55:53.040> that<00:55:53.280> together<00:55:53.599> with" + }, + { + "start": 3353.67, + "duration": 0.0, + "text": "you can you can use that together with" + }, + { + "start": 3353.68, + "duration": 0.0, + "text": "you can you can use that together with the<00:55:53.839> list.<00:55:54.079> This<00:55:54.240> is<00:55:54.319> the<00:55:54.480> windowing<00:55:54.880> step." + }, + { + "start": 3355.27, + "duration": 0.0, + "text": "the list. This is the windowing step." + }, + { + "start": 3355.28, + "duration": 0.0, + "text": "the list. This is the windowing step. you<00:55:55.440> get<00:55:55.520> the<00:55:55.760> list<00:55:55.839> of<00:55:56.000> actual<00:55:56.400> evaluations" + }, + { + "start": 3356.87, + "duration": 0.0, + "text": "you get the list of actual evaluations" + }, + { + "start": 3356.88, + "duration": 0.0, + "text": "you get the list of actual evaluations that<00:55:57.119> you<00:55:57.280> can<00:55:57.359> use<00:55:57.520> for<00:55:57.680> all<00:55:57.839> the<00:55:58.079> rows<00:55:58.480> that" + }, + { + "start": 3358.71, + "duration": 0.0, + "text": "that you can use for all the rows that" + }, + { + "start": 3358.72, + "duration": 0.0, + "text": "that you can use for all the rows that are<00:55:58.880> visibly<00:55:59.359> available<00:56:00.160> in<00:56:00.400> the<00:56:00.559> watch<00:56:00.880> tree." + }, + { + "start": 3363.109, + "duration": 0.0, + "text": "are visibly available in the watch tree." + }, + { + "start": 3363.119, + "duration": 0.0, + "text": "are visibly available in the watch tree. So<00:56:03.280> let's<00:56:03.520> take<00:56:03.599> a<00:56:03.760> step<00:56:03.920> back,<00:56:04.319> think<00:56:04.480> about" + }, + { + "start": 3364.63, + "duration": 0.0, + "text": "So let's take a step back, think about" + }, + { + "start": 3364.64, + "duration": 0.0, + "text": "So let's take a step back, think about what<00:56:04.799> this<00:56:05.040> actually<00:56:05.200> gets<00:56:05.440> us<00:56:06.799> in<00:56:07.040> terms<00:56:07.200> of" + }, + { + "start": 3367.349, + "duration": 0.0, + "text": "what this actually gets us in terms of" + }, + { + "start": 3367.359, + "duration": 0.0, + "text": "what this actually gets us in terms of like<00:56:07.599> our<00:56:07.839> overall<00:56:08.160> goal,<00:56:08.480> right?<00:56:09.040> Our<00:56:09.359> idea," + }, + { + "start": 3369.75, + "duration": 0.0, + "text": "like our overall goal, right? Our idea," + }, + { + "start": 3369.76, + "duration": 0.0, + "text": "like our overall goal, right? Our idea, we<00:56:09.920> want<00:56:10.079> to<00:56:10.160> accelerate<00:56:10.559> visualization." + }, + { + "start": 3371.19, + "duration": 0.0, + "text": "we want to accelerate visualization." + }, + { + "start": 3371.2, + "duration": 0.0, + "text": "we want to accelerate visualization. What<00:56:11.359> is<00:56:11.440> this?<00:56:11.680> What<00:56:11.839> does<00:56:12.079> all<00:56:12.319> that<00:56:13.040> crap" + }, + { + "start": 3373.43, + "duration": 0.0, + "text": "What is this? What does all that crap" + }, + { + "start": 3373.44, + "duration": 0.0, + "text": "What is this? What does all that crap actually<00:56:13.680> get<00:56:13.920> us?" + }, + { + "start": 3376.87, + "duration": 0.0, + "text": "actually get us?" + }, + { + "start": 3376.88, + "duration": 0.0, + "text": "actually get us? So<00:56:17.359> I've<00:56:17.680> covered<00:56:18.160> almost<00:56:18.480> all<00:56:18.640> the<00:56:18.799> steps" + }, + { + "start": 3379.67, + "duration": 0.0, + "text": "So I've covered almost all the steps" + }, + { + "start": 3379.68, + "duration": 0.0, + "text": "So I've covered almost all the steps besides<00:56:20.079> the<00:56:20.240> UI<00:56:20.960> part" + }, + { + "start": 3382.63, + "duration": 0.0, + "text": "besides the UI part" + }, + { + "start": 3382.64, + "duration": 0.0, + "text": "besides the UI part um<00:56:22.880> that<00:56:23.200> you<00:56:23.359> would<00:56:23.520> need<00:56:23.760> in<00:56:24.000> order<00:56:24.079> to<00:56:24.319> build" + }, + { + "start": 3384.549, + "duration": 0.0, + "text": "um that you would need in order to build" + }, + { + "start": 3384.559, + "duration": 0.0, + "text": "um that you would need in order to build like<00:56:25.040> this<00:56:25.440> kind<00:56:25.599> of<00:56:25.760> watch<00:56:26.079> window" + }, + { + "start": 3386.39, + "duration": 0.0, + "text": "like this kind of watch window" + }, + { + "start": 3386.4, + "duration": 0.0, + "text": "like this kind of watch window structure." + }, + { + "start": 3388.549, + "duration": 0.0, + "text": "structure." + }, + { + "start": 3388.559, + "duration": 0.0, + "text": "structure. Uh<00:56:28.799> so<00:56:28.960> this<00:56:29.119> is<00:56:29.200> like<00:56:29.280> a<00:56:29.440> fully<00:56:29.760> windowed<00:56:30.160> one." + }, + { + "start": 3390.309, + "duration": 0.0, + "text": "Uh so this is like a fully windowed one." + }, + { + "start": 3390.319, + "duration": 0.0, + "text": "Uh so this is like a fully windowed one. We<00:56:30.480> only<00:56:30.640> evaluate<00:56:31.119> what<00:56:31.280> we<00:56:31.359> need.<00:56:31.599> We<00:56:31.760> don't" + }, + { + "start": 3391.829, + "duration": 0.0, + "text": "We only evaluate what we need. We don't" + }, + { + "start": 3391.839, + "duration": 0.0, + "text": "We only evaluate what we need. We don't pull<00:56:32.000> in<00:56:32.240> memory<00:56:32.480> that's<00:56:32.720> not<00:56:32.880> visible.<00:56:33.359> None" + }, + { + "start": 3393.51, + "duration": 0.0, + "text": "pull in memory that's not visible. None" + }, + { + "start": 3393.52, + "duration": 0.0, + "text": "pull in memory that's not visible. None of<00:56:33.680> that<00:56:33.839> happens." + }, + { + "start": 3396.15, + "duration": 0.0, + "text": "of that happens." + }, + { + "start": 3396.16, + "duration": 0.0, + "text": "of that happens. Um<00:56:36.640> and<00:56:36.880> then<00:56:37.040> obviously<00:56:37.359> we<00:56:37.599> visualize" + }, + { + "start": 3397.99, + "duration": 0.0, + "text": "Um and then obviously we visualize" + }, + { + "start": 3398.0, + "duration": 0.0, + "text": "Um and then obviously we visualize everything<00:56:38.319> textually.<00:56:39.119> We've<00:56:39.280> got<00:56:39.359> a<00:56:39.520> strct." + }, + { + "start": 3399.91, + "duration": 0.0, + "text": "everything textually. We've got a strct." + }, + { + "start": 3399.92, + "duration": 0.0, + "text": "everything textually. We've got a strct. You've<00:56:40.079> got<00:56:40.640> members<00:56:41.040> of<00:56:41.280> the<00:56:41.520> strct.<00:56:42.000> Some<00:56:42.160> of" + }, + { + "start": 3402.23, + "duration": 0.0, + "text": "You've got members of the strct. Some of" + }, + { + "start": 3402.24, + "duration": 0.0, + "text": "You've got members of the strct. Some of them<00:56:42.400> are<00:56:42.480> integers.<00:56:42.960> Some<00:56:43.040> of<00:56:43.119> them<00:56:43.200> are" + }, + { + "start": 3403.349, + "duration": 0.0, + "text": "them are integers. Some of them are" + }, + { + "start": 3403.359, + "duration": 0.0, + "text": "them are integers. Some of them are strrus.<00:56:44.079> whenever<00:56:44.400> we<00:56:44.480> we<00:56:44.799> show<00:56:44.960> the<00:56:45.119> textual" + }, + { + "start": 3405.51, + "duration": 0.0, + "text": "strrus. whenever we we show the textual" + }, + { + "start": 3405.52, + "duration": 0.0, + "text": "strrus. whenever we we show the textual representation<00:56:46.720> and<00:56:46.960> that's<00:56:47.119> great.<00:56:47.359> We<00:56:47.599> can" + }, + { + "start": 3407.67, + "duration": 0.0, + "text": "representation and that's great. We can" + }, + { + "start": 3407.68, + "duration": 0.0, + "text": "representation and that's great. We can dig<00:56:47.839> into<00:56:48.000> anything<00:56:48.240> the<00:56:48.480> debugger<00:56:48.880> can" + }, + { + "start": 3409.03, + "duration": 0.0, + "text": "dig into anything the debugger can" + }, + { + "start": 3409.04, + "duration": 0.0, + "text": "dig into anything the debugger can evaluate<00:56:49.520> using<00:56:49.760> its<00:56:50.079> compiler<00:56:50.799> this<00:56:51.040> way." + }, + { + "start": 3411.349, + "duration": 0.0, + "text": "evaluate using its compiler this way." + }, + { + "start": 3411.359, + "duration": 0.0, + "text": "evaluate using its compiler this way. We've<00:56:51.599> done<00:56:51.760> sort<00:56:51.920> of<00:56:52.000> a<00:56:52.480> general" + }, + { + "start": 3413.19, + "duration": 0.0, + "text": "We've done sort of a general" + }, + { + "start": 3413.2, + "duration": 0.0, + "text": "We've done sort of a general textualization<00:56:54.000> case,<00:56:55.200> but<00:56:56.400> in<00:56:56.559> a<00:56:56.720> sense<00:56:57.599> all" + }, + { + "start": 3417.829, + "duration": 0.0, + "text": "textualization case, but in a sense all" + }, + { + "start": 3417.839, + "duration": 0.0, + "text": "textualization case, but in a sense all that<00:56:58.000> is<00:56:58.880> we've<00:56:59.200> kind<00:56:59.280> of<00:56:59.359> just<00:56:59.520> accelerated" + }, + { + "start": 3420.069, + "duration": 0.0, + "text": "that is we've kind of just accelerated" + }, + { + "start": 3420.079, + "duration": 0.0, + "text": "that is we've kind of just accelerated print<00:57:00.319> f<00:57:00.960> print<00:57:01.200> f<00:57:01.359> debugging." + }, + { + "start": 3423.109, + "duration": 0.0, + "text": "print f print f debugging." + }, + { + "start": 3423.119, + "duration": 0.0, + "text": "print f print f debugging. We've<00:57:03.359> kind<00:57:03.520> of<00:57:03.599> just<00:57:03.760> produced<00:57:04.160> a<00:57:04.480> typeaware" + }, + { + "start": 3425.43, + "duration": 0.0, + "text": "We've kind of just produced a typeaware" + }, + { + "start": 3425.44, + "duration": 0.0, + "text": "We've kind of just produced a typeaware version,<00:57:06.240> right?<00:57:06.480> So<00:57:06.559> in<00:57:06.880> C<00:57:07.440> it's<00:57:07.760> really" + }, + { + "start": 3428.069, + "duration": 0.0, + "text": "version, right? So in C it's really" + }, + { + "start": 3428.079, + "duration": 0.0, + "text": "version, right? So in C it's really stupid.<00:57:08.559> You<00:57:08.880> have<00:57:09.040> to<00:57:09.200> sort<00:57:09.359> of<00:57:09.520> just<00:57:09.680> say" + }, + { + "start": 3429.829, + "duration": 0.0, + "text": "stupid. You have to sort of just say" + }, + { + "start": 3429.839, + "duration": 0.0, + "text": "stupid. You have to sort of just say like<00:57:10.559> have<00:57:10.720> to<00:57:10.880> remember<00:57:11.040> the<00:57:11.200> type<00:57:11.359> info<00:57:11.760> and" + }, + { + "start": 3431.91, + "duration": 0.0, + "text": "like have to remember the type info and" + }, + { + "start": 3431.92, + "duration": 0.0, + "text": "like have to remember the type info and say<00:57:12.160> well<00:57:12.400> I'm<00:57:12.559> going<00:57:12.640> to<00:57:12.720> log<00:57:12.960> the<00:57:13.119> strct." + }, + { + "start": 3433.43, + "duration": 0.0, + "text": "say well I'm going to log the strct." + }, + { + "start": 3433.44, + "duration": 0.0, + "text": "say well I'm going to log the strct. I've<00:57:13.599> got<00:57:13.680> a<00:57:13.760> print<00:57:14.079> defaf<00:57:14.559> hitter<00:57:15.200> like<00:57:15.440> in" + }, + { + "start": 3435.589, + "duration": 0.0, + "text": "I've got a print defaf hitter like in" + }, + { + "start": 3435.599, + "duration": 0.0, + "text": "I've got a print defaf hitter like in this<00:57:15.680> case<00:57:15.839> I'm<00:57:16.000> at<00:57:16.160> my<00:57:16.319> hit<00:57:16.559> entity<00:57:16.880> code" + }, + { + "start": 3437.109, + "duration": 0.0, + "text": "this case I'm at my hit entity code" + }, + { + "start": 3437.119, + "duration": 0.0, + "text": "this case I'm at my hit entity code path.<00:57:17.359> I've<00:57:17.520> got<00:57:17.920> hitter<00:57:18.720> id.<00:57:18.880> I've<00:57:19.040> got<00:57:19.119> to" + }, + { + "start": 3439.27, + "duration": 0.0, + "text": "path. I've got hitter id. I've got to" + }, + { + "start": 3439.28, + "duration": 0.0, + "text": "path. I've got hitter id. I've got to log<00:57:19.440> that<00:57:19.680> hitter.parent.<00:57:20.480> I'm<00:57:20.640> just<00:57:20.799> like" + }, + { + "start": 3441.03, + "duration": 0.0, + "text": "log that hitter.parent. I'm just like" + }, + { + "start": 3441.04, + "duration": 0.0, + "text": "log that hitter.parent. I'm just like duplicating<00:57:21.440> the<00:57:21.599> type<00:57:21.839> info<00:57:22.160> at<00:57:22.319> this<00:57:22.480> point" + }, + { + "start": 3443.109, + "duration": 0.0, + "text": "duplicating the type info at this point" + }, + { + "start": 3443.119, + "duration": 0.0, + "text": "duplicating the type info at this point and<00:57:23.280> I've<00:57:23.440> just<00:57:23.599> got<00:57:23.680> to<00:57:23.839> remember<00:57:24.079> how<00:57:24.240> to<00:57:24.319> do" + }, + { + "start": 3444.39, + "duration": 0.0, + "text": "and I've just got to remember how to do" + }, + { + "start": 3444.4, + "duration": 0.0, + "text": "and I've just got to remember how to do that.<00:57:24.559> Or<00:57:24.720> maybe<00:57:24.880> I<00:57:25.040> just<00:57:25.200> narrow<00:57:25.520> down<00:57:25.680> to<00:57:25.760> the" + }, + { + "start": 3445.91, + "duration": 0.0, + "text": "that. Or maybe I just narrow down to the" + }, + { + "start": 3445.92, + "duration": 0.0, + "text": "that. Or maybe I just narrow down to the subset<00:57:26.240> that<00:57:26.400> I<00:57:26.559> want.<00:57:26.799> Whatever.<00:57:28.160> Um,<00:57:28.880> you" + }, + { + "start": 3448.95, + "duration": 0.0, + "text": "subset that I want. Whatever. Um, you" + }, + { + "start": 3448.96, + "duration": 0.0, + "text": "subset that I want. Whatever. Um, you know,<00:57:29.119> in<00:57:29.280> a<00:57:29.440> better<00:57:29.599> language,<00:57:30.000> maybe<00:57:30.160> it'd" + }, + { + "start": 3450.39, + "duration": 0.0, + "text": "know, in a better language, maybe it'd" + }, + { + "start": 3450.4, + "duration": 0.0, + "text": "know, in a better language, maybe it'd look<00:57:30.559> more<00:57:30.720> like<00:57:30.880> that.<00:57:31.280> You<00:57:31.440> know,<00:57:31.520> you've" + }, + { + "start": 3451.67, + "duration": 0.0, + "text": "look more like that. You know, you've" + }, + { + "start": 3451.68, + "duration": 0.0, + "text": "look more like that. You know, you've got<00:57:31.839> print<00:57:32.160> f<00:57:32.400> and<00:57:32.640> then<00:57:33.280> uh<00:57:33.520> hitter.<00:57:34.000> Maybe" + }, + { + "start": 3454.15, + "duration": 0.0, + "text": "got print f and then uh hitter. Maybe" + }, + { + "start": 3454.16, + "duration": 0.0, + "text": "got print f and then uh hitter. Maybe it's<00:57:34.319> not<00:57:34.480> even<00:57:34.720> f.<00:57:35.040> I<00:57:35.119> don't<00:57:35.280> know.<00:57:35.680> You<00:57:35.839> know," + }, + { + "start": 3456.15, + "duration": 0.0, + "text": "it's not even f. I don't know. You know," + }, + { + "start": 3456.16, + "duration": 0.0, + "text": "it's not even f. I don't know. You know, hitter<00:57:36.559> and<00:57:36.799> then<00:57:37.200> percent<00:57:37.599> and<00:57:37.760> then<00:57:37.920> you<00:57:38.000> can" + }, + { + "start": 3458.15, + "duration": 0.0, + "text": "hitter and then percent and then you can" + }, + { + "start": 3458.16, + "duration": 0.0, + "text": "hitter and then percent and then you can just<00:57:38.240> pass<00:57:38.480> the<00:57:38.640> strruct.<00:57:39.040> Maybe<00:57:39.200> it<00:57:39.359> should" + }, + { + "start": 3459.51, + "duration": 0.0, + "text": "just pass the strruct. Maybe it should" + }, + { + "start": 3459.52, + "duration": 0.0, + "text": "just pass the strruct. Maybe it should just<00:57:39.680> be<00:57:39.760> aware<00:57:40.000> of<00:57:40.079> the<00:57:40.240> type<00:57:40.480> info<00:57:41.520> uh" + }, + { + "start": 3461.67, + "duration": 0.0, + "text": "just be aware of the type info uh" + }, + { + "start": 3461.68, + "duration": 0.0, + "text": "just be aware of the type info uh somehow.<00:57:42.079> Obviously<00:57:42.480> not<00:57:42.640> the<00:57:42.799> true<00:57:43.280> uh<00:57:43.359> not" + }, + { + "start": 3463.589, + "duration": 0.0, + "text": "somehow. Obviously not the true uh not" + }, + { + "start": 3463.599, + "duration": 0.0, + "text": "somehow. Obviously not the true uh not not<00:57:43.760> the<00:57:43.920> case<00:57:44.079> in<00:57:44.319> C<00:57:44.559> but<00:57:45.760> point<00:57:46.079> being<00:57:46.720> the" + }, + { + "start": 3466.87, + "duration": 0.0, + "text": "not the case in C but point being the" + }, + { + "start": 3466.88, + "duration": 0.0, + "text": "not the case in C but point being the watch<00:57:47.200> window<00:57:47.680> effectively<00:57:48.160> provides<00:57:48.480> an" + }, + { + "start": 3468.71, + "duration": 0.0, + "text": "watch window effectively provides an" + }, + { + "start": 3468.72, + "duration": 0.0, + "text": "watch window effectively provides an accelerated<00:57:49.280> version<00:57:49.440> of<00:57:49.599> that.<00:57:50.240> Um<00:57:50.720> now<00:57:50.880> the" + }, + { + "start": 3471.03, + "duration": 0.0, + "text": "accelerated version of that. Um now the" + }, + { + "start": 3471.04, + "duration": 0.0, + "text": "accelerated version of that. Um now the watch<00:57:51.200> window<00:57:51.520> offers<00:57:51.839> some<00:57:52.079> pretty<00:57:52.240> big" + }, + { + "start": 3472.47, + "duration": 0.0, + "text": "watch window offers some pretty big" + }, + { + "start": 3472.48, + "duration": 0.0, + "text": "watch window offers some pretty big improvements<00:57:53.359> right<00:57:53.680> the<00:57:54.000> ability<00:57:54.240> to" + }, + { + "start": 3474.39, + "duration": 0.0, + "text": "improvements right the ability to" + }, + { + "start": 3474.4, + "duration": 0.0, + "text": "improvements right the ability to interact<00:57:54.720> with<00:57:54.880> the<00:57:55.040> data.<00:57:55.280> You<00:57:55.440> can<00:57:55.520> write<00:57:55.760> to" + }, + { + "start": 3475.91, + "duration": 0.0, + "text": "interact with the data. You can write to" + }, + { + "start": 3475.92, + "duration": 0.0, + "text": "interact with the data. You can write to the<00:57:56.079> data.<00:57:56.720> Um<00:57:57.359> you<00:57:57.599> can<00:57:58.000> dynamically<00:57:58.640> expand" + }, + { + "start": 3478.95, + "duration": 0.0, + "text": "the data. Um you can dynamically expand" + }, + { + "start": 3478.96, + "duration": 0.0, + "text": "the data. Um you can dynamically expand or<00:57:59.119> collapse<00:57:59.520> parts<00:57:59.760> of<00:57:59.839> the<00:58:00.079> data.<00:58:00.960> Um<00:58:01.440> it" + }, + { + "start": 3481.67, + "duration": 0.0, + "text": "or collapse parts of the data. Um it" + }, + { + "start": 3481.68, + "duration": 0.0, + "text": "or collapse parts of the data. Um it only<00:58:01.839> pays<00:58:02.079> the<00:58:02.240> cost<00:58:02.400> for<00:58:02.559> what<00:58:02.720> is<00:58:02.880> visible." + }, + { + "start": 3483.27, + "duration": 0.0, + "text": "only pays the cost for what is visible." + }, + { + "start": 3483.28, + "duration": 0.0, + "text": "only pays the cost for what is visible. You<00:58:03.440> don't<00:58:03.599> have<00:58:03.680> to<00:58:03.839> literally<00:58:04.160> log" + }, + { + "start": 3484.47, + "duration": 0.0, + "text": "You don't have to literally log" + }, + { + "start": 3484.48, + "duration": 0.0, + "text": "You don't have to literally log everything<00:58:04.799> and<00:58:05.040> then<00:58:05.359> hunt<00:58:05.599> through<00:58:05.839> it.<00:58:06.559> Um" + }, + { + "start": 3487.829, + "duration": 0.0, + "text": "everything and then hunt through it. Um" + }, + { + "start": 3487.839, + "duration": 0.0, + "text": "everything and then hunt through it. Um and<00:58:08.079> you<00:58:08.240> can<00:58:08.319> also<00:58:08.559> like<00:58:08.720> interactively<00:58:10.000> go" + }, + { + "start": 3490.15, + "duration": 0.0, + "text": "and you can also like interactively go" + }, + { + "start": 3490.16, + "duration": 0.0, + "text": "and you can also like interactively go to<00:58:10.319> other<00:58:10.559> parts.<00:58:10.720> So<00:58:10.799> you<00:58:10.960> can<00:58:11.040> evaluate<00:58:11.520> as" + }, + { + "start": 3491.75, + "duration": 0.0, + "text": "to other parts. So you can evaluate as" + }, + { + "start": 3491.76, + "duration": 0.0, + "text": "to other parts. So you can evaluate as you<00:58:11.920> need<00:58:12.400> instead<00:58:12.720> of<00:58:12.799> having<00:58:13.040> to<00:58:13.200> evaluate" + }, + { + "start": 3494.309, + "duration": 0.0, + "text": "you need instead of having to evaluate" + }, + { + "start": 3494.319, + "duration": 0.0, + "text": "you need instead of having to evaluate everything<00:58:14.799> and<00:58:15.119> print<00:58:15.359> it<00:58:15.520> and<00:58:15.760> log<00:58:16.000> it.<00:58:16.880> Um" + }, + { + "start": 3497.589, + "duration": 0.0, + "text": "everything and print it and log it. Um" + }, + { + "start": 3497.599, + "duration": 0.0, + "text": "everything and print it and log it. Um and<00:58:17.839> then<00:58:18.000> and<00:58:18.240> then<00:58:18.480> you<00:58:18.640> know<00:58:18.799> search" + }, + { + "start": 3499.03, + "duration": 0.0, + "text": "and then and then you know search" + }, + { + "start": 3499.04, + "duration": 0.0, + "text": "and then and then you know search through<00:58:19.200> the<00:58:19.359> sea<00:58:19.520> of<00:58:19.680> log<00:58:20.240> that<00:58:20.480> you<00:58:20.640> get.<00:58:21.680> Um" + }, + { + "start": 3502.95, + "duration": 0.0, + "text": "through the sea of log that you get. Um" + }, + { + "start": 3502.96, + "duration": 0.0, + "text": "through the sea of log that you get. Um so<00:58:24.079> eliminates<00:58:24.559> the<00:58:24.720> code<00:58:24.880> modification" + }, + { + "start": 3505.43, + "duration": 0.0, + "text": "so eliminates the code modification" + }, + { + "start": 3505.44, + "duration": 0.0, + "text": "so eliminates the code modification step,<00:58:25.839> eliminates<00:58:26.240> the<00:58:26.319> build,<00:58:26.640> eliminates" + }, + { + "start": 3507.03, + "duration": 0.0, + "text": "step, eliminates the build, eliminates" + }, + { + "start": 3507.04, + "duration": 0.0, + "text": "step, eliminates the build, eliminates the<00:58:27.200> run,<00:58:27.599> eliminates<00:58:28.000> the<00:58:28.160> recreate<00:58:28.559> state." + }, + { + "start": 3509.75, + "duration": 0.0, + "text": "the run, eliminates the recreate state." + }, + { + "start": 3509.76, + "duration": 0.0, + "text": "the run, eliminates the recreate state. So<00:58:30.960> but<00:58:32.400> we<00:58:32.720> already<00:58:33.040> know" + }, + { + "start": 3514.71, + "duration": 0.0, + "text": "So but we already know" + }, + { + "start": 3514.72, + "duration": 0.0, + "text": "So but we already know that<00:58:35.040> text<00:58:35.280> is<00:58:35.440> insufficient.<00:58:36.799> So," + }, + { + "start": 3518.549, + "duration": 0.0, + "text": "that text is insufficient. So," + }, + { + "start": 3518.559, + "duration": 0.0, + "text": "that text is insufficient. So, um,<00:58:39.520> how<00:58:39.680> can<00:58:39.839> we<00:58:39.920> push<00:58:40.160> it<00:58:40.240> further<00:58:41.200> to" + }, + { + "start": 3521.43, + "duration": 0.0, + "text": "um, how can we push it further to" + }, + { + "start": 3521.44, + "duration": 0.0, + "text": "um, how can we push it further to support,<00:58:42.079> uh,<00:58:42.240> non-extual<00:58:43.119> visualizers<00:58:43.680> as" + }, + { + "start": 3523.91, + "duration": 0.0, + "text": "support, uh, non-extual visualizers as" + }, + { + "start": 3523.92, + "duration": 0.0, + "text": "support, uh, non-extual visualizers as well?<00:58:45.280> No,<00:58:45.599> no,<00:58:45.839> no,<00:58:46.079> no,<00:58:46.480> no." + }, + { + "start": 3527.99, + "duration": 0.0, + "text": "well? No, no, no, no, no." + }, + { + "start": 3528.0, + "duration": 0.0, + "text": "well? No, no, no, no, no. I'm<00:58:48.240> really<00:58:48.480> bad<00:58:48.640> with<00:58:48.799> this<00:58:49.040> thing.<00:58:50.079> Um," + }, + { + "start": 3533.68, + "duration": 0.0, + "text": "okay.<00:58:54.720> So,<00:58:55.280> let's<00:58:55.599> consider<00:58:55.839> a<00:58:56.079> basic<00:58:56.319> case<00:58:56.720> of" + }, + { + "start": 3536.95, + "duration": 0.0, + "text": "okay. So, let's consider a basic case of" + }, + { + "start": 3536.96, + "duration": 0.0, + "text": "okay. So, let's consider a basic case of visualization,<00:58:57.920> right?<00:58:58.160> Instead<00:58:58.400> of<00:58:58.559> single" + }, + { + "start": 3538.789, + "duration": 0.0, + "text": "visualization, right? Instead of single" + }, + { + "start": 3538.799, + "duration": 0.0, + "text": "visualization, right? Instead of single line<00:58:59.040> text,<00:58:59.359> we've<00:58:59.520> got<00:58:59.680> multi-line<00:59:00.319> text." + }, + { + "start": 3541.51, + "duration": 0.0, + "text": "line text, we've got multi-line text." + }, + { + "start": 3541.52, + "duration": 0.0, + "text": "line text, we've got multi-line text. So,<00:59:01.680> in<00:59:01.839> this<00:59:02.079> in<00:59:02.319> this<00:59:02.559> case,<00:59:03.200> I've<00:59:03.440> got<00:59:03.599> some" + }, + { + "start": 3543.75, + "duration": 0.0, + "text": "So, in this in this case, I've got some" + }, + { + "start": 3543.76, + "duration": 0.0, + "text": "So, in this in this case, I've got some like<00:59:04.000> shader<00:59:04.319> blob.<00:59:04.559> I've<00:59:04.880> got<00:59:05.040> some<00:59:05.440> some" + }, + { + "start": 3545.91, + "duration": 0.0, + "text": "like shader blob. I've got some some" + }, + { + "start": 3545.92, + "duration": 0.0, + "text": "like shader blob. I've got some some shader<00:59:06.319> program<00:59:06.640> text<00:59:06.880> that<00:59:07.119> I'm<00:59:07.280> evaluating." + }, + { + "start": 3548.309, + "duration": 0.0, + "text": "shader program text that I'm evaluating." + }, + { + "start": 3548.319, + "duration": 0.0, + "text": "shader program text that I'm evaluating. Um,<00:59:09.200> and<00:59:09.440> our<00:59:09.680> watch<00:59:10.000> our<00:59:10.160> watch<00:59:10.400> window<00:59:10.720> kind" + }, + { + "start": 3550.789, + "duration": 0.0, + "text": "Um, and our watch our watch window kind" + }, + { + "start": 3550.799, + "duration": 0.0, + "text": "Um, and our watch our watch window kind of<00:59:10.880> just<00:59:11.040> like<00:59:11.280> shows<00:59:11.440> this.<00:59:11.680> You<00:59:11.839> like<00:59:12.000> get" + }, + { + "start": 3552.15, + "duration": 0.0, + "text": "of just like shows this. You like get" + }, + { + "start": 3552.16, + "duration": 0.0, + "text": "of just like shows this. You like get the<00:59:12.319> string.<00:59:12.559> You're<00:59:12.720> like,<00:59:12.880> here's<00:59:13.119> my" + }, + { + "start": 3553.27, + "duration": 0.0, + "text": "the string. You're like, here's my" + }, + { + "start": 3553.28, + "duration": 0.0, + "text": "the string. You're like, here's my pointer<00:59:13.520> to<00:59:13.680> the<00:59:13.760> string<00:59:14.000> data.<00:59:14.400> You<00:59:14.559> expand" + }, + { + "start": 3554.87, + "duration": 0.0, + "text": "pointer to the string data. You expand" + }, + { + "start": 3554.88, + "duration": 0.0, + "text": "pointer to the string data. You expand it<00:59:15.040> and<00:59:15.200> it's<00:59:15.359> like,<00:59:15.599> oh,<00:59:16.079> like<00:59:16.319> that's<00:59:17.520> like" + }, + { + "start": 3557.75, + "duration": 0.0, + "text": "it and it's like, oh, like that's like" + }, + { + "start": 3557.76, + "duration": 0.0, + "text": "it and it's like, oh, like that's like pretty<00:59:18.000> good.<00:59:18.400> Like<00:59:18.559> I<00:59:18.799> can<00:59:18.880> see<00:59:19.040> the" + }, + { + "start": 3559.27, + "duration": 0.0, + "text": "pretty good. Like I can see the" + }, + { + "start": 3559.28, + "duration": 0.0, + "text": "pretty good. Like I can see the characters<00:59:19.680> or<00:59:19.839> whatever<00:59:20.160> if<00:59:20.319> they're<00:59:20.480> asky." + }, + { + "start": 3560.95, + "duration": 0.0, + "text": "characters or whatever if they're asky." + }, + { + "start": 3560.96, + "duration": 0.0, + "text": "characters or whatever if they're asky. You<00:59:21.040> know,<00:59:21.119> it<00:59:21.280> doesn't<00:59:21.359> even<00:59:21.520> support<00:59:21.760> UTF8." + }, + { + "start": 3562.789, + "duration": 0.0, + "text": "You know, it doesn't even support UTF8." + }, + { + "start": 3562.799, + "duration": 0.0, + "text": "You know, it doesn't even support UTF8. I<00:59:23.040> don't<00:59:23.200> really<00:59:23.520> want<00:59:23.680> to<00:59:23.839> look<00:59:23.920> at<00:59:24.079> this<00:59:24.240> if" + }, + { + "start": 3564.39, + "duration": 0.0, + "text": "I don't really want to look at this if" + }, + { + "start": 3564.4, + "duration": 0.0, + "text": "I don't really want to look at this if I'm<00:59:24.559> like,<00:59:24.799> what's<00:59:25.119> this<00:59:25.280> string?<00:59:25.839> You<00:59:26.000> know," + }, + { + "start": 3566.15, + "duration": 0.0, + "text": "I'm like, what's this string? You know," + }, + { + "start": 3566.16, + "duration": 0.0, + "text": "I'm like, what's this string? You know, that's<00:59:26.400> bad." + }, + { + "start": 3568.069, + "duration": 0.0, + "text": "that's bad." + }, + { + "start": 3568.079, + "duration": 0.0, + "text": "that's bad. Now,<00:59:28.400> one<00:59:28.559> potential<00:59:29.200> al<00:59:29.200> alternative<00:59:29.760> is" + }, + { + "start": 3570.069, + "duration": 0.0, + "text": "Now, one potential al alternative is" + }, + { + "start": 3570.079, + "duration": 0.0, + "text": "Now, one potential al alternative is like<00:59:30.559> hex<00:59:30.799> editor,<00:59:31.200> right?<00:59:31.440> Memory<00:59:31.839> view<00:59:32.240> kind" + }, + { + "start": 3572.39, + "duration": 0.0, + "text": "like hex editor, right? Memory view kind" + }, + { + "start": 3572.4, + "duration": 0.0, + "text": "like hex editor, right? Memory view kind of<00:59:32.559> thing.<00:59:33.200> Um,<00:59:33.599> and<00:59:33.760> this<00:59:33.920> is<00:59:34.079> often<00:59:34.319> actually" + }, + { + "start": 3574.63, + "duration": 0.0, + "text": "of thing. Um, and this is often actually" + }, + { + "start": 3574.64, + "duration": 0.0, + "text": "of thing. Um, and this is often actually good<00:59:34.880> for<00:59:34.960> this.<00:59:35.200> Like<00:59:35.280> if<00:59:35.440> you're<00:59:35.520> writing<00:59:35.680> a" + }, + { + "start": 3575.829, + "duration": 0.0, + "text": "good for this. Like if you're writing a" + }, + { + "start": 3575.839, + "duration": 0.0, + "text": "good for this. Like if you're writing a parser<00:59:36.240> or<00:59:36.480> something,<00:59:36.720> you<00:59:36.880> can<00:59:37.040> like<00:59:37.839> look" + }, + { + "start": 3578.069, + "duration": 0.0, + "text": "parser or something, you can like look" + }, + { + "start": 3578.079, + "duration": 0.0, + "text": "parser or something, you can like look at<00:59:38.160> the<00:59:38.319> data<00:59:38.559> this<00:59:38.720> way.<00:59:38.960> You<00:59:39.040> can<00:59:39.200> you<00:59:39.440> can," + }, + { + "start": 3579.67, + "duration": 0.0, + "text": "at the data this way. You can you can," + }, + { + "start": 3579.68, + "duration": 0.0, + "text": "at the data this way. You can you can, you<00:59:39.839> know,<00:59:40.079> position<00:59:40.400> your<00:59:40.640> cursor<00:59:41.040> maybe<00:59:41.280> at" + }, + { + "start": 3581.589, + "duration": 0.0, + "text": "you know, position your cursor maybe at" + }, + { + "start": 3581.599, + "duration": 0.0, + "text": "you know, position your cursor maybe at where<00:59:42.000> the<00:59:42.160> the<00:59:42.480> parsing<00:59:42.880> iterator<00:59:43.280> is<00:59:43.520> or" + }, + { + "start": 3583.67, + "duration": 0.0, + "text": "where the the parsing iterator is or" + }, + { + "start": 3583.68, + "duration": 0.0, + "text": "where the the parsing iterator is or something.<00:59:43.920> So<00:59:44.079> you<00:59:44.240> can<00:59:44.400> see<00:59:44.559> like<00:59:44.799> how<00:59:45.040> it's" + }, + { + "start": 3585.27, + "duration": 0.0, + "text": "something. So you can see like how it's" + }, + { + "start": 3585.28, + "duration": 0.0, + "text": "something. So you can see like how it's treating<00:59:45.599> maybe<00:59:45.920> usually<00:59:46.319> invisible" + }, + { + "start": 3586.87, + "duration": 0.0, + "text": "treating maybe usually invisible" + }, + { + "start": 3586.88, + "duration": 0.0, + "text": "treating maybe usually invisible characters<00:59:47.280> like<00:59:47.440> new<00:59:47.680> lines<00:59:47.920> or<00:59:48.160> whatever." + }, + { + "start": 3588.95, + "duration": 0.0, + "text": "characters like new lines or whatever." + }, + { + "start": 3588.96, + "duration": 0.0, + "text": "characters like new lines or whatever. Um,<00:59:49.440> so<00:59:49.839> this<00:59:50.000> isn't<00:59:50.319> like" + }, + { + "start": 3592.95, + "duration": 0.0, + "text": "Um, so this isn't like" + }, + { + "start": 3592.96, + "duration": 0.0, + "text": "Um, so this isn't like uh<00:59:53.520> it's<00:59:53.839> not<00:59:54.079> useless<00:59:54.559> to<00:59:54.720> to<00:59:55.040> look<00:59:55.200> at<00:59:55.280> it" + }, + { + "start": 3595.43, + "duration": 0.0, + "text": "uh it's not useless to to look at it" + }, + { + "start": 3595.44, + "duration": 0.0, + "text": "uh it's not useless to to look at it this<00:59:55.680> way.<00:59:56.559> Um,<00:59:57.119> but<00:59:57.280> more<00:59:57.520> often<00:59:57.760> than<00:59:57.920> not," + }, + { + "start": 3598.15, + "duration": 0.0, + "text": "this way. Um, but more often than not," + }, + { + "start": 3598.16, + "duration": 0.0, + "text": "this way. Um, but more often than not, if<00:59:58.319> you're<00:59:58.559> working<00:59:58.799> with<00:59:59.119> textual<00:59:59.599> data," + }, + { + "start": 3600.23, + "duration": 0.0, + "text": "if you're working with textual data," + }, + { + "start": 3600.24, + "duration": 0.0, + "text": "if you're working with textual data, what<01:00:00.480> you'd<01:00:00.799> really<01:00:01.040> actually<01:00:01.359> prefer<01:00:02.400> is" + }, + { + "start": 3602.71, + "duration": 0.0, + "text": "what you'd really actually prefer is" + }, + { + "start": 3602.72, + "duration": 0.0, + "text": "what you'd really actually prefer is like<01:00:02.880> an<01:00:03.119> actual<01:00:03.520> visual,<01:00:03.920> like<01:00:04.160> just<01:00:04.400> show<01:00:04.559> me" + }, + { + "start": 3604.71, + "duration": 0.0, + "text": "like an actual visual, like just show me" + }, + { + "start": 3604.72, + "duration": 0.0, + "text": "like an actual visual, like just show me the<01:00:04.960> text.<01:00:05.440> You<01:00:05.520> know<01:00:05.599> what<01:00:05.680> I<01:00:05.839> mean?<01:00:06.640> Um,<01:00:07.359> you" + }, + { + "start": 3607.589, + "duration": 0.0, + "text": "the text. You know what I mean? Um, you" + }, + { + "start": 3607.599, + "duration": 0.0, + "text": "the text. You know what I mean? Um, you kind<01:00:07.680> of<01:00:07.760> want<01:00:07.920> to<01:00:08.000> just<01:00:08.160> treat<01:00:08.240> it<01:00:08.400> like<01:00:08.480> a" + }, + { + "start": 3608.63, + "duration": 0.0, + "text": "kind of want to just treat it like a" + }, + { + "start": 3608.64, + "duration": 0.0, + "text": "kind of want to just treat it like a text<01:00:08.880> file<01:00:09.280> like<01:00:09.440> that." + }, + { + "start": 3611.99, + "duration": 0.0, + "text": "text file like that." + }, + { + "start": 3612.0, + "duration": 0.0, + "text": "text file like that. So,<01:00:12.799> I<01:00:13.040> mean,<01:00:13.200> all<01:00:13.359> three<01:00:13.520> of<01:00:13.599> these" + }, + { + "start": 3613.829, + "duration": 0.0, + "text": "So, I mean, all three of these" + }, + { + "start": 3613.839, + "duration": 0.0, + "text": "So, I mean, all three of these visualizers<01:00:14.799> might<01:00:14.960> be<01:00:15.119> useful<01:00:15.359> at<01:00:15.520> different" + }, + { + "start": 3615.67, + "duration": 0.0, + "text": "visualizers might be useful at different" + }, + { + "start": 3615.68, + "duration": 0.0, + "text": "visualizers might be useful at different times.<01:00:16.160> One<01:00:16.319> on<01:00:16.480> the<01:00:16.640> left<01:00:16.960> kind<01:00:17.119> of<01:00:17.200> the<01:00:17.359> odd" + }, + { + "start": 3617.51, + "duration": 0.0, + "text": "times. One on the left kind of the odd" + }, + { + "start": 3617.52, + "duration": 0.0, + "text": "times. One on the left kind of the odd one<01:00:17.680> out<01:00:18.000> kind<01:00:18.160> of<01:00:18.240> sucks<01:00:19.040> usually.<01:00:19.839> Um,<01:00:20.240> not" + }, + { + "start": 3620.39, + "duration": 0.0, + "text": "one out kind of sucks usually. Um, not" + }, + { + "start": 3620.4, + "duration": 0.0, + "text": "one out kind of sucks usually. Um, not not<01:00:20.720> universally.<01:00:21.280> You<01:00:21.440> know,<01:00:21.599> maybe<01:00:21.839> you<01:00:21.920> can" + }, + { + "start": 3622.069, + "duration": 0.0, + "text": "not universally. You know, maybe you can" + }, + { + "start": 3622.079, + "duration": 0.0, + "text": "not universally. You know, maybe you can imagine<01:00:22.319> the<01:00:22.480> case,<01:00:22.640> but<01:00:22.880> point<01:00:23.119> is<01:00:23.839> all<01:00:24.079> three" + }, + { + "start": 3624.23, + "duration": 0.0, + "text": "imagine the case, but point is all three" + }, + { + "start": 3624.24, + "duration": 0.0, + "text": "imagine the case, but point is all three of<01:00:24.400> these<01:00:24.880> different<01:00:25.200> ways<01:00:25.440> of<01:00:25.680> looking<01:00:25.839> at" + }, + { + "start": 3626.069, + "duration": 0.0, + "text": "of these different ways of looking at" + }, + { + "start": 3626.079, + "duration": 0.0, + "text": "of these different ways of looking at the<01:00:26.240> same<01:00:26.480> data.<01:00:27.760> Um,<01:00:28.240> same<01:00:28.480> data,<01:00:29.040> same<01:00:29.280> type," + }, + { + "start": 3629.829, + "duration": 0.0, + "text": "the same data. Um, same data, same type," + }, + { + "start": 3629.839, + "duration": 0.0, + "text": "the same data. Um, same data, same type, same<01:00:30.160> format,<01:00:30.880> different<01:00:31.200> visualizations." + }, + { + "start": 3631.99, + "duration": 0.0, + "text": "same format, different visualizations." + }, + { + "start": 3632.0, + "duration": 0.0, + "text": "same format, different visualizations. And<01:00:32.240> importantly,<01:00:33.280> the<01:00:33.520> user's<01:00:33.920> got<01:00:34.000> to<01:00:34.160> be" + }, + { + "start": 3634.23, + "duration": 0.0, + "text": "And importantly, the user's got to be" + }, + { + "start": 3634.24, + "duration": 0.0, + "text": "And importantly, the user's got to be able<01:00:34.400> to<01:00:34.480> choose<01:00:35.119> like<01:00:35.440> as<01:00:35.599> the<01:00:35.760> debugger," + }, + { + "start": 3636.23, + "duration": 0.0, + "text": "able to choose like as the debugger," + }, + { + "start": 3636.24, + "duration": 0.0, + "text": "able to choose like as the debugger, we've<01:00:36.400> got<01:00:36.480> to<01:00:36.559> provide<01:00:36.720> the<01:00:36.960> the<01:00:37.280> ability<01:00:37.920> for" + }, + { + "start": 3638.15, + "duration": 0.0, + "text": "we've got to provide the the ability for" + }, + { + "start": 3638.16, + "duration": 0.0, + "text": "we've got to provide the the ability for the<01:00:38.319> user<01:00:38.640> to<01:00:38.880> pick<01:00:39.280> between<01:00:39.520> these<01:00:39.839> three" + }, + { + "start": 3640.069, + "duration": 0.0, + "text": "the user to pick between these three" + }, + { + "start": 3640.079, + "duration": 0.0, + "text": "the user to pick between these three things.<01:00:40.400> We<01:00:40.640> can't<01:00:40.960> enforce<01:00:41.359> it<01:00:41.520> on<01:00:41.760> them,<01:00:42.799> you" + }, + { + "start": 3642.95, + "duration": 0.0, + "text": "things. We can't enforce it on them, you" + }, + { + "start": 3642.96, + "duration": 0.0, + "text": "things. We can't enforce it on them, you know,<01:00:43.359> given<01:00:43.599> the<01:00:43.760> type<01:00:43.920> info<01:00:44.240> or<01:00:44.480> something." + }, + { + "start": 3646.47, + "duration": 0.0, + "text": "know, given the type info or something." + }, + { + "start": 3646.48, + "duration": 0.0, + "text": "know, given the type info or something. Um,<01:00:47.920> okay.<01:00:48.720> So,<01:00:50.000> so<01:00:50.160> far<01:00:50.319> I've<01:00:50.559> covered<01:00:50.720> these" + }, + { + "start": 3650.95, + "duration": 0.0, + "text": "Um, okay. So, so far I've covered these" + }, + { + "start": 3650.96, + "duration": 0.0, + "text": "Um, okay. So, so far I've covered these three<01:00:51.200> steps.<01:00:52.000> We've<01:00:52.240> got<01:00:52.319> the<01:00:52.480> compiler,<01:00:53.440> got" + }, + { + "start": 3653.589, + "duration": 0.0, + "text": "three steps. We've got the compiler, got" + }, + { + "start": 3653.599, + "duration": 0.0, + "text": "three steps. We've got the compiler, got the<01:00:53.839> interpreter,<01:00:54.640> uh,<01:00:54.720> and<01:00:54.960> then<01:00:55.040> we've<01:00:55.280> got" + }, + { + "start": 3655.43, + "duration": 0.0, + "text": "the interpreter, uh, and then we've got" + }, + { + "start": 3655.44, + "duration": 0.0, + "text": "the interpreter, uh, and then we've got the<01:00:55.760> or,<01:00:56.160> you<01:00:56.319> know,<01:00:56.400> or<01:00:56.640> a<01:00:56.799> virtual<01:00:57.119> machine" + }, + { + "start": 3657.349, + "duration": 0.0, + "text": "the or, you know, or a virtual machine" + }, + { + "start": 3657.359, + "duration": 0.0, + "text": "the or, you know, or a virtual machine or<01:00:57.680> CPU<01:00:58.079> or<01:00:58.319> whatever.<01:00:59.119> And<01:00:59.200> then<01:00:59.359> we've<01:00:59.520> got" + }, + { + "start": 3659.589, + "duration": 0.0, + "text": "or CPU or whatever. And then we've got" + }, + { + "start": 3659.599, + "duration": 0.0, + "text": "or CPU or whatever. And then we've got the<01:00:59.760> windowed<01:01:00.079> watch<01:01:00.400> tree<01:01:00.640> build<01:01:01.119> down<01:01:01.359> here." + }, + { + "start": 3663.589, + "duration": 0.0, + "text": "the windowed watch tree build down here." + }, + { + "start": 3663.599, + "duration": 0.0, + "text": "the windowed watch tree build down here. The<01:01:03.839> final<01:01:04.079> missing<01:01:04.480> piece<01:01:04.640> of<01:01:04.799> this<01:01:06.079> is" + }, + { + "start": 3666.71, + "duration": 0.0, + "text": "The final missing piece of this is" + }, + { + "start": 3666.72, + "duration": 0.0, + "text": "The final missing piece of this is you've<01:01:07.040> got<01:01:07.520> uh" + }, + { + "start": 3669.589, + "duration": 0.0, + "text": "you've got uh" + }, + { + "start": 3669.599, + "duration": 0.0, + "text": "you've got uh the<01:01:09.839> watch<01:01:10.079> tree<01:01:10.319> build<01:01:10.559> and<01:01:10.720> you've<01:01:10.880> got<01:01:10.960> to" + }, + { + "start": 3671.109, + "duration": 0.0, + "text": "the watch tree build and you've got to" + }, + { + "start": 3671.119, + "duration": 0.0, + "text": "the watch tree build and you've got to produce<01:01:11.359> some<01:01:11.599> UI<01:01:11.920> for<01:01:12.000> it,<01:01:12.160> right?<01:01:12.319> You've" + }, + { + "start": 3672.47, + "duration": 0.0, + "text": "produce some UI for it, right? You've" + }, + { + "start": 3672.48, + "duration": 0.0, + "text": "produce some UI for it, right? You've got<01:01:12.559> a<01:01:12.640> list<01:01:12.799> of<01:01:12.880> final<01:01:13.119> evaluations<01:01:13.680> you<01:01:13.839> get" + }, + { + "start": 3673.91, + "duration": 0.0, + "text": "got a list of final evaluations you get" + }, + { + "start": 3673.92, + "duration": 0.0, + "text": "got a list of final evaluations you get out<01:01:14.079> of<01:01:14.160> this,<01:01:14.480> got<01:01:14.640> to<01:01:14.799> produce<01:01:14.960> a<01:01:15.119> UI<01:01:15.359> for<01:01:15.520> it." + }, + { + "start": 3676.549, + "duration": 0.0, + "text": "out of this, got to produce a UI for it." + }, + { + "start": 3676.559, + "duration": 0.0, + "text": "out of this, got to produce a UI for it. Um," + }, + { + "start": 3679.27, + "duration": 0.0, + "text": "Um," + }, + { + "start": 3679.28, + "duration": 0.0, + "text": "Um, now<01:01:19.599> started<01:01:20.000> by<01:01:20.160> introducing<01:01:20.480> the<01:01:20.720> most" + }, + { + "start": 3680.87, + "duration": 0.0, + "text": "now started by introducing the most" + }, + { + "start": 3680.88, + "duration": 0.0, + "text": "now started by introducing the most basic<01:01:21.119> one.<01:01:21.680> You<01:01:21.920> produce<01:01:22.160> a<01:01:22.240> textual" + }, + { + "start": 3682.71, + "duration": 0.0, + "text": "basic one. You produce a textual" + }, + { + "start": 3682.72, + "duration": 0.0, + "text": "basic one. You produce a textual representation<01:01:23.359> for<01:01:23.599> each<01:01:23.760> valuation.<01:01:24.319> Put" + }, + { + "start": 3684.39, + "duration": 0.0, + "text": "representation for each valuation. Put" + }, + { + "start": 3684.4, + "duration": 0.0, + "text": "representation for each valuation. Put them<01:01:24.480> in<01:01:24.640> a<01:01:24.799> put<01:01:25.040> them<01:01:25.119> in<01:01:25.200> a<01:01:25.359> little<01:01:25.520> watch" + }, + { + "start": 3685.75, + "duration": 0.0, + "text": "them in a put them in a little watch" + }, + { + "start": 3685.76, + "duration": 0.0, + "text": "them in a put them in a little watch window<01:01:26.079> UI.<01:01:26.799> That's<01:01:27.040> fine.<01:01:27.599> Um,<01:01:28.000> the<01:01:28.160> UI<01:01:28.480> build" + }, + { + "start": 3688.71, + "duration": 0.0, + "text": "window UI. That's fine. Um, the UI build" + }, + { + "start": 3688.72, + "duration": 0.0, + "text": "window UI. That's fine. Um, the UI build for<01:01:28.880> that<01:01:29.040> is<01:01:29.200> not<01:01:29.440> like<01:01:30.079> conceptually" + }, + { + "start": 3690.71, + "duration": 0.0, + "text": "for that is not like conceptually" + }, + { + "start": 3690.72, + "duration": 0.0, + "text": "for that is not like conceptually difficult.<01:01:31.119> It's<01:01:31.440> like<01:01:32.000> an<01:01:32.240> Excel<01:01:33.119> cell<01:01:33.520> like" + }, + { + "start": 3693.75, + "duration": 0.0, + "text": "difficult. It's like an Excel cell like" + }, + { + "start": 3693.76, + "duration": 0.0, + "text": "difficult. It's like an Excel cell like it's<01:01:34.079> just<01:01:34.240> like<01:01:34.400> Excel<01:01:34.720> for<01:01:34.880> your<01:01:35.040> program" + }, + { + "start": 3695.349, + "duration": 0.0, + "text": "it's just like Excel for your program" + }, + { + "start": 3695.359, + "duration": 0.0, + "text": "it's just like Excel for your program data.<01:01:36.240> Um,<01:01:36.720> the<01:01:36.960> full<01:01:37.119> watchman<01:01:37.520> is<01:01:37.680> just<01:01:37.839> like" + }, + { + "start": 3697.91, + "duration": 0.0, + "text": "data. Um, the full watchman is just like" + }, + { + "start": 3697.92, + "duration": 0.0, + "text": "data. Um, the full watchman is just like a<01:01:38.160> table<01:01:38.480> of<01:01:38.720> those<01:01:38.880> cells.<01:01:39.520> Um," + }, + { + "start": 3701.19, + "duration": 0.0, + "text": "a table of those cells. Um," + }, + { + "start": 3701.2, + "duration": 0.0, + "text": "a table of those cells. Um, you<01:01:41.359> know,<01:01:41.839> first<01:01:42.319> first<01:01:42.640> cell<01:01:42.880> would<01:01:43.119> be<01:01:43.200> the" + }, + { + "start": 3703.51, + "duration": 0.0, + "text": "you know, first first cell would be the" + }, + { + "start": 3703.52, + "duration": 0.0, + "text": "you know, first first cell would be the string<01:01:43.839> representing<01:01:44.319> the<01:01:44.559> expression." + }, + { + "start": 3705.349, + "duration": 0.0, + "text": "string representing the expression." + }, + { + "start": 3705.359, + "duration": 0.0, + "text": "string representing the expression. Second<01:01:45.599> cell<01:01:45.839> would<01:01:46.000> be<01:01:46.079> the<01:01:46.160> string" + }, + { + "start": 3706.47, + "duration": 0.0, + "text": "Second cell would be the string" + }, + { + "start": 3706.48, + "duration": 0.0, + "text": "Second cell would be the string representing<01:01:47.119> the<01:01:47.280> the<01:01:47.760> value.<01:01:48.480> Third<01:01:48.720> would" + }, + { + "start": 3708.87, + "duration": 0.0, + "text": "representing the the value. Third would" + }, + { + "start": 3708.88, + "duration": 0.0, + "text": "representing the the value. Third would be<01:01:49.040> the<01:01:49.200> type<01:01:49.920> and<01:01:50.000> and<01:01:50.400> so<01:01:50.559> on." + }, + { + "start": 3712.71, + "duration": 0.0, + "text": "be the type and and so on." + }, + { + "start": 3712.72, + "duration": 0.0, + "text": "be the type and and so on. Um" + }, + { + "start": 3715.03, + "duration": 0.0, + "text": "Um" + }, + { + "start": 3715.04, + "duration": 0.0, + "text": "Um but<01:01:56.160> it's<01:01:56.480> at<01:01:56.640> this<01:01:56.799> stage<01:01:57.040> that<01:01:57.280> other" + }, + { + "start": 3717.589, + "duration": 0.0, + "text": "but it's at this stage that other" + }, + { + "start": 3717.599, + "duration": 0.0, + "text": "but it's at this stage that other visualizers<01:01:58.160> can<01:01:58.319> actually<01:01:58.559> slot<01:01:58.880> in.<01:01:59.280> Right?" + }, + { + "start": 3719.43, + "duration": 0.0, + "text": "visualizers can actually slot in. Right?" + }, + { + "start": 3719.44, + "duration": 0.0, + "text": "visualizers can actually slot in. Right? If<01:01:59.599> we<01:01:59.760> want<01:01:59.839> to<01:02:00.000> take<01:02:00.240> that<01:02:00.559> path<01:02:01.119> and" + }, + { + "start": 3721.43, + "duration": 0.0, + "text": "If we want to take that path and" + }, + { + "start": 3721.44, + "duration": 0.0, + "text": "If we want to take that path and override<01:02:01.839> it<01:02:02.000> to<01:02:02.160> do<01:02:02.319> something<01:02:02.559> else,<01:02:03.040> here's" + }, + { + "start": 3723.27, + "duration": 0.0, + "text": "override it to do something else, here's" + }, + { + "start": 3723.28, + "duration": 0.0, + "text": "override it to do something else, here's where<01:02:03.440> we<01:02:03.760> actually<01:02:04.000> do<01:02:04.160> that.<01:02:04.559> So<01:02:04.880> instead<01:02:06.079> of" + }, + { + "start": 3726.309, + "duration": 0.0, + "text": "where we actually do that. So instead of" + }, + { + "start": 3726.319, + "duration": 0.0, + "text": "where we actually do that. So instead of taking<01:02:06.720> our<01:02:07.040> evaluations," + }, + { + "start": 3728.71, + "duration": 0.0, + "text": "taking our evaluations," + }, + { + "start": 3728.72, + "duration": 0.0, + "text": "taking our evaluations, feeding<01:02:09.040> them<01:02:09.200> into<01:02:09.359> a<01:02:09.520> value<01:02:09.839> string<01:02:10.640> text" + }, + { + "start": 3730.95, + "duration": 0.0, + "text": "feeding them into a value string text" + }, + { + "start": 3730.96, + "duration": 0.0, + "text": "feeding them into a value string text generator," + }, + { + "start": 3733.27, + "duration": 0.0, + "text": "generator," + }, + { + "start": 3733.28, + "duration": 0.0, + "text": "generator, we<01:02:13.520> could<01:02:13.599> also<01:02:13.839> feed<01:02:14.079> it<01:02:14.480> into<01:02:14.720> a<01:02:14.880> bit<01:02:15.119> map" + }, + { + "start": 3735.27, + "duration": 0.0, + "text": "we could also feed it into a bit map" + }, + { + "start": 3735.28, + "duration": 0.0, + "text": "we could also feed it into a bit map visualizer.<01:02:16.720> Oh<01:02:17.040> no,<01:02:18.160> 3D<01:02:18.559> geometry" + }, + { + "start": 3738.95, + "duration": 0.0, + "text": "visualizer. Oh no, 3D geometry" + }, + { + "start": 3738.96, + "duration": 0.0, + "text": "visualizer. Oh no, 3D geometry visualizer,<01:02:19.680> disassembly<01:02:20.240> visualizer," + }, + { + "start": 3740.71, + "duration": 0.0, + "text": "visualizer, disassembly visualizer," + }, + { + "start": 3740.72, + "duration": 0.0, + "text": "visualizer, disassembly visualizer, pointer<01:02:20.960> graph<01:02:21.200> visualizer,<01:02:21.599> right?<01:02:21.839> Or" + }, + { + "start": 3742.23, + "duration": 0.0, + "text": "pointer graph visualizer, right? Or" + }, + { + "start": 3742.24, + "duration": 0.0, + "text": "pointer graph visualizer, right? Or anything<01:02:22.480> you<01:02:22.640> can<01:02:22.799> think<01:02:22.880> of.<01:02:23.119> This<01:02:23.200> is<01:02:23.359> where" + }, + { + "start": 3743.43, + "duration": 0.0, + "text": "anything you can think of. This is where" + }, + { + "start": 3743.44, + "duration": 0.0, + "text": "anything you can think of. This is where it<01:02:23.520> would<01:02:23.680> slot<01:02:23.920> in<01:02:24.160> here." + }, + { + "start": 3746.549, + "duration": 0.0, + "text": "it would slot in here." + }, + { + "start": 3746.559, + "duration": 0.0, + "text": "it would slot in here. Um,<01:02:27.839> so<01:02:28.000> the<01:02:28.160> way<01:02:28.240> I<01:02:28.400> think<01:02:28.559> about<01:02:28.720> this<01:02:29.040> is" + }, + { + "start": 3749.27, + "duration": 0.0, + "text": "Um, so the way I think about this is" + }, + { + "start": 3749.28, + "duration": 0.0, + "text": "Um, so the way I think about this is that<01:02:29.520> all<01:02:29.680> of<01:02:29.839> these<01:02:30.079> different<01:02:30.240> visualizers" + }, + { + "start": 3750.95, + "duration": 0.0, + "text": "that all of these different visualizers" + }, + { + "start": 3750.96, + "duration": 0.0, + "text": "that all of these different visualizers are<01:02:31.200> sort<01:02:31.359> of<01:02:31.440> just<01:02:31.599> different<01:02:31.920> like<01:02:32.079> lenses" + }, + { + "start": 3752.549, + "duration": 0.0, + "text": "are sort of just different like lenses" + }, + { + "start": 3752.559, + "duration": 0.0, + "text": "are sort of just different like lenses into<01:02:32.799> our<01:02:32.960> data,<01:02:33.520> right?<01:02:33.680> you<01:02:33.920> can<01:02:34.079> just<01:02:34.240> take" + }, + { + "start": 3754.39, + "duration": 0.0, + "text": "into our data, right? you can just take" + }, + { + "start": 3754.4, + "duration": 0.0, + "text": "into our data, right? you can just take an<01:02:34.559> evaluation<01:02:35.040> and<01:02:35.359> view<01:02:35.599> it<01:02:35.839> like<01:02:36.400> literally" + }, + { + "start": 3756.789, + "duration": 0.0, + "text": "an evaluation and view it like literally" + }, + { + "start": 3756.799, + "duration": 0.0, + "text": "an evaluation and view it like literally like<01:02:36.960> a<01:02:37.200> physical<01:02:37.599> lens,<01:02:38.000> right?<01:02:38.400> Um<01:02:38.720> it's" + }, + { + "start": 3759.03, + "duration": 0.0, + "text": "like a physical lens, right? Um it's" + }, + { + "start": 3759.04, + "duration": 0.0, + "text": "like a physical lens, right? Um it's changing<01:02:39.280> how<01:02:39.440> you're<01:02:39.680> looking<01:02:39.839> at<01:02:40.079> it.<01:02:40.960> So<01:02:41.599> 64" + }, + { + "start": 3761.91, + "duration": 0.0, + "text": "changing how you're looking at it. So 64" + }, + { + "start": 3761.92, + "duration": 0.0, + "text": "changing how you're looking at it. So 64 megabyte<01:02:42.400> buffer<01:02:42.720> can<01:02:42.799> be<01:02:42.960> viewed<01:02:43.200> in<01:02:43.440> many" + }, + { + "start": 3763.75, + "duration": 0.0, + "text": "megabyte buffer can be viewed in many" + }, + { + "start": 3763.76, + "duration": 0.0, + "text": "megabyte buffer can be viewed in many ways.<01:02:45.040> It<01:02:45.200> can<01:02:45.359> be<01:02:45.440> viewed<01:02:45.599> through<01:02:45.680> a<01:02:45.839> bit<01:02:46.079> map" + }, + { + "start": 3766.23, + "duration": 0.0, + "text": "ways. It can be viewed through a bit map" + }, + { + "start": 3766.24, + "duration": 0.0, + "text": "ways. It can be viewed through a bit map lens," + }, + { + "start": 3767.99, + "duration": 0.0, + "text": "lens," + }, + { + "start": 3768.0, + "duration": 0.0, + "text": "lens, a<01:02:48.160> hex<01:02:48.400> editor<01:02:48.799> lens.<01:02:49.760> No,<01:02:50.240> please<01:02:50.559> stop<01:02:50.799> doing" + }, + { + "start": 3771.03, + "duration": 0.0, + "text": "a hex editor lens. No, please stop doing" + }, + { + "start": 3771.04, + "duration": 0.0, + "text": "a hex editor lens. No, please stop doing that<01:02:51.599> dude." + }, + { + "start": 3773.19, + "duration": 0.0, + "text": "that dude." + }, + { + "start": 3773.2, + "duration": 0.0, + "text": "that dude. Uh<01:02:53.520> or<01:02:53.680> a<01:02:53.839> text<01:02:54.000> editor<01:02:54.400> lens<01:02:54.880> or<01:02:55.200> you<01:02:55.280> know" + }, + { + "start": 3775.51, + "duration": 0.0, + "text": "Uh or a text editor lens or you know" + }, + { + "start": 3775.52, + "duration": 0.0, + "text": "Uh or a text editor lens or you know many<01:02:55.839> other<01:02:56.000> possible<01:02:56.400> things." + }, + { + "start": 3777.91, + "duration": 0.0, + "text": "many other possible things." + }, + { + "start": 3777.92, + "duration": 0.0, + "text": "many other possible things. Now<01:02:58.559> a<01:02:58.799> complication<01:02:59.359> arises" + }, + { + "start": 3781.75, + "duration": 0.0, + "text": "Now a complication arises" + }, + { + "start": 3781.76, + "duration": 0.0, + "text": "Now a complication arises which<01:03:02.000> is<01:03:02.079> that<01:03:02.319> not<01:03:02.480> all<01:03:02.640> the<01:03:02.799> information<01:03:03.119> to" + }, + { + "start": 3783.349, + "duration": 0.0, + "text": "which is that not all the information to" + }, + { + "start": 3783.359, + "duration": 0.0, + "text": "which is that not all the information to actually<01:03:03.520> produce<01:03:03.760> a<01:03:03.920> visualization<01:03:04.559> is" + }, + { + "start": 3784.789, + "duration": 0.0, + "text": "actually produce a visualization is" + }, + { + "start": 3784.799, + "duration": 0.0, + "text": "actually produce a visualization is present<01:03:05.200> inside<01:03:05.520> of<01:03:05.599> the<01:03:05.760> evaluation.<01:03:06.319> Right?" + }, + { + "start": 3786.63, + "duration": 0.0, + "text": "present inside of the evaluation. Right?" + }, + { + "start": 3786.64, + "duration": 0.0, + "text": "present inside of the evaluation. Right? If<01:03:06.799> I<01:03:06.880> want<01:03:07.040> to<01:03:07.119> visualize<01:03:07.440> a<01:03:07.520> bit<01:03:07.760> map<01:03:08.480> what" + }, + { + "start": 3788.71, + "duration": 0.0, + "text": "If I want to visualize a bit map what" + }, + { + "start": 3788.72, + "duration": 0.0, + "text": "If I want to visualize a bit map what dimensions<01:03:09.119> am<01:03:09.280> I<01:03:09.440> talking<01:03:09.599> about?<01:03:09.760> Like<01:03:10.000> what" + }, + { + "start": 3790.23, + "duration": 0.0, + "text": "dimensions am I talking about? Like what" + }, + { + "start": 3790.24, + "duration": 0.0, + "text": "dimensions am I talking about? Like what what<01:03:10.480> are<01:03:10.559> the<01:03:10.640> dimensions<01:03:10.960> of<01:03:11.040> the<01:03:11.119> bit<01:03:11.359> map?" + }, + { + "start": 3791.67, + "duration": 0.0, + "text": "what are the dimensions of the bit map?" + }, + { + "start": 3791.68, + "duration": 0.0, + "text": "what are the dimensions of the bit map? What<01:03:11.760> format<01:03:12.160> is<01:03:12.319> the<01:03:12.480> data<01:03:12.640> encoded<01:03:13.119> in?<01:03:13.599> Um" + }, + { + "start": 3793.829, + "duration": 0.0, + "text": "What format is the data encoded in? Um" + }, + { + "start": 3793.839, + "duration": 0.0, + "text": "What format is the data encoded in? Um if<01:03:14.079> I'm<01:03:14.319> looking<01:03:14.480> at<01:03:14.640> geometry<01:03:15.280> is<01:03:15.440> this<01:03:15.760> like" + }, + { + "start": 3796.63, + "duration": 0.0, + "text": "if I'm looking at geometry is this like" + }, + { + "start": 3796.64, + "duration": 0.0, + "text": "if I'm looking at geometry is this like vertices<01:03:17.280> or<01:03:17.599> indices<01:03:18.000> or<01:03:18.240> what<01:03:18.319> is<01:03:18.480> it?<01:03:18.720> What" + }, + { + "start": 3798.87, + "duration": 0.0, + "text": "vertices or indices or what is it? What" + }, + { + "start": 3798.88, + "duration": 0.0, + "text": "vertices or indices or what is it? What topology<01:03:19.440> is<01:03:19.599> the<01:03:19.839> geometry?<01:03:20.559> What's<01:03:20.720> the" + }, + { + "start": 3800.87, + "duration": 0.0, + "text": "topology is the geometry? What's the" + }, + { + "start": 3800.88, + "duration": 0.0, + "text": "topology is the geometry? What's the vertex<01:03:21.359> format?<01:03:21.760> Like<01:03:22.000> how<01:03:22.160> are<01:03:22.240> these<01:03:22.480> things" + }, + { + "start": 3802.87, + "duration": 0.0, + "text": "vertex format? Like how are these things" + }, + { + "start": 3802.88, + "duration": 0.0, + "text": "vertex format? Like how are these things laid<01:03:23.119> out<01:03:23.680> actually?<01:03:24.160> How's<01:03:24.400> the<01:03:24.559> different" + }, + { + "start": 3804.789, + "duration": 0.0, + "text": "laid out actually? How's the different" + }, + { + "start": 3804.799, + "duration": 0.0, + "text": "laid out actually? How's the different information<01:03:25.119> laid<01:03:25.440> out<01:03:25.760> with<01:03:26.079> disassembly?" + }, + { + "start": 3807.029, + "duration": 0.0, + "text": "information laid out with disassembly?" + }, + { + "start": 3807.039, + "duration": 0.0, + "text": "information laid out with disassembly? uh<01:03:27.200> what<01:03:27.359> architecture,<01:03:28.000> what<01:03:28.160> syntax,<01:03:28.720> how" + }, + { + "start": 3808.87, + "duration": 0.0, + "text": "uh what architecture, what syntax, how" + }, + { + "start": 3808.88, + "duration": 0.0, + "text": "uh what architecture, what syntax, how many<01:03:28.960> bytes<01:03:29.359> do<01:03:29.599> I<01:03:29.680> want<01:03:29.760> to<01:03:29.920> pull<01:03:30.079> down<01:03:30.559> and" + }, + { + "start": 3810.789, + "duration": 0.0, + "text": "many bytes do I want to pull down and" + }, + { + "start": 3810.799, + "duration": 0.0, + "text": "many bytes do I want to pull down and actually<01:03:31.039> visualize?<01:03:32.480> Um<01:03:33.680> and<01:03:33.920> so<01:03:34.079> note<01:03:34.319> that" + }, + { + "start": 3814.47, + "duration": 0.0, + "text": "actually visualize? Um and so note that" + }, + { + "start": 3814.48, + "duration": 0.0, + "text": "actually visualize? Um and so note that all<01:03:34.640> of<01:03:34.720> these<01:03:34.960> questions<01:03:35.280> are<01:03:35.440> like<01:03:35.599> highly" + }, + { + "start": 3815.99, + "duration": 0.0, + "text": "all of these questions are like highly" + }, + { + "start": 3816.0, + "duration": 0.0, + "text": "all of these questions are like highly specific.<01:03:36.400> They're<01:03:36.640> parameterizations<01:03:37.599> to" + }, + { + "start": 3817.829, + "duration": 0.0, + "text": "specific. They're parameterizations to" + }, + { + "start": 3817.839, + "duration": 0.0, + "text": "specific. They're parameterizations to the<01:03:38.000> visualizer.<01:03:39.359> Um" + }, + { + "start": 3821.67, + "duration": 0.0, + "text": "the visualizer. Um" + }, + { + "start": 3821.68, + "duration": 0.0, + "text": "the visualizer. Um uh<01:03:41.839> they're<01:03:42.000> also<01:03:42.240> the<01:03:42.400> kinds<01:03:42.559> of<01:03:42.640> things<01:03:42.799> that" + }, + { + "start": 3822.95, + "duration": 0.0, + "text": "uh they're also the kinds of things that" + }, + { + "start": 3822.96, + "duration": 0.0, + "text": "uh they're also the kinds of things that a<01:03:43.200> user<01:03:43.599> probably<01:03:44.079> wants<01:03:44.319> to<01:03:44.480> explicitly" + }, + { + "start": 3825.19, + "duration": 0.0, + "text": "a user probably wants to explicitly" + }, + { + "start": 3825.2, + "duration": 0.0, + "text": "a user probably wants to explicitly express." + }, + { + "start": 3829.92, + "duration": 0.0, + "text": "Okay." + }, + { + "start": 3831.51, + "duration": 0.0, + "text": "Okay." + }, + { + "start": 3831.52, + "duration": 0.0, + "text": "Okay. Um<01:03:52.319> so<01:03:52.880> to<01:03:53.200> solve<01:03:53.359> this<01:03:53.599> problem<01:03:54.240> we<01:03:54.480> need<01:03:54.559> to" + }, + { + "start": 3834.71, + "duration": 0.0, + "text": "Um so to solve this problem we need to" + }, + { + "start": 3834.72, + "duration": 0.0, + "text": "Um so to solve this problem we need to have<01:03:54.880> some<01:03:55.119> way<01:03:55.359> of<01:03:56.079> obtaining<01:03:56.480> from<01:03:56.720> the<01:03:56.880> user" + }, + { + "start": 3837.349, + "duration": 0.0, + "text": "have some way of obtaining from the user" + }, + { + "start": 3837.359, + "duration": 0.0, + "text": "have some way of obtaining from the user a<01:03:57.599> choice<01:03:57.839> of<01:03:58.000> visualizer<01:03:58.880> and<01:03:59.119> a<01:03:59.280> choice<01:03:59.440> of" + }, + { + "start": 3839.51, + "duration": 0.0, + "text": "a choice of visualizer and a choice of" + }, + { + "start": 3839.52, + "duration": 0.0, + "text": "a choice of visualizer and a choice of all<01:03:59.680> that<01:03:59.839> visualizer's<01:04:00.559> options<01:04:01.680> um<01:04:01.839> for" + }, + { + "start": 3842.069, + "duration": 0.0, + "text": "all that visualizer's options um for" + }, + { + "start": 3842.079, + "duration": 0.0, + "text": "all that visualizer's options um for some<01:04:02.240> evaluation.<01:04:03.119> So<01:04:03.359> if<01:04:03.520> I've<01:04:03.760> got<01:04:03.839> this" + }, + { + "start": 3844.069, + "duration": 0.0, + "text": "some evaluation. So if I've got this" + }, + { + "start": 3844.079, + "duration": 0.0, + "text": "some evaluation. So if I've got this buffer<01:04:04.640> evaluation" + }, + { + "start": 3846.23, + "duration": 0.0, + "text": "buffer evaluation" + }, + { + "start": 3846.24, + "duration": 0.0, + "text": "buffer evaluation and<01:04:06.400> it's<01:04:06.640> array<01:04:06.880> of<01:04:07.039> 64<01:04:07.440> million<01:04:07.760> u8s<01:04:08.640> I<01:04:09.039> need" + }, + { + "start": 3849.19, + "duration": 0.0, + "text": "and it's array of 64 million u8s I need" + }, + { + "start": 3849.2, + "duration": 0.0, + "text": "and it's array of 64 million u8s I need to<01:04:09.359> somehow<01:04:09.760> tag<01:04:10.079> it.<01:04:10.319> I<01:04:10.480> need<01:04:10.640> to<01:04:10.720> somehow" + }, + { + "start": 3851.109, + "duration": 0.0, + "text": "to somehow tag it. I need to somehow" + }, + { + "start": 3851.119, + "duration": 0.0, + "text": "to somehow tag it. I need to somehow like<01:04:11.440> take<01:04:11.680> that<01:04:12.079> evaluation<01:04:12.559> to<01:04:12.720> just<01:04:12.799> like" + }, + { + "start": 3852.95, + "duration": 0.0, + "text": "like take that evaluation to just like" + }, + { + "start": 3852.96, + "duration": 0.0, + "text": "like take that evaluation to just like tack<01:04:13.280> some<01:04:13.440> information<01:04:13.760> on<01:04:13.920> that's<01:04:14.160> like<01:04:14.400> by" + }, + { + "start": 3854.549, + "duration": 0.0, + "text": "tack some information on that's like by" + }, + { + "start": 3854.559, + "duration": 0.0, + "text": "tack some information on that's like by the<01:04:14.640> way<01:04:15.119> I<01:04:15.280> want<01:04:15.359> to<01:04:15.440> look<01:04:15.520> at<01:04:15.680> this<01:04:15.760> as<01:04:15.920> a<01:04:16.000> bit" + }, + { + "start": 3856.23, + "duration": 0.0, + "text": "the way I want to look at this as a bit" + }, + { + "start": 3856.24, + "duration": 0.0, + "text": "the way I want to look at this as a bit map<01:04:17.359> by24<01:04:18.079> RGBA88<01:04:19.119> or<01:04:19.359> something." + }, + { + "start": 3861.67, + "duration": 0.0, + "text": "map by24 RGBA88 or something." + }, + { + "start": 3861.68, + "duration": 0.0, + "text": "map by24 RGBA88 or something. Lucky<01:04:22.000> for<01:04:22.160> us<01:04:22.559> there's<01:04:22.799> already<01:04:22.960> a<01:04:23.200> way<01:04:23.359> to" + }, + { + "start": 3863.51, + "duration": 0.0, + "text": "Lucky for us there's already a way to" + }, + { + "start": 3863.52, + "duration": 0.0, + "text": "Lucky for us there's already a way to tag<01:04:23.760> an<01:04:23.920> evaluation<01:04:25.039> and<01:04:25.280> that's<01:04:25.440> with<01:04:25.599> type" + }, + { + "start": 3865.829, + "duration": 0.0, + "text": "tag an evaluation and that's with type" + }, + { + "start": 3865.839, + "duration": 0.0, + "text": "tag an evaluation and that's with type info." + }, + { + "start": 3867.99, + "duration": 0.0, + "text": "info." + }, + { + "start": 3868.0, + "duration": 0.0, + "text": "info. So<01:04:28.480> we<01:04:28.720> can<01:04:28.799> use<01:04:29.039> type<01:04:29.359> info<01:04:29.920> to<01:04:30.240> express<01:04:30.640> all" + }, + { + "start": 3870.87, + "duration": 0.0, + "text": "So we can use type info to express all" + }, + { + "start": 3870.88, + "duration": 0.0, + "text": "So we can use type info to express all of<01:04:30.960> these<01:04:31.200> visualizer<01:04:31.920> decisions.<01:04:32.880> Um<01:04:33.680> so<01:04:34.799> we" + }, + { + "start": 3875.029, + "duration": 0.0, + "text": "of these visualizer decisions. Um so we" + }, + { + "start": 3875.039, + "duration": 0.0, + "text": "of these visualizer decisions. Um so we already<01:04:35.280> have<01:04:35.440> paths<01:04:35.760> that<01:04:35.920> rely<01:04:36.160> on<01:04:36.319> type" + }, + { + "start": 3876.549, + "duration": 0.0, + "text": "already have paths that rely on type" + }, + { + "start": 3876.559, + "duration": 0.0, + "text": "already have paths that rely on type info,<01:04:36.960> right?<01:04:37.119> Remember<01:04:37.440> when<01:04:37.599> I<01:04:37.760> turned<01:04:37.920> it" + }, + { + "start": 3878.069, + "duration": 0.0, + "text": "info, right? Remember when I turned it" + }, + { + "start": 3878.079, + "duration": 0.0, + "text": "info, right? Remember when I turned it into<01:04:38.240> a<01:04:38.400> string,<01:04:38.799> I<01:04:38.960> had<01:04:39.119> to<01:04:39.280> like<01:04:39.440> look<01:04:39.520> at<01:04:39.599> the" + }, + { + "start": 3879.75, + "duration": 0.0, + "text": "into a string, I had to like look at the" + }, + { + "start": 3879.76, + "duration": 0.0, + "text": "into a string, I had to like look at the type<01:04:40.000> info<01:04:40.559> and<01:04:40.880> see<01:04:41.119> like<01:04:41.359> what<01:04:41.599> case<01:04:41.839> I" + }, + { + "start": 3881.99, + "duration": 0.0, + "text": "type info and see like what case I" + }, + { + "start": 3882.0, + "duration": 0.0, + "text": "type info and see like what case I wanted<01:04:42.160> to<01:04:42.400> actually<01:04:42.640> do.<01:04:43.680> Not<01:04:44.000> really<01:04:44.160> that" + }, + { + "start": 3884.39, + "duration": 0.0, + "text": "wanted to actually do. Not really that" + }, + { + "start": 3884.4, + "duration": 0.0, + "text": "wanted to actually do. Not really that much<01:04:44.559> different,<01:04:44.799> right?<01:04:45.039> I<01:04:45.200> can<01:04:45.359> just<01:04:45.680> say" + }, + { + "start": 3885.91, + "duration": 0.0, + "text": "much different, right? I can just say" + }, + { + "start": 3885.92, + "duration": 0.0, + "text": "much different, right? I can just say like<01:04:46.160> the<01:04:46.319> type<01:04:46.480> is<01:04:46.640> going<01:04:46.720> to<01:04:46.799> somehow" + }, + { + "start": 3887.19, + "duration": 0.0, + "text": "like the type is going to somehow" + }, + { + "start": 3887.2, + "duration": 0.0, + "text": "like the type is going to somehow express<01:04:47.520> this<01:04:47.920> and<01:04:48.079> then<01:04:48.240> we<01:04:48.400> can<01:04:48.480> choose" + }, + { + "start": 3888.789, + "duration": 0.0, + "text": "express this and then we can choose" + }, + { + "start": 3888.799, + "duration": 0.0, + "text": "express this and then we can choose visualizers<01:04:49.440> based<01:04:49.680> on<01:04:49.839> that.<01:04:51.200> So<01:04:52.319> how<01:04:52.480> do<01:04:52.640> we" + }, + { + "start": 3892.71, + "duration": 0.0, + "text": "visualizers based on that. So how do we" + }, + { + "start": 3892.72, + "duration": 0.0, + "text": "visualizers based on that. So how do we extend<01:04:52.960> the<01:04:53.039> type<01:04:53.280> info<01:04:53.599> to<01:04:53.760> do<01:04:53.920> that?<01:04:54.640> Um<01:04:55.039> so" + }, + { + "start": 3895.27, + "duration": 0.0, + "text": "extend the type info to do that? Um so" + }, + { + "start": 3895.28, + "duration": 0.0, + "text": "extend the type info to do that? Um so the<01:04:55.599> buffer<01:04:56.000> type<01:04:56.240> you<01:04:56.400> can<01:04:56.480> imagine<01:04:56.960> buffer" + }, + { + "start": 3897.43, + "duration": 0.0, + "text": "the buffer type you can imagine buffer" + }, + { + "start": 3897.44, + "duration": 0.0, + "text": "the buffer type you can imagine buffer could<01:04:57.599> be<01:04:57.680> like<01:04:57.760> a<01:04:57.920> local<01:04:58.160> variable<01:04:58.559> or<01:04:58.799> or" + }, + { + "start": 3899.109, + "duration": 0.0, + "text": "could be like a local variable or or" + }, + { + "start": 3899.119, + "duration": 0.0, + "text": "could be like a local variable or or probably<01:04:59.280> not<01:04:59.599> 64<01:04:59.920> megabytes<01:05:00.720> global" + }, + { + "start": 3901.029, + "duration": 0.0, + "text": "probably not 64 megabytes global" + }, + { + "start": 3901.039, + "duration": 0.0, + "text": "probably not 64 megabytes global variable.<01:05:01.839> uh<01:05:01.920> its<01:05:02.240> type<01:05:02.400> is<01:05:02.559> a<01:05:02.799> you<01:05:02.960> know<01:05:03.119> 64" + }, + { + "start": 3903.51, + "duration": 0.0, + "text": "variable. uh its type is a you know 64" + }, + { + "start": 3903.52, + "duration": 0.0, + "text": "variable. uh its type is a you know 64 megabyte<01:05:04.000> array<01:05:04.559> of<01:05:04.720> U8s." + }, + { + "start": 3908.24, + "duration": 0.0, + "text": "So<01:05:08.480> all<01:05:08.640> we<01:05:08.799> have<01:05:08.880> to<01:05:08.960> do<01:05:09.119> is<01:05:09.280> extend<01:05:09.599> our" + }, + { + "start": 3909.829, + "duration": 0.0, + "text": "So all we have to do is extend our" + }, + { + "start": 3909.839, + "duration": 0.0, + "text": "So all we have to do is extend our visual<01:05:10.240> uh<01:05:10.319> our<01:05:10.559> evaluation<01:05:11.200> language<01:05:12.240> to<01:05:12.559> be" + }, + { + "start": 3912.71, + "duration": 0.0, + "text": "visual uh our evaluation language to be" + }, + { + "start": 3912.72, + "duration": 0.0, + "text": "visual uh our evaluation language to be able<01:05:12.880> to<01:05:13.200> extend<01:05:13.520> that<01:05:13.680> type<01:05:14.000> information." + }, + { + "start": 3914.71, + "duration": 0.0, + "text": "able to extend that type information." + }, + { + "start": 3914.72, + "duration": 0.0, + "text": "able to extend that type information. Conceptually<01:05:15.359> it's<01:05:15.520> almost<01:05:15.760> like<01:05:15.920> just<01:05:16.079> a<01:05:16.799> uh" + }, + { + "start": 3916.87, + "duration": 0.0, + "text": "Conceptually it's almost like just a uh" + }, + { + "start": 3916.88, + "duration": 0.0, + "text": "Conceptually it's almost like just a uh it's<01:05:17.119> actually<01:05:17.359> not<01:05:17.599> just<01:05:17.760> a<01:05:17.920> cast.<01:05:18.240> It's<01:05:18.480> sort" + }, + { + "start": 3918.549, + "duration": 0.0, + "text": "it's actually not just a cast. It's sort" + }, + { + "start": 3918.559, + "duration": 0.0, + "text": "it's actually not just a cast. It's sort of<01:05:18.640> like<01:05:18.799> a<01:05:19.440> it's<01:05:20.000> it's<01:05:20.240> sort<01:05:20.400> of<01:05:20.799> appending<01:05:21.200> on" + }, + { + "start": 3921.349, + "duration": 0.0, + "text": "of like a it's it's sort of appending on" + }, + { + "start": 3921.359, + "duration": 0.0, + "text": "of like a it's it's sort of appending on to<01:05:21.440> the<01:05:21.599> type<01:05:21.839> operators<01:05:22.240> if<01:05:22.400> that<01:05:22.559> makes" + }, + { + "start": 3922.71, + "duration": 0.0, + "text": "to the type operators if that makes" + }, + { + "start": 3922.72, + "duration": 0.0, + "text": "to the type operators if that makes sense.<01:05:23.280> I<01:05:23.520> guess<01:05:23.599> it<01:05:23.760> is<01:05:23.920> sort<01:05:24.000> of<01:05:24.079> a<01:05:24.240> kind<01:05:24.400> of" + }, + { + "start": 3924.47, + "duration": 0.0, + "text": "sense. I guess it is sort of a kind of" + }, + { + "start": 3924.48, + "duration": 0.0, + "text": "sense. I guess it is sort of a kind of cast.<01:05:24.960> take<01:05:25.440> take<01:05:25.680> the<01:05:26.000> 64<01:05:26.400> megabyte<01:05:27.039> array<01:05:27.440> of" + }, + { + "start": 3927.589, + "duration": 0.0, + "text": "cast. take take the 64 megabyte array of" + }, + { + "start": 3927.599, + "duration": 0.0, + "text": "cast. take take the 64 megabyte array of U8s<01:05:28.160> and<01:05:28.240> then<01:05:28.319> you<01:05:28.480> sort<01:05:28.640> of<01:05:28.720> cast<01:05:29.039> it<01:05:29.200> to" + }, + { + "start": 3930.15, + "duration": 0.0, + "text": "U8s and then you sort of cast it to" + }, + { + "start": 3930.16, + "duration": 0.0, + "text": "U8s and then you sort of cast it to bitmap<01:05:30.960> type<01:05:32.000> special<01:05:32.400> type<01:05:32.799> which<01:05:33.119> points<01:05:33.520> to" + }, + { + "start": 3934.39, + "duration": 0.0, + "text": "bitmap type special type which points to" + }, + { + "start": 3934.4, + "duration": 0.0, + "text": "bitmap type special type which points to that<01:05:34.640> type<01:05:35.119> right" + }, + { + "start": 3937.029, + "duration": 0.0, + "text": "that type right" + }, + { + "start": 3937.039, + "duration": 0.0, + "text": "that type right um<01:05:37.760> so<01:05:38.240> like<01:05:38.480> if<01:05:38.720> we<01:05:38.880> look<01:05:38.960> at<01:05:39.119> this<01:05:39.280> expression" + }, + { + "start": 3939.589, + "duration": 0.0, + "text": "um so like if we look at this expression" + }, + { + "start": 3939.599, + "duration": 0.0, + "text": "um so like if we look at this expression down<01:05:39.839> here<01:05:40.079> you've<01:05:40.319> got<01:05:40.480> like<01:05:40.640> this<01:05:40.880> bit<01:05:41.200> map" + }, + { + "start": 3941.43, + "duration": 0.0, + "text": "down here you've got like this bit map" + }, + { + "start": 3941.44, + "duration": 0.0, + "text": "down here you've got like this bit map call<01:05:41.839> it's<01:05:42.000> like<01:05:42.240> looks<01:05:42.400> like<01:05:42.480> a<01:05:42.640> function" + }, + { + "start": 3942.95, + "duration": 0.0, + "text": "call it's like looks like a function" + }, + { + "start": 3942.96, + "duration": 0.0, + "text": "call it's like looks like a function call<01:05:43.760> you<01:05:43.920> know<01:05:44.079> bit<01:05:44.400> map<01:05:44.640> and<01:05:44.799> then<01:05:44.960> you've" + }, + { + "start": 3945.109, + "duration": 0.0, + "text": "call you know bit map and then you've" + }, + { + "start": 3945.119, + "duration": 0.0, + "text": "call you know bit map and then you've got<01:05:45.280> some<01:05:45.440> buffer<01:05:46.000> and<01:05:46.160> then<01:05:46.319> the" + }, + { + "start": 3946.47, + "duration": 0.0, + "text": "got some buffer and then the" + }, + { + "start": 3946.48, + "duration": 0.0, + "text": "got some buffer and then the parameterizations<01:05:47.200> of<01:05:47.359> the<01:05:47.440> bitmap" + }, + { + "start": 3947.91, + "duration": 0.0, + "text": "parameterizations of the bitmap" + }, + { + "start": 3947.92, + "duration": 0.0, + "text": "parameterizations of the bitmap visualizer<01:05:48.960> that's<01:05:49.200> just<01:05:49.359> a<01:05:49.520> type<01:05:49.760> now<01:05:50.240> or" + }, + { + "start": 3950.39, + "duration": 0.0, + "text": "visualizer that's just a type now or" + }, + { + "start": 3950.4, + "duration": 0.0, + "text": "visualizer that's just a type now or that<01:05:50.640> that<01:05:51.039> implies<01:05:51.520> that<01:05:51.680> the<01:05:51.839> type<01:05:52.160> turns" + }, + { + "start": 3952.39, + "duration": 0.0, + "text": "that that implies that the type turns" + }, + { + "start": 3952.4, + "duration": 0.0, + "text": "that that implies that the type turns into<01:05:52.640> this" + }, + { + "start": 3958.319, + "duration": 0.0, + "text": "So<01:05:58.559> in<01:05:58.720> one<01:05:58.960> step<01:06:00.000> we've<01:06:00.559> uh<01:06:00.640> allowed<01:06:00.880> our" + }, + { + "start": 3961.109, + "duration": 0.0, + "text": "So in one step we've uh allowed our" + }, + { + "start": 3961.119, + "duration": 0.0, + "text": "So in one step we've uh allowed our expression<01:06:01.440> language<01:06:01.760> to<01:06:02.640> express<01:06:02.720> express" + }, + { + "start": 3963.109, + "duration": 0.0, + "text": "expression language to express express" + }, + { + "start": 3963.119, + "duration": 0.0, + "text": "expression language to express express both<01:06:03.359> a<01:06:03.599> choice<01:06:03.760> of<01:06:03.920> visualizer<01:06:04.799> and<01:06:05.039> any<01:06:05.280> set" + }, + { + "start": 3965.43, + "duration": 0.0, + "text": "both a choice of visualizer and any set" + }, + { + "start": 3965.44, + "duration": 0.0, + "text": "both a choice of visualizer and any set of<01:06:05.599> arguments<01:06:05.920> to<01:06:06.079> that<01:06:06.240> visualizer.<01:06:06.960> So<01:06:07.119> our" + }, + { + "start": 3967.27, + "duration": 0.0, + "text": "of arguments to that visualizer. So our" + }, + { + "start": 3967.28, + "duration": 0.0, + "text": "of arguments to that visualizer. So our UI<01:06:07.680> build<01:06:08.160> by<01:06:08.400> looking<01:06:08.640> at<01:06:08.720> the<01:06:08.880> type" + }, + { + "start": 3969.19, + "duration": 0.0, + "text": "UI build by looking at the type" + }, + { + "start": 3969.2, + "duration": 0.0, + "text": "UI build by looking at the type information<01:06:10.160> can<01:06:10.400> then<01:06:10.559> decide" + }, + { + "start": 3970.95, + "duration": 0.0, + "text": "information can then decide" + }, + { + "start": 3970.96, + "duration": 0.0, + "text": "information can then decide appropriately<01:06:11.359> on<01:06:11.520> the<01:06:11.680> visualizer<01:06:12.160> path" + }, + { + "start": 3972.789, + "duration": 0.0, + "text": "appropriately on the visualizer path" + }, + { + "start": 3972.799, + "duration": 0.0, + "text": "appropriately on the visualizer path like<01:06:13.280> do<01:06:13.440> I<01:06:13.599> have<01:06:13.680> a<01:06:13.839> visualizer<01:06:14.319> type" + }, + { + "start": 3974.549, + "duration": 0.0, + "text": "like do I have a visualizer type" + }, + { + "start": 3974.559, + "duration": 0.0, + "text": "like do I have a visualizer type operator<01:06:14.880> or<01:06:15.039> do<01:06:15.200> I<01:06:15.359> not?" + }, + { + "start": 3977.91, + "duration": 0.0, + "text": "operator or do I not?" + }, + { + "start": 3977.92, + "duration": 0.0, + "text": "operator or do I not? Um," + }, + { + "start": 3979.75, + "duration": 0.0, + "text": "Um," + }, + { + "start": 3979.76, + "duration": 0.0, + "text": "Um, so<01:06:20.000> our<01:06:20.240> visualizers<01:06:20.799> fill<01:06:21.039> this<01:06:21.200> part<01:06:21.440> out," + }, + { + "start": 3981.829, + "duration": 0.0, + "text": "so our visualizers fill this part out," + }, + { + "start": 3981.839, + "duration": 0.0, + "text": "so our visualizers fill this part out, right?<01:06:22.000> We've<01:06:22.240> got<01:06:22.319> some<01:06:22.559> evaluation.<01:06:23.440> We" + }, + { + "start": 3983.589, + "duration": 0.0, + "text": "right? We've got some evaluation. We" + }, + { + "start": 3983.599, + "duration": 0.0, + "text": "right? We've got some evaluation. We produce<01:06:23.839> a<01:06:24.000> UI." + }, + { + "start": 3985.589, + "duration": 0.0, + "text": "produce a UI." + }, + { + "start": 3985.599, + "duration": 0.0, + "text": "produce a UI. Pretty<01:06:25.839> pretty<01:06:26.160> straightforward<01:06:26.960> hopefully." + }, + { + "start": 3987.99, + "duration": 0.0, + "text": "Pretty pretty straightforward hopefully." + }, + { + "start": 3988.0, + "duration": 0.0, + "text": "Pretty pretty straightforward hopefully. Um," + }, + { + "start": 3989.91, + "duration": 0.0, + "text": "Um," + }, + { + "start": 3989.92, + "duration": 0.0, + "text": "Um, and<01:06:30.079> recall<01:06:30.400> that<01:06:30.720> an<01:06:30.880> evaluation<01:06:31.359> implies<01:06:32.000> an" + }, + { + "start": 3992.23, + "duration": 0.0, + "text": "and recall that an evaluation implies an" + }, + { + "start": 3992.24, + "duration": 0.0, + "text": "and recall that an evaluation implies an abstract<01:06:32.640> syntax<01:06:32.960> tree,<01:06:33.119> an<01:06:33.280> intermediate" + }, + { + "start": 3993.67, + "duration": 0.0, + "text": "abstract syntax tree, an intermediate" + }, + { + "start": 3993.68, + "duration": 0.0, + "text": "abstract syntax tree, an intermediate representation,<01:06:34.480> a<01:06:34.720> type,<01:06:35.200> and<01:06:35.440> a<01:06:35.599> value." + }, + { + "start": 3997.51, + "duration": 0.0, + "text": "representation, a type, and a value." + }, + { + "start": 3997.52, + "duration": 0.0, + "text": "representation, a type, and a value. And<01:06:37.680> the<01:06:37.839> type<01:06:38.400> implies<01:06:38.799> all<01:06:38.960> the<01:06:39.119> opt<01:06:39.599> uh<01:06:39.680> all" + }, + { + "start": 3999.829, + "duration": 0.0, + "text": "And the type implies all the opt uh all" + }, + { + "start": 3999.839, + "duration": 0.0, + "text": "And the type implies all the opt uh all the<01:06:40.000> options<01:06:40.319> for<01:06:40.480> the<01:06:40.640> visualizers." + }, + { + "start": 4003.68, + "duration": 0.0, + "text": "Um," + }, + { + "start": 4005.43, + "duration": 0.0, + "text": "Um," + }, + { + "start": 4005.44, + "duration": 0.0, + "text": "Um, so<01:06:45.680> now,<01:06:46.000> okay,<01:06:46.480> let's<01:06:46.720> back<01:06:46.960> up." + }, + { + "start": 4008.87, + "duration": 0.0, + "text": "so now, okay, let's back up." + }, + { + "start": 4008.88, + "duration": 0.0, + "text": "so now, okay, let's back up. got<01:06:49.119> these<01:06:49.359> lenses.<01:06:49.920> We<01:06:50.160> can<01:06:50.240> extend<01:06:50.559> type" + }, + { + "start": 4010.87, + "duration": 0.0, + "text": "got these lenses. We can extend type" + }, + { + "start": 4010.88, + "duration": 0.0, + "text": "got these lenses. We can extend type information<01:06:51.280> to<01:06:51.520> include<01:06:52.400> arbitrary" + }, + { + "start": 4012.87, + "duration": 0.0, + "text": "information to include arbitrary" + }, + { + "start": 4012.88, + "duration": 0.0, + "text": "information to include arbitrary visualiz<01:06:53.599> uh<01:06:53.760> visualizer" + }, + { + "start": 4014.309, + "duration": 0.0, + "text": "visualiz uh visualizer" + }, + { + "start": 4014.319, + "duration": 0.0, + "text": "visualiz uh visualizer parameterizations.<01:06:55.760> Uh<01:06:56.240> let's<01:06:56.559> take<01:06:56.720> them<01:06:56.880> a" + }, + { + "start": 4017.109, + "duration": 0.0, + "text": "parameterizations. Uh let's take them a" + }, + { + "start": 4017.119, + "duration": 0.0, + "text": "parameterizations. Uh let's take them a little<01:06:57.200> bit<01:06:57.359> further." + }, + { + "start": 4019.43, + "duration": 0.0, + "text": "little bit further." + }, + { + "start": 4019.44, + "duration": 0.0, + "text": "little bit further. Uh<01:06:59.680> so<01:06:59.839> let's<01:07:00.000> imagine<01:07:00.319> types<01:07:00.720> like<01:07:00.880> this." + }, + { + "start": 4021.349, + "duration": 0.0, + "text": "Uh so let's imagine types like this." + }, + { + "start": 4021.359, + "duration": 0.0, + "text": "Uh so let's imagine types like this. You've<01:07:01.680> got<01:07:02.079> you<01:07:02.240> know<01:07:02.480> f<01:07:02.720> this<01:07:02.880> is<01:07:03.039> very" + }, + { + "start": 4023.27, + "duration": 0.0, + "text": "You've got you know f this is very" + }, + { + "start": 4023.28, + "duration": 0.0, + "text": "You've got you know f this is very common<01:07:03.520> in<01:07:03.760> C<01:07:04.079> code<01:07:04.319> bases<01:07:04.799> because<01:07:05.039> we<01:07:05.359> don't" + }, + { + "start": 4025.67, + "duration": 0.0, + "text": "common in C code bases because we don't" + }, + { + "start": 4025.68, + "duration": 0.0, + "text": "common in C code bases because we don't have<01:07:05.920> nice<01:07:06.160> things<01:07:06.319> in<01:07:06.559> C.<01:07:07.039> You've<01:07:07.200> got" + }, + { + "start": 4027.349, + "duration": 0.0, + "text": "have nice things in C. You've got" + }, + { + "start": 4027.359, + "duration": 0.0, + "text": "have nice things in C. You've got strruct<01:07:07.760> fu<01:07:08.000> slice.<01:07:08.720> You<01:07:08.880> got<01:07:08.960> a<01:07:09.119> pointer<01:07:09.440> and" + }, + { + "start": 4029.589, + "duration": 0.0, + "text": "strruct fu slice. You got a pointer and" + }, + { + "start": 4029.599, + "duration": 0.0, + "text": "strruct fu slice. You got a pointer and some<01:07:09.839> count.<01:07:10.480> or<01:07:10.720> if<01:07:10.880> I've<01:07:11.039> got<01:07:11.119> a<01:07:11.359> list<01:07:11.599> like" + }, + { + "start": 4031.91, + "duration": 0.0, + "text": "some count. or if I've got a list like" + }, + { + "start": 4031.92, + "duration": 0.0, + "text": "some count. or if I've got a list like strruct<01:07:12.240> fu<01:07:12.559> node<01:07:13.280> pointer<01:07:13.680> to<01:07:13.839> the<01:07:14.000> next<01:07:14.079> node" + }, + { + "start": 4034.309, + "duration": 0.0, + "text": "strruct fu node pointer to the next node" + }, + { + "start": 4034.319, + "duration": 0.0, + "text": "strruct fu node pointer to the next node and<01:07:14.480> then<01:07:14.559> and<01:07:14.799> then<01:07:14.880> a<01:07:15.119> member<01:07:15.359> with<01:07:15.520> the" + }, + { + "start": 4035.67, + "duration": 0.0, + "text": "and then and then a member with the" + }, + { + "start": 4035.68, + "duration": 0.0, + "text": "and then and then a member with the actual<01:07:16.000> data.<01:07:17.280> Um<01:07:18.720> so<01:07:18.880> given<01:07:19.200> the<01:07:19.359> given<01:07:19.680> the" + }, + { + "start": 4039.91, + "duration": 0.0, + "text": "actual data. Um so given the given the" + }, + { + "start": 4039.92, + "duration": 0.0, + "text": "actual data. Um so given the given the current<01:07:20.160> sort<01:07:20.319> of<01:07:20.400> type<01:07:20.640> info<01:07:21.039> visualization" + }, + { + "start": 4041.51, + "duration": 0.0, + "text": "current sort of type info visualization" + }, + { + "start": 4041.52, + "duration": 0.0, + "text": "current sort of type info visualization rules<01:07:22.079> you<01:07:22.240> put<01:07:22.400> that<01:07:22.480> into<01:07:22.640> the<01:07:22.799> watch<01:07:23.039> window" + }, + { + "start": 4043.349, + "duration": 0.0, + "text": "rules you put that into the watch window" + }, + { + "start": 4043.359, + "duration": 0.0, + "text": "rules you put that into the watch window you're<01:07:23.440> like<01:07:23.599> great<01:07:23.839> I'm<01:07:24.079> going<01:07:24.160> to<01:07:24.240> visualize" + }, + { + "start": 4044.63, + "duration": 0.0, + "text": "you're like great I'm going to visualize" + }, + { + "start": 4044.64, + "duration": 0.0, + "text": "you're like great I'm going to visualize my<01:07:24.880> dynamic<01:07:25.280> array<01:07:25.599> today<01:07:26.160> you<01:07:26.319> expand<01:07:26.640> it<01:07:26.960> and" + }, + { + "start": 4047.109, + "duration": 0.0, + "text": "my dynamic array today you expand it and" + }, + { + "start": 4047.119, + "duration": 0.0, + "text": "my dynamic array today you expand it and you've<01:07:27.280> got<01:07:27.440> two<01:07:27.599> members<01:07:27.920> it's<01:07:28.079> like<01:07:28.240> v<01:07:28.480> and" + }, + { + "start": 4048.63, + "duration": 0.0, + "text": "you've got two members it's like v and" + }, + { + "start": 4048.64, + "duration": 0.0, + "text": "you've got two members it's like v and count<01:07:28.960> and<01:07:29.200> then<01:07:29.280> you<01:07:29.520> expand<01:07:29.839> v<01:07:30.079> and<01:07:30.240> it's" + }, + { + "start": 4050.39, + "duration": 0.0, + "text": "count and then you expand v and it's" + }, + { + "start": 4050.4, + "duration": 0.0, + "text": "count and then you expand v and it's like<01:07:30.640> one<01:07:31.200> thing<01:07:31.520> and<01:07:31.680> you're<01:07:31.920> like<01:07:32.319> what<01:07:32.640> what" + }, + { + "start": 4052.71, + "duration": 0.0, + "text": "like one thing and you're like what what" + }, + { + "start": 4052.72, + "duration": 0.0, + "text": "like one thing and you're like what what what<01:07:33.200> is<01:07:33.359> that?<01:07:33.680> Same<01:07:33.920> thing<01:07:34.079> with<01:07:34.160> the<01:07:34.319> link" + }, + { + "start": 4054.549, + "duration": 0.0, + "text": "what is that? Same thing with the link" + }, + { + "start": 4054.559, + "duration": 0.0, + "text": "what is that? Same thing with the link list.<01:07:34.799> you<01:07:35.119> like<01:07:35.440> put<01:07:35.680> in<01:07:35.839> the<01:07:36.000> first<01:07:36.319> the<01:07:36.559> head" + }, + { + "start": 4056.71, + "duration": 0.0, + "text": "list. you like put in the first the head" + }, + { + "start": 4056.72, + "duration": 0.0, + "text": "list. you like put in the first the head of<01:07:36.799> the<01:07:36.960> link<01:07:37.200> list,<01:07:37.839> you<01:07:38.000> expand<01:07:38.319> it<01:07:38.720> and<01:07:38.960> then" + }, + { + "start": 4059.029, + "duration": 0.0, + "text": "of the link list, you expand it and then" + }, + { + "start": 4059.039, + "duration": 0.0, + "text": "of the link list, you expand it and then you<01:07:39.200> can<01:07:39.280> actually<01:07:39.599> recursively<01:07:40.240> expand<01:07:40.480> it." + }, + { + "start": 4060.789, + "duration": 0.0, + "text": "you can actually recursively expand it." + }, + { + "start": 4060.799, + "duration": 0.0, + "text": "you can actually recursively expand it. But<01:07:40.960> like<01:07:41.200> in<01:07:41.440> your<01:07:41.680> head<01:07:41.920> a<01:07:42.160> list<01:07:42.400> is<01:07:42.640> flat<01:07:43.280> and" + }, + { + "start": 4063.43, + "duration": 0.0, + "text": "But like in your head a list is flat and" + }, + { + "start": 4063.44, + "duration": 0.0, + "text": "But like in your head a list is flat and then<01:07:43.760> everyone's<01:07:44.559> everyone's<01:07:45.039> like<01:07:45.280> who's" + }, + { + "start": 4065.51, + "duration": 0.0, + "text": "then everyone's everyone's like who's" + }, + { + "start": 4065.52, + "duration": 0.0, + "text": "then everyone's everyone's like who's used<01:07:45.760> debuggers<01:07:46.480> knows<01:07:46.799> like<01:07:46.960> to<01:07:47.119> visualize<01:07:47.359> a" + }, + { + "start": 4067.51, + "duration": 0.0, + "text": "used debuggers knows like to visualize a" + }, + { + "start": 4067.52, + "duration": 0.0, + "text": "used debuggers knows like to visualize a linked<01:07:47.760> list<01:07:47.920> you've<01:07:48.160> got<01:07:48.240> to<01:07:48.319> like<01:07:48.640> expand<01:07:48.960> in" + }, + { + "start": 4069.27, + "duration": 0.0, + "text": "linked list you've got to like expand in" + }, + { + "start": 4069.28, + "duration": 0.0, + "text": "linked list you've got to like expand in and<01:07:49.359> expand<01:07:49.599> in<01:07:49.839> and<01:07:50.000> expand<01:07:50.240> in<01:07:50.799> like<01:07:51.839> what<01:07:52.000> am" + }, + { + "start": 4072.15, + "duration": 0.0, + "text": "and expand in and expand in like what am" + }, + { + "start": 4072.16, + "duration": 0.0, + "text": "and expand in and expand in like what am I<01:07:52.319> even<01:07:52.480> looking<01:07:52.640> at<01:07:52.880> at<01:07:53.039> some<01:07:53.200> point,<01:07:53.440> right?" + }, + { + "start": 4073.67, + "duration": 0.0, + "text": "I even looking at at some point, right?" + }, + { + "start": 4073.68, + "duration": 0.0, + "text": "I even looking at at some point, right? It<01:07:53.839> gets<01:07:54.240> really<01:07:54.559> ridiculous." + }, + { + "start": 4077.19, + "duration": 0.0, + "text": "It gets really ridiculous." + }, + { + "start": 4077.2, + "duration": 0.0, + "text": "It gets really ridiculous. Um" + }, + { + "start": 4081.28, + "duration": 0.0, + "text": "so<01:08:01.599> taking<01:08:01.839> a<01:08:02.000> look<01:08:02.079> at<01:08:02.160> the<01:08:02.319> visualization" + }, + { + "start": 4082.87, + "duration": 0.0, + "text": "so taking a look at the visualization" + }, + { + "start": 4082.88, + "duration": 0.0, + "text": "so taking a look at the visualization pipeline<01:08:03.680> we<01:08:03.920> know<01:08:04.000> that<01:08:04.160> our<01:08:04.400> lenses<01:08:05.039> those" + }, + { + "start": 4085.27, + "duration": 0.0, + "text": "pipeline we know that our lenses those" + }, + { + "start": 4085.28, + "duration": 0.0, + "text": "pipeline we know that our lenses those lens<01:08:05.680> type<01:08:05.920> operator<01:08:06.400> things<01:08:07.440> they<01:08:07.839> override" + }, + { + "start": 4088.47, + "duration": 0.0, + "text": "lens type operator things they override" + }, + { + "start": 4088.48, + "duration": 0.0, + "text": "lens type operator things they override this<01:08:08.720> part<01:08:09.119> like<01:08:09.280> the<01:08:09.440> the<01:08:09.839> arrow<01:08:10.240> here<01:08:10.480> which" + }, + { + "start": 4090.71, + "duration": 0.0, + "text": "this part like the the arrow here which" + }, + { + "start": 4090.72, + "duration": 0.0, + "text": "this part like the the arrow here which is<01:08:10.880> like<01:08:11.839> turns<01:08:12.160> a<01:08:12.319> list<01:08:12.400> of<01:08:12.559> evaluations<01:08:13.119> into" + }, + { + "start": 4093.349, + "duration": 0.0, + "text": "is like turns a list of evaluations into" + }, + { + "start": 4093.359, + "duration": 0.0, + "text": "is like turns a list of evaluations into a<01:08:13.520> list<01:08:13.680> of<01:08:13.760> UIs<01:08:14.240> right<01:08:14.400> because<01:08:14.559> we<01:08:14.640> can<01:08:14.720> take" + }, + { + "start": 4094.87, + "duration": 0.0, + "text": "a list of UIs right because we can take" + }, + { + "start": 4094.88, + "duration": 0.0, + "text": "a list of UIs right because we can take an<01:08:14.960> eval<01:08:15.359> produce<01:08:15.599> a<01:08:15.680> UI<01:08:16.000> which<01:08:16.159> means<01:08:16.640> got<01:08:16.799> a" + }, + { + "start": 4096.95, + "duration": 0.0, + "text": "an eval produce a UI which means got a" + }, + { + "start": 4096.96, + "duration": 0.0, + "text": "an eval produce a UI which means got a list<01:08:17.040> of<01:08:17.199> evaluations<01:08:17.920> we<01:08:18.080> can<01:08:18.159> produce<01:08:18.400> a" + }, + { + "start": 4098.55, + "duration": 0.0, + "text": "list of evaluations we can produce a" + }, + { + "start": 4098.56, + "duration": 0.0, + "text": "list of evaluations we can produce a list<01:08:18.640> of<01:08:18.719> UIs<01:08:19.359> we<01:08:19.520> can<01:08:19.679> override<01:08:20.080> that<01:08:20.400> using" + }, + { + "start": 4100.63, + "duration": 0.0, + "text": "list of UIs we can override that using" + }, + { + "start": 4100.64, + "duration": 0.0, + "text": "list of UIs we can override that using that<01:08:20.880> type<01:08:21.120> info" + }, + { + "start": 4103.99, + "duration": 0.0, + "text": "that type info" + }, + { + "start": 4104.0, + "duration": 0.0, + "text": "that type info same<01:08:24.319> pattern<01:08:25.040> we<01:08:25.279> can<01:08:25.440> also<01:08:26.080> override<01:08:26.640> this" + }, + { + "start": 4106.95, + "duration": 0.0, + "text": "same pattern we can also override this" + }, + { + "start": 4106.96, + "duration": 0.0, + "text": "same pattern we can also override this right<01:08:27.199> we<01:08:27.359> can<01:08:27.440> just<01:08:27.600> say<01:08:27.759> like<01:08:28.080> hey<01:08:28.319> we're" + }, + { + "start": 4108.47, + "duration": 0.0, + "text": "right we can just say like hey we're" + }, + { + "start": 4108.48, + "duration": 0.0, + "text": "right we can just say like hey we're going<01:08:28.560> to<01:08:28.640> change<01:08:28.799> the<01:08:28.960> way<01:08:29.040> we're<01:08:29.199> going<01:08:29.279> to" + }, + { + "start": 4109.349, + "duration": 0.0, + "text": "going to change the way we're going to" + }, + { + "start": 4109.359, + "duration": 0.0, + "text": "going to change the way we're going to build<01:08:29.440> this<01:08:29.600> block<01:08:29.920> tree<01:08:30.480> we're<01:08:30.640> actually" + }, + { + "start": 4110.87, + "duration": 0.0, + "text": "build this block tree we're actually" + }, + { + "start": 4110.88, + "duration": 0.0, + "text": "build this block tree we're actually going<01:08:30.960> to<01:08:31.040> say<01:08:31.199> like<01:08:31.359> the<01:08:31.520> type<01:08:31.759> info<01:08:32.080> can<01:08:32.319> now" + }, + { + "start": 4112.63, + "duration": 0.0, + "text": "going to say like the type info can now" + }, + { + "start": 4112.64, + "duration": 0.0, + "text": "going to say like the type info can now have<01:08:32.799> some<01:08:33.120> say<01:08:33.759> in<01:08:34.000> that<01:08:34.239> stage<01:08:34.560> as<01:08:34.799> well" + }, + { + "start": 4117.749, + "duration": 0.0, + "text": "have some say in that stage as well" + }, + { + "start": 4117.759, + "duration": 0.0, + "text": "have some say in that stage as well um<01:08:38.799> so<01:08:38.960> instead<01:08:39.199> of<01:08:39.359> visualizing<01:08:39.839> these<01:08:40.159> two" + }, + { + "start": 4120.47, + "duration": 0.0, + "text": "um so instead of visualizing these two" + }, + { + "start": 4120.48, + "duration": 0.0, + "text": "um so instead of visualizing these two particular<01:08:40.960> structures<01:08:41.359> like<01:08:41.600> this<01:08:42.799> we<01:08:43.040> can" + }, + { + "start": 4123.11, + "duration": 0.0, + "text": "particular structures like this we can" + }, + { + "start": 4123.12, + "duration": 0.0, + "text": "particular structures like this we can now<01:08:43.359> actually<01:08:43.600> introduce<01:08:43.920> some<01:08:44.080> lens<01:08:44.400> types" + }, + { + "start": 4124.87, + "duration": 0.0, + "text": "now actually introduce some lens types" + }, + { + "start": 4124.88, + "duration": 0.0, + "text": "now actually introduce some lens types which<01:08:45.120> have<01:08:45.520> custom<01:08:46.000> rules<01:08:46.400> for<01:08:46.640> buil<01:08:46.880> for<01:08:47.040> how" + }, + { + "start": 4127.189, + "duration": 0.0, + "text": "which have custom rules for buil for how" + }, + { + "start": 4127.199, + "duration": 0.0, + "text": "which have custom rules for buil for how to<01:08:47.359> build<01:08:48.080> uh<01:08:48.159> the<01:08:48.319> block<01:08:48.560> tree<01:08:48.799> here<01:08:49.120> so<01:08:49.359> for" + }, + { + "start": 4129.51, + "duration": 0.0, + "text": "to build uh the block tree here so for" + }, + { + "start": 4129.52, + "duration": 0.0, + "text": "to build uh the block tree here so for the<01:08:49.679> left<01:08:50.319> you<01:08:50.400> know<01:08:50.560> let's<01:08:50.719> say<01:08:50.880> I<01:08:51.040> use<01:08:51.199> the" + }, + { + "start": 4131.349, + "duration": 0.0, + "text": "the left you know let's say I use the" + }, + { + "start": 4131.359, + "duration": 0.0, + "text": "the left you know let's say I use the array<01:08:51.679> slice<01:08:51.920> and<01:08:52.080> I'm<01:08:52.239> like<01:08:52.560> you<01:08:52.719> got<01:08:52.880> an" + }, + { + "start": 4133.11, + "duration": 0.0, + "text": "array slice and I'm like you got an" + }, + { + "start": 4133.12, + "duration": 0.0, + "text": "array slice and I'm like you got an array<01:08:53.839> here's<01:08:54.080> the<01:08:54.239> pointer<01:08:54.640> here's<01:08:54.799> the" + }, + { + "start": 4134.95, + "duration": 0.0, + "text": "array here's the pointer here's the" + }, + { + "start": 4134.96, + "duration": 0.0, + "text": "array here's the pointer here's the count<01:08:56.000> give<01:08:56.159> Give<01:08:56.239> me<01:08:56.400> the<01:08:56.560> block<01:08:56.719> of<01:08:56.799> all<01:08:56.960> the" + }, + { + "start": 4137.11, + "duration": 0.0, + "text": "count give Give me the block of all the" + }, + { + "start": 4137.12, + "duration": 0.0, + "text": "count give Give me the block of all the elements.<01:08:57.839> On<01:08:58.080> the<01:08:58.239> right,<01:08:58.880> I've<01:08:59.120> got<01:08:59.359> here's" + }, + { + "start": 4139.59, + "duration": 0.0, + "text": "elements. On the right, I've got here's" + }, + { + "start": 4139.6, + "duration": 0.0, + "text": "elements. On the right, I've got here's the<01:08:59.679> head<01:08:59.920> pointer<01:09:00.239> and<01:09:00.400> here's<01:09:00.640> the<01:09:00.799> name<01:09:00.880> of" + }, + { + "start": 4140.95, + "duration": 0.0, + "text": "the head pointer and here's the name of" + }, + { + "start": 4140.96, + "duration": 0.0, + "text": "the head pointer and here's the name of the<01:09:01.120> member<01:09:01.359> I<01:09:01.520> want<01:09:01.600> you<01:09:01.759> to<01:09:01.839> follow<01:09:02.159> to<01:09:02.319> find" + }, + { + "start": 4142.47, + "duration": 0.0, + "text": "the member I want you to follow to find" + }, + { + "start": 4142.48, + "duration": 0.0, + "text": "the member I want you to follow to find all<01:09:02.640> the<01:09:03.199> list<01:09:03.520> elements.<01:09:04.319> Give<01:09:04.480> me<01:09:04.640> the<01:09:04.719> list" + }, + { + "start": 4144.87, + "duration": 0.0, + "text": "all the list elements. Give me the list" + }, + { + "start": 4144.88, + "duration": 0.0, + "text": "all the list elements. Give me the list of<01:09:05.040> elements.<01:09:05.440> And<01:09:05.520> we<01:09:05.679> can<01:09:05.759> just<01:09:05.920> do<01:09:06.000> that" + }, + { + "start": 4146.229, + "duration": 0.0, + "text": "of elements. And we can just do that" + }, + { + "start": 4146.239, + "duration": 0.0, + "text": "of elements. And we can just do that with<01:09:06.400> the<01:09:06.560> type<01:09:06.799> info." + }, + { + "start": 4150.64, + "duration": 0.0, + "text": "No,<01:09:11.839> I'm<01:09:12.159> so<01:09:12.319> bad<01:09:12.560> with<01:09:12.719> this.<01:09:14.159> Okay,<01:09:15.279> so<01:09:16.319> I've" + }, + { + "start": 4156.55, + "duration": 0.0, + "text": "No, I'm so bad with this. Okay, so I've" + }, + { + "start": 4156.56, + "duration": 0.0, + "text": "No, I'm so bad with this. Okay, so I've walked<01:09:16.880> through<01:09:17.679> uh<01:09:18.080> this<01:09:18.319> whole" + }, + { + "start": 4158.95, + "duration": 0.0, + "text": "walked through uh this whole" + }, + { + "start": 4158.96, + "duration": 0.0, + "text": "walked through uh this whole visualization<01:09:19.600> pipeline.<01:09:20.400> Um,<01:09:21.679> it<01:09:21.920> allows<01:09:22.159> us" + }, + { + "start": 4162.55, + "duration": 0.0, + "text": "visualization pipeline. Um, it allows us" + }, + { + "start": 4162.56, + "duration": 0.0, + "text": "visualization pipeline. Um, it allows us to<01:09:23.040> just<01:09:23.279> visualize<01:09:23.839> in<01:09:24.080> the<01:09:24.239> ways<01:09:24.400> that<01:09:24.560> I've" + }, + { + "start": 4164.87, + "duration": 0.0, + "text": "to just visualize in the ways that I've" + }, + { + "start": 4164.88, + "duration": 0.0, + "text": "to just visualize in the ways that I've showed<01:09:26.000> uh<01:09:26.400> anything<01:09:26.640> the<01:09:26.880> debugger<01:09:27.279> can" + }, + { + "start": 4167.43, + "duration": 0.0, + "text": "showed uh anything the debugger can" + }, + { + "start": 4167.44, + "duration": 0.0, + "text": "showed uh anything the debugger can evaluate.<01:09:28.159> And<01:09:28.319> so,<01:09:28.560> so<01:09:28.880> far,<01:09:29.520> anything<01:09:29.839> the" + }, + { + "start": 4170.07, + "duration": 0.0, + "text": "evaluate. And so, so far, anything the" + }, + { + "start": 4170.08, + "duration": 0.0, + "text": "evaluate. And so, so far, anything the debugger<01:09:30.400> can<01:09:30.560> evaluate<01:09:31.279> has<01:09:31.520> just<01:09:31.679> included" + }, + { + "start": 4172.149, + "duration": 0.0, + "text": "debugger can evaluate has just included" + }, + { + "start": 4172.159, + "duration": 0.0, + "text": "debugger can evaluate has just included like<01:09:32.719> expressions<01:09:33.199> relating<01:09:33.520> to<01:09:33.679> your" + }, + { + "start": 4173.829, + "duration": 0.0, + "text": "like expressions relating to your" + }, + { + "start": 4173.839, + "duration": 0.0, + "text": "like expressions relating to your program<01:09:34.560> like<01:09:34.880> in<01:09:35.359> like<01:09:35.520> a<01:09:35.679> debuggy<01:09:36.239> address" + }, + { + "start": 4176.55, + "duration": 0.0, + "text": "program like in like a debuggy address" + }, + { + "start": 4176.56, + "duration": 0.0, + "text": "program like in like a debuggy address space<01:09:37.600> or<01:09:38.000> you<01:09:38.159> know<01:09:38.640> something<01:09:38.880> in<01:09:39.120> a<01:09:39.199> thread" + }, + { + "start": 4179.43, + "duration": 0.0, + "text": "space or you know something in a thread" + }, + { + "start": 4179.44, + "duration": 0.0, + "text": "space or you know something in a thread register<01:09:39.759> inside<01:09:40.080> of<01:09:40.159> a<01:09:40.239> debuggy<01:09:41.040> so<01:09:41.279> on." + }, + { + "start": 4183.11, + "duration": 0.0, + "text": "register inside of a debuggy so on." + }, + { + "start": 4183.12, + "duration": 0.0, + "text": "register inside of a debuggy so on. But<01:09:43.600> let's<01:09:43.920> consider<01:09:44.239> all<01:09:44.400> of<01:09:44.560> the<01:09:44.719> scenarios" + }, + { + "start": 4185.669, + "duration": 0.0, + "text": "But let's consider all of the scenarios" + }, + { + "start": 4185.679, + "duration": 0.0, + "text": "But let's consider all of the scenarios where<01:09:46.080> we<01:09:46.319> have<01:09:46.480> some<01:09:46.719> data<01:09:47.279> from<01:09:47.520> anywhere" + }, + { + "start": 4188.07, + "duration": 0.0, + "text": "where we have some data from anywhere" + }, + { + "start": 4188.08, + "duration": 0.0, + "text": "where we have some data from anywhere that<01:09:48.319> we're<01:09:48.560> looking<01:09:48.719> at<01:09:48.880> and<01:09:49.040> we<01:09:49.199> want<01:09:49.359> to" + }, + { + "start": 4189.829, + "duration": 0.0, + "text": "that we're looking at and we want to" + }, + { + "start": 4189.839, + "duration": 0.0, + "text": "that we're looking at and we want to understand" + }, + { + "start": 4191.91, + "duration": 0.0, + "text": "understand" + }, + { + "start": 4191.92, + "duration": 0.0, + "text": "understand you<01:09:52.159> know<01:09:53.120> a<01:09:53.359> significant<01:09:53.839> subset<01:09:54.320> is<01:09:54.560> what<01:09:54.719> I" + }, + { + "start": 4194.79, + "duration": 0.0, + "text": "you know a significant subset is what I" + }, + { + "start": 4194.8, + "duration": 0.0, + "text": "you know a significant subset is what I just<01:09:54.960> said<01:09:55.120> it's<01:09:55.360> like<01:09:55.440> somewhere<01:09:55.679> in<01:09:55.840> the" + }, + { + "start": 4195.91, + "duration": 0.0, + "text": "just said it's like somewhere in the" + }, + { + "start": 4195.92, + "duration": 0.0, + "text": "just said it's like somewhere in the debuggy<01:09:56.400> debugging<01:09:56.880> memory<01:09:57.280> you<01:09:57.440> know" + }, + { + "start": 4197.669, + "duration": 0.0, + "text": "debuggy debugging memory you know" + }, + { + "start": 4197.679, + "duration": 0.0, + "text": "debuggy debugging memory you know debugging<01:09:58.159> registers<01:09:58.640> whatever<01:09:59.760> um<01:10:01.040> like<01:10:01.199> I" + }, + { + "start": 4201.35, + "duration": 0.0, + "text": "debugging registers whatever um like I" + }, + { + "start": 4201.36, + "duration": 0.0, + "text": "debugging registers whatever um like I said<01:10:01.920> walked<01:10:02.320> through<01:10:02.640> a<01:10:02.880> pipeline<01:10:03.280> for" + }, + { + "start": 4203.51, + "duration": 0.0, + "text": "said walked through a pipeline for" + }, + { + "start": 4203.52, + "duration": 0.0, + "text": "said walked through a pipeline for visualizing<01:10:04.080> stuff<01:10:04.239> from<01:10:04.400> that<01:10:04.880> but<01:10:05.120> let's" + }, + { + "start": 4205.35, + "duration": 0.0, + "text": "visualizing stuff from that but let's" + }, + { + "start": 4205.36, + "duration": 0.0, + "text": "visualizing stuff from that but let's appreciate<01:10:05.840> something<01:10:06.159> here<01:10:06.719> which<01:10:06.960> is<01:10:07.040> that" + }, + { + "start": 4207.43, + "duration": 0.0, + "text": "appreciate something here which is that" + }, + { + "start": 4207.44, + "duration": 0.0, + "text": "appreciate something here which is that this<01:10:07.920> is<01:10:08.080> a<01:10:08.320> subset<01:10:09.120> and<01:10:09.520> like<01:10:09.760> an<01:10:10.239> very<01:10:10.640> large" + }, + { + "start": 4210.95, + "duration": 0.0, + "text": "this is a subset and like an very large" + }, + { + "start": 4210.96, + "duration": 0.0, + "text": "this is a subset and like an very large number<01:10:11.199> of<01:10:11.360> cases<01:10:11.760> actually<01:10:12.400> it's<01:10:12.640> also<01:10:12.800> also" + }, + { + "start": 4213.51, + "duration": 0.0, + "text": "number of cases actually it's also also" + }, + { + "start": 4213.52, + "duration": 0.0, + "text": "number of cases actually it's also also common<01:10:13.760> to<01:10:13.920> look<01:10:14.000> at<01:10:14.239> memory<01:10:14.560> from<01:10:14.719> other" + }, + { + "start": 4214.95, + "duration": 0.0, + "text": "common to look at memory from other" + }, + { + "start": 4214.96, + "duration": 0.0, + "text": "common to look at memory from other sources<01:10:15.360> like<01:10:15.600> the<01:10:15.840> file<01:10:16.080> system,<01:10:16.880> right?<01:10:18.320> And" + }, + { + "start": 4218.87, + "duration": 0.0, + "text": "sources like the file system, right? And" + }, + { + "start": 4218.88, + "duration": 0.0, + "text": "sources like the file system, right? And turns<01:10:19.120> out<01:10:19.360> people<01:10:19.520> have<01:10:19.679> built<01:10:19.840> an<01:10:20.000> enormous" + }, + { + "start": 4220.39, + "duration": 0.0, + "text": "turns out people have built an enormous" + }, + { + "start": 4220.4, + "duration": 0.0, + "text": "turns out people have built an enormous number<01:10:20.560> of<01:10:20.719> tools<01:10:20.960> to<01:10:21.120> work<01:10:21.199> on<01:10:21.440> data<01:10:22.000> from<01:10:22.239> a" + }, + { + "start": 4222.39, + "duration": 0.0, + "text": "number of tools to work on data from a" + }, + { + "start": 4222.4, + "duration": 0.0, + "text": "number of tools to work on data from a file<01:10:22.640> system<01:10:23.600> like<01:10:24.239> IMEX" + }, + { + "start": 4225.75, + "duration": 0.0, + "text": "file system like IMEX" + }, + { + "start": 4225.76, + "duration": 0.0, + "text": "file system like IMEX looks<01:10:26.000> like<01:10:26.239> maybe<01:10:26.480> a<01:10:26.640> little<01:10:26.800> familiar.<01:10:27.679> Um" + }, + { + "start": 4229.51, + "duration": 0.0, + "text": "looks like maybe a little familiar. Um" + }, + { + "start": 4229.52, + "duration": 0.0, + "text": "looks like maybe a little familiar. Um 10x<01:10:30.640> views,<01:10:31.120> you<01:10:31.199> know,<01:10:31.360> source<01:10:31.679> code" + }, + { + "start": 4233.189, + "duration": 0.0, + "text": "10x views, you know, source code" + }, + { + "start": 4233.199, + "duration": 0.0, + "text": "10x views, you know, source code and<01:10:33.520> editing<01:10:33.920> source<01:10:34.239> code<01:10:34.719> obviously.<01:10:35.520> Um" + }, + { + "start": 4236.149, + "duration": 0.0, + "text": "and editing source code obviously. Um" + }, + { + "start": 4236.159, + "duration": 0.0, + "text": "and editing source code obviously. Um beyond<01:10:36.560> compare,<01:10:37.120> you<01:10:37.199> know,<01:10:37.360> take<01:10:37.600> two" + }, + { + "start": 4237.83, + "duration": 0.0, + "text": "beyond compare, you know, take two" + }, + { + "start": 4237.84, + "duration": 0.0, + "text": "beyond compare, you know, take two textual<01:10:38.239> buffers,<01:10:38.880> compare<01:10:39.120> them,<01:10:39.440> show<01:10:39.520> me" + }, + { + "start": 4239.669, + "duration": 0.0, + "text": "textual buffers, compare them, show me" + }, + { + "start": 4239.679, + "duration": 0.0, + "text": "textual buffers, compare them, show me how<01:10:39.840> they're<01:10:40.000> different." + }, + { + "start": 4242.149, + "duration": 0.0, + "text": "how they're different." + }, + { + "start": 4242.159, + "duration": 0.0, + "text": "how they're different. And<01:10:42.400> so<01:10:42.560> there's<01:10:42.880> sort<01:10:43.040> of<01:10:43.120> this<01:10:43.360> like" + }, + { + "start": 4244.95, + "duration": 0.0, + "text": "And so there's sort of this like" + }, + { + "start": 4244.96, + "duration": 0.0, + "text": "And so there's sort of this like unfortunate<01:10:45.520> problem<01:10:45.840> emerging,<01:10:46.320> right?" + }, + { + "start": 4246.47, + "duration": 0.0, + "text": "unfortunate problem emerging, right?" + }, + { + "start": 4246.48, + "duration": 0.0, + "text": "unfortunate problem emerging, right? We've<01:10:46.640> got<01:10:46.800> these<01:10:47.040> two<01:10:47.280> worlds<01:10:48.000> where<01:10:48.239> it's" + }, + { + "start": 4248.39, + "duration": 0.0, + "text": "We've got these two worlds where it's" + }, + { + "start": 4248.4, + "duration": 0.0, + "text": "We've got these two worlds where it's like<01:10:49.040> our<01:10:49.280> debug<01:10:49.920> world<01:10:50.239> where<01:10:50.560> you<01:10:50.719> know<01:10:50.800> we" + }, + { + "start": 4250.95, + "duration": 0.0, + "text": "like our debug world where you know we" + }, + { + "start": 4250.96, + "duration": 0.0, + "text": "like our debug world where you know we build<01:10:51.120> all<01:10:51.199> these<01:10:51.360> cool<01:10:51.520> debugger" + }, + { + "start": 4251.91, + "duration": 0.0, + "text": "build all these cool debugger" + }, + { + "start": 4251.92, + "duration": 0.0, + "text": "build all these cool debugger visualizers.<01:10:52.400> We've<01:10:52.480> got<01:10:52.560> a<01:10:52.640> hex<01:10:52.880> grid,<01:10:53.120> we've" + }, + { + "start": 4253.27, + "duration": 0.0, + "text": "visualizers. We've got a hex grid, we've" + }, + { + "start": 4253.28, + "duration": 0.0, + "text": "visualizers. We've got a hex grid, we've got<01:10:53.360> text,<01:10:53.600> we've<01:10:53.760> got<01:10:53.840> a<01:10:53.920> bit<01:10:54.159> map.<01:10:54.560> And<01:10:54.640> then" + }, + { + "start": 4254.79, + "duration": 0.0, + "text": "got text, we've got a bit map. And then" + }, + { + "start": 4254.8, + "duration": 0.0, + "text": "got text, we've got a bit map. And then it's<01:10:54.960> like<01:10:55.199> wait<01:10:55.679> on<01:10:55.920> the<01:10:56.080> file<01:10:56.400> world<01:10:56.640> I've" + }, + { + "start": 4256.87, + "duration": 0.0, + "text": "it's like wait on the file world I've" + }, + { + "start": 4256.88, + "duration": 0.0, + "text": "it's like wait on the file world I've also<01:10:57.040> got<01:10:57.120> a<01:10:57.280> hex<01:10:57.520> grid<01:10:57.760> and<01:10:58.080> which<01:10:58.320> is<01:10:58.560> would" + }, + { + "start": 4258.709, + "duration": 0.0, + "text": "also got a hex grid and which is would" + }, + { + "start": 4258.719, + "duration": 0.0, + "text": "also got a hex grid and which is would be<01:10:58.880> something<01:10:59.120> like<01:10:59.280> IMX.<01:11:00.000> I've<01:11:00.239> also<01:11:00.400> got<01:11:00.480> a" + }, + { + "start": 4260.63, + "duration": 0.0, + "text": "be something like IMX. I've also got a" + }, + { + "start": 4260.64, + "duration": 0.0, + "text": "be something like IMX. I've also got a text<01:11:00.880> viewer<01:11:01.360> editor<01:11:01.760> and<01:11:01.920> I've<01:11:02.159> also<01:11:02.320> got<01:11:02.400> a" + }, + { + "start": 4262.47, + "duration": 0.0, + "text": "text viewer editor and I've also got a" + }, + { + "start": 4262.48, + "duration": 0.0, + "text": "text viewer editor and I've also got a bit<01:11:02.719> map<01:11:02.880> viewer.<01:11:03.280> So<01:11:03.520> like<01:11:03.679> what's<01:11:03.920> what's" + }, + { + "start": 4265.669, + "duration": 0.0, + "text": "bit map viewer. So like what's what's" + }, + { + "start": 4265.679, + "duration": 0.0, + "text": "bit map viewer. So like what's what's kind<01:11:05.920> of<01:11:06.000> sucks,<01:11:06.400> right?<01:11:07.199> Um" + }, + { + "start": 4268.79, + "duration": 0.0, + "text": "kind of sucks, right? Um" + }, + { + "start": 4268.8, + "duration": 0.0, + "text": "kind of sucks, right? Um because<01:11:09.440> each<01:11:09.760> visualizer<01:11:10.320> is<01:11:10.400> sort<01:11:10.480> of<01:11:10.560> like" + }, + { + "start": 4270.79, + "duration": 0.0, + "text": "because each visualizer is sort of like" + }, + { + "start": 4270.8, + "duration": 0.0, + "text": "because each visualizer is sort of like coupled<01:11:11.199> to<01:11:11.360> like<01:11:11.600> where<01:11:11.840> the<01:11:12.000> data<01:11:12.159> is<01:11:12.320> coming" + }, + { + "start": 4272.55, + "duration": 0.0, + "text": "coupled to like where the data is coming" + }, + { + "start": 4272.56, + "duration": 0.0, + "text": "coupled to like where the data is coming from.<01:11:13.120> Like<01:11:13.440> these<01:11:13.760> only<01:11:14.000> apply<01:11:14.239> to<01:11:14.480> like" + }, + { + "start": 4274.63, + "duration": 0.0, + "text": "from. Like these only apply to like" + }, + { + "start": 4274.64, + "duration": 0.0, + "text": "from. Like these only apply to like reading<01:11:15.040> process<01:11:15.360> memory.<01:11:16.080> These<01:11:16.400> only<01:11:16.560> apply" + }, + { + "start": 4276.79, + "duration": 0.0, + "text": "reading process memory. These only apply" + }, + { + "start": 4276.8, + "duration": 0.0, + "text": "reading process memory. These only apply to<01:11:17.040> files." + }, + { + "start": 4280.32, + "duration": 0.0, + "text": "And<01:11:20.560> because<01:11:21.360> like" + }, + { + "start": 4283.189, + "duration": 0.0, + "text": "And because like" + }, + { + "start": 4283.199, + "duration": 0.0, + "text": "And because like the<01:11:23.520> one<01:11:23.679> on<01:11:23.840> the<01:11:24.000> right<01:11:24.159> is<01:11:24.400> more<01:11:24.640> common," + }, + { + "start": 4285.11, + "duration": 0.0, + "text": "the one on the right is more common," + }, + { + "start": 4285.12, + "duration": 0.0, + "text": "the one on the right is more common, right?<01:11:25.440> Like<01:11:25.600> it's<01:11:26.000> everyone's<01:11:26.480> built<01:11:26.719> tools" + }, + { + "start": 4286.95, + "duration": 0.0, + "text": "right? Like it's everyone's built tools" + }, + { + "start": 4286.96, + "duration": 0.0, + "text": "right? Like it's everyone's built tools for<01:11:27.199> this<01:11:27.360> side<01:11:28.159> and<01:11:28.640> you<01:11:28.880> know<01:11:30.159> comparatively" + }, + { + "start": 4290.709, + "duration": 0.0, + "text": "for this side and you know comparatively" + }, + { + "start": 4290.719, + "duration": 0.0, + "text": "for this side and you know comparatively few<01:11:30.960> people<01:11:31.040> have<01:11:31.280> built<01:11:31.440> tools<01:11:31.679> for<01:11:31.760> the<01:11:31.920> left" + }, + { + "start": 4292.149, + "duration": 0.0, + "text": "few people have built tools for the left" + }, + { + "start": 4292.159, + "duration": 0.0, + "text": "few people have built tools for the left side.<01:11:33.040> It's<01:11:33.280> sort<01:11:33.440> of<01:11:33.600> like<01:11:34.239> it's<01:11:34.480> just<01:11:34.640> more" + }, + { + "start": 4294.87, + "duration": 0.0, + "text": "side. It's sort of like it's just more" + }, + { + "start": 4294.88, + "duration": 0.0, + "text": "side. It's sort of like it's just more worth<01:11:35.040> it<01:11:35.120> to<01:11:35.280> build<01:11:35.440> tools<01:11:35.679> for<01:11:35.840> the<01:11:36.000> right" + }, + { + "start": 4296.149, + "duration": 0.0, + "text": "worth it to build tools for the right" + }, + { + "start": 4296.159, + "duration": 0.0, + "text": "worth it to build tools for the right side.<01:11:36.800> And<01:11:37.040> so<01:11:37.280> like<01:11:37.440> the<01:11:37.600> debuggy" + }, + { + "start": 4298.149, + "duration": 0.0, + "text": "side. And so like the debuggy" + }, + { + "start": 4298.159, + "duration": 0.0, + "text": "side. And so like the debuggy visualization<01:11:38.800> stuff<01:11:39.040> kind<01:11:39.280> of<01:11:39.360> suffers<01:11:39.920> a" + }, + { + "start": 4300.229, + "duration": 0.0, + "text": "visualization stuff kind of suffers a" + }, + { + "start": 4300.239, + "duration": 0.0, + "text": "visualization stuff kind of suffers a lot.<01:11:40.800> Um<01:11:41.040> it's<01:11:41.280> just<01:11:41.600> more<01:11:41.840> worthwhile<01:11:42.239> to<01:11:42.400> do" + }, + { + "start": 4302.47, + "duration": 0.0, + "text": "lot. Um it's just more worthwhile to do" + }, + { + "start": 4302.48, + "duration": 0.0, + "text": "lot. Um it's just more worthwhile to do an<01:11:42.640> investment<01:11:42.960> on<01:11:43.120> the<01:11:43.199> right<01:11:43.360> side<01:11:43.520> than<01:11:43.679> the" + }, + { + "start": 4303.83, + "duration": 0.0, + "text": "an investment on the right side than the" + }, + { + "start": 4303.84, + "duration": 0.0, + "text": "an investment on the right side than the left<01:11:44.080> side." + }, + { + "start": 4305.75, + "duration": 0.0, + "text": "left side." + }, + { + "start": 4305.76, + "duration": 0.0, + "text": "left side. Um<01:11:46.400> just<01:11:46.640> get<01:11:46.800> way<01:11:46.960> more<01:11:47.120> bang<01:11:47.360> for<01:11:47.520> buck<01:11:47.760> that" + }, + { + "start": 4307.91, + "duration": 0.0, + "text": "Um just get way more bang for buck that" + }, + { + "start": 4307.92, + "duration": 0.0, + "text": "Um just get way more bang for buck that way.<01:11:48.320> What's<01:11:48.560> worse<01:11:48.880> is<01:11:49.120> if<01:11:49.360> we<01:11:49.520> consider<01:11:49.840> the" + }, + { + "start": 4309.99, + "duration": 0.0, + "text": "way. What's worse is if we consider the" + }, + { + "start": 4310.0, + "duration": 0.0, + "text": "way. What's worse is if we consider the needs<01:11:50.159> of<01:11:50.320> an<01:11:50.480> actual<01:11:50.719> debugger<01:11:51.120> UI,<01:11:51.679> we<01:11:51.840> have" + }, + { + "start": 4311.91, + "duration": 0.0, + "text": "needs of an actual debugger UI, we have" + }, + { + "start": 4311.92, + "duration": 0.0, + "text": "needs of an actual debugger UI, we have to<01:11:52.080> do<01:11:52.159> the<01:11:52.320> file<01:11:52.560> system<01:11:52.800> part<01:11:53.040> two.<01:11:53.520> Like<01:11:53.679> we" + }, + { + "start": 4313.91, + "duration": 0.0, + "text": "to do the file system part two. Like we" + }, + { + "start": 4313.92, + "duration": 0.0, + "text": "to do the file system part two. Like we have<01:11:54.000> to<01:11:54.159> look<01:11:54.239> at<01:11:54.400> a<01:11:54.560> source<01:11:54.800> file<01:11:55.040> on<01:11:55.199> disk." + }, + { + "start": 4315.75, + "duration": 0.0, + "text": "have to look at a source file on disk." + }, + { + "start": 4315.76, + "duration": 0.0, + "text": "have to look at a source file on disk. We<01:11:55.920> have<01:11:56.000> to<01:11:56.080> pull<01:11:56.239> it<01:11:56.320> down<01:11:56.480> as<01:11:56.640> text.<01:11:56.960> We<01:11:57.040> have" + }, + { + "start": 4317.11, + "duration": 0.0, + "text": "We have to pull it down as text. We have" + }, + { + "start": 4317.12, + "duration": 0.0, + "text": "We have to pull it down as text. We have to<01:11:57.199> visualize<01:11:57.520> it<01:11:57.679> as<01:11:57.920> text." + }, + { + "start": 4320.07, + "duration": 0.0, + "text": "to visualize it as text." + }, + { + "start": 4320.08, + "duration": 0.0, + "text": "to visualize it as text. So<01:12:00.239> for<01:12:00.480> me<01:12:00.719> like<01:12:00.880> this<01:12:01.040> was<01:12:01.199> just<01:12:01.360> like<01:12:01.600> too" + }, + { + "start": 4321.83, + "duration": 0.0, + "text": "So for me like this was just like too" + }, + { + "start": 4321.84, + "duration": 0.0, + "text": "So for me like this was just like too much.<01:12:02.080> I'm<01:12:02.400> like<01:12:02.960> when<01:12:03.199> I<01:12:03.280> first<01:12:03.920> built<01:12:04.159> the" + }, + { + "start": 4324.31, + "duration": 0.0, + "text": "much. I'm like when I first built the" + }, + { + "start": 4324.32, + "duration": 0.0, + "text": "much. I'm like when I first built the visualizer<01:12:04.800> system<01:12:04.960> in<01:12:05.120> the<01:12:05.199> RAD<01:12:05.440> debugger,<01:12:06.159> I" + }, + { + "start": 4326.39, + "duration": 0.0, + "text": "visualizer system in the RAD debugger, I" + }, + { + "start": 4326.4, + "duration": 0.0, + "text": "visualizer system in the RAD debugger, I like<01:12:06.800> was<01:12:06.960> starting<01:12:07.280> to<01:12:07.520> have<01:12:07.920> like<01:12:08.320> here's" + }, + { + "start": 4328.63, + "duration": 0.0, + "text": "like was starting to have like here's" + }, + { + "start": 4328.64, + "duration": 0.0, + "text": "like was starting to have like here's how<01:12:08.800> you<01:12:09.040> like<01:12:09.280> here's<01:12:09.440> the<01:12:09.679> source<01:12:10.000> viewer" + }, + { + "start": 4330.63, + "duration": 0.0, + "text": "how you like here's the source viewer" + }, + { + "start": 4330.64, + "duration": 0.0, + "text": "how you like here's the source viewer and<01:12:10.880> here's<01:12:11.120> the<01:12:11.280> debuggy<01:12:11.920> process<01:12:12.960> memory" + }, + { + "start": 4333.43, + "duration": 0.0, + "text": "and here's the debuggy process memory" + }, + { + "start": 4333.44, + "duration": 0.0, + "text": "and here's the debuggy process memory text<01:12:13.760> viewer<01:12:14.400> and<01:12:14.640> they're<01:12:14.880> bifurcated<01:12:15.520> in" + }, + { + "start": 4335.669, + "duration": 0.0, + "text": "text viewer and they're bifurcated in" + }, + { + "start": 4335.679, + "duration": 0.0, + "text": "text viewer and they're bifurcated in this<01:12:15.840> uncomfortable<01:12:16.480> way<01:12:17.120> and<01:12:17.280> I<01:12:17.520> was<01:12:17.600> like" + }, + { + "start": 4337.83, + "duration": 0.0, + "text": "this uncomfortable way and I was like" + }, + { + "start": 4337.84, + "duration": 0.0, + "text": "this uncomfortable way and I was like there's<01:12:18.080> too<01:12:18.320> much<01:12:18.640> like<01:12:18.880> these<01:12:19.120> things" + }, + { + "start": 4339.35, + "duration": 0.0, + "text": "there's too much like these things" + }, + { + "start": 4339.36, + "duration": 0.0, + "text": "there's too much like these things should<01:12:19.520> be<01:12:19.600> the<01:12:19.760> same.<01:12:19.920> Like<01:12:20.080> I<01:12:20.239> had<01:12:20.400> a<01:12:20.560> feeling" + }, + { + "start": 4340.79, + "duration": 0.0, + "text": "should be the same. Like I had a feeling" + }, + { + "start": 4340.8, + "duration": 0.0, + "text": "should be the same. Like I had a feeling that<01:12:20.960> these<01:12:21.199> should<01:12:21.440> collapse." + }, + { + "start": 4343.51, + "duration": 0.0, + "text": "that these should collapse." + }, + { + "start": 4343.52, + "duration": 0.0, + "text": "that these should collapse. Um<01:12:24.719> why<01:12:24.880> do<01:12:25.040> I<01:12:25.120> feel<01:12:25.280> that<01:12:25.440> way?<01:12:25.679> Because<01:12:25.840> past" + }, + { + "start": 4346.149, + "duration": 0.0, + "text": "Um why do I feel that way? Because past" + }, + { + "start": 4346.159, + "duration": 0.0, + "text": "Um why do I feel that way? Because past the<01:12:26.400> point<01:12:26.560> of<01:12:26.719> actually<01:12:27.040> reading<01:12:27.360> the<01:12:27.520> data" + }, + { + "start": 4347.91, + "duration": 0.0, + "text": "the point of actually reading the data" + }, + { + "start": 4347.92, + "duration": 0.0, + "text": "the point of actually reading the data it's<01:12:28.159> like<01:12:28.239> the<01:12:28.480> same<01:12:28.560> thing,<01:12:28.800> right?<01:12:29.120> Same" + }, + { + "start": 4349.35, + "duration": 0.0, + "text": "it's like the same thing, right? Same" + }, + { + "start": 4349.36, + "duration": 0.0, + "text": "it's like the same thing, right? Same problem." + }, + { + "start": 4353.04, + "duration": 0.0, + "text": "Um<01:12:33.840> but<01:12:34.480> remember<01:12:34.800> I<01:12:35.040> said" + }, + { + "start": 4356.79, + "duration": 0.0, + "text": "Um but remember I said" + }, + { + "start": 4356.8, + "duration": 0.0, + "text": "Um but remember I said uh<01:12:37.040> our<01:12:37.199> visualizers<01:12:37.760> in<01:12:37.920> the<01:12:38.000> debugger<01:12:38.560> can" + }, + { + "start": 4358.79, + "duration": 0.0, + "text": "uh our visualizers in the debugger can" + }, + { + "start": 4358.8, + "duration": 0.0, + "text": "uh our visualizers in the debugger can apply<01:12:38.960> to<01:12:39.120> anything<01:12:39.360> the<01:12:39.520> debugger<01:12:39.920> can<01:12:40.480> uh" + }, + { + "start": 4360.709, + "duration": 0.0, + "text": "apply to anything the debugger can uh" + }, + { + "start": 4360.719, + "duration": 0.0, + "text": "apply to anything the debugger can uh can<01:12:41.199> evaluate.<01:12:42.640> So<01:12:42.960> what<01:12:43.199> can<01:12:43.600> the<01:12:43.840> debugger" + }, + { + "start": 4364.149, + "duration": 0.0, + "text": "can evaluate. So what can the debugger" + }, + { + "start": 4364.159, + "duration": 0.0, + "text": "can evaluate. So what can the debugger evaluate?" + }, + { + "start": 4366.63, + "duration": 0.0, + "text": "evaluate?" + }, + { + "start": 4366.64, + "duration": 0.0, + "text": "evaluate? So<01:12:47.440> so<01:12:47.679> far<01:12:47.920> a<01:12:48.159> debugger<01:12:48.480> evaluation<01:12:48.880> can" + }, + { + "start": 4369.03, + "duration": 0.0, + "text": "So so far a debugger evaluation can" + }, + { + "start": 4369.04, + "duration": 0.0, + "text": "So so far a debugger evaluation can produce<01:12:49.360> like<01:12:49.600> you<01:12:49.679> know<01:12:49.840> like<01:12:50.000> an<01:12:50.239> address<01:12:50.640> or" + }, + { + "start": 4371.03, + "duration": 0.0, + "text": "produce like you know like an address or" + }, + { + "start": 4371.04, + "duration": 0.0, + "text": "produce like you know like an address or a<01:12:51.360> register<01:12:51.760> or<01:12:52.000> a<01:12:52.239> value<01:12:53.679> um<01:12:54.159> or<01:12:54.320> register" + }, + { + "start": 4374.709, + "duration": 0.0, + "text": "a register or a value um or register" + }, + { + "start": 4374.719, + "duration": 0.0, + "text": "a register or a value um or register location<01:12:55.040> I<01:12:55.199> should<01:12:55.360> say<01:12:55.600> or<01:12:56.159> uh<01:12:56.239> or<01:12:56.880> like<01:12:57.120> a" + }, + { + "start": 4377.27, + "duration": 0.0, + "text": "location I should say or uh or like a" + }, + { + "start": 4377.28, + "duration": 0.0, + "text": "location I should say or uh or like a constant<01:12:57.679> value<01:12:57.920> of<01:12:58.159> something." + }, + { + "start": 4380.31, + "duration": 0.0, + "text": "constant value of something." + }, + { + "start": 4380.32, + "duration": 0.0, + "text": "constant value of something. But<01:13:00.480> if<01:13:00.640> we<01:13:00.800> extend<01:13:01.040> the<01:13:01.199> notion<01:13:01.760> of<01:13:02.000> an" + }, + { + "start": 4382.149, + "duration": 0.0, + "text": "But if we extend the notion of an" + }, + { + "start": 4382.159, + "duration": 0.0, + "text": "But if we extend the notion of an evaluation<01:13:03.360> to<01:13:03.679> also<01:13:04.000> include<01:13:04.239> a<01:13:04.400> notion<01:13:04.640> of" + }, + { + "start": 4384.87, + "duration": 0.0, + "text": "evaluation to also include a notion of" + }, + { + "start": 4384.88, + "duration": 0.0, + "text": "evaluation to also include a notion of which<01:13:05.520> space,<01:13:05.920> which<01:13:06.239> universe<01:13:06.640> that" + }, + { + "start": 4386.87, + "duration": 0.0, + "text": "which space, which universe that" + }, + { + "start": 4386.88, + "duration": 0.0, + "text": "which space, which universe that evaluation<01:13:07.440> is<01:13:07.600> within,<01:13:08.480> then<01:13:08.719> we<01:13:08.880> can" + }, + { + "start": 4389.03, + "duration": 0.0, + "text": "evaluation is within, then we can" + }, + { + "start": 4389.04, + "duration": 0.0, + "text": "evaluation is within, then we can broaden<01:13:09.360> the<01:13:09.520> applicability,<01:13:10.080> right?<01:13:10.239> We've" + }, + { + "start": 4390.47, + "duration": 0.0, + "text": "broaden the applicability, right? We've" + }, + { + "start": 4390.48, + "duration": 0.0, + "text": "broaden the applicability, right? We've sort<01:13:10.560> of<01:13:10.719> parameterize<01:13:11.199> this<01:13:11.440> thing<01:13:11.600> a<01:13:11.760> little" + }, + { + "start": 4391.83, + "duration": 0.0, + "text": "sort of parameterize this thing a little" + }, + { + "start": 4391.84, + "duration": 0.0, + "text": "sort of parameterize this thing a little bit<01:13:12.000> more<01:13:12.239> to<01:13:12.480> say<01:13:13.040> a<01:13:13.360> little<01:13:13.440> bit<01:13:13.600> more<01:13:13.840> about" + }, + { + "start": 4393.99, + "duration": 0.0, + "text": "bit more to say a little bit more about" + }, + { + "start": 4394.0, + "duration": 0.0, + "text": "bit more to say a little bit more about where<01:13:14.239> it<01:13:14.400> is<01:13:14.480> and<01:13:14.640> and<01:13:14.880> where<01:13:15.040> it's<01:13:15.280> coming" + }, + { + "start": 4395.43, + "duration": 0.0, + "text": "where it is and and where it's coming" + }, + { + "start": 4395.44, + "duration": 0.0, + "text": "where it is and and where it's coming from.<01:13:16.560> So<01:13:16.719> a<01:13:16.960> space<01:13:17.840> can<01:13:18.080> be<01:13:18.159> used<01:13:18.320> to<01:13:18.480> choose" + }, + { + "start": 4398.63, + "duration": 0.0, + "text": "from. So a space can be used to choose" + }, + { + "start": 4398.64, + "duration": 0.0, + "text": "from. So a space can be used to choose between<01:13:18.880> a<01:13:19.040> debug<01:13:19.679> obviously," + }, + { + "start": 4401.669, + "duration": 0.0, + "text": "between a debug obviously," + }, + { + "start": 4401.679, + "duration": 0.0, + "text": "between a debug obviously, but<01:13:21.920> it<01:13:22.159> can<01:13:22.239> also<01:13:22.719> pick<01:13:23.040> between,<01:13:23.840> let's<01:13:24.000> say," + }, + { + "start": 4404.149, + "duration": 0.0, + "text": "but it can also pick between, let's say," + }, + { + "start": 4404.159, + "duration": 0.0, + "text": "but it can also pick between, let's say, another<01:13:24.400> debuggy.<01:13:24.960> Let's<01:13:25.040> say<01:13:25.120> your<01:13:25.280> debugger" + }, + { + "start": 4405.51, + "duration": 0.0, + "text": "another debuggy. Let's say your debugger" + }, + { + "start": 4405.52, + "duration": 0.0, + "text": "another debuggy. Let's say your debugger is<01:13:25.679> not<01:13:25.760> just<01:13:25.920> attached<01:13:26.239> to<01:13:26.400> one<01:13:26.560> process,<01:13:26.960> but" + }, + { + "start": 4407.189, + "duration": 0.0, + "text": "is not just attached to one process, but" + }, + { + "start": 4407.199, + "duration": 0.0, + "text": "is not just attached to one process, but multiple<01:13:27.520> processes.<01:13:28.320> which<01:13:28.560> one<01:13:28.719> are<01:13:28.880> you" + }, + { + "start": 4408.95, + "duration": 0.0, + "text": "multiple processes. which one are you" + }, + { + "start": 4408.96, + "duration": 0.0, + "text": "multiple processes. which one are you evaluating<01:13:29.440> in<01:13:29.840> a<01:13:30.000> space<01:13:30.320> can<01:13:30.480> tell<01:13:30.640> you<01:13:30.800> that" + }, + { + "start": 4411.669, + "duration": 0.0, + "text": "evaluating in a space can tell you that" + }, + { + "start": 4411.679, + "duration": 0.0, + "text": "evaluating in a space can tell you that but<01:13:33.040> you<01:13:33.280> could<01:13:33.440> also<01:13:33.679> say<01:13:34.159> the<01:13:34.480> space<01:13:34.719> is<01:13:34.880> a" + }, + { + "start": 4415.03, + "duration": 0.0, + "text": "but you could also say the space is a" + }, + { + "start": 4415.04, + "duration": 0.0, + "text": "but you could also say the space is a file<01:13:35.440> or<01:13:35.600> the<01:13:35.760> space<01:13:35.920> is<01:13:36.080> just<01:13:36.239> some<01:13:36.400> file<01:13:36.640> on" + }, + { + "start": 4416.79, + "duration": 0.0, + "text": "file or the space is just some file on" + }, + { + "start": 4416.8, + "duration": 0.0, + "text": "file or the space is just some file on disk<01:13:37.280> at<01:13:37.520> some<01:13:37.760> path<01:13:38.320> or<01:13:38.640> it's<01:13:39.040> something<01:13:39.280> in" + }, + { + "start": 4419.43, + "duration": 0.0, + "text": "disk at some path or it's something in" + }, + { + "start": 4419.44, + "duration": 0.0, + "text": "disk at some path or it's something in the<01:13:39.600> debugger<01:13:40.000> itself.<01:13:41.199> So<01:13:41.360> if<01:13:41.520> we<01:13:41.679> expand" + }, + { + "start": 4422.07, + "duration": 0.0, + "text": "the debugger itself. So if we expand" + }, + { + "start": 4422.08, + "duration": 0.0, + "text": "the debugger itself. So if we expand that<01:13:43.360> then<01:13:43.600> these<01:13:43.920> different<01:13:44.239> worlds<01:13:44.880> simply" + }, + { + "start": 4425.27, + "duration": 0.0, + "text": "that then these different worlds simply" + }, + { + "start": 4425.28, + "duration": 0.0, + "text": "that then these different worlds simply become<01:13:45.600> different<01:13:46.000> spaces<01:13:46.880> within<01:13:47.199> which<01:13:47.440> the" + }, + { + "start": 4427.59, + "duration": 0.0, + "text": "become different spaces within which the" + }, + { + "start": 4427.6, + "duration": 0.0, + "text": "become different spaces within which the debugger<01:13:48.000> can<01:13:48.159> evaluate." + }, + { + "start": 4429.669, + "duration": 0.0, + "text": "debugger can evaluate." + }, + { + "start": 4429.679, + "duration": 0.0, + "text": "debugger can evaluate. So<01:13:49.920> remember<01:13:50.159> that<01:13:50.320> source<01:13:50.640> view<01:13:50.880> in<01:13:51.040> the<01:13:51.120> RAD" + }, + { + "start": 4431.35, + "duration": 0.0, + "text": "So remember that source view in the RAD" + }, + { + "start": 4431.36, + "duration": 0.0, + "text": "So remember that source view in the RAD debugger<01:13:52.640> that's<01:13:52.880> just<01:13:53.040> the<01:13:53.199> text<01:13:53.440> visualizer" + }, + { + "start": 4433.91, + "duration": 0.0, + "text": "debugger that's just the text visualizer" + }, + { + "start": 4433.92, + "duration": 0.0, + "text": "debugger that's just the text visualizer applied<01:13:54.239> to<01:13:54.320> a<01:13:54.480> file<01:13:54.719> path" + }, + { + "start": 4437.03, + "duration": 0.0, + "text": "applied to a file path" + }, + { + "start": 4437.04, + "duration": 0.0, + "text": "applied to a file path output<01:13:57.440> tab" + }, + { + "start": 4439.03, + "duration": 0.0, + "text": "output tab" + }, + { + "start": 4439.04, + "duration": 0.0, + "text": "output tab just<01:13:59.199> the<01:13:59.360> text<01:13:59.600> visualizer<01:14:00.320> evaluating<01:14:00.800> the" + }, + { + "start": 4440.95, + "duration": 0.0, + "text": "just the text visualizer evaluating the" + }, + { + "start": 4440.96, + "duration": 0.0, + "text": "just the text visualizer evaluating the output<01:14:01.199> log<01:14:01.520> within<01:14:01.760> the<01:14:01.840> debugger<01:14:02.320> space." + }, + { + "start": 4443.99, + "duration": 0.0, + "text": "output log within the debugger space." + }, + { + "start": 4444.0, + "duration": 0.0, + "text": "output log within the debugger space. What<01:14:04.159> happens<01:14:04.400> if<01:14:04.480> you<01:14:04.640> open<01:14:04.800> a<01:14:04.960> binary<01:14:05.280> file?" + }, + { + "start": 4445.91, + "duration": 0.0, + "text": "What happens if you open a binary file?" + }, + { + "start": 4445.92, + "duration": 0.0, + "text": "What happens if you open a binary file? It's<01:14:06.159> just<01:14:06.239> a<01:14:06.400> hex<01:14:06.719> viewer<01:14:07.520> because<01:14:07.760> the" + }, + { + "start": 4447.91, + "duration": 0.0, + "text": "It's just a hex viewer because the" + }, + { + "start": 4447.92, + "duration": 0.0, + "text": "It's just a hex viewer because the debugger<01:14:08.320> has<01:14:08.400> a<01:14:08.560> way<01:14:08.640> of<01:14:08.719> viewing<01:14:08.960> memory" + }, + { + "start": 4449.27, + "duration": 0.0, + "text": "debugger has a way of viewing memory" + }, + { + "start": 4449.28, + "duration": 0.0, + "text": "debugger has a way of viewing memory from<01:14:09.520> any<01:14:09.760> space<01:14:09.920> with<01:14:10.080> a<01:14:10.239> hex<01:14:10.480> grid.<01:14:10.880> So" + }, + { + "start": 4451.03, + "duration": 0.0, + "text": "from any space with a hex grid. So" + }, + { + "start": 4451.04, + "duration": 0.0, + "text": "from any space with a hex grid. So that's<01:14:11.280> that's<01:14:11.600> how<01:14:11.760> that<01:14:12.080> actually<01:14:12.640> works" + }, + { + "start": 4452.95, + "duration": 0.0, + "text": "that's that's how that actually works" + }, + { + "start": 4452.96, + "duration": 0.0, + "text": "that's that's how that actually works and<01:14:13.120> it<01:14:13.280> doesn't<01:14:13.440> stop<01:14:13.600> with<01:14:13.760> the<01:14:13.920> visualizer" + }, + { + "start": 4454.95, + "duration": 0.0, + "text": "and it doesn't stop with the visualizer" + }, + { + "start": 4454.96, + "duration": 0.0, + "text": "and it doesn't stop with the visualizer uh<01:14:15.199> sort<01:14:15.360> of<01:14:15.520> endpoints." + }, + { + "start": 4457.51, + "duration": 0.0, + "text": "uh sort of endpoints." + }, + { + "start": 4457.52, + "duration": 0.0, + "text": "uh sort of endpoints. Um,<01:14:18.159> you<01:14:18.400> might<01:14:18.560> also<01:14:18.880> remember<01:14:19.440> like<01:14:19.600> when<01:14:19.760> I" + }, + { + "start": 4459.91, + "duration": 0.0, + "text": "Um, you might also remember like when I" + }, + { + "start": 4459.92, + "duration": 0.0, + "text": "Um, you might also remember like when I added<01:14:20.159> a<01:14:20.320> condition<01:14:20.560> to<01:14:20.719> a<01:14:20.880> breakpoint,<01:14:21.199> I" + }, + { + "start": 4461.35, + "duration": 0.0, + "text": "added a condition to a breakpoint, I" + }, + { + "start": 4461.36, + "duration": 0.0, + "text": "added a condition to a breakpoint, I rightcicked<01:14:21.760> on<01:14:21.840> the<01:14:21.920> breakpoint.<01:14:22.320> This<01:14:22.480> UI" + }, + { + "start": 4462.709, + "duration": 0.0, + "text": "rightcicked on the breakpoint. This UI" + }, + { + "start": 4462.719, + "duration": 0.0, + "text": "rightcicked on the breakpoint. This UI pops<01:14:22.960> up.<01:14:23.280> Kind<01:14:23.440> of<01:14:23.520> looks<01:14:23.679> like<01:14:23.760> a<01:14:23.920> watch" + }, + { + "start": 4464.149, + "duration": 0.0, + "text": "pops up. Kind of looks like a watch" + }, + { + "start": 4464.159, + "duration": 0.0, + "text": "pops up. Kind of looks like a watch window,<01:14:24.560> doesn't<01:14:24.719> it?" + }, + { + "start": 4467.189, + "duration": 0.0, + "text": "window, doesn't it?" + }, + { + "start": 4467.199, + "duration": 0.0, + "text": "window, doesn't it? You<01:14:27.360> may<01:14:27.520> think<01:14:27.679> it<01:14:27.920> looks<01:14:28.080> like<01:14:28.239> one" + }, + { + "start": 4469.75, + "duration": 0.0, + "text": "You may think it looks like one" + }, + { + "start": 4469.76, + "duration": 0.0, + "text": "You may think it looks like one maybe.<01:14:31.199> Um,<01:14:31.520> and<01:14:31.679> that's<01:14:31.920> because<01:14:32.080> it<01:14:32.159> is." + }, + { + "start": 4472.31, + "duration": 0.0, + "text": "maybe. Um, and that's because it is." + }, + { + "start": 4472.32, + "duration": 0.0, + "text": "maybe. Um, and that's because it is. It's<01:14:32.480> an<01:14:32.640> actual<01:14:32.800> watch<01:14:33.040> window<01:14:33.280> evaluating" + }, + { + "start": 4473.75, + "duration": 0.0, + "text": "It's an actual watch window evaluating" + }, + { + "start": 4473.76, + "duration": 0.0, + "text": "It's an actual watch window evaluating the<01:14:33.920> break<01:14:34.159> point<01:14:34.400> within<01:14:34.640> the<01:14:34.800> debugger" + }, + { + "start": 4475.27, + "duration": 0.0, + "text": "the break point within the debugger" + }, + { + "start": 4475.28, + "duration": 0.0, + "text": "the break point within the debugger address<01:14:35.840> or<01:14:36.640> not<01:14:36.880> address<01:14:37.120> space,<01:14:37.360> debugger" + }, + { + "start": 4477.83, + "duration": 0.0, + "text": "address or not address space, debugger" + }, + { + "start": 4477.84, + "duration": 0.0, + "text": "address or not address space, debugger space.<01:14:38.320> Uh," + }, + { + "start": 4480.47, + "duration": 0.0, + "text": "space. Uh," + }, + { + "start": 4480.48, + "duration": 0.0, + "text": "space. Uh, and<01:14:40.640> it<01:14:40.880> doesn't<01:14:41.040> stop<01:14:41.199> with<01:14:41.360> breakpoints." + }, + { + "start": 4481.91, + "duration": 0.0, + "text": "and it doesn't stop with breakpoints." + }, + { + "start": 4481.92, + "duration": 0.0, + "text": "and it doesn't stop with breakpoints. All<01:14:42.159> configuration<01:14:42.640> data<01:14:42.960> works<01:14:43.120> this<01:14:43.440> If<01:14:43.600> I" + }, + { + "start": 4483.669, + "duration": 0.0, + "text": "All configuration data works this If I" + }, + { + "start": 4483.679, + "duration": 0.0, + "text": "All configuration data works this If I evaluate<01:14:44.320> a<01:14:44.640> target<01:14:45.040> like<01:14:45.280> all<01:14:45.360> the<01:14:45.840> all<01:14:46.000> the" + }, + { + "start": 4486.149, + "duration": 0.0, + "text": "evaluate a target like all the all the" + }, + { + "start": 4486.159, + "duration": 0.0, + "text": "evaluate a target like all the all the options<01:14:46.400> for<01:14:46.560> launching<01:14:46.800> an<01:14:47.040> executable<01:14:48.000> um" + }, + { + "start": 4488.07, + "duration": 0.0, + "text": "options for launching an executable um" + }, + { + "start": 4488.08, + "duration": 0.0, + "text": "options for launching an executable um that's<01:14:48.320> just<01:14:48.480> evaluating<01:14:48.960> the<01:14:49.120> target<01:14:50.480> looks" + }, + { + "start": 4490.709, + "duration": 0.0, + "text": "that's just evaluating the target looks" + }, + { + "start": 4490.719, + "duration": 0.0, + "text": "that's just evaluating the target looks like<01:14:50.800> a<01:14:50.960> watch<01:14:51.199> window<01:14:51.760> because<01:14:52.000> there's<01:14:52.320> one." + }, + { + "start": 4493.35, + "duration": 0.0, + "text": "like a watch window because there's one." + }, + { + "start": 4493.36, + "duration": 0.0, + "text": "like a watch window because there's one. Here's<01:14:53.600> the<01:14:53.760> list<01:14:53.920> of<01:14:54.080> threads<01:14:54.880> in<01:14:55.120> the<01:14:55.199> RAD" + }, + { + "start": 4495.43, + "duration": 0.0, + "text": "Here's the list of threads in the RAD" + }, + { + "start": 4495.44, + "duration": 0.0, + "text": "Here's the list of threads in the RAD debugger." + }, + { + "start": 4497.27, + "duration": 0.0, + "text": "debugger." + }, + { + "start": 4497.28, + "duration": 0.0, + "text": "debugger. Need<01:14:57.520> I<01:14:57.679> say<01:14:57.840> more?<01:14:58.159> It's<01:14:58.320> a<01:14:58.400> watch<01:14:58.640> window." + }, + { + "start": 4501.59, + "duration": 0.0, + "text": "Need I say more? It's a watch window." + }, + { + "start": 4501.6, + "duration": 0.0, + "text": "Need I say more? It's a watch window. Tab<01:15:01.920> rightclick<01:15:02.400> menu.<01:15:03.120> Yes,<01:15:03.600> I<01:15:03.840> I<01:15:04.080> know<01:15:04.320> it's" + }, + { + "start": 4504.55, + "duration": 0.0, + "text": "Tab rightclick menu. Yes, I I know it's" + }, + { + "start": 4504.56, + "duration": 0.0, + "text": "Tab rightclick menu. Yes, I I know it's a<01:15:04.719> watch<01:15:04.960> window." + }, + { + "start": 4506.79, + "duration": 0.0, + "text": "a watch window." + }, + { + "start": 4506.8, + "duration": 0.0, + "text": "a watch window. File<01:15:07.120> tree<01:15:07.360> view.<01:15:08.480> Guess<01:15:08.719> what?" + }, + { + "start": 4510.229, + "duration": 0.0, + "text": "File tree view. Guess what?" + }, + { + "start": 4510.239, + "duration": 0.0, + "text": "File tree view. Guess what? >> Watch<01:15:10.640> window.<01:15:11.280> Just<01:15:11.600> evaluating<01:15:12.080> folders." + }, + { + "start": 4513.27, + "duration": 0.0, + "text": ">> Watch window. Just evaluating folders." + }, + { + "start": 4513.28, + "duration": 0.0, + "text": ">> Watch window. Just evaluating folders. Everything's<01:15:13.600> a<01:15:13.760> watch<01:15:14.000> window." + }, + { + "start": 4515.59, + "duration": 0.0, + "text": "Everything's a watch window." + }, + { + "start": 4515.6, + "duration": 0.0, + "text": "Everything's a watch window. Everything's<01:15:15.920> a<01:15:16.080> watch<01:15:16.239> window." + }, + { + "start": 4521.04, + "duration": 0.0, + "text": "Now,<01:15:21.840> to<01:15:22.000> build<01:15:22.239> visualizations<01:15:22.800> for<01:15:22.960> the" + }, + { + "start": 4523.11, + "duration": 0.0, + "text": "Now, to build visualizations for the" + }, + { + "start": 4523.12, + "duration": 0.0, + "text": "Now, to build visualizations for the system,<01:15:23.679> a<01:15:23.920> visualization<01:15:24.480> engine<01:15:24.719> needs" + }, + { + "start": 4525.03, + "duration": 0.0, + "text": "system, a visualization engine needs" + }, + { + "start": 4525.04, + "duration": 0.0, + "text": "system, a visualization engine needs visualizers<01:15:25.840> that<01:15:26.080> are<01:15:26.159> sort<01:15:26.320> of<01:15:26.480> agnostic<01:15:27.040> to" + }, + { + "start": 4527.27, + "duration": 0.0, + "text": "visualizers that are sort of agnostic to" + }, + { + "start": 4527.28, + "duration": 0.0, + "text": "visualizers that are sort of agnostic to the<01:15:27.679> uh<01:15:27.840> source<01:15:28.080> of<01:15:28.239> the<01:15:28.400> underlying<01:15:28.880> data." + }, + { + "start": 4529.83, + "duration": 0.0, + "text": "the uh source of the underlying data." + }, + { + "start": 4529.84, + "duration": 0.0, + "text": "the uh source of the underlying data. Um,<01:15:30.480> so<01:15:30.719> in<01:15:30.880> other<01:15:30.960> words,<01:15:31.120> they<01:15:31.280> need<01:15:31.360> to<01:15:31.520> be" + }, + { + "start": 4531.59, + "duration": 0.0, + "text": "Um, so in other words, they need to be" + }, + { + "start": 4531.6, + "duration": 0.0, + "text": "Um, so in other words, they need to be based<01:15:31.760> around<01:15:32.000> like<01:15:32.159> some<01:15:32.400> contents.<01:15:33.040> Like" + }, + { + "start": 4533.27, + "duration": 0.0, + "text": "based around like some contents. Like" + }, + { + "start": 4533.28, + "duration": 0.0, + "text": "based around like some contents. Like you<01:15:33.440> want<01:15:33.600> to<01:15:33.760> talk<01:15:33.920> about<01:15:34.080> the<01:15:34.239> contents<01:15:34.640> of" + }, + { + "start": 4534.79, + "duration": 0.0, + "text": "you want to talk about the contents of" + }, + { + "start": 4534.8, + "duration": 0.0, + "text": "you want to talk about the contents of something,<01:15:35.760> not<01:15:36.000> like<01:15:36.640> um<01:15:37.760> the<01:15:38.000> path<01:15:38.239> to<01:15:38.480> that" + }, + { + "start": 4538.63, + "duration": 0.0, + "text": "something, not like um the path to that" + }, + { + "start": 4538.64, + "duration": 0.0, + "text": "something, not like um the path to that data<01:15:38.880> because<01:15:39.120> that<01:15:39.280> couples<01:15:39.600> it<01:15:39.760> sort<01:15:39.920> of<01:15:40.000> to" + }, + { + "start": 4540.149, + "duration": 0.0, + "text": "data because that couples it sort of to" + }, + { + "start": 4540.159, + "duration": 0.0, + "text": "data because that couples it sort of to the<01:15:40.320> file<01:15:40.640> to<01:15:40.719> the<01:15:40.880> file<01:15:41.120> system,<01:15:41.520> right?" + }, + { + "start": 4543.03, + "duration": 0.0, + "text": "the file to the file system, right?" + }, + { + "start": 4543.04, + "duration": 0.0, + "text": "the file to the file system, right? Um,<01:15:43.679> so<01:15:43.920> let's<01:15:44.080> imagine<01:15:44.400> a<01:15:44.560> filebased<01:15:45.840> viewing" + }, + { + "start": 4546.229, + "duration": 0.0, + "text": "Um, so let's imagine a filebased viewing" + }, + { + "start": 4546.239, + "duration": 0.0, + "text": "Um, so let's imagine a filebased viewing program.<01:15:46.880> In<01:15:47.040> that<01:15:47.199> case,<01:15:47.360> the<01:15:47.600> user<01:15:47.840> is<01:15:48.000> like," + }, + { + "start": 4548.229, + "duration": 0.0, + "text": "program. In that case, the user is like," + }, + { + "start": 4548.239, + "duration": 0.0, + "text": "program. In that case, the user is like, I'm<01:15:48.480> going<01:15:48.560> to<01:15:48.640> view<01:15:48.800> this<01:15:49.040> path<01:15:49.440> and<01:15:49.600> the" + }, + { + "start": 4549.75, + "duration": 0.0, + "text": "I'm going to view this path and the" + }, + { + "start": 4549.76, + "duration": 0.0, + "text": "I'm going to view this path and the program<01:15:50.080> produces<01:15:50.400> a<01:15:50.560> UI.<01:15:51.199> If<01:15:51.360> the<01:15:51.520> code<01:15:51.679> is" + }, + { + "start": 4551.83, + "duration": 0.0, + "text": "program produces a UI. If the code is" + }, + { + "start": 4551.84, + "duration": 0.0, + "text": "program produces a UI. If the code is written<01:15:52.080> exactly<01:15:52.480> like<01:15:52.719> this,<01:15:53.120> then<01:15:53.360> the<01:15:53.520> UI" + }, + { + "start": 4553.83, + "duration": 0.0, + "text": "written exactly like this, then the UI" + }, + { + "start": 4553.84, + "duration": 0.0, + "text": "written exactly like this, then the UI path<01:15:54.080> is<01:15:54.480> just<01:15:54.800> completely<01:15:55.280> wound<01:15:55.600> together" + }, + { + "start": 4555.83, + "duration": 0.0, + "text": "path is just completely wound together" + }, + { + "start": 4555.84, + "duration": 0.0, + "text": "path is just completely wound together with<01:15:56.000> the<01:15:56.159> idea<01:15:56.560> of<01:15:56.800> pulling<01:15:57.120> the<01:15:57.280> data<01:15:57.440> from" + }, + { + "start": 4557.51, + "duration": 0.0, + "text": "with the idea of pulling the data from" + }, + { + "start": 4557.52, + "duration": 0.0, + "text": "with the idea of pulling the data from the<01:15:57.679> file<01:15:57.920> system.<01:15:58.400> Now,<01:15:58.640> a<01:15:58.800> contentbased" + }, + { + "start": 4559.43, + "duration": 0.0, + "text": "the file system. Now, a contentbased" + }, + { + "start": 4559.44, + "duration": 0.0, + "text": "the file system. Now, a contentbased viewing<01:15:59.840> program<01:16:00.640> produces<01:16:01.040> a<01:16:01.199> UI" + }, + { + "start": 4562.79, + "duration": 0.0, + "text": "viewing program produces a UI" + }, + { + "start": 4562.8, + "duration": 0.0, + "text": "viewing program produces a UI given<01:16:03.120> some<01:16:03.280> blob<01:16:03.600> of<01:16:03.760> data<01:16:04.640> whether<01:16:04.880> it's" + }, + { + "start": 4565.11, + "duration": 0.0, + "text": "given some blob of data whether it's" + }, + { + "start": 4565.12, + "duration": 0.0, + "text": "given some blob of data whether it's read<01:16:05.280> from<01:16:05.360> the<01:16:05.520> file<01:16:05.760> system<01:16:06.000> or<01:16:06.239> from" + }, + { + "start": 4566.47, + "duration": 0.0, + "text": "read from the file system or from" + }, + { + "start": 4566.48, + "duration": 0.0, + "text": "read from the file system or from somewhere<01:16:06.800> else.<01:16:07.600> So<01:16:07.760> the<01:16:08.000> input<01:16:08.320> is<01:16:08.480> the<01:16:08.719> data" + }, + { + "start": 4569.03, + "duration": 0.0, + "text": "somewhere else. So the input is the data" + }, + { + "start": 4569.04, + "duration": 0.0, + "text": "somewhere else. So the input is the data instead<01:16:09.360> of<01:16:09.440> the<01:16:09.679> path<01:16:09.920> to<01:16:10.080> the<01:16:10.239> data<01:16:11.120> since" + }, + { + "start": 4571.35, + "duration": 0.0, + "text": "instead of the path to the data since" + }, + { + "start": 4571.36, + "duration": 0.0, + "text": "instead of the path to the data since the<01:16:11.600> path<01:16:11.840> is<01:16:12.080> coupled<01:16:12.400> to<01:16:12.480> the<01:16:12.640> file<01:16:12.880> system." + }, + { + "start": 4573.99, + "duration": 0.0, + "text": "the path is coupled to the file system." + }, + { + "start": 4574.0, + "duration": 0.0, + "text": "the path is coupled to the file system. Now<01:16:14.239> we<01:16:14.480> know<01:16:14.640> that<01:16:14.880> in<01:16:15.040> the<01:16:15.120> debugger<01:16:15.840> the" + }, + { + "start": 4576.229, + "duration": 0.0, + "text": "Now we know that in the debugger the" + }, + { + "start": 4576.239, + "duration": 0.0, + "text": "Now we know that in the debugger the user<01:16:16.640> can<01:16:16.800> refer<01:16:17.120> to<01:16:17.520> content<01:16:18.400> using<01:16:18.719> an" + }, + { + "start": 4578.87, + "duration": 0.0, + "text": "user can refer to content using an" + }, + { + "start": 4578.88, + "duration": 0.0, + "text": "user can refer to content using an evaluation." + }, + { + "start": 4581.75, + "duration": 0.0, + "text": "evaluation." + }, + { + "start": 4581.76, + "duration": 0.0, + "text": "evaluation. So<01:16:22.000> let's<01:16:22.159> evaluate<01:16:22.800> uh<01:16:22.960> let's<01:16:23.199> let's<01:16:23.600> um" + }, + { + "start": 4584.07, + "duration": 0.0, + "text": "So let's evaluate uh let's let's um" + }, + { + "start": 4584.08, + "duration": 0.0, + "text": "So let's evaluate uh let's let's um imagine<01:16:24.400> what<01:16:24.560> we<01:16:24.719> need<01:16:24.880> in<01:16:25.040> order<01:16:25.199> to<01:16:25.440> build<01:16:25.920> a" + }, + { + "start": 4586.149, + "duration": 0.0, + "text": "imagine what we need in order to build a" + }, + { + "start": 4586.159, + "duration": 0.0, + "text": "imagine what we need in order to build a bit<01:16:26.400> map<01:16:26.640> viewer.<01:16:27.760> The<01:16:27.920> user<01:16:28.159> specifies<01:16:28.640> some" + }, + { + "start": 4588.79, + "duration": 0.0, + "text": "bit map viewer. The user specifies some" + }, + { + "start": 4588.8, + "duration": 0.0, + "text": "bit map viewer. The user specifies some evaluation,<01:16:29.679> some<01:16:29.920> visualizer<01:16:30.400> parameters" + }, + { + "start": 4591.11, + "duration": 0.0, + "text": "evaluation, some visualizer parameters" + }, + { + "start": 4591.12, + "duration": 0.0, + "text": "evaluation, some visualizer parameters and<01:16:31.280> we<01:16:31.520> need<01:16:31.600> to<01:16:31.760> map<01:16:32.000> that<01:16:32.719> uh<01:16:33.040> to<01:16:33.360> some<01:16:33.600> data" + }, + { + "start": 4593.75, + "duration": 0.0, + "text": "and we need to map that uh to some data" + }, + { + "start": 4593.76, + "duration": 0.0, + "text": "and we need to map that uh to some data and<01:16:34.000> present<01:16:34.239> that<01:16:34.400> as<01:16:34.560> a<01:16:34.719> texture<01:16:35.040> somehow." + }, + { + "start": 4595.99, + "duration": 0.0, + "text": "and present that as a texture somehow." + }, + { + "start": 4596.0, + "duration": 0.0, + "text": "and present that as a texture somehow. that<01:16:36.239> might<01:16:36.480> require<01:16:36.880> like" + }, + { + "start": 4599.03, + "duration": 0.0, + "text": "that might require like" + }, + { + "start": 4599.04, + "duration": 0.0, + "text": "that might require like uploading<01:16:39.520> the<01:16:39.760> data<01:16:39.920> to<01:16:40.080> the<01:16:40.239> GPU<01:16:40.719> and" + }, + { + "start": 4601.03, + "duration": 0.0, + "text": "uploading the data to the GPU and" + }, + { + "start": 4601.04, + "duration": 0.0, + "text": "uploading the data to the GPU and obtaining<01:16:41.360> a<01:16:41.520> handle<01:16:41.840> to<01:16:41.920> a<01:16:42.080> texture<01:16:42.800> and<01:16:42.960> then" + }, + { + "start": 4603.11, + "duration": 0.0, + "text": "obtaining a handle to a texture and then" + }, + { + "start": 4603.12, + "duration": 0.0, + "text": "obtaining a handle to a texture and then we<01:16:43.280> render<01:16:43.679> with<01:16:43.840> that<01:16:44.080> texture." + }, + { + "start": 4605.59, + "duration": 0.0, + "text": "we render with that texture." + }, + { + "start": 4605.6, + "duration": 0.0, + "text": "we render with that texture. Now<01:16:45.840> to<01:16:46.000> do<01:16:46.080> that<01:16:46.239> we<01:16:46.400> might<01:16:46.560> need<01:16:46.640> to<01:16:46.800> do" + }, + { + "start": 4607.35, + "duration": 0.0, + "text": "Now to do that we might need to do" + }, + { + "start": 4607.36, + "duration": 0.0, + "text": "Now to do that we might need to do something<01:16:47.600> like<01:16:47.760> these<01:16:48.080> steps<01:16:48.480> like<01:16:48.640> given" + }, + { + "start": 4608.95, + "duration": 0.0, + "text": "something like these steps like given" + }, + { + "start": 4608.96, + "duration": 0.0, + "text": "something like these steps like given some<01:16:49.120> evaluation<01:16:49.600> you<01:16:49.840> extract<01:16:50.159> base<01:16:50.480> address" + }, + { + "start": 4611.189, + "duration": 0.0, + "text": "some evaluation you extract base address" + }, + { + "start": 4611.199, + "duration": 0.0, + "text": "some evaluation you extract base address and<01:16:51.360> a<01:16:51.600> space<01:16:52.719> you<01:16:52.880> extract<01:16:53.280> some<01:16:53.440> memory<01:16:53.840> size" + }, + { + "start": 4615.189, + "duration": 0.0, + "text": "and a space you extract some memory size" + }, + { + "start": 4615.199, + "duration": 0.0, + "text": "and a space you extract some memory size which<01:16:55.360> you<01:16:55.520> would<01:16:55.600> get<01:16:55.760> from<01:16:55.920> the<01:16:56.080> visualizer" + }, + { + "start": 4617.189, + "duration": 0.0, + "text": "which you would get from the visualizer" + }, + { + "start": 4617.199, + "duration": 0.0, + "text": "which you would get from the visualizer things<01:16:57.600> because<01:16:58.000> specify<01:16:58.400> the<01:16:58.560> dimensions" + }, + { + "start": 4618.87, + "duration": 0.0, + "text": "things because specify the dimensions" + }, + { + "start": 4618.88, + "duration": 0.0, + "text": "things because specify the dimensions the<01:16:59.040> format<01:16:59.280> you<01:16:59.440> can<01:16:59.520> infer<01:16:59.840> the<01:17:00.000> memory<01:17:00.239> size" + }, + { + "start": 4621.189, + "duration": 0.0, + "text": "the format you can infer the memory size" + }, + { + "start": 4621.199, + "duration": 0.0, + "text": "the format you can infer the memory size you<01:17:01.440> need<01:17:01.520> to<01:17:01.679> read<01:17:01.840> the<01:17:02.000> memory<01:17:02.239> from<01:17:02.320> the" + }, + { + "start": 4622.47, + "duration": 0.0, + "text": "you need to read the memory from the" + }, + { + "start": 4622.48, + "duration": 0.0, + "text": "you need to read the memory from the space<01:17:02.719> and<01:17:02.960> you<01:17:03.040> need<01:17:03.199> to<01:17:03.280> upload<01:17:03.600> the<01:17:03.840> memory" + }, + { + "start": 4624.07, + "duration": 0.0, + "text": "space and you need to upload the memory" + }, + { + "start": 4624.08, + "duration": 0.0, + "text": "space and you need to upload the memory to<01:17:04.159> the<01:17:04.320> GPU<01:17:04.719> storage<01:17:05.120> right" + }, + { + "start": 4627.189, + "duration": 0.0, + "text": "to the GPU storage right" + }, + { + "start": 4627.199, + "duration": 0.0, + "text": "to the GPU storage right now<01:17:08.560> the<01:17:08.800> naive<01:17:09.120> implementation<01:17:09.520> of<01:17:09.679> this" + }, + { + "start": 4629.83, + "duration": 0.0, + "text": "now the naive implementation of this" + }, + { + "start": 4629.84, + "duration": 0.0, + "text": "now the naive implementation of this would<01:17:10.000> just<01:17:10.239> put<01:17:10.400> this<01:17:10.560> straight<01:17:10.800> up<01:17:11.440> into<01:17:11.760> the" + }, + { + "start": 4631.91, + "duration": 0.0, + "text": "would just put this straight up into the" + }, + { + "start": 4631.92, + "duration": 0.0, + "text": "would just put this straight up into the into<01:17:12.159> the<01:17:12.320> UI<01:17:12.640> build<01:17:13.120> right<01:17:14.480> the<01:17:14.640> UI<01:17:14.880> is<01:17:15.040> just" + }, + { + "start": 4635.27, + "duration": 0.0, + "text": "into the UI build right the UI is just" + }, + { + "start": 4635.28, + "duration": 0.0, + "text": "into the UI build right the UI is just going<01:17:15.520> along.<01:17:15.760> It's<01:17:15.920> like<01:17:16.080> building<01:17:16.239> buttons" + }, + { + "start": 4636.55, + "duration": 0.0, + "text": "going along. It's like building buttons" + }, + { + "start": 4636.56, + "duration": 0.0, + "text": "going along. It's like building buttons and<01:17:16.719> stuff<01:17:16.800> and<01:17:16.960> it's<01:17:17.199> like<01:17:17.520> need<01:17:17.679> to<01:17:17.760> build<01:17:17.840> a" + }, + { + "start": 4637.91, + "duration": 0.0, + "text": "and stuff and it's like need to build a" + }, + { + "start": 4637.92, + "duration": 0.0, + "text": "and stuff and it's like need to build a bit<01:17:18.159> map<01:17:18.400> viewer.<01:17:18.880> Let's<01:17:19.199> like<01:17:19.360> get<01:17:19.600> the<01:17:19.679> base" + }, + { + "start": 4639.99, + "duration": 0.0, + "text": "bit map viewer. Let's like get the base" + }, + { + "start": 4640.0, + "duration": 0.0, + "text": "bit map viewer. Let's like get the base address,<01:17:20.400> the<01:17:20.640> space,<01:17:21.120> get<01:17:21.360> how<01:17:21.520> many<01:17:21.679> bytes<01:17:21.920> I" + }, + { + "start": 4642.07, + "duration": 0.0, + "text": "address, the space, get how many bytes I" + }, + { + "start": 4642.08, + "duration": 0.0, + "text": "address, the space, get how many bytes I need<01:17:22.159> to<01:17:22.239> read,<01:17:22.480> read<01:17:22.719> all<01:17:22.800> the<01:17:22.960> memory<01:17:23.199> and" + }, + { + "start": 4643.35, + "duration": 0.0, + "text": "need to read, read all the memory and" + }, + { + "start": 4643.36, + "duration": 0.0, + "text": "need to read, read all the memory and then<01:17:23.520> upload<01:17:23.840> it<01:17:23.920> and<01:17:24.080> then<01:17:24.239> get<01:17:24.400> a<01:17:24.560> texture" + }, + { + "start": 4644.87, + "duration": 0.0, + "text": "then upload it and then get a texture" + }, + { + "start": 4644.88, + "duration": 0.0, + "text": "then upload it and then get a texture handle.<01:17:26.080> Um,<01:17:26.960> so<01:17:27.120> that's<01:17:27.360> the<01:17:27.520> naive" + }, + { + "start": 4647.83, + "duration": 0.0, + "text": "handle. Um, so that's the naive" + }, + { + "start": 4647.84, + "duration": 0.0, + "text": "handle. Um, so that's the naive implementation.<01:17:28.320> You<01:17:28.400> just<01:17:28.560> do<01:17:28.640> that<01:17:28.800> all<01:17:28.960> on" + }, + { + "start": 4649.03, + "duration": 0.0, + "text": "implementation. You just do that all on" + }, + { + "start": 4649.04, + "duration": 0.0, + "text": "implementation. You just do that all on the<01:17:29.120> UI<01:17:29.440> thread.<01:17:30.320> Um,<01:17:31.040> you<01:17:31.280> run<01:17:31.440> into<01:17:31.600> a" + }, + { + "start": 4651.75, + "duration": 0.0, + "text": "the UI thread. Um, you run into a" + }, + { + "start": 4651.76, + "duration": 0.0, + "text": "the UI thread. Um, you run into a problem<01:17:31.920> with<01:17:32.080> that<01:17:32.800> unsurprisingly,<01:17:33.920> which" + }, + { + "start": 4654.07, + "duration": 0.0, + "text": "problem with that unsurprisingly, which" + }, + { + "start": 4654.08, + "duration": 0.0, + "text": "problem with that unsurprisingly, which is<01:17:34.239> that<01:17:34.400> the<01:17:34.560> size<01:17:34.719> of<01:17:34.800> this<01:17:35.040> data<01:17:35.199> is" + }, + { + "start": 4655.35, + "duration": 0.0, + "text": "is that the size of this data is" + }, + { + "start": 4655.36, + "duration": 0.0, + "text": "is that the size of this data is unbounded." + }, + { + "start": 4657.43, + "duration": 0.0, + "text": "unbounded." + }, + { + "start": 4657.44, + "duration": 0.0, + "text": "unbounded. You<01:17:37.600> have<01:17:37.760> very<01:17:38.000> few<01:17:38.239> constraints<01:17:38.640> about<01:17:38.880> how" + }, + { + "start": 4659.11, + "duration": 0.0, + "text": "You have very few constraints about how" + }, + { + "start": 4659.12, + "duration": 0.0, + "text": "You have very few constraints about how large<01:17:39.440> this<01:17:39.679> can<01:17:39.840> actually<01:17:40.080> be.<01:17:41.199> um<01:17:42.400> which" + }, + { + "start": 4662.709, + "duration": 0.0, + "text": "large this can actually be. um which" + }, + { + "start": 4662.719, + "duration": 0.0, + "text": "large this can actually be. um which also<01:17:42.960> means" + }, + { + "start": 4664.709, + "duration": 0.0, + "text": "also means" + }, + { + "start": 4664.719, + "duration": 0.0, + "text": "also means that<01:17:45.040> is<01:17:45.199> unbounded.<01:17:46.159> These<01:17:46.480> two<01:17:46.640> things<01:17:46.719> are" + }, + { + "start": 4666.87, + "duration": 0.0, + "text": "that is unbounded. These two things are" + }, + { + "start": 4666.88, + "duration": 0.0, + "text": "that is unbounded. These two things are unbounded.<01:17:47.760> So<01:17:48.320> remember<01:17:48.719> like<01:17:49.120> everything" + }, + { + "start": 4669.51, + "duration": 0.0, + "text": "unbounded. So remember like everything" + }, + { + "start": 4669.52, + "duration": 0.0, + "text": "unbounded. So remember like everything up<01:17:49.679> until<01:17:49.920> this<01:17:50.159> point<01:17:50.480> I've<01:17:50.719> been<01:17:50.880> like" + }, + { + "start": 4671.03, + "duration": 0.0, + "text": "up until this point I've been like" + }, + { + "start": 4671.04, + "duration": 0.0, + "text": "up until this point I've been like talking<01:17:51.280> about<01:17:51.360> how<01:17:51.520> to<01:17:51.679> window<01:17:51.920> a<01:17:52.159> watch" + }, + { + "start": 4672.39, + "duration": 0.0, + "text": "talking about how to window a watch" + }, + { + "start": 4672.4, + "duration": 0.0, + "text": "talking about how to window a watch tree.<01:17:52.640> I've<01:17:52.880> talked<01:17:53.040> about<01:17:53.440> how<01:17:53.679> to<01:17:53.760> like" + }, + { + "start": 4673.99, + "duration": 0.0, + "text": "tree. I've talked about how to like" + }, + { + "start": 4674.0, + "duration": 0.0, + "text": "tree. I've talked about how to like scope<01:17:54.320> down<01:17:54.480> what<01:17:54.640> the<01:17:54.800> debugger<01:17:55.120> is<01:17:55.199> looking" + }, + { + "start": 4675.35, + "duration": 0.0, + "text": "scope down what the debugger is looking" + }, + { + "start": 4675.36, + "duration": 0.0, + "text": "scope down what the debugger is looking at<01:17:55.520> because<01:17:55.679> otherwise<01:17:55.920> our<01:17:56.159> debugger<01:17:56.480> UI<01:17:56.719> is" + }, + { + "start": 4676.79, + "duration": 0.0, + "text": "at because otherwise our debugger UI is" + }, + { + "start": 4676.8, + "duration": 0.0, + "text": "at because otherwise our debugger UI is going<01:17:56.880> to<01:17:57.040> be<01:17:57.280> going<01:17:57.440> to<01:17:57.520> have<01:17:57.679> way<01:17:57.920> too<01:17:58.080> much" + }, + { + "start": 4678.229, + "duration": 0.0, + "text": "going to be going to have way too much" + }, + { + "start": 4678.239, + "duration": 0.0, + "text": "going to be going to have way too much stuff<01:17:58.400> to<01:17:58.560> do.<01:17:58.960> You've<01:17:59.280> got<01:17:59.440> just<01:18:00.080> so<01:18:00.320> much" + }, + { + "start": 4680.39, + "duration": 0.0, + "text": "stuff to do. You've got just so much" + }, + { + "start": 4680.4, + "duration": 0.0, + "text": "stuff to do. You've got just so much memory<01:18:00.719> to<01:18:00.880> read,<01:18:01.120> so<01:18:01.280> much<01:18:01.440> stuff<01:18:01.600> to<01:18:01.760> build." + }, + { + "start": 4682.55, + "duration": 0.0, + "text": "memory to read, so much stuff to build." + }, + { + "start": 4682.56, + "duration": 0.0, + "text": "memory to read, so much stuff to build. All<01:18:03.120> like<01:18:03.679> half<01:18:04.000> this<01:18:04.159> talk<01:18:04.480> has<01:18:04.719> really<01:18:04.880> been" + }, + { + "start": 4685.03, + "duration": 0.0, + "text": "All like half this talk has really been" + }, + { + "start": 4685.04, + "duration": 0.0, + "text": "All like half this talk has really been about<01:18:05.520> how<01:18:05.679> do<01:18:05.760> I<01:18:06.000> scope<01:18:06.320> this<01:18:06.560> down?<01:18:07.199> How<01:18:07.360> do<01:18:07.440> I" + }, + { + "start": 4687.59, + "duration": 0.0, + "text": "about how do I scope this down? How do I" + }, + { + "start": 4687.6, + "duration": 0.0, + "text": "about how do I scope this down? How do I not<01:18:07.840> do<01:18:07.920> all<01:18:08.159> that<01:18:08.320> work?<01:18:09.199> And<01:18:09.360> I've<01:18:09.600> just<01:18:09.760> like" + }, + { + "start": 4689.99, + "duration": 0.0, + "text": "not do all that work? And I've just like" + }, + { + "start": 4690.0, + "duration": 0.0, + "text": "not do all that work? And I've just like completely<01:18:10.400> eliminated<01:18:10.880> all<01:18:11.120> that<01:18:11.199> with<01:18:11.360> this" + }, + { + "start": 4691.59, + "duration": 0.0, + "text": "completely eliminated all that with this" + }, + { + "start": 4691.6, + "duration": 0.0, + "text": "completely eliminated all that with this step,<01:18:12.719> right?" + }, + { + "start": 4694.95, + "duration": 0.0, + "text": "step, right?" + }, + { + "start": 4694.96, + "duration": 0.0, + "text": "step, right? Furthermore,<01:18:15.679> this<01:18:15.840> isn't<01:18:16.080> a<01:18:16.239> windowed" + }, + { + "start": 4696.709, + "duration": 0.0, + "text": "Furthermore, this isn't a windowed" + }, + { + "start": 4696.719, + "duration": 0.0, + "text": "Furthermore, this isn't a windowed problem.<01:18:17.120> Like<01:18:17.280> you<01:18:17.440> can't<01:18:17.600> really<01:18:17.840> window" + }, + { + "start": 4698.229, + "duration": 0.0, + "text": "problem. Like you can't really window" + }, + { + "start": 4698.239, + "duration": 0.0, + "text": "problem. Like you can't really window this<01:18:18.400> part.<01:18:19.600> Um,<01:18:20.719> doesn't<01:18:20.960> really<01:18:21.120> fit<01:18:21.280> the" + }, + { + "start": 4701.43, + "duration": 0.0, + "text": "this part. Um, doesn't really fit the" + }, + { + "start": 4701.44, + "duration": 0.0, + "text": "this part. Um, doesn't really fit the pattern.<01:18:22.400> Uh,<01:18:23.040> other<01:18:23.360> visualizers,<01:18:24.000> similar" + }, + { + "start": 4704.39, + "duration": 0.0, + "text": "pattern. Uh, other visualizers, similar" + }, + { + "start": 4704.4, + "duration": 0.0, + "text": "pattern. Uh, other visualizers, similar problem.<01:18:24.880> To<01:18:25.040> visualize<01:18:25.440> text,<01:18:26.080> pull<01:18:26.239> it<01:18:26.400> all" + }, + { + "start": 4706.55, + "duration": 0.0, + "text": "problem. To visualize text, pull it all" + }, + { + "start": 4706.56, + "duration": 0.0, + "text": "problem. To visualize text, pull it all down.<01:18:27.120> Disassembly,<01:18:27.760> pull<01:18:27.840> it<01:18:27.920> all<01:18:28.080> down." + }, + { + "start": 4708.229, + "duration": 0.0, + "text": "down. Disassembly, pull it all down." + }, + { + "start": 4708.239, + "duration": 0.0, + "text": "down. Disassembly, pull it all down. Geometry,<01:18:28.800> pull<01:18:28.960> it<01:18:29.040> all<01:18:29.280> down.<01:18:30.080> Um,<01:18:31.040> pointer" + }, + { + "start": 4711.59, + "duration": 0.0, + "text": "Geometry, pull it all down. Um, pointer" + }, + { + "start": 4711.6, + "duration": 0.0, + "text": "Geometry, pull it all down. Um, pointer visualizer,<01:18:32.320> you<01:18:32.480> got<01:18:32.640> to<01:18:32.719> like<01:18:32.960> walk<01:18:33.199> the" + }, + { + "start": 4713.35, + "duration": 0.0, + "text": "visualizer, you got to like walk the" + }, + { + "start": 4713.36, + "duration": 0.0, + "text": "visualizer, you got to like walk the pointer<01:18:33.760> graph<01:18:34.000> and<01:18:34.159> build<01:18:34.320> it<01:18:34.560> up.<01:18:35.760> And<01:18:35.920> so" + }, + { + "start": 4716.07, + "duration": 0.0, + "text": "pointer graph and build it up. And so" + }, + { + "start": 4716.08, + "duration": 0.0, + "text": "pointer graph and build it up. And so you<01:18:36.239> need<01:18:36.400> this<01:18:36.560> like<01:18:36.800> large<01:18:37.120> data" + }, + { + "start": 4717.43, + "duration": 0.0, + "text": "you need this like large data" + }, + { + "start": 4717.44, + "duration": 0.0, + "text": "you need this like large data preparation<01:18:38.000> pass<01:18:38.800> before<01:18:39.120> you<01:18:39.360> actually<01:18:39.520> go" + }, + { + "start": 4719.669, + "duration": 0.0, + "text": "preparation pass before you actually go" + }, + { + "start": 4719.679, + "duration": 0.0, + "text": "preparation pass before you actually go and<01:18:39.920> build<01:18:40.080> the<01:18:40.239> visualizer<01:18:40.800> UI.<01:18:41.600> Um<01:18:43.040> so" + }, + { + "start": 4723.43, + "duration": 0.0, + "text": "and build the visualizer UI. Um so" + }, + { + "start": 4723.44, + "duration": 0.0, + "text": "and build the visualizer UI. Um so putting<01:18:43.679> this<01:18:43.920> non-winded<01:18:44.560> stuff<01:18:44.719> in<01:18:44.880> the<01:18:45.040> UI" + }, + { + "start": 4725.35, + "duration": 0.0, + "text": "putting this non-winded stuff in the UI" + }, + { + "start": 4725.36, + "duration": 0.0, + "text": "putting this non-winded stuff in the UI build<01:18:45.520> just<01:18:45.760> compromises<01:18:46.239> everything.<01:18:46.560> It" + }, + { + "start": 4726.709, + "duration": 0.0, + "text": "build just compromises everything. It" + }, + { + "start": 4726.719, + "duration": 0.0, + "text": "build just compromises everything. It just<01:18:46.880> ruins<01:18:47.199> everything<01:18:47.520> else.<01:18:48.080> If<01:18:48.320> you<01:18:48.400> do" + }, + { + "start": 4728.47, + "duration": 0.0, + "text": "just ruins everything else. If you do" + }, + { + "start": 4728.48, + "duration": 0.0, + "text": "just ruins everything else. If you do this<01:18:48.719> it's<01:18:48.960> like<01:18:49.600> nothing<01:18:49.920> was<01:18:50.159> gained." + }, + { + "start": 4733.03, + "duration": 0.0, + "text": "this it's like nothing was gained." + }, + { + "start": 4733.04, + "duration": 0.0, + "text": "this it's like nothing was gained. So<01:18:53.280> instead" + }, + { + "start": 4735.99, + "duration": 0.0, + "text": "So instead" + }, + { + "start": 4736.0, + "duration": 0.0, + "text": "So instead the<01:18:56.239> evaluation<01:18:56.800> and<01:18:56.960> UI<01:18:57.360> paths<01:18:58.239> use<01:18:58.719> light" + }, + { + "start": 4739.11, + "duration": 0.0, + "text": "the evaluation and UI paths use light" + }, + { + "start": 4739.12, + "duration": 0.0, + "text": "the evaluation and UI paths use light keys<01:18:59.520> to<01:18:59.679> the<01:18:59.840> data.<01:19:00.159> So<01:19:00.320> they<01:19:00.560> say<01:19:01.120> I've<01:19:01.440> got" + }, + { + "start": 4741.59, + "duration": 0.0, + "text": "keys to the data. So they say I've got" + }, + { + "start": 4741.6, + "duration": 0.0, + "text": "keys to the data. So they say I've got some<01:19:01.840> light<01:19:02.159> key<01:19:02.400> which<01:19:02.640> can<01:19:03.120> which<01:19:03.360> can<01:19:03.520> be" + }, + { + "start": 4743.669, + "duration": 0.0, + "text": "some light key which can which can be" + }, + { + "start": 4743.679, + "duration": 0.0, + "text": "some light key which can which can be used<01:19:03.840> to<01:19:04.000> get<01:19:04.159> to<01:19:04.320> the<01:19:04.480> data" + }, + { + "start": 4746.55, + "duration": 0.0, + "text": "used to get to the data" + }, + { + "start": 4746.56, + "duration": 0.0, + "text": "used to get to the data which<01:19:06.800> this<01:19:06.960> is<01:19:07.120> what<01:19:07.360> a<01:19:07.840> like<01:19:08.560> when<01:19:08.719> you<01:19:08.880> use<01:19:09.040> a" + }, + { + "start": 4749.51, + "duration": 0.0, + "text": "which this is what a like when you use a" + }, + { + "start": 4749.52, + "duration": 0.0, + "text": "which this is what a like when you use a file<01:19:09.840> system<01:19:10.080> based<01:19:10.400> program<01:19:10.880> this<01:19:10.960> is<01:19:11.040> what" + }, + { + "start": 4751.189, + "duration": 0.0, + "text": "file system based program this is what" + }, + { + "start": 4751.199, + "duration": 0.0, + "text": "file system based program this is what the<01:19:11.360> path<01:19:11.520> is<01:19:11.760> right<01:19:11.840> you've<01:19:12.080> got<01:19:12.159> some<01:19:12.320> light" + }, + { + "start": 4752.63, + "duration": 0.0, + "text": "the path is right you've got some light" + }, + { + "start": 4752.64, + "duration": 0.0, + "text": "the path is right you've got some light key<01:19:13.040> it's<01:19:13.360> much<01:19:13.520> lighter<01:19:13.840> than<01:19:13.920> the<01:19:14.080> data" + }, + { + "start": 4754.31, + "duration": 0.0, + "text": "key it's much lighter than the data" + }, + { + "start": 4754.32, + "duration": 0.0, + "text": "key it's much lighter than the data which<01:19:14.480> you<01:19:14.719> can<01:19:14.880> use<01:19:15.040> to<01:19:15.280> get<01:19:15.440> to<01:19:15.600> the<01:19:15.760> data<01:19:16.800> and" + }, + { + "start": 4756.95, + "duration": 0.0, + "text": "which you can use to get to the data and" + }, + { + "start": 4756.96, + "duration": 0.0, + "text": "which you can use to get to the data and then<01:19:17.280> the<01:19:17.600> UI<01:19:17.920> thread<01:19:18.159> wants<01:19:18.400> to<01:19:18.480> sort<01:19:18.640> of<01:19:18.800> use" + }, + { + "start": 4758.95, + "duration": 0.0, + "text": "then the UI thread wants to sort of use" + }, + { + "start": 4758.96, + "duration": 0.0, + "text": "then the UI thread wants to sort of use that<01:19:19.199> key<01:19:19.760> and<01:19:19.920> sort<01:19:20.080> of<01:19:20.159> like<01:19:20.480> tell<01:19:20.800> some" + }, + { + "start": 4761.03, + "duration": 0.0, + "text": "that key and sort of like tell some" + }, + { + "start": 4761.04, + "duration": 0.0, + "text": "that key and sort of like tell some system<01:19:21.360> it's<01:19:21.520> like<01:19:21.760> look<01:19:21.920> I've<01:19:22.159> got<01:19:22.480> got<01:19:22.719> this" + }, + { + "start": 4762.87, + "duration": 0.0, + "text": "system it's like look I've got got this" + }, + { + "start": 4762.88, + "duration": 0.0, + "text": "system it's like look I've got got this key<01:19:23.199> give<01:19:23.280> me<01:19:23.440> the<01:19:23.920> go<01:19:24.159> and<01:19:24.320> read<01:19:24.560> and<01:19:24.800> prepare" + }, + { + "start": 4765.11, + "duration": 0.0, + "text": "key give me the go and read and prepare" + }, + { + "start": 4765.12, + "duration": 0.0, + "text": "key give me the go and read and prepare this<01:19:25.280> data<01:19:25.520> for<01:19:25.679> my<01:19:25.840> visualizer<01:19:27.040> and<01:19:27.199> then" + }, + { + "start": 4767.43, + "duration": 0.0, + "text": "this data for my visualizer and then" + }, + { + "start": 4767.44, + "duration": 0.0, + "text": "this data for my visualizer and then when<01:19:27.679> it's<01:19:27.840> ready<01:19:28.080> I'll<01:19:28.320> build<01:19:28.480> the<01:19:28.640> UI<01:19:28.880> with" + }, + { + "start": 4769.03, + "duration": 0.0, + "text": "when it's ready I'll build the UI with" + }, + { + "start": 4769.04, + "duration": 0.0, + "text": "when it's ready I'll build the UI with it<01:19:29.440> Right?" + }, + { + "start": 4771.27, + "duration": 0.0, + "text": "it Right?" + }, + { + "start": 4771.28, + "duration": 0.0, + "text": "it Right? So<01:19:31.840> even<01:19:32.080> if<01:19:32.239> some<01:19:32.400> data<01:19:32.640> preparation<01:19:33.120> task" + }, + { + "start": 4773.59, + "duration": 0.0, + "text": "So even if some data preparation task" + }, + { + "start": 4773.6, + "duration": 0.0, + "text": "So even if some data preparation task takes<01:19:33.920> like<01:19:34.960> n<01:19:35.280> frames<01:19:35.679> to<01:19:35.840> actually<01:19:36.080> execute," + }, + { + "start": 4776.79, + "duration": 0.0, + "text": "takes like n frames to actually execute," + }, + { + "start": 4776.8, + "duration": 0.0, + "text": "takes like n frames to actually execute, the<01:19:36.960> debugger's<01:19:37.440> UI<01:19:37.760> can<01:19:38.000> continue<01:19:38.320> just" + }, + { + "start": 4778.47, + "duration": 0.0, + "text": "the debugger's UI can continue just" + }, + { + "start": 4778.48, + "duration": 0.0, + "text": "the debugger's UI can continue just going<01:19:38.719> along<01:19:39.040> smoothly." + }, + { + "start": 4781.75, + "duration": 0.0, + "text": "going along smoothly." + }, + { + "start": 4781.76, + "duration": 0.0, + "text": "going along smoothly. Very<01:19:42.000> simple<01:19:42.239> way<01:19:42.400> to<01:19:42.640> produce<01:19:42.880> a<01:19:43.040> light<01:19:43.280> key" + }, + { + "start": 4783.83, + "duration": 0.0, + "text": "Very simple way to produce a light key" + }, + { + "start": 4783.84, + "duration": 0.0, + "text": "Very simple way to produce a light key which<01:19:44.159> refers<01:19:44.560> to<01:19:44.800> some<01:19:45.040> data<01:19:45.280> uniquely" + }, + { + "start": 4787.11, + "duration": 0.0, + "text": "which refers to some data uniquely" + }, + { + "start": 4787.12, + "duration": 0.0, + "text": "which refers to some data uniquely is<01:19:47.280> to<01:19:47.440> take<01:19:47.600> a<01:19:47.760> hash<01:19:47.920> of<01:19:48.080> the<01:19:48.239> data.<01:19:48.880> So" + }, + { + "start": 4789.59, + "duration": 0.0, + "text": "is to take a hash of the data. So" + }, + { + "start": 4789.6, + "duration": 0.0, + "text": "is to take a hash of the data. So instead<01:19:49.920> of<01:19:50.080> reading<01:19:50.719> uh<01:19:50.880> all<01:19:51.040> the<01:19:51.280> data<01:19:51.520> for" + }, + { + "start": 4791.669, + "duration": 0.0, + "text": "instead of reading uh all the data for" + }, + { + "start": 4791.679, + "duration": 0.0, + "text": "instead of reading uh all the data for some<01:19:51.840> evaluation<01:19:52.400> every<01:19:52.640> frame,<01:19:54.000> you<01:19:54.159> map<01:19:54.400> it" + }, + { + "start": 4794.47, + "duration": 0.0, + "text": "some evaluation every frame, you map it" + }, + { + "start": 4794.48, + "duration": 0.0, + "text": "some evaluation every frame, you map it to<01:19:54.640> some<01:19:54.800> hash<01:19:55.120> of<01:19:55.280> the<01:19:55.440> data<01:19:56.239> which<01:19:56.400> can<01:19:56.640> serve" + }, + { + "start": 4796.79, + "duration": 0.0, + "text": "to some hash of the data which can serve" + }, + { + "start": 4796.8, + "duration": 0.0, + "text": "to some hash of the data which can serve as<01:19:56.880> the<01:19:57.040> unique<01:19:57.280> key<01:19:57.440> to<01:19:57.600> some<01:19:57.840> content.<01:19:59.120> So" + }, + { + "start": 4799.27, + "duration": 0.0, + "text": "as the unique key to some content. So" + }, + { + "start": 4799.28, + "duration": 0.0, + "text": "as the unique key to some content. So our<01:19:59.440> background<01:19:59.840> data<01:20:00.080> preparation<01:20:00.480> threads" + }, + { + "start": 4800.79, + "duration": 0.0, + "text": "our background data preparation threads" + }, + { + "start": 4800.8, + "duration": 0.0, + "text": "our background data preparation threads can<01:20:00.960> use<01:20:01.120> that<01:20:01.280> hash<01:20:01.920> to<01:20:02.159> obtain<01:20:02.480> the<01:20:02.719> data<01:20:02.960> and" + }, + { + "start": 4803.189, + "duration": 0.0, + "text": "can use that hash to obtain the data and" + }, + { + "start": 4803.199, + "duration": 0.0, + "text": "can use that hash to obtain the data and then<01:20:03.440> process<01:20:03.760> it<01:20:04.400> and<01:20:04.560> so<01:20:04.719> on." + }, + { + "start": 4809.199, + "duration": 0.0, + "text": "So<01:20:09.360> the<01:20:09.520> first<01:20:09.679> thing<01:20:09.840> we<01:20:10.000> need<01:20:10.159> to<01:20:10.320> do<01:20:10.960> uh<01:20:11.199> we" + }, + { + "start": 4811.51, + "duration": 0.0, + "text": "So the first thing we need to do uh we" + }, + { + "start": 4811.52, + "duration": 0.0, + "text": "So the first thing we need to do uh we need<01:20:11.679> to<01:20:11.840> do<01:20:12.080> that<01:20:12.640> is<01:20:12.719> just<01:20:12.960> a<01:20:13.120> cache<01:20:13.760> from<01:20:14.239> a" + }, + { + "start": 4814.31, + "duration": 0.0, + "text": "need to do that is just a cache from a" + }, + { + "start": 4814.32, + "duration": 0.0, + "text": "need to do that is just a cache from a hash<01:20:14.560> to<01:20:14.640> a<01:20:14.800> data<01:20:14.960> right<01:20:15.120> we've<01:20:15.280> got<01:20:15.360> some<01:20:15.600> data" + }, + { + "start": 4815.83, + "duration": 0.0, + "text": "hash to a data right we've got some data" + }, + { + "start": 4815.84, + "duration": 0.0, + "text": "hash to a data right we've got some data structure<01:20:16.400> in<01:20:16.640> our<01:20:16.800> program<01:20:17.040> which<01:20:17.280> says<01:20:17.679> hey" + }, + { + "start": 4817.91, + "duration": 0.0, + "text": "structure in our program which says hey" + }, + { + "start": 4817.92, + "duration": 0.0, + "text": "structure in our program which says hey look<01:20:18.080> you've<01:20:18.239> got<01:20:18.320> a<01:20:18.480> hash<01:20:18.800> here's<01:20:19.040> how<01:20:19.120> you" + }, + { + "start": 4819.189, + "duration": 0.0, + "text": "look you've got a hash here's how you" + }, + { + "start": 4819.199, + "duration": 0.0, + "text": "look you've got a hash here's how you get<01:20:19.360> the<01:20:19.440> data<01:20:19.600> for<01:20:19.760> the<01:20:19.920> hash<01:20:20.719> done." + }, + { + "start": 4823.03, + "duration": 0.0, + "text": "get the data for the hash done." + }, + { + "start": 4823.04, + "duration": 0.0, + "text": "get the data for the hash done. This<01:20:23.280> has<01:20:23.440> the<01:20:23.600> added<01:20:23.840> advantage<01:20:24.159> of<01:20:24.320> like" + }, + { + "start": 4824.55, + "duration": 0.0, + "text": "This has the added advantage of like" + }, + { + "start": 4824.56, + "duration": 0.0, + "text": "This has the added advantage of like this<01:20:24.719> is<01:20:24.880> dduplicating<01:20:25.600> everything,<01:20:25.920> right?" + }, + { + "start": 4826.07, + "duration": 0.0, + "text": "this is dduplicating everything, right?" + }, + { + "start": 4826.08, + "duration": 0.0, + "text": "this is dduplicating everything, right? If<01:20:26.239> you<01:20:26.320> hash<01:20:26.560> the<01:20:26.719> same<01:20:26.800> data<01:20:27.120> twice,<01:20:27.840> you<01:20:28.000> can" + }, + { + "start": 4828.31, + "duration": 0.0, + "text": "If you hash the same data twice, you can" + }, + { + "start": 4828.32, + "duration": 0.0, + "text": "If you hash the same data twice, you can trivially<01:20:28.800> see<01:20:28.960> that<01:20:29.120> when<01:20:29.280> you<01:20:29.440> implement" + }, + { + "start": 4829.669, + "duration": 0.0, + "text": "trivially see that when you implement" + }, + { + "start": 4829.679, + "duration": 0.0, + "text": "trivially see that when you implement this<01:20:29.840> data<01:20:30.080> structure.<01:20:30.400> It's<01:20:30.480> like,<01:20:30.640> oh," + }, + { + "start": 4830.79, + "duration": 0.0, + "text": "this data structure. It's like, oh," + }, + { + "start": 4830.8, + "duration": 0.0, + "text": "this data structure. It's like, oh, these<01:20:31.040> are<01:20:31.120> the<01:20:31.280> same<01:20:31.360> thing.<01:20:31.920> Um,<01:20:32.239> so<01:20:32.480> just," + }, + { + "start": 4832.87, + "duration": 0.0, + "text": "these are the same thing. Um, so just," + }, + { + "start": 4832.88, + "duration": 0.0, + "text": "these are the same thing. Um, so just, you<01:20:32.960> know,<01:20:33.120> don't<01:20:33.440> actually<01:20:33.679> store<01:20:33.920> it<01:20:34.080> twice." + }, + { + "start": 4835.669, + "duration": 0.0, + "text": "you know, don't actually store it twice." + }, + { + "start": 4835.679, + "duration": 0.0, + "text": "you know, don't actually store it twice. Um,<01:20:36.320> then<01:20:36.560> you<01:20:36.719> can<01:20:36.800> build<01:20:36.880> a<01:20:37.120> number<01:20:37.199> of<01:20:37.360> other" + }, + { + "start": 4837.51, + "duration": 0.0, + "text": "Um, then you can build a number of other" + }, + { + "start": 4837.52, + "duration": 0.0, + "text": "Um, then you can build a number of other caches<01:20:37.920> which<01:20:38.080> also<01:20:38.400> store<01:20:38.640> the<01:20:38.960> processed" + }, + { + "start": 4839.51, + "duration": 0.0, + "text": "caches which also store the processed" + }, + { + "start": 4839.52, + "duration": 0.0, + "text": "caches which also store the processed sort<01:20:39.679> of<01:20:39.840> data<01:20:40.239> representations." + }, + { + "start": 4841.75, + "duration": 0.0, + "text": "sort of data representations." + }, + { + "start": 4841.76, + "duration": 0.0, + "text": "sort of data representations. So<01:20:41.920> you<01:20:42.080> might<01:20:42.159> have<01:20:42.239> a<01:20:42.400> cache<01:20:42.719> which<01:20:43.120> uh<01:20:43.280> maps" + }, + { + "start": 4843.59, + "duration": 0.0, + "text": "So you might have a cache which uh maps" + }, + { + "start": 4843.6, + "duration": 0.0, + "text": "So you might have a cache which uh maps a<01:20:43.760> hash<01:20:44.000> and<01:20:44.080> a<01:20:44.239> parameters<01:20:44.560> to<01:20:44.719> a<01:20:44.880> texture" + }, + { + "start": 4845.99, + "duration": 0.0, + "text": "a hash and a parameters to a texture" + }, + { + "start": 4846.0, + "duration": 0.0, + "text": "a hash and a parameters to a texture hash<01:20:46.239> and<01:20:46.400> parameters<01:20:46.960> to<01:20:47.520> a<01:20:47.760> text<01:20:48.159> and<01:20:48.320> like<01:20:48.480> a" + }, + { + "start": 4848.63, + "duration": 0.0, + "text": "hash and parameters to a text and like a" + }, + { + "start": 4848.64, + "duration": 0.0, + "text": "hash and parameters to a text and like a parse<01:20:48.880> of<01:20:49.040> that<01:20:49.199> text<01:20:49.520> like<01:20:49.920> or<01:20:50.480> uh<01:20:50.640> sorry<01:20:51.040> not" + }, + { + "start": 4851.189, + "duration": 0.0, + "text": "parse of that text like or uh sorry not" + }, + { + "start": 4851.199, + "duration": 0.0, + "text": "parse of that text like or uh sorry not not<01:20:51.280> not<01:20:51.679> the<01:20:51.760> text<01:20:52.000> the<01:20:52.159> text<01:20:52.400> just<01:20:52.560> the<01:20:52.719> data" + }, + { + "start": 4852.87, + "duration": 0.0, + "text": "not not the text the text just the data" + }, + { + "start": 4852.88, + "duration": 0.0, + "text": "not not the text the text just the data but<01:20:53.040> the<01:20:53.280> the<01:20:53.520> the<01:20:54.000> textual<01:20:54.480> lex<01:20:54.719> and<01:20:54.960> parse<01:20:55.199> of" + }, + { + "start": 4855.35, + "duration": 0.0, + "text": "but the the the textual lex and parse of" + }, + { + "start": 4855.36, + "duration": 0.0, + "text": "but the the the textual lex and parse of the<01:20:55.440> data<01:20:56.000> got<01:20:56.239> some<01:20:56.400> cache<01:20:56.719> for<01:20:56.880> that" + }, + { + "start": 4860.4, + "duration": 0.0, + "text": "hash<01:21:00.800> parameters<01:21:01.120> to<01:21:01.280> some<01:21:01.360> vertex<01:21:01.679> and<01:21:01.840> index" + }, + { + "start": 4862.149, + "duration": 0.0, + "text": "hash parameters to some vertex and index" + }, + { + "start": 4862.159, + "duration": 0.0, + "text": "hash parameters to some vertex and index buffer" + }, + { + "start": 4864.39, + "duration": 0.0, + "text": "buffer" + }, + { + "start": 4864.4, + "duration": 0.0, + "text": "buffer and<01:21:04.640> then<01:21:04.800> our<01:21:04.960> UI<01:21:05.360> thread<01:21:06.080> when<01:21:06.239> it's" + }, + { + "start": 4866.47, + "duration": 0.0, + "text": "and then our UI thread when it's" + }, + { + "start": 4866.48, + "duration": 0.0, + "text": "and then our UI thread when it's building<01:21:06.719> a<01:21:06.880> UI<01:21:07.280> for<01:21:07.440> a<01:21:07.600> visualizer<01:21:08.320> can<01:21:08.560> just" + }, + { + "start": 4868.709, + "duration": 0.0, + "text": "building a UI for a visualizer can just" + }, + { + "start": 4868.719, + "duration": 0.0, + "text": "building a UI for a visualizer can just read<01:21:08.960> from<01:21:09.120> these<01:21:09.360> caches<01:21:09.760> without<01:21:10.080> doing<01:21:10.239> the" + }, + { + "start": 4870.47, + "duration": 0.0, + "text": "read from these caches without doing the" + }, + { + "start": 4870.48, + "duration": 0.0, + "text": "read from these caches without doing the data<01:21:10.719> processing<01:21:11.120> itself.<01:21:11.280> itself." + }, + { + "start": 4872.79, + "duration": 0.0, + "text": "data processing itself. itself." + }, + { + "start": 4872.8, + "duration": 0.0, + "text": "data processing itself. itself. So,<01:21:13.360> um,<01:21:13.520> when<01:21:13.679> you're<01:21:13.840> building<01:21:13.920> a<01:21:14.080> bit<01:21:14.320> map" + }, + { + "start": 4874.55, + "duration": 0.0, + "text": "So, um, when you're building a bit map" + }, + { + "start": 4874.56, + "duration": 0.0, + "text": "So, um, when you're building a bit map viewer,<01:21:14.960> you<01:21:15.199> just<01:21:16.239> read<01:21:16.560> you<01:21:16.800> just<01:21:16.960> read<01:21:17.120> from" + }, + { + "start": 4877.27, + "duration": 0.0, + "text": "viewer, you just read you just read from" + }, + { + "start": 4877.28, + "duration": 0.0, + "text": "viewer, you just read you just read from that<01:21:17.520> cache." + }, + { + "start": 4879.99, + "duration": 0.0, + "text": "that cache." + }, + { + "start": 4880.0, + "duration": 0.0, + "text": "that cache. When<01:21:20.159> you<01:21:20.239> build<01:21:20.400> a<01:21:20.560> text<01:21:20.800> viewer,<01:21:21.520> read<01:21:21.760> from" + }, + { + "start": 4881.83, + "duration": 0.0, + "text": "When you build a text viewer, read from" + }, + { + "start": 4881.84, + "duration": 0.0, + "text": "When you build a text viewer, read from the<01:21:22.000> text<01:21:22.239> cache.<01:21:23.120> When<01:21:23.360> you're<01:21:23.440> building<01:21:23.600> a" + }, + { + "start": 4883.75, + "duration": 0.0, + "text": "the text cache. When you're building a" + }, + { + "start": 4883.76, + "duration": 0.0, + "text": "the text cache. When you're building a memory<01:21:24.080> viewer,<01:21:24.640> there's<01:21:24.880> there's<01:21:25.120> no" + }, + { + "start": 4885.27, + "duration": 0.0, + "text": "memory viewer, there's there's no" + }, + { + "start": 4885.28, + "duration": 0.0, + "text": "memory viewer, there's there's no special<01:21:25.520> cache.<01:21:25.840> You<01:21:25.920> need<01:21:26.159> just<01:21:26.320> get<01:21:26.480> the" + }, + { + "start": 4886.63, + "duration": 0.0, + "text": "special cache. You need just get the" + }, + { + "start": 4886.64, + "duration": 0.0, + "text": "special cache. You need just get the data<01:21:26.880> from<01:21:27.120> the<01:21:27.280> from<01:21:27.440> the<01:21:27.600> hash<01:21:27.840> to<01:21:28.000> data" + }, + { + "start": 4888.31, + "duration": 0.0, + "text": "data from the from the hash to data" + }, + { + "start": 4888.32, + "duration": 0.0, + "text": "data from the from the hash to data cache.<01:21:28.960> And<01:21:29.120> then<01:21:29.520> when<01:21:29.840> you're<01:21:30.080> doing<01:21:30.400> a" + }, + { + "start": 4890.87, + "duration": 0.0, + "text": "cache. And then when you're doing a" + }, + { + "start": 4890.88, + "duration": 0.0, + "text": "cache. And then when you're doing a geometry<01:21:31.440> visualizer," + }, + { + "start": 4893.03, + "duration": 0.0, + "text": "geometry visualizer," + }, + { + "start": 4893.04, + "duration": 0.0, + "text": "geometry visualizer, unsurprisingly," + }, + { + "start": 4894.709, + "duration": 0.0, + "text": "unsurprisingly," + }, + { + "start": 4894.719, + "duration": 0.0, + "text": "unsurprisingly, everyone<01:21:35.040> can<01:21:35.280> tell,<01:21:35.760> you<01:21:36.000> just<01:21:36.159> read<01:21:36.400> from" + }, + { + "start": 4896.47, + "duration": 0.0, + "text": "everyone can tell, you just read from" + }, + { + "start": 4896.48, + "duration": 0.0, + "text": "everyone can tell, you just read from that<01:21:36.719> cache,<01:21:37.040> right?" + }, + { + "start": 4898.709, + "duration": 0.0, + "text": "that cache, right?" + }, + { + "start": 4898.719, + "duration": 0.0, + "text": "that cache, right? And<01:21:38.880> again,<01:21:39.120> instead<01:21:39.360> of<01:21:39.520> the<01:21:39.679> UI<01:21:40.000> thread" + }, + { + "start": 4900.31, + "duration": 0.0, + "text": "And again, instead of the UI thread" + }, + { + "start": 4900.32, + "duration": 0.0, + "text": "And again, instead of the UI thread doing<01:21:40.480> that<01:21:40.719> work,<01:21:41.199> you've<01:21:41.440> got<01:21:41.520> these" + }, + { + "start": 4901.669, + "duration": 0.0, + "text": "doing that work, you've got these" + }, + { + "start": 4901.679, + "duration": 0.0, + "text": "doing that work, you've got these background<01:21:42.080> work<01:21:42.239> threads<01:21:42.560> that<01:21:42.719> are<01:21:42.800> that" + }, + { + "start": 4903.03, + "duration": 0.0, + "text": "background work threads that are that" + }, + { + "start": 4903.04, + "duration": 0.0, + "text": "background work threads that are that are<01:21:43.120> filling<01:21:43.440> those<01:21:43.600> caches<01:21:44.080> as<01:21:44.320> needed.<01:21:45.600> So" + }, + { + "start": 4905.669, + "duration": 0.0, + "text": "are filling those caches as needed. So" + }, + { + "start": 4905.679, + "duration": 0.0, + "text": "are filling those caches as needed. So the<01:21:45.840> UI<01:21:46.159> thread<01:21:46.400> can<01:21:46.719> request<01:21:47.199> some<01:21:47.440> hash." + }, + { + "start": 4907.75, + "duration": 0.0, + "text": "the UI thread can request some hash." + }, + { + "start": 4907.76, + "duration": 0.0, + "text": "the UI thread can request some hash. It's<01:21:47.920> like,<01:21:48.400> look,<01:21:48.640> I've<01:21:48.800> got<01:21:48.880> this<01:21:49.040> hash<01:21:49.280> from" + }, + { + "start": 4909.43, + "duration": 0.0, + "text": "It's like, look, I've got this hash from" + }, + { + "start": 4909.44, + "duration": 0.0, + "text": "It's like, look, I've got this hash from an<01:21:49.600> evaluation.<01:21:50.400> It<01:21:50.560> has<01:21:50.719> these<01:21:50.960> visualizer" + }, + { + "start": 4911.51, + "duration": 0.0, + "text": "an evaluation. It has these visualizer" + }, + { + "start": 4911.52, + "duration": 0.0, + "text": "an evaluation. It has these visualizer parameters.<01:21:52.960> Please<01:21:53.280> give<01:21:53.360> me<01:21:53.520> the<01:21:53.920> thing." + }, + { + "start": 4914.149, + "duration": 0.0, + "text": "parameters. Please give me the thing." + }, + { + "start": 4914.159, + "duration": 0.0, + "text": "parameters. Please give me the thing. And<01:21:54.320> then<01:21:54.480> the<01:21:54.639> cache<01:21:54.960> can<01:21:55.120> say,<01:21:55.600> hey<01:21:55.840> buddy," + }, + { + "start": 4916.07, + "duration": 0.0, + "text": "And then the cache can say, hey buddy," + }, + { + "start": 4916.08, + "duration": 0.0, + "text": "And then the cache can say, hey buddy, don't<01:21:56.239> have<01:21:56.320> it<01:21:56.480> yet.<01:21:56.880> UI<01:21:57.280> can<01:21:57.520> say<01:21:57.679> like,<01:21:58.639> no" + }, + { + "start": 4918.87, + "duration": 0.0, + "text": "don't have it yet. UI can say like, no" + }, + { + "start": 4918.88, + "duration": 0.0, + "text": "don't have it yet. UI can say like, no problem,<01:21:59.280> bro.<01:22:00.080> I'll<01:22:00.320> just,<01:22:00.639> you<01:22:00.719> know,<01:22:00.960> go" + }, + { + "start": 4921.11, + "duration": 0.0, + "text": "problem, bro. I'll just, you know, go" + }, + { + "start": 4921.12, + "duration": 0.0, + "text": "problem, bro. I'll just, you know, go and<01:22:01.760> draw<01:22:01.920> an<01:22:02.159> empty<01:22:02.400> screen<01:22:02.639> or<01:22:02.880> whatever<01:22:03.280> or" + }, + { + "start": 4923.51, + "duration": 0.0, + "text": "and draw an empty screen or whatever or" + }, + { + "start": 4923.52, + "duration": 0.0, + "text": "and draw an empty screen or whatever or an<01:22:03.679> empty<01:22:03.920> visualizer<01:22:04.400> in<01:22:04.639> that<01:22:04.800> case.<01:22:05.920> Um" + }, + { + "start": 4927.51, + "duration": 0.0, + "text": "an empty visualizer in that case. Um" + }, + { + "start": 4927.52, + "duration": 0.0, + "text": "an empty visualizer in that case. Um point<01:22:07.679> is<01:22:07.920> it<01:22:08.159> can<01:22:08.400> continue<01:22:08.719> along<01:22:09.040> smoothly," + }, + { + "start": 4929.43, + "duration": 0.0, + "text": "point is it can continue along smoothly," + }, + { + "start": 4929.44, + "duration": 0.0, + "text": "point is it can continue along smoothly, right?<01:22:09.600> The<01:22:09.679> UI<01:22:09.920> is<01:22:10.080> not<01:22:10.159> blocked,<01:22:10.480> the<01:22:10.639> user" + }, + { + "start": 4930.87, + "duration": 0.0, + "text": "right? The UI is not blocked, the user" + }, + { + "start": 4930.88, + "duration": 0.0, + "text": "right? The UI is not blocked, the user is<01:22:11.040> not<01:22:11.199> blocked,<01:22:11.840> which<01:22:12.080> is<01:22:12.560> priority." + }, + { + "start": 4934.629, + "duration": 0.0, + "text": "is not blocked, which is priority." + }, + { + "start": 4934.639, + "duration": 0.0, + "text": "is not blocked, which is priority. So<01:22:14.880> taking<01:22:15.120> a<01:22:15.280> step<01:22:15.440> back,<01:22:16.639> let's<01:22:16.880> think<01:22:17.040> about" + }, + { + "start": 4937.189, + "duration": 0.0, + "text": "So taking a step back, let's think about" + }, + { + "start": 4937.199, + "duration": 0.0, + "text": "So taking a step back, let's think about some<01:22:17.360> pseudo<01:22:17.760> code<01:22:17.920> we<01:22:18.159> might<01:22:18.400> write<01:22:18.639> to<01:22:18.880> build" + }, + { + "start": 4938.95, + "duration": 0.0, + "text": "some pseudo code we might write to build" + }, + { + "start": 4938.96, + "duration": 0.0, + "text": "some pseudo code we might write to build a<01:22:19.120> bit<01:22:19.360> map<01:22:19.520> viewer.<01:22:20.880> You<01:22:21.199> get<01:22:21.440> some" + }, + { + "start": 4941.59, + "duration": 0.0, + "text": "a bit map viewer. You get some" + }, + { + "start": 4941.6, + "duration": 0.0, + "text": "a bit map viewer. You get some evaluation.<01:22:22.239> It's<01:22:22.400> like<01:22:22.560> passed<01:22:22.800> into<01:22:23.040> the" + }, + { + "start": 4943.11, + "duration": 0.0, + "text": "evaluation. It's like passed into the" + }, + { + "start": 4943.12, + "duration": 0.0, + "text": "evaluation. It's like passed into the bitmap<01:22:23.520> viewer,<01:22:23.760> right?<01:22:24.080> Again,<01:22:24.400> this<01:22:24.560> is" + }, + { + "start": 4944.629, + "duration": 0.0, + "text": "bitmap viewer, right? Again, this is" + }, + { + "start": 4944.639, + "duration": 0.0, + "text": "bitmap viewer, right? Again, this is implementing<01:22:25.280> eval<01:22:25.679> to<01:22:25.840> UI.<01:22:26.320> That<01:22:26.560> arrow<01:22:27.120> get" + }, + { + "start": 4947.27, + "duration": 0.0, + "text": "implementing eval to UI. That arrow get" + }, + { + "start": 4947.28, + "duration": 0.0, + "text": "implementing eval to UI. That arrow get the<01:22:27.440> eval,<01:22:28.000> get<01:22:28.159> an<01:22:28.320> address,<01:22:28.639> get<01:22:28.719> a<01:22:28.880> width." + }, + { + "start": 4949.189, + "duration": 0.0, + "text": "the eval, get an address, get a width." + }, + { + "start": 4949.199, + "duration": 0.0, + "text": "the eval, get an address, get a width. Again,<01:22:29.360> these<01:22:29.600> are<01:22:29.679> all<01:22:29.840> implied<01:22:30.159> by<01:22:30.239> the<01:22:30.400> type" + }, + { + "start": 4950.55, + "duration": 0.0, + "text": "Again, these are all implied by the type" + }, + { + "start": 4950.56, + "duration": 0.0, + "text": "Again, these are all implied by the type info.<01:22:30.800> So<01:22:30.960> we<01:22:31.040> get<01:22:31.199> an<01:22:31.360> address,<01:22:31.600> width," + }, + { + "start": 4951.91, + "duration": 0.0, + "text": "info. So we get an address, width," + }, + { + "start": 4951.92, + "duration": 0.0, + "text": "info. So we get an address, width, height,<01:22:32.239> format,<01:22:32.719> size,<01:22:33.520> hash<01:22:34.400> from<01:22:34.639> some" + }, + { + "start": 4954.87, + "duration": 0.0, + "text": "height, format, size, hash from some" + }, + { + "start": 4954.88, + "duration": 0.0, + "text": "height, format, size, hash from some space<01:22:35.280> and<01:22:35.440> some<01:22:35.600> range." + }, + { + "start": 4957.669, + "duration": 0.0, + "text": "space and some range." + }, + { + "start": 4957.679, + "duration": 0.0, + "text": "space and some range. We<01:22:37.840> can<01:22:37.920> get<01:22:38.080> a<01:22:38.239> texture<01:22:38.560> from<01:22:38.719> some<01:22:38.880> hash<01:22:39.120> in" + }, + { + "start": 4959.35, + "duration": 0.0, + "text": "We can get a texture from some hash in" + }, + { + "start": 4959.36, + "duration": 0.0, + "text": "We can get a texture from some hash in those<01:22:39.520> parameters.<01:22:40.159> Then<01:22:40.320> we<01:22:40.480> can<01:22:40.560> draw<01:22:40.719> the" + }, + { + "start": 4960.87, + "duration": 0.0, + "text": "those parameters. Then we can draw the" + }, + { + "start": 4960.88, + "duration": 0.0, + "text": "those parameters. Then we can draw the texture.<01:22:41.600> Right?<01:22:42.400> Pretty<01:22:42.639> pretty<01:22:43.040> like" + }, + { + "start": 4963.189, + "duration": 0.0, + "text": "texture. Right? Pretty pretty like" + }, + { + "start": 4963.199, + "duration": 0.0, + "text": "texture. Right? Pretty pretty like pseudo<01:22:43.520> code<01:22:43.760> high<01:22:44.000> level,<01:22:44.159> but<01:22:44.719> hopefully" + }, + { + "start": 4965.03, + "duration": 0.0, + "text": "pseudo code high level, but hopefully" + }, + { + "start": 4965.04, + "duration": 0.0, + "text": "pseudo code high level, but hopefully that<01:22:45.199> sketches<01:22:45.600> it<01:22:45.760> out<01:22:45.920> pretty<01:22:46.159> well." + }, + { + "start": 4971.36, + "duration": 0.0, + "text": "Still<01:22:51.600> nervous<01:22:51.840> to<01:22:52.000> press<01:22:52.239> it.<01:22:53.040> Um" + }, + { + "start": 4975.35, + "duration": 0.0, + "text": "Still nervous to press it. Um" + }, + { + "start": 4975.36, + "duration": 0.0, + "text": "Still nervous to press it. Um now<01:22:55.520> the<01:22:55.679> last<01:22:55.760> thing<01:22:55.920> I'd<01:22:56.080> like<01:22:56.159> to<01:22:56.239> cover<01:22:56.400> is" + }, + { + "start": 4976.629, + "duration": 0.0, + "text": "now the last thing I'd like to cover is" + }, + { + "start": 4976.639, + "duration": 0.0, + "text": "now the last thing I'd like to cover is one<01:22:56.880> problem<01:22:57.679> we've<01:22:58.000> introduced<01:22:58.400> by" + }, + { + "start": 4978.55, + "duration": 0.0, + "text": "one problem we've introduced by" + }, + { + "start": 4978.56, + "duration": 0.0, + "text": "one problem we've introduced by switching<01:22:58.880> to<01:22:59.040> content<01:22:59.840> based<01:23:00.080> visualizers" + }, + { + "start": 4980.87, + "duration": 0.0, + "text": "switching to content based visualizers" + }, + { + "start": 4980.88, + "duration": 0.0, + "text": "switching to content based visualizers and<01:23:01.120> that<01:23:01.280> has<01:23:01.360> to<01:23:01.520> do<01:23:01.600> with<01:23:01.760> how<01:23:02.159> like<01:23:02.400> you" + }, + { + "start": 4982.55, + "duration": 0.0, + "text": "and that has to do with how like you" + }, + { + "start": 4982.56, + "duration": 0.0, + "text": "and that has to do with how like you have<01:23:02.639> a<01:23:02.800> hash<01:23:03.280> the<01:23:03.440> hash<01:23:03.679> can<01:23:03.920> change<01:23:04.159> across" + }, + { + "start": 4984.55, + "duration": 0.0, + "text": "have a hash the hash can change across" + }, + { + "start": 4984.56, + "duration": 0.0, + "text": "have a hash the hash can change across time<01:23:04.800> because<01:23:05.280> you<01:23:05.360> know<01:23:05.520> a<01:23:05.679> program<01:23:05.920> is" + }, + { + "start": 4986.149, + "duration": 0.0, + "text": "time because you know a program is" + }, + { + "start": 4986.159, + "duration": 0.0, + "text": "time because you know a program is mutating<01:23:06.719> some<01:23:06.960> some<01:23:07.280> data<01:23:07.920> so<01:23:08.080> you<01:23:08.239> get<01:23:08.400> a" + }, + { + "start": 4988.55, + "duration": 0.0, + "text": "mutating some some data so you get a" + }, + { + "start": 4988.56, + "duration": 0.0, + "text": "mutating some some data so you get a different<01:23:08.639> hash<01:23:08.960> when<01:23:09.120> you<01:23:09.199> actually<01:23:09.360> hash" + }, + { + "start": 4989.669, + "duration": 0.0, + "text": "different hash when you actually hash" + }, + { + "start": 4989.679, + "duration": 0.0, + "text": "different hash when you actually hash that<01:23:09.840> data.<01:23:10.560> So<01:23:10.880> you<01:23:11.040> know<01:23:11.120> if<01:23:11.280> you<01:23:11.440> step<01:23:12.080> like" + }, + { + "start": 4992.47, + "duration": 0.0, + "text": "that data. So you know if you step like" + }, + { + "start": 4992.48, + "duration": 0.0, + "text": "that data. So you know if you step like the<01:23:12.719> hash<01:23:13.040> of<01:23:13.440> many<01:23:13.760> things<01:23:14.000> will<01:23:14.239> change." + }, + { + "start": 4996.229, + "duration": 0.0, + "text": "the hash of many things will change." + }, + { + "start": 4996.239, + "duration": 0.0, + "text": "the hash of many things will change. So<01:23:17.120> imagine<01:23:17.520> this<01:23:17.760> scenario.<01:23:18.159> You<01:23:18.239> know," + }, + { + "start": 4998.39, + "duration": 0.0, + "text": "So imagine this scenario. You know," + }, + { + "start": 4998.4, + "duration": 0.0, + "text": "So imagine this scenario. You know, we've<01:23:18.560> got<01:23:18.639> some<01:23:18.880> visualizer.<01:23:19.360> It's<01:23:19.440> got<01:23:19.520> an" + }, + { + "start": 4999.669, + "duration": 0.0, + "text": "we've got some visualizer. It's got an" + }, + { + "start": 4999.679, + "duration": 0.0, + "text": "we've got some visualizer. It's got an eval<01:23:20.080> to<01:23:20.159> a<01:23:20.320> hash.<01:23:20.880> Get<01:23:21.120> some<01:23:21.280> hash<01:23:22.000> which<01:23:22.159> maps" + }, + { + "start": 5002.39, + "duration": 0.0, + "text": "eval to a hash. Get some hash which maps" + }, + { + "start": 5002.4, + "duration": 0.0, + "text": "eval to a hash. Get some hash which maps to<01:23:22.560> some<01:23:22.719> visualizer<01:23:23.199> data.<01:23:23.920> At<01:23:24.239> time<01:23:24.560> zero," + }, + { + "start": 5005.11, + "duration": 0.0, + "text": "to some visualizer data. At time zero," + }, + { + "start": 5005.12, + "duration": 0.0, + "text": "to some visualizer data. At time zero, like<01:23:25.280> we<01:23:25.520> were<01:23:25.760> building<01:23:26.000> the<01:23:26.159> UI<01:23:26.400> at<01:23:26.560> time" + }, + { + "start": 5006.79, + "duration": 0.0, + "text": "like we were building the UI at time" + }, + { + "start": 5006.8, + "duration": 0.0, + "text": "like we were building the UI at time zero.<01:23:27.600> A<01:23:27.760> and<01:23:27.920> B<01:23:28.080> both<01:23:28.400> pass.<01:23:28.800> We<01:23:28.960> get<01:23:29.040> an<01:23:29.199> eval" + }, + { + "start": 5009.51, + "duration": 0.0, + "text": "zero. A and B both pass. We get an eval" + }, + { + "start": 5009.52, + "duration": 0.0, + "text": "zero. A and B both pass. We get an eval and<01:23:29.600> a<01:23:29.679> hash.<01:23:29.920> We<01:23:30.000> get<01:23:30.080> a<01:23:30.159> hash<01:23:30.320> and<01:23:30.400> a" + }, + { + "start": 5010.55, + "duration": 0.0, + "text": "and a hash. We get a hash and a" + }, + { + "start": 5010.56, + "duration": 0.0, + "text": "and a hash. We get a hash and a visualizer<01:23:30.960> data.<01:23:31.600> All<01:23:31.760> good.<01:23:32.000> We<01:23:32.159> build<01:23:32.320> the" + }, + { + "start": 5012.47, + "duration": 0.0, + "text": "visualizer data. All good. We build the" + }, + { + "start": 5012.48, + "duration": 0.0, + "text": "visualizer data. All good. We build the visualizer.<01:23:33.840> At<01:23:34.159> t1,<01:23:35.040> we<01:23:35.199> get<01:23:35.360> a<01:23:35.520> new<01:23:35.679> hash," + }, + { + "start": 5016.709, + "duration": 0.0, + "text": "visualizer. At t1, we get a new hash," + }, + { + "start": 5016.719, + "duration": 0.0, + "text": "visualizer. At t1, we get a new hash, but<01:23:37.120> b<01:23:37.280> is<01:23:37.440> still<01:23:37.679> preparing,<01:23:38.800> which<01:23:39.120> means<01:23:39.280> we" + }, + { + "start": 5019.43, + "duration": 0.0, + "text": "but b is still preparing, which means we" + }, + { + "start": 5019.44, + "duration": 0.0, + "text": "but b is still preparing, which means we do<01:23:39.679> not<01:23:39.840> visualize<01:23:40.400> successfully.<01:23:41.840> And<01:23:42.000> at" + }, + { + "start": 5022.229, + "duration": 0.0, + "text": "do not visualize successfully. And at" + }, + { + "start": 5022.239, + "duration": 0.0, + "text": "do not visualize successfully. And at time<01:23:42.480> two,<01:23:42.800> B<01:23:43.120> has<01:23:43.360> actually<01:23:43.679> completed<01:23:44.159> again" + }, + { + "start": 5024.55, + "duration": 0.0, + "text": "time two, B has actually completed again" + }, + { + "start": 5024.56, + "duration": 0.0, + "text": "time two, B has actually completed again with<01:23:44.880> the<01:23:45.040> new<01:23:45.199> hash.<01:23:45.520> And<01:23:45.679> we<01:23:45.840> can<01:23:46.000> continue" + }, + { + "start": 5026.39, + "duration": 0.0, + "text": "with the new hash. And we can continue" + }, + { + "start": 5026.4, + "duration": 0.0, + "text": "with the new hash. And we can continue building<01:23:47.120> the<01:23:47.360> the<01:23:47.679> UI." + }, + { + "start": 5029.189, + "duration": 0.0, + "text": "building the the UI." + }, + { + "start": 5029.199, + "duration": 0.0, + "text": "building the the UI. And<01:23:49.920> what<01:23:50.159> this<01:23:50.400> manifests<01:23:50.960> as<01:23:51.280> as<01:23:52.080> maybe" + }, + { + "start": 5032.31, + "duration": 0.0, + "text": "And what this manifests as as maybe" + }, + { + "start": 5032.32, + "duration": 0.0, + "text": "And what this manifests as as maybe unsurprisingly<01:23:53.040> is<01:23:53.280> at<01:23:53.520> time<01:23:53.679> zero<01:23:54.000> you<01:23:54.159> get<01:23:54.239> a" + }, + { + "start": 5034.39, + "duration": 0.0, + "text": "unsurprisingly is at time zero you get a" + }, + { + "start": 5034.4, + "duration": 0.0, + "text": "unsurprisingly is at time zero you get a picture.<01:23:54.719> At<01:23:54.880> time<01:23:55.040> one<01:23:55.280> you<01:23:55.440> don't.<01:23:55.920> At<01:23:56.159> time" + }, + { + "start": 5036.709, + "duration": 0.0, + "text": "picture. At time one you don't. At time" + }, + { + "start": 5036.719, + "duration": 0.0, + "text": "picture. At time one you don't. At time two<01:23:57.440> you<01:23:57.679> get<01:23:57.840> a<01:23:58.000> picture.<01:23:58.719> It's<01:23:58.960> flickering." + }, + { + "start": 5039.51, + "duration": 0.0, + "text": "two you get a picture. It's flickering." + }, + { + "start": 5039.52, + "duration": 0.0, + "text": "two you get a picture. It's flickering. It<01:23:59.679> gets<01:23:59.920> harder<01:24:00.159> to<01:24:00.320> track<01:24:00.639> how<01:24:00.880> data<01:24:01.120> is" + }, + { + "start": 5041.27, + "duration": 0.0, + "text": "It gets harder to track how data is" + }, + { + "start": 5041.28, + "duration": 0.0, + "text": "It gets harder to track how data is changing<01:24:01.600> across<01:24:02.000> time<01:24:02.800> because<01:24:03.120> you've<01:24:03.360> lost" + }, + { + "start": 5043.59, + "duration": 0.0, + "text": "changing across time because you've lost" + }, + { + "start": 5043.6, + "duration": 0.0, + "text": "changing across time because you've lost that<01:24:03.760> sort<01:24:03.920> of<01:24:04.000> what<01:24:04.239> the<01:24:04.400> file<01:24:04.560> path<01:24:04.880> was" + }, + { + "start": 5045.03, + "duration": 0.0, + "text": "that sort of what the file path was" + }, + { + "start": 5045.04, + "duration": 0.0, + "text": "that sort of what the file path was providing<01:24:05.280> was<01:24:05.520> sort<01:24:05.679> of<01:24:05.679> the<01:24:06.000> identity.<01:24:06.400> It's" + }, + { + "start": 5046.55, + "duration": 0.0, + "text": "providing was sort of the identity. It's" + }, + { + "start": 5046.56, + "duration": 0.0, + "text": "providing was sort of the identity. It's sort<01:24:06.719> of<01:24:06.800> this<01:24:07.040> key<01:24:07.600> that<01:24:07.920> refers.<01:24:08.400> It's<01:24:08.639> like" + }, + { + "start": 5048.79, + "duration": 0.0, + "text": "sort of this key that refers. It's like" + }, + { + "start": 5048.8, + "duration": 0.0, + "text": "sort of this key that refers. It's like the<01:24:09.040> name<01:24:09.280> of<01:24:09.360> the<01:24:09.600> thing<01:24:10.080> but<01:24:10.320> not<01:24:10.480> the" + }, + { + "start": 5050.629, + "duration": 0.0, + "text": "the name of the thing but not the" + }, + { + "start": 5050.639, + "duration": 0.0, + "text": "the name of the thing but not the content<01:24:10.880> of<01:24:11.040> the<01:24:11.120> thing.<01:24:11.360> It<01:24:11.520> can<01:24:11.600> refer<01:24:11.840> to" + }, + { + "start": 5051.99, + "duration": 0.0, + "text": "content of the thing. It can refer to" + }, + { + "start": 5052.0, + "duration": 0.0, + "text": "content of the thing. It can refer to the<01:24:12.159> same<01:24:12.320> thing<01:24:12.480> across<01:24:12.880> time.<01:24:13.600> We<01:24:13.920> lost<01:24:14.159> that" + }, + { + "start": 5054.39, + "duration": 0.0, + "text": "the same thing across time. We lost that" + }, + { + "start": 5054.4, + "duration": 0.0, + "text": "the same thing across time. We lost that when<01:24:14.560> we<01:24:14.719> moved<01:24:14.960> to<01:24:16.239> to<01:24:16.560> content<01:24:17.440> based" + }, + { + "start": 5057.75, + "duration": 0.0, + "text": "when we moved to to content based" + }, + { + "start": 5057.76, + "duration": 0.0, + "text": "when we moved to to content based visualizers.<01:24:18.400> So<01:24:18.560> how<01:24:18.639> do<01:24:18.719> we<01:24:18.880> get<01:24:18.960> it<01:24:19.120> back?" + }, + { + "start": 5061.59, + "duration": 0.0, + "text": "visualizers. So how do we get it back?" + }, + { + "start": 5061.6, + "duration": 0.0, + "text": "visualizers. So how do we get it back? Um<01:24:22.719> and<01:24:23.040> really<01:24:24.080> maybe<01:24:24.400> not<01:24:24.639> surprising<01:24:25.600> we" + }, + { + "start": 5065.83, + "duration": 0.0, + "text": "Um and really maybe not surprising we" + }, + { + "start": 5065.84, + "duration": 0.0, + "text": "Um and really maybe not surprising we really<01:24:26.000> want<01:24:26.159> to<01:24:26.320> map<01:24:26.639> to<01:24:27.120> some<01:24:27.440> key<01:24:27.760> which<01:24:28.000> can" + }, + { + "start": 5068.149, + "duration": 0.0, + "text": "really want to map to some key which can" + }, + { + "start": 5068.159, + "duration": 0.0, + "text": "really want to map to some key which can get<01:24:28.320> us<01:24:28.480> to<01:24:28.639> a<01:24:28.880> list<01:24:29.120> of<01:24:29.280> hashes<01:24:30.080> like<01:24:30.239> a" + }, + { + "start": 5070.47, + "duration": 0.0, + "text": "get us to a list of hashes like a" + }, + { + "start": 5070.48, + "duration": 0.0, + "text": "get us to a list of hashes like a history<01:24:30.719> of<01:24:30.880> hashes<01:24:31.360> if<01:24:31.520> you<01:24:31.600> will." + }, + { + "start": 5072.79, + "duration": 0.0, + "text": "history of hashes if you will." + }, + { + "start": 5072.8, + "duration": 0.0, + "text": "history of hashes if you will. And<01:24:32.960> at<01:24:33.199> that<01:24:33.440> point,<01:24:34.000> once<01:24:34.239> we<01:24:34.400> have<01:24:34.560> that," + }, + { + "start": 5075.11, + "duration": 0.0, + "text": "And at that point, once we have that," + }, + { + "start": 5075.12, + "duration": 0.0, + "text": "And at that point, once we have that, once<01:24:35.360> we<01:24:35.520> have<01:24:35.600> some<01:24:35.920> unique<01:24:36.400> identity<01:24:36.719> which" + }, + { + "start": 5076.87, + "duration": 0.0, + "text": "once we have some unique identity which" + }, + { + "start": 5076.88, + "duration": 0.0, + "text": "once we have some unique identity which can<01:24:37.040> refer<01:24:37.280> to<01:24:37.360> a<01:24:37.520> history<01:24:37.760> of<01:24:37.920> hashes<01:24:38.320> across" + }, + { + "start": 5078.629, + "duration": 0.0, + "text": "can refer to a history of hashes across" + }, + { + "start": 5078.639, + "duration": 0.0, + "text": "can refer to a history of hashes across time,<01:24:39.199> we're<01:24:39.360> at<01:24:39.520> time<01:24:39.760> one,<01:24:40.480> we<01:24:40.719> know<01:24:40.960> B" + }, + { + "start": 5081.189, + "duration": 0.0, + "text": "time, we're at time one, we know B" + }, + { + "start": 5081.199, + "duration": 0.0, + "text": "time, we're at time one, we know B fails,<01:24:41.679> we<01:24:41.920> just<01:24:42.080> roll<01:24:42.320> back,<01:24:42.639> just<01:24:43.040> okay," + }, + { + "start": 5083.35, + "duration": 0.0, + "text": "fails, we just roll back, just okay," + }, + { + "start": 5083.36, + "duration": 0.0, + "text": "fails, we just roll back, just okay, grab<01:24:43.600> the<01:24:43.760> previous<01:24:44.080> results,<01:24:44.719> keep<01:24:44.960> building" + }, + { + "start": 5085.189, + "duration": 0.0, + "text": "grab the previous results, keep building" + }, + { + "start": 5085.199, + "duration": 0.0, + "text": "grab the previous results, keep building the<01:24:45.360> stale<01:24:45.679> results<01:24:45.920> so<01:24:46.080> that<01:24:46.239> the<01:24:46.400> user<01:24:46.639> is" + }, + { + "start": 5086.79, + "duration": 0.0, + "text": "the stale results so that the user is" + }, + { + "start": 5086.8, + "duration": 0.0, + "text": "the stale results so that the user is not<01:24:46.960> like<01:24:47.360> seeing<01:24:47.600> stuff<01:24:47.840> flash<01:24:48.080> in<01:24:48.239> their" + }, + { + "start": 5088.31, + "duration": 0.0, + "text": "not like seeing stuff flash in their" + }, + { + "start": 5088.32, + "duration": 0.0, + "text": "not like seeing stuff flash in their face<01:24:48.480> when<01:24:48.639> they're<01:24:48.800> trying<01:24:48.880> to<01:24:48.960> see<01:24:49.040> how" + }, + { + "start": 5089.27, + "duration": 0.0, + "text": "face when they're trying to see how" + }, + { + "start": 5089.28, + "duration": 0.0, + "text": "face when they're trying to see how something<01:24:49.440> is<01:24:49.679> changing,<01:24:50.159> right?" + }, + { + "start": 5093.52, + "duration": 0.0, + "text": "Furthermore,<01:24:54.560> this<01:24:54.880> step<01:24:55.280> is<01:24:55.520> the<01:24:55.679> first<01:24:55.920> step" + }, + { + "start": 5096.229, + "duration": 0.0, + "text": "Furthermore, this step is the first step" + }, + { + "start": 5096.239, + "duration": 0.0, + "text": "Furthermore, this step is the first step to<01:24:56.400> solving<01:24:56.639> a<01:24:56.880> different<01:24:57.040> problem." + }, + { + "start": 5101.44, + "duration": 0.0, + "text": "So<01:25:01.920> while<01:25:02.159> this<01:25:02.320> kind<01:25:02.400> of<01:25:02.480> debugger" + }, + { + "start": 5102.87, + "duration": 0.0, + "text": "So while this kind of debugger" + }, + { + "start": 5102.88, + "duration": 0.0, + "text": "So while this kind of debugger visualization<01:25:03.440> engine<01:25:03.840> can<01:25:04.080> be<01:25:04.400> pretty<01:25:04.800> good" + }, + { + "start": 5105.03, + "duration": 0.0, + "text": "visualization engine can be pretty good" + }, + { + "start": 5105.04, + "duration": 0.0, + "text": "visualization engine can be pretty good at<01:25:06.000> like<01:25:06.239> looking<01:25:06.480> at<01:25:06.719> things<01:25:06.880> quickly<01:25:07.679> and" + }, + { + "start": 5107.99, + "duration": 0.0, + "text": "at like looking at things quickly and" + }, + { + "start": 5108.0, + "duration": 0.0, + "text": "at like looking at things quickly and interactively<01:25:08.719> and<01:25:08.880> and<01:25:08.960> and<01:25:09.840> seeing<01:25:10.320> data<01:25:10.639> at" + }, + { + "start": 5110.87, + "duration": 0.0, + "text": "interactively and and and seeing data at" + }, + { + "start": 5110.88, + "duration": 0.0, + "text": "interactively and and and seeing data at certain<01:25:11.199> points<01:25:11.520> in<01:25:11.760> time<01:25:12.880> and<01:25:13.040> still<01:25:13.280> lacking" + }, + { + "start": 5113.91, + "duration": 0.0, + "text": "certain points in time and still lacking" + }, + { + "start": 5113.92, + "duration": 0.0, + "text": "certain points in time and still lacking something<01:25:14.239> that<01:25:14.480> logging<01:25:14.960> provides<01:25:15.600> which<01:25:15.840> a" + }, + { + "start": 5115.99, + "duration": 0.0, + "text": "something that logging provides which a" + }, + { + "start": 5116.0, + "duration": 0.0, + "text": "something that logging provides which a log<01:25:16.320> kind<01:25:16.560> of<01:25:16.639> covers<01:25:16.960> a<01:25:17.199> whole<01:25:17.679> range<01:25:17.920> of" + }, + { + "start": 5118.149, + "duration": 0.0, + "text": "log kind of covers a whole range of" + }, + { + "start": 5118.159, + "duration": 0.0, + "text": "log kind of covers a whole range of time.<01:25:19.040> This<01:25:19.440> visualizer<01:25:20.080> kind<01:25:20.320> of<01:25:20.639> po<01:25:21.120> uh<01:25:21.600> sort" + }, + { + "start": 5121.75, + "duration": 0.0, + "text": "time. This visualizer kind of po uh sort" + }, + { + "start": 5121.76, + "duration": 0.0, + "text": "time. This visualizer kind of po uh sort of<01:25:21.840> like<01:25:22.000> pokes<01:25:22.400> into<01:25:22.719> points<01:25:22.960> of<01:25:23.120> time" + }, + { + "start": 5124.629, + "duration": 0.0, + "text": "of like pokes into points of time" + }, + { + "start": 5124.639, + "duration": 0.0, + "text": "of like pokes into points of time and<01:25:24.960> shows<01:25:25.360> state<01:25:26.159> at<01:25:26.400> those<01:25:26.639> moments." + }, + { + "start": 5133.04, + "duration": 0.0, + "text": "So<01:25:33.679> by<01:25:33.920> mapping<01:25:34.239> an<01:25:34.400> evaluation<01:25:34.800> to<01:25:34.960> a<01:25:35.120> history" + }, + { + "start": 5135.27, + "duration": 0.0, + "text": "So by mapping an evaluation to a history" + }, + { + "start": 5135.28, + "duration": 0.0, + "text": "So by mapping an evaluation to a history of<01:25:35.440> hashes<01:25:36.560> um<01:25:36.800> rather<01:25:37.040> than<01:25:37.280> just<01:25:37.440> a<01:25:37.679> single" + }, + { + "start": 5137.99, + "duration": 0.0, + "text": "of hashes um rather than just a single" + }, + { + "start": 5138.0, + "duration": 0.0, + "text": "of hashes um rather than just a single like<01:25:38.239> most<01:25:38.560> recent<01:25:38.880> hash<01:25:39.920> um<01:25:40.719> we've<01:25:41.040> actually" + }, + { + "start": 5141.27, + "duration": 0.0, + "text": "like most recent hash um we've actually" + }, + { + "start": 5141.28, + "duration": 0.0, + "text": "like most recent hash um we've actually introduced<01:25:41.760> some<01:25:42.000> of<01:25:42.080> the<01:25:42.239> machinery<01:25:42.719> we<01:25:42.880> need" + }, + { + "start": 5143.189, + "duration": 0.0, + "text": "introduced some of the machinery we need" + }, + { + "start": 5143.199, + "duration": 0.0, + "text": "introduced some of the machinery we need to<01:25:43.440> start<01:25:43.679> rewinding<01:25:44.080> the<01:25:44.320> clock." + }, + { + "start": 5146.47, + "duration": 0.0, + "text": "to start rewinding the clock." + }, + { + "start": 5146.48, + "duration": 0.0, + "text": "to start rewinding the clock. So<01:25:46.719> this<01:25:46.880> way<01:25:47.040> we<01:25:47.199> can<01:25:47.360> see<01:25:47.679> like<01:25:47.920> an<01:25:48.159> entire" + }, + { + "start": 5148.79, + "duration": 0.0, + "text": "So this way we can see like an entire" + }, + { + "start": 5148.8, + "duration": 0.0, + "text": "So this way we can see like an entire entire<01:25:49.280> history<01:25:49.600> of<01:25:49.760> changes<01:25:51.040> um<01:25:51.440> to<01:25:51.679> some" + }, + { + "start": 5151.83, + "duration": 0.0, + "text": "entire history of changes um to some" + }, + { + "start": 5151.84, + "duration": 0.0, + "text": "entire history of changes um to some evaluation<01:25:52.960> that<01:25:53.199> sounds<01:25:53.440> an<01:25:53.600> awful<01:25:53.920> lot" + }, + { + "start": 5155.59, + "duration": 0.0, + "text": "evaluation that sounds an awful lot" + }, + { + "start": 5155.6, + "duration": 0.0, + "text": "evaluation that sounds an awful lot like<01:25:55.840> a<01:25:56.080> dynamic<01:25:56.560> logging<01:25:56.960> system." + }, + { + "start": 5158.55, + "duration": 0.0, + "text": "like a dynamic logging system." + }, + { + "start": 5158.56, + "duration": 0.0, + "text": "like a dynamic logging system. But<01:25:59.199> um<01:25:59.679> at<01:25:59.920> this<01:26:00.080> point<01:26:01.120> we've<01:26:01.440> reached<01:26:01.679> the" + }, + { + "start": 5161.83, + "duration": 0.0, + "text": "But um at this point we've reached the" + }, + { + "start": 5161.84, + "duration": 0.0, + "text": "But um at this point we've reached the boundaries<01:26:02.159> of<01:26:02.320> all<01:26:02.400> the<01:26:02.480> work<01:26:02.639> I've" + }, + { + "start": 5162.87, + "duration": 0.0, + "text": "boundaries of all the work I've" + }, + { + "start": 5162.88, + "duration": 0.0, + "text": "boundaries of all the work I've completed<01:26:04.000> uh<01:26:04.239> on<01:26:04.719> this<01:26:05.040> problem<01:26:05.360> and<01:26:05.760> kind<01:26:05.920> of" + }, + { + "start": 5165.99, + "duration": 0.0, + "text": "completed uh on this problem and kind of" + }, + { + "start": 5166.0, + "duration": 0.0, + "text": "completed uh on this problem and kind of what<01:26:06.159> I<01:26:06.320> was<01:26:06.480> able<01:26:06.560> to<01:26:06.719> fit<01:26:07.600> uh<01:26:07.840> into<01:26:08.159> like<01:26:08.400> this" + }, + { + "start": 5168.629, + "duration": 0.0, + "text": "what I was able to fit uh into like this" + }, + { + "start": 5168.639, + "duration": 0.0, + "text": "what I was able to fit uh into like this level<01:26:08.880> of<01:26:09.040> detail<01:26:09.360> and<01:26:09.679> and<01:26:09.840> this<01:26:10.080> time<01:26:11.520> uh<01:26:11.920> I" + }, + { + "start": 5172.149, + "duration": 0.0, + "text": "level of detail and and this time uh I" + }, + { + "start": 5172.159, + "duration": 0.0, + "text": "level of detail and and this time uh I realized<01:26:12.480> that<01:26:12.639> that<01:26:12.800> was<01:26:12.960> like<01:26:13.360> probably<01:26:13.679> a" + }, + { + "start": 5173.91, + "duration": 0.0, + "text": "realized that that was like probably a" + }, + { + "start": 5173.92, + "duration": 0.0, + "text": "realized that that was like probably a lot<01:26:14.000> of<01:26:14.159> information.<01:26:15.360> Uh" + }, + { + "start": 5177.03, + "duration": 0.0, + "text": "lot of information. Uh" + }, + { + "start": 5177.04, + "duration": 0.0, + "text": "lot of information. Uh uh<01:26:17.199> but<01:26:17.600> you<01:26:17.840> know<01:26:18.000> we've<01:26:18.320> walked<01:26:18.639> through<01:26:18.800> all" + }, + { + "start": 5179.03, + "duration": 0.0, + "text": "uh but you know we've walked through all" + }, + { + "start": 5179.04, + "duration": 0.0, + "text": "uh but you know we've walked through all the<01:26:19.199> building<01:26:19.440> blocks<01:26:19.679> of<01:26:19.840> a<01:26:20.000> general<01:26:20.320> purpose" + }, + { + "start": 5181.11, + "duration": 0.0, + "text": "the building blocks of a general purpose" + }, + { + "start": 5181.12, + "duration": 0.0, + "text": "the building blocks of a general purpose real-time<01:26:21.600> debugger<01:26:22.080> data<01:26:22.320> visualization" + }, + { + "start": 5182.87, + "duration": 0.0, + "text": "real-time debugger data visualization" + }, + { + "start": 5182.88, + "duration": 0.0, + "text": "real-time debugger data visualization engine.<01:26:23.280> So<01:26:23.520> from<01:26:24.000> process<01:26:24.400> control<01:26:25.199> to" + }, + { + "start": 5185.59, + "duration": 0.0, + "text": "engine. So from process control to" + }, + { + "start": 5185.6, + "duration": 0.0, + "text": "engine. So from process control to expression<01:26:26.000> compilation<01:26:26.480> and<01:26:26.639> evaluation<01:26:27.520> to" + }, + { + "start": 5187.83, + "duration": 0.0, + "text": "expression compilation and evaluation to" + }, + { + "start": 5187.84, + "duration": 0.0, + "text": "expression compilation and evaluation to debug<01:26:28.239> information<01:26:28.639> to<01:26:28.960> windowed<01:26:29.280> watch" + }, + { + "start": 5189.51, + "duration": 0.0, + "text": "debug information to windowed watch" + }, + { + "start": 5189.52, + "duration": 0.0, + "text": "debug information to windowed watch trees<01:26:29.920> all<01:26:30.080> the<01:26:30.159> way<01:26:30.320> to<01:26:30.880> visualization" + }, + { + "start": 5191.51, + "duration": 0.0, + "text": "trees all the way to visualization" + }, + { + "start": 5191.52, + "duration": 0.0, + "text": "trees all the way to visualization systems.<01:26:32.800> Now<01:26:33.600> there's<01:26:33.920> tons<01:26:34.080> of<01:26:34.239> problems<01:26:34.960> in" + }, + { + "start": 5195.189, + "duration": 0.0, + "text": "systems. Now there's tons of problems in" + }, + { + "start": 5195.199, + "duration": 0.0, + "text": "systems. Now there's tons of problems in this<01:26:35.440> space<01:26:35.679> that<01:26:35.920> I<01:26:36.080> have<01:26:36.320> not<01:26:36.639> like<01:26:37.199> explored" + }, + { + "start": 5198.07, + "duration": 0.0, + "text": "this space that I have not like explored" + }, + { + "start": 5198.08, + "duration": 0.0, + "text": "this space that I have not like explored and<01:26:38.320> so<01:26:38.480> there's<01:26:38.719> always<01:26:39.040> much<01:26:39.280> more<01:26:39.440> to<01:26:39.600> do." + }, + { + "start": 5199.83, + "duration": 0.0, + "text": "and so there's always much more to do." + }, + { + "start": 5199.84, + "duration": 0.0, + "text": "and so there's always much more to do. There's<01:26:40.080> always<01:26:40.239> so<01:26:40.400> much<01:26:40.560> stuff<01:26:40.639> to<01:26:40.800> do<01:26:40.880> in" + }, + { + "start": 5201.03, + "duration": 0.0, + "text": "There's always so much stuff to do in" + }, + { + "start": 5201.04, + "duration": 0.0, + "text": "There's always so much stuff to do in this<01:26:41.199> space.<01:26:42.239> Um<01:26:43.600> and<01:26:43.840> there's<01:26:44.000> a<01:26:44.159> lot<01:26:44.239> of<01:26:44.400> like" + }, + { + "start": 5204.629, + "duration": 0.0, + "text": "this space. Um and there's a lot of like" + }, + { + "start": 5204.639, + "duration": 0.0, + "text": "this space. Um and there's a lot of like implementation<01:26:45.280> details<01:26:45.600> that<01:26:45.840> are" + }, + { + "start": 5205.99, + "duration": 0.0, + "text": "implementation details that are" + }, + { + "start": 5206.0, + "duration": 0.0, + "text": "implementation details that are interesting<01:26:46.400> that<01:26:46.960> you<01:26:47.040> know<01:26:47.280> obviously" + }, + { + "start": 5207.91, + "duration": 0.0, + "text": "interesting that you know obviously" + }, + { + "start": 5207.92, + "duration": 0.0, + "text": "interesting that you know obviously there<01:26:48.320> I<01:26:48.480> need<01:26:48.639> a<01:26:48.800> higher<01:26:48.960> level<01:26:49.120> of<01:26:49.280> detail" + }, + { + "start": 5209.59, + "duration": 0.0, + "text": "there I need a higher level of detail" + }, + { + "start": 5209.6, + "duration": 0.0, + "text": "there I need a higher level of detail than<01:26:49.760> what<01:26:49.840> I<01:26:50.000> could<01:26:50.159> get<01:26:50.239> into<01:26:50.880> just<01:26:51.040> to<01:26:51.199> cover" + }, + { + "start": 5211.43, + "duration": 0.0, + "text": "than what I could get into just to cover" + }, + { + "start": 5211.44, + "duration": 0.0, + "text": "than what I could get into just to cover all<01:26:51.679> this.<01:26:52.800> But<01:26:52.960> I'm<01:26:53.120> happy<01:26:53.280> to<01:26:53.360> expand<01:26:53.600> on" + }, + { + "start": 5213.669, + "duration": 0.0, + "text": "all this. But I'm happy to expand on" + }, + { + "start": 5213.679, + "duration": 0.0, + "text": "all this. But I'm happy to expand on them<01:26:53.840> if<01:26:54.000> anyone<01:26:54.320> has<01:26:54.480> questions." + }, + { + "start": 5216.229, + "duration": 0.0, + "text": "them if anyone has questions." + }, + { + "start": 5216.239, + "duration": 0.0, + "text": "them if anyone has questions. So" + }, + { + "start": 5217.75, + "duration": 0.0, + "text": "So" + }, + { + "start": 5217.76, + "duration": 0.0, + "text": "So all<01:26:57.840> right,<01:26:58.719> one<01:26:58.960> thing<01:26:59.040> I<01:26:59.199> hope<01:26:59.360> to<01:26:59.520> get" + }, + { + "start": 5219.59, + "duration": 0.0, + "text": "all right, one thing I hope to get" + }, + { + "start": 5219.6, + "duration": 0.0, + "text": "all right, one thing I hope to get across<01:27:00.000> is<01:27:00.239> not<01:27:00.480> only<01:27:00.639> like<01:27:00.880> how<01:27:01.040> all<01:27:01.199> this<01:27:01.760> how" + }, + { + "start": 5221.99, + "duration": 0.0, + "text": "across is not only like how all this how" + }, + { + "start": 5222.0, + "duration": 0.0, + "text": "across is not only like how all this how this<01:27:02.239> kind<01:27:02.400> of<01:27:02.560> system<01:27:02.880> works,<01:27:03.520> but<01:27:03.760> why<01:27:04.159> it<01:27:04.639> uh" + }, + { + "start": 5224.87, + "duration": 0.0, + "text": "this kind of system works, but why it uh" + }, + { + "start": 5224.88, + "duration": 0.0, + "text": "this kind of system works, but why it uh matters<01:27:05.120> and<01:27:05.360> why<01:27:05.520> it's<01:27:05.679> an<01:27:05.840> exciting<01:27:06.159> and" + }, + { + "start": 5226.39, + "duration": 0.0, + "text": "matters and why it's an exciting and" + }, + { + "start": 5226.4, + "duration": 0.0, + "text": "matters and why it's an exciting and sort<01:27:06.560> of<01:27:06.639> fruitful<01:27:07.040> area<01:27:07.280> of<01:27:07.440> development." + }, + { + "start": 5229.189, + "duration": 0.0, + "text": "sort of fruitful area of development." + }, + { + "start": 5229.199, + "duration": 0.0, + "text": "sort of fruitful area of development. Computers<01:27:10.159> very<01:27:10.400> opaque.<01:27:11.679> I<01:27:12.000> know<01:27:12.159> we<01:27:12.320> have" + }, + { + "start": 5232.47, + "duration": 0.0, + "text": "Computers very opaque. I know we have" + }, + { + "start": 5232.48, + "duration": 0.0, + "text": "Computers very opaque. I know we have all<01:27:12.639> looked<01:27:12.880> like<01:27:13.040> this<01:27:13.360> at<01:27:13.600> some<01:27:13.760> point.<01:27:14.480> Um" + }, + { + "start": 5234.87, + "duration": 0.0, + "text": "all looked like this at some point. Um" + }, + { + "start": 5234.88, + "duration": 0.0, + "text": "all looked like this at some point. Um in<01:27:15.040> order<01:27:15.199> to<01:27:15.280> do<01:27:15.440> a<01:27:15.600> good<01:27:15.760> job<01:27:16.000> at<01:27:16.239> producing" + }, + { + "start": 5236.629, + "duration": 0.0, + "text": "in order to do a good job at producing" + }, + { + "start": 5236.639, + "duration": 0.0, + "text": "in order to do a good job at producing good<01:27:16.960> software,<01:27:17.920> we've<01:27:18.159> got<01:27:18.239> to<01:27:18.400> have<01:27:18.480> a" + }, + { + "start": 5238.709, + "duration": 0.0, + "text": "good software, we've got to have a" + }, + { + "start": 5238.719, + "duration": 0.0, + "text": "good software, we've got to have a strong<01:27:18.960> understanding<01:27:19.360> of<01:27:19.520> what<01:27:19.679> we're" + }, + { + "start": 5239.83, + "duration": 0.0, + "text": "strong understanding of what we're" + }, + { + "start": 5239.84, + "duration": 0.0, + "text": "strong understanding of what we're doing.<01:27:20.159> We<01:27:20.239> have<01:27:20.320> to<01:27:20.480> have<01:27:20.560> a<01:27:20.639> strong" + }, + { + "start": 5240.87, + "duration": 0.0, + "text": "doing. We have to have a strong" + }, + { + "start": 5240.88, + "duration": 0.0, + "text": "doing. We have to have a strong understanding<01:27:21.199> of<01:27:21.360> how<01:27:21.520> our<01:27:21.760> data<01:27:22.000> is" + }, + { + "start": 5242.149, + "duration": 0.0, + "text": "understanding of how our data is" + }, + { + "start": 5242.159, + "duration": 0.0, + "text": "understanding of how our data is changing<01:27:22.560> across<01:27:22.960> time<01:27:23.840> and<01:27:24.159> and<01:27:25.280> we<01:27:25.520> do<01:27:25.679> that" + }, + { + "start": 5245.91, + "duration": 0.0, + "text": "changing across time and and we do that" + }, + { + "start": 5245.92, + "duration": 0.0, + "text": "changing across time and and we do that better<01:27:26.159> with<01:27:26.400> visualizations.<01:27:27.199> So,<01:27:28.320> um<01:27:29.040> just" + }, + { + "start": 5249.27, + "duration": 0.0, + "text": "better with visualizations. So, um just" + }, + { + "start": 5249.28, + "duration": 0.0, + "text": "better with visualizations. So, um just like<01:27:29.440> to<01:27:29.600> say<01:27:29.760> I'm<01:27:29.920> I'm,<01:27:30.560> you<01:27:30.639> know,<01:27:30.800> I've<01:27:30.960> been" + }, + { + "start": 5251.11, + "duration": 0.0, + "text": "like to say I'm I'm, you know, I've been" + }, + { + "start": 5251.12, + "duration": 0.0, + "text": "like to say I'm I'm, you know, I've been working<01:27:31.199> on<01:27:31.360> this<01:27:31.440> problem<01:27:31.679> for<01:27:31.760> a<01:27:31.920> few<01:27:32.080> years." + }, + { + "start": 5252.55, + "duration": 0.0, + "text": "working on this problem for a few years." + }, + { + "start": 5252.56, + "duration": 0.0, + "text": "working on this problem for a few years. Uh<01:27:32.880> really<01:27:33.120> proud<01:27:33.360> of<01:27:33.840> the<01:27:34.159> progress<01:27:34.480> I've" + }, + { + "start": 5254.709, + "duration": 0.0, + "text": "Uh really proud of the progress I've" + }, + { + "start": 5254.719, + "duration": 0.0, + "text": "Uh really proud of the progress I've made,<01:27:34.960> but<01:27:35.679> um<01:27:35.920> really<01:27:36.239> happy<01:27:36.400> that<01:27:36.560> I<01:27:36.719> was" + }, + { + "start": 5256.79, + "duration": 0.0, + "text": "made, but um really happy that I was" + }, + { + "start": 5256.8, + "duration": 0.0, + "text": "made, but um really happy that I was able<01:27:36.960> to<01:27:37.040> come<01:27:37.199> and<01:27:37.360> share<01:27:37.840> it<01:27:38.080> with<01:27:38.320> everyone" + }, + { + "start": 5259.03, + "duration": 0.0, + "text": "able to come and share it with everyone" + }, + { + "start": 5259.04, + "duration": 0.0, + "text": "able to come and share it with everyone uh<01:27:39.280> here<01:27:39.440> and<01:27:39.679> then<01:27:40.000> online.<01:27:41.120> Um<01:27:41.520> and<01:27:41.679> I<01:27:41.920> hope" + }, + { + "start": 5261.99, + "duration": 0.0, + "text": "uh here and then online. Um and I hope" + }, + { + "start": 5262.0, + "duration": 0.0, + "text": "uh here and then online. Um and I hope it<01:27:42.159> was<01:27:42.320> interesting,<01:27:42.719> informative<01:27:43.679> uh<01:27:43.920> and" + }, + { + "start": 5264.07, + "duration": 0.0, + "text": "it was interesting, informative uh and" + }, + { + "start": 5264.08, + "duration": 0.0, + "text": "it was interesting, informative uh and helpful.<01:27:44.639> And<01:27:44.880> again,<01:27:45.199> thank<01:27:45.280> you<01:27:45.440> to<01:27:45.600> Sam," + }, + { + "start": 5266.07, + "duration": 0.0, + "text": "helpful. And again, thank you to Sam," + }, + { + "start": 5266.08, + "duration": 0.0, + "text": "helpful. And again, thank you to Sam, Sander,<01:27:46.400> and<01:27:46.560> Charlie<01:27:47.120> uh<01:27:47.280> for<01:27:47.440> the" + }, + { + "start": 5267.59, + "duration": 0.0, + "text": "Sander, and Charlie uh for the" + }, + { + "start": 5267.6, + "duration": 0.0, + "text": "Sander, and Charlie uh for the opportunity." + }, + { + "start": 5269.35, + "duration": 0.0, + "text": "opportunity." + }, + { + "start": 5269.36, + "duration": 0.0, + "text": "opportunity. And<01:27:50.000> Casey's<01:27:50.480> gone<01:27:50.800> now,<01:27:51.040> but<01:27:51.280> like<01:27:51.600> and<01:27:51.760> I" + }, + { + "start": 5271.91, + "duration": 0.0, + "text": "And Casey's gone now, but like and I" + }, + { + "start": 5271.92, + "duration": 0.0, + "text": "And Casey's gone now, but like and I know<01:27:52.080> we've<01:27:52.320> like<01:27:52.560> piled<01:27:52.960> tons<01:27:53.280> of<01:27:53.440> thank<01:27:53.600> yous" + }, + { + "start": 5273.83, + "duration": 0.0, + "text": "know we've like piled tons of thank yous" + }, + { + "start": 5273.84, + "duration": 0.0, + "text": "know we've like piled tons of thank yous onto<01:27:54.159> him,<01:27:54.400> but<01:27:55.040> uh<01:27:55.199> you<01:27:55.360> know,<01:27:55.440> I've<01:27:55.679> wanted" + }, + { + "start": 5275.83, + "duration": 0.0, + "text": "onto him, but uh you know, I've wanted" + }, + { + "start": 5275.84, + "duration": 0.0, + "text": "onto him, but uh you know, I've wanted to<01:27:56.000> put<01:27:56.159> one<01:27:56.320> more<01:27:56.480> in<01:27:56.639> my<01:27:56.800> talk.<01:27:57.600> Um<01:27:58.560> a<01:27:58.719> lot<01:27:58.880> of" + }, + { + "start": 5278.95, + "duration": 0.0, + "text": "to put one more in my talk. Um a lot of" + }, + { + "start": 5278.96, + "duration": 0.0, + "text": "to put one more in my talk. Um a lot of my<01:27:59.120> work<01:27:59.280> on<01:27:59.440> this<01:27:59.600> problem<01:27:59.920> required<01:28:00.400> like" + }, + { + "start": 5280.709, + "duration": 0.0, + "text": "my work on this problem required like" + }, + { + "start": 5280.719, + "duration": 0.0, + "text": "my work on this problem required like lots<01:28:01.040> of<01:28:01.120> insights<01:28:01.920> and<01:28:02.320> lots<01:28:02.560> of<01:28:02.719> like" + }, + { + "start": 5282.95, + "duration": 0.0, + "text": "lots of insights and lots of like" + }, + { + "start": 5282.96, + "duration": 0.0, + "text": "lots of insights and lots of like everything<01:28:03.280> down<01:28:03.440> to<01:28:03.679> like<01:28:04.159> programming" + }, + { + "start": 5284.629, + "duration": 0.0, + "text": "everything down to like programming" + }, + { + "start": 5284.639, + "duration": 0.0, + "text": "everything down to like programming techniques,<01:28:05.440> but<01:28:05.760> but<01:28:06.800> up<01:28:06.960> to<01:28:07.199> and<01:28:07.360> including" + }, + { + "start": 5287.83, + "duration": 0.0, + "text": "techniques, but but up to and including" + }, + { + "start": 5287.84, + "duration": 0.0, + "text": "techniques, but but up to and including stuff<01:28:08.000> within<01:28:08.400> this<01:28:08.560> problem<01:28:08.800> that<01:28:08.960> I<01:28:09.120> covered" + }, + { + "start": 5289.35, + "duration": 0.0, + "text": "stuff within this problem that I covered" + }, + { + "start": 5289.36, + "duration": 0.0, + "text": "stuff within this problem that I covered today.<01:28:09.920> And<01:28:10.080> a<01:28:10.320> lot<01:28:10.400> of<01:28:10.480> that<01:28:10.719> came<01:28:10.880> from" + }, + { + "start": 5291.11, + "duration": 0.0, + "text": "today. And a lot of that came from" + }, + { + "start": 5291.12, + "duration": 0.0, + "text": "today. And a lot of that came from insights<01:28:11.520> that<01:28:11.920> Casey<01:28:12.400> shared<01:28:13.120> years<01:28:13.360> ago," + }, + { + "start": 5293.99, + "duration": 0.0, + "text": "insights that Casey shared years ago," + }, + { + "start": 5294.0, + "duration": 0.0, + "text": "insights that Casey shared years ago, not<01:28:14.239> even<01:28:14.400> with<01:28:14.560> me,<01:28:14.719> but<01:28:14.880> with<01:28:15.120> people<01:28:15.280> like" + }, + { + "start": 5295.51, + "duration": 0.0, + "text": "not even with me, but with people like" + }, + { + "start": 5295.52, + "duration": 0.0, + "text": "not even with me, but with people like 10<01:28:15.760> years<01:28:15.920> ago.<01:28:16.159> And<01:28:16.320> he<01:28:16.480> told<01:28:16.639> me<01:28:16.719> about<01:28:16.880> it." + }, + { + "start": 5297.03, + "duration": 0.0, + "text": "10 years ago. And he told me about it." + }, + { + "start": 5297.04, + "duration": 0.0, + "text": "10 years ago. And he told me about it. I'm<01:28:17.280> like,<01:28:17.679> \"Wow,<01:28:18.159> that<01:28:18.400> needs<01:28:18.639> to<01:28:18.800> be" + }, + { + "start": 5298.87, + "duration": 0.0, + "text": "I'm like, \"Wow, that needs to be" + }, + { + "start": 5298.88, + "duration": 0.0, + "text": "I'm like, \"Wow, that needs to be implemented.\"<01:28:19.280> Like,<01:28:19.360> \"That's<01:28:19.600> a<01:28:19.760> really" + }, + { + "start": 5299.91, + "duration": 0.0, + "text": "implemented.\" Like, \"That's a really" + }, + { + "start": 5299.92, + "duration": 0.0, + "text": "implemented.\" Like, \"That's a really good<01:28:20.080> idea.\"<01:28:20.400> So<01:28:20.960> Casey<01:28:21.440> is<01:28:21.679> like,<01:28:22.400> you<01:28:22.560> know," + }, + { + "start": 5302.709, + "duration": 0.0, + "text": "good idea.\" So Casey is like, you know," + }, + { + "start": 5302.719, + "duration": 0.0, + "text": "good idea.\" So Casey is like, you know, none<01:28:22.880> of<01:28:22.960> this<01:28:23.040> would<01:28:23.199> have<01:28:23.360> happened<01:28:23.600> without" + }, + { + "start": 5303.83, + "duration": 0.0, + "text": "none of this would have happened without" + }, + { + "start": 5303.84, + "duration": 0.0, + "text": "none of this would have happened without him.<01:28:24.159> I<01:28:24.400> wouldn't<01:28:24.560> have<01:28:24.639> my<01:28:24.880> job.<01:28:25.040> I<01:28:25.280> wouldn't" + }, + { + "start": 5305.35, + "duration": 0.0, + "text": "him. I wouldn't have my job. I wouldn't" + }, + { + "start": 5305.36, + "duration": 0.0, + "text": "him. I wouldn't have my job. I wouldn't be<01:28:25.600> none<01:28:25.760> of<01:28:25.840> us<01:28:26.000> would<01:28:26.159> be<01:28:26.320> here.<01:28:26.719> I<01:28:26.960> wouldn't" + }, + { + "start": 5307.11, + "duration": 0.0, + "text": "be none of us would be here. I wouldn't" + }, + { + "start": 5307.12, + "duration": 0.0, + "text": "be none of us would be here. I wouldn't know<01:28:27.280> how<01:28:27.360> to<01:28:27.440> do<01:28:27.520> it.<01:28:27.679> I<01:28:27.920> wouldn't<01:28:28.080> know<01:28:28.159> how" + }, + { + "start": 5308.31, + "duration": 0.0, + "text": "know how to do it. I wouldn't know how" + }, + { + "start": 5308.32, + "duration": 0.0, + "text": "know how to do it. I wouldn't know how to<01:28:28.400> work<01:28:28.560> on<01:28:28.719> this<01:28:28.960> problem<01:28:29.520> were<01:28:29.760> it<01:28:29.920> not<01:28:30.080> for" + }, + { + "start": 5310.47, + "duration": 0.0, + "text": "to work on this problem were it not for" + }, + { + "start": 5310.48, + "duration": 0.0, + "text": "to work on this problem were it not for for<01:28:30.880> everything<01:28:31.280> he<01:28:31.520> did.<01:28:32.800> And<01:28:33.280> uh<01:28:34.719> so<01:28:34.960> yeah,<01:28:35.360> I" + }, + { + "start": 5315.59, + "duration": 0.0, + "text": "for everything he did. And uh so yeah, I" + }, + { + "start": 5315.6, + "duration": 0.0, + "text": "for everything he did. And uh so yeah, I mean,<01:28:36.480> tons<01:28:36.719> of<01:28:36.880> props<01:28:37.040> to<01:28:37.199> Casey,<01:28:37.600> obviously." + }, + { + "start": 5318.31, + "duration": 0.0, + "text": "mean, tons of props to Casey, obviously." + }, + { + "start": 5318.32, + "duration": 0.0, + "text": "mean, tons of props to Casey, obviously. Um<01:28:39.280> but<01:28:40.239> finally,<01:28:41.120> thank<01:28:41.280> you<01:28:41.600> all<01:28:41.920> for" + }, + { + "start": 5322.31, + "duration": 0.0, + "text": "Um but finally, thank you all for" + }, + { + "start": 5322.32, + "duration": 0.0, + "text": "Um but finally, thank you all for listening.<01:28:43.040> Thanks<01:28:43.280> for<01:28:43.520> bearing<01:28:43.840> with<01:28:44.000> me" + }, + { + "start": 5324.149, + "duration": 0.0, + "text": "listening. Thanks for bearing with me" + }, + { + "start": 5324.159, + "duration": 0.0, + "text": "listening. Thanks for bearing with me through<01:28:44.400> all<01:28:44.560> that<01:28:44.800> stuff.<01:28:45.520> Um,<01:28:46.000> and<01:28:46.239> thanks" + }, + { + "start": 5326.47, + "duration": 0.0, + "text": "through all that stuff. Um, and thanks" + }, + { + "start": 5326.48, + "duration": 0.0, + "text": "through all that stuff. Um, and thanks to<01:28:46.639> everyone<01:28:46.960> online<01:28:47.360> for<01:28:47.679> for<01:28:48.080> your<01:28:48.239> time<01:28:48.400> and" + }, + { + "start": 5328.629, + "duration": 0.0, + "text": "to everyone online for for your time and" + }, + { + "start": 5328.639, + "duration": 0.0, + "text": "to everyone online for for your time and attention.<01:28:49.440> And<01:28:49.600> that's<01:28:49.760> all<01:28:49.920> I've<01:28:50.159> got." + }, + { + "start": 5330.95, + "duration": 0.0, + "text": "attention. And that's all I've got." + }, + { + "start": 5330.96, + "duration": 0.0, + "text": "attention. And that's all I've got. Thank<01:28:51.120> you." + }, + { + "start": 5341.52, + "duration": 0.0, + "text": "All<01:29:01.600> right." + }, + { + "start": 5343.35, + "duration": 0.0, + "text": "All right." + }, + { + "start": 5343.36, + "duration": 0.0, + "text": "All right. Hi<01:29:03.679> guys." + }, + { + "start": 5345.75, + "duration": 0.0, + "text": "Hi guys." + }, + { + "start": 5345.76, + "duration": 0.0, + "text": "Hi guys. I'm<01:29:06.000> Raphael.<01:29:06.880> Um,<01:29:07.360> sorry<01:29:07.679> my<01:29:08.000> voice<01:29:08.239> has" + }, + { + "start": 5348.709, + "duration": 0.0, + "text": "I'm Raphael. Um, sorry my voice has" + }, + { + "start": 5348.719, + "duration": 0.0, + "text": "I'm Raphael. Um, sorry my voice has given<01:29:08.960> up<01:29:09.120> on<01:29:09.360> day<01:29:09.520> one<01:29:09.760> and<01:29:10.000> I'm<01:29:10.560> just<01:29:10.880> hanging" + }, + { + "start": 5351.189, + "duration": 0.0, + "text": "given up on day one and I'm just hanging" + }, + { + "start": 5351.199, + "duration": 0.0, + "text": "given up on day one and I'm just hanging on<01:29:11.360> by<01:29:11.600> a<01:29:11.760> silver<01:29:12.080> thread,<01:29:12.239> but<01:29:12.400> I<01:29:12.560> hope<01:29:12.639> we<01:29:12.800> can" + }, + { + "start": 5352.87, + "duration": 0.0, + "text": "on by a silver thread, but I hope we can" + }, + { + "start": 5352.88, + "duration": 0.0, + "text": "on by a silver thread, but I hope we can still<01:29:13.199> make<01:29:13.360> this.<01:29:14.080> Uh,<01:29:14.560> great<01:29:14.800> talk.<01:29:15.280> Uh," + }, + { + "start": 5355.99, + "duration": 0.0, + "text": "still make this. Uh, great talk. Uh," + }, + { + "start": 5356.0, + "duration": 0.0, + "text": "still make this. Uh, great talk. Uh, great<01:29:16.239> work.<01:29:16.800> I<01:29:17.520> I<01:29:17.920> love<01:29:18.080> the<01:29:18.239> RAD<01:29:18.560> debugger." + }, + { + "start": 5359.11, + "duration": 0.0, + "text": "great work. I I love the RAD debugger." + }, + { + "start": 5359.12, + "duration": 0.0, + "text": "great work. I I love the RAD debugger. Like<01:29:19.440> the<01:29:19.679> times<01:29:20.000> I've<01:29:20.239> used<01:29:20.400> it,<01:29:20.639> I've<01:29:20.880> been" + }, + { + "start": 5360.95, + "duration": 0.0, + "text": "Like the times I've used it, I've been" + }, + { + "start": 5360.96, + "duration": 0.0, + "text": "Like the times I've used it, I've been blown<01:29:21.360> away<01:29:21.600> by<01:29:21.920> the<01:29:22.159> power<01:29:22.400> it<01:29:22.639> has.<01:29:22.960> Like<01:29:23.199> I" + }, + { + "start": 5363.43, + "duration": 0.0, + "text": "blown away by the power it has. Like I" + }, + { + "start": 5363.44, + "duration": 0.0, + "text": "blown away by the power it has. Like I think<01:29:23.600> you<01:29:23.840> sold<01:29:24.080> yourself<01:29:24.560> short<01:29:24.880> in<01:29:25.120> the" + }, + { + "start": 5365.27, + "duration": 0.0, + "text": "think you sold yourself short in the" + }, + { + "start": 5365.28, + "duration": 0.0, + "text": "think you sold yourself short in the talk<01:29:25.520> by<01:29:25.760> not<01:29:26.000> just<01:29:26.560> demoing<01:29:27.040> all<01:29:27.280> the<01:29:27.440> cool" + }, + { + "start": 5367.75, + "duration": 0.0, + "text": "talk by not just demoing all the cool" + }, + { + "start": 5367.76, + "duration": 0.0, + "text": "talk by not just demoing all the cool stuff<01:29:28.080> that<01:29:28.560> the<01:29:28.880> system<01:29:29.199> like<01:29:29.440> you<01:29:29.679> talk" + }, + { + "start": 5369.83, + "duration": 0.0, + "text": "stuff that the system like you talk" + }, + { + "start": 5369.84, + "duration": 0.0, + "text": "stuff that the system like you talk about<01:29:29.920> the<01:29:30.159> system,<01:29:30.400> but<01:29:30.719> like<01:29:31.360> the<01:29:31.600> amount<01:29:31.840> of" + }, + { + "start": 5371.91, + "duration": 0.0, + "text": "about the system, but like the amount of" + }, + { + "start": 5371.92, + "duration": 0.0, + "text": "about the system, but like the amount of power<01:29:32.159> it<01:29:32.320> gives<01:29:32.400> you<01:29:32.560> is<01:29:32.719> amazing.<01:29:32.880> I<01:29:33.120> want<01:29:33.199> to" + }, + { + "start": 5373.35, + "duration": 0.0, + "text": "power it gives you is amazing. I want to" + }, + { + "start": 5373.36, + "duration": 0.0, + "text": "power it gives you is amazing. I want to dive<01:29:33.520> into<01:29:33.679> that.<01:29:34.000> But<01:29:34.080> like<01:29:34.320> first<01:29:34.960> after<01:29:35.280> all" + }, + { + "start": 5375.43, + "duration": 0.0, + "text": "dive into that. But like first after all" + }, + { + "start": 5375.44, + "duration": 0.0, + "text": "dive into that. But like first after all the<01:29:35.920> praise<01:29:36.320> you've<01:29:36.639> gotten<01:29:36.960> for<01:29:37.360> the<01:29:37.520> red" + }, + { + "start": 5377.83, + "duration": 0.0, + "text": "the praise you've gotten for the red" + }, + { + "start": 5377.84, + "duration": 0.0, + "text": "the praise you've gotten for the red debugger<01:29:38.320> and<01:29:38.560> your<01:29:38.880> skills<01:29:39.360> over<01:29:39.600> the<01:29:39.760> past" + }, + { + "start": 5379.91, + "duration": 0.0, + "text": "debugger and your skills over the past" + }, + { + "start": 5379.92, + "duration": 0.0, + "text": "debugger and your skills over the past few<01:29:40.080> days<01:29:40.320> and<01:29:40.880> before<01:29:41.199> that<01:29:41.920> it<01:29:42.159> was<01:29:42.400> very" + }, + { + "start": 5382.709, + "duration": 0.0, + "text": "few days and before that it was very" + }, + { + "start": 5382.719, + "duration": 0.0, + "text": "few days and before that it was very refreshing<01:29:43.120> to<01:29:43.360> see<01:29:43.440> you<01:29:43.679> finally<01:29:44.080> fail<01:29:44.400> at<01:29:44.560> a" + }, + { + "start": 5384.709, + "duration": 0.0, + "text": "refreshing to see you finally fail at a" + }, + { + "start": 5384.719, + "duration": 0.0, + "text": "refreshing to see you finally fail at a technical<01:29:45.120> task<01:29:45.440> which<01:29:45.679> is<01:29:45.840> like<01:29:46.000> wrestling" + }, + { + "start": 5386.39, + "duration": 0.0, + "text": "technical task which is like wrestling" + }, + { + "start": 5386.4, + "duration": 0.0, + "text": "technical task which is like wrestling with<01:29:46.480> a<01:29:46.639> shitty<01:29:46.960> clipper.<01:29:47.679> Uh<01:29:48.000> so<01:29:48.159> that<01:29:48.400> was" + }, + { + "start": 5388.629, + "duration": 0.0, + "text": "with a shitty clipper. Uh so that was" + }, + { + "start": 5388.639, + "duration": 0.0, + "text": "with a shitty clipper. Uh so that was really<01:29:48.960> good." + }, + { + "start": 5389.669, + "duration": 0.0, + "text": "really good." + }, + { + "start": 5389.679, + "duration": 0.0, + "text": "really good. >> I<01:29:49.920> don't<01:29:50.000> know<01:29:50.239> how<01:29:50.400> I<01:29:50.560> don't<01:29:50.639> know<01:29:50.719> what's" + }, + { + "start": 5390.95, + "duration": 0.0, + "text": ">> I don't know how I don't know what's" + }, + { + "start": 5390.96, + "duration": 0.0, + "text": ">> I don't know how I don't know what's happening.<01:29:51.199> It's<01:29:51.360> like<01:29:51.520> buffering<01:29:51.840> them<01:29:52.000> up" + }, + { + "start": 5392.149, + "duration": 0.0, + "text": "happening. It's like buffering them up" + }, + { + "start": 5392.159, + "duration": 0.0, + "text": "happening. It's like buffering them up or<01:29:52.320> something,<01:29:53.040> you<01:29:53.120> know." + }, + { + "start": 5393.43, + "duration": 0.0, + "text": "or something, you know." + }, + { + "start": 5393.44, + "duration": 0.0, + "text": "or something, you know. >> Yeah.<01:29:53.679> No,<01:29:54.080> like<01:29:54.480> awesome.<01:29:54.880> Um<01:29:55.199> I'm<01:29:55.520> hugely" + }, + { + "start": 5395.91, + "duration": 0.0, + "text": ">> Yeah. No, like awesome. Um I'm hugely" + }, + { + "start": 5395.92, + "duration": 0.0, + "text": ">> Yeah. No, like awesome. Um I'm hugely impressed<01:29:56.320> with<01:29:56.639> what<01:29:56.880> you<01:29:57.040> did<01:29:57.120> with<01:29:57.280> Ready" + }, + { + "start": 5397.59, + "duration": 0.0, + "text": "impressed with what you did with Ready" + }, + { + "start": 5397.6, + "duration": 0.0, + "text": "impressed with what you did with Ready Bugger.<01:29:58.000> Thanks,<01:29:58.159> man.<01:29:58.320> Um,<01:29:58.800> and<01:29:59.040> since<01:29:59.280> we" + }, + { + "start": 5399.51, + "duration": 0.0, + "text": "Bugger. Thanks, man. Um, and since we" + }, + { + "start": 5399.52, + "duration": 0.0, + "text": "Bugger. Thanks, man. Um, and since we know<01:29:59.679> from<01:30:00.000> old<01:30:00.320> Twitter<01:30:00.639> that<01:30:00.880> you<01:30:01.040> need" + }, + { + "start": 5401.27, + "duration": 0.0, + "text": "know from old Twitter that you need" + }, + { + "start": 5401.28, + "duration": 0.0, + "text": "know from old Twitter that you need about<01:30:01.520> a<01:30:01.600> thousand<01:30:02.000> developers<01:30:02.560> to<01:30:02.800> do<01:30:02.960> like" + }, + { + "start": 5403.75, + "duration": 0.0, + "text": "about a thousand developers to do like" + }, + { + "start": 5403.76, + "duration": 0.0, + "text": "about a thousand developers to do like 140<01:30:04.080> character<01:30:04.400> text<01:30:04.719> posts," + }, + { + "start": 5405.189, + "duration": 0.0, + "text": "140 character text posts," + }, + { + "start": 5405.199, + "duration": 0.0, + "text": "140 character text posts, >> right?" + }, + { + "start": 5405.75, + "duration": 0.0, + "text": ">> right?" + }, + { + "start": 5405.76, + "duration": 0.0, + "text": ">> right? >> Uh,<01:30:06.480> how<01:30:06.800> many<01:30:07.040> tens<01:30:07.360> of<01:30:07.600> thousands<01:30:08.080> of" + }, + { + "start": 5408.229, + "duration": 0.0, + "text": ">> Uh, how many tens of thousands of" + }, + { + "start": 5408.239, + "duration": 0.0, + "text": ">> Uh, how many tens of thousands of developers<01:30:08.719> are<01:30:08.880> working<01:30:09.040> on<01:30:09.199> the<01:30:09.360> right" + }, + { + "start": 5409.51, + "duration": 0.0, + "text": "developers are working on the right" + }, + { + "start": 5409.52, + "duration": 0.0, + "text": "developers are working on the right debugger<01:30:10.000> right<01:30:10.159> now?" + }, + { + "start": 5410.39, + "duration": 0.0, + "text": "debugger right now?" + }, + { + "start": 5410.4, + "duration": 0.0, + "text": "debugger right now? >> Right.<01:30:10.719> So,<01:30:11.440> um,<01:30:12.320> you<01:30:12.560> know,<01:30:13.280> we<01:30:13.600> really" + }, + { + "start": 5413.83, + "duration": 0.0, + "text": ">> Right. So, um, you know, we really" + }, + { + "start": 5413.84, + "duration": 0.0, + "text": ">> Right. So, um, you know, we really couldn't<01:30:14.159> do<01:30:14.239> it<01:30:14.400> without<01:30:14.719> at<01:30:14.800> least<01:30:15.199> three<01:30:15.360> or" + }, + { + "start": 5415.59, + "duration": 0.0, + "text": "couldn't do it without at least three or" + }, + { + "start": 5415.6, + "duration": 0.0, + "text": "couldn't do it without at least three or four,<01:30:16.400> but<01:30:16.960> uh,<01:30:17.120> no,<01:30:17.360> I'm<01:30:17.440> just<01:30:17.600> kidding.<01:30:17.840> It's" + }, + { + "start": 5417.99, + "duration": 0.0, + "text": "four, but uh, no, I'm just kidding. It's" + }, + { + "start": 5418.0, + "duration": 0.0, + "text": "four, but uh, no, I'm just kidding. It's just,<01:30:18.239> so<01:30:18.480> currently<01:30:18.800> it's<01:30:19.040> just<01:30:19.199> me<01:30:19.440> and" + }, + { + "start": 5419.669, + "duration": 0.0, + "text": "just, so currently it's just me and" + }, + { + "start": 5419.679, + "duration": 0.0, + "text": "just, so currently it's just me and then,<01:30:20.239> uh,<01:30:20.400> there's<01:30:20.639> another<01:30:20.880> developer<01:30:21.199> on" + }, + { + "start": 5421.35, + "duration": 0.0, + "text": "then, uh, there's another developer on" + }, + { + "start": 5421.36, + "duration": 0.0, + "text": "then, uh, there's another developer on the<01:30:21.440> team,<01:30:21.679> Nikita<01:30:22.159> Smith,<01:30:22.480> who<01:30:22.719> who's<01:30:23.120> not" + }, + { + "start": 5423.27, + "duration": 0.0, + "text": "the team, Nikita Smith, who who's not" + }, + { + "start": 5423.28, + "duration": 0.0, + "text": "the team, Nikita Smith, who who's not here.<01:30:23.920> Um,<01:30:24.400> he<01:30:24.719> works<01:30:24.960> primarily<01:30:25.280> on<01:30:25.440> the<01:30:25.520> RAD" + }, + { + "start": 5425.83, + "duration": 0.0, + "text": "here. Um, he works primarily on the RAD" + }, + { + "start": 5425.84, + "duration": 0.0, + "text": "here. Um, he works primarily on the RAD linker.<01:30:26.639> uh<01:30:26.960> but<01:30:27.520> you<01:30:27.679> know<01:30:28.159> for<01:30:28.400> which<01:30:28.800> is<01:30:28.960> a" + }, + { + "start": 5429.11, + "duration": 0.0, + "text": "linker. uh but you know for which is a" + }, + { + "start": 5429.12, + "duration": 0.0, + "text": "linker. uh but you know for which is a part<01:30:29.280> of<01:30:29.360> the<01:30:29.520> project<01:30:29.920> for<01:30:30.239> a<01:30:30.480> number<01:30:30.560> of" + }, + { + "start": 5430.709, + "duration": 0.0, + "text": "part of the project for a number of" + }, + { + "start": 5430.719, + "duration": 0.0, + "text": "part of the project for a number of reasons<01:30:31.120> but<01:30:31.440> there's<01:30:31.679> a<01:30:31.840> lot<01:30:31.920> of<01:30:32.080> overlap" + }, + { + "start": 5432.629, + "duration": 0.0, + "text": "reasons but there's a lot of overlap" + }, + { + "start": 5432.639, + "duration": 0.0, + "text": "reasons but there's a lot of overlap between<01:30:33.040> like<01:30:33.440> those<01:30:33.760> problems<01:30:34.000> like<01:30:34.159> a" + }, + { + "start": 5434.31, + "duration": 0.0, + "text": "between like those problems like a" + }, + { + "start": 5434.32, + "duration": 0.0, + "text": "between like those problems like a linker<01:30:34.639> has<01:30:34.800> to<01:30:34.880> produce<01:30:35.120> debug<01:30:35.520> info" + }, + { + "start": 5435.99, + "duration": 0.0, + "text": "linker has to produce debug info" + }, + { + "start": 5436.0, + "duration": 0.0, + "text": "linker has to produce debug info debuggers<01:30:36.480> have<01:30:36.560> to<01:30:36.719> read<01:30:36.880> it<01:30:37.199> there's<01:30:37.360> a<01:30:37.520> lot" + }, + { + "start": 5437.59, + "duration": 0.0, + "text": "debuggers have to read it there's a lot" + }, + { + "start": 5437.6, + "duration": 0.0, + "text": "debuggers have to read it there's a lot of<01:30:37.679> shared<01:30:38.159> we<01:30:38.400> both<01:30:38.639> have<01:30:38.800> to<01:30:38.880> parse<01:30:39.199> certain" + }, + { + "start": 5439.43, + "duration": 0.0, + "text": "of shared we both have to parse certain" + }, + { + "start": 5439.44, + "duration": 0.0, + "text": "of shared we both have to parse certain formats<01:30:40.159> stuff<01:30:40.400> like<01:30:40.480> that<01:30:40.639> so<01:30:40.880> there's<01:30:41.120> a<01:30:41.280> lot" + }, + { + "start": 5441.35, + "duration": 0.0, + "text": "formats stuff like that so there's a lot" + }, + { + "start": 5441.36, + "duration": 0.0, + "text": "formats stuff like that so there's a lot of<01:30:41.679> um<01:30:42.080> overlap<01:30:42.560> and<01:30:42.800> so<01:30:43.760> um<01:30:44.159> Nick<01:30:44.400> kind<01:30:44.560> of" + }, + { + "start": 5444.629, + "duration": 0.0, + "text": "of um overlap and so um Nick kind of" + }, + { + "start": 5444.639, + "duration": 0.0, + "text": "of um overlap and so um Nick kind of works<01:30:44.800> on<01:30:44.880> those<01:30:45.040> parts<01:30:45.199> of<01:30:45.280> the<01:30:45.360> problem<01:30:45.679> he's" + }, + { + "start": 5445.83, + "duration": 0.0, + "text": "works on those parts of the problem he's" + }, + { + "start": 5445.84, + "duration": 0.0, + "text": "works on those parts of the problem he's really<01:30:46.000> good<01:30:46.080> at<01:30:46.239> like<01:30:46.560> how<01:30:46.719> do<01:30:46.880> you<01:30:46.960> unwind<01:30:47.520> on" + }, + { + "start": 5447.83, + "duration": 0.0, + "text": "really good at like how do you unwind on" + }, + { + "start": 5447.84, + "duration": 0.0, + "text": "really good at like how do you unwind on Windows<01:30:48.560> x6<01:30:49.120> like<01:30:49.440> how<01:30:49.600> do<01:30:49.760> you<01:30:49.840> unwind<01:30:50.400> you" + }, + { + "start": 5450.629, + "duration": 0.0, + "text": "Windows x6 like how do you unwind you" + }, + { + "start": 5450.639, + "duration": 0.0, + "text": "Windows x6 like how do you unwind you using<01:30:51.040> PE<01:30:51.520> unwind<01:30:51.920> info<01:30:52.239> on<01:30:52.400> Windows<01:30:52.639> x64<01:30:53.360> or" + }, + { + "start": 5453.51, + "duration": 0.0, + "text": "using PE unwind info on Windows x64 or" + }, + { + "start": 5453.52, + "duration": 0.0, + "text": "using PE unwind info on Windows x64 or whatever<01:30:53.760> it's<01:30:53.920> like<01:30:54.400> he's<01:30:54.639> really<01:30:54.800> good<01:30:54.880> at" + }, + { + "start": 5455.03, + "duration": 0.0, + "text": "whatever it's like he's really good at" + }, + { + "start": 5455.04, + "duration": 0.0, + "text": "whatever it's like he's really good at that<01:30:55.280> kind<01:30:55.360> of<01:30:55.440> thing<01:30:55.760> Um<01:30:56.000> I've<01:30:56.239> focused" + }, + { + "start": 5456.55, + "duration": 0.0, + "text": "that kind of thing Um I've focused" + }, + { + "start": 5456.56, + "duration": 0.0, + "text": "that kind of thing Um I've focused primarily<01:30:56.960> on<01:30:57.040> the<01:30:57.199> debugger<01:30:57.600> itself.<01:30:58.239> Um<01:30:58.800> the" + }, + { + "start": 5459.11, + "duration": 0.0, + "text": "primarily on the debugger itself. Um the" + }, + { + "start": 5459.12, + "duration": 0.0, + "text": "primarily on the debugger itself. Um the process<01:30:59.520> control<01:30:59.840> stuff,<01:31:00.320> the<01:31:00.960> the<01:31:01.600> UI" + }, + { + "start": 5462.07, + "duration": 0.0, + "text": "process control stuff, the the UI" + }, + { + "start": 5462.08, + "duration": 0.0, + "text": "process control stuff, the the UI obviously<01:31:02.480> the<01:31:02.719> visualization<01:31:03.199> engine,<01:31:03.600> the" + }, + { + "start": 5463.75, + "duration": 0.0, + "text": "obviously the visualization engine, the" + }, + { + "start": 5463.76, + "duration": 0.0, + "text": "obviously the visualization engine, the evaluation<01:31:04.320> engine,<01:31:04.719> like<01:31:04.880> stuff<01:31:05.120> like<01:31:05.280> that." + }, + { + "start": 5465.59, + "duration": 0.0, + "text": "evaluation engine, like stuff like that." + }, + { + "start": 5465.6, + "duration": 0.0, + "text": "evaluation engine, like stuff like that. So<01:31:06.480> us<01:31:06.800> two,<01:31:07.120> those<01:31:07.280> are<01:31:07.440> what<01:31:07.600> we<01:31:07.760> do." + }, + { + "start": 5468.79, + "duration": 0.0, + "text": "So us two, those are what we do." + }, + { + "start": 5468.8, + "duration": 0.0, + "text": "So us two, those are what we do. >> All right.<01:31:09.679> Um<01:31:10.159> and<01:31:10.400> yeah,<01:31:10.719> for<01:31:11.120> in<01:31:11.280> case" + }, + { + "start": 5471.59, + "duration": 0.0, + "text": ">> All right. Um and yeah, for in case" + }, + { + "start": 5471.6, + "duration": 0.0, + "text": ">> All right. Um and yeah, for in case people<01:31:11.760> haven't<01:31:12.000> heard<01:31:12.159> it,<01:31:12.400> like<01:31:13.040> uh<01:31:13.199> Casey" + }, + { + "start": 5473.669, + "duration": 0.0, + "text": "people haven't heard it, like uh Casey" + }, + { + "start": 5473.679, + "duration": 0.0, + "text": "people haven't heard it, like uh Casey yesterday<01:31:14.159> called<01:31:14.400> him<01:31:14.639> the<01:31:14.960> best<01:31:15.360> systems" + }, + { + "start": 5476.07, + "duration": 0.0, + "text": "yesterday called him the best systems" + }, + { + "start": 5476.08, + "duration": 0.0, + "text": "yesterday called him the best systems architect.<01:31:16.800> He<01:31:17.040> knows" + }, + { + "start": 5478.07, + "duration": 0.0, + "text": "architect. He knows" + }, + { + "start": 5478.08, + "duration": 0.0, + "text": "architect. He knows >> that's" + }, + { + "start": 5478.55, + "duration": 0.0, + "text": ">> that's" + }, + { + "start": 5478.56, + "duration": 0.0, + "text": ">> that's >> I<01:31:18.719> think<01:31:18.800> he<01:31:19.199> said<01:31:19.440> one<01:31:19.600> of<01:31:20.000> maybe" + }, + { + "start": 5480.55, + "duration": 0.0, + "text": ">> I think he said one of maybe" + }, + { + "start": 5480.56, + "duration": 0.0, + "text": ">> I think he said one of maybe >> maybe<01:31:20.800> he<01:31:20.960> said<01:31:21.199> one<01:31:21.360> of<01:31:21.600> but<01:31:21.760> if<01:31:21.840> he<01:31:21.920> said<01:31:22.080> it" + }, + { + "start": 5482.229, + "duration": 0.0, + "text": ">> maybe he said one of but if he said it" + }, + { + "start": 5482.239, + "duration": 0.0, + "text": ">> maybe he said one of but if he said it said<01:31:22.400> it<01:31:22.560> quietly<01:31:23.040> like<01:31:23.280> I<01:31:23.440> heard<01:31:23.679> best" + }, + { + "start": 5483.91, + "duration": 0.0, + "text": "said it quietly like I heard best" + }, + { + "start": 5483.92, + "duration": 0.0, + "text": "said it quietly like I heard best systems<01:31:24.800> architecture" + }, + { + "start": 5485.43, + "duration": 0.0, + "text": "systems architecture" + }, + { + "start": 5485.44, + "duration": 0.0, + "text": "systems architecture >> very<01:31:25.679> very<01:31:26.000> high<01:31:26.159> praise<01:31:27.040> um<01:31:27.440> yeah" + }, + { + "start": 5487.75, + "duration": 0.0, + "text": ">> very very high praise um yeah" + }, + { + "start": 5487.76, + "duration": 0.0, + "text": ">> very very high praise um yeah >> and<01:31:27.920> you're<01:31:28.080> like<01:31:28.239> you're<01:31:28.560> super<01:31:28.880> young<01:31:30.000> um" + }, + { + "start": 5491.03, + "duration": 0.0, + "text": ">> and you're like you're super young um" + }, + { + "start": 5491.04, + "duration": 0.0, + "text": ">> and you're like you're super young um how<01:31:31.280> do<01:31:31.440> you<01:31:31.679> how<01:31:31.920> did<01:31:32.080> you<01:31:32.239> get<01:31:32.480> so<01:31:32.719> good<01:31:32.960> so" + }, + { + "start": 5493.189, + "duration": 0.0, + "text": "how do you how did you get so good so" + }, + { + "start": 5493.199, + "duration": 0.0, + "text": "how do you how did you get so good so fast<01:31:33.600> like<01:31:33.920> it<01:31:34.239> seems<01:31:34.480> like<01:31:34.719> even<01:31:35.040> Casey<01:31:35.520> said" + }, + { + "start": 5495.75, + "duration": 0.0, + "text": "fast like it seems like even Casey said" + }, + { + "start": 5495.76, + "duration": 0.0, + "text": "fast like it seems like even Casey said yesterday<01:31:36.239> like<01:31:36.480> he<01:31:36.800> had<01:31:36.960> his<01:31:37.920> oop<01:31:38.880> oops<01:31:39.679> uh" + }, + { + "start": 5499.91, + "duration": 0.0, + "text": "yesterday like he had his oop oops uh" + }, + { + "start": 5499.92, + "duration": 0.0, + "text": "yesterday like he had his oop oops uh phase<01:31:40.239> where<01:31:40.480> he<01:31:40.639> did<01:31:40.880> heavily" + }, + { + "start": 5501.35, + "duration": 0.0, + "text": "phase where he did heavily" + }, + { + "start": 5501.36, + "duration": 0.0, + "text": "phase where he did heavily object-oriented<01:31:42.159> programming<01:31:42.480> and<01:31:42.719> did<01:31:42.880> all" + }, + { + "start": 5503.03, + "duration": 0.0, + "text": "object-oriented programming and did all" + }, + { + "start": 5503.04, + "duration": 0.0, + "text": "object-oriented programming and did all the<01:31:43.199> pitfalls<01:31:43.920> and<01:31:44.239> I<01:31:44.560> certainly<01:31:44.880> had<01:31:45.120> that" + }, + { + "start": 5505.35, + "duration": 0.0, + "text": "the pitfalls and I certainly had that" + }, + { + "start": 5505.36, + "duration": 0.0, + "text": "the pitfalls and I certainly had that time<01:31:45.520> where<01:31:45.679> I<01:31:45.840> had<01:31:46.239> to<01:31:46.800> unlearn<01:31:47.360> like<01:31:47.920> do<01:31:48.159> all" + }, + { + "start": 5508.31, + "duration": 0.0, + "text": "time where I had to unlearn like do all" + }, + { + "start": 5508.32, + "duration": 0.0, + "text": "time where I had to unlearn like do all the<01:31:48.480> damage<01:31:48.800> that<01:31:48.960> you<01:31:49.120> do<01:31:49.280> with<01:31:49.440> that<01:31:49.600> and" + }, + { + "start": 5509.83, + "duration": 0.0, + "text": "the damage that you do with that and" + }, + { + "start": 5509.84, + "duration": 0.0, + "text": "the damage that you do with that and then<01:31:50.000> see<01:31:50.239> that<01:31:50.560> and<01:31:50.719> unlearn<01:31:51.199> it<01:31:51.440> and<01:31:51.760> just" + }, + { + "start": 5512.07, + "duration": 0.0, + "text": "then see that and unlearn it and just" + }, + { + "start": 5512.08, + "duration": 0.0, + "text": "then see that and unlearn it and just come<01:31:52.239> back<01:31:52.400> to<01:31:52.639> the<01:31:52.719> root<01:31:53.040> like<01:31:53.360> did<01:31:53.600> you<01:31:53.760> skip" + }, + { + "start": 5513.91, + "duration": 0.0, + "text": "come back to the root like did you skip" + }, + { + "start": 5513.92, + "duration": 0.0, + "text": "come back to the root like did you skip that<01:31:54.159> phase<01:31:54.400> or<01:31:54.560> did<01:31:54.719> you<01:31:54.880> pass<01:31:55.120> through<01:31:55.360> it" + }, + { + "start": 5515.51, + "duration": 0.0, + "text": "that phase or did you pass through it" + }, + { + "start": 5515.52, + "duration": 0.0, + "text": "that phase or did you pass through it quickly<01:31:55.840> or<01:31:56.159> how<01:31:56.320> do<01:31:56.480> you<01:31:57.040> how<01:31:57.280> do<01:31:57.360> you<01:31:57.520> get<01:31:57.679> to" + }, + { + "start": 5517.83, + "duration": 0.0, + "text": "quickly or how do you how do you get to" + }, + { + "start": 5517.84, + "duration": 0.0, + "text": "quickly or how do you how do you get to your<01:31:58.000> skill<01:31:58.239> level<01:31:58.400> at<01:31:58.639> your<01:31:58.880> age<01:31:59.120> like<01:31:59.360> what" + }, + { + "start": 5519.51, + "duration": 0.0, + "text": "your skill level at your age like what" + }, + { + "start": 5519.52, + "duration": 0.0, + "text": "your skill level at your age like what happened?" + }, + { + "start": 5520.47, + "duration": 0.0, + "text": "happened?" + }, + { + "start": 5520.48, + "duration": 0.0, + "text": "happened? >> So<01:32:01.040> uh<01:32:01.520> I<01:32:01.760> mean<01:32:01.920> one<01:32:02.080> of<01:32:02.159> the<01:32:02.320> reasons<01:32:02.480> I<01:32:02.639> I<01:32:02.880> got" + }, + { + "start": 5522.95, + "duration": 0.0, + "text": ">> So uh I mean one of the reasons I I got" + }, + { + "start": 5522.96, + "duration": 0.0, + "text": ">> So uh I mean one of the reasons I I got a<01:32:03.120> pretty<01:32:03.280> good<01:32:03.440> head<01:32:03.679> start<01:32:03.840> on<01:32:04.080> everyone<01:32:04.400> I" + }, + { + "start": 5524.55, + "duration": 0.0, + "text": "a pretty good head start on everyone I" + }, + { + "start": 5524.56, + "duration": 0.0, + "text": "a pretty good head start on everyone I start<01:32:04.719> I<01:32:05.040> started<01:32:05.520> programming<01:32:06.000> when<01:32:06.159> I<01:32:06.239> was" + }, + { + "start": 5526.31, + "duration": 0.0, + "text": "start I started programming when I was" + }, + { + "start": 5526.32, + "duration": 0.0, + "text": "start I started programming when I was like<01:32:06.480> six<01:32:06.880> and<01:32:07.040> it<01:32:07.280> wasn't<01:32:07.600> my<01:32:07.840> own<01:32:08.080> doing<01:32:08.560> it" + }, + { + "start": 5528.709, + "duration": 0.0, + "text": "like six and it wasn't my own doing it" + }, + { + "start": 5528.719, + "duration": 0.0, + "text": "like six and it wasn't my own doing it was<01:32:08.800> my<01:32:09.040> older<01:32:09.360> brother<01:32:09.600> who<01:32:09.840> showed<01:32:10.159> me<01:32:10.320> it" + }, + { + "start": 5530.55, + "duration": 0.0, + "text": "was my older brother who showed me it" + }, + { + "start": 5530.56, + "duration": 0.0, + "text": "was my older brother who showed me it and<01:32:10.719> I<01:32:10.880> was<01:32:10.960> like<01:32:11.199> fascinated<01:32:11.679> by<01:32:11.920> it.<01:32:12.480> Um,<01:32:12.960> I" + }, + { + "start": 5533.189, + "duration": 0.0, + "text": "and I was like fascinated by it. Um, I" + }, + { + "start": 5533.199, + "duration": 0.0, + "text": "and I was like fascinated by it. Um, I did<01:32:13.360> have<01:32:13.520> that<01:32:13.679> phase,<01:32:14.080> although<01:32:14.400> I<01:32:14.639> was<01:32:14.719> too" + }, + { + "start": 5535.03, + "duration": 0.0, + "text": "did have that phase, although I was too" + }, + { + "start": 5535.04, + "duration": 0.0, + "text": "did have that phase, although I was too lazy<01:32:15.440> to<01:32:15.679> actually<01:32:16.000> go<01:32:16.159> and<01:32:16.400> do<01:32:16.560> all<01:32:16.719> the" + }, + { + "start": 5536.87, + "duration": 0.0, + "text": "lazy to actually go and do all the" + }, + { + "start": 5536.88, + "duration": 0.0, + "text": "lazy to actually go and do all the complicated<01:32:17.600> oop<01:32:17.840> like<01:32:18.080> template<01:32:18.639> stuff<01:32:18.800> that" + }, + { + "start": 5539.11, + "duration": 0.0, + "text": "complicated oop like template stuff that" + }, + { + "start": 5539.12, + "duration": 0.0, + "text": "complicated oop like template stuff that Casey<01:32:19.600> actually<01:32:19.840> did.<01:32:20.159> So,<01:32:20.560> he<01:32:20.880> actually<01:32:21.199> try" + }, + { + "start": 5541.43, + "duration": 0.0, + "text": "Casey actually did. So, he actually try" + }, + { + "start": 5541.44, + "duration": 0.0, + "text": "Casey actually did. So, he actually try he<01:32:21.679> tried<01:32:21.920> much<01:32:22.080> harder<01:32:22.320> and<01:32:22.480> like<01:32:22.639> went<01:32:22.800> much" + }, + { + "start": 5543.03, + "duration": 0.0, + "text": "he tried much harder and like went much" + }, + { + "start": 5543.04, + "duration": 0.0, + "text": "he tried much harder and like went much further<01:32:23.199> in<01:32:23.360> that<01:32:23.520> direction<01:32:23.760> than<01:32:24.080> than<01:32:24.400> I" + }, + { + "start": 5544.629, + "duration": 0.0, + "text": "further in that direction than than I" + }, + { + "start": 5544.639, + "duration": 0.0, + "text": "further in that direction than than I ever<01:32:24.880> remember<01:32:25.199> myself<01:32:25.600> doing.<01:32:26.159> I<01:32:26.400> definitely" + }, + { + "start": 5546.79, + "duration": 0.0, + "text": "ever remember myself doing. I definitely" + }, + { + "start": 5546.8, + "duration": 0.0, + "text": "ever remember myself doing. I definitely had<01:32:27.040> it<01:32:27.280> though.<01:32:27.840> Um,<01:32:28.320> because<01:32:28.560> it's<01:32:28.719> what" + }, + { + "start": 5548.87, + "duration": 0.0, + "text": "had it though. Um, because it's what" + }, + { + "start": 5548.88, + "duration": 0.0, + "text": "had it though. Um, because it's what people<01:32:29.120> tell<01:32:29.199> you<01:32:29.360> to<01:32:29.520> do,<01:32:29.760> right?<01:32:30.000> like<01:32:30.159> you" + }, + { + "start": 5550.31, + "duration": 0.0, + "text": "people tell you to do, right? like you" + }, + { + "start": 5550.32, + "duration": 0.0, + "text": "people tell you to do, right? like you go<01:32:30.400> and<01:32:30.560> read<01:32:30.719> tutorials<01:32:31.120> and<01:32:31.360> every<01:32:31.679> code<01:32:31.920> is" + }, + { + "start": 5552.07, + "duration": 0.0, + "text": "go and read tutorials and every code is" + }, + { + "start": 5552.08, + "duration": 0.0, + "text": "go and read tutorials and every code is structured<01:32:32.400> in<01:32:32.560> a<01:32:32.719> particular<01:32:33.120> way<01:32:33.440> and<01:32:33.600> so" + }, + { + "start": 5553.75, + "duration": 0.0, + "text": "structured in a particular way and so" + }, + { + "start": 5553.76, + "duration": 0.0, + "text": "structured in a particular way and so you<01:32:33.920> just<01:32:34.080> kind<01:32:34.239> of<01:32:34.320> copy<01:32:34.639> it<01:32:35.520> and<01:32:36.239> um<01:32:36.960> and<01:32:37.440> so<01:32:37.760> I" + }, + { + "start": 5557.99, + "duration": 0.0, + "text": "you just kind of copy it and um and so I" + }, + { + "start": 5558.0, + "duration": 0.0, + "text": "you just kind of copy it and um and so I had<01:32:38.159> it<01:32:38.320> and<01:32:38.560> I<01:32:38.719> didn't<01:32:38.880> really<01:32:39.040> know<01:32:39.199> why<01:32:39.440> it" + }, + { + "start": 5559.59, + "duration": 0.0, + "text": "had it and I didn't really know why it" + }, + { + "start": 5559.6, + "duration": 0.0, + "text": "had it and I didn't really know why it was<01:32:39.760> happening<01:32:40.560> and<01:32:40.800> I<01:32:41.040> just<01:32:41.440> figured<01:32:41.840> it's" + }, + { + "start": 5562.149, + "duration": 0.0, + "text": "was happening and I just figured it's" + }, + { + "start": 5562.159, + "duration": 0.0, + "text": "was happening and I just figured it's like<01:32:42.320> it's<01:32:42.719> important<01:32:43.360> at<01:32:43.600> some<01:32:43.840> point" + }, + { + "start": 5564.07, + "duration": 0.0, + "text": "like it's important at some point" + }, + { + "start": 5564.08, + "duration": 0.0, + "text": "like it's important at some point someday<01:32:44.639> to<01:32:44.880> someone<01:32:45.120> that<01:32:45.360> I<01:32:45.520> put<01:32:45.840> like" + }, + { + "start": 5566.07, + "duration": 0.0, + "text": "someday to someone that I put like" + }, + { + "start": 5566.08, + "duration": 0.0, + "text": "someday to someone that I put like everything<01:32:46.320> behind<01:32:46.560> a<01:32:46.719> getter<01:32:46.880> instead<01:32:47.280> or" + }, + { + "start": 5567.43, + "duration": 0.0, + "text": "everything behind a getter instead or" + }, + { + "start": 5567.44, + "duration": 0.0, + "text": "everything behind a getter instead or whatever.<01:32:47.600> It's<01:32:47.679> like<01:32:47.840> oh<01:32:48.000> this<01:32:48.080> will<01:32:48.159> be<01:32:48.320> this" + }, + { + "start": 5568.47, + "duration": 0.0, + "text": "whatever. It's like oh this will be this" + }, + { + "start": 5568.48, + "duration": 0.0, + "text": "whatever. It's like oh this will be this will<01:32:48.560> be<01:32:48.719> useful<01:32:48.960> someday.<01:32:49.679> Never<01:32:49.920> was" + }, + { + "start": 5570.07, + "duration": 0.0, + "text": "will be useful someday. Never was" + }, + { + "start": 5570.08, + "duration": 0.0, + "text": "will be useful someday. Never was useful.<01:32:50.719> Um<01:32:51.120> but<01:32:51.440> it's<01:32:51.920> uh<01:32:52.080> I<01:32:52.320> just<01:32:52.480> started" + }, + { + "start": 5572.79, + "duration": 0.0, + "text": "useful. Um but it's uh I just started" + }, + { + "start": 5572.8, + "duration": 0.0, + "text": "useful. Um but it's uh I just started doing<01:32:52.960> it<01:32:53.520> but<01:32:53.760> I<01:32:53.920> didn't<01:32:54.159> go<01:32:54.400> nuts<01:32:54.719> with<01:32:55.040> like" + }, + { + "start": 5575.27, + "duration": 0.0, + "text": "doing it but I didn't go nuts with like" + }, + { + "start": 5575.28, + "duration": 0.0, + "text": "doing it but I didn't go nuts with like the<01:32:55.520> crazy<01:32:55.840> abstraction<01:32:56.560> template<01:32:56.960> stuff.<01:32:57.120> I" + }, + { + "start": 5577.27, + "duration": 0.0, + "text": "the crazy abstraction template stuff. I" + }, + { + "start": 5577.28, + "duration": 0.0, + "text": "the crazy abstraction template stuff. I did<01:32:57.440> a<01:32:57.600> little<01:32:57.679> bit<01:32:57.760> of<01:32:57.840> that,<01:32:58.000> but<01:32:58.320> not<01:32:58.639> not<01:32:59.280> um" + }, + { + "start": 5579.43, + "duration": 0.0, + "text": "did a little bit of that, but not not um" + }, + { + "start": 5579.44, + "duration": 0.0, + "text": "did a little bit of that, but not not um I<01:32:59.679> didn't<01:32:59.840> go<01:33:00.159> far<01:33:00.400> down<01:33:00.560> that<01:33:00.800> rabbit<01:33:01.040> hole." + }, + { + "start": 5581.35, + "duration": 0.0, + "text": "I didn't go far down that rabbit hole." + }, + { + "start": 5581.36, + "duration": 0.0, + "text": "I didn't go far down that rabbit hole. The<01:33:01.520> way<01:33:01.600> I<01:33:01.760> got<01:33:01.920> out<01:33:02.000> of<01:33:02.080> it<01:33:02.239> is<01:33:02.400> just<01:33:02.560> Handmade" + }, + { + "start": 5582.95, + "duration": 0.0, + "text": "The way I got out of it is just Handmade" + }, + { + "start": 5582.96, + "duration": 0.0, + "text": "The way I got out of it is just Handmade Hero.<01:33:03.280> Like<01:33:03.440> I<01:33:03.600> I<01:33:04.000> was<01:33:04.159> I<01:33:04.400> was<01:33:04.480> spending<01:33:04.719> a<01:33:04.880> lot" + }, + { + "start": 5584.95, + "duration": 0.0, + "text": "Hero. Like I I was I was spending a lot" + }, + { + "start": 5584.96, + "duration": 0.0, + "text": "Hero. Like I I was I was spending a lot of<01:33:05.040> time<01:33:05.199> building<01:33:05.520> games<01:33:05.760> and<01:33:06.000> engines<01:33:07.440> and" + }, + { + "start": 5588.39, + "duration": 0.0, + "text": "of time building games and engines and" + }, + { + "start": 5588.4, + "duration": 0.0, + "text": "of time building games and engines and um<01:33:08.639> I<01:33:08.880> would<01:33:09.040> build<01:33:09.199> them<01:33:09.360> in<01:33:09.600> sort<01:33:09.760> of<01:33:09.840> this" + }, + { + "start": 5590.07, + "duration": 0.0, + "text": "um I would build them in sort of this" + }, + { + "start": 5590.08, + "duration": 0.0, + "text": "um I would build them in sort of this like<01:33:10.400> you<01:33:10.480> know<01:33:10.560> what<01:33:10.719> you<01:33:10.880> might<01:33:11.040> imagine" + }, + { + "start": 5591.35, + "duration": 0.0, + "text": "like you know what you might imagine" + }, + { + "start": 5591.36, + "duration": 0.0, + "text": "like you know what you might imagine finding<01:33:11.600> on<01:33:11.760> like<01:33:11.920> gamedev<01:33:12.400> forums<01:33:12.880> in<01:33:13.280> the" + }, + { + "start": 5593.43, + "duration": 0.0, + "text": "finding on like gamedev forums in the" + }, + { + "start": 5593.44, + "duration": 0.0, + "text": "finding on like gamedev forums in the early<01:33:13.840> 2000s<01:33:14.960> um<01:33:15.199> sort<01:33:15.360> of<01:33:15.440> like<01:33:15.600> C++<01:33:16.239> 03<01:33:17.040> you" + }, + { + "start": 5597.189, + "duration": 0.0, + "text": "early 2000s um sort of like C++ 03 you" + }, + { + "start": 5597.199, + "duration": 0.0, + "text": "early 2000s um sort of like C++ 03 you know<01:33:17.440> early<01:33:18.159> before<01:33:18.560> C++<01:33:19.120> 11<01:33:19.440> like<01:33:19.600> that<01:33:19.840> style" + }, + { + "start": 5599.99, + "duration": 0.0, + "text": "know early before C++ 11 like that style" + }, + { + "start": 5600.0, + "duration": 0.0, + "text": "know early before C++ 11 like that style of<01:33:20.239> code<01:33:20.400> where<01:33:20.639> it's<01:33:20.800> like<01:33:21.199> object-oriented" + }, + { + "start": 5602.07, + "duration": 0.0, + "text": "of code where it's like object-oriented" + }, + { + "start": 5602.08, + "duration": 0.0, + "text": "of code where it's like object-oriented crap<01:33:22.400> mixed<01:33:22.719> with<01:33:23.120> C<01:33:23.440> basically.<01:33:24.400> And<01:33:24.719> so<01:33:24.880> I" + }, + { + "start": 5605.11, + "duration": 0.0, + "text": "crap mixed with C basically. And so I" + }, + { + "start": 5605.12, + "duration": 0.0, + "text": "crap mixed with C basically. And so I didn't<01:33:25.360> go<01:33:26.239> crazy.<01:33:26.639> Like<01:33:26.800> I<01:33:26.960> was<01:33:27.040> doing<01:33:27.199> a<01:33:27.360> lot" + }, + { + "start": 5607.43, + "duration": 0.0, + "text": "didn't go crazy. Like I was doing a lot" + }, + { + "start": 5607.44, + "duration": 0.0, + "text": "didn't go crazy. Like I was doing a lot of<01:33:27.600> that.<01:33:28.159> Um,<01:33:28.320> and<01:33:28.480> I<01:33:28.719> thought<01:33:28.800> that<01:33:29.120> I" + }, + { + "start": 5609.43, + "duration": 0.0, + "text": "of that. Um, and I thought that I" + }, + { + "start": 5609.44, + "duration": 0.0, + "text": "of that. Um, and I thought that I believed<01:33:29.679> in<01:33:29.840> a<01:33:30.000> lot<01:33:30.080> of<01:33:30.159> things<01:33:30.239> that<01:33:30.400> were" + }, + { + "start": 5610.55, + "duration": 0.0, + "text": "believed in a lot of things that were" + }, + { + "start": 5610.56, + "duration": 0.0, + "text": "believed in a lot of things that were kind<01:33:30.639> of<01:33:30.719> leading<01:33:30.960> me<01:33:31.120> astray,<01:33:31.520> but<01:33:31.679> I<01:33:31.840> didn't" + }, + { + "start": 5611.99, + "duration": 0.0, + "text": "kind of leading me astray, but I didn't" + }, + { + "start": 5612.0, + "duration": 0.0, + "text": "kind of leading me astray, but I didn't actually<01:33:32.320> try<01:33:32.480> that<01:33:32.639> hard<01:33:32.800> on<01:33:33.040> them<01:33:33.199> because<01:33:33.360> I" + }, + { + "start": 5613.51, + "duration": 0.0, + "text": "actually try that hard on them because I" + }, + { + "start": 5613.52, + "duration": 0.0, + "text": "actually try that hard on them because I was<01:33:33.600> too<01:33:33.760> lazy<01:33:34.239> because<01:33:34.480> it's<01:33:34.639> just<01:33:34.719> a<01:33:34.880> ton<01:33:34.960> of" + }, + { + "start": 5615.03, + "duration": 0.0, + "text": "was too lazy because it's just a ton of" + }, + { + "start": 5615.04, + "duration": 0.0, + "text": "was too lazy because it's just a ton of typing.<01:33:35.360> Like<01:33:35.520> Casey<01:33:35.840> was<01:33:36.000> like<01:33:36.400> when<01:33:36.639> Casey" + }, + { + "start": 5617.03, + "duration": 0.0, + "text": "typing. Like Casey was like when Casey" + }, + { + "start": 5617.04, + "duration": 0.0, + "text": "typing. Like Casey was like when Casey was<01:33:37.120> talking<01:33:37.280> about<01:33:37.360> it,<01:33:37.600> he's<01:33:37.760> like<01:33:38.400> he<01:33:38.639> just" + }, + { + "start": 5618.87, + "duration": 0.0, + "text": "was talking about it, he's like he just" + }, + { + "start": 5618.88, + "duration": 0.0, + "text": "was talking about it, he's like he just buckled<01:33:39.280> down<01:33:39.440> and<01:33:39.679> started<01:33:39.920> writing<01:33:40.320> all" + }, + { + "start": 5620.629, + "duration": 0.0, + "text": "buckled down and started writing all" + }, + { + "start": 5620.639, + "duration": 0.0, + "text": "buckled down and started writing all this<01:33:40.960> crazy<01:33:41.360> stuff<01:33:41.600> and<01:33:41.760> I'm<01:33:42.000> like,<01:33:42.239> I<01:33:42.480> just" + }, + { + "start": 5622.629, + "duration": 0.0, + "text": "this crazy stuff and I'm like, I just" + }, + { + "start": 5622.639, + "duration": 0.0, + "text": "this crazy stuff and I'm like, I just don't<01:33:42.960> want<01:33:43.120> to<01:33:43.280> do<01:33:43.360> that.<01:33:43.600> So<01:33:43.760> I<01:33:43.920> kind<01:33:44.080> of<01:33:44.239> I" + }, + { + "start": 5624.47, + "duration": 0.0, + "text": "don't want to do that. So I kind of I" + }, + { + "start": 5624.48, + "duration": 0.0, + "text": "don't want to do that. So I kind of I kind<01:33:44.719> of<01:33:44.880> stayed<01:33:45.120> more<01:33:45.360> constrained<01:33:45.840> and<01:33:46.080> and" + }, + { + "start": 5626.87, + "duration": 0.0, + "text": "kind of stayed more constrained and and" + }, + { + "start": 5626.88, + "duration": 0.0, + "text": "kind of stayed more constrained and and um<01:33:47.440> just<01:33:47.679> tried<01:33:47.840> to<01:33:48.000> build<01:33:48.159> games<01:33:48.400> that<01:33:48.560> way." + }, + { + "start": 5628.709, + "duration": 0.0, + "text": "um just tried to build games that way." + }, + { + "start": 5628.719, + "duration": 0.0, + "text": "um just tried to build games that way. And<01:33:48.880> then<01:33:49.040> when<01:33:49.120> I<01:33:49.280> saw<01:33:49.440> Handmade<01:33:49.760> Hero,<01:33:50.080> I'm" + }, + { + "start": 5630.229, + "duration": 0.0, + "text": "And then when I saw Handmade Hero, I'm" + }, + { + "start": 5630.239, + "duration": 0.0, + "text": "And then when I saw Handmade Hero, I'm like,<01:33:50.880> oh,<01:33:51.120> like<01:33:51.360> none<01:33:51.520> of<01:33:51.600> that<01:33:51.760> was<01:33:51.920> needed." + }, + { + "start": 5632.229, + "duration": 0.0, + "text": "like, oh, like none of that was needed." + }, + { + "start": 5632.239, + "duration": 0.0, + "text": "like, oh, like none of that was needed. Like<01:33:52.400> I<01:33:52.560> didn't<01:33:52.639> have<01:33:52.800> to<01:33:52.880> even<01:33:53.120> go<01:33:53.440> I<01:33:53.679> didn't" + }, + { + "start": 5633.83, + "duration": 0.0, + "text": "Like I didn't have to even go I didn't" + }, + { + "start": 5633.84, + "duration": 0.0, + "text": "Like I didn't have to even go I didn't even<01:33:54.000> even<01:33:54.239> have<01:33:54.400> to<01:33:54.480> like<01:33:54.639> open<01:33:54.800> the<01:33:55.040> door<01:33:55.120> to" + }, + { + "start": 5635.35, + "duration": 0.0, + "text": "even even have to like open the door to" + }, + { + "start": 5635.36, + "duration": 0.0, + "text": "even even have to like open the door to that<01:33:55.520> hallway.<01:33:56.239> I<01:33:56.480> can<01:33:56.560> just<01:33:57.120> you<01:33:57.280> know" + }, + { + "start": 5637.59, + "duration": 0.0, + "text": "that hallway. I can just you know" + }, + { + "start": 5637.6, + "duration": 0.0, + "text": "that hallway. I can just you know actually<01:33:58.000> not<01:33:58.239> get<01:33:58.400> sidetracked." + }, + { + "start": 5638.87, + "duration": 0.0, + "text": "actually not get sidetracked." + }, + { + "start": 5638.88, + "duration": 0.0, + "text": "actually not get sidetracked. >> So<01:33:59.120> maybe<01:33:59.280> a<01:33:59.520> bit<01:33:59.600> of<01:33:59.760> laziness<01:34:00.320> saved." + }, + { + "start": 5640.79, + "duration": 0.0, + "text": ">> So maybe a bit of laziness saved." + }, + { + "start": 5640.8, + "duration": 0.0, + "text": ">> So maybe a bit of laziness saved. >> Yes.<01:34:01.120> Okay." + }, + { + "start": 5641.83, + "duration": 0.0, + "text": ">> Yes. Okay." + }, + { + "start": 5641.84, + "duration": 0.0, + "text": ">> Yes. Okay. >> Yes.<01:34:02.080> It's<01:34:02.239> it's<01:34:02.639> my<01:34:02.800> laziness<01:34:03.280> saved<01:34:03.520> me<01:34:03.679> I" + }, + { + "start": 5643.83, + "duration": 0.0, + "text": ">> Yes. It's it's my laziness saved me I" + }, + { + "start": 5643.84, + "duration": 0.0, + "text": ">> Yes. It's it's my laziness saved me I think<01:34:04.000> to<01:34:04.159> some<01:34:04.320> degree.<01:34:04.480> I<01:34:04.639> want<01:34:04.719> to<01:34:04.880> go<01:34:05.120> go" + }, + { + "start": 5645.43, + "duration": 0.0, + "text": "think to some degree. I want to go go" + }, + { + "start": 5645.44, + "duration": 0.0, + "text": "think to some degree. I want to go go get<01:34:05.679> more<01:34:05.840> into<01:34:06.080> the<01:34:06.239> red<01:34:06.400> debugger<01:34:06.880> details," + }, + { + "start": 5647.189, + "duration": 0.0, + "text": "get more into the red debugger details," + }, + { + "start": 5647.199, + "duration": 0.0, + "text": "get more into the red debugger details, but<01:34:07.440> first<01:34:07.760> like<01:34:08.080> the<01:34:08.320> channel<01:34:08.800> I<01:34:09.040> saw<01:34:09.280> that" + }, + { + "start": 5649.59, + "duration": 0.0, + "text": "but first like the channel I saw that" + }, + { + "start": 5649.6, + "duration": 0.0, + "text": "but first like the channel I saw that like<01:34:10.159> you<01:34:10.400> described<01:34:10.960> your<01:34:11.520> like<01:34:12.000> kind<01:34:12.239> of<01:34:12.320> the" + }, + { + "start": 5652.629, + "duration": 0.0, + "text": "like you described your like kind of the" + }, + { + "start": 5652.639, + "duration": 0.0, + "text": "like you described your like kind of the building<01:34:13.120> generic<01:34:13.679> building<01:34:13.920> blocks<01:34:14.320> you<01:34:14.560> you" + }, + { + "start": 5654.87, + "duration": 0.0, + "text": "building generic building blocks you you" + }, + { + "start": 5654.88, + "duration": 0.0, + "text": "building generic building blocks you you assembled<01:34:15.440> to<01:34:15.840> visualize<01:34:16.400> data<01:34:16.719> in<01:34:16.960> the" + }, + { + "start": 5657.11, + "duration": 0.0, + "text": "assembled to visualize data in the" + }, + { + "start": 5657.12, + "duration": 0.0, + "text": "assembled to visualize data in the debugger<01:34:17.840> and<01:34:18.239> it<01:34:18.560> seems<01:34:18.800> like<01:34:18.960> when<01:34:19.120> I<01:34:19.360> just" + }, + { + "start": 5659.51, + "duration": 0.0, + "text": "debugger and it seems like when I just" + }, + { + "start": 5659.52, + "duration": 0.0, + "text": "debugger and it seems like when I just watch<01:34:20.000> like<01:34:20.239> the<01:34:20.480> things<01:34:20.639> you<01:34:20.880> didn't<01:34:21.040> show" + }, + { + "start": 5661.35, + "duration": 0.0, + "text": "watch like the things you didn't show" + }, + { + "start": 5661.36, + "duration": 0.0, + "text": "watch like the things you didn't show like<01:34:21.520> all<01:34:21.679> the<01:34:21.840> things<01:34:22.000> you<01:34:22.159> you<01:34:22.480> demoed<01:34:22.880> on" + }, + { + "start": 5663.03, + "duration": 0.0, + "text": "like all the things you you demoed on" + }, + { + "start": 5663.04, + "duration": 0.0, + "text": "like all the things you you demoed on Twitter<01:34:23.520> etc<01:34:23.920> of<01:34:24.000> of<01:34:24.159> the<01:34:24.400> power<01:34:24.639> that<01:34:24.960> gives" + }, + { + "start": 5665.11, + "duration": 0.0, + "text": "Twitter etc of of the power that gives" + }, + { + "start": 5665.12, + "duration": 0.0, + "text": "Twitter etc of of the power that gives you<01:34:25.679> it<01:34:25.840> seems<01:34:26.080> like<01:34:26.239> you<01:34:26.639> discovered<01:34:27.360> the" + }, + { + "start": 5667.669, + "duration": 0.0, + "text": "you it seems like you discovered the" + }, + { + "start": 5667.679, + "duration": 0.0, + "text": "you it seems like you discovered the right<01:34:28.400> building<01:34:28.719> blocks<01:34:29.040> that<01:34:29.280> give<01:34:29.440> you" + }, + { + "start": 5670.149, + "duration": 0.0, + "text": "right building blocks that give you" + }, + { + "start": 5670.159, + "duration": 0.0, + "text": "right building blocks that give you enormous<01:34:30.800> expressiveness<01:34:31.760> with<01:34:32.239> very" + }, + { + "start": 5673.99, + "duration": 0.0, + "text": "enormous expressiveness with very" + }, + { + "start": 5674.0, + "duration": 0.0, + "text": "enormous expressiveness with very small<01:34:34.400> set<01:34:34.639> of<01:34:34.960> like<01:34:36.000> it<01:34:36.080> it<01:34:36.239> seems<01:34:36.480> like<01:34:36.639> a" + }, + { + "start": 5676.79, + "duration": 0.0, + "text": "small set of like it it seems like a" + }, + { + "start": 5676.8, + "duration": 0.0, + "text": "small set of like it it seems like a small<01:34:37.040> set<01:34:37.199> of<01:34:38.239> Lego<01:34:38.639> blocks<01:34:38.960> let's<01:34:39.120> say<01:34:39.280> to" + }, + { + "start": 5679.43, + "duration": 0.0, + "text": "small set of Lego blocks let's say to" + }, + { + "start": 5679.44, + "duration": 0.0, + "text": "small set of Lego blocks let's say to assemble<01:34:39.760> it.<01:34:40.239> Um,<01:34:40.880> how<01:34:41.040> do<01:34:41.120> you<01:34:41.280> do<01:34:41.360> that" + }, + { + "start": 5681.59, + "duration": 0.0, + "text": "assemble it. Um, how do you do that" + }, + { + "start": 5681.6, + "duration": 0.0, + "text": "assemble it. Um, how do you do that without<01:34:41.920> like<01:34:42.159> how<01:34:42.320> did<01:34:42.400> you<01:34:42.480> arrive<01:34:42.719> at<01:34:42.960> that" + }, + { + "start": 5684.07, + "duration": 0.0, + "text": "without like how did you arrive at that" + }, + { + "start": 5684.08, + "duration": 0.0, + "text": "without like how did you arrive at that with<01:34:44.400> because<01:34:45.360> a<01:34:45.600> counter<01:34:45.840> example<01:34:46.080> I<01:34:46.239> would" + }, + { + "start": 5686.31, + "duration": 0.0, + "text": "with because a counter example I would" + }, + { + "start": 5686.32, + "duration": 0.0, + "text": "with because a counter example I would give<01:34:46.480> of<01:34:46.639> people<01:34:46.880> trying<01:34:47.120> that<01:34:47.360> is<01:34:47.600> like<01:34:48.400> at" + }, + { + "start": 5688.629, + "duration": 0.0, + "text": "give of people trying that is like at" + }, + { + "start": 5688.639, + "duration": 0.0, + "text": "give of people trying that is like at some<01:34:48.880> point<01:34:49.040> I<01:34:49.199> think<01:34:49.360> the<01:34:49.520> office<01:34:49.920> suite" + }, + { + "start": 5690.31, + "duration": 0.0, + "text": "some point I think the office suite" + }, + { + "start": 5690.32, + "duration": 0.0, + "text": "some point I think the office suite decided<01:34:50.719> that<01:34:51.199> every<01:34:51.520> window<01:34:52.000> every<01:34:52.239> UI" + }, + { + "start": 5692.55, + "duration": 0.0, + "text": "decided that every window every UI" + }, + { + "start": 5692.56, + "duration": 0.0, + "text": "decided that every window every UI element<01:34:52.880> should<01:34:53.120> be<01:34:53.199> a<01:34:53.360> dragable<01:34:53.920> window" + }, + { + "start": 5694.629, + "duration": 0.0, + "text": "element should be a dragable window" + }, + { + "start": 5694.639, + "duration": 0.0, + "text": "element should be a dragable window >> and<01:34:54.880> of<01:34:55.040> course<01:34:55.199> everything<01:34:55.520> that<01:34:55.760> a<01:34:56.000> window" + }, + { + "start": 5696.229, + "duration": 0.0, + "text": ">> and of course everything that a window" + }, + { + "start": 5696.239, + "duration": 0.0, + "text": ">> and of course everything that a window that's<01:34:56.480> floating<01:34:56.880> should<01:34:57.120> be<01:34:57.280> closable<01:34:58.239> and" + }, + { + "start": 5698.55, + "duration": 0.0, + "text": "that's floating should be closable and" + }, + { + "start": 5698.56, + "duration": 0.0, + "text": "that's floating should be closable and so<01:34:59.280> they<01:34:59.600> came<01:34:59.840> to<01:35:00.000> this<01:35:00.400> great<01:35:00.800> state<01:35:01.120> where" + }, + { + "start": 5701.43, + "duration": 0.0, + "text": "so they came to this great state where" + }, + { + "start": 5701.44, + "duration": 0.0, + "text": "so they came to this great state where people<01:35:01.760> could<01:35:02.000> just<01:35:02.400> close<01:35:02.719> their<01:35:03.040> menu<01:35:03.440> bar" + }, + { + "start": 5703.75, + "duration": 0.0, + "text": "people could just close their menu bar" + }, + { + "start": 5703.76, + "duration": 0.0, + "text": "people could just close their menu bar and<01:35:04.080> be<01:35:04.320> completely<01:35:04.880> host<01:35:05.520> unless<01:35:05.920> unless" + }, + { + "start": 5706.229, + "duration": 0.0, + "text": "and be completely host unless unless" + }, + { + "start": 5706.239, + "duration": 0.0, + "text": "and be completely host unless unless they<01:35:06.480> Google<01:35:06.719> how<01:35:06.880> to<01:35:07.040> restore<01:35:07.280> that<01:35:08.000> um<01:35:08.480> and" + }, + { + "start": 5708.629, + "duration": 0.0, + "text": "they Google how to restore that um and" + }, + { + "start": 5708.639, + "duration": 0.0, + "text": "they Google how to restore that um and like<01:35:08.880> they<01:35:09.120> tried<01:35:09.280> to<01:35:09.440> be<01:35:09.520> very<01:35:09.760> generic<01:35:10.320> have" + }, + { + "start": 5710.55, + "duration": 0.0, + "text": "like they tried to be very generic have" + }, + { + "start": 5710.56, + "duration": 0.0, + "text": "like they tried to be very generic have building<01:35:10.800> blocks<01:35:11.040> of<01:35:11.199> like<01:35:11.360> everything's<01:35:11.760> a" + }, + { + "start": 5711.91, + "duration": 0.0, + "text": "building blocks of like everything's a" + }, + { + "start": 5711.92, + "duration": 0.0, + "text": "building blocks of like everything's a dragable<01:35:12.400> window<01:35:12.560> and<01:35:12.800> we're<01:35:12.880> going<01:35:12.960> to<01:35:13.040> get<01:35:13.120> a" + }, + { + "start": 5713.27, + "duration": 0.0, + "text": "dragable window and we're going to get a" + }, + { + "start": 5713.28, + "duration": 0.0, + "text": "dragable window and we're going to get a great<01:35:13.440> power<01:35:13.600> of<01:35:13.760> that<01:35:13.920> and<01:35:14.719> result<01:35:15.040> we<01:35:15.199> all" + }, + { + "start": 5715.35, + "duration": 0.0, + "text": "great power of that and result we all" + }, + { + "start": 5715.36, + "duration": 0.0, + "text": "great power of that and result we all suffered.<01:35:15.920> Um," + }, + { + "start": 5716.709, + "duration": 0.0, + "text": "suffered. Um," + }, + { + "start": 5716.719, + "duration": 0.0, + "text": "suffered. Um, >> how<01:35:16.880> did<01:35:17.040> you<01:35:17.199> get<01:35:17.360> to<01:35:17.520> this<01:35:17.840> set<01:35:18.000> of<01:35:18.159> building" + }, + { + "start": 5718.39, + "duration": 0.0, + "text": ">> how did you get to this set of building" + }, + { + "start": 5718.4, + "duration": 0.0, + "text": ">> how did you get to this set of building blocks?<01:35:18.719> Was<01:35:18.880> it<01:35:18.960> like<01:35:19.679> do<01:35:19.920> you<01:35:20.159> have<01:35:20.320> to" + }, + { + "start": 5720.47, + "duration": 0.0, + "text": "blocks? Was it like do you have to" + }, + { + "start": 5720.48, + "duration": 0.0, + "text": "blocks? Was it like do you have to iterate<01:35:20.800> on<01:35:20.960> that?<01:35:21.199> Was<01:35:21.360> it<01:35:21.520> trial<01:35:21.760> and<01:35:22.000> error?" + }, + { + "start": 5722.149, + "duration": 0.0, + "text": "iterate on that? Was it trial and error?" + }, + { + "start": 5722.159, + "duration": 0.0, + "text": "iterate on that? Was it trial and error? Was<01:35:22.400> it<01:35:22.639> undo<01:35:23.120> redo<01:35:23.760> dozens<01:35:24.080> of<01:35:24.239> times<01:35:24.400> or<01:35:24.639> are" + }, + { + "start": 5724.709, + "duration": 0.0, + "text": "Was it undo redo dozens of times or are" + }, + { + "start": 5724.719, + "duration": 0.0, + "text": "Was it undo redo dozens of times or are you<01:35:24.880> like<01:35:25.199> n<01:35:25.520> like<01:35:25.760> Neo<01:35:26.080> and<01:35:26.320> just<01:35:26.719> see<01:35:26.960> the" + }, + { + "start": 5728.47, + "duration": 0.0, + "text": "you like n like Neo and just see the" + }, + { + "start": 5728.48, + "duration": 0.0, + "text": "you like n like Neo and just see the I<01:35:28.639> I'm<01:35:28.880> definitely<01:35:29.120> not<01:35:29.360> Neo.<01:35:30.480> I<01:35:30.639> think<01:35:30.960> so.<01:35:31.360> I" + }, + { + "start": 5731.59, + "duration": 0.0, + "text": "I I'm definitely not Neo. I think so. I" + }, + { + "start": 5731.6, + "duration": 0.0, + "text": "I I'm definitely not Neo. I think so. I think<01:35:31.920> um<01:35:32.560> I<01:35:32.880> think<01:35:33.040> that<01:35:33.520> where<01:35:33.920> people<01:35:34.719> where" + }, + { + "start": 5735.03, + "duration": 0.0, + "text": "think um I think that where people where" + }, + { + "start": 5735.04, + "duration": 0.0, + "text": "think um I think that where people where I've<01:35:35.280> screwed<01:35:35.520> up<01:35:35.679> in<01:35:35.920> the<01:35:36.000> past<01:35:36.239> and<01:35:36.480> where<01:35:36.800> I" + }, + { + "start": 5737.11, + "duration": 0.0, + "text": "I've screwed up in the past and where I" + }, + { + "start": 5737.12, + "duration": 0.0, + "text": "I've screwed up in the past and where I think<01:35:37.440> a<01:35:37.679> lot<01:35:37.760> of<01:35:37.920> those<01:35:38.159> designs<01:35:38.560> are<01:35:38.719> screwed" + }, + { + "start": 5739.03, + "duration": 0.0, + "text": "think a lot of those designs are screwed" + }, + { + "start": 5739.04, + "duration": 0.0, + "text": "think a lot of those designs are screwed up<01:35:39.360> is<01:35:39.600> when<01:35:39.760> they<01:35:39.920> try<01:35:40.080> to<01:35:40.159> abstract<01:35:40.639> over" + }, + { + "start": 5740.95, + "duration": 0.0, + "text": "up is when they try to abstract over" + }, + { + "start": 5740.96, + "duration": 0.0, + "text": "up is when they try to abstract over like<01:35:41.199> they<01:35:41.360> have<01:35:41.520> like<01:35:41.679> one<01:35:42.080> interface<01:35:42.880> but" + }, + { + "start": 5743.11, + "duration": 0.0, + "text": "like they have like one interface but" + }, + { + "start": 5743.12, + "duration": 0.0, + "text": "like they have like one interface but that<01:35:43.280> interface<01:35:43.679> actually<01:35:43.920> implies<01:35:44.320> many" + }, + { + "start": 5744.629, + "duration": 0.0, + "text": "that interface actually implies many" + }, + { + "start": 5744.639, + "duration": 0.0, + "text": "that interface actually implies many concrete<01:35:45.120> realities.<01:35:45.600> And<01:35:45.760> I<01:35:45.920> think<01:35:46.080> people<01:35:46.639> I" + }, + { + "start": 5746.95, + "duration": 0.0, + "text": "concrete realities. And I think people I" + }, + { + "start": 5746.96, + "duration": 0.0, + "text": "concrete realities. And I think people I think<01:35:47.040> people<01:35:47.360> lie<01:35:47.600> to<01:35:47.679> themselves<01:35:48.080> a<01:35:48.239> little" + }, + { + "start": 5748.31, + "duration": 0.0, + "text": "think people lie to themselves a little" + }, + { + "start": 5748.32, + "duration": 0.0, + "text": "think people lie to themselves a little bit<01:35:48.480> about<01:35:48.800> how<01:35:49.360> little<01:35:50.000> concret<01:35:50.560> they<01:35:50.800> they" + }, + { + "start": 5751.03, + "duration": 0.0, + "text": "bit about how little concret they they" + }, + { + "start": 5751.04, + "duration": 0.0, + "text": "bit about how little concret they they lie<01:35:51.199> to<01:35:51.360> themselves<01:35:51.679> about<01:35:51.840> how<01:35:52.080> many" + }, + { + "start": 5752.39, + "duration": 0.0, + "text": "lie to themselves about how many" + }, + { + "start": 5752.4, + "duration": 0.0, + "text": "lie to themselves about how many concrete<01:35:52.880> details<01:35:53.280> actually<01:35:53.520> float<01:35:53.840> up<01:35:53.920> and" + }, + { + "start": 5754.149, + "duration": 0.0, + "text": "concrete details actually float up and" + }, + { + "start": 5754.159, + "duration": 0.0, + "text": "concrete details actually float up and are<01:35:54.320> needed<01:35:54.560> in<01:35:54.719> the<01:35:54.880> abstraction.<01:35:55.840> And<01:35:56.080> so," + }, + { + "start": 5756.79, + "duration": 0.0, + "text": "are needed in the abstraction. And so," + }, + { + "start": 5756.8, + "duration": 0.0, + "text": "are needed in the abstraction. And so, um,<01:35:57.120> those<01:35:57.360> abstractions<01:35:57.920> get<01:35:58.080> pretty" + }, + { + "start": 5758.31, + "duration": 0.0, + "text": "um, those abstractions get pretty" + }, + { + "start": 5758.32, + "duration": 0.0, + "text": "um, those abstractions get pretty brittle<01:35:58.719> and<01:35:58.960> leaky<01:35:59.520> and,<01:36:00.159> um,<01:36:00.719> and<01:36:00.960> so<01:36:02.159> I" + }, + { + "start": 5762.39, + "duration": 0.0, + "text": "brittle and leaky and, um, and so I" + }, + { + "start": 5762.4, + "duration": 0.0, + "text": "brittle and leaky and, um, and so I think<01:36:02.480> it's<01:36:02.800> that<01:36:03.120> root<01:36:03.440> problem<01:36:03.760> where<01:36:03.920> it's" + }, + { + "start": 5764.07, + "duration": 0.0, + "text": "think it's that root problem where it's" + }, + { + "start": 5764.08, + "duration": 0.0, + "text": "think it's that root problem where it's like<01:36:04.239> you've<01:36:04.480> got<01:36:04.639> one<01:36:04.880> thing<01:36:05.120> you<01:36:05.360> want<01:36:05.440> to" + }, + { + "start": 5765.59, + "duration": 0.0, + "text": "like you've got one thing you want to" + }, + { + "start": 5765.6, + "duration": 0.0, + "text": "like you've got one thing you want to treat<01:36:05.760> as<01:36:06.000> one<01:36:06.159> thing,<01:36:06.560> but<01:36:06.800> it's<01:36:07.040> secretly" + }, + { + "start": 5767.51, + "duration": 0.0, + "text": "treat as one thing, but it's secretly" + }, + { + "start": 5767.52, + "duration": 0.0, + "text": "treat as one thing, but it's secretly multiple<01:36:07.920> things<01:36:08.320> and<01:36:08.639> you<01:36:08.880> don't<01:36:09.040> want<01:36:09.199> to" + }, + { + "start": 5769.35, + "duration": 0.0, + "text": "multiple things and you don't want to" + }, + { + "start": 5769.36, + "duration": 0.0, + "text": "multiple things and you don't want to pretend<01:36:09.600> that<01:36:09.760> it's<01:36:10.000> multiple<01:36:10.320> things.<01:36:10.560> Now," + }, + { + "start": 5771.03, + "duration": 0.0, + "text": "pretend that it's multiple things. Now," + }, + { + "start": 5771.04, + "duration": 0.0, + "text": "pretend that it's multiple things. Now, the<01:36:11.280> way<01:36:11.360> that<01:36:11.520> I<01:36:11.760> tend<01:36:12.000> to<01:36:12.159> think<01:36:12.239> about<01:36:12.400> it<01:36:12.560> is" + }, + { + "start": 5772.79, + "duration": 0.0, + "text": "the way that I tend to think about it is" + }, + { + "start": 5772.8, + "duration": 0.0, + "text": "the way that I tend to think about it is like<01:36:12.960> I'm<01:36:13.199> always<01:36:13.520> trying<01:36:13.760> to<01:36:14.000> take<01:36:14.239> a<01:36:14.560> path" + }, + { + "start": 5774.95, + "duration": 0.0, + "text": "like I'm always trying to take a path" + }, + { + "start": 5774.96, + "duration": 0.0, + "text": "like I'm always trying to take a path that's<01:36:15.280> doing<01:36:15.520> some<01:36:15.760> work.<01:36:16.000> So,<01:36:16.239> in<01:36:16.400> the<01:36:16.480> case" + }, + { + "start": 5776.55, + "duration": 0.0, + "text": "that's doing some work. So, in the case" + }, + { + "start": 5776.56, + "duration": 0.0, + "text": "that's doing some work. So, in the case of<01:36:16.719> the<01:36:16.800> visual<01:36:17.199> uh,<01:36:17.280> the<01:36:17.440> evaluation<01:36:18.159> system," + }, + { + "start": 5779.669, + "duration": 0.0, + "text": "of the visual uh, the evaluation system," + }, + { + "start": 5779.679, + "duration": 0.0, + "text": "of the visual uh, the evaluation system, I<01:36:19.920> started<01:36:20.239> with<01:36:20.400> just<01:36:20.560> the<01:36:20.800> debug" + }, + { + "start": 5781.43, + "duration": 0.0, + "text": "I started with just the debug" + }, + { + "start": 5781.44, + "duration": 0.0, + "text": "I started with just the debug evaluation.<01:36:22.000> So<01:36:22.159> I<01:36:22.320> started<01:36:22.480> with<01:36:22.639> like<01:36:22.960> look," + }, + { + "start": 5783.11, + "duration": 0.0, + "text": "evaluation. So I started with like look," + }, + { + "start": 5783.12, + "duration": 0.0, + "text": "evaluation. So I started with like look, I've<01:36:23.280> got<01:36:23.360> an<01:36:23.520> address<01:36:23.760> space.<01:36:24.000> I've<01:36:24.159> got<01:36:24.239> a" + }, + { + "start": 5784.47, + "duration": 0.0, + "text": "I've got an address space. I've got a" + }, + { + "start": 5784.48, + "duration": 0.0, + "text": "I've got an address space. I've got a selected<01:36:24.880> thread<01:36:25.199> that's<01:36:25.440> inside<01:36:25.679> of<01:36:25.760> a" + }, + { + "start": 5786.47, + "duration": 0.0, + "text": "selected thread that's inside of a" + }, + { + "start": 5786.48, + "duration": 0.0, + "text": "selected thread that's inside of a debug.<01:36:27.199> I<01:36:27.440> can<01:36:27.520> evaluate<01:36:28.000> things<01:36:28.159> inside<01:36:28.480> of" + }, + { + "start": 5788.629, + "duration": 0.0, + "text": "debug. I can evaluate things inside of" + }, + { + "start": 5788.639, + "duration": 0.0, + "text": "debug. I can evaluate things inside of that.<01:36:29.440> Um,<01:36:30.639> and<01:36:31.120> what<01:36:31.440> I<01:36:31.600> I<01:36:32.080> at<01:36:32.239> some<01:36:32.480> point<01:36:32.719> I" + }, + { + "start": 5793.11, + "duration": 0.0, + "text": "that. Um, and what I I at some point I" + }, + { + "start": 5793.12, + "duration": 0.0, + "text": "that. Um, and what I I at some point I thought<01:36:33.679> hard<01:36:33.920> about<01:36:34.080> it<01:36:34.239> and<01:36:34.400> I<01:36:34.639> noticed<01:36:34.880> that" + }, + { + "start": 5795.11, + "duration": 0.0, + "text": "thought hard about it and I noticed that" + }, + { + "start": 5795.12, + "duration": 0.0, + "text": "thought hard about it and I noticed that like<01:36:35.360> this<01:36:35.600> file<01:36:35.920> system<01:36:36.719> split<01:36:37.120> was<01:36:37.360> going<01:36:37.440> to" + }, + { + "start": 5797.51, + "duration": 0.0, + "text": "like this file system split was going to" + }, + { + "start": 5797.52, + "duration": 0.0, + "text": "like this file system split was going to be<01:36:37.600> a<01:36:37.840> problem.<01:36:38.800> Um," + }, + { + "start": 5800.31, + "duration": 0.0, + "text": "be a problem. Um," + }, + { + "start": 5800.32, + "duration": 0.0, + "text": "be a problem. Um, and<01:36:40.560> so<01:36:40.719> I<01:36:40.960> needed<01:36:41.199> to<01:36:41.360> find<01:36:41.520> a<01:36:41.679> way<01:36:41.840> to<01:36:42.000> take" + }, + { + "start": 5802.229, + "duration": 0.0, + "text": "and so I needed to find a way to take" + }, + { + "start": 5802.239, + "duration": 0.0, + "text": "and so I needed to find a way to take the<01:36:42.480> existing<01:36:42.800> code<01:36:43.120> path<01:36:43.840> and<01:36:44.239> like<01:36:44.560> kind<01:36:44.800> of" + }, + { + "start": 5804.87, + "duration": 0.0, + "text": "the existing code path and like kind of" + }, + { + "start": 5804.88, + "duration": 0.0, + "text": "the existing code path and like kind of just<01:36:45.040> widen<01:36:45.440> it.<01:36:45.600> Like<01:36:45.760> you<01:36:45.920> want<01:36:46.000> to<01:36:46.080> just<01:36:46.239> say" + }, + { + "start": 5806.47, + "duration": 0.0, + "text": "just widen it. Like you want to just say" + }, + { + "start": 5806.48, + "duration": 0.0, + "text": "just widen it. Like you want to just say this<01:36:46.719> is<01:36:47.040> expressing<01:36:47.600> more<01:36:48.320> than<01:36:48.719> what<01:36:48.960> it<01:36:49.119> was" + }, + { + "start": 5809.35, + "duration": 0.0, + "text": "this is expressing more than what it was" + }, + { + "start": 5809.36, + "duration": 0.0, + "text": "this is expressing more than what it was before.<01:36:49.840> So<01:36:50.000> it's<01:36:50.239> actually<01:36:50.400> the<01:36:50.560> same" + }, + { + "start": 5810.79, + "duration": 0.0, + "text": "before. So it's actually the same" + }, + { + "start": 5810.8, + "duration": 0.0, + "text": "before. So it's actually the same concrete<01:36:51.199> code<01:36:51.440> path.<01:36:51.920> It's<01:36:52.080> not<01:36:52.159> an" + }, + { + "start": 5812.31, + "duration": 0.0, + "text": "concrete code path. It's not an" + }, + { + "start": 5812.32, + "duration": 0.0, + "text": "concrete code path. It's not an abstraction<01:36:52.719> over<01:36:52.960> many<01:36:53.199> things.<01:36:53.440> It's<01:36:53.600> just" + }, + { + "start": 5813.75, + "duration": 0.0, + "text": "abstraction over many things. It's just" + }, + { + "start": 5813.76, + "duration": 0.0, + "text": "abstraction over many things. It's just one<01:36:54.000> thing<01:36:54.400> which<01:36:54.719> contains<01:36:55.040> more" + }, + { + "start": 5815.27, + "duration": 0.0, + "text": "one thing which contains more" + }, + { + "start": 5815.28, + "duration": 0.0, + "text": "one thing which contains more information.<01:36:56.159> And<01:36:56.719> once<01:36:56.960> you<01:36:57.199> get<01:36:57.280> to<01:36:57.440> that" + }, + { + "start": 5817.59, + "duration": 0.0, + "text": "information. And once you get to that" + }, + { + "start": 5817.6, + "duration": 0.0, + "text": "information. And once you get to that point,<01:36:57.840> it's<01:36:58.000> like,<01:36:58.400> you<01:36:58.480> know,<01:36:58.639> you<01:36:58.719> could" + }, + { + "start": 5818.87, + "duration": 0.0, + "text": "point, it's like, you know, you could" + }, + { + "start": 5818.88, + "duration": 0.0, + "text": "point, it's like, you know, you could make<01:36:58.960> the<01:36:59.199> argument<01:36:59.440> it's<01:36:59.600> like,<01:36:59.760> well,<01:37:00.000> now" + }, + { + "start": 5820.149, + "duration": 0.0, + "text": "make the argument it's like, well, now" + }, + { + "start": 5820.159, + "duration": 0.0, + "text": "make the argument it's like, well, now the<01:37:00.320> space<01:37:00.480> is<01:37:00.719> being<01:37:00.960> specified<01:37:01.600> when<01:37:02.080> it" + }, + { + "start": 5822.229, + "duration": 0.0, + "text": "the space is being specified when it" + }, + { + "start": 5822.239, + "duration": 0.0, + "text": "the space is being specified when it doesn't<01:37:02.480> need<01:37:02.560> to<01:37:02.639> be<01:37:02.880> or<01:37:03.199> it's<01:37:03.360> like<01:37:03.840> it's" + }, + { + "start": 5824.07, + "duration": 0.0, + "text": "doesn't need to be or it's like it's" + }, + { + "start": 5824.08, + "duration": 0.0, + "text": "doesn't need to be or it's like it's like<01:37:04.800> just<01:37:05.119> store<01:37:05.440> the<01:37:05.679> space,<01:37:06.000> dude.<01:37:06.320> Like" + }, + { + "start": 5826.47, + "duration": 0.0, + "text": "like just store the space, dude. Like" + }, + { + "start": 5826.48, + "duration": 0.0, + "text": "like just store the space, dude. Like it's<01:37:06.719> not<01:37:06.800> that<01:37:06.960> much<01:37:07.199> data.<01:37:07.520> It's<01:37:07.760> it's<01:37:07.920> it's" + }, + { + "start": 5828.149, + "duration": 0.0, + "text": "it's not that much data. It's it's it's" + }, + { + "start": 5828.159, + "duration": 0.0, + "text": "it's not that much data. It's it's it's it's<01:37:08.719> tiny.<01:37:09.119> You're<01:37:09.280> making<01:37:09.440> it<01:37:09.600> more" + }, + { + "start": 5829.75, + "duration": 0.0, + "text": "it's tiny. You're making it more" + }, + { + "start": 5829.76, + "duration": 0.0, + "text": "it's tiny. You're making it more flexible,<01:37:10.159> basically.<01:37:10.560> So<01:37:10.639> I<01:37:10.880> so<01:37:11.040> I<01:37:11.199> try<01:37:11.360> to" + }, + { + "start": 5831.99, + "duration": 0.0, + "text": "flexible, basically. So I so I try to" + }, + { + "start": 5832.0, + "duration": 0.0, + "text": "flexible, basically. So I so I try to take<01:37:12.239> that<01:37:12.400> approach<01:37:12.639> where<01:37:12.800> it's<01:37:13.040> like<01:37:13.360> start" + }, + { + "start": 5833.669, + "duration": 0.0, + "text": "take that approach where it's like start" + }, + { + "start": 5833.679, + "duration": 0.0, + "text": "take that approach where it's like start with<01:37:14.320> start<01:37:14.560> by<01:37:14.880> laying<01:37:15.040> out<01:37:15.119> my<01:37:15.360> constraints" + }, + { + "start": 5835.75, + "duration": 0.0, + "text": "with start by laying out my constraints" + }, + { + "start": 5835.76, + "duration": 0.0, + "text": "with start by laying out my constraints as<01:37:15.920> many<01:37:16.080> as<01:37:16.239> I<01:37:16.400> know<01:37:17.040> build<01:37:17.199> a<01:37:17.360> path<01:37:17.600> which" + }, + { + "start": 5837.83, + "duration": 0.0, + "text": "as many as I know build a path which" + }, + { + "start": 5837.84, + "duration": 0.0, + "text": "as many as I know build a path which supports<01:37:18.239> those<01:37:18.719> and<01:37:18.960> then<01:37:19.119> try<01:37:19.280> to<01:37:19.440> fit<01:37:19.679> more" + }, + { + "start": 5839.83, + "duration": 0.0, + "text": "supports those and then try to fit more" + }, + { + "start": 5839.84, + "duration": 0.0, + "text": "supports those and then try to fit more constraints<01:37:20.320> into<01:37:20.480> it<01:37:20.639> and<01:37:20.880> sort<01:37:21.040> of<01:37:21.199> widen" + }, + { + "start": 5841.51, + "duration": 0.0, + "text": "constraints into it and sort of widen" + }, + { + "start": 5841.52, + "duration": 0.0, + "text": "constraints into it and sort of widen the<01:37:21.679> possibility<01:37:22.159> space<01:37:22.480> as<01:37:22.639> as<01:37:23.040> possible." + }, + { + "start": 5843.35, + "duration": 0.0, + "text": "the possibility space as as possible." + }, + { + "start": 5843.36, + "duration": 0.0, + "text": "the possibility space as as possible. It's<01:37:23.520> super<01:37:23.920> super<01:37:24.239> abstract.<01:37:24.719> It's<01:37:24.880> really" + }, + { + "start": 5845.03, + "duration": 0.0, + "text": "It's super super abstract. It's really" + }, + { + "start": 5845.04, + "duration": 0.0, + "text": "It's super super abstract. It's really hard<01:37:25.119> to<01:37:25.280> describe<01:37:25.600> how<01:37:25.679> I<01:37:25.840> think<01:37:25.920> about<01:37:26.080> it" + }, + { + "start": 5846.149, + "duration": 0.0, + "text": "hard to describe how I think about it" + }, + { + "start": 5846.159, + "duration": 0.0, + "text": "hard to describe how I think about it but<01:37:26.400> hopefully<01:37:26.719> that's<01:37:27.119> some<01:37:27.360> some<01:37:27.679> degree<01:37:27.920> of" + }, + { + "start": 5848.07, + "duration": 0.0, + "text": "but hopefully that's some some degree of" + }, + { + "start": 5848.08, + "duration": 0.0, + "text": "but hopefully that's some some degree of insight<01:37:28.480> into<01:37:28.719> it." + }, + { + "start": 5849.109, + "duration": 0.0, + "text": "insight into it." + }, + { + "start": 5849.119, + "duration": 0.0, + "text": "insight into it. >> So<01:37:29.440> uh<01:37:29.760> can<01:37:29.920> you<01:37:30.080> rephrase<01:37:30.400> that<01:37:30.639> as<01:37:30.800> kind<01:37:30.960> of" + }, + { + "start": 5851.03, + "duration": 0.0, + "text": ">> So uh can you rephrase that as kind of" + }, + { + "start": 5851.04, + "duration": 0.0, + "text": ">> So uh can you rephrase that as kind of like<01:37:31.920> fat<01:37:32.320> strcts<01:37:32.719> instead<01:37:33.119> of<01:37:33.679> right" + }, + { + "start": 5854.229, + "duration": 0.0, + "text": "like fat strcts instead of right" + }, + { + "start": 5854.239, + "duration": 0.0, + "text": "like fat strcts instead of right >> uh<01:37:34.719> domain<01:37:35.199> model<01:37:35.840> statically<01:37:36.880> whatever<01:37:37.199> the" + }, + { + "start": 5857.35, + "duration": 0.0, + "text": ">> uh domain model statically whatever the" + }, + { + "start": 5857.36, + "duration": 0.0, + "text": ">> uh domain model statically whatever the thing<01:37:37.440> was<01:37:37.679> that<01:37:37.920> I<01:37:38.159> can't<01:37:38.320> remember.<01:37:38.880> Yeah," + }, + { + "start": 5859.35, + "duration": 0.0, + "text": "thing was that I can't remember. Yeah," + }, + { + "start": 5859.36, + "duration": 0.0, + "text": "thing was that I can't remember. Yeah, we're<01:37:39.600> team<01:37:39.760> Plex<01:37:40.159> basically.<01:37:40.639> So<01:37:40.880> that's" + }, + { + "start": 5861.109, + "duration": 0.0, + "text": "we're team Plex basically. So that's" + }, + { + "start": 5861.119, + "duration": 0.0, + "text": "we're team Plex basically. So that's Plex.<01:37:41.600> It's<01:37:41.840> Plex<01:37:42.159> programming.<01:37:42.560> Yeah." + }, + { + "start": 5862.79, + "duration": 0.0, + "text": "Plex. It's Plex programming. Yeah." + }, + { + "start": 5862.8, + "duration": 0.0, + "text": "Plex. It's Plex programming. Yeah. >> For<01:37:42.880> people<01:37:43.119> who<01:37:43.280> don't<01:37:43.360> know<01:37:43.440> what<01:37:43.679> Plex<01:37:44.000> is," + }, + { + "start": 5864.31, + "duration": 0.0, + "text": ">> For people who don't know what Plex is," + }, + { + "start": 5864.32, + "duration": 0.0, + "text": ">> For people who don't know what Plex is, watch<01:37:44.560> yesterday's<01:37:45.040> stream.<01:37:45.520> Uh<01:37:45.840> you<01:37:46.000> should" + }, + { + "start": 5866.229, + "duration": 0.0, + "text": "watch yesterday's stream. Uh you should" + }, + { + "start": 5866.239, + "duration": 0.0, + "text": "watch yesterday's stream. Uh you should watch<01:37:46.320> it<01:37:46.480> anyways.<01:37:46.880> It's<01:37:47.119> good.<01:37:47.760> Um<01:37:48.800> right." + }, + { + "start": 5869.109, + "duration": 0.0, + "text": "watch it anyways. It's good. Um right." + }, + { + "start": 5869.119, + "duration": 0.0, + "text": "watch it anyways. It's good. Um right. Yeah,<01:37:49.280> because<01:37:49.520> I<01:37:49.760> struggled<01:37:50.159> like<01:37:50.480> when<01:37:50.719> I" + }, + { + "start": 5870.95, + "duration": 0.0, + "text": "Yeah, because I struggled like when I" + }, + { + "start": 5870.96, + "duration": 0.0, + "text": "Yeah, because I struggled like when I design<01:37:51.360> systems,<01:37:51.920> I<01:37:52.159> don't<01:37:52.239> have<01:37:52.400> your<01:37:52.719> skill" + }, + { + "start": 5873.03, + "duration": 0.0, + "text": "design systems, I don't have your skill" + }, + { + "start": 5873.04, + "duration": 0.0, + "text": "design systems, I don't have your skill like<01:37:53.280> often<01:37:53.679> like<01:37:54.159> the<01:37:54.400> building<01:37:54.719> blocks" + }, + { + "start": 5875.109, + "duration": 0.0, + "text": "like often like the building blocks" + }, + { + "start": 5875.119, + "duration": 0.0, + "text": "like often like the building blocks don't<01:37:55.280> quite<01:37:55.600> fit<01:37:55.840> and<01:37:56.080> they<01:37:56.480> give<01:37:56.639> me<01:37:56.880> more" + }, + { + "start": 5877.109, + "duration": 0.0, + "text": "don't quite fit and they give me more" + }, + { + "start": 5877.119, + "duration": 0.0, + "text": "don't quite fit and they give me more complexity<01:37:57.760> with<01:37:58.480> that<01:37:58.800> much<01:37:58.960> power<01:37:59.199> and<01:37:59.360> it" + }, + { + "start": 5879.59, + "duration": 0.0, + "text": "complexity with that much power and it" + }, + { + "start": 5879.6, + "duration": 0.0, + "text": "complexity with that much power and it seems<01:37:59.760> like<01:38:00.159> I<01:38:00.400> want<01:38:00.560> to<01:38:01.040> like<01:38:01.360> I<01:38:01.600> would<01:38:01.679> like" + }, + { + "start": 5881.75, + "duration": 0.0, + "text": "seems like I want to like I would like" + }, + { + "start": 5881.76, + "duration": 0.0, + "text": "seems like I want to like I would like to<01:38:01.920> hit<01:38:02.080> that<01:38:02.239> sweet<01:38:02.400> spot.<01:38:02.639> I<01:38:02.800> see<01:38:02.960> that.<01:38:03.520> Um" + }, + { + "start": 5884.47, + "duration": 0.0, + "text": "to hit that sweet spot. I see that. Um" + }, + { + "start": 5884.48, + "duration": 0.0, + "text": "to hit that sweet spot. I see that. Um well<01:38:04.800> let's<01:38:05.040> get<01:38:05.199> more<01:38:05.440> into<01:38:05.679> before<01:38:05.920> I<01:38:06.080> open" + }, + { + "start": 5886.31, + "duration": 0.0, + "text": "well let's get more into before I open" + }, + { + "start": 5886.32, + "duration": 0.0, + "text": "well let's get more into before I open to<01:38:06.560> the<01:38:06.880> like<01:38:07.600> to<01:38:07.840> the<01:38:08.000> audience.<01:38:08.880> Um<01:38:09.119> I<01:38:09.280> have<01:38:09.360> a" + }, + { + "start": 5889.51, + "duration": 0.0, + "text": "to the like to the audience. Um I have a" + }, + { + "start": 5889.52, + "duration": 0.0, + "text": "to the like to the audience. Um I have a few<01:38:09.679> more<01:38:09.760> questions<01:38:10.000> about<01:38:10.159> the<01:38:10.320> debugger" + }, + { + "start": 5890.629, + "duration": 0.0, + "text": "few more questions about the debugger" + }, + { + "start": 5890.639, + "duration": 0.0, + "text": "few more questions about the debugger itself.<01:38:10.960> We<01:38:11.119> did<01:38:11.280> you<01:38:11.440> didn't<01:38:11.679> talk<01:38:11.840> about<01:38:11.920> the" + }, + { + "start": 5892.149, + "duration": 0.0, + "text": "itself. We did you didn't talk about the" + }, + { + "start": 5892.159, + "duration": 0.0, + "text": "itself. We did you didn't talk about the red<01:38:12.480> debugger<01:38:13.199> details<01:38:13.920> very<01:38:14.239> much<01:38:14.480> like" + }, + { + "start": 5895.27, + "duration": 0.0, + "text": "red debugger details very much like" + }, + { + "start": 5895.28, + "duration": 0.0, + "text": "red debugger details very much like >> very<01:38:15.600> much<01:38:15.760> but<01:38:16.159> you<01:38:16.400> have<01:38:16.560> your<01:38:16.800> own<01:38:17.360> debug" + }, + { + "start": 5897.83, + "duration": 0.0, + "text": ">> very much but you have your own debug" + }, + { + "start": 5897.84, + "duration": 0.0, + "text": ">> very much but you have your own debug info<01:38:18.320> format." + }, + { + "start": 5899.03, + "duration": 0.0, + "text": "info format." + }, + { + "start": 5899.04, + "duration": 0.0, + "text": "info format. >> Yes." + }, + { + "start": 5899.51, + "duration": 0.0, + "text": ">> Yes." + }, + { + "start": 5899.52, + "duration": 0.0, + "text": ">> Yes. >> And<01:38:19.920> you<01:38:20.159> convert<01:38:20.639> from<01:38:21.520> uh<01:38:21.760> code<01:38:22.000> view<01:38:22.239> which" + }, + { + "start": 5902.39, + "duration": 0.0, + "text": ">> And you convert from uh code view which" + }, + { + "start": 5902.4, + "duration": 0.0, + "text": ">> And you convert from uh code view which is<01:38:22.480> the<01:38:22.639> Microsoft<01:38:23.119> format<01:38:23.520> that's<01:38:23.760> stored<01:38:23.920> in" + }, + { + "start": 5904.07, + "duration": 0.0, + "text": "is the Microsoft format that's stored in" + }, + { + "start": 5904.08, + "duration": 0.0, + "text": "is the Microsoft format that's stored in PDB<01:38:25.040> um<01:38:25.280> to<01:38:25.520> that." + }, + { + "start": 5906.149, + "duration": 0.0, + "text": "PDB um to that." + }, + { + "start": 5906.159, + "duration": 0.0, + "text": "PDB um to that. >> Mhm.<01:38:26.800> What<01:38:27.280> prompted<01:38:27.760> that<01:38:28.239> and<01:38:28.719> like<01:38:28.960> how<01:38:29.199> did" + }, + { + "start": 5909.35, + "duration": 0.0, + "text": ">> Mhm. What prompted that and like how did" + }, + { + "start": 5909.36, + "duration": 0.0, + "text": ">> Mhm. What prompted that and like how did you<01:38:29.520> design<01:38:29.760> that<01:38:30.000> dra<01:38:30.320> debug<01:38:30.560> info<01:38:30.960> format" + }, + { + "start": 5911.27, + "duration": 0.0, + "text": "you design that dra debug info format" + }, + { + "start": 5911.28, + "duration": 0.0, + "text": "you design that dra debug info format like<01:38:31.440> how<01:38:31.520> is<01:38:31.679> it<01:38:31.840> different<01:38:32.000> from<01:38:32.320> the<01:38:32.480> war" + }, + { + "start": 5912.629, + "duration": 0.0, + "text": "like how is it different from the war" + }, + { + "start": 5912.639, + "duration": 0.0, + "text": "like how is it different from the war for<01:38:32.800> code<01:38:33.280> that's<01:38:33.520> very<01:38:33.840> like<01:38:34.320> into<01:38:35.280> I<01:38:35.440> I<01:38:35.840> wrote" + }, + { + "start": 5915.99, + "duration": 0.0, + "text": "for code that's very like into I I wrote" + }, + { + "start": 5916.0, + "duration": 0.0, + "text": "for code that's very like into I I wrote a<01:38:36.159> debugger<01:38:36.560> myself<01:38:36.880> I<01:38:37.040> generate<01:38:37.360> debug<01:38:37.679> info" + }, + { + "start": 5917.91, + "duration": 0.0, + "text": "a debugger myself I generate debug info" + }, + { + "start": 5917.92, + "duration": 0.0, + "text": "a debugger myself I generate debug info as<01:38:38.080> part<01:38:38.239> of<01:38:38.320> the<01:38:38.480> J<01:38:38.719> compilers<01:38:39.040> that<01:38:39.280> this<01:38:39.440> is" + }, + { + "start": 5919.51, + "duration": 0.0, + "text": "as part of the J compilers that this is" + }, + { + "start": 5919.52, + "duration": 0.0, + "text": "as part of the J compilers that this is like<01:38:39.760> my<01:38:40.320> this<01:38:40.560> is<01:38:40.960> my<01:38:41.199> what<01:38:41.520> interests<01:38:41.760> me<01:38:41.920> I'm" + }, + { + "start": 5922.07, + "duration": 0.0, + "text": "like my this is my what interests me I'm" + }, + { + "start": 5922.08, + "duration": 0.0, + "text": "like my this is my what interests me I'm sorry<01:38:42.159> if<01:38:42.320> it's<01:38:42.480> not<01:38:42.560> for<01:38:42.719> everyone<01:38:43.040> but<01:38:43.360> like" + }, + { + "start": 5923.75, + "duration": 0.0, + "text": "sorry if it's not for everyone but like" + }, + { + "start": 5923.76, + "duration": 0.0, + "text": "sorry if it's not for everyone but like how<01:38:44.000> did<01:38:44.159> you<01:38:44.960> uh<01:38:46.000> what<01:38:46.239> what<01:38:46.560> went<01:38:46.719> into" + }, + { + "start": 5926.95, + "duration": 0.0, + "text": "how did you uh what what went into" + }, + { + "start": 5926.96, + "duration": 0.0, + "text": "how did you uh what what went into designing<01:38:47.360> the<01:38:47.440> right<01:38:47.679> debugging<01:38:48.080> for<01:38:48.239> format" + }, + { + "start": 5928.47, + "duration": 0.0, + "text": "designing the right debugging for format" + }, + { + "start": 5928.48, + "duration": 0.0, + "text": "designing the right debugging for format and<01:38:48.719> why<01:38:48.800> is<01:38:48.960> it<01:38:49.119> better<01:38:49.440> than<01:38:49.679> PDB<01:38:50.159> like<01:38:50.400> why" + }, + { + "start": 5930.55, + "duration": 0.0, + "text": "and why is it better than PDB like why" + }, + { + "start": 5930.56, + "duration": 0.0, + "text": "and why is it better than PDB like why why<01:38:50.639> is<01:38:50.800> it<01:38:50.960> worth<01:38:51.119> transforming" + }, + { + "start": 5931.99, + "duration": 0.0, + "text": "why is it worth transforming" + }, + { + "start": 5932.0, + "duration": 0.0, + "text": "why is it worth transforming >> yeah<01:38:52.239> so<01:38:52.800> um<01:38:53.600> the<01:38:53.840> the<01:38:54.239> reason<01:38:54.400> why<01:38:55.440> uh<01:38:55.840> So<01:38:56.239> the" + }, + { + "start": 5936.55, + "duration": 0.0, + "text": ">> yeah so um the the reason why uh So the" + }, + { + "start": 5936.56, + "duration": 0.0, + "text": ">> yeah so um the the reason why uh So the reason<01:38:56.719> why<01:38:56.960> that<01:38:57.199> whole<01:38:57.440> that<01:38:57.760> whole<01:38:58.000> thing" + }, + { + "start": 5938.229, + "duration": 0.0, + "text": "reason why that whole that whole thing" + }, + { + "start": 5938.239, + "duration": 0.0, + "text": "reason why that whole that whole thing started<01:38:59.040> when<01:38:59.280> I<01:38:59.440> originally<01:38:59.840> joined<01:39:00.159> the" + }, + { + "start": 5940.39, + "duration": 0.0, + "text": "started when I originally joined the" + }, + { + "start": 5940.4, + "duration": 0.0, + "text": "started when I originally joined the project<01:39:01.040> we<01:39:01.360> the<01:39:01.679> team<01:39:02.080> was<01:39:02.400> working<01:39:02.719> on<01:39:03.840> uh" + }, + { + "start": 5943.99, + "duration": 0.0, + "text": "project we the team was working on uh" + }, + { + "start": 5944.0, + "duration": 0.0, + "text": "project we the team was working on uh debug<01:39:04.320> info<01:39:04.719> parsing.<01:39:05.119> Now<01:39:05.360> if<01:39:05.520> you<01:39:05.600> want<01:39:05.760> to" + }, + { + "start": 5946.07, + "duration": 0.0, + "text": "debug info parsing. Now if you want to" + }, + { + "start": 5946.08, + "duration": 0.0, + "text": "debug info parsing. Now if you want to support<01:39:06.480> a<01:39:06.719> debugger<01:39:07.199> that's<01:39:07.520> like<01:39:07.679> a<01:39:07.920> un<01:39:08.400> it's" + }, + { + "start": 5948.629, + "duration": 0.0, + "text": "support a debugger that's like a un it's" + }, + { + "start": 5948.639, + "duration": 0.0, + "text": "support a debugger that's like a un it's like<01:39:08.800> a<01:39:08.960> uniform<01:39:09.360> debugger<01:39:10.000> that<01:39:10.320> works<01:39:10.560> on" + }, + { + "start": 5950.95, + "duration": 0.0, + "text": "like a uniform debugger that works on" + }, + { + "start": 5950.96, + "duration": 0.0, + "text": "like a uniform debugger that works on both<01:39:11.199> Windows<01:39:11.520> and<01:39:11.679> Linux<01:39:12.000> like<01:39:12.159> the<01:39:12.320> original" + }, + { + "start": 5952.709, + "duration": 0.0, + "text": "both Windows and Linux like the original" + }, + { + "start": 5952.719, + "duration": 0.0, + "text": "both Windows and Linux like the original ambition<01:39:13.119> of<01:39:13.199> the<01:39:13.360> project<01:39:13.600> was<01:39:13.840> Linux<01:39:14.719> uh<01:39:14.880> was" + }, + { + "start": 5955.03, + "duration": 0.0, + "text": "ambition of the project was Linux uh was" + }, + { + "start": 5955.04, + "duration": 0.0, + "text": "ambition of the project was Linux uh was a<01:39:15.119> Linux<01:39:15.440> debugger<01:39:15.840> good<01:39:16.000> Linux<01:39:16.239> debugger." + }, + { + "start": 5956.709, + "duration": 0.0, + "text": "a Linux debugger good Linux debugger." + }, + { + "start": 5956.719, + "duration": 0.0, + "text": "a Linux debugger good Linux debugger. So,<01:39:17.119> so<01:39:17.600> we<01:39:17.840> know<01:39:18.000> we<01:39:18.320> wanted<01:39:18.560> to<01:39:18.719> abstract" + }, + { + "start": 5959.35, + "duration": 0.0, + "text": "So, so we know we wanted to abstract" + }, + { + "start": 5959.36, + "duration": 0.0, + "text": "So, so we know we wanted to abstract over<01:39:19.760> those<01:39:20.000> two<01:39:20.239> possibilities<01:39:20.960> and<01:39:21.600> you" + }, + { + "start": 5961.75, + "duration": 0.0, + "text": "over those two possibilities and you" + }, + { + "start": 5961.76, + "duration": 0.0, + "text": "over those two possibilities and you know<01:39:22.000> you<01:39:22.239> kind<01:39:22.400> of<01:39:22.480> should<01:39:22.800> because<01:39:22.960> there's" + }, + { + "start": 5963.99, + "duration": 0.0, + "text": "know you kind of should because there's" + }, + { + "start": 5964.0, + "duration": 0.0, + "text": "know you kind of should because there's it's<01:39:24.239> just<01:39:24.400> two<01:39:24.639> different<01:39:24.960> ways<01:39:25.199> of<01:39:25.360> exposing" + }, + { + "start": 5965.75, + "duration": 0.0, + "text": "it's just two different ways of exposing" + }, + { + "start": 5965.76, + "duration": 0.0, + "text": "it's just two different ways of exposing the<01:39:25.920> same<01:39:26.080> information<01:39:26.400> from<01:39:26.639> the<01:39:26.800> underlying" + }, + { + "start": 5967.35, + "duration": 0.0, + "text": "the same information from the underlying" + }, + { + "start": 5967.36, + "duration": 0.0, + "text": "the same information from the underlying system<01:39:27.600> in<01:39:27.840> a<01:39:27.920> sense.<01:39:28.159> So<01:39:28.239> it's<01:39:28.400> like<01:39:28.480> you" + }, + { + "start": 5968.709, + "duration": 0.0, + "text": "system in a sense. So it's like you" + }, + { + "start": 5968.719, + "duration": 0.0, + "text": "system in a sense. So it's like you should<01:39:28.800> be<01:39:28.960> able<01:39:29.040> to.<01:39:29.360> So<01:39:29.679> so<01:39:29.920> we<01:39:30.159> started<01:39:30.800> and" + }, + { + "start": 5971.109, + "duration": 0.0, + "text": "should be able to. So so we started and" + }, + { + "start": 5971.119, + "duration": 0.0, + "text": "should be able to. So so we started and of<01:39:31.199> course<01:39:31.360> on<01:39:31.520> Windows<01:39:31.840> and<01:39:32.000> Linux<01:39:32.239> they<01:39:32.400> use" + }, + { + "start": 5972.55, + "duration": 0.0, + "text": "of course on Windows and Linux they use" + }, + { + "start": 5972.56, + "duration": 0.0, + "text": "of course on Windows and Linux they use two<01:39:32.719> different<01:39:32.880> tool<01:39:33.199> chains.<01:39:33.760> They<01:39:33.840> use<01:39:34.080> two" + }, + { + "start": 5974.229, + "duration": 0.0, + "text": "two different tool chains. They use two" + }, + { + "start": 5974.239, + "duration": 0.0, + "text": "two different tool chains. They use two different<01:39:34.400> debug<01:39:34.800> info<01:39:35.040> formats.<01:39:35.679> On<01:39:35.840> Linux" + }, + { + "start": 5976.07, + "duration": 0.0, + "text": "different debug info formats. On Linux" + }, + { + "start": 5976.08, + "duration": 0.0, + "text": "different debug info formats. On Linux you<01:39:36.239> have<01:39:36.320> dwarf.<01:39:36.719> Windows<01:39:36.960> you<01:39:37.119> have<01:39:37.199> PTB.<01:39:37.920> We" + }, + { + "start": 5978.07, + "duration": 0.0, + "text": "you have dwarf. Windows you have PTB. We" + }, + { + "start": 5978.08, + "duration": 0.0, + "text": "you have dwarf. Windows you have PTB. We were<01:39:38.159> building<01:39:38.400> an<01:39:38.560> abstract<01:39:39.280> uh<01:39:39.440> parsing" + }, + { + "start": 5979.83, + "duration": 0.0, + "text": "were building an abstract uh parsing" + }, + { + "start": 5979.84, + "duration": 0.0, + "text": "were building an abstract uh parsing library<01:39:40.239> for<01:39:40.480> it.<01:39:41.040> You<01:39:41.199> can<01:39:41.360> still<01:39:41.520> find<01:39:41.679> this" + }, + { + "start": 5981.83, + "duration": 0.0, + "text": "library for it. You can still find this" + }, + { + "start": 5981.84, + "duration": 0.0, + "text": "library for it. You can still find this code<01:39:42.080> online,<01:39:42.480> but<01:39:42.800> it's<01:39:43.199> uh<01:39:44.159> uh<01:39:44.400> it's<01:39:45.040> it" + }, + { + "start": 5985.43, + "duration": 0.0, + "text": "code online, but it's uh uh it's it" + }, + { + "start": 5985.44, + "duration": 0.0, + "text": "code online, but it's uh uh it's it basically<01:39:45.840> presents<01:39:46.239> an<01:39:46.480> interface<01:39:46.960> and<01:39:47.199> it" + }, + { + "start": 5987.27, + "duration": 0.0, + "text": "basically presents an interface and it" + }, + { + "start": 5987.28, + "duration": 0.0, + "text": "basically presents an interface and it go<01:39:47.440> it<01:39:47.600> does<01:39:47.760> that<01:39:47.920> abstraction<01:39:48.320> thing<01:39:48.560> I" + }, + { + "start": 5988.79, + "duration": 0.0, + "text": "go it does that abstraction thing I" + }, + { + "start": 5988.8, + "duration": 0.0, + "text": "go it does that abstraction thing I talked<01:39:48.960> about<01:39:49.119> where<01:39:49.360> it's<01:39:49.520> like<01:39:49.679> you<01:39:49.840> have" + }, + { + "start": 5989.99, + "duration": 0.0, + "text": "talked about where it's like you have" + }, + { + "start": 5990.0, + "duration": 0.0, + "text": "talked about where it's like you have one<01:39:50.239> interface<01:39:50.800> and<01:39:51.040> it<01:39:51.360> applies<01:39:51.679> to<01:39:51.840> two" + }, + { + "start": 5992.07, + "duration": 0.0, + "text": "one interface and it applies to two" + }, + { + "start": 5992.08, + "duration": 0.0, + "text": "one interface and it applies to two concrete<01:39:52.480> realities.<01:39:53.040> So<01:39:53.199> you've<01:39:53.520> got<01:39:53.679> a<01:39:53.920> PTB" + }, + { + "start": 5994.39, + "duration": 0.0, + "text": "concrete realities. So you've got a PTB" + }, + { + "start": 5994.4, + "duration": 0.0, + "text": "concrete realities. So you've got a PTB parser<01:39:54.719> as<01:39:54.880> one<01:39:55.040> backend<01:39:55.360> and<01:39:55.520> you've<01:39:55.679> got<01:39:55.760> a" + }, + { + "start": 5995.91, + "duration": 0.0, + "text": "parser as one backend and you've got a" + }, + { + "start": 5995.92, + "duration": 0.0, + "text": "parser as one backend and you've got a dwarf<01:39:56.320> parser<01:39:56.719> as<01:39:56.960> the<01:39:57.119> other<01:39:57.280> backend" + }, + { + "start": 5997.99, + "duration": 0.0, + "text": "dwarf parser as the other backend" + }, + { + "start": 5998.0, + "duration": 0.0, + "text": "dwarf parser as the other backend presented<01:39:58.480> through<01:39:58.639> the<01:39:58.800> same<01:39:58.960> interface." + }, + { + "start": 5999.91, + "duration": 0.0, + "text": "presented through the same interface." + }, + { + "start": 5999.92, + "duration": 0.0, + "text": "presented through the same interface. The<01:40:00.080> problem<01:40:00.320> is<01:40:00.480> is<01:40:00.639> that<01:40:00.880> when<01:40:01.040> you're" + }, + { + "start": 6001.189, + "duration": 0.0, + "text": "The problem is is that when you're" + }, + { + "start": 6001.199, + "duration": 0.0, + "text": "The problem is is that when you're actually<01:40:01.440> like<01:40:01.760> wanting<01:40:02.000> to<01:40:02.239> use<01:40:02.480> debug<01:40:02.880> info," + }, + { + "start": 6003.35, + "duration": 0.0, + "text": "actually like wanting to use debug info," + }, + { + "start": 6003.36, + "duration": 0.0, + "text": "actually like wanting to use debug info, there's<01:40:03.600> a<01:40:03.760> lot<01:40:03.840> of<01:40:03.920> incremental<01:40:04.560> things<01:40:04.800> you" + }, + { + "start": 6004.95, + "duration": 0.0, + "text": "there's a lot of incremental things you" + }, + { + "start": 6004.96, + "duration": 0.0, + "text": "there's a lot of incremental things you want<01:40:05.040> to<01:40:05.119> do.<01:40:05.360> You<01:40:05.520> want<01:40:05.600> to<01:40:05.679> be<01:40:05.760> able<01:40:05.920> to<01:40:06.000> say" + }, + { + "start": 6006.149, + "duration": 0.0, + "text": "want to do. You want to be able to say" + }, + { + "start": 6006.159, + "duration": 0.0, + "text": "want to do. You want to be able to say like,<01:40:06.800> well,<01:40:06.960> I<01:40:07.199> don't<01:40:07.280> want<01:40:07.360> to<01:40:07.520> parse<01:40:07.840> like" + }, + { + "start": 6008.149, + "duration": 0.0, + "text": "like, well, I don't want to parse like" + }, + { + "start": 6008.159, + "duration": 0.0, + "text": "like, well, I don't want to parse like all<01:40:08.400> the<01:40:08.639> types<01:40:09.280> if<01:40:09.520> I'm<01:40:09.679> just<01:40:09.920> trying<01:40:10.080> to<01:40:10.239> take" + }, + { + "start": 6010.39, + "duration": 0.0, + "text": "all the types if I'm just trying to take" + }, + { + "start": 6010.4, + "duration": 0.0, + "text": "all the types if I'm just trying to take an<01:40:10.639> address<01:40:10.880> and<01:40:11.119> turn<01:40:11.280> it<01:40:11.440> into<01:40:11.600> a<01:40:11.760> symbol." + }, + { + "start": 6012.07, + "duration": 0.0, + "text": "an address and turn it into a symbol." + }, + { + "start": 6012.08, + "duration": 0.0, + "text": "an address and turn it into a symbol. Like,<01:40:12.239> there's<01:40:12.400> so<01:40:12.560> much<01:40:12.719> information<01:40:13.040> in" + }, + { + "start": 6013.189, + "duration": 0.0, + "text": "Like, there's so much information in" + }, + { + "start": 6013.199, + "duration": 0.0, + "text": "Like, there's so much information in there<01:40:13.280> that<01:40:13.600> really<01:40:13.760> what<01:40:13.920> you<01:40:14.080> want<01:40:14.239> is<01:40:14.400> like" + }, + { + "start": 6014.55, + "duration": 0.0, + "text": "there that really what you want is like" + }, + { + "start": 6014.56, + "duration": 0.0, + "text": "there that really what you want is like incremental<01:40:15.119> parsing<01:40:15.440> or<01:40:15.600> incremental" + }, + { + "start": 6016.07, + "duration": 0.0, + "text": "incremental parsing or incremental" + }, + { + "start": 6016.08, + "duration": 0.0, + "text": "incremental parsing or incremental lookups.<01:40:17.040> Um,<01:40:18.159> it's<01:40:18.480> kind<01:40:18.560> of<01:40:18.639> rare<01:40:18.880> that<01:40:19.119> you" + }, + { + "start": 6019.27, + "duration": 0.0, + "text": "lookups. Um, it's kind of rare that you" + }, + { + "start": 6019.28, + "duration": 0.0, + "text": "lookups. Um, it's kind of rare that you want<01:40:19.440> just<01:40:19.679> to<01:40:19.840> parse<01:40:20.239> literally<01:40:20.639> everything" + }, + { + "start": 6021.51, + "duration": 0.0, + "text": "want just to parse literally everything" + }, + { + "start": 6021.52, + "duration": 0.0, + "text": "want just to parse literally everything um<01:40:21.679> right<01:40:21.920> away.<01:40:22.719> And<01:40:23.040> so<01:40:24.239> long<01:40:24.480> story<01:40:24.800> short," + }, + { + "start": 6025.43, + "duration": 0.0, + "text": "um right away. And so long story short," + }, + { + "start": 6025.44, + "duration": 0.0, + "text": "um right away. And so long story short, because<01:40:25.760> Dwarf<01:40:26.080> and<01:40:26.239> PDB<01:40:26.639> are<01:40:26.880> different<01:40:27.040> in" + }, + { + "start": 6027.189, + "duration": 0.0, + "text": "because Dwarf and PDB are different in" + }, + { + "start": 6027.199, + "duration": 0.0, + "text": "because Dwarf and PDB are different in how<01:40:27.360> they<01:40:27.520> arrange<01:40:27.840> that<01:40:28.080> data,<01:40:28.480> it<01:40:28.639> gets<01:40:28.800> like" + }, + { + "start": 6029.03, + "duration": 0.0, + "text": "how they arrange that data, it gets like" + }, + { + "start": 6029.04, + "duration": 0.0, + "text": "how they arrange that data, it gets like very<01:40:29.360> complicated<01:40:29.760> very<01:40:30.080> quickly<01:40:30.320> to<01:40:30.560> build" + }, + { + "start": 6030.87, + "duration": 0.0, + "text": "very complicated very quickly to build" + }, + { + "start": 6030.88, + "duration": 0.0, + "text": "very complicated very quickly to build an<01:40:31.199> abstract<01:40:31.679> API<01:40:32.400> that<01:40:32.719> presents<01:40:33.040> these" + }, + { + "start": 6033.27, + "duration": 0.0, + "text": "an abstract API that presents these" + }, + { + "start": 6033.28, + "duration": 0.0, + "text": "an abstract API that presents these incremental<01:40:33.760> paths<01:40:34.159> that<01:40:34.480> don't<01:40:34.639> have<01:40:34.880> really" + }, + { + "start": 6035.109, + "duration": 0.0, + "text": "incremental paths that don't have really" + }, + { + "start": 6035.119, + "duration": 0.0, + "text": "incremental paths that don't have really weird<01:40:35.679> details<01:40:36.159> like<01:40:36.719> oh<01:40:37.040> in<01:40:37.280> PDB<01:40:37.920> it's<01:40:38.159> really" + }, + { + "start": 6038.31, + "duration": 0.0, + "text": "weird details like oh in PDB it's really" + }, + { + "start": 6038.32, + "duration": 0.0, + "text": "weird details like oh in PDB it's really fast<01:40:38.560> to<01:40:38.719> do<01:40:38.880> this<01:40:39.119> particular<01:40:39.520> thing.<01:40:40.000> In" + }, + { + "start": 6040.229, + "duration": 0.0, + "text": "fast to do this particular thing. In" + }, + { + "start": 6040.239, + "duration": 0.0, + "text": "fast to do this particular thing. In dwarf<01:40:40.639> you<01:40:40.800> need<01:40:40.880> to<01:40:40.960> do<01:40:41.040> a<01:40:41.280> parse<01:40:41.600> all<01:40:41.840> of<01:40:42.000> that" + }, + { + "start": 6042.229, + "duration": 0.0, + "text": "dwarf you need to do a parse all of that" + }, + { + "start": 6042.239, + "duration": 0.0, + "text": "dwarf you need to do a parse all of that particular<01:40:42.639> section<01:40:42.960> before<01:40:43.199> you<01:40:43.360> can<01:40:43.440> do" + }, + { + "start": 6043.51, + "duration": 0.0, + "text": "particular section before you can do" + }, + { + "start": 6043.52, + "duration": 0.0, + "text": "particular section before you can do this.<01:40:43.760> And<01:40:43.840> so<01:40:44.000> it's<01:40:44.159> like<01:40:44.560> it's<01:40:44.800> just<01:40:44.960> like<01:40:45.119> a" + }, + { + "start": 6045.35, + "duration": 0.0, + "text": "this. And so it's like it's just like a" + }, + { + "start": 6045.36, + "duration": 0.0, + "text": "this. And so it's like it's just like a nightmare<01:40:45.840> when<01:40:46.080> you're<01:40:46.239> actually<01:40:46.400> writing" + }, + { + "start": 6046.709, + "duration": 0.0, + "text": "nightmare when you're actually writing" + }, + { + "start": 6046.719, + "duration": 0.0, + "text": "nightmare when you're actually writing stuff<01:40:46.880> on<01:40:47.119> top<01:40:47.440> because<01:40:47.679> it's<01:40:47.920> like<01:40:48.080> every<01:40:48.239> API" + }, + { + "start": 6048.709, + "duration": 0.0, + "text": "stuff on top because it's like every API" + }, + { + "start": 6048.719, + "duration": 0.0, + "text": "stuff on top because it's like every API now<01:40:48.960> has<01:40:49.119> two<01:40:49.360> potential<01:40:49.760> guarantees.<01:40:50.400> It's" + }, + { + "start": 6050.629, + "duration": 0.0, + "text": "now has two potential guarantees. It's" + }, + { + "start": 6050.639, + "duration": 0.0, + "text": "now has two potential guarantees. It's like<01:40:50.960> okay<01:40:51.199> when<01:40:51.360> I<01:40:51.520> parse<01:40:52.159> when<01:40:52.400> I<01:40:52.560> want<01:40:52.639> to<01:40:52.719> do" + }, + { + "start": 6052.87, + "duration": 0.0, + "text": "like okay when I parse when I want to do" + }, + { + "start": 6052.88, + "duration": 0.0, + "text": "like okay when I parse when I want to do this<01:40:53.119> particular<01:40:53.520> incremental<01:40:54.000> parse<01:40:54.400> it" + }, + { + "start": 6054.55, + "duration": 0.0, + "text": "this particular incremental parse it" + }, + { + "start": 6054.56, + "duration": 0.0, + "text": "this particular incremental parse it might<01:40:54.719> be<01:40:54.800> fast<01:40:55.040> it<01:40:55.199> might<01:40:55.360> be<01:40:55.440> slow<01:40:55.920> depending" + }, + { + "start": 6056.229, + "duration": 0.0, + "text": "might be fast it might be slow depending" + }, + { + "start": 6056.239, + "duration": 0.0, + "text": "might be fast it might be slow depending on<01:40:56.400> what<01:40:56.560> I'm<01:40:56.719> actually<01:40:56.960> using<01:40:57.199> and<01:40:57.360> so<01:40:57.520> I<01:40:57.760> have" + }, + { + "start": 6057.91, + "duration": 0.0, + "text": "on what I'm actually using and so I have" + }, + { + "start": 6057.92, + "duration": 0.0, + "text": "on what I'm actually using and so I have no<01:40:58.159> I<01:40:58.320> have<01:40:58.400> very<01:40:58.639> limited<01:40:59.040> information<01:40:59.440> about" + }, + { + "start": 6059.669, + "duration": 0.0, + "text": "no I have very limited information about" + }, + { + "start": 6059.679, + "duration": 0.0, + "text": "no I have very limited information about what's<01:41:00.000> actually<01:41:00.239> going<01:41:00.320> to<01:41:00.480> happen<01:41:01.119> and<01:41:01.280> so" + }, + { + "start": 6061.43, + "duration": 0.0, + "text": "what's actually going to happen and so" + }, + { + "start": 6061.44, + "duration": 0.0, + "text": "what's actually going to happen and so what's<01:41:01.760> much<01:41:02.000> better<01:41:03.040> is<01:41:03.280> to<01:41:03.440> just<01:41:03.920> have" + }, + { + "start": 6064.79, + "duration": 0.0, + "text": "what's much better is to just have" + }, + { + "start": 6064.8, + "duration": 0.0, + "text": "what's much better is to just have basically<01:41:05.199> you<01:41:05.360> do<01:41:05.520> the<01:41:05.679> parse<01:41:06.000> all<01:41:06.480> in<01:41:06.719> as" + }, + { + "start": 6066.95, + "duration": 0.0, + "text": "basically you do the parse all in as" + }, + { + "start": 6066.96, + "duration": 0.0, + "text": "basically you do the parse all in as fast<01:41:07.119> a<01:41:07.360> way<01:41:07.440> as<01:41:07.679> possible<01:41:08.400> and<01:41:08.719> then<01:41:09.360> um<01:41:09.840> and" + }, + { + "start": 6069.99, + "duration": 0.0, + "text": "fast a way as possible and then um and" + }, + { + "start": 6070.0, + "duration": 0.0, + "text": "fast a way as possible and then um and then<01:41:10.239> just<01:41:10.400> use<01:41:10.639> the<01:41:10.800> the<01:41:11.119> full<01:41:11.360> parsed" + }, + { + "start": 6071.83, + "duration": 0.0, + "text": "then just use the the full parsed" + }, + { + "start": 6071.84, + "duration": 0.0, + "text": "then just use the the full parsed structure.<01:41:12.880> Um<01:41:14.239> but<01:41:14.719> uh<01:41:14.880> at<01:41:15.119> that<01:41:15.440> point<01:41:15.840> like" + }, + { + "start": 6076.07, + "duration": 0.0, + "text": "structure. Um but uh at that point like" + }, + { + "start": 6076.08, + "duration": 0.0, + "text": "structure. Um but uh at that point like it<01:41:16.320> really<01:41:16.480> just<01:41:16.719> made<01:41:16.880> sense<01:41:17.119> to<01:41:17.280> go<01:41:17.440> the<01:41:17.679> full" + }, + { + "start": 6077.83, + "duration": 0.0, + "text": "it really just made sense to go the full" + }, + { + "start": 6077.84, + "duration": 0.0, + "text": "it really just made sense to go the full way<01:41:18.000> to<01:41:18.159> the<01:41:18.239> format.<01:41:18.639> Like<01:41:18.800> at<01:41:18.960> that<01:41:19.040> point" + }, + { + "start": 6079.189, + "duration": 0.0, + "text": "way to the format. Like at that point" + }, + { + "start": 6079.199, + "duration": 0.0, + "text": "way to the format. Like at that point you<01:41:19.360> you've<01:41:19.679> already<01:41:19.840> doing<01:41:20.000> this<01:41:20.159> parcel," + }, + { + "start": 6080.709, + "duration": 0.0, + "text": "you you've already doing this parcel," + }, + { + "start": 6080.719, + "duration": 0.0, + "text": "you you've already doing this parcel, you<01:41:20.800> have<01:41:20.960> internal<01:41:21.280> structures<01:41:21.679> for<01:41:21.920> it." + }, + { + "start": 6082.709, + "duration": 0.0, + "text": "you have internal structures for it." + }, + { + "start": 6082.719, + "duration": 0.0, + "text": "you have internal structures for it. What<01:41:22.960> would<01:41:23.119> be<01:41:23.280> even<01:41:23.440> better<01:41:23.679> if<01:41:24.239> is<01:41:24.400> if<01:41:24.639> like" + }, + { + "start": 6084.87, + "duration": 0.0, + "text": "What would be even better if is if like" + }, + { + "start": 6084.88, + "duration": 0.0, + "text": "What would be even better if is if like you<01:41:25.119> could<01:41:25.199> actually<01:41:25.440> just<01:41:25.840> um<01:41:26.320> you<01:41:26.480> know" + }, + { + "start": 6087.51, + "duration": 0.0, + "text": "you could actually just um you know" + }, + { + "start": 6087.52, + "duration": 0.0, + "text": "you could actually just um you know serialize<01:41:28.000> this<01:41:28.239> to<01:41:28.400> disk,<01:41:28.800> have<01:41:28.960> it<01:41:29.119> be<01:41:29.199> a" + }, + { + "start": 6089.43, + "duration": 0.0, + "text": "serialize this to disk, have it be a" + }, + { + "start": 6089.44, + "duration": 0.0, + "text": "serialize this to disk, have it be a much<01:41:29.600> simpler<01:41:29.840> debug<01:41:30.239> info<01:41:30.480> format<01:41:30.960> that<01:41:31.119> you" + }, + { + "start": 6091.27, + "duration": 0.0, + "text": "much simpler debug info format that you" + }, + { + "start": 6091.28, + "duration": 0.0, + "text": "much simpler debug info format that you can<01:41:31.360> use<01:41:31.600> everywhere<01:41:32.159> because<01:41:32.400> it's<01:41:32.560> not<01:41:32.639> just" + }, + { + "start": 6092.79, + "duration": 0.0, + "text": "can use everywhere because it's not just" + }, + { + "start": 6092.8, + "duration": 0.0, + "text": "can use everywhere because it's not just the<01:41:32.960> debugger<01:41:33.280> that<01:41:33.360> has<01:41:33.440> to<01:41:33.520> use<01:41:33.679> debug<01:41:34.000> info." + }, + { + "start": 6094.31, + "duration": 0.0, + "text": "the debugger that has to use debug info." + }, + { + "start": 6094.32, + "duration": 0.0, + "text": "the debugger that has to use debug info. There's<01:41:34.560> tons<01:41:34.800> of<01:41:35.119> tons<01:41:35.440> of<01:41:35.600> tools<01:41:35.840> that<01:41:36.000> need" + }, + { + "start": 6096.149, + "duration": 0.0, + "text": "There's tons of tons of tools that need" + }, + { + "start": 6096.159, + "duration": 0.0, + "text": "There's tons of tons of tools that need to<01:41:36.239> use<01:41:36.400> debug<01:41:36.719> info.<01:41:37.280> And<01:41:37.440> so<01:41:37.679> we<01:41:37.920> were<01:41:38.080> like" + }, + { + "start": 6098.629, + "duration": 0.0, + "text": "to use debug info. And so we were like" + }, + { + "start": 6098.639, + "duration": 0.0, + "text": "to use debug info. And so we were like we<01:41:38.800> we<01:41:39.119> just<01:41:39.360> don't<01:41:39.520> want<01:41:39.600> to<01:41:39.679> work<01:41:39.840> on<01:41:40.000> PDB" + }, + { + "start": 6100.39, + "duration": 0.0, + "text": "we we just don't want to work on PDB" + }, + { + "start": 6100.4, + "duration": 0.0, + "text": "we we just don't want to work on PDB dwarf<01:41:40.800> actually.<01:41:41.119> Like<01:41:41.280> it's<01:41:41.520> actually" + }, + { + "start": 6101.669, + "duration": 0.0, + "text": "dwarf actually. Like it's actually" + }, + { + "start": 6101.679, + "duration": 0.0, + "text": "dwarf actually. Like it's actually terrible.<01:41:42.159> So,<01:41:42.960> um,<01:41:43.440> so<01:41:43.679> we<01:41:44.000> just<01:41:44.159> built<01:41:44.480> this" + }, + { + "start": 6104.709, + "duration": 0.0, + "text": "terrible. So, um, so we just built this" + }, + { + "start": 6104.719, + "duration": 0.0, + "text": "terrible. So, um, so we just built this one<01:41:45.440> and,<01:41:46.159> uh,<01:41:46.480> in<01:41:46.719> terms<01:41:46.880> of<01:41:47.040> like<01:41:47.199> how<01:41:47.520> you" + }, + { + "start": 6107.75, + "duration": 0.0, + "text": "one and, uh, in terms of like how you" + }, + { + "start": 6107.76, + "duration": 0.0, + "text": "one and, uh, in terms of like how you design<01:41:48.080> it,<01:41:48.960> like<01:41:49.199> I<01:41:49.520> could<01:41:49.679> give<01:41:49.760> my<01:41:50.000> thoughts" + }, + { + "start": 6110.149, + "duration": 0.0, + "text": "design it, like I could give my thoughts" + }, + { + "start": 6110.159, + "duration": 0.0, + "text": "design it, like I could give my thoughts on<01:41:50.320> that,<01:41:50.560> but<01:41:50.880> the<01:41:51.119> person<01:41:51.360> responsible<01:41:51.840> for" + }, + { + "start": 6111.99, + "duration": 0.0, + "text": "on that, but the person responsible for" + }, + { + "start": 6112.0, + "duration": 0.0, + "text": "on that, but the person responsible for the<01:41:52.239> original<01:41:52.880> design<01:41:53.199> of<01:41:53.440> the<01:41:53.600> format<01:41:53.920> is" + }, + { + "start": 6114.07, + "duration": 0.0, + "text": "the original design of the format is" + }, + { + "start": 6114.08, + "duration": 0.0, + "text": "the original design of the format is Alan<01:41:54.400> Webster,<01:41:54.880> who<01:41:55.040> made<01:41:55.199> Forkoder.<01:41:56.320> So,<01:41:56.560> he" + }, + { + "start": 6117.35, + "duration": 0.0, + "text": "Alan Webster, who made Forkoder. So, he" + }, + { + "start": 6117.36, + "duration": 0.0, + "text": "Alan Webster, who made Forkoder. So, he uh,<01:41:58.159> he<01:41:58.400> has<01:41:58.560> since<01:41:58.880> he's<01:41:59.119> not<01:41:59.199> on<01:41:59.360> the<01:41:59.520> project" + }, + { + "start": 6119.83, + "duration": 0.0, + "text": "uh, he has since he's not on the project" + }, + { + "start": 6119.84, + "duration": 0.0, + "text": "uh, he has since he's not on the project anymore,<01:42:00.239> but<01:42:00.480> that<01:42:00.719> was<01:42:00.880> like<01:42:01.040> his<01:42:01.280> last<01:42:01.440> big" + }, + { + "start": 6121.75, + "duration": 0.0, + "text": "anymore, but that was like his last big" + }, + { + "start": 6121.76, + "duration": 0.0, + "text": "anymore, but that was like his last big contribution<01:42:02.239> to<01:42:02.400> it.<01:42:02.880> He<01:42:03.040> did<01:42:03.280> an<01:42:03.520> excellent" + }, + { + "start": 6123.83, + "duration": 0.0, + "text": "contribution to it. He did an excellent" + }, + { + "start": 6123.84, + "duration": 0.0, + "text": "contribution to it. He did an excellent job<01:42:04.080> on<01:42:04.239> it.<01:42:04.719> And<01:42:04.880> it's<01:42:05.360> um,<01:42:06.400> I<01:42:06.639> mean,<01:42:06.800> it's" + }, + { + "start": 6127.109, + "duration": 0.0, + "text": "job on it. And it's um, I mean, it's" + }, + { + "start": 6127.119, + "duration": 0.0, + "text": "job on it. And it's um, I mean, it's kind<01:42:07.280> of<01:42:07.360> like<01:42:08.000> it's<01:42:08.239> kind<01:42:08.320> of<01:42:08.400> like<01:42:08.560> how<01:42:08.719> you" + }, + { + "start": 6128.87, + "duration": 0.0, + "text": "kind of like it's kind of like how you" + }, + { + "start": 6128.88, + "duration": 0.0, + "text": "kind of like it's kind of like how you do<01:42:09.040> anything.<01:42:09.440> It's<01:42:09.840> um<01:42:10.880> it's<01:42:11.199> sort<01:42:11.360> of<01:42:11.440> like" + }, + { + "start": 6131.59, + "duration": 0.0, + "text": "do anything. It's um it's sort of like" + }, + { + "start": 6131.6, + "duration": 0.0, + "text": "do anything. It's um it's sort of like what<01:42:11.760> Casey<01:42:12.159> was<01:42:12.320> talking<01:42:12.560> about<01:42:13.360> like<01:42:13.679> get" + }, + { + "start": 6133.83, + "duration": 0.0, + "text": "what Casey was talking about like get" + }, + { + "start": 6133.84, + "duration": 0.0, + "text": "what Casey was talking about like get rid<01:42:14.000> of<01:42:14.080> the<01:42:14.239> idea<01:42:14.400> that<01:42:14.560> you<01:42:14.719> don't<01:42:14.880> need" + }, + { + "start": 6134.95, + "duration": 0.0, + "text": "rid of the idea that you don't need" + }, + { + "start": 6134.96, + "duration": 0.0, + "text": "rid of the idea that you don't need someone<01:42:15.360> omnisient<01:42:15.840> about<01:42:16.080> things.<01:42:16.400> It's" + }, + { + "start": 6136.55, + "duration": 0.0, + "text": "someone omnisient about things. It's" + }, + { + "start": 6136.56, + "duration": 0.0, + "text": "someone omnisient about things. It's like<01:42:16.719> no<01:42:16.880> just<01:42:17.040> like<01:42:17.280> store<01:42:17.600> the<01:42:17.760> data<01:42:18.000> with" + }, + { + "start": 6138.149, + "duration": 0.0, + "text": "like no just like store the data with" + }, + { + "start": 6138.159, + "duration": 0.0, + "text": "like no just like store the data with all<01:42:18.239> the<01:42:18.400> context<01:42:18.800> that<01:42:19.040> you<01:42:19.199> have.<01:42:19.760> And<01:42:19.920> so" + }, + { + "start": 6140.31, + "duration": 0.0, + "text": "all the context that you have. And so" + }, + { + "start": 6140.32, + "duration": 0.0, + "text": "all the context that you have. And so the<01:42:20.880> rad<01:42:21.119> debug<01:42:21.440> info<01:42:21.679> format<01:42:22.000> is<01:42:22.159> like<01:42:22.320> very" + }, + { + "start": 6142.47, + "duration": 0.0, + "text": "the rad debug info format is like very" + }, + { + "start": 6142.48, + "duration": 0.0, + "text": "the rad debug info format is like very simple.<01:42:22.719> It's<01:42:22.960> like<01:42:23.280> look,<01:42:23.520> we've<01:42:23.679> got<01:42:23.760> these" + }, + { + "start": 6143.99, + "duration": 0.0, + "text": "simple. It's like look, we've got these" + }, + { + "start": 6144.0, + "duration": 0.0, + "text": "simple. It's like look, we've got these flat<01:42:24.239> data<01:42:24.480> tables<01:42:24.800> and<01:42:25.040> they<01:42:25.199> point<01:42:25.520> they" + }, + { + "start": 6145.75, + "duration": 0.0, + "text": "flat data tables and they point they" + }, + { + "start": 6145.76, + "duration": 0.0, + "text": "flat data tables and they point they index<01:42:26.080> into<01:42:26.320> each<01:42:26.560> other<01:42:27.119> and<01:42:27.360> it's<01:42:27.600> just<01:42:27.760> like" + }, + { + "start": 6148.07, + "duration": 0.0, + "text": "index into each other and it's just like" + }, + { + "start": 6148.08, + "duration": 0.0, + "text": "index into each other and it's just like that<01:42:28.320> the<01:42:28.560> information<01:42:28.960> you<01:42:29.199> want<01:42:29.440> laid<01:42:29.760> out" + }, + { + "start": 6149.83, + "duration": 0.0, + "text": "that the information you want laid out" + }, + { + "start": 6149.84, + "duration": 0.0, + "text": "that the information you want laid out in<01:42:30.080> a<01:42:30.239> really<01:42:30.400> simple<01:42:30.639> way<01:42:31.360> and<01:42:31.600> it's<01:42:31.920> just<01:42:32.159> and" + }, + { + "start": 6152.39, + "duration": 0.0, + "text": "in a really simple way and it's just and" + }, + { + "start": 6152.4, + "duration": 0.0, + "text": "in a really simple way and it's just and that<01:42:32.560> makes<01:42:32.719> it<01:42:32.880> very<01:42:33.040> simple<01:42:33.280> to<01:42:33.440> do<01:42:33.600> things" + }, + { + "start": 6153.75, + "duration": 0.0, + "text": "that makes it very simple to do things" + }, + { + "start": 6153.76, + "duration": 0.0, + "text": "that makes it very simple to do things like<01:42:34.000> incremental<01:42:34.480> lookups<01:42:34.880> and<01:42:35.119> like<01:42:35.280> to<01:42:35.520> use" + }, + { + "start": 6155.669, + "duration": 0.0, + "text": "like incremental lookups and like to use" + }, + { + "start": 6155.679, + "duration": 0.0, + "text": "like incremental lookups and like to use it<01:42:35.840> much<01:42:36.080> more<01:42:36.480> quickly<01:42:37.440> um<01:42:37.600> with<01:42:37.840> all<01:42:38.000> the" + }, + { + "start": 6158.149, + "duration": 0.0, + "text": "it much more quickly um with all the" + }, + { + "start": 6158.159, + "duration": 0.0, + "text": "it much more quickly um with all the guarantees<01:42:38.639> you<01:42:38.880> want<01:42:39.119> like<01:42:39.280> from<01:42:39.440> the" + }, + { + "start": 6159.59, + "duration": 0.0, + "text": "guarantees you want like from the" + }, + { + "start": 6159.6, + "duration": 0.0, + "text": "guarantees you want like from the debugger's<01:42:40.080> point<01:42:40.159> of<01:42:40.320> view<01:42:40.480> for<01:42:40.639> example.<01:42:41.040> So" + }, + { + "start": 6161.51, + "duration": 0.0, + "text": "debugger's point of view for example. So" + }, + { + "start": 6161.52, + "duration": 0.0, + "text": "debugger's point of view for example. So instead<01:42:41.840> of<01:42:42.000> having<01:42:42.159> to<01:42:42.480> poke<01:42:42.719> into<01:42:42.960> two" + }, + { + "start": 6163.189, + "duration": 0.0, + "text": "instead of having to poke into two" + }, + { + "start": 6163.199, + "duration": 0.0, + "text": "instead of having to poke into two different<01:42:43.360> backends<01:42:43.840> basically.<01:42:44.239> So<01:42:44.960> um<01:42:45.199> I" + }, + { + "start": 6165.35, + "duration": 0.0, + "text": "different backends basically. So um I" + }, + { + "start": 6165.36, + "duration": 0.0, + "text": "different backends basically. So um I may<01:42:45.520> have<01:42:45.679> missed<01:42:45.920> part<01:42:46.080> of<01:42:46.159> the<01:42:46.320> question<01:42:46.400> in" + }, + { + "start": 6166.629, + "duration": 0.0, + "text": "may have missed part of the question in" + }, + { + "start": 6166.639, + "duration": 0.0, + "text": "may have missed part of the question in that<01:42:46.719> but<01:42:46.960> hopefully<01:42:47.199> that<01:42:47.679> yeah" + }, + { + "start": 6168.31, + "duration": 0.0, + "text": "that but hopefully that yeah" + }, + { + "start": 6168.32, + "duration": 0.0, + "text": "that but hopefully that yeah >> I'll<01:42:48.560> do<01:42:48.639> the<01:42:48.800> follow-up<01:42:49.199> later<01:42:49.520> because<01:42:50.000> it" + }, + { + "start": 6170.07, + "duration": 0.0, + "text": ">> I'll do the follow-up later because it" + }, + { + "start": 6170.08, + "duration": 0.0, + "text": ">> I'll do the follow-up later because it might<01:42:50.320> be<01:42:50.400> very<01:42:50.719> specific.<01:42:51.440> Um<01:42:52.880> the<01:42:53.119> rad" + }, + { + "start": 6173.43, + "duration": 0.0, + "text": "might be very specific. Um the rad" + }, + { + "start": 6173.44, + "duration": 0.0, + "text": "might be very specific. Um the rad bugger<01:42:53.760> is<01:42:53.920> written<01:42:54.320> is<01:42:54.480> it<01:42:54.800> written<01:42:54.960> in<01:42:55.199> C<01:42:55.440> or" + }, + { + "start": 6175.75, + "duration": 0.0, + "text": "bugger is written is it written in C or" + }, + { + "start": 6175.76, + "duration": 0.0, + "text": "bugger is written is it written in C or C++<01:42:56.560> or<01:42:56.960> like" + }, + { + "start": 6177.35, + "duration": 0.0, + "text": "C++ or like" + }, + { + "start": 6177.36, + "duration": 0.0, + "text": "C++ or like >> oh<01:42:57.600> it's<01:42:57.760> just<01:42:57.920> C.<01:42:58.239> Yeah." + }, + { + "start": 6178.47, + "duration": 0.0, + "text": ">> oh it's just C. Yeah." + }, + { + "start": 6178.48, + "duration": 0.0, + "text": ">> oh it's just C. Yeah. >> Okay.<01:42:58.639> So<01:42:58.800> bare<01:42:59.119> C.<01:42:59.520> Why<01:42:59.760> bare<01:43:00.080> C<01:43:00.239> and<01:43:00.480> not<01:43:00.639> like" + }, + { + "start": 6180.87, + "duration": 0.0, + "text": ">> Okay. So bare C. Why bare C and not like" + }, + { + "start": 6180.88, + "duration": 0.0, + "text": ">> Okay. So bare C. Why bare C and not like like<01:43:01.360> often<01:43:01.840> like<01:43:02.320> I<01:43:02.719> many<01:43:03.040> people<01:43:03.280> actually" + }, + { + "start": 6183.51, + "duration": 0.0, + "text": "like often like I many people actually" + }, + { + "start": 6183.52, + "duration": 0.0, + "text": "like often like I many people actually in<01:43:03.679> the<01:43:03.840> talks<01:43:04.159> right<01:43:04.400> now<01:43:04.639> picked<01:43:04.960> bare<01:43:05.360> C.<01:43:06.000> Um" + }, + { + "start": 6186.79, + "duration": 0.0, + "text": "in the talks right now picked bare C. Um" + }, + { + "start": 6186.8, + "duration": 0.0, + "text": "in the talks right now picked bare C. Um >> I<01:43:07.119> thought<01:43:07.280> the<01:43:07.520> common<01:43:07.840> way<01:43:08.080> was<01:43:08.320> like<01:43:08.560> to<01:43:08.800> use" + }, + { + "start": 6189.03, + "duration": 0.0, + "text": ">> I thought the common way was like to use" + }, + { + "start": 6189.04, + "duration": 0.0, + "text": ">> I thought the common way was like to use C++<01:43:09.760> but<01:43:10.239> almost<01:43:10.719> nothing<01:43:11.040> of<01:43:11.199> C++<01:43:11.840> even<01:43:12.000> as" + }, + { + "start": 6192.149, + "duration": 0.0, + "text": "C++ but almost nothing of C++ even as" + }, + { + "start": 6192.159, + "duration": 0.0, + "text": "C++ but almost nothing of C++ even as Casey<01:43:12.560> usually<01:43:12.800> does<01:43:12.960> it.<01:43:13.199> Y<01:43:13.440> like<01:43:13.600> what" + }, + { + "start": 6193.83, + "duration": 0.0, + "text": "Casey usually does it. Y like what" + }, + { + "start": 6193.84, + "duration": 0.0, + "text": "Casey usually does it. Y like what prompted<01:43:14.239> you<01:43:14.400> to<01:43:14.560> do<01:43:14.800> nahh<01:43:15.440> just<01:43:15.679> pure<01:43:16.080> C.<01:43:16.320> So" + }, + { + "start": 6196.87, + "duration": 0.0, + "text": "prompted you to do nahh just pure C. So" + }, + { + "start": 6196.88, + "duration": 0.0, + "text": "prompted you to do nahh just pure C. So I<01:43:17.119> think<01:43:17.280> like<01:43:18.000> I<01:43:18.239> so<01:43:18.400> I<01:43:18.560> don't<01:43:18.719> tend<01:43:18.880> to<01:43:18.960> do" + }, + { + "start": 6199.109, + "duration": 0.0, + "text": "I think like I so I don't tend to do" + }, + { + "start": 6199.119, + "duration": 0.0, + "text": "I think like I so I don't tend to do very<01:43:19.360> math<01:43:19.600> heavy<01:43:19.920> code.<01:43:20.320> So<01:43:20.480> I<01:43:21.280> um" + }, + { + "start": 6201.43, + "duration": 0.0, + "text": "very math heavy code. So I um" + }, + { + "start": 6201.44, + "duration": 0.0, + "text": "very math heavy code. So I um unsurprisingly<01:43:22.080> I<01:43:22.239> mean<01:43:22.400> there's<01:43:22.560> not<01:43:22.639> a<01:43:22.719> lot" + }, + { + "start": 6202.87, + "duration": 0.0, + "text": "unsurprisingly I mean there's not a lot" + }, + { + "start": 6202.88, + "duration": 0.0, + "text": "unsurprisingly I mean there's not a lot of<01:43:22.960> like<01:43:23.199> linear<01:43:23.520> algebra<01:43:23.840> in<01:43:24.000> a<01:43:24.159> debugger" + }, + { + "start": 6204.629, + "duration": 0.0, + "text": "of like linear algebra in a debugger" + }, + { + "start": 6204.639, + "duration": 0.0, + "text": "of like linear algebra in a debugger basically.<01:43:25.040> So<01:43:25.199> it's<01:43:25.440> like<01:43:25.760> I<01:43:26.000> benefit<01:43:26.400> less" + }, + { + "start": 6206.629, + "duration": 0.0, + "text": "basically. So it's like I benefit less" + }, + { + "start": 6206.639, + "duration": 0.0, + "text": "basically. So it's like I benefit less from<01:43:26.800> a<01:43:27.040> lot<01:43:27.119> of<01:43:27.199> things<01:43:27.360> that<01:43:27.600> people<01:43:27.760> who" + }, + { + "start": 6207.99, + "duration": 0.0, + "text": "from a lot of things that people who" + }, + { + "start": 6208.0, + "duration": 0.0, + "text": "from a lot of things that people who need<01:43:28.480> C++<01:43:29.280> do<01:43:29.760> which<01:43:30.000> it<01:43:30.159> would<01:43:30.320> be<01:43:30.480> something" + }, + { + "start": 6210.629, + "duration": 0.0, + "text": "need C++ do which it would be something" + }, + { + "start": 6210.639, + "duration": 0.0, + "text": "need C++ do which it would be something like<01:43:30.880> operator<01:43:31.280> overloading<01:43:31.920> like<01:43:32.080> that" + }, + { + "start": 6212.31, + "duration": 0.0, + "text": "like operator overloading like that" + }, + { + "start": 6212.32, + "duration": 0.0, + "text": "like operator overloading like that becomes<01:43:32.639> pretty<01:43:32.800> important<01:43:33.040> if<01:43:33.199> you're" + }, + { + "start": 6213.27, + "duration": 0.0, + "text": "becomes pretty important if you're" + }, + { + "start": 6213.28, + "duration": 0.0, + "text": "becomes pretty important if you're writing<01:43:33.520> lots<01:43:33.760> and<01:43:33.920> lots<01:43:34.159> of<01:43:34.320> math<01:43:35.040> code.<01:43:35.840> Um" + }, + { + "start": 6216.629, + "duration": 0.0, + "text": "writing lots and lots of math code. Um" + }, + { + "start": 6216.639, + "duration": 0.0, + "text": "writing lots and lots of math code. Um for<01:43:36.880> me<01:43:37.360> it's<01:43:37.679> like<01:43:38.000> I'm<01:43:38.320> not<01:43:38.480> writing<01:43:38.719> that" + }, + { + "start": 6218.95, + "duration": 0.0, + "text": "for me it's like I'm not writing that" + }, + { + "start": 6218.96, + "duration": 0.0, + "text": "for me it's like I'm not writing that much<01:43:39.119> code.<01:43:39.679> Um<01:43:39.920> I<01:43:40.080> could<01:43:40.239> build<01:43:40.480> kind<01:43:40.639> of<01:43:40.719> the" + }, + { + "start": 6220.87, + "duration": 0.0, + "text": "much code. Um I could build kind of the" + }, + { + "start": 6220.88, + "duration": 0.0, + "text": "much code. Um I could build kind of the abstractions<01:43:41.440> I<01:43:41.679> wanted<01:43:42.080> inside<01:43:42.480> of<01:43:42.639> C.<01:43:43.360> um<01:43:43.600> I" + }, + { + "start": 6223.75, + "duration": 0.0, + "text": "abstractions I wanted inside of C. um I" + }, + { + "start": 6223.76, + "duration": 0.0, + "text": "abstractions I wanted inside of C. um I could<01:43:43.920> build<01:43:44.080> the<01:43:44.239> tools<01:43:44.480> I<01:43:44.639> needed<01:43:45.360> and<01:43:45.920> one" + }, + { + "start": 6226.07, + "duration": 0.0, + "text": "could build the tools I needed and one" + }, + { + "start": 6226.08, + "duration": 0.0, + "text": "could build the tools I needed and one of<01:43:46.159> the<01:43:46.400> most<01:43:46.560> important<01:43:46.960> things<01:43:47.520> was<01:43:47.760> that<01:43:48.080> C" + }, + { + "start": 6228.31, + "duration": 0.0, + "text": "of the most important things was that C" + }, + { + "start": 6228.32, + "duration": 0.0, + "text": "of the most important things was that C compiles<01:43:48.880> like<01:43:49.040> 40%<01:43:49.520> faster.<01:43:50.000> Like<01:43:50.159> if<01:43:50.400> you" + }, + { + "start": 6230.47, + "duration": 0.0, + "text": "compiles like 40% faster. Like if you" + }, + { + "start": 6230.48, + "duration": 0.0, + "text": "compiles like 40% faster. Like if you just<01:43:50.639> have<01:43:51.119> because<01:43:51.280> the<01:43:51.600> and<01:43:52.239> to<01:43:52.560> explain<01:43:52.800> how" + }, + { + "start": 6232.95, + "duration": 0.0, + "text": "just have because the and to explain how" + }, + { + "start": 6232.96, + "duration": 0.0, + "text": "just have because the and to explain how I<01:43:53.119> know<01:43:53.280> that<01:43:54.000> the<01:43:54.239> codebase<01:43:54.719> used<01:43:54.880> to<01:43:55.040> be<01:43:55.119> C++" + }, + { + "start": 6235.83, + "duration": 0.0, + "text": "I know that the codebase used to be C++" + }, + { + "start": 6235.84, + "duration": 0.0, + "text": "I know that the codebase used to be C++ it<01:43:56.080> was<01:43:56.320> Casey<01:43:56.639> style<01:43:56.960> C++<01:43:57.440> where<01:43:57.600> it's<01:43:57.840> like" + }, + { + "start": 6238.229, + "duration": 0.0, + "text": "it was Casey style C++ where it's like" + }, + { + "start": 6238.239, + "duration": 0.0, + "text": "it was Casey style C++ where it's like you've<01:43:58.560> got<01:43:58.719> C++<01:43:59.280> it's<01:43:59.520> mostly<01:43:59.840> C<01:44:00.080> but<01:44:00.320> then" + }, + { + "start": 6240.47, + "duration": 0.0, + "text": "you've got C++ it's mostly C but then" + }, + { + "start": 6240.48, + "duration": 0.0, + "text": "you've got C++ it's mostly C but then there's<01:44:00.639> a<01:44:00.800> couple<01:44:01.040> of<01:44:01.280> things<01:44:01.440> that<01:44:01.679> you<01:44:01.840> use" + }, + { + "start": 6241.99, + "duration": 0.0, + "text": "there's a couple of things that you use" + }, + { + "start": 6242.0, + "duration": 0.0, + "text": "there's a couple of things that you use in<01:44:02.239> there<01:44:03.360> and<01:44:04.080> uh<01:44:04.800> at<01:44:05.040> some<01:44:05.280> point<01:44:05.679> like<01:44:06.480> um" + }, + { + "start": 6247.59, + "duration": 0.0, + "text": "in there and uh at some point like um" + }, + { + "start": 6247.6, + "duration": 0.0, + "text": "in there and uh at some point like um when<01:44:07.840> I<01:44:08.000> had<01:44:08.239> like<01:44:08.400> more<01:44:08.639> control<01:44:08.880> over<01:44:09.040> the" + }, + { + "start": 6249.27, + "duration": 0.0, + "text": "when I had like more control over the" + }, + { + "start": 6249.28, + "duration": 0.0, + "text": "when I had like more control over the project<01:44:09.679> I<01:44:09.840> was<01:44:10.000> like<01:44:11.040> build<01:44:11.280> times<01:44:11.600> are" + }, + { + "start": 6251.75, + "duration": 0.0, + "text": "project I was like build times are" + }, + { + "start": 6251.76, + "duration": 0.0, + "text": "project I was like build times are important<01:44:11.920> to<01:44:12.080> me<01:44:12.639> for<01:44:13.040> the<01:44:13.199> reasons<01:44:13.520> I<01:44:13.760> open" + }, + { + "start": 6253.91, + "duration": 0.0, + "text": "important to me for the reasons I open" + }, + { + "start": 6253.92, + "duration": 0.0, + "text": "important to me for the reasons I open the<01:44:14.080> talk<01:44:14.239> with.<01:44:14.560> And<01:44:14.639> so<01:44:14.800> I'm<01:44:14.960> like<01:44:15.280> I'm<01:44:15.440> just" + }, + { + "start": 6255.59, + "duration": 0.0, + "text": "the talk with. And so I'm like I'm just" + }, + { + "start": 6255.6, + "duration": 0.0, + "text": "the talk with. And so I'm like I'm just going<01:44:15.760> to<01:44:15.840> like<01:44:16.560> turn<01:44:16.800> this<01:44:16.960> to<01:44:17.119> C<01:44:17.360> because<01:44:17.520> I'm" + }, + { + "start": 6257.669, + "duration": 0.0, + "text": "going to like turn this to C because I'm" + }, + { + "start": 6257.679, + "duration": 0.0, + "text": "going to like turn this to C because I'm pretty<01:44:17.760> sure<01:44:17.920> that'll<01:44:18.239> compile<01:44:18.560> faster.<01:44:19.040> And" + }, + { + "start": 6259.109, + "duration": 0.0, + "text": "pretty sure that'll compile faster. And" + }, + { + "start": 6259.119, + "duration": 0.0, + "text": "pretty sure that'll compile faster. And it<01:44:19.280> did.<01:44:19.520> It's<01:44:19.760> about<01:44:19.840> 40%<01:44:20.320> faster<01:44:20.639> at<01:44:20.719> least" + }, + { + "start": 6261.03, + "duration": 0.0, + "text": "it did. It's about 40% faster at least" + }, + { + "start": 6261.04, + "duration": 0.0, + "text": "it did. It's about 40% faster at least on<01:44:21.440> you<01:44:21.520> know<01:44:21.679> my<01:44:22.000> machines<01:44:22.800> uh<01:44:22.880> with<01:44:23.040> with<01:44:23.600> you" + }, + { + "start": 6263.669, + "duration": 0.0, + "text": "on you know my machines uh with with you" + }, + { + "start": 6263.679, + "duration": 0.0, + "text": "on you know my machines uh with with you know<01:44:23.920> whatever<01:44:24.320> version<01:44:24.560> of<01:44:24.719> MSVC<01:44:25.360> I'm<01:44:25.600> using" + }, + { + "start": 6266.39, + "duration": 0.0, + "text": "know whatever version of MSVC I'm using" + }, + { + "start": 6266.4, + "duration": 0.0, + "text": "know whatever version of MSVC I'm using with<01:44:26.639> clang<01:44:26.960> it's<01:44:27.199> similar<01:44:27.520> and<01:44:27.679> then<01:44:28.560> um<01:44:29.040> and" + }, + { + "start": 6269.27, + "duration": 0.0, + "text": "with clang it's similar and then um and" + }, + { + "start": 6269.28, + "duration": 0.0, + "text": "with clang it's similar and then um and there's<01:44:29.440> a<01:44:29.679> couple<01:44:29.760> of<01:44:29.920> things<01:44:30.080> in<01:44:30.320> C<01:44:30.560> that<01:44:30.800> are" + }, + { + "start": 6270.95, + "duration": 0.0, + "text": "there's a couple of things in C that are" + }, + { + "start": 6270.96, + "duration": 0.0, + "text": "there's a couple of things in C that are actually<01:44:31.199> better<01:44:31.600> like<01:44:32.320> um<01:44:32.560> Vaslav<01:44:33.360> yesterday" + }, + { + "start": 6273.669, + "duration": 0.0, + "text": "actually better like um Vaslav yesterday" + }, + { + "start": 6273.679, + "duration": 0.0, + "text": "actually better like um Vaslav yesterday mentioned<01:44:34.239> designated<01:44:34.800> initializers<01:44:35.840> C++" + }, + { + "start": 6276.47, + "duration": 0.0, + "text": "mentioned designated initializers C++" + }, + { + "start": 6276.48, + "duration": 0.0, + "text": "mentioned designated initializers C++ does<01:44:36.639> have<01:44:36.800> them<01:44:37.040> but<01:44:37.199> they're<01:44:37.679> pretty<01:44:38.159> bad" + }, + { + "start": 6278.629, + "duration": 0.0, + "text": "does have them but they're pretty bad" + }, + { + "start": 6278.639, + "duration": 0.0, + "text": "does have them but they're pretty bad like<01:44:38.800> they're<01:44:39.040> not<01:44:39.840> um<01:44:40.480> I<01:44:40.800> maybe<01:44:41.040> they're" + }, + { + "start": 6281.189, + "duration": 0.0, + "text": "like they're not um I maybe they're" + }, + { + "start": 6281.199, + "duration": 0.0, + "text": "like they're not um I maybe they're fixing<01:44:41.440> this<01:44:42.000> some<01:44:42.560> somebody<01:44:43.040> can<01:44:43.119> tell<01:44:43.280> me" + }, + { + "start": 6283.43, + "duration": 0.0, + "text": "fixing this some somebody can tell me" + }, + { + "start": 6283.44, + "duration": 0.0, + "text": "fixing this some somebody can tell me but<01:44:43.679> but<01:44:44.080> maybe<01:44:44.239> they're<01:44:44.480> fixing<01:44:44.639> this<01:44:44.800> but" + }, + { + "start": 6284.95, + "duration": 0.0, + "text": "but but maybe they're fixing this but" + }, + { + "start": 6284.96, + "duration": 0.0, + "text": "but but maybe they're fixing this but they<01:44:45.119> they<01:44:45.280> have<01:44:45.360> a<01:44:45.520> very<01:44:45.679> specific<01:44:46.000> like" + }, + { + "start": 6286.31, + "duration": 0.0, + "text": "they they have a very specific like" + }, + { + "start": 6286.32, + "duration": 0.0, + "text": "they they have a very specific like ordering<01:44:46.800> requirement<01:44:47.280> on<01:44:47.600> like<01:44:47.840> the<01:44:48.080> the<01:44:48.560> way" + }, + { + "start": 6289.03, + "duration": 0.0, + "text": "ordering requirement on like the the way" + }, + { + "start": 6289.04, + "duration": 0.0, + "text": "ordering requirement on like the the way you<01:44:49.280> specify<01:44:49.679> the<01:44:49.840> the<01:44:50.239> initializers<01:44:50.880> because" + }, + { + "start": 6291.109, + "duration": 0.0, + "text": "you specify the the initializers because" + }, + { + "start": 6291.119, + "duration": 0.0, + "text": "you specify the the initializers because of<01:44:51.280> like<01:44:51.440> constructor<01:44:52.239> uh<01:44:52.400> execution" + }, + { + "start": 6292.79, + "duration": 0.0, + "text": "of like constructor uh execution" + }, + { + "start": 6292.8, + "duration": 0.0, + "text": "of like constructor uh execution ordering<01:44:53.119> or<01:44:53.360> whatever<01:44:53.840> even<01:44:54.000> if<01:44:54.159> it's<01:44:54.400> even" + }, + { + "start": 6294.55, + "duration": 0.0, + "text": "ordering or whatever even if it's even" + }, + { + "start": 6294.56, + "duration": 0.0, + "text": "ordering or whatever even if it's even if<01:44:54.639> there<01:44:54.800> are<01:44:54.960> no<01:44:55.119> constructors<01:44:55.520> which<01:44:55.679> I<01:44:55.760> I" + }, + { + "start": 6295.99, + "duration": 0.0, + "text": "if there are no constructors which I I" + }, + { + "start": 6296.0, + "duration": 0.0, + "text": "if there are no constructors which I I don't<01:44:56.080> understand<01:44:56.320> that<01:44:56.560> part<01:44:56.719> maybe<01:44:56.880> that's" + }, + { + "start": 6297.03, + "duration": 0.0, + "text": "don't understand that part maybe that's" + }, + { + "start": 6297.04, + "duration": 0.0, + "text": "don't understand that part maybe that's what<01:44:57.119> they're<01:44:57.280> fixing<01:44:57.600> but<01:44:57.760> point<01:44:58.000> being<01:44:59.360> um" + }, + { + "start": 6300.55, + "duration": 0.0, + "text": "what they're fixing but point being um" + }, + { + "start": 6300.56, + "duration": 0.0, + "text": "what they're fixing but point being um point<01:45:00.880> being<01:45:01.360> uh<01:45:01.520> in<01:45:01.760> C<01:45:02.000> you<01:45:02.239> just<01:45:02.320> have<01:45:02.480> what" + }, + { + "start": 6302.629, + "duration": 0.0, + "text": "point being uh in C you just have what" + }, + { + "start": 6302.639, + "duration": 0.0, + "text": "point being uh in C you just have what you<01:45:02.880> actually<01:45:03.040> want<01:45:03.280> which<01:45:03.440> is<01:45:03.520> to<01:45:03.679> say<01:45:03.840> like" + }, + { + "start": 6304.07, + "duration": 0.0, + "text": "you actually want which is to say like" + }, + { + "start": 6304.08, + "duration": 0.0, + "text": "you actually want which is to say like this<01:45:04.239> member<01:45:04.560> this<01:45:04.719> member<01:45:04.960> this<01:45:05.119> member<01:45:05.360> in" + }, + { + "start": 6305.59, + "duration": 0.0, + "text": "this member this member this member in" + }, + { + "start": 6305.6, + "duration": 0.0, + "text": "this member this member this member in any<01:45:05.760> order<01:45:06.159> I<01:45:06.320> don't<01:45:06.400> care<01:45:06.800> like<01:45:07.040> just<01:45:07.280> let<01:45:07.440> me" + }, + { + "start": 6307.59, + "duration": 0.0, + "text": "any order I don't care like just let me" + }, + { + "start": 6307.6, + "duration": 0.0, + "text": "any order I don't care like just let me fill<01:45:07.840> them<01:45:08.000> out<01:45:08.639> um<01:45:08.880> so<01:45:09.199> there's<01:45:09.360> a<01:45:09.520> couple<01:45:09.679> of" + }, + { + "start": 6309.75, + "duration": 0.0, + "text": "fill them out um so there's a couple of" + }, + { + "start": 6309.76, + "duration": 0.0, + "text": "fill them out um so there's a couple of features<01:45:10.000> like<01:45:10.159> that<01:45:10.239> that<01:45:10.480> I<01:45:10.639> like<01:45:10.880> a<01:45:11.119> little" + }, + { + "start": 6311.27, + "duration": 0.0, + "text": "features like that that I like a little" + }, + { + "start": 6311.28, + "duration": 0.0, + "text": "features like that that I like a little bit<01:45:11.360> more<01:45:12.400> it's<01:45:12.719> mostly<01:45:13.040> just<01:45:13.360> like<01:45:13.679> compile" + }, + { + "start": 6314.149, + "duration": 0.0, + "text": "bit more it's mostly just like compile" + }, + { + "start": 6314.159, + "duration": 0.0, + "text": "bit more it's mostly just like compile time<01:45:14.719> also<01:45:15.199> I<01:45:15.440> just<01:45:15.679> like<01:45:16.159> aesthetically<01:45:16.880> I" + }, + { + "start": 6317.189, + "duration": 0.0, + "text": "time also I just like aesthetically I" + }, + { + "start": 6317.199, + "duration": 0.0, + "text": "time also I just like aesthetically I suppose<01:45:17.520> prefer<01:45:17.840> the<01:45:18.000> idea<01:45:18.239> of<01:45:18.480> relying<01:45:18.880> on<01:45:19.040> a" + }, + { + "start": 6319.189, + "duration": 0.0, + "text": "suppose prefer the idea of relying on a" + }, + { + "start": 6319.199, + "duration": 0.0, + "text": "suppose prefer the idea of relying on a smaller<01:45:19.440> tool<01:45:19.760> chain<01:45:20.239> to<01:45:20.400> build<01:45:20.639> everything" + }, + { + "start": 6321.109, + "duration": 0.0, + "text": "smaller tool chain to build everything" + }, + { + "start": 6321.119, + "duration": 0.0, + "text": "smaller tool chain to build everything because<01:45:21.280> then<01:45:21.440> it's<01:45:21.600> like<01:45:21.760> someday<01:45:22.159> you<01:45:22.320> know" + }, + { + "start": 6322.47, + "duration": 0.0, + "text": "because then it's like someday you know" + }, + { + "start": 6322.48, + "duration": 0.0, + "text": "because then it's like someday you know like<01:45:22.880> if<01:45:23.119> there<01:45:23.280> is<01:45:23.360> a<01:45:23.520> C<01:45:23.760> compiler<01:45:24.320> that<01:45:24.560> comes" + }, + { + "start": 6324.79, + "duration": 0.0, + "text": "like if there is a C compiler that comes" + }, + { + "start": 6324.8, + "duration": 0.0, + "text": "like if there is a C compiler that comes out<01:45:25.119> it's<01:45:25.280> like<01:45:25.440> the<01:45:25.600> debugger<01:45:26.080> can<01:45:26.239> be<01:45:26.400> built" + }, + { + "start": 6326.629, + "duration": 0.0, + "text": "out it's like the debugger can be built" + }, + { + "start": 6326.639, + "duration": 0.0, + "text": "out it's like the debugger can be built with<01:45:26.800> it<01:45:27.119> whereas<01:45:27.440> if<01:45:27.600> I<01:45:27.760> need<01:45:28.080> some<01:45:28.400> subset<01:45:28.719> of" + }, + { + "start": 6328.79, + "duration": 0.0, + "text": "with it whereas if I need some subset of" + }, + { + "start": 6328.8, + "duration": 0.0, + "text": "with it whereas if I need some subset of a<01:45:28.880> C++<01:45:29.360> compiler<01:45:29.760> that<01:45:30.000> happens<01:45:30.239> to<01:45:30.400> be<01:45:30.480> a" + }, + { + "start": 6330.629, + "duration": 0.0, + "text": "a C++ compiler that happens to be a" + }, + { + "start": 6330.639, + "duration": 0.0, + "text": "a C++ compiler that happens to be a different<01:45:30.800> subset<01:45:31.360> than<01:45:31.600> what<01:45:31.840> everyone<01:45:32.159> else" + }, + { + "start": 6332.39, + "duration": 0.0, + "text": "different subset than what everyone else" + }, + { + "start": 6332.4, + "duration": 0.0, + "text": "different subset than what everyone else needs<01:45:33.040> it's<01:45:33.280> like<01:45:33.520> no<01:45:33.760> you're<01:45:33.920> good<01:45:34.560> um<01:45:35.360> you" + }, + { + "start": 6335.51, + "duration": 0.0, + "text": "needs it's like no you're good um you" + }, + { + "start": 6335.52, + "duration": 0.0, + "text": "needs it's like no you're good um you know<01:45:35.679> then<01:45:35.840> it's<01:45:36.080> like<01:45:36.400> that<01:45:36.639> thing<01:45:36.800> is<01:45:36.960> never" + }, + { + "start": 6337.109, + "duration": 0.0, + "text": "know then it's like that thing is never" + }, + { + "start": 6337.119, + "duration": 0.0, + "text": "know then it's like that thing is never going<01:45:37.199> to<01:45:37.280> happen<01:45:37.520> like<01:45:37.679> C++<01:45:38.159> compilers<01:45:38.560> are" + }, + { + "start": 6338.87, + "duration": 0.0, + "text": "going to happen like C++ compilers are" + }, + { + "start": 6338.88, + "duration": 0.0, + "text": "going to happen like C++ compilers are it's<01:45:39.199> way<01:45:39.360> harder<01:45:39.679> problem<01:45:39.840> than<01:45:40.000> a<01:45:40.080> C" + }, + { + "start": 6340.31, + "duration": 0.0, + "text": "it's way harder problem than a C" + }, + { + "start": 6340.32, + "duration": 0.0, + "text": "it's way harder problem than a C compiler<01:45:40.719> so<01:45:40.880> it's<01:45:41.040> like<01:45:41.600> I<01:45:41.840> kind<01:45:42.000> of<01:45:42.080> just" + }, + { + "start": 6342.31, + "duration": 0.0, + "text": "compiler so it's like I kind of just" + }, + { + "start": 6342.32, + "duration": 0.0, + "text": "compiler so it's like I kind of just liked<01:45:42.560> that<01:45:42.880> option<01:45:43.280> better<01:45:43.840> um<01:45:44.000> seemed<01:45:44.320> like" + }, + { + "start": 6344.39, + "duration": 0.0, + "text": "liked that option better um seemed like" + }, + { + "start": 6344.4, + "duration": 0.0, + "text": "liked that option better um seemed like a<01:45:44.639> good<01:45:44.800> investment" + }, + { + "start": 6345.91, + "duration": 0.0, + "text": "a good investment" + }, + { + "start": 6345.92, + "duration": 0.0, + "text": "a good investment >> and<01:45:46.159> since<01:45:46.320> you<01:45:46.560> mentioned<01:45:46.880> build<01:45:47.199> speed<01:45:47.679> like" + }, + { + "start": 6347.83, + "duration": 0.0, + "text": ">> and since you mentioned build speed like" + }, + { + "start": 6347.84, + "duration": 0.0, + "text": ">> and since you mentioned build speed like ready<01:45:48.080> debugger<01:45:48.400> compiles<01:45:49.199> really<01:45:49.520> fast<01:45:50.800> even" + }, + { + "start": 6351.03, + "duration": 0.0, + "text": "ready debugger compiles really fast even" + }, + { + "start": 6351.04, + "duration": 0.0, + "text": "ready debugger compiles really fast even though<01:45:51.760> like<01:45:52.080> you<01:45:52.239> have<01:45:52.400> a<01:45:52.639> as<01:45:52.960> far<01:45:53.119> as<01:45:53.199> I<01:45:53.360> know" + }, + { + "start": 6353.51, + "duration": 0.0, + "text": "though like you have a as far as I know" + }, + { + "start": 6353.52, + "duration": 0.0, + "text": "though like you have a as far as I know you<01:45:53.679> haven't<01:45:53.840> mentioned<01:45:54.000> that<01:45:54.159> in<01:45:54.320> that<01:45:54.480> talk" + }, + { + "start": 6354.709, + "duration": 0.0, + "text": "you haven't mentioned that in that talk" + }, + { + "start": 6354.719, + "duration": 0.0, + "text": "you haven't mentioned that in that talk but<01:45:54.960> you<01:45:55.119> have<01:45:55.199> a<01:45:55.360> pre-processing<01:45:56.000> step<01:45:56.239> where" + }, + { + "start": 6356.39, + "duration": 0.0, + "text": "but you have a pre-processing step where" + }, + { + "start": 6356.4, + "duration": 0.0, + "text": "but you have a pre-processing step where you<01:45:56.560> do<01:45:56.719> code<01:45:56.960> generation<01:45:57.440> even<01:45:57.840> yes<01:45:58.159> like" + }, + { + "start": 6359.109, + "duration": 0.0, + "text": "you do code generation even yes like" + }, + { + "start": 6359.119, + "duration": 0.0, + "text": "you do code generation even yes like >> do<01:45:59.280> you<01:45:59.440> want<01:45:59.520> to<01:45:59.679> get<01:46:00.239> a<01:46:00.480> bit<01:46:00.719> into<01:46:01.040> that<01:46:01.600> like" + }, + { + "start": 6361.99, + "duration": 0.0, + "text": ">> do you want to get a bit into that like" + }, + { + "start": 6362.0, + "duration": 0.0, + "text": ">> do you want to get a bit into that like what<01:46:02.239> kind<01:46:02.400> of<01:46:02.480> you<01:46:02.719> do<01:46:02.800> some<01:46:02.960> kind<01:46:03.040> of<01:46:03.199> meta" + }, + { + "start": 6363.51, + "duration": 0.0, + "text": "what kind of you do some kind of meta" + }, + { + "start": 6363.52, + "duration": 0.0, + "text": "what kind of you do some kind of meta programming<01:46:04.080> as<01:46:04.320> I<01:46:04.480> understand<01:46:04.880> even<01:46:05.040> in<01:46:05.280> C" + }, + { + "start": 6365.83, + "duration": 0.0, + "text": "programming as I understand even in C" + }, + { + "start": 6365.84, + "duration": 0.0, + "text": "programming as I understand even in C with<01:46:06.000> your<01:46:06.239> simple<01:46:06.480> build<01:46:06.800> system<01:46:07.199> like<01:46:07.520> want" + }, + { + "start": 6367.669, + "duration": 0.0, + "text": "with your simple build system like want" + }, + { + "start": 6367.679, + "duration": 0.0, + "text": "with your simple build system like want to<01:46:07.840> elaborate<01:46:08.159> on<01:46:08.320> that<01:46:08.480> a<01:46:08.639> bit<01:46:08.800> or<01:46:08.960> have<01:46:09.119> you" + }, + { + "start": 6369.35, + "duration": 0.0, + "text": "to elaborate on that a bit or have you" + }, + { + "start": 6369.36, + "duration": 0.0, + "text": "to elaborate on that a bit or have you like<01:46:09.520> is<01:46:09.760> there<01:46:09.840> a<01:46:10.000> source<01:46:10.159> you<01:46:10.239> want<01:46:10.320> to<01:46:10.400> point" + }, + { + "start": 6370.55, + "duration": 0.0, + "text": "like is there a source you want to point" + }, + { + "start": 6370.56, + "duration": 0.0, + "text": "like is there a source you want to point to<01:46:10.719> instead" + }, + { + "start": 6371.43, + "duration": 0.0, + "text": "to instead" + }, + { + "start": 6371.44, + "duration": 0.0, + "text": "to instead >> um<01:46:11.679> I<01:46:11.840> can<01:46:12.000> cover<01:46:12.159> it<01:46:12.400> pretty<01:46:12.639> quick<01:46:12.800> I<01:46:12.960> mean" + }, + { + "start": 6373.03, + "duration": 0.0, + "text": ">> um I can cover it pretty quick I mean" + }, + { + "start": 6373.04, + "duration": 0.0, + "text": ">> um I can cover it pretty quick I mean it's<01:46:13.280> just<01:46:13.440> like<01:46:14.080> you<01:46:14.239> know<01:46:14.320> to<01:46:14.480> do<01:46:14.639> compile" + }, + { + "start": 6374.95, + "duration": 0.0, + "text": "it's just like you know to do compile" + }, + { + "start": 6374.96, + "duration": 0.0, + "text": "it's just like you know to do compile time<01:46:15.199> execution<01:46:15.679> and<01:46:15.840> see<01:46:16.639> uh<01:46:16.800> you<01:46:16.960> don't<01:46:17.040> need" + }, + { + "start": 6377.109, + "duration": 0.0, + "text": "time execution and see uh you don't need" + }, + { + "start": 6377.119, + "duration": 0.0, + "text": "time execution and see uh you don't need the<01:46:17.280> compiler<01:46:17.679> to<01:46:17.760> do<01:46:17.840> it<01:46:18.000> for<01:46:18.080> for<01:46:18.239> you.<01:46:18.400> You" + }, + { + "start": 6378.629, + "duration": 0.0, + "text": "the compiler to do it for for you. You" + }, + { + "start": 6378.639, + "duration": 0.0, + "text": "the compiler to do it for for you. You just<01:46:18.800> build<01:46:18.960> a<01:46:19.119> program,<01:46:19.440> run<01:46:19.600> the<01:46:19.760> program," + }, + { + "start": 6379.99, + "duration": 0.0, + "text": "just build a program, run the program," + }, + { + "start": 6380.0, + "duration": 0.0, + "text": "just build a program, run the program, and<01:46:20.159> then<01:46:20.239> you<01:46:20.320> build<01:46:20.480> your<01:46:20.639> main<01:46:20.880> program<01:46:21.199> and" + }, + { + "start": 6381.43, + "duration": 0.0, + "text": "and then you build your main program and" + }, + { + "start": 6381.44, + "duration": 0.0, + "text": "and then you build your main program and then<01:46:21.840> arbitrary<01:46:22.320> compile<01:46:22.719> time<01:46:23.040> execution" + }, + { + "start": 6383.51, + "duration": 0.0, + "text": "then arbitrary compile time execution" + }, + { + "start": 6383.52, + "duration": 0.0, + "text": "then arbitrary compile time execution goes<01:46:23.760> there.<01:46:24.639> And<01:46:25.040> uh<01:46:25.600> and<01:46:25.920> yeah,<01:46:26.159> so<01:46:26.400> I<01:46:26.639> mean" + }, + { + "start": 6386.95, + "duration": 0.0, + "text": "goes there. And uh and yeah, so I mean" + }, + { + "start": 6386.96, + "duration": 0.0, + "text": "goes there. And uh and yeah, so I mean building<01:46:27.280> C<01:46:27.440> is<01:46:27.600> really<01:46:27.760> fast.<01:46:28.000> So<01:46:28.159> building" + }, + { + "start": 6388.39, + "duration": 0.0, + "text": "building C is really fast. So building" + }, + { + "start": 6388.4, + "duration": 0.0, + "text": "building C is really fast. So building the<01:46:28.560> meta<01:46:28.880> program,<01:46:29.119> I<01:46:29.280> do<01:46:29.360> it<01:46:29.520> every<01:46:29.679> time<01:46:29.920> I" + }, + { + "start": 6390.149, + "duration": 0.0, + "text": "the meta program, I do it every time I" + }, + { + "start": 6390.159, + "duration": 0.0, + "text": "the meta program, I do it every time I build<01:46:30.320> the<01:46:30.400> meta<01:46:30.719> program,<01:46:30.960> I<01:46:31.119> run<01:46:31.280> it.<01:46:32.000> Um<01:46:32.719> and" + }, + { + "start": 6393.59, + "duration": 0.0, + "text": "build the meta program, I run it. Um and" + }, + { + "start": 6393.6, + "duration": 0.0, + "text": "build the meta program, I run it. Um and uh" + }, + { + "start": 6395.27, + "duration": 0.0, + "text": "uh" + }, + { + "start": 6395.28, + "duration": 0.0, + "text": "uh uh<01:46:35.520> and<01:46:35.760> so<01:46:36.000> that's<01:46:36.320> basically<01:46:36.639> how<01:46:36.880> that" + }, + { + "start": 6397.109, + "duration": 0.0, + "text": "uh and so that's basically how that" + }, + { + "start": 6397.119, + "duration": 0.0, + "text": "uh and so that's basically how that works.<01:46:37.520> Um<01:46:38.080> what<01:46:38.320> was<01:46:38.400> the<01:46:38.560> other<01:46:38.639> part<01:46:38.800> of<01:46:38.880> the" + }, + { + "start": 6399.03, + "duration": 0.0, + "text": "works. Um what was the other part of the" + }, + { + "start": 6399.04, + "duration": 0.0, + "text": "works. Um what was the other part of the question?<01:46:39.360> I<01:46:39.760> think<01:46:40.159> was<01:46:40.400> that<01:46:40.560> just<01:46:40.639> it?" + }, + { + "start": 6400.87, + "duration": 0.0, + "text": "question? I think was that just it?" + }, + { + "start": 6400.88, + "duration": 0.0, + "text": "question? I think was that just it? >> Yeah.<01:46:41.199> What<01:46:41.280> do<01:46:41.360> you<01:46:41.440> use<01:46:41.520> it<01:46:41.679> for?<01:46:41.840> Like<01:46:42.000> what" + }, + { + "start": 6402.149, + "duration": 0.0, + "text": ">> Yeah. What do you use it for? Like what" + }, + { + "start": 6402.159, + "duration": 0.0, + "text": ">> Yeah. What do you use it for? Like what what what<01:46:42.800> do<01:46:42.880> you<01:46:42.960> do<01:46:43.040> with<01:46:43.199> a<01:46:43.280> meta<01:46:43.600> program" + }, + { + "start": 6403.83, + "duration": 0.0, + "text": "what what do you do with a meta program" + }, + { + "start": 6403.84, + "duration": 0.0, + "text": "what what do you do with a meta program and<01:46:43.920> the<01:46:44.000> code<01:46:44.239> generation?<01:46:44.560> Like<01:46:44.719> what<01:46:44.800> do" + }, + { + "start": 6404.87, + "duration": 0.0, + "text": "and the code generation? Like what do" + }, + { + "start": 6404.88, + "duration": 0.0, + "text": "and the code generation? Like what do you<01:46:44.960> use<01:46:45.040> it<01:46:45.199> for?<01:46:45.440> Where<01:46:45.600> is<01:46:45.679> it<01:46:45.840> useful?" + }, + { + "start": 6406.39, + "duration": 0.0, + "text": "you use it for? Where is it useful?" + }, + { + "start": 6406.4, + "duration": 0.0, + "text": "you use it for? Where is it useful? >> Yeah.<01:46:46.639> So<01:46:47.040> I<01:46:47.280> tend<01:46:47.520> to<01:46:47.679> in<01:46:47.840> the<01:46:48.000> debugger" + }, + { + "start": 6408.629, + "duration": 0.0, + "text": ">> Yeah. So I tend to in the debugger" + }, + { + "start": 6408.639, + "duration": 0.0, + "text": ">> Yeah. So I tend to in the debugger there's<01:46:48.880> like<01:46:49.040> it's<01:46:49.360> mostly<01:46:49.600> a<01:46:49.760> data" + }, + { + "start": 6409.99, + "duration": 0.0, + "text": "there's like it's mostly a data" + }, + { + "start": 6410.0, + "duration": 0.0, + "text": "there's like it's mostly a data management<01:46:50.400> problem<01:46:50.719> like<01:46:51.679> um<01:46:51.840> there's<01:46:52.159> a<01:46:52.400> lot" + }, + { + "start": 6412.55, + "duration": 0.0, + "text": "management problem like um there's a lot" + }, + { + "start": 6412.56, + "duration": 0.0, + "text": "management problem like um there's a lot of<01:46:52.800> like<01:46:53.679> just<01:46:54.000> giant<01:46:54.560> things<01:46:54.719> that<01:46:55.040> you" + }, + { + "start": 6415.27, + "duration": 0.0, + "text": "of like just giant things that you" + }, + { + "start": 6415.28, + "duration": 0.0, + "text": "of like just giant things that you really<01:46:55.440> want<01:46:55.600> to<01:46:55.679> be<01:46:55.840> Excel<01:46:56.239> tables<01:46:56.880> that<01:46:57.119> are" + }, + { + "start": 6417.27, + "duration": 0.0, + "text": "really want to be Excel tables that are" + }, + { + "start": 6417.28, + "duration": 0.0, + "text": "really want to be Excel tables that are like<01:46:57.440> just<01:46:57.679> like<01:46:57.840> here's<01:46:58.080> the<01:46:58.239> information" + }, + { + "start": 6418.55, + "duration": 0.0, + "text": "like just like here's the information" + }, + { + "start": 6418.56, + "duration": 0.0, + "text": "like just like here's the information like<01:46:58.719> here's<01:46:58.880> all<01:46:59.040> the<01:46:59.119> UI<01:46:59.520> commands<01:46:59.840> and" + }, + { + "start": 6420.07, + "duration": 0.0, + "text": "like here's all the UI commands and" + }, + { + "start": 6420.08, + "duration": 0.0, + "text": "like here's all the UI commands and here's<01:47:00.320> like<01:47:00.880> how<01:47:01.840> here's<01:47:02.080> what<01:47:02.239> they<01:47:02.480> do<01:47:02.639> if" + }, + { + "start": 6422.87, + "duration": 0.0, + "text": "here's like how here's what they do if" + }, + { + "start": 6422.88, + "duration": 0.0, + "text": "here's like how here's what they do if like<01:47:03.040> if<01:47:03.199> you<01:47:03.280> trigger<01:47:03.520> them<01:47:03.600> with<01:47:03.760> a<01:47:03.920> hotkey" + }, + { + "start": 6424.31, + "duration": 0.0, + "text": "like if you trigger them with a hotkey" + }, + { + "start": 6424.32, + "duration": 0.0, + "text": "like if you trigger them with a hotkey and<01:47:04.560> the<01:47:04.800> command<01:47:05.040> needs<01:47:05.199> a<01:47:05.360> little<01:47:05.440> bit<01:47:05.600> more" + }, + { + "start": 6425.75, + "duration": 0.0, + "text": "and the command needs a little bit more" + }, + { + "start": 6425.76, + "duration": 0.0, + "text": "and the command needs a little bit more information<01:47:06.080> to<01:47:06.320> execute.<01:47:07.199> Here's<01:47:07.440> what<01:47:07.600> the" + }, + { + "start": 6427.83, + "duration": 0.0, + "text": "information to execute. Here's what the" + }, + { + "start": 6427.84, + "duration": 0.0, + "text": "information to execute. Here's what the query<01:47:08.159> information<01:47:08.480> looks<01:47:08.719> like<01:47:08.800> for<01:47:08.960> that." + }, + { + "start": 6429.189, + "duration": 0.0, + "text": "query information looks like for that." + }, + { + "start": 6429.199, + "duration": 0.0, + "text": "query information looks like for that. Here's<01:47:09.360> the<01:47:09.520> name,<01:47:09.760> here's<01:47:09.920> the<01:47:10.080> description," + }, + { + "start": 6430.47, + "duration": 0.0, + "text": "Here's the name, here's the description," + }, + { + "start": 6430.48, + "duration": 0.0, + "text": "Here's the name, here's the description, here's<01:47:10.719> the<01:47:10.880> icon,<01:47:11.199> like<01:47:11.440> all<01:47:11.600> that<01:47:11.760> stuff." + }, + { + "start": 6432.39, + "duration": 0.0, + "text": "here's the icon, like all that stuff." + }, + { + "start": 6432.4, + "duration": 0.0, + "text": "here's the icon, like all that stuff. there's<01:47:12.639> like<01:47:12.880> tons<01:47:13.199> of<01:47:13.360> like<01:47:13.679> tables<01:47:14.000> of<01:47:14.159> all" + }, + { + "start": 6434.31, + "duration": 0.0, + "text": "there's like tons of like tables of all" + }, + { + "start": 6434.32, + "duration": 0.0, + "text": "there's like tons of like tables of all that<01:47:14.480> information<01:47:15.040> and<01:47:15.679> oftentimes<01:47:16.320> you<01:47:16.480> want" + }, + { + "start": 6436.629, + "duration": 0.0, + "text": "that information and oftentimes you want" + }, + { + "start": 6436.639, + "duration": 0.0, + "text": "that information and oftentimes you want to<01:47:16.960> use<01:47:17.280> that<01:47:17.520> to<01:47:17.760> produce<01:47:18.080> like<01:47:19.440> a<01:47:19.760> variety<01:47:20.159> of" + }, + { + "start": 6440.47, + "duration": 0.0, + "text": "to use that to produce like a variety of" + }, + { + "start": 6440.48, + "duration": 0.0, + "text": "to use that to produce like a variety of C<01:47:20.960> constructs.<01:47:21.600> So<01:47:21.760> it's<01:47:21.920> not<01:47:22.080> just<01:47:22.159> like<01:47:22.320> I" + }, + { + "start": 6442.47, + "duration": 0.0, + "text": "C constructs. So it's not just like I" + }, + { + "start": 6442.48, + "duration": 0.0, + "text": "C constructs. So it's not just like I want<01:47:22.560> a<01:47:22.639> strruct<01:47:22.960> for<01:47:23.040> this.<01:47:23.280> It's<01:47:23.440> like<01:47:23.760> okay" + }, + { + "start": 6443.99, + "duration": 0.0, + "text": "want a strruct for this. It's like okay" + }, + { + "start": 6444.0, + "duration": 0.0, + "text": "want a strruct for this. It's like okay I<01:47:24.159> want<01:47:24.239> a<01:47:24.400> strct<01:47:24.639> and<01:47:24.800> a<01:47:25.040> table<01:47:25.199> of<01:47:25.360> the" + }, + { + "start": 6445.59, + "duration": 0.0, + "text": "I want a strct and a table of the" + }, + { + "start": 6445.6, + "duration": 0.0, + "text": "I want a strct and a table of the offsets<01:47:26.000> of<01:47:26.159> the<01:47:26.320> members<01:47:26.719> and<01:47:27.040> like<01:47:27.520> a<01:47:27.760> table" + }, + { + "start": 6447.91, + "duration": 0.0, + "text": "offsets of the members and like a table" + }, + { + "start": 6447.92, + "duration": 0.0, + "text": "offsets of the members and like a table of<01:47:28.239> all<01:47:28.400> the<01:47:28.480> types<01:47:28.800> and<01:47:29.040> like<01:47:29.520> um<01:47:30.639> you<01:47:30.800> know" + }, + { + "start": 6450.95, + "duration": 0.0, + "text": "of all the types and like um you know" + }, + { + "start": 6450.96, + "duration": 0.0, + "text": "of all the types and like um you know things<01:47:31.199> like<01:47:31.280> that.<01:47:31.600> Now,<01:47:31.760> you<01:47:31.920> can<01:47:32.000> do<01:47:32.080> that" + }, + { + "start": 6452.229, + "duration": 0.0, + "text": "things like that. Now, you can do that" + }, + { + "start": 6452.239, + "duration": 0.0, + "text": "things like that. Now, you can do that with<01:47:32.400> X<01:47:32.639> macros<01:47:33.840> um<01:47:34.159> to<01:47:34.400> some<01:47:34.639> degree,<01:47:35.119> but<01:47:35.440> I" + }, + { + "start": 6455.75, + "duration": 0.0, + "text": "with X macros um to some degree, but I" + }, + { + "start": 6455.76, + "duration": 0.0, + "text": "with X macros um to some degree, but I kind<01:47:35.920> of<01:47:36.159> don't<01:47:36.480> like<01:47:36.960> that<01:47:37.360> because<01:47:37.600> it's" + }, + { + "start": 6457.91, + "duration": 0.0, + "text": "kind of don't like that because it's" + }, + { + "start": 6457.92, + "duration": 0.0, + "text": "kind of don't like that because it's pretty<01:47:38.080> opaque<01:47:38.639> to<01:47:38.800> simple<01:47:39.199> tooling.<01:47:39.760> Like<01:47:40.239> my" + }, + { + "start": 6460.55, + "duration": 0.0, + "text": "pretty opaque to simple tooling. Like my" + }, + { + "start": 6460.56, + "duration": 0.0, + "text": "pretty opaque to simple tooling. Like my editor<01:47:40.880> doesn't<01:47:41.040> know<01:47:41.199> how<01:47:41.280> to<01:47:41.600> understand<01:47:42.159> X" + }, + { + "start": 6462.39, + "duration": 0.0, + "text": "editor doesn't know how to understand X" + }, + { + "start": 6462.4, + "duration": 0.0, + "text": "editor doesn't know how to understand X macros<01:47:42.880> and<01:47:43.040> all<01:47:43.199> that,<01:47:43.360> and<01:47:43.520> I'm<01:47:43.679> not<01:47:43.840> going" + }, + { + "start": 6463.83, + "duration": 0.0, + "text": "macros and all that, and I'm not going" + }, + { + "start": 6463.84, + "duration": 0.0, + "text": "macros and all that, and I'm not going to<01:47:43.920> use<01:47:44.159> an<01:47:44.480> editor<01:47:44.880> that<01:47:45.119> can<01:47:45.360> because<01:47:45.840> all<01:47:46.000> of" + }, + { + "start": 6466.07, + "duration": 0.0, + "text": "to use an editor that can because all of" + }, + { + "start": 6466.08, + "duration": 0.0, + "text": "to use an editor that can because all of them<01:47:46.239> are<01:47:46.400> really<01:47:46.639> slow.<01:47:47.199> And<01:47:47.360> so,<01:47:47.520> it's<01:47:47.760> like" + }, + { + "start": 6468.229, + "duration": 0.0, + "text": "them are really slow. And so, it's like" + }, + { + "start": 6468.239, + "duration": 0.0, + "text": "them are really slow. And so, it's like I'd<01:47:48.480> rather<01:47:48.719> just<01:47:48.960> have<01:47:49.679> um<01:47:50.480> I'd<01:47:50.800> rather<01:47:50.960> just" + }, + { + "start": 6471.189, + "duration": 0.0, + "text": "I'd rather just have um I'd rather just" + }, + { + "start": 6471.199, + "duration": 0.0, + "text": "I'd rather just have um I'd rather just produce<01:47:51.440> the<01:47:51.600> C<01:47:51.840> code<01:47:52.000> I<01:47:52.239> want.<01:47:52.560> Now,<01:47:52.800> in<01:47:53.040> other" + }, + { + "start": 6473.27, + "duration": 0.0, + "text": "produce the C code I want. Now, in other" + }, + { + "start": 6473.28, + "duration": 0.0, + "text": "produce the C code I want. Now, in other projects<01:47:53.600> in<01:47:53.679> in<01:47:53.920> the<01:47:54.000> RAD<01:47:54.239> debugger,<01:47:54.639> I<01:47:54.800> don't" + }, + { + "start": 6475.109, + "duration": 0.0, + "text": "projects in in the RAD debugger, I don't" + }, + { + "start": 6475.119, + "duration": 0.0, + "text": "projects in in the RAD debugger, I don't actually<01:47:55.360> do<01:47:55.520> this,<01:47:55.679> but<01:47:55.920> in<01:47:56.080> other<01:47:56.320> projects," + }, + { + "start": 6476.629, + "duration": 0.0, + "text": "actually do this, but in other projects," + }, + { + "start": 6476.639, + "duration": 0.0, + "text": "actually do this, but in other projects, I<01:47:56.880> do<01:47:57.040> like<01:47:57.920> more<01:47:58.159> complicated<01:47:58.639> meta" + }, + { + "start": 6478.95, + "duration": 0.0, + "text": "I do like more complicated meta" + }, + { + "start": 6478.96, + "duration": 0.0, + "text": "I do like more complicated meta programming<01:47:59.280> where<01:47:59.520> it's<01:47:59.679> like<01:48:00.080> I'm<01:48:00.320> going<01:48:00.400> to" + }, + { + "start": 6480.47, + "duration": 0.0, + "text": "programming where it's like I'm going to" + }, + { + "start": 6480.48, + "duration": 0.0, + "text": "programming where it's like I'm going to find<01:48:00.880> like<01:48:01.199> tweak<01:48:01.520> variables<01:48:02.000> that<01:48:02.159> are" + }, + { + "start": 6482.31, + "duration": 0.0, + "text": "find like tweak variables that are" + }, + { + "start": 6482.32, + "duration": 0.0, + "text": "find like tweak variables that are scattered<01:48:02.719> throughout<01:48:02.960> the<01:48:03.040> codebase.<01:48:03.520> I'm" + }, + { + "start": 6483.669, + "duration": 0.0, + "text": "scattered throughout the codebase. I'm" + }, + { + "start": 6483.679, + "duration": 0.0, + "text": "scattered throughout the codebase. I'm going<01:48:03.760> to<01:48:03.840> find<01:48:04.080> all<01:48:04.239> of<01:48:04.320> them<01:48:04.480> and<01:48:04.639> build<01:48:04.800> a" + }, + { + "start": 6485.03, + "duration": 0.0, + "text": "going to find all of them and build a" + }, + { + "start": 6485.04, + "duration": 0.0, + "text": "going to find all of them and build a data<01:48:05.280> table<01:48:05.679> so<01:48:05.840> that<01:48:06.080> like<01:48:06.239> I<01:48:06.400> can<01:48:06.480> build<01:48:06.639> a<01:48:06.800> UI" + }, + { + "start": 6487.03, + "duration": 0.0, + "text": "data table so that like I can build a UI" + }, + { + "start": 6487.04, + "duration": 0.0, + "text": "data table so that like I can build a UI in<01:48:07.199> my<01:48:07.360> game,<01:48:07.679> for<01:48:07.760> example,<01:48:08.080> that's<01:48:08.400> like" + }, + { + "start": 6488.709, + "duration": 0.0, + "text": "in my game, for example, that's like" + }, + { + "start": 6488.719, + "duration": 0.0, + "text": "in my game, for example, that's like here's<01:48:09.040> all<01:48:09.119> the<01:48:09.199> tweak<01:48:09.520> variables<01:48:09.840> in<01:48:10.080> the" + }, + { + "start": 6490.229, + "duration": 0.0, + "text": "here's all the tweak variables in the" + }, + { + "start": 6490.239, + "duration": 0.0, + "text": "here's all the tweak variables in the system<01:48:10.560> and<01:48:10.800> you<01:48:10.880> can<01:48:11.040> just<01:48:11.119> toggle<01:48:11.520> them" + }, + { + "start": 6491.669, + "duration": 0.0, + "text": "system and you can just toggle them" + }, + { + "start": 6491.679, + "duration": 0.0, + "text": "system and you can just toggle them dynamically.<01:48:12.239> Even<01:48:12.400> though<01:48:12.800> the<01:48:13.119> only<01:48:13.280> thing" + }, + { + "start": 6493.35, + "duration": 0.0, + "text": "dynamically. Even though the only thing" + }, + { + "start": 6493.36, + "duration": 0.0, + "text": "dynamically. Even though the only thing I<01:48:13.520> had<01:48:13.679> to<01:48:13.760> do<01:48:13.840> to<01:48:14.000> actually<01:48:14.239> add<01:48:14.400> that<01:48:14.560> was<01:48:14.800> say" + }, + { + "start": 6495.189, + "duration": 0.0, + "text": "I had to do to actually add that was say" + }, + { + "start": 6495.199, + "duration": 0.0, + "text": "I had to do to actually add that was say tweak<01:48:15.600> and<01:48:15.840> then<01:48:16.000> like<01:48:16.239> some<01:48:16.480> value<01:48:16.719> and<01:48:16.880> then" + }, + { + "start": 6497.03, + "duration": 0.0, + "text": "tweak and then like some value and then" + }, + { + "start": 6497.04, + "duration": 0.0, + "text": "tweak and then like some value and then it's<01:48:17.280> like<01:48:17.520> there<01:48:17.760> you<01:48:17.920> go." + }, + { + "start": 6499.35, + "duration": 0.0, + "text": "it's like there you go." + }, + { + "start": 6499.36, + "duration": 0.0, + "text": "it's like there you go. So<01:48:19.840> this<01:48:20.080> is<01:48:20.400> partially<01:48:20.800> how<01:48:21.040> you<01:48:21.280> avoid<01:48:21.600> like" + }, + { + "start": 6501.83, + "duration": 0.0, + "text": "So this is partially how you avoid like" + }, + { + "start": 6501.84, + "duration": 0.0, + "text": "So this is partially how you avoid like one<01:48:22.000> of<01:48:22.080> the<01:48:22.320> drawbacks<01:48:22.719> of<01:48:23.040> using<01:48:23.440> C<01:48:23.679> and" + }, + { + "start": 6503.91, + "duration": 0.0, + "text": "one of the drawbacks of using C and" + }, + { + "start": 6503.92, + "duration": 0.0, + "text": "one of the drawbacks of using C and having<01:48:24.159> to<01:48:24.239> do<01:48:24.320> a<01:48:24.480> lot<01:48:24.639> of<01:48:24.880> macros<01:48:25.360> to<01:48:25.600> work" + }, + { + "start": 6505.75, + "duration": 0.0, + "text": "having to do a lot of macros to work" + }, + { + "start": 6505.76, + "duration": 0.0, + "text": "having to do a lot of macros to work around<01:48:26.000> it<01:48:26.159> is<01:48:26.320> like<01:48:27.280> as<01:48:27.520> we're<01:48:27.679> on<01:48:27.840> the<01:48:28.000> topic" + }, + { + "start": 6508.149, + "duration": 0.0, + "text": "around it is like as we're on the topic" + }, + { + "start": 6508.159, + "duration": 0.0, + "text": "around it is like as we're on the topic of<01:48:28.239> debugger<01:48:28.800> as<01:48:28.960> anyone<01:48:29.280> knows<01:48:29.440> who's<01:48:29.679> done" + }, + { + "start": 6509.75, + "duration": 0.0, + "text": "of debugger as anyone knows who's done" + }, + { + "start": 6509.76, + "duration": 0.0, + "text": "of debugger as anyone knows who's done that<01:48:30.000> debugging<01:48:30.560> macros<01:48:30.960> is<01:48:31.199> a<01:48:31.360> nightmare" + }, + { + "start": 6512.149, + "duration": 0.0, + "text": "that debugging macros is a nightmare" + }, + { + "start": 6512.159, + "duration": 0.0, + "text": "that debugging macros is a nightmare >> because<01:48:32.400> you<01:48:32.719> basically<01:48:33.040> don't<01:48:33.199> get<01:48:33.360> a<01:48:33.440> debug" + }, + { + "start": 6513.75, + "duration": 0.0, + "text": ">> because you basically don't get a debug" + }, + { + "start": 6513.76, + "duration": 0.0, + "text": ">> because you basically don't get a debug information<01:48:34.000> you<01:48:34.239> can't<01:48:34.320> properly<01:48:34.639> step<01:48:35.280> etc" + }, + { + "start": 6515.669, + "duration": 0.0, + "text": "information you can't properly step etc" + }, + { + "start": 6515.679, + "duration": 0.0, + "text": "information you can't properly step etc etc." + }, + { + "start": 6516.55, + "duration": 0.0, + "text": "etc." + }, + { + "start": 6516.56, + "duration": 0.0, + "text": "etc. >> So<01:48:36.880> you<01:48:37.119> also<01:48:37.440> avoid<01:48:37.679> that<01:48:38.159> by<01:48:38.320> generating" + }, + { + "start": 6518.709, + "duration": 0.0, + "text": ">> So you also avoid that by generating" + }, + { + "start": 6518.719, + "duration": 0.0, + "text": ">> So you also avoid that by generating code<01:48:38.880> instead<01:48:39.119> of<01:48:39.360> relying<01:48:39.600> on<01:48:39.760> macros<01:48:40.159> you" + }, + { + "start": 6520.31, + "duration": 0.0, + "text": "code instead of relying on macros you" + }, + { + "start": 6520.32, + "duration": 0.0, + "text": "code instead of relying on macros you kind<01:48:40.480> of<01:48:40.560> avoid<01:48:40.880> that<01:48:41.040> step<01:48:41.280> and<01:48:41.440> have<01:48:41.600> code" + }, + { + "start": 6521.75, + "duration": 0.0, + "text": "kind of avoid that step and have code" + }, + { + "start": 6521.76, + "duration": 0.0, + "text": "kind of avoid that step and have code that<01:48:41.920> you<01:48:42.080> can<01:48:42.159> step<01:48:42.400> through.<01:48:42.560> Is<01:48:42.719> that<01:48:42.880> a" + }, + { + "start": 6524.55, + "duration": 0.0, + "text": "that you can step through. Is that a" + }, + { + "start": 6524.56, + "duration": 0.0, + "text": "that you can step through. Is that a >> um<01:48:44.800> yeah<01:48:45.040> that's<01:48:45.199> one<01:48:45.440> benefit<01:48:45.760> for<01:48:46.000> sure.<01:48:46.480> Um" + }, + { + "start": 6526.95, + "duration": 0.0, + "text": ">> um yeah that's one benefit for sure. Um" + }, + { + "start": 6526.96, + "duration": 0.0, + "text": ">> um yeah that's one benefit for sure. Um it's<01:48:47.600> uh<01:48:48.239> that's<01:48:48.480> partly<01:48:48.800> a<01:48:48.880> debug<01:48:49.199> info" + }, + { + "start": 6529.51, + "duration": 0.0, + "text": "it's uh that's partly a debug info" + }, + { + "start": 6529.52, + "duration": 0.0, + "text": "it's uh that's partly a debug info problem.<01:48:49.760> Like<01:48:49.920> you<01:48:50.080> could<01:48:50.159> imagine<01:48:50.400> debug" + }, + { + "start": 6530.709, + "duration": 0.0, + "text": "problem. Like you could imagine debug" + }, + { + "start": 6530.719, + "duration": 0.0, + "text": "problem. Like you could imagine debug info<01:48:51.040> being<01:48:51.199> slightly<01:48:51.520> in<01:48:51.679> fact<01:48:51.760> I<01:48:51.920> think" + }, + { + "start": 6531.99, + "duration": 0.0, + "text": "info being slightly in fact I think" + }, + { + "start": 6532.0, + "duration": 0.0, + "text": "info being slightly in fact I think dwarf<01:48:52.400> is<01:48:52.880> like<01:48:53.119> dwarf<01:48:53.440> tool<01:48:53.679> chains<01:48:53.920> tend<01:48:54.159> to" + }, + { + "start": 6534.229, + "duration": 0.0, + "text": "dwarf is like dwarf tool chains tend to" + }, + { + "start": 6534.239, + "duration": 0.0, + "text": "dwarf is like dwarf tool chains tend to be<01:48:54.320> more<01:48:54.560> useful<01:48:54.880> I<01:48:55.119> think.<01:48:55.280> I<01:48:55.440> mean<01:48:55.600> I<01:48:56.000> you" + }, + { + "start": 6536.229, + "duration": 0.0, + "text": "be more useful I think. I mean I you" + }, + { + "start": 6536.239, + "duration": 0.0, + "text": "be more useful I think. I mean I you tell<01:48:56.400> me<01:48:56.639> but<01:48:57.199> I'm<01:48:57.360> pretty<01:48:57.679> sure<01:48:57.920> dwarf" + }, + { + "start": 6538.87, + "duration": 0.0, + "text": "tell me but I'm pretty sure dwarf" + }, + { + "start": 6538.88, + "duration": 0.0, + "text": "tell me but I'm pretty sure dwarf >> dwarf<01:48:59.280> is<01:48:59.440> complicated<01:48:59.760> because<01:48:59.920> it's<01:49:00.080> like" + }, + { + "start": 6540.229, + "duration": 0.0, + "text": ">> dwarf is complicated because it's like" + }, + { + "start": 6540.239, + "duration": 0.0, + "text": ">> dwarf is complicated because it's like of<01:49:00.400> course<01:49:00.560> it<01:49:00.719> can<01:49:00.960> express<01:49:01.280> anything<01:49:01.520> but" + }, + { + "start": 6541.75, + "duration": 0.0, + "text": "of course it can express anything but" + }, + { + "start": 6541.76, + "duration": 0.0, + "text": "of course it can express anything but what<01:49:01.920> compilers<01:49:02.320> generates<01:49:02.719> another" + }, + { + "start": 6542.95, + "duration": 0.0, + "text": "what compilers generates another" + }, + { + "start": 6542.96, + "duration": 0.0, + "text": "what compilers generates another question.<01:49:03.280> Right.<01:49:03.600> Exactly.<01:49:04.000> So<01:49:04.719> um<01:49:04.960> so<01:49:05.440> but" + }, + { + "start": 6545.669, + "duration": 0.0, + "text": "question. Right. Exactly. So um so but" + }, + { + "start": 6545.679, + "duration": 0.0, + "text": "question. Right. Exactly. So um so but yeah<01:49:05.840> it's<01:49:06.000> it's<01:49:06.560> definitely<01:49:06.960> partly<01:49:07.360> that." + }, + { + "start": 6547.669, + "duration": 0.0, + "text": "yeah it's it's definitely partly that." + }, + { + "start": 6547.679, + "duration": 0.0, + "text": "yeah it's it's definitely partly that. Um,<01:49:08.080> I<01:49:08.239> don't<01:49:08.400> tend<01:49:08.560> to<01:49:08.719> do<01:49:09.040> like<01:49:09.199> I<01:49:09.360> don't<01:49:09.520> use" + }, + { + "start": 6549.669, + "duration": 0.0, + "text": "Um, I don't tend to do like I don't use" + }, + { + "start": 6549.679, + "duration": 0.0, + "text": "Um, I don't tend to do like I don't use any<01:49:09.920> like<01:49:10.159> generics<01:49:10.639> or<01:49:10.880> anything<01:49:11.119> like<01:49:11.360> I<01:49:11.520> do" + }, + { + "start": 6551.59, + "duration": 0.0, + "text": "any like generics or anything like I do" + }, + { + "start": 6551.6, + "duration": 0.0, + "text": "any like generics or anything like I do use<01:49:11.840> like<01:49:12.080> the<01:49:12.560> the<01:49:12.960> like<01:49:13.199> list<01:49:13.440> macros<01:49:13.840> that" + }, + { + "start": 6553.99, + "duration": 0.0, + "text": "use like the the like list macros that" + }, + { + "start": 6554.0, + "duration": 0.0, + "text": "use like the the like list macros that Vosov<01:49:14.639> showed<01:49:14.880> like<01:49:15.040> I<01:49:15.199> have<01:49:15.440> equivalents" + }, + { + "start": 6555.99, + "duration": 0.0, + "text": "Vosov showed like I have equivalents" + }, + { + "start": 6556.0, + "duration": 0.0, + "text": "Vosov showed like I have equivalents basically<01:49:16.320> in<01:49:16.560> this<01:49:16.719> codebase<01:49:17.199> and" + }, + { + "start": 6558.07, + "duration": 0.0, + "text": "basically in this codebase and" + }, + { + "start": 6558.08, + "duration": 0.0, + "text": "basically in this codebase and >> stealing<01:49:18.400> them<01:49:18.560> from<01:49:18.800> you<01:49:19.040> I<01:49:19.199> think<01:49:19.440> if" + }, + { + "start": 6561.83, + "duration": 0.0, + "text": ">> stealing them from you I think if" + }, + { + "start": 6561.84, + "duration": 0.0, + "text": ">> stealing them from you I think if >> can<01:49:22.000> we<01:49:22.159> confirm" + }, + { + "start": 6563.43, + "duration": 0.0, + "text": ">> can we confirm" + }, + { + "start": 6563.44, + "duration": 0.0, + "text": ">> can we confirm >> yeah<01:49:24.400> you<01:49:24.800> your<01:49:24.880> your<01:49:25.119> code<01:49:25.280> seems<01:49:25.520> to<01:49:25.600> be<01:49:25.760> kind" + }, + { + "start": 6565.83, + "duration": 0.0, + "text": ">> yeah you your your code seems to be kind" + }, + { + "start": 6565.84, + "duration": 0.0, + "text": ">> yeah you your your code seems to be kind of<01:49:25.920> the<01:49:26.159> new<01:49:26.320> standard<01:49:26.639> library<01:49:26.960> for<01:49:27.280> C" + }, + { + "start": 6567.51, + "duration": 0.0, + "text": "of the new standard library for C" + }, + { + "start": 6567.52, + "duration": 0.0, + "text": "of the new standard library for C because<01:49:27.760> I<01:49:28.000> had<01:49:28.080> it<01:49:28.239> from<01:49:28.400> a<01:49:28.560> couple<01:49:28.719> people" + }, + { + "start": 6568.79, + "duration": 0.0, + "text": "because I had it from a couple people" + }, + { + "start": 6568.8, + "duration": 0.0, + "text": "because I had it from a couple people that<01:49:29.119> they<01:49:29.280> just<01:49:29.440> steal<01:49:29.679> stuff<01:49:29.920> from" + }, + { + "start": 6570.229, + "duration": 0.0, + "text": "that they just steal stuff from" + }, + { + "start": 6570.239, + "duration": 0.0, + "text": "that they just steal stuff from >> I<01:49:30.400> mean<01:49:30.639> that's<01:49:30.880> fine<01:49:31.199> man<01:49:31.440> like<01:49:31.600> C's<01:49:31.920> standard" + }, + { + "start": 6572.229, + "duration": 0.0, + "text": ">> I mean that's fine man like C's standard" + }, + { + "start": 6572.239, + "duration": 0.0, + "text": ">> I mean that's fine man like C's standard library<01:49:32.480> is<01:49:32.719> pretty<01:49:32.880> bad<01:49:33.119> so<01:49:33.360> it's<01:49:33.440> it's<01:49:33.840> good" + }, + { + "start": 6573.99, + "duration": 0.0, + "text": "library is pretty bad so it's it's good" + }, + { + "start": 6574.0, + "duration": 0.0, + "text": "library is pretty bad so it's it's good to<01:49:34.159> have<01:49:34.400> like<01:49:34.639> people<01:49:35.360> just<01:49:35.679> demonstrate" + }, + { + "start": 6576.229, + "duration": 0.0, + "text": "to have like people just demonstrate" + }, + { + "start": 6576.239, + "duration": 0.0, + "text": "to have like people just demonstrate it's<01:49:36.480> like<01:49:36.719> you<01:49:37.040> didn't<01:49:37.280> you<01:49:37.520> didn't<01:49:37.679> have<01:49:37.760> to" + }, + { + "start": 6577.91, + "duration": 0.0, + "text": "it's like you didn't you didn't have to" + }, + { + "start": 6577.92, + "duration": 0.0, + "text": "it's like you didn't you didn't have to stop<01:49:38.080> with<01:49:38.239> a<01:49:38.400> standard<01:49:38.639> library<01:49:38.960> like<01:49:39.119> you" + }, + { + "start": 6579.27, + "duration": 0.0, + "text": "stop with a standard library like you" + }, + { + "start": 6579.28, + "duration": 0.0, + "text": "stop with a standard library like you can<01:49:39.440> actually<01:49:39.600> build<01:49:39.760> a<01:49:39.920> good<01:49:40.080> code<01:49:40.320> base" + }, + { + "start": 6580.709, + "duration": 0.0, + "text": "can actually build a good code base" + }, + { + "start": 6580.719, + "duration": 0.0, + "text": "can actually build a good code base obviously<01:49:41.199> there's<01:49:41.360> some<01:49:41.520> runway" + }, + { + "start": 6582.31, + "duration": 0.0, + "text": "obviously there's some runway" + }, + { + "start": 6582.32, + "duration": 0.0, + "text": "obviously there's some runway >> like<01:49:42.480> Shan<01:49:42.719> Barrett<01:49:42.960> has<01:49:43.119> been<01:49:43.199> a<01:49:43.360> prime" + }, + { + "start": 6583.59, + "duration": 0.0, + "text": ">> like Shan Barrett has been a prime" + }, + { + "start": 6583.6, + "duration": 0.0, + "text": ">> like Shan Barrett has been a prime example<01:49:43.840> of<01:49:44.000> that<01:49:44.239> like<01:49:44.560> here" + }, + { + "start": 6584.87, + "duration": 0.0, + "text": "example of that like here" + }, + { + "start": 6584.88, + "duration": 0.0, + "text": "example of that like here >> yeah<01:49:45.520> definitely<01:49:46.159> yeah<01:49:46.639> so" + }, + { + "start": 6588.31, + "duration": 0.0, + "text": ">> yeah definitely yeah so" + }, + { + "start": 6588.32, + "duration": 0.0, + "text": ">> yeah definitely yeah so >> uh<01:49:48.400> I<01:49:48.639> guess<01:49:48.800> my<01:49:49.040> final<01:49:49.280> question<01:49:49.520> before<01:49:49.760> I" + }, + { + "start": 6589.91, + "duration": 0.0, + "text": ">> uh I guess my final question before I" + }, + { + "start": 6589.92, + "duration": 0.0, + "text": ">> uh I guess my final question before I open<01:49:50.159> up<01:49:50.320> is<01:49:50.639> like<01:49:51.600> uh<01:49:52.080> Gingerbill<01:49:52.719> was<01:49:53.280> kind" + }, + { + "start": 6593.51, + "duration": 0.0, + "text": "open up is like uh Gingerbill was kind" + }, + { + "start": 6593.52, + "duration": 0.0, + "text": "open up is like uh Gingerbill was kind enough<01:49:53.840> to<01:49:54.159> announce<01:49:54.639> the<01:49:54.880> macros<01:49:55.360> and<01:49:55.520> Linux" + }, + { + "start": 6595.75, + "duration": 0.0, + "text": "enough to announce the macros and Linux" + }, + { + "start": 6595.76, + "duration": 0.0, + "text": "enough to announce the macros and Linux version<01:49:55.920> of<01:49:56.080> the<01:49:56.159> red<01:49:56.400> debugger<01:49:56.880> yesterday" + }, + { + "start": 6597.91, + "duration": 0.0, + "text": "version of the red debugger yesterday" + }, + { + "start": 6597.92, + "duration": 0.0, + "text": "version of the red debugger yesterday are<01:49:58.159> there<01:49:58.320> any<01:49:58.480> announcement<01:49:58.960> you<01:49:59.119> want<01:49:59.199> to" + }, + { + "start": 6599.27, + "duration": 0.0, + "text": "are there any announcement you want to" + }, + { + "start": 6599.28, + "duration": 0.0, + "text": "are there any announcement you want to add<01:49:59.440> to<01:49:59.600> that" + }, + { + "start": 6601.03, + "duration": 0.0, + "text": "add to that" + }, + { + "start": 6601.04, + "duration": 0.0, + "text": "add to that >> um<01:50:01.760> yeah<01:50:02.000> so<01:50:02.159> I<01:50:02.400> should<01:50:02.560> clarify<01:50:03.600> like<01:50:04.080> we're" + }, + { + "start": 6604.31, + "duration": 0.0, + "text": ">> um yeah so I should clarify like we're" + }, + { + "start": 6604.32, + "duration": 0.0, + "text": ">> um yeah so I should clarify like we're not<01:50:04.480> like<01:50:04.639> we<01:50:04.880> haven't<01:50:05.199> announced<01:50:05.920> a<01:50:06.480> a<01:50:06.639> Mac" + }, + { + "start": 6606.95, + "duration": 0.0, + "text": "not like we haven't announced a a Mac" + }, + { + "start": 6606.96, + "duration": 0.0, + "text": "not like we haven't announced a a Mac port<01:50:07.199> or<01:50:07.440> anything.<01:50:07.679> Obviously<01:50:08.080> like" + }, + { + "start": 6609.109, + "duration": 0.0, + "text": "port or anything. Obviously like" + }, + { + "start": 6609.119, + "duration": 0.0, + "text": "port or anything. Obviously like >> uh<01:50:09.280> it's<01:50:09.760> it's<01:50:10.000> done<01:50:10.239> actually." + }, + { + "start": 6610.709, + "duration": 0.0, + "text": ">> uh it's it's done actually." + }, + { + "start": 6610.719, + "duration": 0.0, + "text": ">> uh it's it's done actually. >> Question<01:50:10.800> is<01:50:10.960> when<01:50:11.119> do<01:50:11.199> you<01:50:11.280> ship<01:50:11.520> it?<01:50:11.679> Like<01:50:12.239> it" + }, + { + "start": 6612.55, + "duration": 0.0, + "text": ">> Question is when do you ship it? Like it" + }, + { + "start": 6612.56, + "duration": 0.0, + "text": ">> Question is when do you ship it? Like it has<01:50:12.719> been<01:50:12.880> announced." + }, + { + "start": 6614.55, + "duration": 0.0, + "text": "has been announced." + }, + { + "start": 6614.56, + "duration": 0.0, + "text": "has been announced. >> Yeah.<01:50:14.800> I<01:50:14.960> mean<01:50:15.040> obviously<01:50:15.360> we're<01:50:15.600> focused<01:50:15.840> on" + }, + { + "start": 6615.91, + "duration": 0.0, + "text": ">> Yeah. I mean obviously we're focused on" + }, + { + "start": 6615.92, + "duration": 0.0, + "text": ">> Yeah. I mean obviously we're focused on the<01:50:16.080> Linux<01:50:16.400> port<01:50:16.960> um<01:50:17.360> next.<01:50:17.920> So<01:50:18.320> obviously<01:50:18.719> a" + }, + { + "start": 6618.95, + "duration": 0.0, + "text": "the Linux port um next. So obviously a" + }, + { + "start": 6618.96, + "duration": 0.0, + "text": "the Linux port um next. So obviously a big<01:50:19.440> early<01:50:19.760> stage<01:50:20.080> of<01:50:20.239> like<01:50:20.480> so<01:50:20.639> the<01:50:20.800> debugger" + }, + { + "start": 6621.03, + "duration": 0.0, + "text": "big early stage of like so the debugger" + }, + { + "start": 6621.04, + "duration": 0.0, + "text": "big early stage of like so the debugger is<01:50:21.119> an<01:50:21.280> open<01:50:21.440> alpha.<01:50:21.840> I<01:50:22.000> never<01:50:22.159> mentioned<01:50:22.320> that" + }, + { + "start": 6622.55, + "duration": 0.0, + "text": "is an open alpha. I never mentioned that" + }, + { + "start": 6622.56, + "duration": 0.0, + "text": "is an open alpha. I never mentioned that but<01:50:22.719> that's<01:50:22.880> what<01:50:23.040> it's<01:50:23.280> in.<01:50:23.840> Um<01:50:24.239> so<01:50:24.480> people" + }, + { + "start": 6624.709, + "duration": 0.0, + "text": "but that's what it's in. Um so people" + }, + { + "start": 6624.719, + "duration": 0.0, + "text": "but that's what it's in. Um so people can<01:50:24.880> use<01:50:25.040> it<01:50:25.199> and<01:50:25.840> a<01:50:26.159> large<01:50:26.400> portion<01:50:26.719> of<01:50:26.880> work" + }, + { + "start": 6627.109, + "duration": 0.0, + "text": "can use it and a large portion of work" + }, + { + "start": 6627.119, + "duration": 0.0, + "text": "can use it and a large portion of work is<01:50:27.280> just<01:50:27.440> like<01:50:28.239> making<01:50:28.480> sure<01:50:28.639> it<01:50:28.800> works<01:50:28.960> on" + }, + { + "start": 6629.109, + "duration": 0.0, + "text": "is just like making sure it works on" + }, + { + "start": 6629.119, + "duration": 0.0, + "text": "is just like making sure it works on large<01:50:29.280> code<01:50:29.520> bases<01:50:30.000> getting<01:50:30.159> it<01:50:30.400> more<01:50:30.560> stable" + }, + { + "start": 6631.03, + "duration": 0.0, + "text": "large code bases getting it more stable" + }, + { + "start": 6631.04, + "duration": 0.0, + "text": "large code bases getting it more stable like<01:50:31.199> adding<01:50:31.600> adding<01:50:31.920> the<01:50:32.080> features<01:50:32.320> that" + }, + { + "start": 6632.47, + "duration": 0.0, + "text": "like adding adding the features that" + }, + { + "start": 6632.48, + "duration": 0.0, + "text": "like adding adding the features that people<01:50:32.719> need<01:50:32.960> like<01:50:33.119> stuff<01:50:33.280> like<01:50:33.440> that.<01:50:34.000> Then" + }, + { + "start": 6634.149, + "duration": 0.0, + "text": "people need like stuff like that. Then" + }, + { + "start": 6634.159, + "duration": 0.0, + "text": "people need like stuff like that. Then the<01:50:34.400> next<01:50:34.560> phase<01:50:34.800> is<01:50:34.960> really<01:50:35.119> the<01:50:35.360> Linux<01:50:35.600> port." + }, + { + "start": 6635.83, + "duration": 0.0, + "text": "the next phase is really the Linux port." + }, + { + "start": 6635.84, + "duration": 0.0, + "text": "the next phase is really the Linux port. So,<01:50:36.000> we're<01:50:36.159> actually<01:50:36.320> going<01:50:36.480> to<01:50:36.560> do<01:50:36.719> the<01:50:36.880> first" + }, + { + "start": 6637.109, + "duration": 0.0, + "text": "So, we're actually going to do the first" + }, + { + "start": 6637.119, + "duration": 0.0, + "text": "So, we're actually going to do the first porting<01:50:37.520> step<01:50:37.760> will<01:50:37.920> be<01:50:38.080> x64<01:50:38.719> Linux<01:50:39.600> and<01:50:39.760> then" + }, + { + "start": 6639.91, + "duration": 0.0, + "text": "porting step will be x64 Linux and then" + }, + { + "start": 6639.92, + "duration": 0.0, + "text": "porting step will be x64 Linux and then we'll<01:50:40.560> um<01:50:40.800> we'll<01:50:41.119> keep<01:50:41.280> going<01:50:41.440> in<01:50:41.600> other" + }, + { + "start": 6641.83, + "duration": 0.0, + "text": "we'll um we'll keep going in other" + }, + { + "start": 6641.84, + "duration": 0.0, + "text": "we'll um we'll keep going in other directions<01:50:42.080> like<01:50:42.320> we'll<01:50:42.480> be<01:50:42.560> able<01:50:42.639> to<01:50:42.800> support" + }, + { + "start": 6643.03, + "duration": 0.0, + "text": "directions like we'll be able to support" + }, + { + "start": 6643.04, + "duration": 0.0, + "text": "directions like we'll be able to support ARM<01:50:43.440> and<01:50:43.679> like<01:50:43.840> things<01:50:44.080> like<01:50:44.239> that.<01:50:44.880> So,<01:50:45.520> um" + }, + { + "start": 6645.83, + "duration": 0.0, + "text": "ARM and like things like that. So, um" + }, + { + "start": 6645.84, + "duration": 0.0, + "text": "ARM and like things like that. So, um that's<01:50:46.159> sort<01:50:46.320> of<01:50:46.400> the<01:50:46.639> direction.<01:50:47.520> Uh<01:50:48.239> but" + }, + { + "start": 6648.55, + "duration": 0.0, + "text": "that's sort of the direction. Uh but" + }, + { + "start": 6648.56, + "duration": 0.0, + "text": "that's sort of the direction. Uh but like<01:50:48.880> we're<01:50:49.119> not<01:50:49.280> going<01:50:49.360> to<01:50:49.520> be<01:50:49.600> working<01:50:49.760> on" + }, + { + "start": 6649.99, + "duration": 0.0, + "text": "like we're not going to be working on" + }, + { + "start": 6650.0, + "duration": 0.0, + "text": "like we're not going to be working on Mac<01:50:50.480> and<01:50:50.719> like<01:50:51.360> before<01:50:51.760> any<01:50:51.920> of<01:50:52.080> that.<01:50:52.400> So,<01:50:52.719> so" + }, + { + "start": 6653.75, + "duration": 0.0, + "text": "Mac and like before any of that. So, so" + }, + { + "start": 6653.76, + "duration": 0.0, + "text": "Mac and like before any of that. So, so while<01:50:54.480> maybe<01:50:54.719> he<01:50:54.960> was<01:50:55.040> wishful<01:50:55.679> maybe<01:50:55.840> he<01:50:56.000> was" + }, + { + "start": 6656.07, + "duration": 0.0, + "text": "while maybe he was wishful maybe he was" + }, + { + "start": 6656.08, + "duration": 0.0, + "text": "while maybe he was wishful maybe he was just<01:50:56.239> expressing<01:50:56.560> wishful<01:50:56.960> thinking.<01:50:57.520> Um<01:50:57.920> and" + }, + { + "start": 6658.229, + "duration": 0.0, + "text": "just expressing wishful thinking. Um and" + }, + { + "start": 6658.239, + "duration": 0.0, + "text": "just expressing wishful thinking. Um and you<01:50:58.400> know<01:50:58.639> once<01:50:58.880> you've<01:50:59.040> done<01:50:59.199> the<01:50:59.360> Linux<01:50:59.679> port" + }, + { + "start": 6659.99, + "duration": 0.0, + "text": "you know once you've done the Linux port" + }, + { + "start": 6660.0, + "duration": 0.0, + "text": "you know once you've done the Linux port I<01:51:00.239> my<01:51:00.560> intuition<01:51:00.960> is<01:51:01.199> like<01:51:01.360> you're<01:51:01.600> not<01:51:01.679> that" + }, + { + "start": 6661.91, + "duration": 0.0, + "text": "I my intuition is like you're not that" + }, + { + "start": 6661.92, + "duration": 0.0, + "text": "I my intuition is like you're not that far<01:51:02.080> from<01:51:02.239> a<01:51:02.400> Mac<01:51:02.639> port.<01:51:02.800> So<01:51:02.960> I<01:51:03.119> don't<01:51:03.199> think" + }, + { + "start": 6663.27, + "duration": 0.0, + "text": "far from a Mac port. So I don't think" + }, + { + "start": 6663.28, + "duration": 0.0, + "text": "far from a Mac port. So I don't think it'll<01:51:03.600> be<01:51:03.760> like<01:51:04.000> impossible<01:51:04.560> but<01:51:04.800> it's<01:51:05.199> but" + }, + { + "start": 6665.43, + "duration": 0.0, + "text": "it'll be like impossible but it's but" + }, + { + "start": 6665.44, + "duration": 0.0, + "text": "it'll be like impossible but it's but yeah<01:51:05.600> it's<01:51:05.760> just<01:51:05.920> like<01:51:06.159> we<01:51:06.400> haven't<01:51:06.639> like<01:51:06.880> said" + }, + { + "start": 6667.03, + "duration": 0.0, + "text": "yeah it's just like we haven't like said" + }, + { + "start": 6667.04, + "duration": 0.0, + "text": "yeah it's just like we haven't like said that" + }, + { + "start": 6668.39, + "duration": 0.0, + "text": "that" + }, + { + "start": 6668.4, + "duration": 0.0, + "text": "that >> switch<01:51:08.800> and<01:51:08.960> iOS<01:51:09.280> when" + }, + { + "start": 6669.99, + "duration": 0.0, + "text": ">> switch and iOS when" + }, + { + "start": 6670.0, + "duration": 0.0, + "text": ">> switch and iOS when >> Yeah.<01:51:10.239> Yeah.<01:51:10.639> Exactly.<01:51:11.360> So" + }, + { + "start": 6672.87, + "duration": 0.0, + "text": ">> Yeah. Yeah. Exactly. So" + }, + { + "start": 6672.88, + "duration": 0.0, + "text": ">> Yeah. Yeah. Exactly. So >> all<01:51:12.960> right.<01:51:13.520> Um<01:51:14.480> any<01:51:14.800> qu<01:51:15.119> Yeah,<01:51:15.440> please." + }, + { + "start": 6675.91, + "duration": 0.0, + "text": ">> all right. Um any qu Yeah, please." + }, + { + "start": 6675.92, + "duration": 0.0, + "text": ">> all right. Um any qu Yeah, please. >> So<01:51:16.159> you<01:51:16.400> mentioned<01:51:16.800> uh<01:51:16.880> the<01:51:17.040> idea<01:51:17.280> of<01:51:17.360> a<01:51:17.520> black" + }, + { + "start": 6677.669, + "duration": 0.0, + "text": ">> So you mentioned uh the idea of a black" + }, + { + "start": 6677.679, + "duration": 0.0, + "text": ">> So you mentioned uh the idea of a black box<01:51:17.920> at<01:51:18.159> the<01:51:18.320> beginning<01:51:18.400> of<01:51:18.480> the<01:51:18.639> talk<01:51:18.880> and<01:51:19.280> uh" + }, + { + "start": 6679.35, + "duration": 0.0, + "text": "box at the beginning of the talk and uh" + }, + { + "start": 6679.36, + "duration": 0.0, + "text": "box at the beginning of the talk and uh I<01:51:19.600> feel<01:51:19.760> like<01:51:20.239> uh<01:51:20.400> this<01:51:20.639> talk<01:51:20.800> goes<01:51:21.040> a<01:51:21.119> long<01:51:21.280> way" + }, + { + "start": 6681.35, + "duration": 0.0, + "text": "I feel like uh this talk goes a long way" + }, + { + "start": 6681.36, + "duration": 0.0, + "text": "I feel like uh this talk goes a long way to<01:51:21.600> kind<01:51:21.760> of<01:51:21.840> demystifying<01:51:22.480> some<01:51:22.560> of<01:51:22.639> the" + }, + { + "start": 6682.87, + "duration": 0.0, + "text": "to kind of demystifying some of the" + }, + { + "start": 6682.88, + "duration": 0.0, + "text": "to kind of demystifying some of the inner<01:51:23.119> workings<01:51:23.360> of<01:51:23.440> a<01:51:23.600> debugger<01:51:24.000> which<01:51:24.320> is" + }, + { + "start": 6684.47, + "duration": 0.0, + "text": "inner workings of a debugger which is" + }, + { + "start": 6684.48, + "duration": 0.0, + "text": "inner workings of a debugger which is very<01:51:24.639> helpful<01:51:24.880> but<01:51:25.040> I<01:51:25.199> kind<01:51:25.280> of<01:51:25.360> wonder<01:51:25.520> if" + }, + { + "start": 6685.669, + "duration": 0.0, + "text": "very helpful but I kind of wonder if" + }, + { + "start": 6685.679, + "duration": 0.0, + "text": "very helpful but I kind of wonder if there's<01:51:25.920> ways<01:51:26.159> to<01:51:26.800> expose<01:51:27.199> some<01:51:27.360> of<01:51:27.440> that<01:51:27.600> to<01:51:27.760> a" + }, + { + "start": 6687.99, + "duration": 0.0, + "text": "there's ways to expose some of that to a" + }, + { + "start": 6688.0, + "duration": 0.0, + "text": "there's ways to expose some of that to a user.<01:51:28.639> Uh,<01:51:28.880> one<01:51:29.040> of<01:51:29.119> the<01:51:29.280> experiences<01:51:29.600> that<01:51:29.840> I" + }, + { + "start": 6690.07, + "duration": 0.0, + "text": "user. Uh, one of the experiences that I" + }, + { + "start": 6690.08, + "duration": 0.0, + "text": "user. Uh, one of the experiences that I often<01:51:30.400> have<01:51:30.480> with<01:51:30.639> the<01:51:30.800> debugger<01:51:31.199> is<01:51:31.360> I<01:51:31.520> will" + }, + { + "start": 6691.669, + "duration": 0.0, + "text": "often have with the debugger is I will" + }, + { + "start": 6691.679, + "duration": 0.0, + "text": "often have with the debugger is I will point<01:51:31.840> it<01:51:32.000> at<01:51:32.159> executable.<01:51:32.719> I<01:51:32.880> will<01:51:33.040> start<01:51:33.119> it" + }, + { + "start": 6693.27, + "duration": 0.0, + "text": "point it at executable. I will start it" + }, + { + "start": 6693.28, + "duration": 0.0, + "text": "point it at executable. I will start it up<01:51:33.360> and<01:51:33.520> I<01:51:33.600> say<01:51:33.760> I<01:51:33.840> want<01:51:33.920> to<01:51:34.000> hit<01:51:34.080> this<01:51:34.239> break" + }, + { + "start": 6694.39, + "duration": 0.0, + "text": "up and I say I want to hit this break" + }, + { + "start": 6694.4, + "duration": 0.0, + "text": "up and I say I want to hit this break point.<01:51:34.639> It's<01:51:34.719> like<01:51:34.880> I<01:51:35.040> don't<01:51:35.119> know<01:51:35.199> what<01:51:35.360> that" + }, + { + "start": 6695.51, + "duration": 0.0, + "text": "point. It's like I don't know what that" + }, + { + "start": 6695.52, + "duration": 0.0, + "text": "point. It's like I don't know what that means.<01:51:35.760> It's<01:51:35.920> like<01:51:36.080> I<01:51:36.239> don't<01:51:36.320> know<01:51:36.480> what<01:51:36.639> file" + }, + { + "start": 6697.03, + "duration": 0.0, + "text": "means. It's like I don't know what file" + }, + { + "start": 6697.04, + "duration": 0.0, + "text": "means. It's like I don't know what file that<01:51:37.199> refers<01:51:37.360> to<01:51:37.520> or<01:51:37.840> I<01:51:37.920> don't<01:51:38.000> know<01:51:38.159> what<01:51:38.320> like" + }, + { + "start": 6698.47, + "duration": 0.0, + "text": "that refers to or I don't know what like" + }, + { + "start": 6698.48, + "duration": 0.0, + "text": "that refers to or I don't know what like actual<01:51:38.800> instruction<01:51:39.119> that<01:51:39.360> refers<01:51:39.599> to.<01:51:40.159> And" + }, + { + "start": 6700.229, + "duration": 0.0, + "text": "actual instruction that refers to. And" + }, + { + "start": 6700.239, + "duration": 0.0, + "text": "actual instruction that refers to. And so<01:51:40.480> there's<01:51:40.639> all<01:51:40.719> this<01:51:40.880> inner<01:51:41.199> working<01:51:41.440> behind" + }, + { + "start": 6701.669, + "duration": 0.0, + "text": "so there's all this inner working behind" + }, + { + "start": 6701.679, + "duration": 0.0, + "text": "so there's all this inner working behind it<01:51:41.760> to<01:51:41.920> get<01:51:42.080> that<01:51:42.239> debug<01:51:42.560> info<01:51:42.880> to<01:51:43.040> find<01:51:43.119> it" + }, + { + "start": 6703.27, + "duration": 0.0, + "text": "it to get that debug info to find it" + }, + { + "start": 6703.28, + "duration": 0.0, + "text": "it to get that debug info to find it automatically<01:51:43.760> to<01:51:43.920> parse<01:51:44.159> it.<01:51:44.400> It's" + }, + { + "start": 6704.629, + "duration": 0.0, + "text": "automatically to parse it. It's" + }, + { + "start": 6704.639, + "duration": 0.0, + "text": "automatically to parse it. It's potentially,<01:51:45.199> you<01:51:45.280> know,<01:51:45.520> trying<01:51:45.679> to<01:51:45.840> match" + }, + { + "start": 6706.07, + "duration": 0.0, + "text": "potentially, you know, trying to match" + }, + { + "start": 6706.08, + "duration": 0.0, + "text": "potentially, you know, trying to match file<01:51:46.400> paths.<01:51:46.639> I<01:51:46.880> might<01:51:46.960> have<01:51:47.119> like<01:51:47.280> forward" + }, + { + "start": 6707.51, + "duration": 0.0, + "text": "file paths. I might have like forward" + }, + { + "start": 6707.52, + "duration": 0.0, + "text": "file paths. I might have like forward slashes,<01:51:47.920> backslashes,<01:51:48.560> whatever.<01:51:48.960> There's" + }, + { + "start": 6709.109, + "duration": 0.0, + "text": "slashes, backslashes, whatever. There's" + }, + { + "start": 6709.119, + "duration": 0.0, + "text": "slashes, backslashes, whatever. There's like<01:51:49.280> all<01:51:49.440> of<01:51:49.520> this<01:51:49.679> inner<01:51:50.000> tooling<01:51:50.639> that<01:51:50.880> can" + }, + { + "start": 6711.03, + "duration": 0.0, + "text": "like all of this inner tooling that can" + }, + { + "start": 6711.04, + "duration": 0.0, + "text": "like all of this inner tooling that can go<01:51:51.280> wrong<01:51:51.920> and<01:51:52.239> it<01:51:52.480> kind<01:51:52.560> of<01:51:52.639> gets" + }, + { + "start": 6713.189, + "duration": 0.0, + "text": "go wrong and it kind of gets" + }, + { + "start": 6713.199, + "duration": 0.0, + "text": "go wrong and it kind of gets encapsulated<01:51:53.679> in<01:51:53.840> this<01:51:54.000> black<01:51:54.239> box<01:51:54.639> that" + }, + { + "start": 6714.87, + "duration": 0.0, + "text": "encapsulated in this black box that" + }, + { + "start": 6714.88, + "duration": 0.0, + "text": "encapsulated in this black box that feels<01:51:55.119> like<01:51:55.360> magic,<01:51:55.760> right?<01:51:56.000> it's<01:51:56.159> like,<01:51:56.320> oh," + }, + { + "start": 6716.55, + "duration": 0.0, + "text": "feels like magic, right? it's like, oh," + }, + { + "start": 6716.56, + "duration": 0.0, + "text": "feels like magic, right? it's like, oh, you<01:51:56.639> know,<01:51:56.800> I<01:51:56.960> don't<01:51:57.040> I<01:51:57.199> don't<01:51:57.280> want<01:51:57.360> to<01:51:57.440> I" + }, + { + "start": 6717.589, + "duration": 0.0, + "text": "you know, I don't I don't want to I" + }, + { + "start": 6717.599, + "duration": 0.0, + "text": "you know, I don't I don't want to I don't<01:51:57.679> know<01:51:57.840> anything<01:51:58.080> about<01:51:58.239> that<01:51:58.480> as<01:51:58.639> a" + }, + { + "start": 6718.79, + "duration": 0.0, + "text": "don't know anything about that as a" + }, + { + "start": 6718.8, + "duration": 0.0, + "text": "don't know anything about that as a user.<01:51:59.199> So,<01:51:59.599> is<01:51:59.760> there<01:51:59.840> anything<01:52:00.080> you<01:52:00.239> could<01:52:00.320> do" + }, + { + "start": 6720.39, + "duration": 0.0, + "text": "user. So, is there anything you could do" + }, + { + "start": 6720.4, + "duration": 0.0, + "text": "user. So, is there anything you could do to<01:52:00.560> make<01:52:00.719> that<01:52:00.880> better,<01:52:01.119> do<01:52:01.199> you<01:52:01.280> think?" + }, + { + "start": 6722.229, + "duration": 0.0, + "text": "to make that better, do you think?" + }, + { + "start": 6722.239, + "duration": 0.0, + "text": "to make that better, do you think? >> Um,<01:52:02.719> yeah.<01:52:02.960> I<01:52:03.199> think<01:52:03.360> I<01:52:03.599> think<01:52:03.679> a<01:52:03.920> lot<01:52:04.000> of<01:52:04.080> that" + }, + { + "start": 6724.31, + "duration": 0.0, + "text": ">> Um, yeah. I think I think a lot of that" + }, + { + "start": 6724.32, + "duration": 0.0, + "text": ">> Um, yeah. I think I think a lot of that is<01:52:04.480> just<01:52:04.639> like<01:52:04.719> a<01:52:04.880> UI<01:52:05.199> design<01:52:05.520> problem<01:52:05.760> and" + }, + { + "start": 6725.99, + "duration": 0.0, + "text": "is just like a UI design problem and" + }, + { + "start": 6726.0, + "duration": 0.0, + "text": "is just like a UI design problem and like<01:52:06.080> a<01:52:06.239> visualization<01:52:06.800> problem.<01:52:07.119> So<01:52:07.280> it's" + }, + { + "start": 6727.51, + "duration": 0.0, + "text": "like a visualization problem. So it's" + }, + { + "start": 6727.52, + "duration": 0.0, + "text": "like a visualization problem. So it's like<01:52:07.679> one<01:52:07.920> thing<01:52:08.080> that<01:52:08.239> we<01:52:08.400> do<01:52:08.480> in<01:52:08.639> the" + }, + { + "start": 6728.709, + "duration": 0.0, + "text": "like one thing that we do in the" + }, + { + "start": 6728.719, + "duration": 0.0, + "text": "like one thing that we do in the debugger<01:52:09.119> which<01:52:10.159> like<01:52:10.320> I<01:52:10.560> don't<01:52:10.719> think" + }, + { + "start": 6730.79, + "duration": 0.0, + "text": "debugger which like I don't think" + }, + { + "start": 6730.8, + "duration": 0.0, + "text": "debugger which like I don't think anybody<01:52:11.199> does<01:52:11.520> but<01:52:11.840> like<01:52:12.320> what<01:52:12.480> tends<01:52:12.719> to" + }, + { + "start": 6732.87, + "duration": 0.0, + "text": "anybody does but like what tends to" + }, + { + "start": 6732.88, + "duration": 0.0, + "text": "anybody does but like what tends to happen<01:52:13.040> if<01:52:13.199> you<01:52:13.360> put<01:52:14.239> like<01:52:14.480> in<01:52:14.639> Visual<01:52:14.960> Studio" + }, + { + "start": 6735.189, + "duration": 0.0, + "text": "happen if you put like in Visual Studio" + }, + { + "start": 6735.199, + "duration": 0.0, + "text": "happen if you put like in Visual Studio if<01:52:15.360> you<01:52:15.440> put<01:52:15.599> a<01:52:15.679> breakpoint<01:52:16.080> on<01:52:16.239> a<01:52:16.400> line<01:52:17.840> if" + }, + { + "start": 6738.31, + "duration": 0.0, + "text": "if you put a breakpoint on a line if" + }, + { + "start": 6738.32, + "duration": 0.0, + "text": "if you put a breakpoint on a line if there's<01:52:18.639> no<01:52:18.880> line<01:52:19.119> info<01:52:19.440> like<01:52:19.599> that<01:52:19.760> you're" + }, + { + "start": 6739.91, + "duration": 0.0, + "text": "there's no line info like that you're" + }, + { + "start": 6739.92, + "duration": 0.0, + "text": "there's no line info like that you're not<01:52:20.080> running<01:52:20.239> a<01:52:20.480> program<01:52:20.639> or<01:52:20.960> something<01:52:22.239> um<01:52:23.040> uh" + }, + { + "start": 6743.43, + "duration": 0.0, + "text": "not running a program or something um uh" + }, + { + "start": 6743.44, + "duration": 0.0, + "text": "not running a program or something um uh it'll<01:52:23.840> like<01:52:24.159> just<01:52:24.560> go<01:52:24.719> to<01:52:24.880> the<01:52:24.960> line<01:52:25.199> like" + }, + { + "start": 6745.43, + "duration": 0.0, + "text": "it'll like just go to the line like" + }, + { + "start": 6745.44, + "duration": 0.0, + "text": "it'll like just go to the line like there<01:52:25.520> will<01:52:25.679> be<01:52:25.760> a<01:52:25.840> breakpoint<01:52:26.480> shows<01:52:26.719> up<01:52:26.880> on" + }, + { + "start": 6746.95, + "duration": 0.0, + "text": "there will be a breakpoint shows up on" + }, + { + "start": 6746.96, + "duration": 0.0, + "text": "there will be a breakpoint shows up on the<01:52:27.119> line<01:52:27.440> done.<01:52:28.639> Then<01:52:28.880> you<01:52:29.119> like<01:52:29.840> run<01:52:30.080> the" + }, + { + "start": 6750.31, + "duration": 0.0, + "text": "the line done. Then you like run the" + }, + { + "start": 6750.32, + "duration": 0.0, + "text": "the line done. Then you like run the program<01:52:30.560> and<01:52:30.800> you'll<01:52:31.040> notice<01:52:31.280> your" + }, + { + "start": 6751.43, + "duration": 0.0, + "text": "program and you'll notice your" + }, + { + "start": 6751.44, + "duration": 0.0, + "text": "program and you'll notice your breakpoints<01:52:32.000> like<01:52:33.119> like<01:52:33.360> it<01:52:33.599> snaps<01:52:34.000> or" + }, + { + "start": 6754.149, + "duration": 0.0, + "text": "breakpoints like like it snaps or" + }, + { + "start": 6754.159, + "duration": 0.0, + "text": "breakpoints like like it snaps or whatever.<01:52:34.800> And<01:52:35.599> the<01:52:35.840> reason<01:52:36.000> why<01:52:36.159> is<01:52:36.400> because" + }, + { + "start": 6756.55, + "duration": 0.0, + "text": "whatever. And the reason why is because" + }, + { + "start": 6756.56, + "duration": 0.0, + "text": "whatever. And the reason why is because like<01:52:36.960> not<01:52:37.199> every<01:52:37.440> line<01:52:37.840> has<01:52:38.400> source<01:52:38.719> code<01:52:39.199> uh" + }, + { + "start": 6759.27, + "duration": 0.0, + "text": "like not every line has source code uh" + }, + { + "start": 6759.28, + "duration": 0.0, + "text": "like not every line has source code uh or<01:52:39.679> or<01:52:39.679> or<01:52:39.840> sorry<01:52:40.159> not<01:52:40.320> every<01:52:40.480> source<01:52:40.800> code" + }, + { + "start": 6760.95, + "duration": 0.0, + "text": "or or or sorry not every source code" + }, + { + "start": 6760.96, + "duration": 0.0, + "text": "or or or sorry not every source code line<01:52:41.199> has<01:52:41.440> actual<01:52:41.840> code<01:52:42.080> which<01:52:42.400> which<01:52:42.560> would" + }, + { + "start": 6762.709, + "duration": 0.0, + "text": "line has actual code which which would" + }, + { + "start": 6762.719, + "duration": 0.0, + "text": "line has actual code which which would be<01:52:42.880> machine<01:52:43.199> code<01:52:43.440> instructions.<01:52:44.480> Um<01:52:45.440> and<01:52:45.679> so" + }, + { + "start": 6766.149, + "duration": 0.0, + "text": "be machine code instructions. Um and so" + }, + { + "start": 6766.159, + "duration": 0.0, + "text": "be machine code instructions. Um and so like<01:52:46.639> stuff<01:52:46.960> like<01:52:47.119> that<01:52:47.440> can<01:52:47.599> be<01:52:47.920> like<01:52:48.320> it's" + }, + { + "start": 6768.629, + "duration": 0.0, + "text": "like stuff like that can be like it's" + }, + { + "start": 6768.639, + "duration": 0.0, + "text": "like stuff like that can be like it's really<01:52:49.280> kind<01:52:49.520> of<01:52:49.679> interesting<01:52:50.000> how<01:52:50.239> it's<01:52:50.480> like" + }, + { + "start": 6770.709, + "duration": 0.0, + "text": "really kind of interesting how it's like" + }, + { + "start": 6770.719, + "duration": 0.0, + "text": "really kind of interesting how it's like been<01:52:50.960> accepted<01:52:51.280> that<01:52:51.520> it's<01:52:51.760> like<01:52:52.480> that's<01:52:52.800> just" + }, + { + "start": 6773.03, + "duration": 0.0, + "text": "been accepted that it's like that's just" + }, + { + "start": 6773.04, + "duration": 0.0, + "text": "been accepted that it's like that's just a<01:52:53.360> way<01:52:53.440> that<01:52:53.679> it<01:52:53.840> works<01:52:54.000> and<01:52:54.239> everyone's<01:52:54.560> like" + }, + { + "start": 6774.709, + "duration": 0.0, + "text": "a way that it works and everyone's like" + }, + { + "start": 6774.719, + "duration": 0.0, + "text": "a way that it works and everyone's like oh<01:52:54.960> if<01:52:55.119> it<01:52:55.280> snaps<01:52:55.679> that<01:52:55.840> means<01:52:56.000> it<01:52:56.159> found<01:52:56.320> the" + }, + { + "start": 6776.47, + "duration": 0.0, + "text": "oh if it snaps that means it found the" + }, + { + "start": 6776.48, + "duration": 0.0, + "text": "oh if it snaps that means it found the line<01:52:56.639> info.<01:52:57.040> It's<01:52:57.199> like<01:52:57.360> what<01:52:57.599> like<01:52:57.760> what<01:52:57.920> does" + }, + { + "start": 6777.99, + "duration": 0.0, + "text": "line info. It's like what like what does" + }, + { + "start": 6778.0, + "duration": 0.0, + "text": "line info. It's like what like what does that<01:52:58.159> mean?<01:52:58.400> So<01:52:58.800> I<01:52:59.040> think<01:52:59.199> like<01:52:59.679> um<01:53:00.159> in<01:53:00.400> the<01:53:00.560> RAD" + }, + { + "start": 6780.87, + "duration": 0.0, + "text": "that mean? So I think like um in the RAD" + }, + { + "start": 6780.88, + "duration": 0.0, + "text": "that mean? So I think like um in the RAD debugger<01:53:01.360> I<01:53:01.520> mean<01:53:01.679> obviously<01:53:01.920> it's<01:53:02.159> early<01:53:02.400> so" + }, + { + "start": 6782.55, + "duration": 0.0, + "text": "debugger I mean obviously it's early so" + }, + { + "start": 6782.56, + "duration": 0.0, + "text": "debugger I mean obviously it's early so a<01:53:02.719> lot<01:53:02.800> of<01:53:02.880> it's<01:53:03.119> not<01:53:03.280> like<01:53:03.599> done<01:53:03.760> or" + }, + { + "start": 6784.07, + "duration": 0.0, + "text": "a lot of it's not like done or" + }, + { + "start": 6784.08, + "duration": 0.0, + "text": "a lot of it's not like done or documented<01:53:04.560> or<01:53:04.719> whatever<01:53:04.960> but<01:53:05.199> I've<01:53:05.520> tried<01:53:05.679> to" + }, + { + "start": 6785.83, + "duration": 0.0, + "text": "documented or whatever but I've tried to" + }, + { + "start": 6785.84, + "duration": 0.0, + "text": "documented or whatever but I've tried to visualize<01:53:07.040> a<01:53:07.360> lot<01:53:07.520> more<01:53:08.000> information<01:53:08.400> about" + }, + { + "start": 6788.55, + "duration": 0.0, + "text": "visualize a lot more information about" + }, + { + "start": 6788.56, + "duration": 0.0, + "text": "visualize a lot more information about what<01:53:08.719> the<01:53:08.880> debugger<01:53:09.360> knows<01:53:09.599> about<01:53:10.239> than<01:53:10.400> what" + }, + { + "start": 6790.629, + "duration": 0.0, + "text": "what the debugger knows about than what" + }, + { + "start": 6790.639, + "duration": 0.0, + "text": "what the debugger knows about than what other<01:53:10.800> debuggers<01:53:11.280> tend<01:53:11.360> to<01:53:11.520> do.<01:53:11.679> So<01:53:11.920> I've" + }, + { + "start": 6792.229, + "duration": 0.0, + "text": "other debuggers tend to do. So I've" + }, + { + "start": 6792.239, + "duration": 0.0, + "text": "other debuggers tend to do. So I've explicitly<01:53:12.800> visualize<01:53:13.199> you<01:53:13.440> probably<01:53:13.920> a<01:53:14.080> lot" + }, + { + "start": 6794.149, + "duration": 0.0, + "text": "explicitly visualize you probably a lot" + }, + { + "start": 6794.159, + "duration": 0.0, + "text": "explicitly visualize you probably a lot of<01:53:14.239> people<01:53:14.400> ask<01:53:14.560> about<01:53:14.719> the<01:53:14.880> colored<01:53:15.199> gutters" + }, + { + "start": 6795.589, + "duration": 0.0, + "text": "of people ask about the colored gutters" + }, + { + "start": 6795.599, + "duration": 0.0, + "text": "of people ask about the colored gutters on<01:53:15.760> the<01:53:15.920> side<01:53:16.000> of<01:53:16.080> the<01:53:16.239> source<01:53:16.480> view.<01:53:16.880> That's" + }, + { + "start": 6797.03, + "duration": 0.0, + "text": "on the side of the source view. That's" + }, + { + "start": 6797.04, + "duration": 0.0, + "text": "on the side of the source view. That's the<01:53:17.280> line<01:53:17.520> info.<01:53:18.639> Also<01:53:18.960> what<01:53:19.199> happens<01:53:19.440> is<01:53:19.679> like" + }, + { + "start": 6799.83, + "duration": 0.0, + "text": "the line info. Also what happens is like" + }, + { + "start": 6799.84, + "duration": 0.0, + "text": "the line info. Also what happens is like I<01:53:20.000> don't<01:53:20.159> reposition<01:53:20.639> breakpoints.<01:53:21.760> I<01:53:22.000> will" + }, + { + "start": 6802.149, + "duration": 0.0, + "text": "I don't reposition breakpoints. I will" + }, + { + "start": 6802.159, + "duration": 0.0, + "text": "I don't reposition breakpoints. I will if<01:53:22.320> you<01:53:22.480> put<01:53:22.560> a<01:53:22.639> breakpoint<01:53:22.960> on<01:53:23.119> a<01:53:23.280> line<01:53:23.440> I'll" + }, + { + "start": 6803.75, + "duration": 0.0, + "text": "if you put a breakpoint on a line I'll" + }, + { + "start": 6803.76, + "duration": 0.0, + "text": "if you put a breakpoint on a line I'll draw<01:53:24.000> and<01:53:24.159> it<01:53:24.400> and<01:53:24.639> there's<01:53:24.880> no<01:53:25.360> code<01:53:25.599> on<01:53:25.760> that" + }, + { + "start": 6805.91, + "duration": 0.0, + "text": "draw and it and there's no code on that" + }, + { + "start": 6805.92, + "duration": 0.0, + "text": "draw and it and there's no code on that line<01:53:26.159> but<01:53:26.320> there<01:53:26.480> is<01:53:26.639> some<01:53:26.800> code<01:53:27.040> on<01:53:27.280> some" + }, + { + "start": 6807.589, + "duration": 0.0, + "text": "line but there is some code on some" + }, + { + "start": 6807.599, + "duration": 0.0, + "text": "line but there is some code on some subsequent<01:53:28.159> line<01:53:29.199> general<01:53:29.599> rule<01:53:30.080> would<01:53:30.320> be" + }, + { + "start": 6810.47, + "duration": 0.0, + "text": "subsequent line general rule would be" + }, + { + "start": 6810.48, + "duration": 0.0, + "text": "subsequent line general rule would be like<01:53:30.800> okay<01:53:31.040> let's<01:53:31.280> make<01:53:31.440> the<01:53:31.679> code<01:53:31.920> hit<01:53:32.159> the" + }, + { + "start": 6812.39, + "duration": 0.0, + "text": "like okay let's make the code hit the" + }, + { + "start": 6812.4, + "duration": 0.0, + "text": "like okay let's make the code hit the next<01:53:32.960> line<01:53:33.199> with<01:53:33.520> code<01:53:34.159> um<01:53:34.320> I<01:53:34.480> just<01:53:34.639> visualize" + }, + { + "start": 6815.03, + "duration": 0.0, + "text": "next line with code um I just visualize" + }, + { + "start": 6815.04, + "duration": 0.0, + "text": "next line with code um I just visualize that<01:53:35.280> in<01:53:35.440> the<01:53:35.599> UI<01:53:35.920> directly<01:53:36.960> um<01:53:37.199> and<01:53:37.360> so<01:53:37.440> I" + }, + { + "start": 6817.589, + "duration": 0.0, + "text": "that in the UI directly um and so I" + }, + { + "start": 6817.599, + "duration": 0.0, + "text": "that in the UI directly um and so I think<01:53:37.679> it's<01:53:37.840> a<01:53:38.000> visualization<01:53:38.560> problem<01:53:38.960> and<01:53:39.119> a" + }, + { + "start": 6819.27, + "duration": 0.0, + "text": "think it's a visualization problem and a" + }, + { + "start": 6819.28, + "duration": 0.0, + "text": "think it's a visualization problem and a UI<01:53:39.679> problem<01:53:40.080> you're<01:53:40.320> right<01:53:40.480> that<01:53:40.639> a<01:53:40.800> lot<01:53:40.880> of" + }, + { + "start": 6820.95, + "duration": 0.0, + "text": "UI problem you're right that a lot of" + }, + { + "start": 6820.96, + "duration": 0.0, + "text": "UI problem you're right that a lot of stuff<01:53:41.119> can<01:53:41.280> go<01:53:41.440> wrong" + }, + { + "start": 6823.03, + "duration": 0.0, + "text": "stuff can go wrong" + }, + { + "start": 6823.04, + "duration": 0.0, + "text": "stuff can go wrong a<01:53:43.280> lot<01:53:43.360> of<01:53:43.520> that<01:53:44.239> is<01:53:44.639> not<01:53:44.880> necessary<01:53:45.599> I<01:53:45.760> think" + }, + { + "start": 6825.91, + "duration": 0.0, + "text": "a lot of that is not necessary I think" + }, + { + "start": 6825.92, + "duration": 0.0, + "text": "a lot of that is not necessary I think like<01:53:46.080> the<01:53:46.320> file<01:53:46.560> paths<01:53:47.119> good<01:53:47.360> example<01:53:47.840> it's" + }, + { + "start": 6828.07, + "duration": 0.0, + "text": "like the file paths good example it's" + }, + { + "start": 6828.08, + "duration": 0.0, + "text": "like the file paths good example it's like<01:53:48.560> there's<01:53:48.880> and<01:53:49.199> you<01:53:49.360> know<01:53:49.679> not<01:53:49.920> to<01:53:50.080> blame" + }, + { + "start": 6830.229, + "duration": 0.0, + "text": "like there's and you know not to blame" + }, + { + "start": 6830.239, + "duration": 0.0, + "text": "like there's and you know not to blame anyone<01:53:50.560> because<01:53:50.719> I've<01:53:50.880> had<01:53:50.960> bugs<01:53:51.199> where<01:53:51.280> I" + }, + { + "start": 6831.51, + "duration": 0.0, + "text": "anyone because I've had bugs where I" + }, + { + "start": 6831.52, + "duration": 0.0, + "text": "anyone because I've had bugs where I don't<01:53:51.679> treat<01:53:51.920> paths<01:53:52.239> correctly,<01:53:52.560> but<01:53:52.800> it's" + }, + { + "start": 6832.95, + "duration": 0.0, + "text": "don't treat paths correctly, but it's" + }, + { + "start": 6832.96, + "duration": 0.0, + "text": "don't treat paths correctly, but it's like,<01:53:53.360> you<01:53:53.520> know,<01:53:54.320> back<01:53:54.480> slash<01:53:55.040> slash<01:53:56.400> look," + }, + { + "start": 6836.709, + "duration": 0.0, + "text": "like, you know, back slash slash look," + }, + { + "start": 6836.719, + "duration": 0.0, + "text": "like, you know, back slash slash look, you<01:53:56.880> can<01:53:57.040> figure<01:53:57.119> it<01:53:57.280> out.<01:53:57.440> Like<01:53:57.599> the<01:53:57.760> debugger" + }, + { + "start": 6838.07, + "duration": 0.0, + "text": "you can figure it out. Like the debugger" + }, + { + "start": 6838.08, + "duration": 0.0, + "text": "you can figure it out. Like the debugger should<01:53:58.159> be<01:53:58.239> able<01:53:58.400> to<01:53:58.480> figure<01:53:58.560> it<01:53:58.639> out.<01:53:58.880> You" + }, + { + "start": 6838.95, + "duration": 0.0, + "text": "should be able to figure it out. You" + }, + { + "start": 6838.96, + "duration": 0.0, + "text": "should be able to figure it out. You know<01:53:59.040> what<01:53:59.199> I<01:53:59.280> mean?<01:53:59.440> Not<01:53:59.599> not<01:53:59.840> the<01:54:00.000> user.<01:54:00.239> The" + }, + { + "start": 6840.39, + "duration": 0.0, + "text": "know what I mean? Not not the user. The" + }, + { + "start": 6840.4, + "duration": 0.0, + "text": "know what I mean? Not not the user. The user<01:54:00.719> shouldn't<01:54:00.960> have<01:54:01.040> to<01:54:01.119> care,<01:54:01.280> but<01:54:01.440> the" + }, + { + "start": 6841.589, + "duration": 0.0, + "text": "user shouldn't have to care, but the" + }, + { + "start": 6841.599, + "duration": 0.0, + "text": "user shouldn't have to care, but the debugger<01:54:01.920> should<01:54:02.080> be<01:54:02.159> able<01:54:02.239> to<01:54:02.320> figure<01:54:02.480> it" + }, + { + "start": 6842.629, + "duration": 0.0, + "text": "debugger should be able to figure it" + }, + { + "start": 6842.639, + "duration": 0.0, + "text": "debugger should be able to figure it out.<01:54:03.199> So,<01:54:04.080> I<01:54:04.320> guess<01:54:04.400> that's<01:54:04.560> what<01:54:04.719> I<01:54:04.880> would" + }, + { + "start": 6844.95, + "duration": 0.0, + "text": "out. So, I guess that's what I would" + }, + { + "start": 6844.96, + "duration": 0.0, + "text": "out. So, I guess that's what I would say.<01:54:05.199> Like<01:54:05.360> there's<01:54:05.520> a<01:54:05.679> lot<01:54:05.760> of<01:54:05.840> room<01:54:06.000> for" + }, + { + "start": 6846.149, + "duration": 0.0, + "text": "say. Like there's a lot of room for" + }, + { + "start": 6846.159, + "duration": 0.0, + "text": "say. Like there's a lot of room for visual.<01:54:06.560> Another<01:54:06.880> another<01:54:07.280> spot<01:54:07.520> of" + }, + { + "start": 6847.669, + "duration": 0.0, + "text": "visual. Another another spot of" + }, + { + "start": 6847.679, + "duration": 0.0, + "text": "visual. Another another spot of visualization,<01:54:08.239> for<01:54:08.239> example,<01:54:08.639> would<01:54:08.880> be" + }, + { + "start": 6849.03, + "duration": 0.0, + "text": "visualization, for example, would be" + }, + { + "start": 6849.04, + "duration": 0.0, + "text": "visualization, for example, would be like" + }, + { + "start": 6850.55, + "duration": 0.0, + "text": "like" + }, + { + "start": 6850.56, + "duration": 0.0, + "text": "like other<01:54:10.800> debuggers<01:54:11.280> don't<01:54:11.360> tend<01:54:11.520> to<01:54:11.679> show<01:54:11.840> where" + }, + { + "start": 6852.07, + "duration": 0.0, + "text": "other debuggers don't tend to show where" + }, + { + "start": 6852.08, + "duration": 0.0, + "text": "other debuggers don't tend to show where other<01:54:12.320> threads<01:54:12.719> are.<01:54:13.119> Like<01:54:13.920> it's<01:54:14.159> just<01:54:14.320> where" + }, + { + "start": 6854.47, + "duration": 0.0, + "text": "other threads are. Like it's just where" + }, + { + "start": 6854.48, + "duration": 0.0, + "text": "other threads are. Like it's just where the<01:54:14.639> selected<01:54:14.960> thread<01:54:15.199> is<01:54:15.520> for<01:54:15.760> some<01:54:15.920> reason." + }, + { + "start": 6856.149, + "duration": 0.0, + "text": "the selected thread is for some reason." + }, + { + "start": 6856.159, + "duration": 0.0, + "text": "the selected thread is for some reason. like<01:54:17.040> um<01:54:17.280> I<01:54:17.599> just<01:54:17.760> try<01:54:17.920> to<01:54:18.080> show<01:54:19.040> all<01:54:19.280> the" + }, + { + "start": 6859.43, + "duration": 0.0, + "text": "like um I just try to show all the" + }, + { + "start": 6859.44, + "duration": 0.0, + "text": "like um I just try to show all the threads<01:54:19.679> that<01:54:19.920> are<01:54:20.000> in<01:54:20.560> active<01:54:20.960> view.<01:54:21.440> So<01:54:21.760> I" + }, + { + "start": 6861.99, + "duration": 0.0, + "text": "threads that are in active view. So I" + }, + { + "start": 6862.0, + "duration": 0.0, + "text": "threads that are in active view. So I don't<01:54:22.080> know<01:54:22.239> there's<01:54:22.480> lots<01:54:22.639> of<01:54:22.800> opportunities" + }, + { + "start": 6863.109, + "duration": 0.0, + "text": "don't know there's lots of opportunities" + }, + { + "start": 6863.119, + "duration": 0.0, + "text": "don't know there's lots of opportunities for<01:54:23.360> visualizations<01:54:23.920> and<01:54:24.159> to<01:54:24.320> just<01:54:24.480> improve" + }, + { + "start": 6864.79, + "duration": 0.0, + "text": "for visualizations and to just improve" + }, + { + "start": 6864.8, + "duration": 0.0, + "text": "for visualizations and to just improve it<01:54:25.119> basically.<01:54:26.400> Um<01:54:27.440> yeah<01:54:27.760> I<01:54:27.920> think<01:54:28.080> that's<01:54:28.239> the" + }, + { + "start": 6868.47, + "duration": 0.0, + "text": "it basically. Um yeah I think that's the" + }, + { + "start": 6868.48, + "duration": 0.0, + "text": "it basically. Um yeah I think that's the direction<01:54:28.719> that<01:54:28.960> you<01:54:29.119> have<01:54:29.199> to<01:54:29.280> go<01:54:29.440> for<01:54:29.679> that." + }, + { + "start": 6870.07, + "duration": 0.0, + "text": "direction that you have to go for that." + }, + { + "start": 6870.08, + "duration": 0.0, + "text": "direction that you have to go for that. So" + }, + { + "start": 6873.84, + "duration": 0.0, + "text": ">> so<01:54:34.080> many<01:54:34.239> questions<01:54:34.960> uh" + }, + { + "start": 6876.55, + "duration": 0.0, + "text": ">> so many questions uh" + }, + { + "start": 6876.56, + "duration": 0.0, + "text": ">> so many questions uh what<01:54:36.880> kind<01:54:37.199> of" + }, + { + "start": 6878.87, + "duration": 0.0, + "text": "what kind of" + }, + { + "start": 6878.88, + "duration": 0.0, + "text": "what kind of cash<01:54:39.280> eviction<01:54:39.760> strategy<01:54:40.239> are<01:54:40.480> you<01:54:40.639> using<01:54:40.880> for" + }, + { + "start": 6881.109, + "duration": 0.0, + "text": "cash eviction strategy are you using for" + }, + { + "start": 6881.119, + "duration": 0.0, + "text": "cash eviction strategy are you using for the<01:54:41.679> hash<01:54:42.080> to<01:54:42.639> data<01:54:43.199> cache?<01:54:43.520> Are<01:54:43.679> you<01:54:43.760> using" + }, + { + "start": 6883.99, + "duration": 0.0, + "text": "the hash to data cache? Are you using" + }, + { + "start": 6884.0, + "duration": 0.0, + "text": "the hash to data cache? Are you using like<01:54:44.159> the<01:54:44.320> least<01:54:44.560> recently<01:54:45.040> used<01:54:45.920> Um<01:54:46.639> so<01:54:47.760> uh" + }, + { + "start": 6890.8, + "duration": 0.0, + "text": "basically<01:54:51.280> there's<01:54:51.679> like<01:54:51.920> there's<01:54:52.159> a<01:54:52.320> few" + }, + { + "start": 6892.47, + "duration": 0.0, + "text": "basically there's like there's a few" + }, + { + "start": 6892.48, + "duration": 0.0, + "text": "basically there's like there's a few different<01:54:52.880> sorts<01:54:53.199> of<01:54:53.520> reference<01:54:53.920> counters<01:54:54.320> in" + }, + { + "start": 6894.47, + "duration": 0.0, + "text": "different sorts of reference counters in" + }, + { + "start": 6894.48, + "duration": 0.0, + "text": "different sorts of reference counters in the<01:54:54.639> system.<01:54:55.520> One<01:54:55.679> is<01:54:55.920> if<01:54:56.159> like<01:54:56.480> that<01:54:56.719> keying" + }, + { + "start": 6897.109, + "duration": 0.0, + "text": "the system. One is if like that keying" + }, + { + "start": 6897.119, + "duration": 0.0, + "text": "the system. One is if like that keying mechanism<01:54:57.520> that<01:54:57.760> I<01:54:57.920> spoke<01:54:58.000> about<01:54:58.159> where<01:54:58.320> it's" + }, + { + "start": 6898.47, + "duration": 0.0, + "text": "mechanism that I spoke about where it's" + }, + { + "start": 6898.48, + "duration": 0.0, + "text": "mechanism that I spoke about where it's like<01:54:58.560> you've<01:54:58.719> got<01:54:58.800> a<01:54:58.880> key<01:54:59.040> it<01:54:59.199> refers<01:54:59.360> to<01:54:59.520> a" + }, + { + "start": 6899.669, + "duration": 0.0, + "text": "like you've got a key it refers to a" + }, + { + "start": 6899.679, + "duration": 0.0, + "text": "like you've got a key it refers to a history<01:54:59.840> of<01:55:00.000> hashes.<01:55:01.040> Every<01:55:01.360> key<01:55:01.599> that's" + }, + { + "start": 6901.99, + "duration": 0.0, + "text": "history of hashes. Every key that's" + }, + { + "start": 6902.0, + "duration": 0.0, + "text": "history of hashes. Every key that's touching<01:55:02.480> a<01:55:02.800> hash<01:55:03.679> um<01:55:03.920> that's<01:55:04.239> like<01:55:04.960> that" + }, + { + "start": 6905.27, + "duration": 0.0, + "text": "touching a hash um that's like that" + }, + { + "start": 6905.28, + "duration": 0.0, + "text": "touching a hash um that's like that implies<01:55:05.679> a<01:55:05.840> reference<01:55:06.159> count.<01:55:06.880> And<01:55:07.119> so<01:55:07.280> if<01:55:07.520> the" + }, + { + "start": 6907.669, + "duration": 0.0, + "text": "implies a reference count. And so if the" + }, + { + "start": 6907.679, + "duration": 0.0, + "text": "implies a reference count. And so if the reference<01:55:08.000> count<01:55:08.080> is<01:55:08.239> ever<01:55:08.480> non<01:55:08.639> zero<01:55:09.119> that" + }, + { + "start": 6909.35, + "duration": 0.0, + "text": "reference count is ever non zero that" + }, + { + "start": 6909.36, + "duration": 0.0, + "text": "reference count is ever non zero that hash<01:55:09.599> is<01:55:09.760> going<01:55:09.840> to<01:55:10.000> stay<01:55:10.159> there.<01:55:10.800> Um<01:55:11.360> now<01:55:11.920> you" + }, + { + "start": 6912.149, + "duration": 0.0, + "text": "hash is going to stay there. Um now you" + }, + { + "start": 6912.159, + "duration": 0.0, + "text": "hash is going to stay there. Um now you you<01:55:13.040> it<01:55:13.280> only<01:55:13.440> does<01:55:13.599> that<01:55:13.760> to<01:55:13.920> some<01:55:14.159> extent.<01:55:14.480> So" + }, + { + "start": 6914.629, + "duration": 0.0, + "text": "you it only does that to some extent. So" + }, + { + "start": 6914.639, + "duration": 0.0, + "text": "you it only does that to some extent. So it'll<01:55:14.960> start<01:55:15.119> throwing<01:55:15.360> away<01:55:15.599> things<01:55:15.840> that" + }, + { + "start": 6915.99, + "duration": 0.0, + "text": "it'll start throwing away things that" + }, + { + "start": 6916.0, + "duration": 0.0, + "text": "it'll start throwing away things that are<01:55:16.080> old<01:55:16.320> in<01:55:16.560> history,<01:55:17.280> but<01:55:17.520> it'll<01:55:17.840> generally" + }, + { + "start": 6918.47, + "duration": 0.0, + "text": "are old in history, but it'll generally" + }, + { + "start": 6918.48, + "duration": 0.0, + "text": "are old in history, but it'll generally it'll<01:55:18.880> keep<01:55:19.119> like<01:55:19.360> the<01:55:19.599> two<01:55:19.840> most<01:55:20.000> recent" + }, + { + "start": 6920.31, + "duration": 0.0, + "text": "it'll keep like the two most recent" + }, + { + "start": 6920.32, + "duration": 0.0, + "text": "it'll keep like the two most recent states<01:55:20.560> at<01:55:20.719> the<01:55:20.800> very<01:55:21.040> least.<01:55:21.760> Um,<01:55:22.239> but<01:55:22.480> once" + }, + { + "start": 6922.709, + "duration": 0.0, + "text": "states at the very least. Um, but once" + }, + { + "start": 6922.719, + "duration": 0.0, + "text": "states at the very least. Um, but once you<01:55:22.880> know<01:55:23.040> that<01:55:23.280> and<01:55:23.440> then<01:55:23.520> the<01:55:23.679> other<01:55:23.840> the" + }, + { + "start": 6923.99, + "duration": 0.0, + "text": "you know that and then the other the" + }, + { + "start": 6924.0, + "duration": 0.0, + "text": "you know that and then the other the other<01:55:24.159> ref<01:55:24.400> count<01:55:24.639> that's<01:55:24.800> in<01:55:24.880> the<01:55:24.960> system<01:55:25.119> is" + }, + { + "start": 6925.35, + "duration": 0.0, + "text": "other ref count that's in the system is" + }, + { + "start": 6925.36, + "duration": 0.0, + "text": "other ref count that's in the system is if<01:55:25.520> someone's<01:55:25.840> accessing<01:55:26.159> the<01:55:26.320> data,<01:55:26.639> right?" + }, + { + "start": 6926.95, + "duration": 0.0, + "text": "if someone's accessing the data, right?" + }, + { + "start": 6926.96, + "duration": 0.0, + "text": "if someone's accessing the data, right? So<01:55:27.119> it's<01:55:27.360> like<01:55:27.520> if<01:55:27.760> I've<01:55:29.040> I<01:55:29.280> didn't<01:55:29.440> get<01:55:29.520> into" + }, + { + "start": 6929.669, + "duration": 0.0, + "text": "So it's like if I've I didn't get into" + }, + { + "start": 6929.679, + "duration": 0.0, + "text": "So it's like if I've I didn't get into the<01:55:29.840> code<01:55:30.080> really,<01:55:30.320> but<01:55:30.800> like<01:55:31.040> if<01:55:31.280> I've<01:55:31.440> got" + }, + { + "start": 6931.75, + "duration": 0.0, + "text": "the code really, but like if I've got" + }, + { + "start": 6931.76, + "duration": 0.0, + "text": "the code really, but like if I've got there's<01:55:32.000> a<01:55:32.159> construct<01:55:32.480> called<01:55:32.639> a<01:55:32.880> scope<01:55:34.000> um<01:55:34.239> to" + }, + { + "start": 6934.55, + "duration": 0.0, + "text": "there's a construct called a scope um to" + }, + { + "start": 6934.56, + "duration": 0.0, + "text": "there's a construct called a scope um to access<01:55:34.800> these<01:55:35.040> caches<01:55:35.440> of<01:55:35.599> like<01:55:35.760> large<01:55:36.080> data." + }, + { + "start": 6936.709, + "duration": 0.0, + "text": "access these caches of like large data." + }, + { + "start": 6936.719, + "duration": 0.0, + "text": "access these caches of like large data. And<01:55:36.880> so<01:55:37.119> you<01:55:37.599> the<01:55:37.840> API<01:55:38.239> construct<01:55:38.560> is" + }, + { + "start": 6938.709, + "duration": 0.0, + "text": "And so you the API construct is" + }, + { + "start": 6938.719, + "duration": 0.0, + "text": "And so you the API construct is basically<01:55:38.960> you<01:55:39.199> obtain<01:55:39.440> a<01:55:39.679> scope,<01:55:40.400> you<01:55:41.280> grab" + }, + { + "start": 6941.51, + "duration": 0.0, + "text": "basically you obtain a scope, you grab" + }, + { + "start": 6941.52, + "duration": 0.0, + "text": "basically you obtain a scope, you grab the<01:55:41.760> data,<01:55:42.400> and<01:55:42.560> then<01:55:42.719> you<01:55:42.880> close<01:55:43.119> the<01:55:43.280> scope." + }, + { + "start": 6943.589, + "duration": 0.0, + "text": "the data, and then you close the scope." + }, + { + "start": 6943.599, + "duration": 0.0, + "text": "the data, and then you close the scope. And<01:55:43.760> then<01:55:44.000> while<01:55:44.239> this<01:55:44.480> scope<01:55:44.800> is<01:55:44.960> open,<01:55:45.360> you" + }, + { + "start": 6945.589, + "duration": 0.0, + "text": "And then while this scope is open, you" + }, + { + "start": 6945.599, + "duration": 0.0, + "text": "And then while this scope is open, you you're<01:55:45.920> able<01:55:46.080> to<01:55:46.239> talk<01:55:46.480> about<01:55:46.639> that<01:55:46.800> data." + }, + { + "start": 6947.03, + "duration": 0.0, + "text": "you're able to talk about that data." + }, + { + "start": 6947.04, + "duration": 0.0, + "text": "you're able to talk about that data. You're<01:55:47.280> able<01:55:47.360> to<01:55:47.520> read<01:55:47.679> it.<01:55:48.639> Um<01:55:49.920> and<01:55:50.480> if<01:55:50.719> that's" + }, + { + "start": 6950.95, + "duration": 0.0, + "text": "You're able to read it. Um and if that's" + }, + { + "start": 6950.96, + "duration": 0.0, + "text": "You're able to read it. Um and if that's happening,<01:55:51.280> obviously<01:55:51.520> you<01:55:51.679> can't<01:55:51.760> evict<01:55:52.080> it." + }, + { + "start": 6952.31, + "duration": 0.0, + "text": "happening, obviously you can't evict it." + }, + { + "start": 6952.32, + "duration": 0.0, + "text": "happening, obviously you can't evict it. So<01:55:52.639> there's<01:55:53.040> two<01:55:53.199> ref<01:55:53.440> counts<01:55:53.760> like<01:55:53.840> that" + }, + { + "start": 6954.07, + "duration": 0.0, + "text": "So there's two ref counts like that" + }, + { + "start": 6954.08, + "duration": 0.0, + "text": "So there's two ref counts like that where<01:55:54.320> it's<01:55:54.560> like<01:55:54.960> if<01:55:55.199> a<01:55:55.360> key<01:55:55.520> is<01:55:55.679> referring<01:55:55.920> to" + }, + { + "start": 6956.07, + "duration": 0.0, + "text": "where it's like if a key is referring to" + }, + { + "start": 6956.08, + "duration": 0.0, + "text": "where it's like if a key is referring to this,<01:55:56.480> you<01:55:56.639> keep<01:55:56.800> it<01:55:56.960> around.<01:55:57.840> If<01:55:58.159> a<01:55:58.960> um<01:56:00.320> if<01:56:00.560> a" + }, + { + "start": 6960.709, + "duration": 0.0, + "text": "this, you keep it around. If a um if a" + }, + { + "start": 6960.719, + "duration": 0.0, + "text": "this, you keep it around. If a um if a scope<01:56:01.119> is<01:56:01.440> opening<01:56:01.840> it,<01:56:02.159> you<01:56:02.400> keep<01:56:02.480> it<01:56:02.639> around." + }, + { + "start": 6963.669, + "duration": 0.0, + "text": "scope is opening it, you keep it around." + }, + { + "start": 6963.679, + "duration": 0.0, + "text": "scope is opening it, you keep it around. If<01:56:04.560> neither<01:56:04.880> of<01:56:05.040> those<01:56:05.199> things<01:56:05.360> are<01:56:05.520> true," + }, + { + "start": 6965.83, + "duration": 0.0, + "text": "If neither of those things are true," + }, + { + "start": 6965.84, + "duration": 0.0, + "text": "If neither of those things are true, then<01:56:06.080> it's<01:56:06.400> kind<01:56:06.560> of<01:56:06.639> just<01:56:06.719> a<01:56:06.960> heristic<01:56:07.360> of" + }, + { + "start": 6967.51, + "duration": 0.0, + "text": "then it's kind of just a heristic of" + }, + { + "start": 6967.52, + "duration": 0.0, + "text": "then it's kind of just a heristic of like,<01:56:08.080> well,<01:56:09.040> you<01:56:09.199> know,<01:56:09.440> it's<01:56:09.760> not<01:56:09.920> false" + }, + { + "start": 6970.229, + "duration": 0.0, + "text": "like, well, you know, it's not false" + }, + { + "start": 6970.239, + "duration": 0.0, + "text": "like, well, you know, it's not false that<01:56:10.480> this<01:56:10.719> hash<01:56:11.119> maps<01:56:11.440> to<01:56:11.599> this<01:56:11.760> data.<01:56:12.000> Like" + }, + { + "start": 6972.149, + "duration": 0.0, + "text": "that this hash maps to this data. Like" + }, + { + "start": 6972.159, + "duration": 0.0, + "text": "that this hash maps to this data. Like we<01:56:12.320> could<01:56:12.480> keep<01:56:12.560> it<01:56:12.719> around<01:56:12.960> forever.<01:56:14.080> Um<01:56:15.040> but," + }, + { + "start": 6975.35, + "duration": 0.0, + "text": "we could keep it around forever. Um but," + }, + { + "start": 6975.36, + "duration": 0.0, + "text": "we could keep it around forever. Um but, you<01:56:15.520> know,<01:56:15.599> it's<01:56:15.760> kind<01:56:15.840> of<01:56:15.920> a<01:56:16.080> heristic<01:56:16.400> of" + }, + { + "start": 6976.55, + "duration": 0.0, + "text": "you know, it's kind of a heristic of" + }, + { + "start": 6976.56, + "duration": 0.0, + "text": "you know, it's kind of a heristic of like,<01:56:16.800> well,<01:56:17.040> you<01:56:17.119> know,<01:56:17.280> do<01:56:17.440> you<01:56:17.520> want<01:56:17.599> to" + }, + { + "start": 6977.669, + "duration": 0.0, + "text": "like, well, you know, do you want to" + }, + { + "start": 6977.679, + "duration": 0.0, + "text": "like, well, you know, do you want to throw<01:56:17.840> it<01:56:18.000> away?<01:56:18.320> like<01:56:18.639> and<01:56:18.880> you<01:56:19.040> can<01:56:19.199> throw<01:56:19.360> it" + }, + { + "start": 6979.51, + "duration": 0.0, + "text": "throw it away? like and you can throw it" + }, + { + "start": 6979.52, + "duration": 0.0, + "text": "throw it away? like and you can throw it away<01:56:19.760> like<01:56:20.159> if<01:56:20.400> it's<01:56:20.560> not<01:56:20.719> accessed<01:56:21.119> in<01:56:21.280> 10" + }, + { + "start": 6981.51, + "duration": 0.0, + "text": "away like if it's not accessed in 10" + }, + { + "start": 6981.52, + "duration": 0.0, + "text": "away like if it's not accessed in 10 seconds<01:56:22.159> like<01:56:22.320> there<01:56:22.480> are<01:56:22.639> some<01:56:22.960> caches<01:56:23.360> like" + }, + { + "start": 6983.43, + "duration": 0.0, + "text": "seconds like there are some caches like" + }, + { + "start": 6983.44, + "duration": 0.0, + "text": "seconds like there are some caches like that<01:56:23.599> like<01:56:23.760> texture<01:56:24.080> handles<01:56:24.480> I'm<01:56:24.639> like<01:56:25.040> if" + }, + { + "start": 6985.27, + "duration": 0.0, + "text": "that like texture handles I'm like if" + }, + { + "start": 6985.28, + "duration": 0.0, + "text": "that like texture handles I'm like if nobody's<01:56:25.679> accessed<01:56:25.920> it<01:56:26.000> in<01:56:26.159> 10<01:56:26.320> seconds<01:56:26.560> or" + }, + { + "start": 6986.709, + "duration": 0.0, + "text": "nobody's accessed it in 10 seconds or" + }, + { + "start": 6986.719, + "duration": 0.0, + "text": "nobody's accessed it in 10 seconds or whatever<01:56:26.960> I'll<01:56:27.119> just<01:56:27.199> throw<01:56:27.360> it<01:56:27.440> away" + }, + { + "start": 6988.149, + "duration": 0.0, + "text": "whatever I'll just throw it away" + }, + { + "start": 6988.159, + "duration": 0.0, + "text": "whatever I'll just throw it away basically<01:56:28.560> and<01:56:28.800> I<01:56:28.960> just<01:56:29.199> it's<01:56:29.440> not<01:56:29.599> least" + }, + { + "start": 6989.83, + "duration": 0.0, + "text": "basically and I just it's not least" + }, + { + "start": 6989.84, + "duration": 0.0, + "text": "basically and I just it's not least recently<01:56:30.239> used<01:56:30.560> basically<01:56:30.880> because<01:56:31.040> I'm<01:56:31.199> just" + }, + { + "start": 6991.35, + "duration": 0.0, + "text": "recently used basically because I'm just" + }, + { + "start": 6991.36, + "duration": 0.0, + "text": "recently used basically because I'm just like<01:56:31.679> I<01:56:31.840> mean<01:56:31.920> I<01:56:32.159> could<01:56:32.239> do<01:56:32.400> it<01:56:32.480> that<01:56:32.639> way<01:56:32.800> but" + }, + { + "start": 6992.95, + "duration": 0.0, + "text": "like I mean I could do it that way but" + }, + { + "start": 6992.96, + "duration": 0.0, + "text": "like I mean I could do it that way but I'm<01:56:33.199> kind<01:56:33.280> of<01:56:33.440> like<01:56:34.320> really<01:56:34.639> brute<01:56:34.880> forcy" + }, + { + "start": 6995.27, + "duration": 0.0, + "text": "I'm kind of like really brute forcy" + }, + { + "start": 6995.28, + "duration": 0.0, + "text": "I'm kind of like really brute forcy about<01:56:35.440> it<01:56:35.599> and<01:56:35.840> it<01:56:36.000> just<01:56:36.159> doesn't<01:56:36.400> matter." + }, + { + "start": 6996.709, + "duration": 0.0, + "text": "about it and it just doesn't matter." + }, + { + "start": 6996.719, + "duration": 0.0, + "text": "about it and it just doesn't matter. It's<01:56:36.960> just<01:56:37.119> like<01:56:37.599> look<01:56:37.920> man<01:56:38.560> loop<01:56:38.880> over<01:56:39.040> the" + }, + { + "start": 6999.189, + "duration": 0.0, + "text": "It's just like look man loop over the" + }, + { + "start": 6999.199, + "duration": 0.0, + "text": "It's just like look man loop over the textures<01:56:39.599> and<01:56:39.840> throw<01:56:40.080> away<01:56:40.239> the<01:56:40.400> ones<01:56:40.639> that" + }, + { + "start": 7001.03, + "duration": 0.0, + "text": "textures and throw away the ones that" + }, + { + "start": 7001.04, + "duration": 0.0, + "text": "textures and throw away the ones that you<01:56:41.199> know<01:56:41.280> what<01:56:41.360> I<01:56:41.520> mean<01:56:41.760> like<01:56:42.080> that's<01:56:42.320> kind" + }, + { + "start": 7002.55, + "duration": 0.0, + "text": "you know what I mean like that's kind" + }, + { + "start": 7002.56, + "duration": 0.0, + "text": "you know what I mean like that's kind that's<01:56:42.800> kind<01:56:42.880> of<01:56:42.960> how<01:56:43.199> that<01:56:43.520> works." + }, + { + "start": 7004.47, + "duration": 0.0, + "text": "that's kind of how that works." + }, + { + "start": 7004.48, + "duration": 0.0, + "text": "that's kind of how that works. >> Yep.<01:56:45.040> Have<01:56:45.280> you<01:56:45.520> run<01:56:45.679> into<01:56:45.920> issues<01:56:46.320> where<01:56:46.560> like" + }, + { + "start": 7006.95, + "duration": 0.0, + "text": ">> Yep. Have you run into issues where like" + }, + { + "start": 7006.96, + "duration": 0.0, + "text": ">> Yep. Have you run into issues where like because<01:56:47.280> because<01:56:47.760> all<01:56:47.920> the<01:56:48.080> visualizations" + }, + { + "start": 7008.709, + "duration": 0.0, + "text": "because because all the visualizations" + }, + { + "start": 7008.719, + "duration": 0.0, + "text": "because because all the visualizations you<01:56:48.960> have<01:56:49.040> and<01:56:49.520> they<01:56:49.840> like<01:56:50.080> is<01:56:50.239> it<01:56:50.320> like<01:56:50.560> oh<01:56:50.719> my" + }, + { + "start": 7010.87, + "duration": 0.0, + "text": "you have and they like is it like oh my" + }, + { + "start": 7010.88, + "duration": 0.0, + "text": "you have and they like is it like oh my god<01:56:51.199> like<01:56:51.360> how<01:56:51.599> much<01:56:51.760> memory<01:56:52.159> does<01:56:52.320> it<01:56:52.480> like<01:56:52.639> is" + }, + { + "start": 7012.709, + "duration": 0.0, + "text": "god like how much memory does it like is" + }, + { + "start": 7012.719, + "duration": 0.0, + "text": "god like how much memory does it like is there<01:56:52.800> is<01:56:53.040> there<01:56:53.199> like<01:56:53.440> are<01:56:53.599> you<01:56:53.760> forced<01:56:54.159> to<01:56:54.320> be" + }, + { + "start": 7014.55, + "duration": 0.0, + "text": "there is there like are you forced to be" + }, + { + "start": 7014.56, + "duration": 0.0, + "text": "there is there like are you forced to be aggressively<01:56:55.119> evicting<01:56:55.679> stuff<01:56:55.920> to<01:56:56.239> kind<01:56:56.400> of" + }, + { + "start": 7016.47, + "duration": 0.0, + "text": "aggressively evicting stuff to kind of" + }, + { + "start": 7016.48, + "duration": 0.0, + "text": "aggressively evicting stuff to kind of not<01:56:56.719> blow<01:56:56.880> up<01:56:57.119> everything<01:56:57.360> or<01:56:57.599> is<01:56:57.760> it<01:56:57.920> pretty" + }, + { + "start": 7018.07, + "duration": 0.0, + "text": "not blow up everything or is it pretty" + }, + { + "start": 7018.08, + "duration": 0.0, + "text": "not blow up everything or is it pretty chill<01:56:58.320> like<01:56:58.480> I<01:56:58.800> have<01:56:58.960> no<01:56:59.119> feeling<01:56:59.360> for<01:56:59.520> the" + }, + { + "start": 7019.75, + "duration": 0.0, + "text": "chill like I have no feeling for the" + }, + { + "start": 7019.76, + "duration": 0.0, + "text": "chill like I have no feeling for the amount<01:56:59.920> of<01:57:00.080> data?" + }, + { + "start": 7020.55, + "duration": 0.0, + "text": "amount of data?" + }, + { + "start": 7020.56, + "duration": 0.0, + "text": "amount of data? >> Um" + }, + { + "start": 7022.47, + "duration": 0.0, + "text": ">> Um" + }, + { + "start": 7022.48, + "duration": 0.0, + "text": ">> Um really<01:57:02.719> depends<01:57:02.880> on<01:57:03.040> what<01:57:03.199> you're" + }, + { + "start": 7023.27, + "duration": 0.0, + "text": "really depends on what you're" + }, + { + "start": 7023.28, + "duration": 0.0, + "text": "really depends on what you're visualizing.<01:57:03.840> So<01:57:04.080> like<01:57:04.800> early<01:57:05.119> when<01:57:05.280> I" + }, + { + "start": 7025.43, + "duration": 0.0, + "text": "visualizing. So like early when I" + }, + { + "start": 7025.44, + "duration": 0.0, + "text": "visualizing. So like early when I prototyped<01:57:05.920> the<01:57:06.080> bitmap<01:57:06.560> viewer," + }, + { + "start": 7028.07, + "duration": 0.0, + "text": "prototyped the bitmap viewer," + }, + { + "start": 7028.08, + "duration": 0.0, + "text": "prototyped the bitmap viewer, I<01:57:08.239> had<01:57:08.400> like<01:57:08.560> a<01:57:08.719> video<01:57:08.960> playback<01:57:09.440> like<01:57:09.599> I<01:57:09.840> was" + }, + { + "start": 7030.07, + "duration": 0.0, + "text": "I had like a video playback like I was" + }, + { + "start": 7030.08, + "duration": 0.0, + "text": "I had like a video playback like I was using<01:57:10.320> a<01:57:10.560> I<01:57:10.719> was<01:57:10.800> going<01:57:10.960> through<01:57:11.040> a<01:57:11.199> [ __ ]" + }, + { + "start": 7031.51, + "duration": 0.0, + "text": "using a I was going through a [ __ ]" + }, + { + "start": 7031.52, + "duration": 0.0, + "text": "using a I was going through a [ __ ] program<01:57:12.480> uh<01:57:12.639> sample<01:57:13.679> that<01:57:13.920> like<01:57:14.080> plays<01:57:14.320> back<01:57:14.480> a" + }, + { + "start": 7034.709, + "duration": 0.0, + "text": "program uh sample that like plays back a" + }, + { + "start": 7034.719, + "duration": 0.0, + "text": "program uh sample that like plays back a video" + }, + { + "start": 7036.95, + "duration": 0.0, + "text": "video" + }, + { + "start": 7036.96, + "duration": 0.0, + "text": "video and<01:57:17.199> on<01:57:17.440> each<01:57:17.599> frame<01:57:17.760> of<01:57:17.840> the<01:57:18.000> video<01:57:18.159> I<01:57:18.320> would" + }, + { + "start": 7038.39, + "duration": 0.0, + "text": "and on each frame of the video I would" + }, + { + "start": 7038.4, + "duration": 0.0, + "text": "and on each frame of the video I would visualize<01:57:18.719> a<01:57:18.800> new<01:57:18.960> bit<01:57:19.199> map.<01:57:19.440> So<01:57:19.599> I<01:57:19.760> could<01:57:19.920> hold" + }, + { + "start": 7040.07, + "duration": 0.0, + "text": "visualize a new bit map. So I could hold" + }, + { + "start": 7040.08, + "duration": 0.0, + "text": "visualize a new bit map. So I could hold F5<01:57:20.480> and<01:57:20.719> watch<01:57:20.880> the<01:57:21.040> video<01:57:21.280> in<01:57:21.440> the<01:57:21.599> watch" + }, + { + "start": 7041.83, + "duration": 0.0, + "text": "F5 and watch the video in the watch" + }, + { + "start": 7041.84, + "duration": 0.0, + "text": "F5 and watch the video in the watch window." + }, + { + "start": 7043.35, + "duration": 0.0, + "text": "window." + }, + { + "start": 7043.36, + "duration": 0.0, + "text": "window. Um<01:57:23.840> which<01:57:24.000> was<01:57:24.239> pretty<01:57:24.400> cool.<01:57:24.960> But<01:57:25.199> you<01:57:25.280> know" + }, + { + "start": 7045.35, + "duration": 0.0, + "text": "Um which was pretty cool. But you know" + }, + { + "start": 7045.36, + "duration": 0.0, + "text": "Um which was pretty cool. But you know if<01:57:25.599> you<01:57:25.679> don't<01:57:25.760> have<01:57:25.840> a<01:57:25.920> good<01:57:26.080> eviction" + }, + { + "start": 7046.47, + "duration": 0.0, + "text": "if you don't have a good eviction" + }, + { + "start": 7046.48, + "duration": 0.0, + "text": "if you don't have a good eviction strategy<01:57:26.880> you<01:57:27.119> like<01:57:27.360> look<01:57:27.520> at<01:57:27.760> you<01:57:28.000> open<01:57:28.159> up" + }, + { + "start": 7048.31, + "duration": 0.0, + "text": "strategy you like look at you open up" + }, + { + "start": 7048.32, + "duration": 0.0, + "text": "strategy you like look at you open up task<01:57:28.639> manager<01:57:28.880> or<01:57:29.040> whatever<01:57:29.440> you<01:57:29.520> go<01:57:29.760> look<01:57:29.840> at" + }, + { + "start": 7049.91, + "duration": 0.0, + "text": "task manager or whatever you go look at" + }, + { + "start": 7049.92, + "duration": 0.0, + "text": "task manager or whatever you go look at it<01:57:30.080> and<01:57:30.159> it's<01:57:30.320> like<01:57:31.520> Yep.<01:57:32.080> Exactly.<01:57:32.560> So<01:57:33.040> it's" + }, + { + "start": 7053.669, + "duration": 0.0, + "text": "it and it's like Yep. Exactly. So it's" + }, + { + "start": 7053.679, + "duration": 0.0, + "text": "it and it's like Yep. Exactly. So it's so<01:57:34.320> um<01:57:34.639> over<01:57:35.040> time<01:57:35.440> it<01:57:35.679> can<01:57:35.840> grow<01:57:36.159> pretty" + }, + { + "start": 7056.47, + "duration": 0.0, + "text": "so um over time it can grow pretty" + }, + { + "start": 7056.48, + "duration": 0.0, + "text": "so um over time it can grow pretty substantially.<01:57:37.599> Um<01:57:38.000> so<01:57:38.239> I<01:57:38.480> tend<01:57:38.719> to<01:57:39.599> a<01:57:39.760> victim" + }, + { + "start": 7060.229, + "duration": 0.0, + "text": "substantially. Um so I tend to a victim" + }, + { + "start": 7060.239, + "duration": 0.0, + "text": "substantially. Um so I tend to a victim like<01:57:40.480> like<01:57:40.719> I<01:57:40.880> said<01:57:41.040> it's<01:57:41.280> like<01:57:41.520> different" + }, + { + "start": 7061.83, + "duration": 0.0, + "text": "like like I said it's like different" + }, + { + "start": 7061.84, + "duration": 0.0, + "text": "like like I said it's like different heristics.<01:57:42.239> I<01:57:42.400> don't<01:57:42.480> remember<01:57:42.719> exactly<01:57:42.960> what" + }, + { + "start": 7063.109, + "duration": 0.0, + "text": "heristics. I don't remember exactly what" + }, + { + "start": 7063.119, + "duration": 0.0, + "text": "heristics. I don't remember exactly what the<01:57:43.280> numbers<01:57:43.440> are<01:57:43.599> but<01:57:43.840> I'm<01:57:44.000> like<01:57:44.480> if<01:57:44.719> nobody's" + }, + { + "start": 7065.109, + "duration": 0.0, + "text": "the numbers are but I'm like if nobody's" + }, + { + "start": 7065.119, + "duration": 0.0, + "text": "the numbers are but I'm like if nobody's touching<01:57:45.360> this<01:57:45.520> in<01:57:45.760> a<01:57:45.840> long<01:57:46.000> time<01:57:46.239> throw<01:57:46.400> it" + }, + { + "start": 7066.55, + "duration": 0.0, + "text": "touching this in a long time throw it" + }, + { + "start": 7066.56, + "duration": 0.0, + "text": "touching this in a long time throw it away.<01:57:47.280> Um<01:57:47.840> and<01:57:48.080> that<01:57:48.320> tends<01:57:48.639> to<01:57:48.880> just<01:57:49.360> kind<01:57:49.599> of" + }, + { + "start": 7069.75, + "duration": 0.0, + "text": "away. Um and that tends to just kind of" + }, + { + "start": 7069.76, + "duration": 0.0, + "text": "away. Um and that tends to just kind of like<01:57:50.159> soften<01:57:50.560> that<01:57:50.800> problem<01:57:51.199> basically." + }, + { + "start": 7074.48, + "duration": 0.0, + "text": ">> Yeah." + }, + { + "start": 7075.51, + "duration": 0.0, + "text": ">> Yeah." + }, + { + "start": 7075.52, + "duration": 0.0, + "text": ">> Yeah. >> Talking<01:57:55.760> about<01:57:56.000> visualization.<01:57:56.639> Have<01:57:56.800> you" + }, + { + "start": 7076.95, + "duration": 0.0, + "text": ">> Talking about visualization. Have you" + }, + { + "start": 7076.96, + "duration": 0.0, + "text": ">> Talking about visualization. Have you considered<01:57:57.360> also<01:57:57.599> visualizing<01:57:58.239> things" + }, + { + "start": 7078.47, + "duration": 0.0, + "text": "considered also visualizing things" + }, + { + "start": 7078.48, + "duration": 0.0, + "text": "considered also visualizing things dynamically<01:57:59.119> over<01:57:59.360> time<01:57:59.599> like<01:57:59.840> how<01:58:00.000> the" + }, + { + "start": 7080.229, + "duration": 0.0, + "text": "dynamically over time like how the" + }, + { + "start": 7080.239, + "duration": 0.0, + "text": "dynamically over time like how the changes<01:58:00.560> of<01:58:00.800> things<01:58:01.280> have<01:58:01.520> also<01:58:02.880> um<01:58:03.119> like<01:58:03.920> bit" + }, + { + "start": 7085.03, + "duration": 0.0, + "text": "changes of things have also um like bit" + }, + { + "start": 7085.04, + "duration": 0.0, + "text": "changes of things have also um like bit I<01:58:05.280> realize<01:58:05.599> I'm<01:58:05.920> saying<01:58:07.119> I'm<01:58:07.440> wondering<01:58:07.760> like" + }, + { + "start": 7087.99, + "duration": 0.0, + "text": "I realize I'm saying I'm wondering like" + }, + { + "start": 7088.0, + "duration": 0.0, + "text": "I realize I'm saying I'm wondering like for<01:58:08.080> example<01:58:08.400> for<01:58:08.639> bit<01:58:08.880> maps<01:58:09.280> like<01:58:09.679> uh<01:58:09.840> you<01:58:10.080> can" + }, + { + "start": 7090.229, + "duration": 0.0, + "text": "for example for bit maps like uh you can" + }, + { + "start": 7090.239, + "duration": 0.0, + "text": "for example for bit maps like uh you can highlight<01:58:10.880> like<01:58:11.119> as<01:58:11.280> in<01:58:11.440> render<01:58:11.760> doc<01:58:12.000> okay" + }, + { + "start": 7092.229, + "duration": 0.0, + "text": "highlight like as in render doc okay" + }, + { + "start": 7092.239, + "duration": 0.0, + "text": "highlight like as in render doc okay here's<01:58:12.480> where<01:58:12.639> the<01:58:12.800> change<01:58:13.119> happened<01:58:14.159> from" + }, + { + "start": 7094.39, + "duration": 0.0, + "text": "here's where the change happened from" + }, + { + "start": 7094.4, + "duration": 0.0, + "text": "here's where the change happened from the<01:58:14.560> last<01:58:14.719> time<01:58:15.040> you<01:58:15.199> looked<01:58:15.440> at<01:58:15.520> this<01:58:15.760> thing." + }, + { + "start": 7096.39, + "duration": 0.0, + "text": "the last time you looked at this thing." + }, + { + "start": 7096.4, + "duration": 0.0, + "text": "the last time you looked at this thing. >> Yeah.<01:58:16.800> Yeah.<01:58:17.119> So<01:58:17.760> um<01:58:18.159> with<01:58:18.400> bit<01:58:18.639> so<01:58:18.800> I<01:58:18.960> haven't" + }, + { + "start": 7099.109, + "duration": 0.0, + "text": ">> Yeah. Yeah. So um with bit so I haven't" + }, + { + "start": 7099.119, + "duration": 0.0, + "text": ">> Yeah. Yeah. So um with bit so I haven't done<01:58:19.199> it<01:58:19.360> in<01:58:19.520> every<01:58:19.679> visualizer.<01:58:20.080> So<01:58:20.239> a<01:58:20.400> lot<01:58:20.480> of" + }, + { + "start": 7100.55, + "duration": 0.0, + "text": "done it in every visualizer. So a lot of" + }, + { + "start": 7100.56, + "duration": 0.0, + "text": "done it in every visualizer. So a lot of what<01:58:20.639> I<01:58:20.800> talked<01:58:20.960> about<01:58:21.119> today<01:58:21.280> was<01:58:21.440> like<01:58:21.520> the" + }, + { + "start": 7101.669, + "duration": 0.0, + "text": "what I talked about today was like the" + }, + { + "start": 7101.679, + "duration": 0.0, + "text": "what I talked about today was like the visualizer<01:58:22.159> architecture<01:58:22.880> like<01:58:23.040> sort<01:58:23.199> of" + }, + { + "start": 7103.27, + "duration": 0.0, + "text": "visualizer architecture like sort of" + }, + { + "start": 7103.28, + "duration": 0.0, + "text": "visualizer architecture like sort of like<01:58:23.840> how<01:58:24.080> the<01:58:24.239> building<01:58:24.560> blocks<01:58:24.800> are<01:58:24.960> all" + }, + { + "start": 7105.109, + "duration": 0.0, + "text": "like how the building blocks are all" + }, + { + "start": 7105.119, + "duration": 0.0, + "text": "like how the building blocks are all arranged<01:58:26.000> but<01:58:26.239> I<01:58:26.400> haven't<01:58:26.719> actually<01:58:27.040> like" + }, + { + "start": 7107.91, + "duration": 0.0, + "text": "arranged but I haven't actually like" + }, + { + "start": 7107.92, + "duration": 0.0, + "text": "arranged but I haven't actually like most<01:58:28.159> of<01:58:28.239> my<01:58:28.400> work<01:58:28.560> has<01:58:28.719> been<01:58:28.800> on<01:58:28.960> that<01:58:29.040> part<01:58:29.199> of" + }, + { + "start": 7109.27, + "duration": 0.0, + "text": "most of my work has been on that part of" + }, + { + "start": 7109.28, + "duration": 0.0, + "text": "most of my work has been on that part of the<01:58:29.360> problem<01:58:29.520> to<01:58:29.679> make<01:58:29.760> sure<01:58:29.920> that's<01:58:30.159> solid" + }, + { + "start": 7110.39, + "duration": 0.0, + "text": "the problem to make sure that's solid" + }, + { + "start": 7110.4, + "duration": 0.0, + "text": "the problem to make sure that's solid before<01:58:30.639> I<01:58:30.800> go<01:58:30.880> and<01:58:31.119> build<01:58:31.360> like<01:58:32.080> fanciest" + }, + { + "start": 7112.55, + "duration": 0.0, + "text": "before I go and build like fanciest" + }, + { + "start": 7112.56, + "duration": 0.0, + "text": "before I go and build like fanciest bitmap<01:58:32.960> visualizer<01:58:33.440> known<01:58:33.760> to<01:58:33.840> man<01:58:34.239> sort<01:58:34.480> of" + }, + { + "start": 7114.55, + "duration": 0.0, + "text": "bitmap visualizer known to man sort of" + }, + { + "start": 7114.56, + "duration": 0.0, + "text": "bitmap visualizer known to man sort of thing<01:58:34.880> which<01:58:35.119> like<01:58:35.360> if<01:58:35.679> you<01:58:35.840> know<01:58:36.480> but<01:58:36.960> um<01:58:37.280> so<01:58:37.520> I" + }, + { + "start": 7117.75, + "duration": 0.0, + "text": "thing which like if you know but um so I" + }, + { + "start": 7117.76, + "duration": 0.0, + "text": "thing which like if you know but um so I don't<01:58:37.920> I<01:58:38.159> I<01:58:38.480> don't<01:58:38.560> have<01:58:38.719> that<01:58:38.960> particular" + }, + { + "start": 7119.35, + "duration": 0.0, + "text": "don't I I don't have that particular" + }, + { + "start": 7119.36, + "duration": 0.0, + "text": "don't I I don't have that particular feature<01:58:39.520> in<01:58:39.679> the<01:58:39.760> bitmap<01:58:40.159> visualizer<01:58:40.639> but<01:58:41.040> um" + }, + { + "start": 7121.589, + "duration": 0.0, + "text": "feature in the bitmap visualizer but um" + }, + { + "start": 7121.599, + "duration": 0.0, + "text": "feature in the bitmap visualizer but um but<01:58:41.840> like<01:58:42.000> the<01:58:42.159> memory<01:58:42.480> viewer<01:58:42.880> I<01:58:43.040> do<01:58:43.360> like<01:58:43.520> is" + }, + { + "start": 7123.75, + "duration": 0.0, + "text": "but like the memory viewer I do like is" + }, + { + "start": 7123.76, + "duration": 0.0, + "text": "but like the memory viewer I do like is an<01:58:43.920> example<01:58:44.080> where<01:58:44.239> I<01:58:44.320> do<01:58:44.480> have<01:58:44.560> that<01:58:44.719> feature" + }, + { + "start": 7124.87, + "duration": 0.0, + "text": "an example where I do have that feature" + }, + { + "start": 7124.88, + "duration": 0.0, + "text": "an example where I do have that feature where<01:58:45.119> it's<01:58:45.199> like<01:58:45.360> you<01:58:45.520> show<01:58:45.679> the<01:58:45.840> changes<01:58:46.159> as" + }, + { + "start": 7126.39, + "duration": 0.0, + "text": "where it's like you show the changes as" + }, + { + "start": 7126.4, + "duration": 0.0, + "text": "where it's like you show the changes as they<01:58:46.639> happen.<01:58:47.520> Um,<01:58:48.400> now<01:58:48.800> obviously<01:58:49.119> what<01:58:49.360> you" + }, + { + "start": 7129.589, + "duration": 0.0, + "text": "they happen. Um, now obviously what you" + }, + { + "start": 7129.599, + "duration": 0.0, + "text": "they happen. Um, now obviously what you want<01:58:49.920> is<01:58:50.560> uh<01:58:50.960> kind<01:58:51.119> of<01:58:51.199> what<01:58:51.360> I<01:58:51.679> alluded<01:58:52.080> to<01:58:52.239> at" + }, + { + "start": 7132.39, + "duration": 0.0, + "text": "want is uh kind of what I alluded to at" + }, + { + "start": 7132.4, + "duration": 0.0, + "text": "want is uh kind of what I alluded to at the<01:58:52.480> end<01:58:52.560> of<01:58:52.639> the<01:58:52.800> talk<01:58:52.960> where<01:58:53.119> it's<01:58:53.280> like<01:58:53.440> you" + }, + { + "start": 7133.589, + "duration": 0.0, + "text": "the end of the talk where it's like you" + }, + { + "start": 7133.599, + "duration": 0.0, + "text": "the end of the talk where it's like you really<01:58:53.679> want<01:58:53.760> a<01:58:53.920> scrub<01:58:54.239> like<01:58:54.480> you<01:58:54.560> want<01:58:54.639> a" + }, + { + "start": 7134.79, + "duration": 0.0, + "text": "really want a scrub like you want a" + }, + { + "start": 7134.8, + "duration": 0.0, + "text": "really want a scrub like you want a timeline<01:58:55.440> like<01:58:55.760> white<01:58:56.000> box<01:58:56.320> where<01:58:56.560> you<01:58:56.639> want" + }, + { + "start": 7136.87, + "duration": 0.0, + "text": "timeline like white box where you want" + }, + { + "start": 7136.88, + "duration": 0.0, + "text": "timeline like white box where you want like<01:58:57.360> you<01:58:57.599> want<01:58:58.480> you<01:58:58.719> want<01:58:58.800> a<01:58:59.040> timeline<01:58:59.440> where" + }, + { + "start": 7139.669, + "duration": 0.0, + "text": "like you want you want a timeline where" + }, + { + "start": 7139.679, + "duration": 0.0, + "text": "like you want you want a timeline where it's<01:58:59.920> like<01:59:00.320> look<01:59:00.639> I've<01:59:00.880> got<01:59:01.040> this<01:59:01.280> whole" + }, + { + "start": 7141.51, + "duration": 0.0, + "text": "it's like look I've got this whole" + }, + { + "start": 7141.52, + "duration": 0.0, + "text": "it's like look I've got this whole history<01:59:01.840> of<01:59:02.080> those<01:59:02.239> hashes<01:59:03.199> where<01:59:03.840> um<01:59:04.000> it's" + }, + { + "start": 7144.31, + "duration": 0.0, + "text": "history of those hashes where um it's" + }, + { + "start": 7144.32, + "duration": 0.0, + "text": "history of those hashes where um it's like<01:59:05.040> there's<01:59:05.440> more<01:59:05.679> information<01:59:06.000> you<01:59:06.159> need" + }, + { + "start": 7146.31, + "duration": 0.0, + "text": "like there's more information you need" + }, + { + "start": 7146.32, + "duration": 0.0, + "text": "like there's more information you need but<01:59:06.480> it's<01:59:06.639> like<01:59:06.800> you've<01:59:06.960> got<01:59:07.119> this<01:59:07.440> history<01:59:07.760> of" + }, + { + "start": 7147.99, + "duration": 0.0, + "text": "but it's like you've got this history of" + }, + { + "start": 7148.0, + "duration": 0.0, + "text": "but it's like you've got this history of data<01:59:08.480> transforms<01:59:09.199> applying<01:59:09.599> to<01:59:09.760> this<01:59:10.719> and" + }, + { + "start": 7151.03, + "duration": 0.0, + "text": "data transforms applying to this and" + }, + { + "start": 7151.04, + "duration": 0.0, + "text": "data transforms applying to this and really<01:59:11.280> what<01:59:11.440> you<01:59:11.599> want<01:59:11.679> to<01:59:11.760> do<01:59:11.840> is<01:59:12.080> just<01:59:12.239> like" + }, + { + "start": 7152.95, + "duration": 0.0, + "text": "really what you want to do is just like" + }, + { + "start": 7152.96, + "duration": 0.0, + "text": "really what you want to do is just like rewind<01:59:13.440> to<01:59:13.599> those<01:59:13.840> states<01:59:14.080> and<01:59:14.400> see<01:59:14.480> like<01:59:14.719> what" + }, + { + "start": 7154.87, + "duration": 0.0, + "text": "rewind to those states and see like what" + }, + { + "start": 7154.88, + "duration": 0.0, + "text": "rewind to those states and see like what the<01:59:15.040> data<01:59:15.199> was<01:59:15.440> actually<01:59:15.599> like<01:59:15.840> then.<01:59:17.040> Um" + }, + { + "start": 7158.629, + "duration": 0.0, + "text": "the data was actually like then. Um" + }, + { + "start": 7158.639, + "duration": 0.0, + "text": "the data was actually like then. Um uh<01:59:18.880> and<01:59:19.199> you<01:59:19.440> know<01:59:20.719> I<01:59:21.040> haven't<01:59:21.199> done<01:59:21.360> that<01:59:21.599> yet" + }, + { + "start": 7161.83, + "duration": 0.0, + "text": "uh and you know I haven't done that yet" + }, + { + "start": 7161.84, + "duration": 0.0, + "text": "uh and you know I haven't done that yet because<01:59:22.080> it's<01:59:22.320> like<01:59:22.639> subtle<01:59:22.960> with<01:59:23.199> how<01:59:23.360> you" + }, + { + "start": 7163.51, + "duration": 0.0, + "text": "because it's like subtle with how you" + }, + { + "start": 7163.52, + "duration": 0.0, + "text": "because it's like subtle with how you want<01:59:23.599> to<01:59:23.679> do<01:59:23.760> that.<01:59:24.000> Like<01:59:24.159> how<01:59:24.320> is<01:59:24.400> that" + }, + { + "start": 7164.55, + "duration": 0.0, + "text": "want to do that. Like how is that" + }, + { + "start": 7164.56, + "duration": 0.0, + "text": "want to do that. Like how is that related<01:59:24.800> to<01:59:24.960> time<01:59:25.199> travel<01:59:25.520> debugging?<01:59:26.000> How<01:59:26.080> is" + }, + { + "start": 7166.229, + "duration": 0.0, + "text": "related to time travel debugging? How is" + }, + { + "start": 7166.239, + "duration": 0.0, + "text": "related to time travel debugging? How is it<01:59:26.400> like<01:59:26.560> there's<01:59:26.719> a<01:59:26.800> lot<01:59:26.880> of<01:59:26.960> questions<01:59:27.199> that" + }, + { + "start": 7167.43, + "duration": 0.0, + "text": "it like there's a lot of questions that" + }, + { + "start": 7167.44, + "duration": 0.0, + "text": "it like there's a lot of questions that I<01:59:27.679> would<01:59:27.760> have<01:59:27.840> to<01:59:28.000> answer<01:59:28.159> to<01:59:28.400> actually<01:59:28.639> like" + }, + { + "start": 7169.51, + "duration": 0.0, + "text": "I would have to answer to actually like" + }, + { + "start": 7169.52, + "duration": 0.0, + "text": "I would have to answer to actually like tell<01:59:29.679> you<01:59:29.840> how<01:59:30.000> that<01:59:30.239> system<01:59:30.480> works<01:59:30.719> fully." + }, + { + "start": 7171.109, + "duration": 0.0, + "text": "tell you how that system works fully." + }, + { + "start": 7171.119, + "duration": 0.0, + "text": "tell you how that system works fully. But<01:59:31.280> like<01:59:31.760> but<01:59:32.000> yes<01:59:32.239> that<01:59:32.719> to<01:59:32.960> answer<01:59:33.119> your" + }, + { + "start": 7173.27, + "duration": 0.0, + "text": "But like but yes that to answer your" + }, + { + "start": 7173.28, + "duration": 0.0, + "text": "But like but yes that to answer your question<01:59:33.599> like<01:59:33.920> I've<01:59:34.159> done<01:59:34.320> it<01:59:34.400> I've<01:59:34.639> done" + }, + { + "start": 7174.709, + "duration": 0.0, + "text": "question like I've done it I've done" + }, + { + "start": 7174.719, + "duration": 0.0, + "text": "question like I've done it I've done like<01:59:34.880> in<01:59:34.960> the<01:59:35.040> watch<01:59:35.199> window<01:59:35.520> memory<01:59:35.760> view<01:59:36.000> I" + }, + { + "start": 7176.149, + "duration": 0.0, + "text": "like in the watch window memory view I" + }, + { + "start": 7176.159, + "duration": 0.0, + "text": "like in the watch window memory view I show<01:59:36.320> as<01:59:36.560> things<01:59:36.880> change.<01:59:37.440> Um<01:59:37.760> I<01:59:37.920> don't<01:59:38.080> have" + }, + { + "start": 7178.149, + "duration": 0.0, + "text": "show as things change. Um I don't have" + }, + { + "start": 7178.159, + "duration": 0.0, + "text": "show as things change. Um I don't have like<01:59:38.400> the<01:59:38.639> super<01:59:38.880> fancy<01:59:39.119> timeline<01:59:39.520> scrubber" + }, + { + "start": 7180.149, + "duration": 0.0, + "text": "like the super fancy timeline scrubber" + }, + { + "start": 7180.159, + "duration": 0.0, + "text": "like the super fancy timeline scrubber yet<01:59:40.719> but<01:59:41.119> it's<01:59:41.520> like<01:59:42.159> that's<01:59:42.560> kind<01:59:42.719> of<01:59:43.119> um<01:59:43.679> but" + }, + { + "start": 7183.91, + "duration": 0.0, + "text": "yet but it's like that's kind of um but" + }, + { + "start": 7183.92, + "duration": 0.0, + "text": "yet but it's like that's kind of um but yeah<01:59:44.159> for<01:59:44.320> sure<01:59:44.560> you<01:59:44.800> definitely<01:59:45.040> want<01:59:45.199> that." + }, + { + "start": 7186.229, + "duration": 0.0, + "text": "yeah for sure you definitely want that." + }, + { + "start": 7186.239, + "duration": 0.0, + "text": "yeah for sure you definitely want that. Yeah,<01:59:46.400> for<01:59:46.719> people<01:59:46.880> at<01:59:47.119> home<01:59:47.440> like<01:59:48.080> Andrew" + }, + { + "start": 7188.55, + "duration": 0.0, + "text": "Yeah, for people at home like Andrew" + }, + { + "start": 7188.56, + "duration": 0.0, + "text": "Yeah, for people at home like Andrew from<01:59:48.800> White<01:59:49.119> Box<01:59:49.440> is<01:59:49.679> here<01:59:49.840> as<01:59:50.000> well<01:59:50.159> and<01:59:50.400> yes," + }, + { + "start": 7190.79, + "duration": 0.0, + "text": "from White Box is here as well and yes," + }, + { + "start": 7190.8, + "duration": 0.0, + "text": "from White Box is here as well and yes, pe<01:59:51.119> some<01:59:51.440> people<01:59:51.679> have<01:59:51.920> been<01:59:52.080> aggressively" + }, + { + "start": 7192.709, + "duration": 0.0, + "text": "pe some people have been aggressively" + }, + { + "start": 7192.719, + "duration": 0.0, + "text": "pe some people have been aggressively pitching<01:59:53.199> like<01:59:53.360> a<01:59:53.679> debugger<01:59:54.159> cinematic" + }, + { + "start": 7194.709, + "duration": 0.0, + "text": "pitching like a debugger cinematic" + }, + { + "start": 7194.719, + "duration": 0.0, + "text": "pitching like a debugger cinematic universe<01:59:55.520> where<01:59:55.840> like<01:59:56.400> White<01:59:56.639> Box<01:59:57.040> FL" + }, + { + "start": 7197.83, + "duration": 0.0, + "text": "universe where like White Box FL" + }, + { + "start": 7197.84, + "duration": 0.0, + "text": "universe where like White Box FL debuggers" + }, + { + "start": 7198.39, + "duration": 0.0, + "text": "debuggers" + }, + { + "start": 7198.4, + "duration": 0.0, + "text": "debuggers >> the<01:59:58.560> Avengers." + }, + { + "start": 7199.109, + "duration": 0.0, + "text": ">> the Avengers." + }, + { + "start": 7199.119, + "duration": 0.0, + "text": ">> the Avengers. >> Yeah.<01:59:59.520> The<01:59:59.760> super<02:00:00.000> team<02:00:00.320> of<02:00:00.639> like<02:00:01.199> debug" + }, + { + "start": 7201.589, + "duration": 0.0, + "text": ">> Yeah. The super team of like debug" + }, + { + "start": 7201.599, + "duration": 0.0, + "text": ">> Yeah. The super team of like debug Avengers.<02:00:02.239> Yeah." + }, + { + "start": 7204.07, + "duration": 0.0, + "text": "Avengers. Yeah." + }, + { + "start": 7204.08, + "duration": 0.0, + "text": "Avengers. Yeah. >> Um<02:00:04.800> when<02:00:05.040> you<02:00:05.199> get<02:00:05.280> the<02:00:05.679> information<02:00:06.239> from<02:00:06.639> the" + }, + { + "start": 7206.87, + "duration": 0.0, + "text": ">> Um when you get the information from the" + }, + { + "start": 7206.88, + "duration": 0.0, + "text": ">> Um when you get the information from the operating<02:00:07.280> system<02:00:07.599> about<02:00:07.920> the<02:00:08.080> debugger<02:00:09.199> um" + }, + { + "start": 7209.35, + "duration": 0.0, + "text": "operating system about the debugger um" + }, + { + "start": 7209.36, + "duration": 0.0, + "text": "operating system about the debugger um the<02:00:09.599> memory,<02:00:10.080> do<02:00:10.159> you<02:00:10.320> get<02:00:10.560> memory<02:00:11.040> ranges?<02:00:11.679> Do" + }, + { + "start": 7211.83, + "duration": 0.0, + "text": "the memory, do you get memory ranges? Do" + }, + { + "start": 7211.84, + "duration": 0.0, + "text": "the memory, do you get memory ranges? Do you<02:00:11.920> get<02:00:12.159> allocation?<02:00:12.880> Do<02:00:13.040> you<02:00:13.119> get" + }, + { + "start": 7213.35, + "duration": 0.0, + "text": "you get allocation? Do you get" + }, + { + "start": 7213.36, + "duration": 0.0, + "text": "you get allocation? Do you get individual<02:00:13.920> pages?<02:00:14.880> If<02:00:15.040> there's<02:00:15.760> ations<02:00:16.000> that" + }, + { + "start": 7216.149, + "duration": 0.0, + "text": "individual pages? If there's ations that" + }, + { + "start": 7216.159, + "duration": 0.0, + "text": "individual pages? If there's ations that have<02:00:16.239> been<02:00:16.400> made<02:00:16.639> that<02:00:16.960> haven't<02:00:17.440> been<02:00:17.760> given" + }, + { + "start": 7218.149, + "duration": 0.0, + "text": "have been made that haven't been given" + }, + { + "start": 7218.159, + "duration": 0.0, + "text": "have been made that haven't been given pages<02:00:18.639> yet.<02:00:19.119> Is<02:00:19.360> that<02:00:19.840> information<02:00:20.320> you<02:00:20.560> can" + }, + { + "start": 7220.709, + "duration": 0.0, + "text": "pages yet. Is that information you can" + }, + { + "start": 7220.719, + "duration": 0.0, + "text": "pages yet. Is that information you can access?" + }, + { + "start": 7222.47, + "duration": 0.0, + "text": "access?" + }, + { + "start": 7222.48, + "duration": 0.0, + "text": "access? >> Um,<02:00:23.199> so<02:00:24.239> you<02:00:24.560> can<02:00:24.719> obtain<02:00:25.119> information<02:00:25.520> like" + }, + { + "start": 7225.75, + "duration": 0.0, + "text": ">> Um, so you can obtain information like" + }, + { + "start": 7225.76, + "duration": 0.0, + "text": ">> Um, so you can obtain information like that,<02:00:26.000> but<02:00:26.239> the<02:00:26.560> so<02:00:26.800> the<02:00:27.040> debug<02:00:27.440> events<02:00:27.840> don't" + }, + { + "start": 7228.07, + "duration": 0.0, + "text": "that, but the so the debug events don't" + }, + { + "start": 7228.08, + "duration": 0.0, + "text": "that, but the so the debug events don't actually<02:00:28.320> contain<02:00:28.639> that<02:00:28.880> information.<02:00:29.679> You" + }, + { + "start": 7229.91, + "duration": 0.0, + "text": "actually contain that information. You" + }, + { + "start": 7229.92, + "duration": 0.0, + "text": "actually contain that information. You don't<02:00:30.080> get<02:00:30.639> um<02:00:30.800> the<02:00:31.040> debug<02:00:31.440> events<02:00:32.080> don't" + }, + { + "start": 7232.31, + "duration": 0.0, + "text": "don't get um the debug events don't" + }, + { + "start": 7232.32, + "duration": 0.0, + "text": "don't get um the debug events don't report<02:00:32.639> anything<02:00:33.040> at<02:00:33.040> least<02:00:33.280> on<02:00:33.520> Windows.<02:00:34.159> Uh" + }, + { + "start": 7234.55, + "duration": 0.0, + "text": "report anything at least on Windows. Uh" + }, + { + "start": 7234.56, + "duration": 0.0, + "text": "report anything at least on Windows. Uh you<02:00:34.719> don't<02:00:34.880> get<02:00:35.040> information<02:00:35.360> about<02:00:35.599> like" + }, + { + "start": 7235.83, + "duration": 0.0, + "text": "you don't get information about like" + }, + { + "start": 7235.84, + "duration": 0.0, + "text": "you don't get information about like this<02:00:36.080> range<02:00:36.320> was<02:00:36.560> reserved<02:00:37.119> for<02:00:37.199> example.<02:00:38.159> Um" + }, + { + "start": 7238.95, + "duration": 0.0, + "text": "this range was reserved for example. Um" + }, + { + "start": 7238.96, + "duration": 0.0, + "text": "this range was reserved for example. Um what<02:00:39.199> tends<02:00:39.440> to<02:00:39.599> happen<02:00:40.159> like<02:00:40.480> all<02:00:40.639> the<02:00:40.880> stuff" + }, + { + "start": 7240.95, + "duration": 0.0, + "text": "what tends to happen like all the stuff" + }, + { + "start": 7240.96, + "duration": 0.0, + "text": "what tends to happen like all the stuff that<02:00:41.199> the<02:00:41.520> debugger<02:00:42.000> currently<02:00:42.320> uses<02:00:42.639> is<02:00:42.880> like" + }, + { + "start": 7243.109, + "duration": 0.0, + "text": "that the debugger currently uses is like" + }, + { + "start": 7243.119, + "duration": 0.0, + "text": "that the debugger currently uses is like read<02:00:43.440> process<02:00:43.760> memory<02:00:44.159> like<02:00:44.320> it<02:00:44.480> calls<02:00:44.719> just" + }, + { + "start": 7244.87, + "duration": 0.0, + "text": "read process memory like it calls just" + }, + { + "start": 7244.88, + "duration": 0.0, + "text": "read process memory like it calls just that<02:00:45.040> API.<02:00:45.440> So<02:00:45.520> it<02:00:45.679> can<02:00:45.760> read<02:00:45.920> any<02:00:46.159> range<02:00:46.719> and" + }, + { + "start": 7246.87, + "duration": 0.0, + "text": "that API. So it can read any range and" + }, + { + "start": 7246.88, + "duration": 0.0, + "text": "that API. So it can read any range and if<02:00:47.040> it<02:00:47.280> and<02:00:47.679> it<02:00:48.000> can<02:00:48.239> infer<02:00:48.719> from<02:00:49.040> how<02:00:49.199> that<02:00:49.440> API" + }, + { + "start": 7249.83, + "duration": 0.0, + "text": "if it and it can infer from how that API" + }, + { + "start": 7249.84, + "duration": 0.0, + "text": "if it and it can infer from how that API returns<02:00:50.239> like<02:00:50.639> whether<02:00:50.960> it<02:00:51.119> failed<02:00:51.440> for<02:00:51.599> some" + }, + { + "start": 7251.91, + "duration": 0.0, + "text": "returns like whether it failed for some" + }, + { + "start": 7251.92, + "duration": 0.0, + "text": "returns like whether it failed for some for<02:00:52.239> some<02:00:52.400> pages.<02:00:52.880> So<02:00:53.040> it<02:00:53.199> can<02:00:53.280> infer<02:00:53.679> stuff" + }, + { + "start": 7253.91, + "duration": 0.0, + "text": "for some pages. So it can infer stuff" + }, + { + "start": 7253.92, + "duration": 0.0, + "text": "for some pages. So it can infer stuff like<02:00:54.080> that.<02:00:54.719> Now<02:00:55.440> even<02:00:55.679> if<02:00:55.840> there's<02:00:56.080> no<02:00:56.320> way<02:00:56.719> to" + }, + { + "start": 7256.95, + "duration": 0.0, + "text": "like that. Now even if there's no way to" + }, + { + "start": 7256.96, + "duration": 0.0, + "text": "like that. Now even if there's no way to actually<02:00:57.280> know<02:00:57.840> like<02:00:58.080> if<02:00:59.280> and<02:00:59.599> I<02:00:59.840> haven't<02:01:00.080> used" + }, + { + "start": 7260.31, + "duration": 0.0, + "text": "actually know like if and I haven't used" + }, + { + "start": 7260.32, + "duration": 0.0, + "text": "actually know like if and I haven't used it<02:01:00.480> so<02:01:00.639> I<02:01:00.800> don't<02:01:00.960> fully<02:01:01.280> know<02:01:01.360> but<02:01:01.599> I'm<02:01:01.679> pretty" + }, + { + "start": 7261.75, + "duration": 0.0, + "text": "it so I don't fully know but I'm pretty" + }, + { + "start": 7261.76, + "duration": 0.0, + "text": "it so I don't fully know but I'm pretty sure<02:01:01.920> there's<02:01:02.080> Windows<02:01:02.400> APIs<02:01:02.800> to<02:01:02.960> like" + }, + { + "start": 7263.27, + "duration": 0.0, + "text": "sure there's Windows APIs to like" + }, + { + "start": 7263.28, + "duration": 0.0, + "text": "sure there's Windows APIs to like actually<02:01:03.760> get<02:01:04.000> more<02:01:04.239> information<02:01:04.560> about<02:01:04.719> the" + }, + { + "start": 7264.87, + "duration": 0.0, + "text": "actually get more information about the" + }, + { + "start": 7264.88, + "duration": 0.0, + "text": "actually get more information about the page<02:01:05.199> table<02:01:05.520> basically.<02:01:06.320> But<02:01:06.560> even<02:01:06.800> if<02:01:06.960> you" + }, + { + "start": 7267.109, + "duration": 0.0, + "text": "page table basically. But even if you" + }, + { + "start": 7267.119, + "duration": 0.0, + "text": "page table basically. But even if you didn't<02:01:07.360> have<02:01:07.520> that,<02:01:07.840> what<02:01:08.000> the<02:01:08.080> debugger" + }, + { + "start": 7268.47, + "duration": 0.0, + "text": "didn't have that, what the debugger" + }, + { + "start": 7268.48, + "duration": 0.0, + "text": "didn't have that, what the debugger could<02:01:08.639> do<02:01:08.800> is<02:01:09.040> actually<02:01:09.199> just<02:01:09.440> hook<02:01:09.679> all<02:01:09.840> those" + }, + { + "start": 7269.99, + "duration": 0.0, + "text": "could do is actually just hook all those" + }, + { + "start": 7270.0, + "duration": 0.0, + "text": "could do is actually just hook all those APIs<02:01:10.560> and<02:01:10.800> build<02:01:11.040> it<02:01:11.199> up<02:01:11.360> for<02:01:11.520> itself.<02:01:11.920> So<02:01:12.000> if" + }, + { + "start": 7272.229, + "duration": 0.0, + "text": "APIs and build it up for itself. So if" + }, + { + "start": 7272.239, + "duration": 0.0, + "text": "APIs and build it up for itself. So if like<02:01:12.480> you<02:01:12.719> put<02:01:12.800> a<02:01:13.040> int3<02:01:14.000> in<02:01:14.239> virtual<02:01:14.560> alloc<02:01:15.280> for" + }, + { + "start": 7275.43, + "duration": 0.0, + "text": "like you put a int3 in virtual alloc for" + }, + { + "start": 7275.44, + "duration": 0.0, + "text": "like you put a int3 in virtual alloc for example<02:01:15.920> and<02:01:16.159> then<02:01:16.320> decode<02:01:16.719> the<02:01:16.960> arguments," + }, + { + "start": 7277.51, + "duration": 0.0, + "text": "example and then decode the arguments," + }, + { + "start": 7277.52, + "duration": 0.0, + "text": "example and then decode the arguments, you<02:01:17.679> could<02:01:17.760> start<02:01:17.920> actually<02:01:18.159> building<02:01:18.400> up" + }, + { + "start": 7278.55, + "duration": 0.0, + "text": "you could start actually building up" + }, + { + "start": 7278.56, + "duration": 0.0, + "text": "you could start actually building up like<02:01:18.800> oh<02:01:19.040> here's<02:01:19.360> who's<02:01:19.760> actually<02:01:20.000> reserved" + }, + { + "start": 7280.31, + "duration": 0.0, + "text": "like oh here's who's actually reserved" + }, + { + "start": 7280.32, + "duration": 0.0, + "text": "like oh here's who's actually reserved or<02:01:20.560> committed<02:01:20.880> what.<02:01:21.599> Um<02:01:22.560> that's<02:01:22.880> more" + }, + { + "start": 7283.109, + "duration": 0.0, + "text": "or committed what. Um that's more" + }, + { + "start": 7283.119, + "duration": 0.0, + "text": "or committed what. Um that's more complicated.<02:01:23.599> I'm<02:01:23.760> sure<02:01:23.920> there's<02:01:24.560> probably" + }, + { + "start": 7285.03, + "duration": 0.0, + "text": "complicated. I'm sure there's probably" + }, + { + "start": 7285.04, + "duration": 0.0, + "text": "complicated. I'm sure there's probably some<02:01:25.599> APIs<02:01:26.080> to<02:01:26.239> actually<02:01:26.400> just<02:01:26.560> visualize<02:01:26.880> it" + }, + { + "start": 7287.35, + "duration": 0.0, + "text": "some APIs to actually just visualize it" + }, + { + "start": 7287.36, + "duration": 0.0, + "text": "some APIs to actually just visualize it get<02:01:27.520> that<02:01:27.679> information<02:01:28.000> directly.<02:01:28.960> But<02:01:29.360> um" + }, + { + "start": 7290.149, + "duration": 0.0, + "text": "get that information directly. But um" + }, + { + "start": 7290.159, + "duration": 0.0, + "text": "get that information directly. But um but<02:01:30.320> yeah,<02:01:30.560> that's<02:01:30.800> that's<02:01:31.199> kind<02:01:31.440> of<02:01:31.520> the" + }, + { + "start": 7291.75, + "duration": 0.0, + "text": "but yeah, that's that's kind of the" + }, + { + "start": 7291.76, + "duration": 0.0, + "text": "but yeah, that's that's kind of the degree<02:01:32.000> of<02:01:32.159> my<02:01:32.320> understanding<02:01:32.639> about<02:01:32.800> it.<02:01:33.040> But" + }, + { + "start": 7293.189, + "duration": 0.0, + "text": "degree of my understanding about it. But" + }, + { + "start": 7293.199, + "duration": 0.0, + "text": "degree of my understanding about it. But yeah,<02:01:33.360> we<02:01:33.520> don't<02:01:33.679> we<02:01:33.840> don't<02:01:33.920> get<02:01:34.000> that<02:01:34.159> as<02:01:34.400> like" + }, + { + "start": 7294.47, + "duration": 0.0, + "text": "yeah, we don't we don't get that as like" + }, + { + "start": 7294.48, + "duration": 0.0, + "text": "yeah, we don't we don't get that as like a<02:01:34.639> mainline<02:01:35.119> thing<02:01:35.360> when<02:01:35.679> you<02:01:35.840> just<02:01:36.159> hook<02:01:36.400> on" + }, + { + "start": 7296.629, + "duration": 0.0, + "text": "a mainline thing when you just hook on" + }, + { + "start": 7296.639, + "duration": 0.0, + "text": "a mainline thing when you just hook on as<02:01:36.800> a<02:01:36.960> debugger.<02:01:37.520> But<02:01:38.080> um<02:01:38.480> but<02:01:38.719> yeah." + }, + { + "start": 7301.03, + "duration": 0.0, + "text": "as a debugger. But um but yeah." + }, + { + "start": 7301.04, + "duration": 0.0, + "text": "as a debugger. But um but yeah. >> Yep." + }, + { + "start": 7302.47, + "duration": 0.0, + "text": ">> Yep." + }, + { + "start": 7302.48, + "duration": 0.0, + "text": ">> Yep. >> All right.<02:01:42.880> Uh" + }, + { + "start": 7304.95, + "duration": 0.0, + "text": ">> All right. Uh" + }, + { + "start": 7304.96, + "duration": 0.0, + "text": ">> All right. Uh >> so<02:01:45.360> one<02:01:45.599> of<02:01:45.760> those<02:01:46.480> pain<02:01:46.960> frustration<02:01:47.440> points" + }, + { + "start": 7307.75, + "duration": 0.0, + "text": ">> so one of those pain frustration points" + }, + { + "start": 7307.76, + "duration": 0.0, + "text": ">> so one of those pain frustration points with<02:01:47.920> debuggers<02:01:48.560> and<02:01:48.719> and<02:01:49.119> specifically<02:01:49.599> like" + }, + { + "start": 7309.99, + "duration": 0.0, + "text": "with debuggers and and specifically like" + }, + { + "start": 7310.0, + "duration": 0.0, + "text": "with debuggers and and specifically like if<02:01:50.320> you're<02:01:50.480> talking<02:01:50.719> about<02:01:50.960> big<02:01:51.280> projects" + }, + { + "start": 7311.51, + "duration": 0.0, + "text": "if you're talking about big projects" + }, + { + "start": 7311.52, + "duration": 0.0, + "text": "if you're talking about big projects like<02:01:51.760> Unreal<02:01:52.159> and<02:01:52.400> it<02:01:52.560> kind<02:01:52.639> of<02:01:52.800> becomes<02:01:53.520> like" + }, + { + "start": 7313.91, + "duration": 0.0, + "text": "like Unreal and it kind of becomes like" + }, + { + "start": 7313.92, + "duration": 0.0, + "text": "like Unreal and it kind of becomes like logging" + }, + { + "start": 7315.109, + "duration": 0.0, + "text": "logging" + }, + { + "start": 7315.119, + "duration": 0.0, + "text": "logging >> is<02:01:55.440> that<02:01:55.599> you<02:01:55.840> run<02:01:56.000> across<02:01:56.320> that<02:01:56.560> issue<02:01:56.880> that" + }, + { + "start": 7317.27, + "duration": 0.0, + "text": ">> is that you run across that issue that" + }, + { + "start": 7317.28, + "duration": 0.0, + "text": ">> is that you run across that issue that your<02:01:57.599> engine<02:01:57.840> is<02:01:58.080> optimized.<02:01:58.639> So<02:01:58.719> you<02:01:58.880> don't" + }, + { + "start": 7319.03, + "duration": 0.0, + "text": "your engine is optimized. So you don't" + }, + { + "start": 7319.04, + "duration": 0.0, + "text": "your engine is optimized. So you don't have<02:01:59.280> information" + }, + { + "start": 7320.149, + "duration": 0.0, + "text": "have information" + }, + { + "start": 7320.159, + "duration": 0.0, + "text": "have information >> and<02:02:00.320> then<02:02:00.480> your<02:02:00.719> game<02:02:00.880> is<02:02:01.040> not<02:02:01.280> optimized<02:02:01.920> and" + }, + { + "start": 7322.47, + "duration": 0.0, + "text": ">> and then your game is not optimized and" + }, + { + "start": 7322.48, + "duration": 0.0, + "text": ">> and then your game is not optimized and something<02:02:02.719> happens<02:02:03.040> that<02:02:03.280> is<02:02:03.440> very<02:02:03.599> hard<02:02:03.760> to" + }, + { + "start": 7323.91, + "duration": 0.0, + "text": "something happens that is very hard to" + }, + { + "start": 7323.92, + "duration": 0.0, + "text": "something happens that is very hard to track<02:02:04.239> to<02:02:04.320> to<02:02:04.560> replicate<02:02:05.040> whatever<02:02:05.280> whatever" + }, + { + "start": 7325.83, + "duration": 0.0, + "text": "track to to replicate whatever whatever" + }, + { + "start": 7325.84, + "duration": 0.0, + "text": "track to to replicate whatever whatever then<02:02:06.000> you<02:02:06.159> get<02:02:06.239> to<02:02:06.400> that<02:02:06.560> point<02:02:06.639> that<02:02:06.800> you<02:02:06.960> need" + }, + { + "start": 7327.03, + "duration": 0.0, + "text": "then you get to that point that you need" + }, + { + "start": 7327.04, + "duration": 0.0, + "text": "then you get to that point that you need to<02:02:07.119> inspect<02:02:07.520> stuff<02:02:07.679> it's<02:02:07.840> like<02:02:08.080> oh<02:02:08.320> there's" + }, + { + "start": 7328.55, + "duration": 0.0, + "text": "to inspect stuff it's like oh there's" + }, + { + "start": 7328.56, + "duration": 0.0, + "text": "to inspect stuff it's like oh there's nothing<02:02:08.800> here" + }, + { + "start": 7329.51, + "duration": 0.0, + "text": "nothing here" + }, + { + "start": 7329.52, + "duration": 0.0, + "text": "nothing here >> oh<02:02:09.920> also<02:02:10.239> nothing<02:02:10.560> here<02:02:10.960> and<02:02:11.119> you<02:02:11.280> just<02:02:11.440> go<02:02:11.520> to" + }, + { + "start": 7331.669, + "duration": 0.0, + "text": ">> oh also nothing here and you just go to" + }, + { + "start": 7331.679, + "duration": 0.0, + "text": ">> oh also nothing here and you just go to a<02:02:11.840> point<02:02:11.920> it's<02:02:12.159> like<02:02:12.400> okay<02:02:13.040> now<02:02:13.199> I<02:02:13.360> have<02:02:13.520> to<02:02:13.679> go" + }, + { + "start": 7333.91, + "duration": 0.0, + "text": "a point it's like okay now I have to go" + }, + { + "start": 7333.92, + "duration": 0.0, + "text": "a point it's like okay now I have to go back<02:02:14.880> make<02:02:15.119> things<02:02:15.440> not<02:02:15.679> be<02:02:15.840> optimized<02:02:16.480> maybe" + }, + { + "start": 7336.629, + "duration": 0.0, + "text": "back make things not be optimized maybe" + }, + { + "start": 7336.639, + "duration": 0.0, + "text": "back make things not be optimized maybe in<02:02:16.800> this<02:02:16.960> file<02:02:17.199> or<02:02:17.360> this<02:02:17.520> mod<02:02:17.760> or<02:02:17.920> whatever" + }, + { + "start": 7338.47, + "duration": 0.0, + "text": "in this file or this mod or whatever" + }, + { + "start": 7338.48, + "duration": 0.0, + "text": "in this file or this mod or whatever >> and<02:02:18.639> I<02:02:18.800> think<02:02:18.960> there's<02:02:19.199> something<02:02:19.920> some" + }, + { + "start": 7340.229, + "duration": 0.0, + "text": ">> and I think there's something some" + }, + { + "start": 7340.239, + "duration": 0.0, + "text": ">> and I think there's something some project<02:02:20.560> or<02:02:20.639> something<02:02:20.880> from<02:02:21.119> Microsoft<02:02:21.599> or" + }, + { + "start": 7341.75, + "duration": 0.0, + "text": "project or something from Microsoft or" + }, + { + "start": 7341.76, + "duration": 0.0, + "text": "project or something from Microsoft or something<02:02:22.080> recently<02:02:22.719> where<02:02:22.960> they<02:02:23.119> kind<02:02:23.280> of" + }, + { + "start": 7343.35, + "duration": 0.0, + "text": "something recently where they kind of" + }, + { + "start": 7343.36, + "duration": 0.0, + "text": "something recently where they kind of grab<02:02:23.679> the<02:02:23.920> two<02:02:24.159> builds<02:02:24.560> and<02:02:24.800> then<02:02:24.960> you<02:02:25.199> can" + }, + { + "start": 7345.35, + "duration": 0.0, + "text": "grab the two builds and then you can" + }, + { + "start": 7345.36, + "duration": 0.0, + "text": "grab the two builds and then you can kind<02:02:25.599> of" + }, + { + "start": 7346.39, + "duration": 0.0, + "text": "kind of" + }, + { + "start": 7346.4, + "duration": 0.0, + "text": "kind of >> okay<02:02:26.800> try<02:02:26.960> to<02:02:27.119> get<02:02:27.199> the<02:02:27.440> information<02:02:27.840> from<02:02:28.080> the" + }, + { + "start": 7348.229, + "duration": 0.0, + "text": ">> okay try to get the information from the" + }, + { + "start": 7348.239, + "duration": 0.0, + "text": ">> okay try to get the information from the other<02:02:28.320> one<02:02:28.800> are<02:02:28.960> you<02:02:29.199> planning<02:02:29.440> on<02:02:29.679> doing" + }, + { + "start": 7349.91, + "duration": 0.0, + "text": "other one are you planning on doing" + }, + { + "start": 7349.92, + "duration": 0.0, + "text": "other one are you planning on doing something<02:02:30.159> like<02:02:30.400> this<02:02:30.639> or" + }, + { + "start": 7351.669, + "duration": 0.0, + "text": "something like this or" + }, + { + "start": 7351.679, + "duration": 0.0, + "text": "something like this or >> yeah<02:02:32.080> So<02:02:32.480> that<02:02:32.960> feature<02:02:33.280> in<02:02:33.520> particular," + }, + { + "start": 7353.91, + "duration": 0.0, + "text": ">> yeah So that feature in particular," + }, + { + "start": 7353.92, + "duration": 0.0, + "text": ">> yeah So that feature in particular, there's<02:02:34.080> a<02:02:34.159> lot<02:02:34.239> of<02:02:34.400> ways<02:02:34.480> that<02:02:34.639> you<02:02:34.800> can" + }, + { + "start": 7354.87, + "duration": 0.0, + "text": "there's a lot of ways that you can" + }, + { + "start": 7354.88, + "duration": 0.0, + "text": "there's a lot of ways that you can approach<02:02:35.119> that<02:02:35.360> problem.<02:02:36.320> Um,<02:02:36.880> one<02:02:37.119> is<02:02:37.280> with" + }, + { + "start": 7357.43, + "duration": 0.0, + "text": "approach that problem. Um, one is with" + }, + { + "start": 7357.44, + "duration": 0.0, + "text": "approach that problem. Um, one is with like<02:02:37.679> hot<02:02:37.920> reloading<02:02:38.320> for<02:02:38.400> example,<02:02:38.800> like<02:02:38.960> if" + }, + { + "start": 7359.109, + "duration": 0.0, + "text": "like hot reloading for example, like if" + }, + { + "start": 7359.119, + "duration": 0.0, + "text": "like hot reloading for example, like if you<02:02:39.199> want<02:02:39.360> to<02:02:39.599> not<02:02:39.840> actually<02:02:40.080> have<02:02:40.239> to" + }, + { + "start": 7360.55, + "duration": 0.0, + "text": "you want to not actually have to" + }, + { + "start": 7360.56, + "duration": 0.0, + "text": "you want to not actually have to recreate<02:02:40.960> the<02:02:41.119> state<02:02:41.360> for<02:02:41.440> example,<02:02:41.840> but<02:02:42.639> um," + }, + { + "start": 7362.79, + "duration": 0.0, + "text": "recreate the state for example, but um," + }, + { + "start": 7362.8, + "duration": 0.0, + "text": "recreate the state for example, but um, but<02:02:42.960> yeah,<02:02:43.199> that<02:02:43.440> particular" + }, + { + "start": 7365.189, + "duration": 0.0, + "text": "but yeah, that particular" + }, + { + "start": 7365.199, + "duration": 0.0, + "text": "but yeah, that particular uh,<02:02:45.440> Microsoft<02:02:45.920> feature<02:02:47.280> um,<02:02:48.000> to<02:02:48.320> my" + }, + { + "start": 7368.47, + "duration": 0.0, + "text": "uh, Microsoft feature um, to my" + }, + { + "start": 7368.48, + "duration": 0.0, + "text": "uh, Microsoft feature um, to my understanding,<02:02:48.880> I<02:02:49.040> haven't<02:02:49.199> actually" + }, + { + "start": 7369.35, + "duration": 0.0, + "text": "understanding, I haven't actually" + }, + { + "start": 7369.36, + "duration": 0.0, + "text": "understanding, I haven't actually dissected<02:02:49.840> it<02:02:50.000> fully,<02:02:50.239> but<02:02:50.480> my<02:02:50.639> understanding" + }, + { + "start": 7370.95, + "duration": 0.0, + "text": "dissected it fully, but my understanding" + }, + { + "start": 7370.96, + "duration": 0.0, + "text": "dissected it fully, but my understanding is<02:02:51.119> basically<02:02:51.360> like<02:02:51.599> yeah,<02:02:51.760> they<02:02:51.920> do<02:02:52.000> the" + }, + { + "start": 7372.149, + "duration": 0.0, + "text": "is basically like yeah, they do the" + }, + { + "start": 7372.159, + "duration": 0.0, + "text": "is basically like yeah, they do the build<02:02:52.320> twice.<02:02:53.199> They<02:02:53.440> take<02:02:53.599> the<02:02:53.920> unoptimized" + }, + { + "start": 7374.47, + "duration": 0.0, + "text": "build twice. They take the unoptimized" + }, + { + "start": 7374.48, + "duration": 0.0, + "text": "build twice. They take the unoptimized version<02:02:54.719> and<02:02:54.800> the<02:02:54.960> optimized<02:02:55.440> version." + }, + { + "start": 7375.91, + "duration": 0.0, + "text": "version and the optimized version." + }, + { + "start": 7375.92, + "duration": 0.0, + "text": "version and the optimized version. They're<02:02:56.159> the<02:02:56.400> same<02:02:56.480> binary<02:02:57.360> and<02:02:57.599> there's<02:02:57.920> some" + }, + { + "start": 7378.149, + "duration": 0.0, + "text": "They're the same binary and there's some" + }, + { + "start": 7378.159, + "duration": 0.0, + "text": "They're the same binary and there's some mechanism<02:02:58.639> by<02:02:58.880> which<02:02:59.040> the<02:02:59.199> debugger<02:02:59.679> can" + }, + { + "start": 7380.229, + "duration": 0.0, + "text": "mechanism by which the debugger can" + }, + { + "start": 7380.239, + "duration": 0.0, + "text": "mechanism by which the debugger can programmatically<02:03:00.960> control<02:03:01.360> which<02:03:01.599> is<02:03:01.840> which" + }, + { + "start": 7382.149, + "duration": 0.0, + "text": "programmatically control which is which" + }, + { + "start": 7382.159, + "duration": 0.0, + "text": "programmatically control which is which for<02:03:02.400> any<02:03:02.880> I<02:03:03.119> assume<02:03:03.440> symbol.<02:03:04.080> Uh<02:03:04.320> so<02:03:04.400> I'm<02:03:04.560> not" + }, + { + "start": 7384.629, + "duration": 0.0, + "text": "for any I assume symbol. Uh so I'm not" + }, + { + "start": 7384.639, + "duration": 0.0, + "text": "for any I assume symbol. Uh so I'm not 100%<02:03:05.040> sure<02:03:05.440> on<02:03:06.159> how<02:03:06.400> it's<02:03:06.719> exactly<02:03:07.119> it's" + }, + { + "start": 7387.27, + "duration": 0.0, + "text": "100% sure on how it's exactly it's" + }, + { + "start": 7387.28, + "duration": 0.0, + "text": "100% sure on how it's exactly it's sliced,<02:03:07.599> but<02:03:07.760> that's<02:03:07.920> kind<02:03:08.000> of<02:03:08.080> how<02:03:08.239> it<02:03:08.400> works." + }, + { + "start": 7389.109, + "duration": 0.0, + "text": "sliced, but that's kind of how it works." + }, + { + "start": 7389.119, + "duration": 0.0, + "text": "sliced, but that's kind of how it works. Now<02:03:09.280> the<02:03:09.599> utility<02:03:09.840> of<02:03:09.920> that's<02:03:10.239> questionable" + }, + { + "start": 7390.629, + "duration": 0.0, + "text": "Now the utility of that's questionable" + }, + { + "start": 7390.639, + "duration": 0.0, + "text": "Now the utility of that's questionable because<02:03:10.800> it's<02:03:11.040> like<02:03:11.119> you're<02:03:11.360> building<02:03:11.520> the" + }, + { + "start": 7391.669, + "duration": 0.0, + "text": "because it's like you're building the" + }, + { + "start": 7391.679, + "duration": 0.0, + "text": "because it's like you're building the thing<02:03:11.920> twice<02:03:12.239> and<02:03:12.400> the<02:03:12.560> binaries<02:03:12.960> are<02:03:13.119> twice" + }, + { + "start": 7393.27, + "duration": 0.0, + "text": "thing twice and the binaries are twice" + }, + { + "start": 7393.28, + "duration": 0.0, + "text": "thing twice and the binaries are twice as<02:03:13.440> big<02:03:13.679> and<02:03:13.920> in<02:03:14.159> many<02:03:14.320> cases<02:03:14.560> the<02:03:14.719> binaries" + }, + { + "start": 7395.109, + "duration": 0.0, + "text": "as big and in many cases the binaries" + }, + { + "start": 7395.119, + "duration": 0.0, + "text": "as big and in many cases the binaries are<02:03:15.280> close<02:03:15.440> to<02:03:15.679> binary<02:03:16.080> size<02:03:16.320> limits<02:03:16.639> anyways." + }, + { + "start": 7397.109, + "duration": 0.0, + "text": "are close to binary size limits anyways." + }, + { + "start": 7397.119, + "duration": 0.0, + "text": "are close to binary size limits anyways. So<02:03:17.280> I'm<02:03:17.440> not<02:03:17.599> actually<02:03:17.760> sure<02:03:18.080> like<02:03:19.280> you<02:03:19.520> know<02:03:20.320> I" + }, + { + "start": 7400.47, + "duration": 0.0, + "text": "So I'm not actually sure like you know I" + }, + { + "start": 7400.48, + "duration": 0.0, + "text": "So I'm not actually sure like you know I mean<02:03:20.639> if<02:03:20.880> it<02:03:21.040> works<02:03:21.280> that's<02:03:21.520> great<02:03:21.920> obviously." + }, + { + "start": 7402.709, + "duration": 0.0, + "text": "mean if it works that's great obviously." + }, + { + "start": 7402.719, + "duration": 0.0, + "text": "mean if it works that's great obviously. Um" + }, + { + "start": 7404.229, + "duration": 0.0, + "text": "Um" + }, + { + "start": 7404.239, + "duration": 0.0, + "text": "Um but<02:03:24.400> yeah,<02:03:24.639> if<02:03:24.960> that<02:03:25.280> feature<02:03:25.599> would<02:03:25.840> not<02:03:26.000> be" + }, + { + "start": 7406.07, + "duration": 0.0, + "text": "but yeah, if that feature would not be" + }, + { + "start": 7406.08, + "duration": 0.0, + "text": "but yeah, if that feature would not be hard<02:03:26.239> to<02:03:26.400> support<02:03:26.560> for<02:03:26.719> the<02:03:26.800> debugger<02:03:27.199> because" + }, + { + "start": 7407.43, + "duration": 0.0, + "text": "hard to support for the debugger because" + }, + { + "start": 7407.44, + "duration": 0.0, + "text": "hard to support for the debugger because basically<02:03:28.719> um<02:03:29.360> what<02:03:29.599> you<02:03:29.760> need<02:03:29.920> to<02:03:30.000> do<02:03:30.159> is<02:03:30.320> just" + }, + { + "start": 7410.55, + "duration": 0.0, + "text": "basically um what you need to do is just" + }, + { + "start": 7410.56, + "duration": 0.0, + "text": "basically um what you need to do is just have<02:03:30.639> the<02:03:30.800> debugger<02:03:32.159> whatever<02:03:32.560> state<02:03:32.800> it" + }, + { + "start": 7413.03, + "duration": 0.0, + "text": "have the debugger whatever state it" + }, + { + "start": 7413.04, + "duration": 0.0, + "text": "have the debugger whatever state it needs<02:03:33.280> to<02:03:33.440> change<02:03:33.760> to<02:03:34.080> switch<02:03:34.480> from<02:03:34.800> optimized" + }, + { + "start": 7415.27, + "duration": 0.0, + "text": "needs to change to switch from optimized" + }, + { + "start": 7415.28, + "duration": 0.0, + "text": "needs to change to switch from optimized unoptimized.<02:03:36.159> It's<02:03:36.400> all<02:03:36.480> in<02:03:36.639> the<02:03:36.719> binary." + }, + { + "start": 7417.03, + "duration": 0.0, + "text": "unoptimized. It's all in the binary." + }, + { + "start": 7417.04, + "duration": 0.0, + "text": "unoptimized. It's all in the binary. It's<02:03:37.199> all<02:03:37.280> code<02:03:37.440> the<02:03:37.599> debugger<02:03:37.920> can<02:03:38.080> refer<02:03:38.320> to." + }, + { + "start": 7418.47, + "duration": 0.0, + "text": "It's all code the debugger can refer to." + }, + { + "start": 7418.48, + "duration": 0.0, + "text": "It's all code the debugger can refer to. So<02:03:38.639> all<02:03:38.719> it<02:03:38.880> has<02:03:38.960> to<02:03:39.119> do<02:03:39.199> is<02:03:39.360> change<02:03:39.599> that" + }, + { + "start": 7419.83, + "duration": 0.0, + "text": "So all it has to do is change that" + }, + { + "start": 7419.84, + "duration": 0.0, + "text": "So all it has to do is change that state.<02:03:40.719> And<02:03:41.360> you<02:03:41.520> know<02:03:41.679> it's<02:03:42.000> it<02:03:42.239> seems<02:03:42.400> like" + }, + { + "start": 7422.47, + "duration": 0.0, + "text": "state. And you know it's it seems like" + }, + { + "start": 7422.48, + "duration": 0.0, + "text": "state. And you know it's it seems like it'd<02:03:42.719> be<02:03:42.800> a<02:03:42.960> pretty<02:03:43.119> minor<02:03:43.440> reverse" + }, + { + "start": 7423.75, + "duration": 0.0, + "text": "it'd be a pretty minor reverse" + }, + { + "start": 7423.76, + "duration": 0.0, + "text": "it'd be a pretty minor reverse engineering<02:03:44.239> task<02:03:44.480> to<02:03:44.719> actually<02:03:44.960> find<02:03:45.119> out" + }, + { + "start": 7425.35, + "duration": 0.0, + "text": "engineering task to actually find out" + }, + { + "start": 7425.36, + "duration": 0.0, + "text": "engineering task to actually find out what<02:03:45.760> you<02:03:46.000> need<02:03:46.080> to<02:03:46.239> do<02:03:46.320> for<02:03:46.480> that<02:03:46.639> if<02:03:46.880> nobody" + }, + { + "start": 7427.35, + "duration": 0.0, + "text": "what you need to do for that if nobody" + }, + { + "start": 7427.36, + "duration": 0.0, + "text": "what you need to do for that if nobody if<02:03:47.679> if<02:03:47.920> they<02:03:48.080> tell<02:03:48.239> you<02:03:48.480> nothing,<02:03:48.800> which<02:03:49.040> they" + }, + { + "start": 7429.189, + "duration": 0.0, + "text": "if if they tell you nothing, which they" + }, + { + "start": 7429.199, + "duration": 0.0, + "text": "if if they tell you nothing, which they might<02:03:49.360> tell<02:03:49.440> you<02:03:49.599> more<02:03:49.760> than<02:03:49.840> that.<02:03:50.320> So,<02:03:51.199> um," + }, + { + "start": 7431.99, + "duration": 0.0, + "text": "might tell you more than that. So, um," + }, + { + "start": 7432.0, + "duration": 0.0, + "text": "might tell you more than that. So, um, so<02:03:52.239> yeah,<02:03:52.480> hopefully<02:03:53.679> that<02:03:54.000> answers<02:03:54.400> the" + }, + { + "start": 7434.55, + "duration": 0.0, + "text": "so yeah, hopefully that answers the" + }, + { + "start": 7434.56, + "duration": 0.0, + "text": "so yeah, hopefully that answers the question." + }, + { + "start": 7436.229, + "duration": 0.0, + "text": "question." + }, + { + "start": 7436.239, + "duration": 0.0, + "text": "question. >> Yeah." + }, + { + "start": 7437.51, + "duration": 0.0, + "text": ">> Yeah." + }, + { + "start": 7437.52, + "duration": 0.0, + "text": ">> Yeah. So,<02:03:57.920> I<02:03:58.239> think<02:03:58.400> this<02:03:58.560> is<02:03:58.719> also<02:03:59.040> kind<02:03:59.199> of<02:03:59.280> what" + }, + { + "start": 7439.43, + "duration": 0.0, + "text": "So, I think this is also kind of what" + }, + { + "start": 7439.44, + "duration": 0.0, + "text": "So, I think this is also kind of what you're<02:03:59.679> planning<02:03:59.920> with<02:04:00.239> workbench<02:04:00.960> back<02:04:01.360> in" + }, + { + "start": 7441.589, + "duration": 0.0, + "text": "you're planning with workbench back in" + }, + { + "start": 7441.599, + "duration": 0.0, + "text": "you're planning with workbench back in the<02:04:01.760> background,<02:04:02.400> but<02:04:02.960> um<02:04:03.599> now<02:04:03.760> that<02:04:03.920> you're" + }, + { + "start": 7444.149, + "duration": 0.0, + "text": "the background, but um now that you're" + }, + { + "start": 7444.159, + "duration": 0.0, + "text": "the background, but um now that you're blurring<02:04:04.560> the<02:04:04.800> lines<02:04:05.199> between<02:04:05.760> like<02:04:06.080> the" + }, + { + "start": 7446.629, + "duration": 0.0, + "text": "blurring the lines between like the" + }, + { + "start": 7446.639, + "duration": 0.0, + "text": "blurring the lines between like the debuggy<02:04:07.760> inspection<02:04:08.400> and<02:04:08.719> inspecting<02:04:09.440> files," + }, + { + "start": 7451.35, + "duration": 0.0, + "text": "debuggy inspection and inspecting files," + }, + { + "start": 7451.36, + "duration": 0.0, + "text": "debuggy inspection and inspecting files, to<02:04:11.599> what<02:04:11.840> degree<02:04:12.560> are<02:04:12.800> you<02:04:13.040> planning<02:04:13.360> to<02:04:13.599> kind" + }, + { + "start": 7453.75, + "duration": 0.0, + "text": "to what degree are you planning to kind" + }, + { + "start": 7453.76, + "duration": 0.0, + "text": "to what degree are you planning to kind of<02:04:14.560> I<02:04:15.199> might<02:04:15.599> open<02:04:15.840> up<02:04:16.000> a<02:04:16.159> hex<02:04:16.480> editor<02:04:16.800> to<02:04:17.040> look" + }, + { + "start": 7457.109, + "duration": 0.0, + "text": "of I might open up a hex editor to look" + }, + { + "start": 7457.119, + "duration": 0.0, + "text": "of I might open up a hex editor to look at<02:04:17.360> the<02:04:17.520> file,<02:04:18.000> but<02:04:18.320> if<02:04:19.119> rap<02:04:19.440> DBG<02:04:19.920> is<02:04:20.080> like<02:04:20.239> a" + }, + { + "start": 7460.39, + "duration": 0.0, + "text": "at the file, but if rap DBG is like a" + }, + { + "start": 7460.4, + "duration": 0.0, + "text": "at the file, but if rap DBG is like a really<02:04:20.639> awesome<02:04:20.960> hex<02:04:21.360> editor<02:04:21.760> and<02:04:21.920> I<02:04:22.080> can<02:04:22.239> just" + }, + { + "start": 7462.39, + "duration": 0.0, + "text": "really awesome hex editor and I can just" + }, + { + "start": 7462.4, + "duration": 0.0, + "text": "really awesome hex editor and I can just drag<02:04:22.719> a<02:04:22.880> file<02:04:23.199> into<02:04:23.440> it,<02:04:23.679> right?" + }, + { + "start": 7463.91, + "duration": 0.0, + "text": "drag a file into it, right?" + }, + { + "start": 7463.92, + "duration": 0.0, + "text": "drag a file into it, right? >> Yep." + }, + { + "start": 7464.709, + "duration": 0.0, + "text": ">> Yep." + }, + { + "start": 7464.719, + "duration": 0.0, + "text": ">> Yep. >> You<02:04:24.880> already<02:04:25.199> can.<02:04:25.520> Yeah." + }, + { + "start": 7465.83, + "duration": 0.0, + "text": ">> You already can. Yeah." + }, + { + "start": 7465.84, + "duration": 0.0, + "text": ">> You already can. Yeah. >> Yeah.<02:04:26.000> Exactly.<02:04:26.800> So<02:04:27.119> I<02:04:27.440> think<02:04:27.679> about<02:04:27.840> that<02:04:28.000> and" + }, + { + "start": 7468.229, + "duration": 0.0, + "text": ">> Yeah. Exactly. So I think about that and" + }, + { + "start": 7468.239, + "duration": 0.0, + "text": ">> Yeah. Exactly. So I think about that and then<02:04:28.560> a<02:04:28.719> lot<02:04:28.880> of<02:04:28.960> people<02:04:29.119> obviously<02:04:29.599> ask" + }, + { + "start": 7470.709, + "duration": 0.0, + "text": "then a lot of people obviously ask" + }, + { + "start": 7470.719, + "duration": 0.0, + "text": "then a lot of people obviously ask >> okay<02:04:31.040> this<02:04:31.280> is<02:04:31.440> awesome<02:04:31.840> but<02:04:32.480> could<02:04:32.719> I<02:04:32.960> edit<02:04:33.360> my" + }, + { + "start": 7473.589, + "duration": 0.0, + "text": ">> okay this is awesome but could I edit my" + }, + { + "start": 7473.599, + "duration": 0.0, + "text": ">> okay this is awesome but could I edit my text<02:04:34.239> rap<02:04:35.360> you<02:04:35.520> know<02:04:36.080> do<02:04:36.239> you<02:04:36.560> have<02:04:36.800> plans<02:04:37.199> to" + }, + { + "start": 7477.589, + "duration": 0.0, + "text": "text rap you know do you have plans to" + }, + { + "start": 7477.599, + "duration": 0.0, + "text": "text rap you know do you have plans to kind<02:04:37.760> of<02:04:37.920> go<02:04:38.239> down<02:04:38.639> that<02:04:38.960> road<02:04:39.280> more<02:04:39.599> with<02:04:39.920> rapg" + }, + { + "start": 7480.95, + "duration": 0.0, + "text": "kind of go down that road more with rapg" + }, + { + "start": 7480.96, + "duration": 0.0, + "text": "kind of go down that road more with rapg or<02:04:41.360> is<02:04:41.440> that<02:04:41.679> more<02:04:41.840> of<02:04:42.000> a<02:04:42.320> long-term<02:04:43.520> different" + }, + { + "start": 7483.91, + "duration": 0.0, + "text": "or is that more of a long-term different" + }, + { + "start": 7483.92, + "duration": 0.0, + "text": "or is that more of a long-term different project?<02:04:44.880> Yeah,<02:04:45.119> I<02:04:45.360> think<02:04:45.599> so.<02:04:46.159> Um," + }, + { + "start": 7488.229, + "duration": 0.0, + "text": "project? Yeah, I think so. Um," + }, + { + "start": 7488.239, + "duration": 0.0, + "text": "project? Yeah, I think so. Um, obviously<02:04:48.639> there<02:04:48.880> are<02:04:49.199> higher<02:04:49.599> priorities" + }, + { + "start": 7489.99, + "duration": 0.0, + "text": "obviously there are higher priorities" + }, + { + "start": 7490.0, + "duration": 0.0, + "text": "obviously there are higher priorities than<02:04:50.239> making<02:04:50.400> it<02:04:50.560> a<02:04:50.719> text<02:04:50.880> editor,<02:04:51.280> but<02:04:51.440> I" + }, + { + "start": 7491.589, + "duration": 0.0, + "text": "than making it a text editor, but I" + }, + { + "start": 7491.599, + "duration": 0.0, + "text": "than making it a text editor, but I think<02:04:51.760> like<02:04:52.080> it's<02:04:52.400> definitely<02:04:52.960> clear<02:04:53.520> that" + }, + { + "start": 7493.99, + "duration": 0.0, + "text": "think like it's definitely clear that" + }, + { + "start": 7494.0, + "duration": 0.0, + "text": "think like it's definitely clear that you<02:04:54.320> want<02:04:54.480> the<02:04:54.719> ability<02:04:54.960> to<02:04:55.119> mutate<02:04:55.679> data<02:04:56.239> as" + }, + { + "start": 7496.47, + "duration": 0.0, + "text": "you want the ability to mutate data as" + }, + { + "start": 7496.48, + "duration": 0.0, + "text": "you want the ability to mutate data as well.<02:04:56.960> So<02:04:57.119> it's<02:04:57.360> not<02:04:57.440> just<02:04:57.679> about<02:04:57.920> viewing." + }, + { + "start": 7498.39, + "duration": 0.0, + "text": "well. So it's not just about viewing." + }, + { + "start": 7498.4, + "duration": 0.0, + "text": "well. So it's not just about viewing. Like<02:04:58.560> the<02:04:58.719> visualizers<02:04:59.199> aren't<02:04:59.360> just<02:04:59.520> for" + }, + { + "start": 7499.669, + "duration": 0.0, + "text": "Like the visualizers aren't just for" + }, + { + "start": 7499.679, + "duration": 0.0, + "text": "Like the visualizers aren't just for viewing,<02:04:59.920> they're<02:05:00.159> for<02:05:00.320> writing.<02:05:01.199> Um,<02:05:01.520> so<02:05:01.840> hex" + }, + { + "start": 7502.07, + "duration": 0.0, + "text": "viewing, they're for writing. Um, so hex" + }, + { + "start": 7502.08, + "duration": 0.0, + "text": "viewing, they're for writing. Um, so hex editor's<02:05:02.719> good<02:05:02.960> example<02:05:03.360> like<02:05:03.920> when<02:05:04.080> you're" + }, + { + "start": 7504.31, + "duration": 0.0, + "text": "editor's good example like when you're" + }, + { + "start": 7504.32, + "duration": 0.0, + "text": "editor's good example like when you're viewing<02:05:04.639> the<02:05:04.800> grid<02:05:04.960> of<02:05:05.040> bytes,<02:05:05.360> it<02:05:05.520> sucks<02:05:05.760> if" + }, + { + "start": 7505.91, + "duration": 0.0, + "text": "viewing the grid of bytes, it sucks if" + }, + { + "start": 7505.92, + "duration": 0.0, + "text": "viewing the grid of bytes, it sucks if you<02:05:06.000> can't<02:05:06.159> actually<02:05:06.480> like<02:05:06.800> in<02:05:06.960> the<02:05:07.040> RAD" + }, + { + "start": 7507.27, + "duration": 0.0, + "text": "you can't actually like in the RAD" + }, + { + "start": 7507.28, + "duration": 0.0, + "text": "you can't actually like in the RAD debugger,<02:05:07.679> you<02:05:07.840> can't<02:05:08.000> currently<02:05:08.320> mutate<02:05:08.639> the" + }, + { + "start": 7508.79, + "duration": 0.0, + "text": "debugger, you can't currently mutate the" + }, + { + "start": 7508.8, + "duration": 0.0, + "text": "debugger, you can't currently mutate the bytes,<02:05:09.040> but<02:05:09.199> you<02:05:09.360> really<02:05:09.520> want<02:05:09.679> to.<02:05:10.080> And<02:05:10.320> so<02:05:10.880> um" + }, + { + "start": 7511.109, + "duration": 0.0, + "text": "bytes, but you really want to. And so um" + }, + { + "start": 7511.119, + "duration": 0.0, + "text": "bytes, but you really want to. And so um similarly<02:05:11.520> with<02:05:11.679> images<02:05:12.080> like<02:05:12.239> if<02:05:12.400> you<02:05:12.560> can" + }, + { + "start": 7512.629, + "duration": 0.0, + "text": "similarly with images like if you can" + }, + { + "start": 7512.639, + "duration": 0.0, + "text": "similarly with images like if you can like<02:05:12.880> change<02:05:13.119> the<02:05:13.280> values<02:05:13.760> in<02:05:13.920> the<02:05:14.000> watch" + }, + { + "start": 7514.149, + "duration": 0.0, + "text": "like change the values in the watch" + }, + { + "start": 7514.159, + "duration": 0.0, + "text": "like change the values in the watch window<02:05:14.400> is<02:05:14.560> the<02:05:14.639> same<02:05:14.800> thing.<02:05:14.960> You<02:05:15.119> can<02:05:15.199> edit" + }, + { + "start": 7515.43, + "duration": 0.0, + "text": "window is the same thing. You can edit" + }, + { + "start": 7515.44, + "duration": 0.0, + "text": "window is the same thing. You can edit values.<02:05:16.480> So<02:05:16.719> I<02:05:16.880> think<02:05:16.960> that<02:05:17.119> should<02:05:17.280> all<02:05:17.440> be" + }, + { + "start": 7517.589, + "duration": 0.0, + "text": "values. So I think that should all be" + }, + { + "start": 7517.599, + "duration": 0.0, + "text": "values. So I think that should all be possible.<02:05:17.920> So<02:05:18.080> the<02:05:18.239> text<02:05:18.480> viewer<02:05:18.880> really" + }, + { + "start": 7519.03, + "duration": 0.0, + "text": "possible. So the text viewer really" + }, + { + "start": 7519.04, + "duration": 0.0, + "text": "possible. So the text viewer really should<02:05:19.199> become<02:05:19.440> the<02:05:19.599> text<02:05:19.760> editor<02:05:20.800> um<02:05:21.199> at<02:05:21.440> the" + }, + { + "start": 7521.589, + "duration": 0.0, + "text": "should become the text editor um at the" + }, + { + "start": 7521.599, + "duration": 0.0, + "text": "should become the text editor um at the limit.<02:05:22.000> I<02:05:22.239> think<02:05:23.280> um<02:05:23.599> I'm<02:05:23.920> not<02:05:24.080> going<02:05:24.239> to" + }, + { + "start": 7524.629, + "duration": 0.0, + "text": "limit. I think um I'm not going to" + }, + { + "start": 7524.639, + "duration": 0.0, + "text": "limit. I think um I'm not going to prioritize<02:05:25.119> it<02:05:25.280> because<02:05:25.440> there's<02:05:25.599> a<02:05:25.760> lot<02:05:25.840> of" + }, + { + "start": 7525.91, + "duration": 0.0, + "text": "prioritize it because there's a lot of" + }, + { + "start": 7525.92, + "duration": 0.0, + "text": "prioritize it because there's a lot of other<02:05:26.080> things<02:05:26.320> to<02:05:26.560> happen<02:05:26.800> first.<02:05:27.280> But<02:05:27.440> I" + }, + { + "start": 7527.589, + "duration": 0.0, + "text": "other things to happen first. But I" + }, + { + "start": 7527.599, + "duration": 0.0, + "text": "other things to happen first. But I think<02:05:27.679> like<02:05:27.920> yeah,<02:05:28.159> it's<02:05:28.320> some<02:05:28.560> it's<02:05:29.119> I<02:05:29.360> think" + }, + { + "start": 7529.51, + "duration": 0.0, + "text": "think like yeah, it's some it's I think" + }, + { + "start": 7529.52, + "duration": 0.0, + "text": "think like yeah, it's some it's I think someday<02:05:29.840> that'll<02:05:30.159> fall<02:05:30.320> in<02:05:30.480> there<02:05:30.719> even<02:05:30.960> if" + }, + { + "start": 7531.189, + "duration": 0.0, + "text": "someday that'll fall in there even if" + }, + { + "start": 7531.199, + "duration": 0.0, + "text": "someday that'll fall in there even if like<02:05:31.679> you<02:05:31.840> know<02:05:32.000> a<02:05:32.159> lot<02:05:32.239> of<02:05:33.040> there's<02:05:33.280> a<02:05:33.360> lot<02:05:33.440> of" + }, + { + "start": 7533.51, + "duration": 0.0, + "text": "like you know a lot of there's a lot of" + }, + { + "start": 7533.52, + "duration": 0.0, + "text": "like you know a lot of there's a lot of good<02:05:33.679> arguments<02:05:34.000> against<02:05:34.400> having<02:05:34.800> a<02:05:35.040> text" + }, + { + "start": 7535.189, + "duration": 0.0, + "text": "good arguments against having a text" + }, + { + "start": 7535.199, + "duration": 0.0, + "text": "good arguments against having a text editor<02:05:36.080> like<02:05:36.320> as<02:05:36.480> a<02:05:36.639> mainline<02:05:37.040> thing<02:05:37.199> that's" + }, + { + "start": 7537.43, + "duration": 0.0, + "text": "editor like as a mainline thing that's" + }, + { + "start": 7537.44, + "duration": 0.0, + "text": "editor like as a mainline thing that's always<02:05:37.679> on<02:05:37.920> in<02:05:38.080> a<02:05:38.239> debugger.<02:05:38.719> But<02:05:38.880> it<02:05:39.040> so<02:05:39.280> maybe" + }, + { + "start": 7539.43, + "duration": 0.0, + "text": "always on in a debugger. But it so maybe" + }, + { + "start": 7539.44, + "duration": 0.0, + "text": "always on in a debugger. But it so maybe it's<02:05:39.760> you<02:05:39.920> know<02:05:40.560> maybe<02:05:40.719> there's<02:05:40.960> still<02:05:41.040> a<02:05:41.199> mode" + }, + { + "start": 7541.43, + "duration": 0.0, + "text": "it's you know maybe there's still a mode" + }, + { + "start": 7541.44, + "duration": 0.0, + "text": "it's you know maybe there's still a mode switch<02:05:41.679> where<02:05:42.000> all<02:05:42.159> your<02:05:42.320> text<02:05:42.639> becomes<02:05:43.119> read" + }, + { + "start": 7543.43, + "duration": 0.0, + "text": "switch where all your text becomes read" + }, + { + "start": 7543.44, + "duration": 0.0, + "text": "switch where all your text becomes read only<02:05:43.760> when<02:05:44.080> you're<02:05:44.239> not<02:05:44.480> editing<02:05:44.880> it<02:05:45.119> or<02:05:45.280> or" + }, + { + "start": 7545.589, + "duration": 0.0, + "text": "only when you're not editing it or or" + }, + { + "start": 7545.599, + "duration": 0.0, + "text": "only when you're not editing it or or when<02:05:45.760> you're<02:05:45.920> debugging<02:05:46.320> it<02:05:46.480> rather.<02:05:46.880> Uh<02:05:47.119> so" + }, + { + "start": 7547.27, + "duration": 0.0, + "text": "when you're debugging it rather. Uh so" + }, + { + "start": 7547.28, + "duration": 0.0, + "text": "when you're debugging it rather. Uh so you<02:05:47.440> don't<02:05:47.520> like<02:05:47.840> add<02:05:48.080> a<02:05:48.239> new<02:05:48.400> line<02:05:48.480> and<02:05:48.719> all" + }, + { + "start": 7548.79, + "duration": 0.0, + "text": "you don't like add a new line and all" + }, + { + "start": 7548.8, + "duration": 0.0, + "text": "you don't like add a new line and all your<02:05:48.880> debug<02:05:49.199> info<02:05:49.440> is<02:05:49.520> broken<02:05:49.760> or<02:05:49.920> whatever." + }, + { + "start": 7550.149, + "duration": 0.0, + "text": "your debug info is broken or whatever." + }, + { + "start": 7550.159, + "duration": 0.0, + "text": "your debug info is broken or whatever. It's<02:05:50.320> like<02:05:50.480> that<02:05:50.719> stupid<02:05:51.119> problem.<02:05:51.520> But<02:05:52.239> um" + }, + { + "start": 7552.87, + "duration": 0.0, + "text": "It's like that stupid problem. But um" + }, + { + "start": 7552.88, + "duration": 0.0, + "text": "It's like that stupid problem. But um but<02:05:53.119> yeah,<02:05:53.199> I<02:05:53.360> think<02:05:53.440> at<02:05:53.679> the<02:05:53.760> limit<02:05:54.080> it<02:05:54.239> turns" + }, + { + "start": 7554.47, + "duration": 0.0, + "text": "but yeah, I think at the limit it turns" + }, + { + "start": 7554.48, + "duration": 0.0, + "text": "but yeah, I think at the limit it turns into<02:05:54.719> that.<02:05:55.040> It<02:05:55.280> really<02:05:55.440> does.<02:05:56.080> Yeah.<02:05:56.400> So<02:05:56.639> just" + }, + { + "start": 7556.79, + "duration": 0.0, + "text": "into that. It really does. Yeah. So just" + }, + { + "start": 7556.8, + "duration": 0.0, + "text": "into that. It really does. Yeah. So just to<02:05:56.960> add<02:05:57.119> on<02:05:57.280> to<02:05:57.440> that<02:05:57.599> actually<02:05:57.840> a<02:05:58.080> thought<02:05:59.280> uh" + }, + { + "start": 7560.709, + "duration": 0.0, + "text": "to add on to that actually a thought uh" + }, + { + "start": 7560.719, + "duration": 0.0, + "text": "to add on to that actually a thought uh one<02:06:01.119> really<02:06:01.360> good<02:06:01.599> argument<02:06:02.000> for<02:06:02.320> doing<02:06:02.560> this" + }, + { + "start": 7562.95, + "duration": 0.0, + "text": "one really good argument for doing this" + }, + { + "start": 7562.96, + "duration": 0.0, + "text": "one really good argument for doing this is<02:06:03.280> that<02:06:03.599> all<02:06:03.840> these<02:06:04.239> type<02:06:04.639> views<02:06:04.960> like<02:06:05.119> for" + }, + { + "start": 7565.27, + "duration": 0.0, + "text": "is that all these type views like for" + }, + { + "start": 7565.28, + "duration": 0.0, + "text": "is that all these type views like for example<02:06:05.599> the<02:06:05.920> view<02:06:06.239> rules<02:06:06.560> and<02:06:06.800> stuff<02:06:06.960> like" + }, + { + "start": 7567.189, + "duration": 0.0, + "text": "example the view rules and stuff like" + }, + { + "start": 7567.199, + "duration": 0.0, + "text": "example the view rules and stuff like that" + }, + { + "start": 7567.91, + "duration": 0.0, + "text": "that" + }, + { + "start": 7567.92, + "duration": 0.0, + "text": "that >> that<02:06:08.239> looks<02:06:08.560> a<02:06:08.880> lot<02:06:09.199> like<02:06:10.080> so<02:06:10.239> for<02:06:10.400> example<02:06:10.719> 101" + }, + { + "start": 7571.27, + "duration": 0.0, + "text": ">> that looks a lot like so for example 101" + }, + { + "start": 7571.28, + "duration": 0.0, + "text": ">> that looks a lot like so for example 101 editor<02:06:12.239> templates<02:06:13.119> that<02:06:13.360> they<02:06:13.599> use<02:06:13.760> for" + }, + { + "start": 7573.99, + "duration": 0.0, + "text": "editor templates that they use for" + }, + { + "start": 7574.0, + "duration": 0.0, + "text": "editor templates that they use for inspecting<02:06:14.560> files.<02:06:15.199> Yeah.<02:06:15.520> So<02:06:15.679> if<02:06:15.840> you<02:06:16.000> could" + }, + { + "start": 7576.149, + "duration": 0.0, + "text": "inspecting files. Yeah. So if you could" + }, + { + "start": 7576.159, + "duration": 0.0, + "text": "inspecting files. Yeah. So if you could have<02:06:16.400> like<02:06:17.040> a<02:06:17.360> description<02:06:17.760> of<02:06:18.000> a<02:06:18.159> binary<02:06:18.639> type" + }, + { + "start": 7578.95, + "duration": 0.0, + "text": "have like a description of a binary type" + }, + { + "start": 7578.96, + "duration": 0.0, + "text": "have like a description of a binary type that's<02:06:19.199> like<02:06:19.440> this<02:06:19.599> is<02:06:19.840> my<02:06:20.080> type<02:06:20.719> and<02:06:20.960> you" + }, + { + "start": 7581.109, + "duration": 0.0, + "text": "that's like this is my type and you" + }, + { + "start": 7581.119, + "duration": 0.0, + "text": "that's like this is my type and you could<02:06:21.280> look<02:06:21.440> at<02:06:21.599> it<02:06:21.840> in<02:06:22.480> memory<02:06:22.880> in<02:06:23.040> a<02:06:23.599> debugger" + }, + { + "start": 7584.07, + "duration": 0.0, + "text": "could look at it in memory in a debugger" + }, + { + "start": 7584.08, + "duration": 0.0, + "text": "could look at it in memory in a debugger but<02:06:24.320> you<02:06:24.480> could<02:06:24.639> also<02:06:25.119> look<02:06:25.280> at<02:06:25.440> it<02:06:25.760> in<02:06:26.000> a<02:06:26.239> file." + }, + { + "start": 7586.95, + "duration": 0.0, + "text": "but you could also look at it in a file." + }, + { + "start": 7586.96, + "duration": 0.0, + "text": "but you could also look at it in a file. I<02:06:27.119> think<02:06:27.599> really<02:06:28.000> awesome." + }, + { + "start": 7588.55, + "duration": 0.0, + "text": "I think really awesome." + }, + { + "start": 7588.56, + "duration": 0.0, + "text": "I think really awesome. >> Yes.<02:06:28.960> Yeah.<02:06:29.360> For<02:06:29.599> sure.<02:06:29.840> Agreed.<02:06:30.320> Yep." + }, + { + "start": 7592.39, + "duration": 0.0, + "text": ">> Yes. Yeah. For sure. Agreed. Yep." + }, + { + "start": 7592.4, + "duration": 0.0, + "text": ">> Yes. Yeah. For sure. Agreed. Yep. >> Like<02:06:32.560> if<02:06:32.800> you<02:06:32.960> keep<02:06:33.119> adding<02:06:33.520> like<02:06:33.840> editing" + }, + { + "start": 7594.31, + "duration": 0.0, + "text": ">> Like if you keep adding like editing" + }, + { + "start": 7594.32, + "duration": 0.0, + "text": ">> Like if you keep adding like editing features<02:06:34.639> to<02:06:34.800> the<02:06:34.960> visualizers,<02:06:35.599> you're" + }, + { + "start": 7595.75, + "duration": 0.0, + "text": "features to the visualizers, you're" + }, + { + "start": 7595.76, + "duration": 0.0, + "text": "features to the visualizers, you're going<02:06:35.840> to<02:06:36.000> run<02:06:36.159> into<02:06:36.320> antitrust<02:06:36.960> issues" + }, + { + "start": 7597.189, + "duration": 0.0, + "text": "going to run into antitrust issues" + }, + { + "start": 7597.199, + "duration": 0.0, + "text": "going to run into antitrust issues sooner<02:06:37.440> or<02:06:37.520> later<02:06:37.760> because<02:06:38.000> like<02:06:38.159> oh<02:06:38.320> no,<02:06:38.560> I'm" + }, + { + "start": 7598.709, + "duration": 0.0, + "text": "sooner or later because like oh no, I'm" + }, + { + "start": 7598.719, + "duration": 0.0, + "text": "sooner or later because like oh no, I'm not<02:06:38.880> only<02:06:39.119> eating<02:06:39.360> all<02:06:39.440> the<02:06:39.599> buggers<02:06:39.920> and<02:06:40.079> I'm" + }, + { + "start": 7600.149, + "duration": 0.0, + "text": "not only eating all the buggers and I'm" + }, + { + "start": 7600.159, + "duration": 0.0, + "text": "not only eating all the buggers and I'm also<02:06:40.400> eating<02:06:40.560> the<02:06:40.719> paint<02:06:40.960> programs<02:06:41.280> and<02:06:41.440> the" + }, + { + "start": 7601.51, + "duration": 0.0, + "text": "also eating the paint programs and the" + }, + { + "start": 7601.52, + "duration": 0.0, + "text": "also eating the paint programs and the hex<02:06:41.760> editors<02:06:42.239> and<02:06:42.400> the<02:06:42.719> like" + }, + { + "start": 7605.51, + "duration": 0.0, + "text": "hex editors and the like" + }, + { + "start": 7605.52, + "duration": 0.0, + "text": "hex editors and the like Yeah," + }, + { + "start": 7607.43, + "duration": 0.0, + "text": "Yeah," + }, + { + "start": 7607.44, + "duration": 0.0, + "text": "Yeah, >> it<02:06:47.599> is.<02:06:47.840> It<02:06:48.000> is<02:06:48.239> red<02:06:48.400> OS.<02:06:48.719> It's<02:06:48.880> just<02:06:49.920> probably" + }, + { + "start": 7610.47, + "duration": 0.0, + "text": ">> it is. It is red OS. It's just probably" + }, + { + "start": 7610.48, + "duration": 0.0, + "text": ">> it is. It is red OS. It's just probably >> Yeah." + }, + { + "start": 7611.43, + "duration": 0.0, + "text": ">> Yeah." + }, + { + "start": 7611.44, + "duration": 0.0, + "text": ">> Yeah. >> So<02:06:51.679> my<02:06:52.000> question<02:06:52.239> is<02:06:53.280> how<02:06:53.440> do<02:06:53.599> you<02:06:53.760> annotate" + }, + { + "start": 7614.39, + "duration": 0.0, + "text": ">> So my question is how do you annotate" + }, + { + "start": 7614.4, + "duration": 0.0, + "text": ">> So my question is how do you annotate types?<02:06:55.440> Uh<02:06:55.760> say<02:06:55.920> that<02:06:56.079> you<02:06:56.239> have<02:06:56.320> a<02:06:56.560> project" + }, + { + "start": 7616.95, + "duration": 0.0, + "text": "types? Uh say that you have a project" + }, + { + "start": 7616.96, + "duration": 0.0, + "text": "types? Uh say that you have a project with<02:06:57.280> a<02:06:57.440> lot<02:06:57.599> of<02:06:57.679> textures<02:06:58.880> and<02:06:59.119> but<02:06:59.360> you<02:06:59.520> know" + }, + { + "start": 7619.75, + "duration": 0.0, + "text": "with a lot of textures and but you know" + }, + { + "start": 7619.76, + "duration": 0.0, + "text": "with a lot of textures and but you know that<02:07:00.480> your<02:07:00.639> own<02:07:00.880> type<02:07:01.599> like<02:07:01.840> can<02:07:02.000> you<02:07:02.159> save<02:07:02.400> it" + }, + { + "start": 7622.47, + "duration": 0.0, + "text": "that your own type like can you save it" + }, + { + "start": 7622.48, + "duration": 0.0, + "text": "that your own type like can you save it on<02:07:02.639> a<02:07:02.800> point<02:07:03.119> basis<02:07:03.599> so<02:07:03.920> that<02:07:04.159> you<02:07:04.320> can<02:07:04.480> always" + }, + { + "start": 7624.79, + "duration": 0.0, + "text": "on a point basis so that you can always" + }, + { + "start": 7624.8, + "duration": 0.0, + "text": "on a point basis so that you can always like<02:07:05.040> look<02:07:05.280> at<02:07:05.440> your<02:07:05.679> pictures<02:07:06.480> or<02:07:06.719> you<02:07:06.880> have" + }, + { + "start": 7627.03, + "duration": 0.0, + "text": "like look at your pictures or you have" + }, + { + "start": 7627.04, + "duration": 0.0, + "text": "like look at your pictures or you have to<02:07:07.440> always<02:07:07.840> like<02:07:08.159> enter<02:07:08.480> it<02:07:09.119> when<02:07:09.360> you<02:07:09.520> start" + }, + { + "start": 7629.75, + "duration": 0.0, + "text": "to always like enter it when you start" + }, + { + "start": 7629.76, + "duration": 0.0, + "text": "to always like enter it when you start having<02:07:10.079> the<02:07:10.159> B." + }, + { + "start": 7631.109, + "duration": 0.0, + "text": "having the B." + }, + { + "start": 7631.119, + "duration": 0.0, + "text": "having the B. >> Right.<02:07:11.440> So,<02:07:12.159> um,<02:07:13.360> for<02:07:13.599> some<02:07:13.760> reason,<02:07:14.079> you" + }, + { + "start": 7634.149, + "duration": 0.0, + "text": ">> Right. So, um, for some reason, you" + }, + { + "start": 7634.159, + "duration": 0.0, + "text": ">> Right. So, um, for some reason, you know,<02:07:14.320> you<02:07:14.480> asked<02:07:14.639> that<02:07:14.880> question<02:07:15.040> and<02:07:15.280> I" + }, + { + "start": 7635.43, + "duration": 0.0, + "text": "know, you asked that question and I" + }, + { + "start": 7635.44, + "duration": 0.0, + "text": "know, you asked that question and I thought<02:07:15.599> I<02:07:15.760> had<02:07:15.840> a<02:07:16.079> slide<02:07:16.320> about<02:07:16.480> it.<02:07:17.360> Maybe<02:07:17.599> I" + }, + { + "start": 7637.75, + "duration": 0.0, + "text": "thought I had a slide about it. Maybe I" + }, + { + "start": 7637.76, + "duration": 0.0, + "text": "thought I had a slide about it. Maybe I just<02:07:18.000> had<02:07:18.159> a<02:07:18.320> sentence<02:07:18.560> on<02:07:18.719> my<02:07:18.800> notes<02:07:19.040> that<02:07:19.119> I" + }, + { + "start": 7639.27, + "duration": 0.0, + "text": "just had a sentence on my notes that I" + }, + { + "start": 7639.28, + "duration": 0.0, + "text": "just had a sentence on my notes that I forgot<02:07:19.520> to<02:07:19.599> say,<02:07:19.840> but,<02:07:20.719> um,<02:07:21.199> even<02:07:21.440> though<02:07:21.599> I<02:07:21.760> I" + }, + { + "start": 7642.069, + "duration": 0.0, + "text": "forgot to say, but, um, even though I I" + }, + { + "start": 7642.079, + "duration": 0.0, + "text": "forgot to say, but, um, even though I I realized<02:07:22.320> I<02:07:22.480> was<02:07:22.639> reading,<02:07:23.440> but<02:07:24.159> uh,<02:07:24.320> but" + }, + { + "start": 7644.47, + "duration": 0.0, + "text": "realized I was reading, but uh, but" + }, + { + "start": 7644.48, + "duration": 0.0, + "text": "realized I was reading, but uh, but yeah,<02:07:24.639> I<02:07:24.800> guess<02:07:24.880> I<02:07:25.040> forgot<02:07:25.280> to<02:07:25.360> say<02:07:25.520> it<02:07:25.679> or<02:07:26.159> it" + }, + { + "start": 7646.55, + "duration": 0.0, + "text": "yeah, I guess I forgot to say it or it" + }, + { + "start": 7646.56, + "duration": 0.0, + "text": "yeah, I guess I forgot to say it or it maybe<02:07:26.880> I<02:07:27.199> misremembered<02:07:27.760> making<02:07:27.920> a<02:07:28.079> slide<02:07:28.320> for" + }, + { + "start": 7648.47, + "duration": 0.0, + "text": "maybe I misremembered making a slide for" + }, + { + "start": 7648.48, + "duration": 0.0, + "text": "maybe I misremembered making a slide for it.<02:07:28.719> But<02:07:29.520> point<02:07:29.760> being<02:07:30.560> um<02:07:31.040> yes<02:07:31.280> there<02:07:31.440> is<02:07:31.599> a" + }, + { + "start": 7651.669, + "duration": 0.0, + "text": "it. But point being um yes there is a" + }, + { + "start": 7651.679, + "duration": 0.0, + "text": "it. But point being um yes there is a way<02:07:31.840> to<02:07:31.920> annotate<02:07:32.400> that<02:07:32.719> types<02:07:33.199> should<02:07:33.440> be<02:07:33.679> ex" + }, + { + "start": 7655.03, + "duration": 0.0, + "text": "way to annotate that types should be ex" + }, + { + "start": 7655.04, + "duration": 0.0, + "text": "way to annotate that types should be ex expanded<02:07:35.520> in<02:07:35.760> some<02:07:36.000> particular<02:07:36.480> way<02:07:36.639> like" + }, + { + "start": 7656.79, + "duration": 0.0, + "text": "expanded in some particular way like" + }, + { + "start": 7656.8, + "duration": 0.0, + "text": "expanded in some particular way like when<02:07:37.119> and<02:07:37.360> the<02:07:37.599> way<02:07:37.679> that<02:07:37.920> works<02:07:38.239> basically<02:07:38.560> is" + }, + { + "start": 7658.79, + "duration": 0.0, + "text": "when and the way that works basically is" + }, + { + "start": 7658.8, + "duration": 0.0, + "text": "when and the way that works basically is because<02:07:39.760> so<02:07:40.000> what<02:07:40.159> you<02:07:40.320> would<02:07:40.400> enter<02:07:40.719> manually" + }, + { + "start": 7661.03, + "duration": 0.0, + "text": "because so what you would enter manually" + }, + { + "start": 7661.04, + "duration": 0.0, + "text": "because so what you would enter manually when<02:07:41.280> you<02:07:41.360> start<02:07:41.440> a<02:07:41.599> debugging<02:07:42.000> session<02:07:42.239> is" + }, + { + "start": 7662.31, + "duration": 0.0, + "text": "when you start a debugging session is" + }, + { + "start": 7662.32, + "duration": 0.0, + "text": "when you start a debugging session is like<02:07:42.560> say<02:07:42.639> you've<02:07:42.800> got<02:07:42.880> your<02:07:43.040> texture<02:07:43.440> type<02:07:44.560> um" + }, + { + "start": 7664.79, + "duration": 0.0, + "text": "like say you've got your texture type um" + }, + { + "start": 7664.8, + "duration": 0.0, + "text": "like say you've got your texture type um and<02:07:45.280> it's<02:07:45.599> or<02:07:45.840> it's<02:07:46.000> like<02:07:46.079> a<02:07:46.239> loaded<02:07:46.480> bit<02:07:46.719> map" + }, + { + "start": 7666.87, + "duration": 0.0, + "text": "and it's or it's like a loaded bit map" + }, + { + "start": 7666.88, + "duration": 0.0, + "text": "and it's or it's like a loaded bit map type<02:07:47.119> because<02:07:47.280> it's<02:07:47.360> all<02:07:47.520> CPU<02:07:47.840> memory" + }, + { + "start": 7668.069, + "duration": 0.0, + "text": "type because it's all CPU memory" + }, + { + "start": 7668.079, + "duration": 0.0, + "text": "type because it's all CPU memory obviously<02:07:48.560> you<02:07:48.719> need<02:07:48.800> to<02:07:48.960> do<02:07:49.040> other<02:07:49.199> stuff<02:07:49.360> for" + }, + { + "start": 7669.51, + "duration": 0.0, + "text": "obviously you need to do other stuff for" + }, + { + "start": 7669.52, + "duration": 0.0, + "text": "obviously you need to do other stuff for GPU<02:07:49.840> memory<02:07:50.079> but<02:07:50.239> let's<02:07:50.320> say<02:07:50.400> you've<02:07:50.560> got<02:07:50.639> a" + }, + { + "start": 7670.709, + "duration": 0.0, + "text": "GPU memory but let's say you've got a" + }, + { + "start": 7670.719, + "duration": 0.0, + "text": "GPU memory but let's say you've got a loaded<02:07:50.960> bit<02:07:51.199> map<02:07:51.440> or<02:07:51.599> decoded<02:07:52.000> bit<02:07:52.239> map<02:07:52.400> type" + }, + { + "start": 7672.629, + "duration": 0.0, + "text": "loaded bit map or decoded bit map type" + }, + { + "start": 7672.639, + "duration": 0.0, + "text": "loaded bit map or decoded bit map type or<02:07:52.800> something<02:07:52.960> like<02:07:53.040> that<02:07:53.679> you<02:07:53.840> have<02:07:53.920> an" + }, + { + "start": 7674.069, + "duration": 0.0, + "text": "or something like that you have an" + }, + { + "start": 7674.079, + "duration": 0.0, + "text": "or something like that you have an evaluation<02:07:54.480> of<02:07:54.639> it<02:07:55.280> in<02:07:55.440> order<02:07:55.599> to<02:07:55.840> start" + }, + { + "start": 7676.069, + "duration": 0.0, + "text": "evaluation of it in order to start" + }, + { + "start": 7676.079, + "duration": 0.0, + "text": "evaluation of it in order to start visualizing<02:07:56.480> it<02:07:56.639> as<02:07:56.719> a<02:07:56.880> bit<02:07:57.040> map<02:07:57.280> you<02:07:57.440> would" + }, + { + "start": 7677.589, + "duration": 0.0, + "text": "visualizing it as a bit map you would" + }, + { + "start": 7677.599, + "duration": 0.0, + "text": "visualizing it as a bit map you would say<02:07:57.920> Okay,<02:07:58.480> call<02:07:58.800> the<02:07:59.040> bitmap<02:07:59.520> visualizer" + }, + { + "start": 7680.069, + "duration": 0.0, + "text": "say Okay, call the bitmap visualizer" + }, + { + "start": 7680.079, + "duration": 0.0, + "text": "say Okay, call the bitmap visualizer with<02:08:00.480> like<02:08:00.880> you<02:08:01.040> know<02:08:01.119> your<02:08:01.599> loaded<02:08:01.920> or" + }, + { + "start": 7682.149, + "duration": 0.0, + "text": "with like you know your loaded or" + }, + { + "start": 7682.159, + "duration": 0.0, + "text": "with like you know your loaded or decoded<02:08:02.560> bitmap<02:08:03.199> data<02:08:03.599> and<02:08:03.840> then<02:08:04.000> maybe" + }, + { + "start": 7684.229, + "duration": 0.0, + "text": "decoded bitmap data and then maybe" + }, + { + "start": 7684.239, + "duration": 0.0, + "text": "decoded bitmap data and then maybe decoded<02:08:04.639> bitmap.width<02:08:05.360> and<02:08:05.520> then<02:08:05.920> height.<02:08:07.199> Um" + }, + { + "start": 7688.31, + "duration": 0.0, + "text": "decoded bitmap.width and then height. Um" + }, + { + "start": 7688.32, + "duration": 0.0, + "text": "decoded bitmap.width and then height. Um and<02:08:08.560> so<02:08:08.800> the<02:08:09.119> the<02:08:09.520> mechanism<02:08:10.000> I<02:08:10.239> have<02:08:10.400> in<02:08:10.560> the" + }, + { + "start": 7690.629, + "duration": 0.0, + "text": "and so the the mechanism I have in the" + }, + { + "start": 7690.639, + "duration": 0.0, + "text": "and so the the mechanism I have in the rad<02:08:10.880> debugger<02:08:11.360> to<02:08:11.520> support<02:08:11.840> that<02:08:12.320> associated" + }, + { + "start": 7692.709, + "duration": 0.0, + "text": "rad debugger to support that associated" + }, + { + "start": 7692.719, + "duration": 0.0, + "text": "rad debugger to support that associated with<02:08:12.880> type<02:08:13.119> info<02:08:13.760> is<02:08:14.000> just<02:08:14.239> a<02:08:14.880> the<02:08:15.119> visualizers" + }, + { + "start": 7695.75, + "duration": 0.0, + "text": "with type info is just a the visualizers" + }, + { + "start": 7695.76, + "duration": 0.0, + "text": "with type info is just a the visualizers to<02:08:15.920> the<02:08:16.079> user<02:08:16.639> facing<02:08:17.040> thing.<02:08:17.360> I<02:08:17.599> call<02:08:17.679> them" + }, + { + "start": 7697.83, + "duration": 0.0, + "text": "to the user facing thing. I call them" + }, + { + "start": 7697.84, + "duration": 0.0, + "text": "to the user facing thing. I call them lenses<02:08:18.239> in<02:08:18.400> the<02:08:18.480> code<02:08:18.639> but<02:08:18.880> to<02:08:19.040> the<02:08:19.119> users" + }, + { + "start": 7699.43, + "duration": 0.0, + "text": "lenses in the code but to the users" + }, + { + "start": 7699.44, + "duration": 0.0, + "text": "lenses in the code but to the users they're<02:08:19.679> just<02:08:19.840> called<02:08:20.000> views.<02:08:21.360> Um<02:08:22.000> and<02:08:22.239> the" + }, + { + "start": 7702.39, + "duration": 0.0, + "text": "they're just called views. Um and the" + }, + { + "start": 7702.4, + "duration": 0.0, + "text": "they're just called views. Um and the feature<02:08:22.639> in<02:08:22.719> the<02:08:22.800> radook<02:08:23.199> is<02:08:23.360> called<02:08:23.440> a<02:08:23.599> type" + }, + { + "start": 7703.83, + "duration": 0.0, + "text": "feature in the radook is called a type" + }, + { + "start": 7703.84, + "duration": 0.0, + "text": "feature in the radook is called a type view.<02:08:24.159> And<02:08:24.320> the<02:08:24.480> type<02:08:24.719> view<02:08:24.960> is<02:08:25.119> just" + }, + { + "start": 7705.35, + "duration": 0.0, + "text": "view. And the type view is just" + }, + { + "start": 7705.36, + "duration": 0.0, + "text": "view. And the type view is just basically<02:08:25.679> saying<02:08:26.719> here's<02:08:26.960> a<02:08:27.119> type" + }, + { + "start": 7707.43, + "duration": 0.0, + "text": "basically saying here's a type" + }, + { + "start": 7707.44, + "duration": 0.0, + "text": "basically saying here's a type expression<02:08:28.560> and<02:08:28.880> if<02:08:29.199> you<02:08:29.360> evaluate<02:08:29.920> something" + }, + { + "start": 7710.229, + "duration": 0.0, + "text": "expression and if you evaluate something" + }, + { + "start": 7710.239, + "duration": 0.0, + "text": "expression and if you evaluate something as<02:08:30.560> this<02:08:30.800> type,<02:08:31.440> I<02:08:31.679> want<02:08:31.840> you<02:08:32.000> to<02:08:32.159> actually" + }, + { + "start": 7712.47, + "duration": 0.0, + "text": "as this type, I want you to actually" + }, + { + "start": 7712.48, + "duration": 0.0, + "text": "as this type, I want you to actually evaluate<02:08:32.960> this<02:08:33.199> expression<02:08:33.920> instead.<02:08:35.280> And" + }, + { + "start": 7716.39, + "duration": 0.0, + "text": "evaluate this expression instead. And" + }, + { + "start": 7716.4, + "duration": 0.0, + "text": "evaluate this expression instead. And because<02:08:36.800> each<02:08:37.119> expression<02:08:38.159> can<02:08:39.040> um<02:08:40.079> can" + }, + { + "start": 7720.39, + "duration": 0.0, + "text": "because each expression can um can" + }, + { + "start": 7720.4, + "duration": 0.0, + "text": "because each expression can um can include<02:08:40.719> the<02:08:40.960> visualizer<02:08:42.159> uh<02:08:42.560> selection<02:08:42.960> and" + }, + { + "start": 7723.109, + "duration": 0.0, + "text": "include the visualizer uh selection and" + }, + { + "start": 7723.119, + "duration": 0.0, + "text": "include the visualizer uh selection and and<02:08:43.599> parameterizations,<02:08:44.639> you<02:08:44.800> can<02:08:44.880> say," + }, + { + "start": 7725.109, + "duration": 0.0, + "text": "and parameterizations, you can say," + }, + { + "start": 7725.119, + "duration": 0.0, + "text": "and parameterizations, you can say, okay,<02:08:45.280> I've<02:08:45.440> got<02:08:45.520> this<02:08:45.679> decoded<02:08:46.079> bitmap<02:08:46.560> type" + }, + { + "start": 7727.83, + "duration": 0.0, + "text": "okay, I've got this decoded bitmap type" + }, + { + "start": 7727.84, + "duration": 0.0, + "text": "okay, I've got this decoded bitmap type uh<02:08:48.079> visual.<02:08:48.560> Oh<02:08:48.719> yeah,<02:08:48.880> and<02:08:49.040> the<02:08:49.280> second<02:08:49.440> part" + }, + { + "start": 7729.589, + "duration": 0.0, + "text": "uh visual. Oh yeah, and the second part" + }, + { + "start": 7729.599, + "duration": 0.0, + "text": "uh visual. Oh yeah, and the second part of<02:08:49.679> it,<02:08:49.920> this<02:08:50.159> expression<02:08:50.480> can<02:08:50.719> refer<02:08:50.960> to<02:08:51.040> the" + }, + { + "start": 7731.27, + "duration": 0.0, + "text": "of it, this expression can refer to the" + }, + { + "start": 7731.28, + "duration": 0.0, + "text": "of it, this expression can refer to the original<02:08:51.599> expression.<02:08:52.320> So<02:08:52.719> basically<02:08:53.040> you" + }, + { + "start": 7733.27, + "duration": 0.0, + "text": "original expression. So basically you" + }, + { + "start": 7733.28, + "duration": 0.0, + "text": "original expression. So basically you say<02:08:53.679> decode<02:08:54.000> a<02:08:54.079> bit<02:08:54.320> map<02:08:54.639> is<02:08:54.880> my<02:08:55.040> type<02:08:55.360> and<02:08:55.599> the" + }, + { + "start": 7735.75, + "duration": 0.0, + "text": "say decode a bit map is my type and the" + }, + { + "start": 7735.76, + "duration": 0.0, + "text": "say decode a bit map is my type and the way<02:08:55.840> I<02:08:56.000> want<02:08:56.079> to<02:08:56.159> visualize<02:08:56.480> that<02:08:56.800> is<02:08:57.040> bit<02:08:57.360> map" + }, + { + "start": 7737.75, + "duration": 0.0, + "text": "way I want to visualize that is bit map" + }, + { + "start": 7737.76, + "duration": 0.0, + "text": "way I want to visualize that is bit map and<02:08:58.000> then<02:08:58.079> you<02:08:58.239> can<02:08:58.400> even<02:08:58.560> just<02:08:58.639> refer<02:08:58.880> to<02:08:58.960> the" + }, + { + "start": 7739.109, + "duration": 0.0, + "text": "and then you can even just refer to the" + }, + { + "start": 7739.119, + "duration": 0.0, + "text": "and then you can even just refer to the members<02:08:59.360> by<02:08:59.520> name.<02:08:59.679> So<02:08:59.760> you<02:08:59.840> can<02:08:59.920> say<02:09:00.079> data" + }, + { + "start": 7740.39, + "duration": 0.0, + "text": "members by name. So you can say data" + }, + { + "start": 7740.4, + "duration": 0.0, + "text": "members by name. So you can say data width<02:09:00.719> height<02:09:01.199> close<02:09:02.239> and<02:09:02.480> then<02:09:03.199> that<02:09:03.520> can" + }, + { + "start": 7743.589, + "duration": 0.0, + "text": "width height close and then that can" + }, + { + "start": 7743.599, + "duration": 0.0, + "text": "width height close and then that can either<02:09:03.840> be<02:09:04.000> saved<02:09:04.239> in<02:09:04.400> your<02:09:04.560> program.<02:09:05.599> Um<02:09:06.239> we" + }, + { + "start": 7746.39, + "duration": 0.0, + "text": "either be saved in your program. Um we" + }, + { + "start": 7746.4, + "duration": 0.0, + "text": "either be saved in your program. Um we have<02:09:06.480> a<02:09:06.639> header<02:09:06.960> library<02:09:07.280> where<02:09:07.440> you<02:09:07.599> just" + }, + { + "start": 7747.75, + "duration": 0.0, + "text": "have a header library where you just" + }, + { + "start": 7747.76, + "duration": 0.0, + "text": "have a header library where you just like<02:09:07.920> say<02:09:08.079> red<02:09:08.320> imageg<02:09:08.639> type<02:09:08.800> view<02:09:09.040> decode<02:09:09.280> a" + }, + { + "start": 7749.43, + "duration": 0.0, + "text": "like say red imageg type view decode a" + }, + { + "start": 7749.44, + "duration": 0.0, + "text": "like say red imageg type view decode a bit<02:09:09.679> map<02:09:10.079> bit<02:09:10.400> map<02:09:10.800> base<02:09:11.040> width<02:09:11.280> height.<02:09:12.159> Um<02:09:12.480> or" + }, + { + "start": 7752.629, + "duration": 0.0, + "text": "bit map bit map base width height. Um or" + }, + { + "start": 7752.639, + "duration": 0.0, + "text": "bit map bit map base width height. Um or it<02:09:12.800> can<02:09:12.880> be<02:09:12.960> in<02:09:13.119> the<02:09:13.199> debugger<02:09:13.679> config<02:09:14.560> and" + }, + { + "start": 7754.79, + "duration": 0.0, + "text": "it can be in the debugger config and" + }, + { + "start": 7754.8, + "duration": 0.0, + "text": "it can be in the debugger config and then<02:09:15.040> either<02:09:15.360> way<02:09:15.679> when<02:09:15.840> the<02:09:16.000> debugger<02:09:16.320> loads" + }, + { + "start": 7756.55, + "duration": 0.0, + "text": "then either way when the debugger loads" + }, + { + "start": 7756.56, + "duration": 0.0, + "text": "then either way when the debugger loads the<02:09:16.719> program<02:09:16.960> it'll<02:09:17.280> see<02:09:17.360> that<02:09:17.599> type<02:09:17.840> view<02:09:18.000> and" + }, + { + "start": 7758.149, + "duration": 0.0, + "text": "the program it'll see that type view and" + }, + { + "start": 7758.159, + "duration": 0.0, + "text": "the program it'll see that type view and it<02:09:18.320> will<02:09:18.480> apply<02:09:18.719> it<02:09:18.880> to<02:09:19.040> all<02:09:19.360> evaluations<02:09:19.920> of" + }, + { + "start": 7760.069, + "duration": 0.0, + "text": "it will apply it to all evaluations of" + }, + { + "start": 7760.079, + "duration": 0.0, + "text": "it will apply it to all evaluations of that<02:09:20.239> type.<02:09:20.639> So<02:09:20.800> then<02:09:21.040> even<02:09:21.199> if<02:09:21.360> you<02:09:21.520> like" + }, + { + "start": 7761.669, + "duration": 0.0, + "text": "that type. So then even if you like" + }, + { + "start": 7761.679, + "duration": 0.0, + "text": "that type. So then even if you like hover<02:09:22.000> it<02:09:22.400> in<02:09:22.719> your<02:09:22.880> source<02:09:23.119> code,<02:09:23.360> you'll<02:09:23.520> see" + }, + { + "start": 7763.589, + "duration": 0.0, + "text": "hover it in your source code, you'll see" + }, + { + "start": 7763.599, + "duration": 0.0, + "text": "hover it in your source code, you'll see the<02:09:23.760> bit<02:09:24.000> map" + }, + { + "start": 7765.51, + "duration": 0.0, + "text": "the bit map" + }, + { + "start": 7765.52, + "duration": 0.0, + "text": "the bit map >> and<02:09:26.079> and<02:09:26.239> it's<02:09:26.480> a<02:09:26.719> nice<02:09:26.880> example<02:09:27.119> of<02:09:27.280> how<02:09:27.520> you" + }, + { + "start": 7767.75, + "duration": 0.0, + "text": ">> and and it's a nice example of how you" + }, + { + "start": 7767.76, + "duration": 0.0, + "text": ">> and and it's a nice example of how you think<02:09:27.920> about<02:09:28.159> the<02:09:28.400> whole<02:09:28.560> pipeline<02:09:28.960> of<02:09:29.199> like" + }, + { + "start": 7769.589, + "duration": 0.0, + "text": "think about the whole pipeline of like" + }, + { + "start": 7769.599, + "duration": 0.0, + "text": "think about the whole pipeline of like the<02:09:29.840> idea<02:09:30.079> is<02:09:30.239> to<02:09:30.400> reduce<02:09:30.719> the<02:09:30.960> total<02:09:31.199> round" + }, + { + "start": 7771.43, + "duration": 0.0, + "text": "the idea is to reduce the total round" + }, + { + "start": 7771.44, + "duration": 0.0, + "text": "the idea is to reduce the total round trip<02:09:31.760> time.<02:09:32.000> So<02:09:32.159> if<02:09:32.320> I<02:09:32.480> have<02:09:32.560> to<02:09:32.719> reenter<02:09:33.280> my" + }, + { + "start": 7773.589, + "duration": 0.0, + "text": "trip time. So if I have to reenter my" + }, + { + "start": 7773.599, + "duration": 0.0, + "text": "trip time. So if I have to reenter my expressions<02:09:34.159> every<02:09:34.400> time<02:09:34.639> that<02:09:34.880> sucks<02:09:35.280> how<02:09:35.440> do" + }, + { + "start": 7775.51, + "duration": 0.0, + "text": "expressions every time that sucks how do" + }, + { + "start": 7775.52, + "duration": 0.0, + "text": "expressions every time that sucks how do I<02:09:35.599> make<02:09:35.760> the<02:09:36.000> remove<02:09:36.159> that<02:09:36.400> and<02:09:36.480> you<02:09:36.719> came<02:09:36.800> up" + }, + { + "start": 7776.95, + "duration": 0.0, + "text": "I make the remove that and you came up" + }, + { + "start": 7776.96, + "duration": 0.0, + "text": "I make the remove that and you came up with<02:09:37.119> that<02:09:37.280> header" + }, + { + "start": 7777.99, + "duration": 0.0, + "text": "with that header" + }, + { + "start": 7778.0, + "duration": 0.0, + "text": "with that header >> including<02:09:38.400> the<02:09:38.480> header<02:09:38.719> and<02:09:38.880> giving<02:09:39.119> having" + }, + { + "start": 7779.51, + "duration": 0.0, + "text": ">> including the header and giving having" + }, + { + "start": 7779.52, + "duration": 0.0, + "text": ">> including the header and giving having that<02:09:40.000> special<02:09:40.400> visualiz<02:09:41.280> visualizer<02:09:41.920> type" + }, + { + "start": 7782.149, + "duration": 0.0, + "text": "that special visualiz visualizer type" + }, + { + "start": 7782.159, + "duration": 0.0, + "text": "that special visualiz visualizer type info" + }, + { + "start": 7782.95, + "duration": 0.0, + "text": "info" + }, + { + "start": 7782.96, + "duration": 0.0, + "text": "info >> in<02:09:43.280> the<02:09:43.440> program<02:09:43.760> so<02:09:44.000> that<02:09:44.159> it's<02:09:44.639> there<02:09:44.880> when" + }, + { + "start": 7785.109, + "duration": 0.0, + "text": ">> in the program so that it's there when" + }, + { + "start": 7785.119, + "duration": 0.0, + "text": ">> in the program so that it's there when you<02:09:45.280> run<02:09:45.360> it." + }, + { + "start": 7785.669, + "duration": 0.0, + "text": "you run it." + }, + { + "start": 7785.679, + "duration": 0.0, + "text": "you run it. >> Yep.<02:09:45.760> And<02:09:45.920> it's<02:09:46.159> the<02:09:46.239> same<02:09:46.400> thing<02:09:46.480> as<02:09:46.800> uh<02:09:46.880> NATV" + }, + { + "start": 7787.189, + "duration": 0.0, + "text": ">> Yep. And it's the same thing as uh NATV" + }, + { + "start": 7787.199, + "duration": 0.0, + "text": ">> Yep. And it's the same thing as uh NATV viz<02:09:47.520> as<02:09:47.599> well.<02:09:47.840> Like<02:09:48.079> it's<02:09:48.239> it's<02:09:48.639> uh<02:09:48.800> sort<02:09:48.960> of" + }, + { + "start": 7789.03, + "duration": 0.0, + "text": "viz as well. Like it's it's uh sort of" + }, + { + "start": 7789.04, + "duration": 0.0, + "text": "viz as well. Like it's it's uh sort of the<02:09:49.679> extension<02:09:50.079> and<02:09:50.239> cleaned<02:09:50.480> up<02:09:50.639> version<02:09:50.800> of" + }, + { + "start": 7790.95, + "duration": 0.0, + "text": "the extension and cleaned up version of" + }, + { + "start": 7790.96, + "duration": 0.0, + "text": "the extension and cleaned up version of NAV<02:09:51.199> viz." + }, + { + "start": 7791.589, + "duration": 0.0, + "text": "NAV viz." + }, + { + "start": 7791.599, + "duration": 0.0, + "text": "NAV viz. >> Yeah.<02:09:51.760> Like<02:09:52.480> LVM<02:09:53.119> like<02:09:53.520> debug<02:09:54.000> LDB<02:09:54.639> etc.<02:09:54.880> Other" + }, + { + "start": 7795.03, + "duration": 0.0, + "text": ">> Yeah. Like LVM like debug LDB etc. Other" + }, + { + "start": 7795.04, + "duration": 0.0, + "text": ">> Yeah. Like LVM like debug LDB etc. Other debuggers<02:09:55.440> have<02:09:55.599> that<02:09:55.760> but<02:09:55.920> it's<02:09:56.159> not<02:09:56.400> in<02:09:56.719> your" + }, + { + "start": 7797.03, + "duration": 0.0, + "text": "debuggers have that but it's not in your" + }, + { + "start": 7797.04, + "duration": 0.0, + "text": "debuggers have that but it's not in your program<02:09:58.000> like" + }, + { + "start": 7798.95, + "duration": 0.0, + "text": "program like" + }, + { + "start": 7798.96, + "duration": 0.0, + "text": "program like >> Yeah.<02:09:59.119> It's<02:09:59.280> a<02:09:59.360> big<02:09:59.440> problem." + }, + { + "start": 7799.75, + "duration": 0.0, + "text": ">> Yeah. It's a big problem." + }, + { + "start": 7799.76, + "duration": 0.0, + "text": ">> Yeah. It's a big problem. >> It's<02:09:59.920> always<02:10:00.079> a<02:10:00.320> sidec<02:10:00.719> car<02:10:01.119> thing." + }, + { + "start": 7801.75, + "duration": 0.0, + "text": ">> It's always a sidec car thing." + }, + { + "start": 7801.76, + "duration": 0.0, + "text": ">> It's always a sidec car thing. >> Yep." + }, + { + "start": 7803.189, + "duration": 0.0, + "text": ">> Yep." + }, + { + "start": 7803.199, + "duration": 0.0, + "text": ">> Yep. >> All<02:10:03.280> right.<02:10:04.320> Any<02:10:04.560> more<02:10:04.800> questions?<02:10:06.079> There" + }, + { + "start": 7806.31, + "duration": 0.0, + "text": ">> All right. Any more questions? There" + }, + { + "start": 7806.32, + "duration": 0.0, + "text": ">> All right. Any more questions? There were<02:10:06.480> more<02:10:06.639> hands.<02:10:07.840> Guess<02:10:08.079> they<02:10:08.239> got<02:10:08.400> tired." + }, + { + "start": 7809.75, + "duration": 0.0, + "text": "were more hands. Guess they got tired." + }, + { + "start": 7809.76, + "duration": 0.0, + "text": "were more hands. Guess they got tired. >> Yeah.<02:10:10.480> This<02:10:10.639> is<02:10:10.800> sort<02:10:10.880> of<02:10:10.960> a<02:10:11.119> followup<02:10:11.440> to<02:10:11.599> the" + }, + { + "start": 7811.75, + "duration": 0.0, + "text": ">> Yeah. This is sort of a followup to the" + }, + { + "start": 7811.76, + "duration": 0.0, + "text": ">> Yeah. This is sort of a followup to the file<02:10:12.639> visualizer<02:10:13.119> kind<02:10:13.280> of<02:10:13.360> question,<02:10:13.520> but" + }, + { + "start": 7813.75, + "duration": 0.0, + "text": "file visualizer kind of question, but" + }, + { + "start": 7813.76, + "duration": 0.0, + "text": "file visualizer kind of question, but did<02:10:13.920> you<02:10:14.000> ever<02:10:14.239> consider<02:10:14.480> dumping<02:10:14.800> the<02:10:14.960> data" + }, + { + "start": 7815.03, + "duration": 0.0, + "text": "did you ever consider dumping the data" + }, + { + "start": 7815.04, + "duration": 0.0, + "text": "did you ever consider dumping the data to<02:10:15.360> file<02:10:15.520> in<02:10:15.679> an<02:10:15.840> efficient<02:10:16.079> manner<02:10:16.320> so<02:10:16.480> you" + }, + { + "start": 7816.629, + "duration": 0.0, + "text": "to file in an efficient manner so you" + }, + { + "start": 7816.639, + "duration": 0.0, + "text": "to file in an efficient manner so you can<02:10:16.719> use<02:10:16.880> existing<02:10:17.280> programs?" + }, + { + "start": 7818.39, + "duration": 0.0, + "text": "can use existing programs?" + }, + { + "start": 7818.4, + "duration": 0.0, + "text": "can use existing programs? >> Um," + }, + { + "start": 7820.47, + "duration": 0.0, + "text": ">> Um," + }, + { + "start": 7820.48, + "duration": 0.0, + "text": ">> Um, I<02:10:20.719> mean<02:10:21.760> it's<02:10:22.000> sort<02:10:22.239> of<02:10:22.320> like<02:10:23.119> uh<02:10:24.000> the<02:10:24.239> problem" + }, + { + "start": 7824.55, + "duration": 0.0, + "text": "I mean it's sort of like uh the problem" + }, + { + "start": 7824.56, + "duration": 0.0, + "text": "I mean it's sort of like uh the problem once<02:10:24.880> you're<02:10:25.199> stretching<02:10:25.599> across<02:10:25.920> the" + }, + { + "start": 7826.069, + "duration": 0.0, + "text": "once you're stretching across the" + }, + { + "start": 7826.079, + "duration": 0.0, + "text": "once you're stretching across the program<02:10:26.400> boundary<02:10:26.800> is<02:10:27.040> that<02:10:27.199> the<02:10:27.440> operating" + }, + { + "start": 7827.83, + "duration": 0.0, + "text": "program boundary is that the operating" + }, + { + "start": 7827.84, + "duration": 0.0, + "text": "program boundary is that the operating system<02:10:28.079> primitives<02:10:28.560> that<02:10:28.800> you<02:10:29.119> that<02:10:29.440> are" + }, + { + "start": 7829.669, + "duration": 0.0, + "text": "system primitives that you that are" + }, + { + "start": 7829.679, + "duration": 0.0, + "text": "system primitives that you that are available<02:10:30.400> for<02:10:31.520> program<02:10:31.920> integration<02:10:32.880> are" + }, + { + "start": 7833.109, + "duration": 0.0, + "text": "available for program integration are" + }, + { + "start": 7833.119, + "duration": 0.0, + "text": "available for program integration are kind<02:10:33.280> of<02:10:33.360> too<02:10:33.599> weak<02:10:34.000> for<02:10:34.239> what<02:10:34.400> you<02:10:34.560> really" + }, + { + "start": 7834.709, + "duration": 0.0, + "text": "kind of too weak for what you really" + }, + { + "start": 7834.719, + "duration": 0.0, + "text": "kind of too weak for what you really need.<02:10:34.960> And<02:10:35.119> this<02:10:35.280> is<02:10:35.440> why<02:10:35.679> people<02:10:35.920> want" + }, + { + "start": 7836.229, + "duration": 0.0, + "text": "need. And this is why people want" + }, + { + "start": 7836.239, + "duration": 0.0, + "text": "need. And this is why people want integrated<02:10:36.800> development<02:10:37.199> environments<02:10:37.599> at" + }, + { + "start": 7837.83, + "duration": 0.0, + "text": "integrated development environments at" + }, + { + "start": 7837.84, + "duration": 0.0, + "text": "integrated development environments at all<02:10:38.320> is<02:10:38.480> because<02:10:38.719> their<02:10:38.960> text<02:10:39.199> editor<02:10:39.440> and" + }, + { + "start": 7839.589, + "duration": 0.0, + "text": "all is because their text editor and" + }, + { + "start": 7839.599, + "duration": 0.0, + "text": "all is because their text editor and debugger<02:10:40.000> and<02:10:40.159> like<02:10:40.320> all<02:10:40.400> these<02:10:40.639> other<02:10:40.719> things" + }, + { + "start": 7840.87, + "duration": 0.0, + "text": "debugger and like all these other things" + }, + { + "start": 7840.88, + "duration": 0.0, + "text": "debugger and like all these other things they<02:10:41.040> want<02:10:41.119> in<02:10:41.280> their<02:10:41.360> IDE.<02:10:42.400> Um<02:10:43.040> they're" + }, + { + "start": 7843.35, + "duration": 0.0, + "text": "they want in their IDE. Um they're" + }, + { + "start": 7843.36, + "duration": 0.0, + "text": "they want in their IDE. Um they're really<02:10:43.840> like<02:10:45.040> they<02:10:45.280> could<02:10:45.440> be<02:10:45.599> separate" + }, + { + "start": 7845.83, + "duration": 0.0, + "text": "really like they could be separate" + }, + { + "start": 7845.84, + "duration": 0.0, + "text": "really like they could be separate programs<02:10:46.239> in<02:10:46.480> principle,<02:10:47.280> but<02:10:47.520> it<02:10:47.760> seems<02:10:47.920> like" + }, + { + "start": 7848.149, + "duration": 0.0, + "text": "programs in principle, but it seems like" + }, + { + "start": 7848.159, + "duration": 0.0, + "text": "programs in principle, but it seems like the<02:10:48.480> the<02:10:49.119> tools<02:10:49.440> that<02:10:49.599> the<02:10:49.760> operating<02:10:50.079> system" + }, + { + "start": 7850.39, + "duration": 0.0, + "text": "the the tools that the operating system" + }, + { + "start": 7850.4, + "duration": 0.0, + "text": "the the tools that the operating system provides<02:10:50.719> for<02:10:50.880> these<02:10:51.119> programs<02:10:51.440> to<02:10:51.760> connect" + }, + { + "start": 7852.069, + "duration": 0.0, + "text": "provides for these programs to connect" + }, + { + "start": 7852.079, + "duration": 0.0, + "text": "provides for these programs to connect with<02:10:52.239> each<02:10:52.480> other.<02:10:52.880> They<02:10:53.119> seem<02:10:53.280> a<02:10:53.440> little<02:10:53.520> bit" + }, + { + "start": 7853.669, + "duration": 0.0, + "text": "with each other. They seem a little bit" + }, + { + "start": 7853.679, + "duration": 0.0, + "text": "with each other. They seem a little bit too<02:10:53.840> weak<02:10:54.159> and<02:10:54.400> like<02:10:54.639> not<02:10:54.880> rich<02:10:55.199> enough<02:10:55.520> to" + }, + { + "start": 7855.83, + "duration": 0.0, + "text": "too weak and like not rich enough to" + }, + { + "start": 7855.84, + "duration": 0.0, + "text": "too weak and like not rich enough to really<02:10:56.079> provide<02:10:56.400> what<02:10:56.639> people<02:10:56.880> want.<02:10:57.520> And<02:10:57.679> so" + }, + { + "start": 7858.55, + "duration": 0.0, + "text": "really provide what people want. And so" + }, + { + "start": 7858.56, + "duration": 0.0, + "text": "really provide what people want. And so people<02:10:58.800> want<02:10:58.960> an<02:10:59.119> IDE<02:10:59.520> for<02:10:59.679> it.<02:11:00.079> It's<02:11:00.239> pretty" + }, + { + "start": 7860.47, + "duration": 0.0, + "text": "people want an IDE for it. It's pretty" + }, + { + "start": 7860.48, + "duration": 0.0, + "text": "people want an IDE for it. It's pretty much<02:11:00.560> the<02:11:00.719> same<02:11:00.880> thing<02:11:01.040> here.<02:11:01.360> It's<02:11:01.599> like<02:11:01.840> once" + }, + { + "start": 7862.149, + "duration": 0.0, + "text": "much the same thing here. It's like once" + }, + { + "start": 7862.159, + "duration": 0.0, + "text": "much the same thing here. It's like once you<02:11:02.560> dump<02:11:02.880> stuff<02:11:03.040> to<02:11:03.280> files,<02:11:03.760> it's<02:11:04.079> sort<02:11:04.239> of" + }, + { + "start": 7864.31, + "duration": 0.0, + "text": "you dump stuff to files, it's sort of" + }, + { + "start": 7864.32, + "duration": 0.0, + "text": "you dump stuff to files, it's sort of like<02:11:04.960> you've<02:11:05.199> introduced<02:11:05.599> a<02:11:05.840> cash<02:11:06.000> eviction" + }, + { + "start": 7866.47, + "duration": 0.0, + "text": "like you've introduced a cash eviction" + }, + { + "start": 7866.48, + "duration": 0.0, + "text": "like you've introduced a cash eviction problem.<02:11:06.800> It's<02:11:06.960> like<02:11:07.119> do<02:11:07.199> we<02:11:07.360> just<02:11:07.520> leave" + }, + { + "start": 7867.669, + "duration": 0.0, + "text": "problem. It's like do we just leave" + }, + { + "start": 7867.679, + "duration": 0.0, + "text": "problem. It's like do we just leave those<02:11:07.840> files<02:11:08.079> there<02:11:08.239> forever?<02:11:09.040> How<02:11:09.199> do<02:11:09.360> we" + }, + { + "start": 7869.51, + "duration": 0.0, + "text": "those files there forever? How do we" + }, + { + "start": 7869.52, + "duration": 0.0, + "text": "those files there forever? How do we open<02:11:09.760> the<02:11:09.920> other<02:11:10.159> program?<02:11:10.560> Is<02:11:10.719> it<02:11:10.880> different" + }, + { + "start": 7871.03, + "duration": 0.0, + "text": "open the other program? Is it different" + }, + { + "start": 7871.04, + "duration": 0.0, + "text": "open the other program? Is it different for<02:11:11.280> every<02:11:11.520> program?<02:11:11.920> Like<02:11:12.159> how<02:11:12.560> I've<02:11:12.880> I've" + }, + { + "start": 7873.109, + "duration": 0.0, + "text": "for every program? Like how I've I've" + }, + { + "start": 7873.119, + "duration": 0.0, + "text": "for every program? Like how I've I've got<02:11:13.199> to<02:11:13.280> start<02:11:13.520> calling<02:11:13.760> these<02:11:14.000> other" + }, + { + "start": 7874.229, + "duration": 0.0, + "text": "got to start calling these other" + }, + { + "start": 7874.239, + "duration": 0.0, + "text": "got to start calling these other programs<02:11:14.560> in<02:11:14.719> this<02:11:14.880> way.<02:11:15.520> Um<02:11:15.920> they<02:11:16.159> don't<02:11:16.239> live" + }, + { + "start": 7876.47, + "duration": 0.0, + "text": "programs in this way. Um they don't live" + }, + { + "start": 7876.48, + "duration": 0.0, + "text": "programs in this way. Um they don't live update<02:11:16.800> with<02:11:16.960> the<02:11:17.119> device<02:11:17.360> like<02:11:17.520> what<02:11:17.679> do<02:11:17.840> I" + }, + { + "start": 7877.91, + "duration": 0.0, + "text": "update with the device like what do I" + }, + { + "start": 7877.92, + "duration": 0.0, + "text": "update with the device like what do I have<02:11:18.000> to<02:11:18.320> re<02:11:18.719> serialize<02:11:19.199> to<02:11:19.360> disk<02:11:19.599> and<02:11:19.760> then" + }, + { + "start": 7879.83, + "duration": 0.0, + "text": "have to re serialize to disk and then" + }, + { + "start": 7879.84, + "duration": 0.0, + "text": "have to re serialize to disk and then it's<02:11:20.000> like<02:11:20.239> the<02:11:20.400> other<02:11:20.560> program<02:11:20.880> has<02:11:21.040> a<02:11:21.199> popup." + }, + { + "start": 7881.589, + "duration": 0.0, + "text": "it's like the other program has a popup." + }, + { + "start": 7881.599, + "duration": 0.0, + "text": "it's like the other program has a popup. It's<02:11:21.760> like<02:11:21.920> the<02:11:22.159> contents<02:11:22.480> of<02:11:22.639> this<02:11:22.800> file<02:11:23.119> have" + }, + { + "start": 7883.27, + "duration": 0.0, + "text": "It's like the contents of this file have" + }, + { + "start": 7883.28, + "duration": 0.0, + "text": "It's like the contents of this file have changed.<02:11:23.599> And<02:11:23.760> it's<02:11:23.920> like<02:11:24.079> ah<02:11:24.320> dude<02:11:24.560> like<02:11:24.800> this" + }, + { + "start": 7884.95, + "duration": 0.0, + "text": "changed. And it's like ah dude like this" + }, + { + "start": 7884.96, + "duration": 0.0, + "text": "changed. And it's like ah dude like this sucks.<02:11:25.280> Like<02:11:25.599> so<02:11:26.079> so<02:11:27.520> in<02:11:27.679> a<02:11:27.840> better<02:11:28.079> world<02:11:28.960> an" + }, + { + "start": 7889.109, + "duration": 0.0, + "text": "sucks. Like so so in a better world an" + }, + { + "start": 7889.119, + "duration": 0.0, + "text": "sucks. Like so so in a better world an operating<02:11:29.440> system<02:11:29.679> maybe<02:11:30.000> would<02:11:30.159> make<02:11:30.320> this" + }, + { + "start": 7890.47, + "duration": 0.0, + "text": "operating system maybe would make this" + }, + { + "start": 7890.48, + "duration": 0.0, + "text": "operating system maybe would make this all<02:11:30.639> work.<02:11:31.440> I<02:11:31.679> don't<02:11:31.840> think<02:11:31.920> they<02:11:32.079> do<02:11:32.320> right" + }, + { + "start": 7892.47, + "duration": 0.0, + "text": "all work. I don't think they do right" + }, + { + "start": 7892.48, + "duration": 0.0, + "text": "all work. I don't think they do right now<02:11:32.719> and<02:11:32.960> so<02:11:33.119> I<02:11:33.280> just<02:11:33.440> built<02:11:33.679> it<02:11:33.760> this<02:11:34.000> way." + }, + { + "start": 7894.31, + "duration": 0.0, + "text": "now and so I just built it this way." + }, + { + "start": 7894.32, + "duration": 0.0, + "text": "now and so I just built it this way. >> On<02:11:34.480> the<02:11:34.639> flip<02:11:34.880> side,<02:11:35.119> do<02:11:35.199> you<02:11:35.360> consider<02:11:35.679> having" + }, + { + "start": 7895.99, + "duration": 0.0, + "text": ">> On the flip side, do you consider having" + }, + { + "start": 7896.0, + "duration": 0.0, + "text": ">> On the flip side, do you consider having developers<02:11:36.480> create<02:11:36.719> plugins<02:11:37.119> or<02:11:37.360> like<02:11:37.520> new" + }, + { + "start": 7897.75, + "duration": 0.0, + "text": "developers create plugins or like new" + }, + { + "start": 7897.76, + "duration": 0.0, + "text": "developers create plugins or like new panels<02:11:38.079> or<02:11:38.320> visualizers<02:11:38.800> or<02:11:39.040> whatever?" + }, + { + "start": 7899.91, + "duration": 0.0, + "text": "panels or visualizers or whatever?" + }, + { + "start": 7899.92, + "duration": 0.0, + "text": "panels or visualizers or whatever? >> Yes.<02:11:40.480> Yes.<02:11:40.960> So<02:11:41.520> I<02:11:41.760> think<02:11:41.840> I<02:11:42.000> also<02:11:42.239> had<02:11:42.400> notes" + }, + { + "start": 7902.629, + "duration": 0.0, + "text": ">> Yes. Yes. So I think I also had notes" + }, + { + "start": 7902.639, + "duration": 0.0, + "text": ">> Yes. Yes. So I think I also had notes that<02:11:42.880> I<02:11:43.040> just<02:11:43.199> didn't<02:11:43.520> say<02:11:43.840> about<02:11:44.000> that.<02:11:44.400> But" + }, + { + "start": 7904.79, + "duration": 0.0, + "text": "that I just didn't say about that. But" + }, + { + "start": 7904.8, + "duration": 0.0, + "text": "that I just didn't say about that. But um" + }, + { + "start": 7906.39, + "duration": 0.0, + "text": "um" + }, + { + "start": 7906.4, + "duration": 0.0, + "text": "um yeah,<02:11:46.800> basically<02:11:47.199> what<02:11:47.440> you<02:11:47.599> want<02:11:47.840> is<02:11:48.000> the" + }, + { + "start": 7908.229, + "duration": 0.0, + "text": "yeah, basically what you want is the" + }, + { + "start": 7908.239, + "duration": 0.0, + "text": "yeah, basically what you want is the ability<02:11:48.480> to<02:11:48.719> say<02:11:48.880> like<02:11:49.599> uh<02:11:50.639> both<02:11:51.199> there's<02:11:51.440> an" + }, + { + "start": 7911.589, + "duration": 0.0, + "text": "ability to say like uh both there's an" + }, + { + "start": 7911.599, + "duration": 0.0, + "text": "ability to say like uh both there's an argument<02:11:51.920> to<02:11:52.079> say<02:11:52.239> like<02:11:52.639> you<02:11:52.800> want<02:11:52.880> to<02:11:52.960> write<02:11:53.119> a" + }, + { + "start": 7913.27, + "duration": 0.0, + "text": "argument to say like you want to write a" + }, + { + "start": 7913.28, + "duration": 0.0, + "text": "argument to say like you want to write a plugin<02:11:53.520> for<02:11:53.679> the<02:11:53.840> for<02:11:54.079> the<02:11:54.239> debugger<02:11:54.960> itself" + }, + { + "start": 7915.43, + "duration": 0.0, + "text": "plugin for the for the debugger itself" + }, + { + "start": 7915.44, + "duration": 0.0, + "text": "plugin for the for the debugger itself like<02:11:55.599> a<02:11:55.760> DL<02:11:56.159> or<02:11:56.400> something<02:11:57.760> uh<02:11:57.840> or<02:11:58.079> like<02:11:58.320> some" + }, + { + "start": 7918.47, + "duration": 0.0, + "text": "like a DL or something uh or like some" + }, + { + "start": 7918.48, + "duration": 0.0, + "text": "like a DL or something uh or like some kind<02:11:58.560> of<02:11:58.639> a<02:11:58.800> script<02:11:59.040> where<02:11:59.280> it's<02:11:59.440> like<02:11:59.679> I<02:11:59.920> just" + }, + { + "start": 7920.069, + "duration": 0.0, + "text": "kind of a script where it's like I just" + }, + { + "start": 7920.079, + "duration": 0.0, + "text": "kind of a script where it's like I just want<02:12:00.159> to<02:12:00.239> put<02:12:00.400> this<02:12:00.560> visualizer<02:12:00.960> code<02:12:01.119> into" + }, + { + "start": 7921.35, + "duration": 0.0, + "text": "want to put this visualizer code into" + }, + { + "start": 7921.36, + "duration": 0.0, + "text": "want to put this visualizer code into the<02:12:01.440> debugger<02:12:01.840> as<02:12:02.079> an<02:12:02.560> extra<02:12:02.960> one<02:12:03.440> in<02:12:03.679> addition" + }, + { + "start": 7923.83, + "duration": 0.0, + "text": "the debugger as an extra one in addition" + }, + { + "start": 7923.84, + "duration": 0.0, + "text": "the debugger as an extra one in addition to<02:12:04.000> the<02:12:04.159> built-in<02:12:04.480> ones.<02:12:05.760> Or<02:12:06.400> an<02:12:06.719> even<02:12:06.880> better" + }, + { + "start": 7927.109, + "duration": 0.0, + "text": "to the built-in ones. Or an even better" + }, + { + "start": 7927.119, + "duration": 0.0, + "text": "to the built-in ones. Or an even better option<02:12:07.360> in<02:12:07.599> many<02:12:07.760> cases<02:12:07.920> is<02:12:08.159> like<02:12:08.320> that<02:12:08.560> stuff" + }, + { + "start": 7928.709, + "duration": 0.0, + "text": "option in many cases is like that stuff" + }, + { + "start": 7928.719, + "duration": 0.0, + "text": "option in many cases is like that stuff should<02:12:08.880> be<02:12:08.960> in<02:12:09.119> the<02:12:09.199> program<02:12:09.520> like<02:12:09.679> next<02:12:09.840> to" + }, + { + "start": 7929.99, + "duration": 0.0, + "text": "should be in the program like next to" + }, + { + "start": 7930.0, + "duration": 0.0, + "text": "should be in the program like next to the<02:12:10.079> type<02:12:10.320> info.<02:12:10.560> So<02:12:10.719> there's<02:12:10.880> a<02:12:11.040> limited" + }, + { + "start": 7931.35, + "duration": 0.0, + "text": "the type info. So there's a limited" + }, + { + "start": 7931.36, + "duration": 0.0, + "text": "the type info. So there's a limited version<02:12:11.520> of<02:12:11.599> that<02:12:11.760> with<02:12:11.920> the<02:12:12.079> type<02:12:12.320> views" + }, + { + "start": 7932.629, + "duration": 0.0, + "text": "version of that with the type views" + }, + { + "start": 7932.639, + "duration": 0.0, + "text": "version of that with the type views because<02:12:12.800> you<02:12:13.040> can<02:12:13.119> sort<02:12:13.280> of<02:12:13.360> say<02:12:13.599> like<02:12:14.320> the<02:12:14.480> the" + }, + { + "start": 7934.709, + "duration": 0.0, + "text": "because you can sort of say like the the" + }, + { + "start": 7934.719, + "duration": 0.0, + "text": "because you can sort of say like the the expression<02:12:15.040> is<02:12:15.280> programmatic<02:12:16.000> really.<02:12:16.320> So" + }, + { + "start": 7936.47, + "duration": 0.0, + "text": "expression is programmatic really. So" + }, + { + "start": 7936.48, + "duration": 0.0, + "text": "expression is programmatic really. So it's<02:12:16.719> like<02:12:16.960> it<02:12:17.119> is<02:12:18.159> um" + }, + { + "start": 7940.069, + "duration": 0.0, + "text": "it's like it is um" + }, + { + "start": 7940.079, + "duration": 0.0, + "text": "it's like it is um I<02:12:20.400> don't<02:12:20.480> think<02:12:20.560> it's<02:12:20.800> turning<02:12:21.119> complete" + }, + { + "start": 7941.35, + "duration": 0.0, + "text": "I don't think it's turning complete" + }, + { + "start": 7941.36, + "duration": 0.0, + "text": "I don't think it's turning complete because<02:12:21.520> the<02:12:21.679> bite<02:12:22.000> code<02:12:22.159> can't<02:12:22.400> jump" + }, + { + "start": 7942.709, + "duration": 0.0, + "text": "because the bite code can't jump" + }, + { + "start": 7942.719, + "duration": 0.0, + "text": "because the bite code can't jump backwards.<02:12:23.280> But<02:12:23.360> it's<02:12:23.520> but<02:12:23.760> point<02:12:24.000> point" + }, + { + "start": 7944.229, + "duration": 0.0, + "text": "backwards. But it's but point point" + }, + { + "start": 7944.239, + "duration": 0.0, + "text": "backwards. But it's but point point being<02:12:24.400> it's<02:12:24.560> like<02:12:24.639> a<02:12:24.719> pro<02:12:24.960> a<02:12:25.040> little<02:12:25.199> mini" + }, + { + "start": 7945.51, + "duration": 0.0, + "text": "being it's like a pro a little mini" + }, + { + "start": 7945.52, + "duration": 0.0, + "text": "being it's like a pro a little mini program.<02:12:26.239> And<02:12:26.400> so<02:12:26.560> you<02:12:26.719> can<02:12:26.880> do<02:12:26.960> a<02:12:27.119> little<02:12:27.199> bit" + }, + { + "start": 7947.35, + "duration": 0.0, + "text": "program. And so you can do a little bit" + }, + { + "start": 7947.36, + "duration": 0.0, + "text": "program. And so you can do a little bit of<02:12:27.440> that<02:12:27.520> with<02:12:27.599> the<02:12:27.760> type<02:12:27.920> views<02:12:28.239> but<02:12:28.400> really" + }, + { + "start": 7948.55, + "duration": 0.0, + "text": "of that with the type views but really" + }, + { + "start": 7948.56, + "duration": 0.0, + "text": "of that with the type views but really at<02:12:28.719> the<02:12:28.880> limit<02:12:29.119> what<02:12:29.280> you'd<02:12:29.520> want<02:12:30.079> and<02:12:30.320> what<02:12:30.560> I" + }, + { + "start": 7950.79, + "duration": 0.0, + "text": "at the limit what you'd want and what I" + }, + { + "start": 7950.8, + "duration": 0.0, + "text": "at the limit what you'd want and what I hope<02:12:31.040> to<02:12:31.360> eventually<02:12:31.840> support<02:12:32.800> is<02:12:33.119> like<02:12:33.440> no" + }, + { + "start": 7953.83, + "duration": 0.0, + "text": "hope to eventually support is like no" + }, + { + "start": 7953.84, + "duration": 0.0, + "text": "hope to eventually support is like no like<02:12:34.239> here's<02:12:34.560> my<02:12:34.800> strct<02:12:35.440> and<02:12:35.679> it's<02:12:35.920> like<02:12:36.079> a" + }, + { + "start": 7956.31, + "duration": 0.0, + "text": "like here's my strct and it's like a" + }, + { + "start": 7956.32, + "duration": 0.0, + "text": "like here's my strct and it's like a complicated<02:12:36.880> entity<02:12:37.199> or<02:12:37.520> node<02:12:37.760> or<02:12:38.000> whatever." + }, + { + "start": 7958.39, + "duration": 0.0, + "text": "complicated entity or node or whatever." + }, + { + "start": 7958.4, + "duration": 0.0, + "text": "complicated entity or node or whatever. It's<02:12:38.639> like,<02:12:38.800> and<02:12:39.040> here's<02:12:39.360> the<02:12:39.520> debug" + }, + { + "start": 7959.83, + "duration": 0.0, + "text": "It's like, and here's the debug" + }, + { + "start": 7959.84, + "duration": 0.0, + "text": "It's like, and here's the debug visualizer<02:12:40.400> path<02:12:40.639> like<02:12:40.800> underneath<02:12:41.119> it.<02:12:41.280> And" + }, + { + "start": 7961.43, + "duration": 0.0, + "text": "visualizer path like underneath it. And" + }, + { + "start": 7961.44, + "duration": 0.0, + "text": "visualizer path like underneath it. And then<02:12:41.520> the<02:12:41.599> debugger<02:12:42.000> should<02:12:42.079> just<02:12:42.239> be<02:12:42.320> able<02:12:42.400> to" + }, + { + "start": 7962.55, + "duration": 0.0, + "text": "then the debugger should just be able to" + }, + { + "start": 7962.56, + "duration": 0.0, + "text": "then the debugger should just be able to call<02:12:42.719> that<02:12:42.880> and<02:12:43.119> then<02:12:43.280> fill<02:12:43.440> out<02:12:43.599> a<02:12:43.760> tab.<02:12:44.560> So" + }, + { + "start": 7964.79, + "duration": 0.0, + "text": "call that and then fill out a tab. So" + }, + { + "start": 7964.8, + "duration": 0.0, + "text": "call that and then fill out a tab. So that's<02:12:45.040> what<02:12:45.280> I<02:12:45.440> want<02:12:45.599> to<02:12:45.840> do." + }, + { + "start": 7967.669, + "duration": 0.0, + "text": "that's what I want to do." + }, + { + "start": 7967.679, + "duration": 0.0, + "text": "that's what I want to do. Yeah." + }, + { + "start": 7968.709, + "duration": 0.0, + "text": "Yeah." + }, + { + "start": 7968.719, + "duration": 0.0, + "text": "Yeah. >> All right.<02:12:49.119> I<02:12:49.520> think<02:12:49.679> we're<02:12:49.920> out<02:12:50.159> of<02:12:50.320> time.<02:12:51.199> So" + }, + { + "start": 7972.069, + "duration": 0.0, + "text": ">> All right. I think we're out of time. So" + }, + { + "start": 7972.079, + "duration": 0.0, + "text": ">> All right. I think we're out of time. So thank<02:12:52.320> you<02:12:52.560> Ryan<02:12:52.960> again.<02:12:53.199> Thank<02:12:53.360> you<02:12:53.679> much." + }, + { + "start": 7973.83, + "duration": 0.0, + "text": "thank you Ryan again. Thank you much." + }, + { + "start": 7973.84, + "duration": 0.0, + "text": "thank you Ryan again. Thank you much. Give<02:12:53.920> it<02:12:54.000> up<02:12:54.159> for<02:12:54.239> Ryan<02:12:54.560> once<02:12:54.800> more." + }, + { + "start": 7975.27, + "duration": 0.0, + "text": "Give it up for Ryan once more." + }, + { + "start": 7975.28, + "duration": 0.0, + "text": "Give it up for Ryan once more. >> Thanks<02:12:55.599> everyone." + }, + { + "start": 7978.88, + "duration": 0.0, + "text": ">> Thanks<02:12:59.199> man.<02:12:59.760> Appreciate<02:13:00.159> it." + } + ], + "plain": "[Music]\nAll<00:00:14.880> right,<00:00:15.280> good<00:00:15.599> morning<00:00:16.080> everybody.<00:00:17.279> I\nAll right, good morning everybody. I\nAll right, good morning everybody. I hope<00:00:17.680> we<00:00:17.920> all<00:00:18.160> had<00:00:18.320> a<00:00:18.480> great<00:00:18.720> time<00:00:19.119> drinking\nhope we all had a great time drinking\nhope we all had a great time drinking yesterday,<00:00:20.240> hanging<00:00:20.640> out,<00:00:20.960> the<00:00:21.199> nice<00:00:21.439> dinner.\nyesterday, hanging out, the nice dinner.\nyesterday, hanging out, the nice dinner. Uh<00:00:22.640> for<00:00:22.880> the<00:00:23.039> future<00:00:23.359> dinners,<00:00:23.840> alcohol<00:00:24.240> is\nUh for the future dinners, alcohol is\nUh for the future dinners, alcohol is not<00:00:24.720> included.<00:00:25.359> We'll<00:00:25.600> run<00:00:25.760> out<00:00:25.920> of<00:00:26.160> money\nnot included. We'll run out of money\nnot included. We'll run out of money today.<00:00:28.240> Our<00:00:28.400> first<00:00:28.560> speaker<00:00:28.800> is<00:00:29.039> Ryan.<00:00:29.599> You\ntoday. Our first speaker is Ryan. You\ntoday. Our first speaker is Ryan. You know,<00:00:29.840> we<00:00:30.000> all<00:00:30.160> know<00:00:30.320> Ryan<00:00:30.800> strikes<00:00:31.279> fear<00:00:31.599> in\nknow, we all know Ryan strikes fear in\nknow, we all know Ryan strikes fear in his<00:00:32.079> enemies<00:00:32.640> because<00:00:32.960> he's<00:00:33.280> so<00:00:33.840> good<00:00:34.000> at<00:00:34.239> what\nhis enemies because he's so good at what\nhis enemies because he's so good at what he<00:00:34.559> does.<00:00:35.440> And<00:00:35.680> now,<00:00:36.079> as<00:00:36.320> you<00:00:36.480> remember<00:00:36.719> from\nhe does. And now, as you remember from\nhe does. And now, as you remember from yesterday,<00:00:37.680> he's<00:00:38.000> learned<00:00:38.239> to<00:00:38.480> ride<00:00:38.800> the\nyesterday, he's learned to ride the\nyesterday, he's learned to ride the moose.\nmoose.\nmoose. >> That's<00:00:41.280> true.<00:00:42.640> So<00:00:43.040> truly<00:00:43.520> now,<00:00:43.840> he<00:00:44.160> will<00:00:44.320> be\n>> That's true. So truly now, he will be\n>> That's true. So truly now, he will be completely<00:00:45.200> undefeated.<00:00:46.559> Everybody,<00:00:47.039> Ryan\ncompletely undefeated. Everybody, Ryan\ncompletely undefeated. Everybody, Ryan Flurry.\n>> All<00:00:55.440> right.<00:00:55.840> Uh,<00:00:56.239> well,<00:00:56.399> thank<00:00:56.559> you,<00:00:56.800> Sam.\n>> All right. Uh, well, thank you, Sam.\n>> All right. Uh, well, thank you, Sam. That<00:00:57.440> was<00:00:57.520> a<00:00:57.840> great<00:00:58.079> introduction.<00:00:58.480> It<00:00:58.640> was\nThat was a great introduction. It was\nThat was a great introduction. It was not<00:00:58.800> a<00:00:58.960> real<00:00:59.120> moose,<00:00:59.600> by<00:00:59.680> the<00:00:59.840> way.<00:01:00.000> It<00:01:00.239> was\nnot a real moose, by the way. It was\nnot a real moose, by the way. It was fake<00:01:00.640> for<00:01:00.879> for<00:01:01.199> those<00:01:01.520> watching<00:01:01.840> online.<00:01:02.480> Um,\nfake for for those watching online. Um,\nfake for for those watching online. Um, so,<00:01:03.760> hi<00:01:04.000> everyone.<00:01:04.720> Uh,<00:01:05.119> thanks<00:01:05.360> for<00:01:05.519> being\nso, hi everyone. Uh, thanks for being\nso, hi everyone. Uh, thanks for being here<00:01:06.240> and<00:01:06.400> and<00:01:06.799> coming<00:01:07.040> to<00:01:07.200> listen.<00:01:07.520> Uh,<00:01:07.680> thank\nhere and and coming to listen. Uh, thank\nhere and and coming to listen. Uh, thank you<00:01:07.920> to<00:01:08.080> Sam,<00:01:08.479> Sander,<00:01:08.799> and<00:01:08.960> Charlie<00:01:09.360> for\nyou to Sam, Sander, and Charlie for\nyou to Sam, Sander, and Charlie for organizing<00:01:10.240> this.<00:01:10.640> This<00:01:10.880> has<00:01:11.040> been,<00:01:11.920> uh,\norganizing this. This has been, uh,\norganizing this. This has been, uh, absolutely<00:01:12.640> amazing.<00:01:13.040> Like<00:01:13.200> the<00:01:13.439> best<00:01:13.600> energy\nabsolutely amazing. Like the best energy\nabsolutely amazing. Like the best energy of<00:01:14.080> any<00:01:14.240> conference<00:01:14.560> I've<00:01:14.799> been<00:01:14.880> to<00:01:15.280> by<00:01:15.600> far.\nof any conference I've been to by far.\nof any conference I've been to by far. So,<00:01:16.479> thank<00:01:16.640> you<00:01:16.799> guys<00:01:16.960> so<00:01:17.200> much.<00:01:17.520> Um,<00:01:18.960> yes,\nSo, thank you guys so much. Um, yes,\nSo, thank you guys so much. Um, yes, clap<00:01:20.000> for<00:01:20.159> that.\nAnd<00:01:25.280> uh<00:01:25.680> I'm<00:01:26.000> honored<00:01:26.320> to<00:01:26.560> be<00:01:26.720> here<00:01:26.880> because\nAnd uh I'm honored to be here because\nAnd uh I'm honored to be here because there's<00:01:27.360> so<00:01:27.520> many<00:01:27.680> people<00:01:27.840> you've<00:01:28.080> brought\nthere's so many people you've brought\nthere's so many people you've brought that<00:01:28.560> I<00:01:28.799> really<00:01:29.040> respect.<00:01:29.520> So<00:01:29.680> I'm<00:01:30.080> I<00:01:30.320> it's\nthat I really respect. So I'm I it's\nthat I really respect. So I'm I it's like<00:01:31.119> dream<00:01:31.439> come<00:01:31.600> true<00:01:31.840> to<00:01:32.000> be<00:01:32.079> here<00:01:32.320> and\nlike dream come true to be here and\nlike dream come true to be here and speak<00:01:32.799> alongside<00:01:33.280> them.<00:01:33.520> So<00:01:34.400> uh<00:01:34.560> for<00:01:34.720> those\nspeak alongside them. So uh for those\nspeak alongside them. So uh for those who've<00:01:35.200> not<00:01:35.759> uh<00:01:35.920> who<00:01:36.159> have<00:01:36.240> not<00:01:36.400> yet<00:01:36.640> met,<00:01:36.880> my\nwho've not uh who have not yet met, my\nwho've not uh who have not yet met, my name<00:01:37.119> is<00:01:37.200> Ryan<00:01:37.520> Flurry.<00:01:38.320> Um<00:01:38.799> I<00:01:39.119> work<00:01:39.280> on<00:01:39.439> the\nname is Ryan Flurry. Um I work on the\nname is Ryan Flurry. Um I work on the RAD<00:01:39.920> debugger,<00:01:40.320> which<00:01:40.479> is<00:01:40.560> the<00:01:40.720> project\nRAD debugger, which is the project\nRAD debugger, which is the project originally<00:01:41.600> started<00:01:41.840> by<00:01:41.920> Rad<00:01:42.240> Game<00:01:42.479> tools.\noriginally started by Rad Game tools.\noriginally started by Rad Game tools. You<00:01:42.799> may<00:01:42.880> have<00:01:43.040> heard<00:01:43.119> of<00:01:43.200> it<00:01:43.680> from<00:01:43.920> like<00:01:44.240> 2013\nYou may have heard of it from like 2013\nYou may have heard of it from like 2013 or<00:01:45.040> whatever<00:01:45.520> when<00:01:45.759> it<00:01:45.920> started<00:01:46.240> when<00:01:46.399> I<00:01:46.640> was\nor whatever when it started when I was\nor whatever when it started when I was like<00:01:47.280> 15<00:01:47.680> or<00:01:47.920> something.<00:01:48.640> Um<00:01:49.280> it's<00:01:49.520> gone\nlike 15 or something. Um it's gone\nlike 15 or something. Um it's gone through<00:01:50.320> some<00:01:50.560> some<00:01:51.119> successive<00:01:51.680> teams.<00:01:52.159> Um\nthrough some some successive teams. Um\nthrough some some successive teams. Um uh<00:01:53.920> but<00:01:54.320> uh<00:01:54.479> RAD<00:01:54.720> game<00:01:54.880> tool<00:01:55.040> is<00:01:55.200> now<00:01:55.360> part<00:01:55.439> of\nuh but uh RAD game tool is now part of\nuh but uh RAD game tool is now part of Epic<00:01:55.840> Games.<00:01:56.159> If<00:01:56.320> it<00:01:56.479> needs<00:01:56.640> to<00:01:56.720> be<00:01:56.880> said\nEpic Games. If it needs to be said\nEpic Games. If it needs to be said though,<00:01:57.360> I'm<00:01:57.520> not<00:01:57.680> here<00:01:57.759> to<00:01:57.920> represent<00:01:58.240> them.\nthough, I'm not here to represent them.\nthough, I'm not here to represent them. I'm<00:01:58.719> here<00:01:58.880> on<00:01:59.040> my<00:01:59.119> own<00:01:59.520> uh<00:01:59.680> own<00:01:59.840> behalf.<00:02:00.399> So\nI'm here on my own uh own behalf. So\nI'm here on my own uh own behalf. So while<00:02:01.680> working<00:02:01.920> on<00:02:02.159> on<00:02:02.640> uh<00:02:02.719> the<00:02:02.880> Rad<00:02:03.119> debugger,\nwhile working on on uh the Rad debugger,\nwhile working on on uh the Rad debugger, I<00:02:03.520> tried<00:02:03.680> to<00:02:03.759> prioritize<00:02:04.320> something<00:02:04.880> that\nI tried to prioritize something that\nI tried to prioritize something that I've<00:02:05.360> always<00:02:05.520> felt<00:02:05.759> is<00:02:06.000> missing<00:02:06.320> from\nI've always felt is missing from\nI've always felt is missing from programming<00:02:07.040> tooling,<00:02:07.439> which<00:02:07.600> is<00:02:08.000> uh<00:02:08.160> good\nprogramming tooling, which is uh good\nprogramming tooling, which is uh good visual<00:02:08.800> feedback.<00:02:09.599> So<00:02:10.319> having<00:02:10.800> open\nvisual feedback. So having open\nvisual feedback. So having open visibility<00:02:11.520> into<00:02:11.760> a<00:02:12.000> system.<00:02:12.640> Um<00:02:13.200> I've<00:02:13.440> always\nvisibility into a system. Um I've always\nvisibility into a system. Um I've always felt<00:02:13.760> that<00:02:13.920> computers<00:02:14.239> are<00:02:14.400> very<00:02:14.560> opaque.\nfelt that computers are very opaque.\nfelt that computers are very opaque. Um,<00:02:16.720> coming<00:02:16.959> from<00:02:17.120> game<00:02:17.360> development,<00:02:18.160> uh,\nUm, coming from game development, uh,\nUm, coming from game development, uh, it's<00:02:19.440> really<00:02:19.680> easy<00:02:19.920> to<00:02:20.080> learn<00:02:20.239> when<00:02:20.480> you<00:02:20.879> are\nit's really easy to learn when you are\nit's really easy to learn when you are always<00:02:21.360> debugging<00:02:21.760> things<00:02:21.920> that<00:02:22.160> it's<00:02:22.319> very\nalways debugging things that it's very\nalways debugging things that it's very useful.<00:02:22.800> We<00:02:22.959> saw<00:02:23.120> in<00:02:23.440> Dennis's<00:02:24.000> talk<00:02:24.160> that\nuseful. We saw in Dennis's talk that\nuseful. We saw in Dennis's talk that it's<00:02:24.560> like<00:02:24.720> if<00:02:24.959> you're<00:02:25.040> looking<00:02:25.200> at\nit's like if you're looking at\nit's like if you're looking at timestamps,<00:02:26.480> it's<00:02:26.800> totally<00:02:27.200> different\ntimestamps, it's totally different\ntimestamps, it's totally different experience<00:02:27.599> than<00:02:27.840> looking<00:02:28.000> at<00:02:28.080> a<00:02:28.239> profile<00:02:28.560> at\nexperience than looking at a profile at\nexperience than looking at a profile at a<00:02:28.800> flame<00:02:29.120> graph,<00:02:29.360> right?<00:02:29.520> It's<00:02:29.760> completely\na flame graph, right? It's completely\na flame graph, right? It's completely different<00:02:30.319> experience.<00:02:31.360> Um,<00:02:31.920> and<00:02:32.400> game\ndifferent experience. Um, and game\ndifferent experience. Um, and game developers,<00:02:33.200> you<00:02:33.519> always<00:02:33.840> are<00:02:34.080> visualizing\ndevelopers, you always are visualizing\ndevelopers, you always are visualizing things.<00:02:34.879> You're<00:02:35.120> always<00:02:35.280> trying<00:02:35.519> to<00:02:35.680> get<00:02:35.920> a\nthings. You're always trying to get a\nthings. You're always trying to get a different<00:02:36.319> view<00:02:36.480> into<00:02:36.720> your<00:02:36.879> data<00:02:37.040> to<00:02:37.200> make\ndifferent view into your data to make\ndifferent view into your data to make something<00:02:37.599> clear.\nsomething clear.\nsomething clear. Um,<00:02:40.480> and<00:02:40.800> we<00:02:41.120> use<00:02:41.360> those<00:02:41.680> visualization<00:02:42.239> tools\nUm, and we use those visualization tools\nUm, and we use those visualization tools to<00:02:42.879> create<00:02:43.599> better<00:02:44.000> software<00:02:45.120> more\nto create better software more\nto create better software more efficiently,<00:02:46.080> which<00:02:46.239> is<00:02:46.319> why<00:02:46.480> we're<00:02:46.640> all\nefficiently, which is why we're all\nefficiently, which is why we're all here,<00:02:46.959> right?<00:02:47.760> Um,<00:02:48.800> so<00:02:49.760> in<00:02:50.000> other<00:02:50.160> words,<00:02:50.400> it's\nhere, right? Um, so in other words, it's\nhere, right? Um, so in other words, it's it's<00:02:50.800> useful<00:02:51.120> when<00:02:51.760> cracking<00:02:52.080> the<00:02:52.319> code.<00:02:52.879> I\nit's useful when cracking the code. I\nit's useful when cracking the code. I did<00:02:53.360> the<00:02:53.599> title<00:02:53.920> thing.<00:02:54.319> So\ndid the title thing. So\ndid the title thing. So um<00:02:56.560> so<00:02:56.720> there<00:02:56.959> are<00:02:57.040> many<00:02:57.280> talks<00:02:58.000> uh<00:02:58.080> or\num so there are many talks uh or\num so there are many talks uh or resources<00:02:59.120> on<00:02:59.519> debuggers<00:03:00.319> but<00:03:00.879> um<00:03:01.120> my\nresources on debuggers but um my\nresources on debuggers but um my impression<00:03:01.599> is<00:03:01.760> that<00:03:01.920> not<00:03:02.159> many<00:03:02.319> of<00:03:02.400> them\nimpression is that not many of them\nimpression is that not many of them focus<00:03:02.879> on<00:03:03.599> this<00:03:03.840> visualization<00:03:04.560> problem<00:03:05.599> even\nfocus on this visualization problem even\nfocus on this visualization problem even though<00:03:06.000> I<00:03:06.159> would<00:03:06.319> claim<00:03:06.720> it's<00:03:07.599> perhaps<00:03:08.000> the\nthough I would claim it's perhaps the\nthough I would claim it's perhaps the most<00:03:08.480> important<00:03:08.720> problem<00:03:08.879> that<00:03:09.120> a<00:03:09.280> debugger\nmost important problem that a debugger\nmost important problem that a debugger needs<00:03:09.840> to<00:03:10.000> solve<00:03:10.239> is<00:03:10.480> is<00:03:10.800> quick<00:03:11.200> good\nneeds to solve is is quick good\nneeds to solve is is quick good visualization<00:03:12.080> flexible<00:03:12.480> visualization\nvisualization flexible visualization\nvisualization flexible visualization into<00:03:14.000> your<00:03:14.159> data.<00:03:15.440> Um<00:03:15.760> so<00:03:16.080> I'm<00:03:16.319> going<00:03:16.400> to\ninto your data. Um so I'm going to\ninto your data. Um so I'm going to present<00:03:16.720> all<00:03:16.879> the<00:03:16.959> work<00:03:17.120> that<00:03:17.280> I've<00:03:17.440> done<00:03:17.599> on\npresent all the work that I've done on\npresent all the work that I've done on that<00:03:18.000> problem<00:03:18.640> to<00:03:18.800> you<00:03:18.879> all<00:03:19.120> today.<00:03:20.080> Now,<00:03:20.319> if\nthat problem to you all today. Now, if\nthat problem to you all today. Now, if you<00:03:20.560> aren't<00:03:20.800> familiar<00:03:21.040> with<00:03:21.200> debuggers,<00:03:22.319> um,\nyou aren't familiar with debuggers, um,\nyou aren't familiar with debuggers, um, or<00:03:22.720> if<00:03:22.879> you<00:03:22.959> don't<00:03:23.120> know<00:03:23.200> what<00:03:23.360> I<00:03:23.519> mean<00:03:23.760> by\nor if you don't know what I mean by\nor if you don't know what I mean by visualization<00:03:24.720> using<00:03:24.959> a<00:03:25.120> debugger,<00:03:26.319> uh,<00:03:26.400> I\nvisualization using a debugger, uh, I\nvisualization using a debugger, uh, I have<00:03:26.640> some<00:03:26.800> videos<00:03:27.040> of<00:03:27.120> the<00:03:27.200> RAD<00:03:27.440> debugger\nhave some videos of the RAD debugger\nhave some videos of the RAD debugger that<00:03:28.000> I'd<00:03:28.239> like<00:03:28.319> to<00:03:28.560> share<00:03:28.800> to<00:03:28.959> set<00:03:29.120> the<00:03:29.360> stage\nthat I'd like to share to set the stage\nthat I'd like to share to set the stage for<00:03:30.000> everything<00:03:30.319> I'm<00:03:30.560> going<00:03:30.640> to<00:03:30.720> talk<00:03:30.879> about.\nfor everything I'm going to talk about.\nfor everything I'm going to talk about. So,<00:03:33.680> uh,<00:03:33.920> first<00:03:34.159> thing,<00:03:34.400> if<00:03:34.640> I've<00:03:34.799> got<00:03:35.040> I've\nSo, uh, first thing, if I've got I've\nSo, uh, first thing, if I've got I've got<00:03:35.360> my<00:03:35.519> little<00:03:35.680> game<00:03:36.000> project,<00:03:36.879> shameless\ngot my little game project, shameless\ngot my little game project, shameless plug,<00:03:38.080> it's<00:03:38.319> not<00:03:38.480> really<00:03:38.959> special<00:03:39.280> yet,<00:03:39.519> but,\nplug, it's not really special yet, but,\nplug, it's not really special yet, but, uh,<00:03:40.400> you<00:03:40.560> know,<00:03:40.640> if<00:03:40.799> I've<00:03:40.959> got<00:03:41.040> this<00:03:41.280> program,\nuh, you know, if I've got this program,\nuh, you know, if I've got this program, I<00:03:41.760> can<00:03:41.840> do<00:03:42.000> things<00:03:42.159> in<00:03:42.319> the<00:03:42.480> program.<00:03:43.599> Um\nI can do things in the program. Um\nI can do things in the program. Um if<00:03:45.360> I<00:03:45.519> want<00:03:45.599> to<00:03:45.760> run<00:03:45.920> that<00:03:46.080> from<00:03:46.239> within<00:03:46.400> the\nif I want to run that from within the\nif I want to run that from within the debugger<00:03:46.959> in<00:03:47.120> the<00:03:47.200> case<00:03:47.360> of<00:03:47.440> rad<00:03:47.680> debugger<00:03:47.920> I\ndebugger in the case of rad debugger I\ndebugger in the case of rad debugger I can<00:03:48.080> do<00:03:48.159> radg<00:03:48.959> same<00:03:49.200> command<00:03:49.519> line<00:03:50.159> opens<00:03:50.480> up\ncan do radg same command line opens up\ncan do radg same command line opens up the<00:03:50.720> debugger<00:03:51.040> I<00:03:51.200> can<00:03:51.280> either<00:03:51.519> launch<00:03:51.840> the\nthe debugger I can either launch the\nthe debugger I can either launch the program<00:03:53.040> from<00:03:53.920> like<00:03:54.319> uh<00:03:54.400> with<00:03:54.560> the<00:03:54.640> debugger\nprogram from like uh with the debugger\nprogram from like uh with the debugger attached\nattached\nattached um<00:03:58.239> I<00:03:58.480> can<00:03:58.560> also<00:03:58.799> step<00:03:59.040> into<00:03:59.200> the<00:03:59.360> program\num I can also step into the program\num I can also step into the program these<00:03:59.840> are<00:04:00.000> all<00:04:00.159> very<00:04:00.319> common<00:04:00.560> debugger\nthese are all very common debugger\nthese are all very common debugger features<00:04:01.280> right<00:04:01.439> I<00:04:01.599> can<00:04:01.680> step<00:04:01.840> through<00:04:02.080> the\nfeatures right I can step through the\nfeatures right I can step through the code<00:04:03.280> um\ncode um\ncode um so<00:04:05.519> in<00:04:05.680> that<00:04:05.840> case<00:04:06.000> I'm<00:04:06.159> stepping<00:04:06.319> over<00:04:06.560> lines\nso in that case I'm stepping over lines\nso in that case I'm stepping over lines of<00:04:06.879> source<00:04:07.200> code<00:04:07.760> I<00:04:07.920> can<00:04:08.080> evaluate<00:04:08.560> things<00:04:08.720> if\nof source code I can evaluate things if\nof source code I can evaluate things if I<00:04:09.120> hover<00:04:09.360> them\nuh<00:04:12.720> so<00:04:12.879> if<00:04:13.120> I<00:04:13.280> put<00:04:13.680> uh<00:04:13.760> I<00:04:14.000> can<00:04:14.159> put<00:04:14.239> a<00:04:14.400> variable\nuh so if I put uh I can put a variable\nuh so if I put uh I can put a variable into<00:04:15.200> the<00:04:15.439> watch<00:04:15.760> window<00:04:16.000> here.<00:04:17.040> Uh<00:04:17.759> so<00:04:18.000> in\ninto the watch window here. Uh so in\ninto the watch window here. Uh so in this<00:04:18.239> case<00:04:18.400> it's<00:04:18.560> the<00:04:18.720> global<00:04:19.040> shared<00:04:19.280> and<00:04:19.440> if\nthis case it's the global shared and if\nthis case it's the global shared and if I<00:04:19.680> expand<00:04:19.919> that<00:04:20.160> you<00:04:20.320> can<00:04:20.400> see<00:04:20.479> as<00:04:20.639> I<00:04:20.799> step\nI expand that you can see as I step\nI expand that you can see as I step through<00:04:21.120> the<00:04:21.280> code<00:04:21.440> you<00:04:21.680> see<00:04:21.840> things<00:04:22.079> change\nthrough the code you see things change\nthrough the code you see things change live.<00:04:22.800> It's<00:04:23.040> very<00:04:23.759> very<00:04:24.080> common<00:04:24.320> debugger<00:04:25.280> um\nlive. It's very very common debugger um\nlive. It's very very common debugger um features<00:04:26.080> really.<00:04:27.280> Um<00:04:28.080> debuggers<00:04:28.720> also<00:04:29.040> tend\nfeatures really. Um debuggers also tend\nfeatures really. Um debuggers also tend to<00:04:29.440> have<00:04:29.600> like<00:04:29.840> features<00:04:30.240> to<00:04:31.199> uh<00:04:31.520> navigate<00:04:31.919> to\nto have like features to uh navigate to\nto have like features to uh navigate to different<00:04:32.320> parts<00:04:32.560> of<00:04:32.639> the<00:04:32.880> code.<00:04:33.360> Um<00:04:33.919> so<00:04:34.080> I<00:04:34.320> can\ndifferent parts of the code. Um so I can\ndifferent parts of the code. Um so I can go<00:04:34.560> to<00:04:34.800> some<00:04:35.360> to<00:04:35.600> some<00:04:35.840> function<00:04:36.160> and<00:04:36.320> and\ngo to some to some function and and\ngo to some to some function and and place<00:04:36.880> a<00:04:37.040> break<00:04:37.280> point<00:04:37.600> say<00:04:37.840> stop<00:04:38.080> at<00:04:38.240> this\nplace a break point say stop at this\nplace a break point say stop at this line<00:04:38.560> of<00:04:38.720> source<00:04:38.960> code<00:04:40.240> and<00:04:40.479> so<00:04:40.639> on.<00:04:40.880> Right?\nline of source code and so on. Right?\nline of source code and so on. Right? That's<00:04:41.360> like<00:04:42.560> pretty<00:04:42.880> basic<00:04:43.120> debugger<00:04:43.600> stuff.\nThat's like pretty basic debugger stuff.\nThat's like pretty basic debugger stuff. Um,<00:04:45.600> that's<00:04:45.840> like<00:04:46.000> this<00:04:46.160> is<00:04:46.240> what<00:04:46.320> it<00:04:46.479> looks\nUm, that's like this is what it looks\nUm, that's like this is what it looks like<00:04:46.720> to<00:04:46.880> use<00:04:46.960> one,<00:04:47.280> right?\nGoogle<00:04:51.120> Slides<00:04:51.360> is<00:04:51.520> weird<00:04:51.759> with<00:04:52.080> videos.\nGoogle Slides is weird with videos.\nGoogle Slides is weird with videos. Okay,<00:04:52.800> so<00:04:53.040> let's<00:04:53.199> say<00:04:53.280> I've<00:04:53.440> got<00:04:53.520> a<00:04:53.680> crash<00:04:53.840> in\nOkay, so let's say I've got a crash in\nOkay, so let's say I've got a crash in my<00:04:54.160> game.<00:04:54.800> Um,<00:04:55.120> I'm<00:04:55.440> hooked<00:04:55.759> up<00:04:55.840> to<00:04:56.000> my<00:04:56.160> game.<00:04:56.320> I\nmy game. Um, I'm hooked up to my game. I\nmy game. Um, I'm hooked up to my game. I hit<00:04:56.639> F5<00:04:57.280> or<00:04:57.600> I<00:04:57.919> press<00:04:58.160> the<00:04:58.479> green<00:04:58.639> arrow.<00:04:58.960> F5<00:04:59.280> is\nhit F5 or I press the green arrow. F5 is\nhit F5 or I press the green arrow. F5 is the<00:04:59.520> hotkey<00:04:59.759> for<00:04:59.919> that.<00:05:00.400> Uh,<00:05:00.560> the<00:05:00.720> debugger\nthe hotkey for that. Uh, the debugger\nthe hotkey for that. Uh, the debugger will<00:05:01.280> catch<00:05:01.440> that.<00:05:01.680> It'll<00:05:02.000> show<00:05:02.080> me<00:05:02.240> where\nwill catch that. It'll show me where\nwill catch that. It'll show me where that<00:05:02.639> is.<00:05:02.880> I<00:05:03.040> can<00:05:03.120> dig<00:05:03.360> into<00:05:03.600> things<00:05:03.759> like<00:05:03.919> the\nthat is. I can dig into things like the\nthat is. I can dig into things like the call<00:05:04.320> stack.<00:05:05.040> I<00:05:05.280> can<00:05:05.440> see<00:05:05.680> I<00:05:05.919> can<00:05:06.080> evaluate\ncall stack. I can see I can evaluate\ncall stack. I can see I can evaluate things<00:05:06.800> still.<00:05:07.120> I<00:05:07.280> can<00:05:07.440> I<00:05:07.680> can<00:05:07.840> see<00:05:08.000> why<00:05:08.320> some\nthings still. I can I can see why some\nthings still. I can I can see why some bug<00:05:08.880> is<00:05:09.039> happening,<00:05:09.360> right?<00:05:09.440> I<00:05:09.680> can<00:05:09.840> see<00:05:10.320> I<00:05:10.560> can\nbug is happening, right? I can see I can\nbug is happening, right? I can see I can sort<00:05:10.960> of<00:05:11.039> get<00:05:11.199> visibility<00:05:11.600> into<00:05:11.919> the<00:05:12.080> system\nsort of get visibility into the system\nsort of get visibility into the system when<00:05:12.960> something<00:05:13.199> goes<00:05:13.440> wrong.<00:05:14.479> Um<00:05:14.720> I<00:05:14.960> can<00:05:15.120> go\nwhen something goes wrong. Um I can go\nwhen something goes wrong. Um I can go back<00:05:15.680> uh<00:05:15.919> frames<00:05:16.240> in<00:05:16.320> the<00:05:16.479> call<00:05:16.720> stack.<00:05:17.600> Uh\nback uh frames in the call stack. Uh\nback uh frames in the call stack. Uh stuff<00:05:18.400> like<00:05:18.639> this.\nOkay.<00:05:24.320> So<00:05:24.560> you<00:05:24.720> know<00:05:24.960> let's<00:05:25.120> say<00:05:25.360> like<00:05:25.600> in<00:05:25.759> in\nOkay. So you know let's say like in in\nOkay. So you know let's say like in in my<00:05:26.320> game<00:05:26.560> for<00:05:26.639> example<00:05:26.960> the<00:05:27.199> the<00:05:27.360> player<00:05:27.680> can\nmy game for example the the player can\nmy game for example the the player can like<00:05:28.240> hit<00:05:28.479> something.<00:05:28.880> So<00:05:28.960> if<00:05:29.199> I<00:05:29.520> go<00:05:29.600> ahead<00:05:29.840> and\nlike hit something. So if I go ahead and\nlike hit something. So if I go ahead and spawn<00:05:30.639> a<00:05:31.120> a<00:05:31.280> little<00:05:31.440> jelly<00:05:31.840> entity<00:05:32.160> here<00:05:32.720> I<00:05:32.960> can\nspawn a a little jelly entity here I can\nspawn a a little jelly entity here I can walk<00:05:33.199> up<00:05:33.440> as<00:05:33.680> the<00:05:33.840> player<00:05:34.160> and<00:05:34.400> punch<00:05:34.639> it.<00:05:35.600> If<00:05:35.840> I\nwalk up as the player and punch it. If I\nwalk up as the player and punch it. If I wanted<00:05:36.160> to<00:05:36.400> specifically<00:05:36.960> stop<00:05:37.680> when<00:05:38.560> that\nwanted to specifically stop when that\nwanted to specifically stop when that punching<00:05:39.360> code<00:05:39.680> path<00:05:39.840> is<00:05:40.000> hitting,<00:05:40.320> I<00:05:40.479> can<00:05:40.639> go\npunching code path is hitting, I can go\npunching code path is hitting, I can go and<00:05:40.960> find<00:05:41.120> wherever<00:05:41.440> I<00:05:41.520> wrote<00:05:41.759> the<00:05:41.919> code,<00:05:42.400> put\nand find wherever I wrote the code, put\nand find wherever I wrote the code, put a<00:05:42.639> break<00:05:42.880> point<00:05:43.120> there,<00:05:43.440> and<00:05:43.680> then<00:05:43.840> I<00:05:44.080> can<00:05:44.240> just\na break point there, and then I can just\na break point there, and then I can just like<00:05:45.840> uh<00:05:46.080> wait<00:05:46.320> for<00:05:46.479> some<00:05:46.800> wait<00:05:47.039> for<00:05:47.120> that\nlike uh wait for some wait for that\nlike uh wait for some wait for that event<00:05:47.520> to<00:05:47.680> happen,<00:05:47.919> right?<00:05:48.080> Wait<00:05:48.240> for<00:05:48.320> that\nevent to happen, right? Wait for that\nevent to happen, right? Wait for that code<00:05:48.639> path<00:05:48.800> to<00:05:48.960> be<00:05:49.039> executed.<00:05:49.840> You<00:05:50.080> stop.<00:05:50.800> Um\ncode path to be executed. You stop. Um\ncode path to be executed. You stop. Um and<00:05:51.280> at<00:05:51.440> that<00:05:51.600> point,<00:05:51.759> I<00:05:51.919> can<00:05:52.000> inspect<00:05:52.320> the\nand at that point, I can inspect the\nand at that point, I can inspect the state,<00:05:52.720> right?<00:05:52.960> Most,<00:05:53.280> you<00:05:53.440> know,<00:05:53.600> very\nstate, right? Most, you know, very\nstate, right? Most, you know, very common<00:05:54.000> debugger<00:05:54.400> stuff,<00:05:54.560> but<00:05:54.800> I<00:05:54.960> know<00:05:55.039> a<00:05:55.199> lot\ncommon debugger stuff, but I know a lot\ncommon debugger stuff, but I know a lot of<00:05:55.360> people<00:05:55.520> don't.<00:05:55.919> They<00:05:56.160> claim<00:05:56.479> they<00:05:56.639> don't\nof people don't. They claim they don't\nof people don't. They claim they don't use<00:05:56.960> debugger,<00:05:57.440> so<00:05:57.840> I<00:05:58.080> figured<00:05:58.320> I<00:05:58.560> would<00:05:58.639> just\nuse debugger, so I figured I would just\nuse debugger, so I figured I would just show<00:05:59.039> it.<00:05:59.440> Um<00:06:00.639> you<00:06:00.880> can<00:06:00.960> also<00:06:01.120> add<00:06:01.280> conditions\nshow it. Um you can also add conditions\nshow it. Um you can also add conditions to<00:06:01.680> a<00:06:01.840> breakpoint.<00:06:02.240> You<00:06:02.320> could<00:06:02.479> say<00:06:02.800> only<00:06:03.120> stop\nto a breakpoint. You could say only stop\nto a breakpoint. You could say only stop if<00:06:03.680> this<00:06:03.840> condition<00:06:04.160> is<00:06:04.319> true.<00:06:04.639> So<00:06:04.800> in<00:06:04.960> this\nif this condition is true. So in this\nif this condition is true. So in this case,<00:06:05.199> I'm<00:06:05.360> checking<00:06:06.000> if<00:06:06.240> it's<00:06:06.479> specifically\ncase, I'm checking if it's specifically\ncase, I'm checking if it's specifically the<00:06:07.280> player's<00:06:07.680> right<00:06:07.919> hand<00:06:08.080> or<00:06:08.319> right<00:06:08.560> hand<00:06:08.960> uh\nthe player's right hand or right hand uh\nthe player's right hand or right hand uh from<00:06:09.600> our<00:06:09.759> perspective,<00:06:10.319> right?\nfrom our perspective, right?\nfrom our perspective, right? So<00:06:12.080> yeah,<00:06:12.319> there<00:06:12.479> you<00:06:12.639> go.\nSo yeah, there you go.\nSo yeah, there you go. Uh<00:06:15.840> so<00:06:16.000> what<00:06:16.160> exactly<00:06:16.479> do<00:06:16.639> I<00:06:16.720> mean<00:06:16.880> by\nUh so what exactly do I mean by\nUh so what exactly do I mean by visualization?<00:06:17.840> Um<00:06:18.720> as<00:06:19.120> I<00:06:19.360> kind<00:06:19.520> of<00:06:19.600> covered\nvisualization? Um as I kind of covered\nvisualization? Um as I kind of covered already,<00:06:20.160> a<00:06:20.400> basic<00:06:20.639> version<00:06:20.720> of<00:06:20.880> this<00:06:21.039> is<00:06:21.199> the\nalready, a basic version of this is the\nalready, a basic version of this is the watch<00:06:21.600> window,<00:06:22.240> right?<00:06:22.479> You<00:06:22.720> can<00:06:22.800> evaluate<00:06:23.360> an\nwatch window, right? You can evaluate an\nwatch window, right? You can evaluate an expression<00:06:24.479> um<00:06:24.560> and<00:06:24.800> see<00:06:25.039> things<00:06:25.280> change.\nexpression um and see things change.\nexpression um and see things change. Another<00:06:26.400> example<00:06:27.039> would<00:06:27.280> be<00:06:28.080> memory<00:06:28.479> view.\nAnother example would be memory view.\nAnother example would be memory view. It's<00:06:29.199> just<00:06:29.360> another<00:06:29.680> very<00:06:30.000> common<00:06:31.199> uh\nIt's just another very common uh\nIt's just another very common uh visualization<00:06:32.560> technique<00:06:32.880> in<00:06:33.120> a<00:06:33.199> debugger.\nvisualization technique in a debugger.\nvisualization technique in a debugger. you<00:06:33.680> just<00:06:33.759> want<00:06:33.840> to<00:06:34.000> see<00:06:34.080> a<00:06:34.240> grid<00:06:34.400> of<00:06:34.560> bytes<00:06:35.280> uh\nyou just want to see a grid of bytes uh\nyou just want to see a grid of bytes uh in<00:06:35.680> sort<00:06:35.840> of<00:06:35.919> a<00:06:36.000> hex<00:06:36.240> editor<00:06:36.720> style<00:06:37.039> view.<00:06:38.000> Um\nin sort of a hex editor style view. Um\nin sort of a hex editor style view. Um and<00:06:39.280> then<00:06:39.440> many<00:06:39.680> of<00:06:39.759> the<00:06:39.840> same<00:06:40.000> things<00:06:40.160> apply\nand then many of the same things apply\nand then many of the same things apply right<00:06:40.639> as<00:06:40.800> I<00:06:40.960> step<00:06:41.120> through<00:06:41.280> the<00:06:41.440> program<00:06:41.759> I\nright as I step through the program I\nright as I step through the program I can<00:06:42.080> I<00:06:42.319> can<00:06:43.039> see<00:06:43.600> particular<00:06:44.000> bytes<00:06:44.400> change.\ncan I can see particular bytes change.\ncan I can see particular bytes change. So<00:06:44.800> here<00:06:44.960> I'm<00:06:45.120> evaluating<00:06:45.520> the<00:06:45.680> string\nSo here I'm evaluating the string\nSo here I'm evaluating the string variable<00:06:47.360> um\nvariable um\nvariable um and<00:06:49.520> then<00:06:49.680> I<00:06:50.160> assume<00:06:50.560> I<00:06:50.800> think<00:06:50.880> I<00:06:51.039> go<00:06:51.199> to<00:06:51.360> the<00:06:51.680> to\nand then I assume I think I go to the to\nand then I assume I think I go to the to the<00:06:52.000> memory<00:06:52.240> for<00:06:52.400> it<00:06:52.560> and<00:06:52.720> if<00:06:52.880> I<00:06:53.039> step<00:06:53.280> you'll\nthe memory for it and if I step you'll\nthe memory for it and if I step you'll see<00:06:53.919> it<00:06:54.160> changes\nsee it changes\nsee it changes etc.<00:06:56.080> So,<00:06:56.400> so<00:06:56.800> basic<00:06:57.360> very<00:06:57.600> common<00:06:57.840> debugger\netc. So, so basic very common debugger\netc. So, so basic very common debugger visualiza<00:06:58.880> uh<00:06:59.039> visualization<00:06:59.599> features<00:07:00.000> but\nvisualiza uh visualization features but\nvisualiza uh visualization features but this<00:07:00.319> is<00:07:00.479> like<00:07:00.960> this<00:07:01.199> is<00:07:01.360> the<00:07:01.520> subject.<00:07:02.080> Now\nthis is like this is the subject. Now\nthis is like this is the subject. Now again<00:07:03.360> just<00:07:03.520> a<00:07:03.680> couple<00:07:03.840> basic<00:07:04.160> examples<00:07:04.479> we'll\nagain just a couple basic examples we'll\nagain just a couple basic examples we'll get<00:07:04.800> into<00:07:05.039> more<00:07:05.440> later\nget into more later\nget into more later but<00:07:07.440> I<00:07:07.599> find<00:07:07.759> this<00:07:08.000> particular<00:07:08.400> problem\nbut I find this particular problem\nbut I find this particular problem important<00:07:09.599> because<00:07:09.840> for<00:07:10.080> me<00:07:10.240> while<00:07:10.479> learning\nimportant because for me while learning\nimportant because for me while learning programming<00:07:11.520> things<00:07:11.759> would<00:07:11.919> often<00:07:12.240> feel<00:07:13.120> like\nprogramming things would often feel like\nprogramming things would often feel like this.<00:07:13.919> Now<00:07:14.160> for<00:07:14.319> those<00:07:14.560> who<00:07:14.720> don't<00:07:14.800> know<00:07:14.880> what\nthis. Now for those who don't know what\nthis. Now for those who don't know what this<00:07:15.199> is<00:07:15.759> either<00:07:16.479> this<00:07:16.639> is<00:07:16.800> the<00:07:16.960> origin<00:07:17.199> of<00:07:17.280> the\nthis is either this is the origin of the\nthis is either this is the origin of the term<00:07:17.759> blackbox.<00:07:18.720> Uh<00:07:18.880> it's<00:07:19.039> a<00:07:19.199> flight<00:07:19.360> log\nterm blackbox. Uh it's a flight log\nterm blackbox. Uh it's a flight log recording<00:07:19.919> device.<00:07:20.479> Uh<00:07:21.039> and<00:07:21.360> yes<00:07:21.919> I<00:07:22.160> thought\nrecording device. Uh and yes I thought\nrecording device. Uh and yes I thought it<00:07:22.479> would<00:07:22.560> have<00:07:22.639> been<00:07:22.800> black<00:07:23.120> as<00:07:23.360> well.<00:07:24.400> uh<00:07:24.560> but\nit would have been black as well. uh but\nit would have been black as well. uh but no<00:07:25.039> it's<00:07:25.360> orange<00:07:25.680> for<00:07:26.000> whatever<00:07:26.319> reason<00:07:26.880> but\nno it's orange for whatever reason but\nno it's orange for whatever reason but in<00:07:27.919> programming<00:07:28.319> we've<00:07:28.560> abstracted<00:07:29.039> the<00:07:29.199> term\nin programming we've abstracted the term\nin programming we've abstracted the term as<00:07:30.319> we<00:07:30.479> know<00:07:30.720> programs<00:07:31.120> can<00:07:31.199> be<00:07:31.360> understood<00:07:31.840> as\nas we know programs can be understood as\nas we know programs can be understood as a<00:07:32.319> transform<00:07:33.039> from<00:07:33.280> A<00:07:33.440> to<00:07:33.599> B<00:07:33.919> right<00:07:34.160> some<00:07:34.319> input\na transform from A to B right some input\na transform from A to B right some input data<00:07:35.039> in<00:07:35.280> some<00:07:35.440> format<00:07:35.840> A<00:07:36.160> to<00:07:36.400> some<00:07:36.560> output\ndata in some format A to some output\ndata in some format A to some output data<00:07:37.280> in<00:07:37.520> format<00:07:37.919> B<00:07:39.199> um<00:07:40.160> we<00:07:40.400> use<00:07:40.479> the<00:07:40.639> term\ndata in format B um we use the term\ndata in format B um we use the term blackbox<00:07:41.440> when<00:07:41.599> we<00:07:41.840> don't<00:07:42.000> know<00:07:42.160> anything\nblackbox when we don't know anything\nblackbox when we don't know anything about<00:07:42.800> why\nabout why\nabout why something<00:07:44.800> happens<00:07:45.520> between<00:07:45.840> A<00:07:46.080> and<00:07:46.240> B<00:07:46.960> we\nsomething happens between A and B we\nsomething happens between A and B we don't<00:07:47.280> know<00:07:47.680> why<00:07:47.919> it<00:07:48.080> produces<00:07:48.400> B<00:07:48.639> we<00:07:48.720> don't\ndon't know why it produces B we don't\ndon't know why it produces B we don't know<00:07:48.960> how<00:07:49.120> it's<00:07:49.360> happening<00:07:50.000> we<00:07:50.160> hit<00:07:50.319> a<00:07:50.479> button\nknow how it's happening we hit a button\nknow how it's happening we hit a button we<00:07:50.880> run<00:07:51.039> a<00:07:51.199> program<00:07:51.759> and<00:07:52.000> something<00:07:52.400> happens\nwe run a program and something happens\nwe run a program and something happens out<00:07:53.039> pops<00:07:53.280> a\nout pops a\nout pops a You<00:07:54.400> know,<00:07:54.560> maybe<00:07:55.199> you<00:07:55.440> hope<00:07:56.240> it<00:07:56.400> works<00:07:57.120> great\nYou know, maybe you hope it works great\nYou know, maybe you hope it works great and<00:07:57.599> if<00:07:57.680> it<00:07:57.840> doesn't<00:07:58.639> go,<00:07:59.360> right?<00:08:00.240> Another<00:08:00.560> way\nand if it doesn't go, right? Another way\nand if it doesn't go, right? Another way of<00:08:00.800> looking<00:08:00.960> at<00:08:01.120> this<00:08:01.360> is<00:08:01.520> that<00:08:01.680> the<00:08:01.840> arrow<00:08:02.160> in\nof looking at this is that the arrow in\nof looking at this is that the arrow in the<00:08:02.400> middle,<00:08:02.960> the<00:08:03.280> code\nthe middle, the code\nthe middle, the code is<00:08:05.520> showing<00:08:05.840> very<00:08:06.160> few<00:08:06.400> signs<00:08:06.639> of<00:08:06.879> life.<00:08:07.680> Your\nis showing very few signs of life. Your\nis showing very few signs of life. Your program<00:08:08.160> is<00:08:08.400> doing<00:08:08.560> something<00:08:08.879> maybe\nprogram is doing something maybe\nprogram is doing something maybe undesirable<00:08:10.080> and<00:08:10.240> you<00:08:10.479> don't<00:08:10.639> know<00:08:10.879> why.\nundesirable and you don't know why.\nundesirable and you don't know why. There's<00:08:12.000> very<00:08:12.240> little<00:08:12.479> information<00:08:12.879> coming\nThere's very little information coming\nThere's very little information coming out<00:08:13.280> of<00:08:13.360> the<00:08:13.599> system.<00:08:14.560> Meanwhile,<00:08:14.960> you<00:08:15.120> just\nout of the system. Meanwhile, you just\nout of the system. Meanwhile, you just want<00:08:15.360> your<00:08:15.520> program<00:08:15.759> to<00:08:15.919> work.\nwant your program to work.\nwant your program to work. As<00:08:17.840> I<00:08:18.080> see<00:08:18.160> it,<00:08:18.800> the<00:08:19.039> challenge<00:08:19.280> here<00:08:19.440> is<00:08:19.520> that\nAs I see it, the challenge here is that\nAs I see it, the challenge here is that computers<00:08:20.080> are<00:08:20.319> inherently<00:08:20.800> opaque<00:08:21.120> to<00:08:21.199> us.\ncomputers are inherently opaque to us.\ncomputers are inherently opaque to us. They're<00:08:21.599> doing<00:08:22.000> billions<00:08:22.400> and<00:08:22.639> billions<00:08:22.960> of\nThey're doing billions and billions of\nThey're doing billions and billions of things<00:08:23.919> per<00:08:24.160> second.<00:08:25.120> And<00:08:25.280> so<00:08:25.520> there's\nthings per second. And so there's\nthings per second. And so there's actually<00:08:25.919> an<00:08:26.080> enormous<00:08:26.479> amount<00:08:26.639> of\nactually an enormous amount of\nactually an enormous amount of information<00:08:27.199> you<00:08:27.360> might<00:08:27.599> actually<00:08:27.919> imagine\ninformation you might actually imagine\ninformation you might actually imagine needing<00:08:29.280> in<00:08:29.520> order<00:08:29.680> to<00:08:29.919> understand<00:08:30.240> what's\nneeding in order to understand what's\nneeding in order to understand what's happening.\nhappening.\nhappening. So<00:08:32.640> it's<00:08:32.800> always<00:08:32.959> a<00:08:33.120> game<00:08:33.279> of<00:08:33.440> understanding\nSo it's always a game of understanding\nSo it's always a game of understanding how<00:08:34.080> to<00:08:34.479> narrow<00:08:34.800> down<00:08:34.959> to<00:08:35.120> the<00:08:35.279> subset<00:08:35.599> of\nhow to narrow down to the subset of\nhow to narrow down to the subset of information<00:08:36.320> you<00:08:36.560> actually<00:08:36.719> care<00:08:36.959> about<00:08:37.120> and\ninformation you actually care about and\ninformation you actually care about and presenting<00:08:37.760> it<00:08:37.919> in<00:08:38.000> a<00:08:38.159> way<00:08:38.240> that<00:08:38.399> makes<00:08:38.560> sense.\npresenting it in a way that makes sense.\npresenting it in a way that makes sense. Um\nnow<00:08:43.440> one<00:08:43.599> of<00:08:43.680> the<00:08:43.839> first<00:08:44.320> ways<00:08:44.560> we<00:08:44.800> learn<00:08:45.040> to\nnow one of the first ways we learn to\nnow one of the first ways we learn to extract<00:08:45.680> information<00:08:46.640> uh<00:08:46.800> from<00:08:46.959> a<00:08:47.120> program<00:08:47.360> is\nextract information uh from a program is\nextract information uh from a program is through<00:08:47.680> textual<00:08:48.160> logging<00:08:49.040> or<00:08:49.519> uh<00:08:49.680> print\nthrough textual logging or uh print\nthrough textual logging or uh print debugging.\ndebugging.\ndebugging. uh<00:08:51.760> your<00:08:52.000> program<00:08:52.240> does<00:08:52.399> whatever<00:08:52.720> it<00:08:52.880> was\nuh your program does whatever it was\nuh your program does whatever it was going<00:08:53.200> to<00:08:53.360> do<00:08:53.760> and<00:08:54.000> then<00:08:54.160> in<00:08:54.399> addition<00:08:54.640> to\ngoing to do and then in addition to\ngoing to do and then in addition to whatever<00:08:55.120> it<00:08:55.279> was<00:08:55.440> going<00:08:55.519> to<00:08:55.600> do<00:08:55.760> like<00:08:55.920> the\nwhatever it was going to do like the\nwhatever it was going to do like the thing<00:08:56.160> you<00:08:56.320> actually<00:08:56.560> wanted<00:08:56.720> it<00:08:56.959> to<00:08:57.040> do<00:08:57.600> it<00:08:57.760> it\nthing you actually wanted it to do it it\nthing you actually wanted it to do it it produces<00:08:58.480> a<00:08:58.720> parallel<00:08:59.200> output<00:08:59.680> which<00:08:59.920> is<00:09:00.080> just\nproduces a parallel output which is just\nproduces a parallel output which is just like<00:09:00.480> the<00:09:00.640> textual<00:09:01.120> log<00:09:01.360> of<00:09:01.519> of<00:09:02.160> what<00:09:02.399> happens\nlike the textual log of of what happens\nlike the textual log of of what happens they<00:09:02.880> come<00:09:03.040> from<00:09:03.360> print<00:09:03.600> statements<00:09:04.000> you\nthey come from print statements you\nthey come from print statements you annotate<00:09:04.480> your<00:09:04.640> program<00:09:04.880> with<00:09:05.680> now<00:09:05.839> you'll\nannotate your program with now you'll\nannotate your program with now you'll see<00:09:06.320> some<00:09:06.480> people<00:09:06.800> make<00:09:06.959> the<00:09:07.200> argument<00:09:07.920> that\nsee some people make the argument that\nsee some people make the argument that this<00:09:08.399> is<00:09:08.480> all<00:09:08.640> they<00:09:08.800> need\nthis is all they need\nthis is all they need and<00:09:10.959> what<00:09:11.360> what<00:09:11.600> I'm<00:09:11.760> about<00:09:11.920> to<00:09:12.080> say<00:09:12.240> might\nand what what I'm about to say might\nand what what I'm about to say might surprise<00:09:12.800> you<00:09:13.440> but<00:09:13.600> in<00:09:13.839> one<00:09:14.000> sense<00:09:14.800> they're\nsurprise you but in one sense they're\nsurprise you but in one sense they're right<00:09:16.160> but<00:09:16.320> there<00:09:16.399> are<00:09:16.560> two<00:09:16.720> problems<00:09:16.880> with\nright but there are two problems with\nright but there are two problems with their<00:09:17.200> argument<00:09:18.000> one<00:09:18.240> problem<00:09:18.560> we<00:09:18.800> can<00:09:18.959> solve\ntheir argument one problem we can solve\ntheir argument one problem we can solve while<00:09:19.440> keeping<00:09:19.680> print<00:09:19.920> debugging\nwhile keeping print debugging\nwhile keeping print debugging One<00:09:21.040> problem<00:09:21.279> we<00:09:21.519> cannot\nOne problem we cannot\nOne problem we cannot problem<00:09:23.600> number<00:09:23.839> one\nproblem number one\nproblem number one text<00:09:26.640> often<00:09:26.959> sucks\nuh<00:09:31.040> it's<00:09:31.200> often<00:09:31.519> insufficient<00:09:32.080> right<00:09:32.240> you\nuh it's often insufficient right you\nuh it's often insufficient right you can't<00:09:32.560> understand<00:09:32.800> what<00:09:32.959> it's<00:09:33.200> actually\ncan't understand what it's actually\ncan't understand what it's actually encoding<00:09:34.000> let's<00:09:34.240> go<00:09:34.320> ahead<00:09:34.480> and<00:09:34.560> do<00:09:34.640> an\nencoding let's go ahead and do an\nencoding let's go ahead and do an example<00:09:36.160> let's<00:09:36.399> say<00:09:36.560> we<00:09:36.720> have<00:09:36.800> some<00:09:36.959> image\nexample let's say we have some image\nexample let's say we have some image format<00:09:38.160> decoding<00:09:38.959> uh<00:09:39.440> we<00:09:39.680> have<00:09:39.760> some<00:09:39.920> image\nformat decoding uh we have some image\nformat decoding uh we have some image format<00:09:40.560> decoding<00:09:41.120> code<00:09:42.480> and<00:09:43.120> uh<00:09:43.519> we<00:09:44.080> we<00:09:44.399> want\nformat decoding code and uh we we want\nformat decoding code and uh we we want to<00:09:44.720> test<00:09:44.880> it<00:09:45.040> and<00:09:45.279> we<00:09:45.519> expect<00:09:45.760> to<00:09:46.000> get<00:09:46.320> you<00:09:46.480> know\nto test it and we expect to get you know\nto test it and we expect to get you know something<00:09:46.800> like<00:09:47.040> this<00:09:47.279> image\nCan<00:09:50.880> anyone<00:09:51.120> tell<00:09:51.279> me<00:09:51.440> where<00:09:51.600> the<00:09:51.760> bad<00:09:52.000> pixels\nCan anyone tell me where the bad pixels\nCan anyone tell me where the bad pixels are<00:09:52.720> after<00:09:52.959> I've<00:09:53.120> loaded<00:09:53.360> the<00:09:53.519> image?<00:09:53.680> I've\nare after I've loaded the image? I've\nare after I've loaded the image? I've I've<00:09:54.080> done<00:09:54.240> the<00:09:54.399> print<00:09:54.640> f<00:09:54.800> debugging.\nI've done the print f debugging.\nI've done the print f debugging. Okay,\nOkay,\nOkay, if<00:09:59.279> you're<00:09:59.440> looking<00:09:59.519> at<00:09:59.680> this,<00:09:59.920> it's<00:10:00.080> like,\nif you're looking at this, it's like,\nif you're looking at this, it's like, oh,<00:10:00.640> like<00:10:00.880> what's<00:10:01.040> that?<00:10:01.360> What<00:10:01.440> are<00:10:01.600> those\noh, like what's that? What are those\noh, like what's that? What are those fuchsia<00:10:02.320> pixels<00:10:02.720> in<00:10:02.880> the<00:10:03.040> corner,<00:10:03.279> right?\nfuchsia pixels in the corner, right?\nfuchsia pixels in the corner, right? Like<00:10:03.600> what<00:10:03.760> is<00:10:03.920> that<00:10:04.080> about?<00:10:05.040> So,<00:10:05.279> you<00:10:05.440> can\nLike what is that about? So, you can\nLike what is that about? So, you can instantly<00:10:06.000> see<00:10:06.160> the<00:10:06.399> problem<00:10:06.720> when<00:10:06.959> it's\ninstantly see the problem when it's\ninstantly see the problem when it's presented<00:10:07.440> to<00:10:07.519> you<00:10:07.680> in<00:10:07.839> a<00:10:08.000> different<00:10:08.160> way.\npresented to you in a different way.\npresented to you in a different way. Similarly,<00:10:09.680> you<00:10:09.839> have<00:10:09.920> some<00:10:10.080> 3D<00:10:10.480> geometry\nSimilarly, you have some 3D geometry\nSimilarly, you have some 3D geometry data<00:10:11.519> and<00:10:11.760> I<00:10:12.000> give<00:10:12.080> you<00:10:12.240> this.\ndata and I give you this.\ndata and I give you this. you're<00:10:14.640> not<00:10:14.720> going<00:10:14.800> to<00:10:14.880> be<00:10:15.040> very<00:10:15.279> quick<00:10:15.440> to\nyou're not going to be very quick to\nyou're not going to be very quick to like<00:10:16.480> pick<00:10:16.720> out<00:10:16.959> where<00:10:17.200> the<00:10:17.360> broken<00:10:17.680> vertex\nlike pick out where the broken vertex\nlike pick out where the broken vertex is,<00:10:18.399> right?\nis, right?\nis, right? Um,\nUm,\nUm, but<00:10:22.640> if<00:10:22.880> I<00:10:23.040> show<00:10:23.200> you<00:10:23.360> this,<00:10:23.680> it's<00:10:23.920> like,<00:10:24.160> wow,\nbut if I show you this, it's like, wow,\nbut if I show you this, it's like, wow, something's<00:10:24.800> really<00:10:24.959> off<00:10:25.200> there,<00:10:25.440> right?\nsomething's really off there, right?\nsomething's really off there, right? It's<00:10:25.760> like<00:10:25.839> you've<00:10:26.079> got<00:10:26.160> this<00:10:26.320> cube<00:10:26.560> structure\nIt's like you've got this cube structure\nIt's like you've got this cube structure and<00:10:27.600> then,<00:10:28.320> uh,<00:10:29.440> what's<00:10:29.760> that<00:10:29.920> vertex<00:10:30.560> doing\nand then, uh, what's that vertex doing\nand then, uh, what's that vertex doing over<00:10:31.120> there?<00:10:31.360> Like,<00:10:31.519> what<00:10:31.680> is<00:10:31.760> that<00:10:31.920> about?\nover there? Like, what is that about?\nover there? Like, what is that about? You<00:10:32.800> know,<00:10:34.240> so<00:10:34.959> there<00:10:35.120> are<00:10:35.279> numerous<00:10:35.760> examples\nYou know, so there are numerous examples\nYou know, so there are numerous examples like<00:10:36.399> this.<00:10:37.040> Text<00:10:37.279> is<00:10:37.440> sometimes<00:10:37.839> exactly\nlike this. Text is sometimes exactly\nlike this. Text is sometimes exactly what<00:10:38.399> you<00:10:38.560> want.<00:10:38.880> It's<00:10:39.040> often<00:10:39.360> times<00:10:40.240> uh<00:10:40.640> not.\nwhat you want. It's often times uh not.\nwhat you want. It's often times uh not. Uh<00:10:42.399> but<00:10:42.720> this<00:10:42.880> is<00:10:42.959> the<00:10:43.120> problem<00:10:43.279> I<00:10:43.440> suggested\nUh but this is the problem I suggested\nUh but this is the problem I suggested we<00:10:44.000> could<00:10:44.160> solve.<00:10:44.880> So<00:10:45.120> even<00:10:45.279> when<00:10:45.519> text<00:10:45.760> is<00:10:45.920> not\nwe could solve. So even when text is not\nwe could solve. So even when text is not enough,<00:10:46.640> you<00:10:46.880> didn't<00:10:47.120> necessarily<00:10:47.680> need<00:10:47.920> your\nenough, you didn't necessarily need your\nenough, you didn't necessarily need your log<00:10:48.880> to<00:10:49.200> just<00:10:49.440> produce<00:10:49.760> text.<00:10:50.079> You<00:10:50.240> didn't\nlog to just produce text. You didn't\nlog to just produce text. You didn't just<00:10:50.640> need<00:10:50.800> the<00:10:50.959> print<00:10:51.279> statement,<00:10:51.680> right?<00:10:52.000> Or\njust need the print statement, right? Or\njust need the print statement, right? Or maybe<00:10:52.399> that's<00:10:52.640> not<00:10:52.800> the<00:10:52.880> only<00:10:53.040> thing<00:10:53.120> you\nmaybe that's not the only thing you\nmaybe that's not the only thing you could<00:10:53.440> have<00:10:53.680> done.<00:10:54.640> So<00:10:54.800> this<00:10:55.040> is<00:10:55.120> an<00:10:55.279> example\ncould have done. So this is an example\ncould have done. So this is an example of<00:10:55.680> one<00:10:55.920> solution<00:10:56.079> to<00:10:56.320> that<00:10:56.480> problem.<00:10:56.880> This<00:10:57.040> is\nof one solution to that problem. This is\nof one solution to that problem. This is graph<00:10:57.440> viz<00:10:58.640> um<00:10:59.360> uh<00:10:59.440> or<00:10:59.600> a<00:10:59.760> screenshot<00:11:00.079> from<00:11:00.160> the\ngraph viz um uh or a screenshot from the\ngraph viz um uh or a screenshot from the graph<00:11:00.480> viz<00:11:00.720> visualizer.<00:11:01.360> In<00:11:01.519> this<00:11:01.600> case,<00:11:01.839> you\ngraph viz visualizer. In this case, you\ngraph viz visualizer. In this case, you your<00:11:02.240> program<00:11:02.560> still<00:11:02.720> outputs<00:11:03.120> text,<00:11:04.079> but\nyour program still outputs text, but\nyour program still outputs text, but it's<00:11:04.800> um<00:11:06.160> uh<00:11:06.399> it<00:11:06.640> outputs<00:11:07.120> text<00:11:07.279> in<00:11:07.440> a\nit's um uh it outputs text in a\nit's um uh it outputs text in a structured<00:11:07.920> format<00:11:08.240> that<00:11:08.399> can<00:11:08.480> be<00:11:08.640> parsed<00:11:08.880> by\nstructured format that can be parsed by\nstructured format that can be parsed by a<00:11:09.040> visualizer<00:11:09.519> program.<00:11:10.240> present<00:11:10.560> your<00:11:10.720> data\na visualizer program. present your data\na visualizer program. present your data like<00:11:11.120> a<00:11:11.279> graph<00:11:11.519> like<00:11:11.680> this,<00:11:12.160> right?\nlike a graph like this, right?\nlike a graph like this, right? Another<00:11:14.560> example,<00:11:14.959> this<00:11:15.120> is<00:11:15.279> a<00:11:15.440> mustache<00:11:16.160> made\nAnother example, this is a mustache made\nAnother example, this is a mustache made by<00:11:16.720> Casey,<00:11:17.120> who<00:11:17.279> you<00:11:17.440> all<00:11:17.600> heard<00:11:17.760> from\nby Casey, who you all heard from\nby Casey, who you all heard from yesterday.<00:11:19.040> Um,<00:11:19.519> specifically<00:11:20.160> designed<00:11:20.480> to\nyesterday. Um, specifically designed to\nyesterday. Um, specifically designed to debug<00:11:21.760> image<00:11:22.000> and<00:11:22.240> video<00:11:22.480> compression\ndebug image and video compression\ndebug image and video compression software.<00:11:24.079> Um,<00:11:24.560> so<00:11:24.800> this<00:11:25.120> system<00:11:25.440> works\nsoftware. Um, so this system works\nsoftware. Um, so this system works pretty<00:11:26.320> much<00:11:26.399> the<00:11:26.560> same<00:11:26.720> way<00:11:26.800> as<00:11:27.040> print\npretty much the same way as print\npretty much the same way as print debugging,<00:11:28.079> but<00:11:28.399> it's<00:11:28.800> structured,<00:11:29.360> right?\ndebugging, but it's structured, right?\ndebugging, but it's structured, right? It's<00:11:29.680> not<00:11:29.839> just<00:11:30.000> textual<00:11:30.399> data.<00:11:30.640> It's<00:11:30.800> not\nIt's not just textual data. It's not\nIt's not just textual data. It's not presented<00:11:31.200> as<00:11:31.360> text<00:11:31.680> as<00:11:31.839> just<00:11:32.079> textual<00:11:32.480> data.\npresented as text as just textual data.\npresented as text as just textual data. Um,<00:11:35.040> in<00:11:35.200> the<00:11:35.360> same<00:11:35.519> vein,<00:11:36.240> there's<00:11:36.480> this\nUm, in the same vein, there's this\nUm, in the same vein, there's this program<00:11:37.120> called<00:11:37.360> render<00:11:37.680> doc.<00:11:38.880> Um,<00:11:39.440> anyone\nprogram called render doc. Um, anyone\nprogram called render doc. Um, anyone who's<00:11:40.079> done<00:11:40.320> any<00:11:40.560> amount<00:11:40.800> of<00:11:40.880> GPU<00:11:41.360> programming\nwho's done any amount of GPU programming\nwho's done any amount of GPU programming probably<00:11:42.240> knows<00:11:43.120> that<00:11:43.360> like<00:11:43.680> this<00:11:44.079> without\nprobably knows that like this without\nprobably knows that like this without this<00:11:44.640> program,<00:11:45.040> your<00:11:45.279> life<00:11:46.320> was<00:11:46.640> probably\nthis program, your life was probably\nthis program, your life was probably pretty<00:11:47.200> bad.<00:11:47.600> Like,<00:11:48.000> uh,<00:11:48.640> everyone<00:11:48.959> has<00:11:49.120> their\npretty bad. Like, uh, everyone has their\npretty bad. Like, uh, everyone has their story<00:11:49.519> of<00:11:49.680> like<00:11:49.920> you<00:11:50.079> set<00:11:50.240> up<00:11:50.399> all<00:11:50.560> this\nstory of like you set up all this\nstory of like you set up all this boilerplate<00:11:51.440> OpenGL,<00:11:52.000> Vulcan<00:11:52.399> code,\nboilerplate OpenGL, Vulcan code,\nboilerplate OpenGL, Vulcan code, whatever<00:11:52.880> it<00:11:53.040> is.<00:11:54.000> You<00:11:54.160> run<00:11:54.399> your<00:11:54.560> program,\nwhatever it is. You run your program,\nwhatever it is. You run your program, you're<00:11:55.120> really<00:11:55.279> excited<00:11:56.399> and<00:11:56.560> there's<00:11:56.800> a\nyou're really excited and there's a\nyou're really excited and there's a black<00:11:57.200> screen<00:11:57.760> like<00:11:58.000> it's<00:11:58.160> just<00:11:58.320> like<00:11:58.480> what's\nblack screen like it's just like what's\nblack screen like it's just like what's what's<00:11:58.959> going<00:11:59.040> on,<00:11:59.440> right?<00:12:00.480> Um,<00:12:01.440> render<00:12:01.760> doc's\nwhat's going on, right? Um, render doc's\nwhat's going on, right? Um, render doc's like<00:12:02.240> extremely<00:12:02.560> useful.<00:12:02.880> So,<00:12:02.959> it<00:12:03.120> sort<00:12:03.279> of\nlike extremely useful. So, it sort of\nlike extremely useful. So, it sort of logs<00:12:03.680> all<00:12:03.760> the<00:12:03.920> API<00:12:04.240> calls<00:12:04.560> you<00:12:04.720> get<00:12:05.040> and<00:12:05.279> it\nlogs all the API calls you get and it\nlogs all the API calls you get and it captures<00:12:05.920> state.<00:12:06.240> It<00:12:06.399> hooks<00:12:06.720> those<00:12:06.880> APIs<00:12:07.279> and\ncaptures state. It hooks those APIs and\ncaptures state. It hooks those APIs and it<00:12:07.760> captures<00:12:08.160> that<00:12:08.399> state<00:12:09.040> and<00:12:09.279> presents<00:12:09.600> it\nit captures that state and presents it\nit captures that state and presents it in<00:12:09.920> this<00:12:10.079> form.<00:12:10.320> It<00:12:10.399> knows<00:12:10.639> the<00:12:10.800> before<00:12:10.959> and\nin this form. It knows the before and\nin this form. It knows the before and after<00:12:11.360> states<00:12:11.600> of<00:12:11.760> every<00:12:11.920> GPU<00:12:12.399> resource<00:12:12.720> that\nafter states of every GPU resource that\nafter states of every GPU resource that you<00:12:13.040> touch<00:12:14.160> um<00:12:14.959> when<00:12:15.120> you<00:12:15.360> when<00:12:15.519> you<00:12:15.600> make\nyou touch um when you when you make\nyou touch um when you when you make those<00:12:15.920> API<00:12:16.320> calls,<00:12:16.639> right?<00:12:17.680> Or<00:12:18.000> caused<00:12:18.240> by<00:12:18.399> the\nthose API calls, right? Or caused by the\nthose API calls, right? Or caused by the work<00:12:18.959> implied<00:12:19.360> by<00:12:19.519> those<00:12:19.680> API<00:12:20.000> calls.<00:12:20.639> Uh<00:12:20.800> so\nwork implied by those API calls. Uh so\nwork implied by those API calls. Uh so it's<00:12:21.120> another<00:12:21.360> example.<00:12:21.680> It's<00:12:21.839> yet<00:12:22.000> another\nit's another example. It's yet another\nit's another example. It's yet another structure<00:12:22.480> of<00:12:22.639> a<00:12:22.800> structured<00:12:23.600> non-extual\nstructure of a structured non-extual\nstructure of a structured non-extual log.<00:12:25.120> So<00:12:25.360> just<00:12:25.519> to<00:12:25.680> be<00:12:25.839> clear,<00:12:26.560> I'm<00:12:26.800> not<00:12:26.880> saying\nlog. So just to be clear, I'm not saying\nlog. So just to be clear, I'm not saying that<00:12:27.279> logging<00:12:27.680> is<00:12:27.920> wrong<00:12:28.399> or<00:12:28.720> not<00:12:28.959> useful<00:12:29.519> or\nthat logging is wrong or not useful or\nthat logging is wrong or not useful or can't<00:12:30.000> be<00:12:30.160> better<00:12:30.480> than<00:12:30.720> just<00:12:30.880> like<00:12:31.040> helpless\ncan't be better than just like helpless\ncan't be better than just like helpless print<00:12:31.600> debugging.<00:12:32.639> But<00:12:32.800> there's<00:12:32.959> another\nprint debugging. But there's another\nprint debugging. But there's another problem.<00:12:34.720> Problem<00:12:35.040> number<00:12:35.279> two\nproblem. Problem number two\nproblem. Problem number two is<00:12:37.920> time<00:12:38.720> and<00:12:38.959> thus<00:12:39.279> money<00:12:39.600> and<00:12:39.839> sanity.<00:12:41.279> The\nis time and thus money and sanity. The\nis time and thus money and sanity. The second<00:12:41.760> major<00:12:42.079> problem<00:12:42.480> with<00:12:42.800> log<00:12:43.360> uh\nsecond major problem with log uh\nsecond major problem with log uh debugging<00:12:44.079> is<00:12:44.320> that<00:12:44.880> it<00:12:45.040> often<00:12:45.360> requires\ndebugging is that it often requires\ndebugging is that it often requires modifications<00:12:46.320> of<00:12:46.560> the<00:12:46.800> program<00:12:47.600> that<00:12:47.839> you're\nmodifications of the program that you're\nmodifications of the program that you're digging<00:12:48.320> into.<00:12:48.959> So<00:12:49.120> let's<00:12:49.360> set<00:12:49.519> aside<00:12:49.760> the\ndigging into. So let's set aside the\ndigging into. So let's set aside the cases<00:12:50.079> where<00:12:50.240> you<00:12:50.399> can't<00:12:50.560> actually<00:12:50.720> do<00:12:50.880> that,\ncases where you can't actually do that,\ncases where you can't actually do that, right?<00:12:51.519> Like<00:12:51.680> you're<00:12:51.920> not<00:12:52.000> doing<00:12:52.160> any<00:12:52.399> reverse\nright? Like you're not doing any reverse\nright? Like you're not doing any reverse engineering.<00:12:53.680> You're<00:12:53.920> not<00:12:54.399> uh<00:12:55.040> you're<00:12:55.200> not\nengineering. You're not uh you're not\nengineering. You're not uh you're not doing<00:12:55.600> any<00:12:55.760> of<00:12:55.839> that.<00:12:56.160> You<00:12:56.399> can<00:12:56.480> control<00:12:56.800> your\ndoing any of that. You can control your\ndoing any of that. You can control your program.<00:12:57.279> You<00:12:57.440> can<00:12:57.519> modify<00:12:57.760> the<00:12:58.000> program.\nprogram. You can modify the program.\nprogram. You can modify the program. There's<00:12:58.639> still<00:12:58.800> a<00:12:59.040> problem<00:12:59.200> with<00:12:59.519> requiring\nThere's still a problem with requiring\nThere's still a problem with requiring that<00:13:00.160> in<00:13:00.399> order<00:13:00.560> to<00:13:00.720> get<00:13:01.040> at<00:13:01.360> very<00:13:01.600> simple\nthat in order to get at very simple\nthat in order to get at very simple information.\ninformation.\ninformation. Let's<00:13:03.680> walk<00:13:03.920> through<00:13:04.079> the<00:13:04.320> series<00:13:04.480> of<00:13:04.720> steps\nLet's walk through the series of steps\nLet's walk through the series of steps you<00:13:06.000> might<00:13:06.160> go<00:13:06.320> through<00:13:06.480> when<00:13:06.720> using<00:13:06.959> logs<00:13:08.079> uh\nyou might go through when using logs uh\nyou might go through when using logs uh in<00:13:08.399> order<00:13:08.480> to<00:13:08.720> debug<00:13:09.279> a<00:13:09.519> black<00:13:09.839> box.<00:13:11.040> So<00:13:11.279> first\nin order to debug a black box. So first\nin order to debug a black box. So first you're<00:13:11.920> presumably<00:13:12.800> writing<00:13:13.120> some<00:13:13.360> code<00:13:13.600> for\nyou're presumably writing some code for\nyou're presumably writing some code for some<00:13:13.920> actual<00:13:14.240> task<00:13:14.480> you<00:13:14.720> have.<00:13:15.519> Um,<00:13:16.320> number\nsome actual task you have. Um, number\nsome actual task you have. Um, number two,<00:13:16.880> you<00:13:17.200> build,<00:13:17.600> right?<00:13:17.760> You<00:13:17.920> wait<00:13:18.000> for<00:13:18.160> your\ntwo, you build, right? You wait for your\ntwo, you build, right? You wait for your build<00:13:18.399> to<00:13:18.560> complete,<00:13:19.120> you<00:13:19.360> run,<00:13:19.760> create\nbuild to complete, you run, create\nbuild to complete, you run, create whatever<00:13:20.399> state<00:13:20.639> you<00:13:20.880> wanted<00:13:21.120> to<00:13:21.200> be<00:13:21.279> in<00:13:21.519> to\nwhatever state you wanted to be in to\nwhatever state you wanted to be in to observe<00:13:22.160> the<00:13:22.320> code<00:13:22.480> that<00:13:22.720> you<00:13:22.800> wrote,<00:13:23.279> and\nobserve the code that you wrote, and\nobserve the code that you wrote, and then<00:13:23.680> you<00:13:24.000> check<00:13:24.240> the<00:13:24.399> log,<00:13:24.639> right?<00:13:24.880> You\nthen you check the log, right? You\nthen you check the log, right? You observe<00:13:25.279> the<00:13:25.440> log.\nobserve the log.\nobserve the log. And<00:13:28.079> then<00:13:28.240> a<00:13:28.480> very<00:13:28.720> common<00:13:29.279> outcome<00:13:29.680> of<00:13:29.839> this\nAnd then a very common outcome of this\nAnd then a very common outcome of this process<00:13:30.480> is<00:13:31.040> you<00:13:31.200> realize<00:13:31.600> info<00:13:31.920> you<00:13:32.079> didn't\nprocess is you realize info you didn't\nprocess is you realize info you didn't uh<00:13:32.639> you<00:13:32.880> needed<00:13:33.360> isn't<00:13:33.760> logged,<00:13:34.800> you<00:13:34.959> add<00:13:35.200> new\nuh you needed isn't logged, you add new\nuh you needed isn't logged, you add new logging<00:13:35.760> code,<00:13:35.920> and<00:13:36.079> you<00:13:36.240> go<00:13:36.399> back<00:13:36.560> up<00:13:36.639> to<00:13:36.800> the\nlogging code, and you go back up to the\nlogging code, and you go back up to the build<00:13:37.200> step,<00:13:37.440> and<00:13:37.600> you<00:13:37.760> run<00:13:37.920> an<00:13:38.160> observe.<00:13:38.639> Same\nbuild step, and you run an observe. Same\nbuild step, and you run an observe. Same thing<00:13:38.959> with<00:13:39.120> profiling.<00:13:39.920> Same<00:13:40.079> thing<00:13:40.160> with\nthing with profiling. Same thing with\nthing with profiling. Same thing with any<00:13:40.959> form<00:13:41.120> of<00:13:41.279> logging<00:13:41.680> is<00:13:41.839> like<00:13:42.000> this,<00:13:42.320> right?\nany form of logging is like this, right?\nany form of logging is like this, right? because<00:13:42.800> you're<00:13:43.040> it's<00:13:43.600> explicitly<00:13:44.240> wired\nbecause you're it's explicitly wired\nbecause you're it's explicitly wired into<00:13:44.880> the<00:13:45.040> to<00:13:45.200> the<00:13:45.360> program's<00:13:45.839> code,<00:13:46.160> right?\ninto the to the program's code, right?\ninto the to the program's code, right? In<00:13:47.680> other<00:13:47.839> words,<00:13:49.120> let's<00:13:49.360> say<00:13:49.519> you're<00:13:49.680> missing\nIn other words, let's say you're missing\nIn other words, let's say you're missing some<00:13:50.240> expression<00:13:50.720> X<00:13:51.200> from<00:13:51.440> the<00:13:51.600> log,<00:13:52.000> where<00:13:52.240> X\nsome expression X from the log, where X\nsome expression X from the log, where X could<00:13:52.720> be<00:13:52.800> anything<00:13:53.040> you<00:13:53.279> might<00:13:53.440> evaluate\ncould be anything you might evaluate\ncould be anything you might evaluate within<00:13:54.240> a<00:13:54.399> log<00:13:54.639> or<00:13:54.880> print<00:13:55.120> statement<00:13:56.320> after\nwithin a log or print statement after\nwithin a log or print statement after you<00:13:56.880> discover<00:13:57.279> this,<00:13:58.240> the<00:13:58.480> new<00:13:58.800> information\nyou discover this, the new information\nyou discover this, the new information you<00:13:59.680> have<00:13:59.920> that<00:14:00.160> you<00:14:00.320> could<00:14:00.480> enter<00:14:00.720> into<00:14:00.880> the\nyou have that you could enter into the\nyou have that you could enter into the system<00:14:01.519> is<00:14:01.760> simply<00:14:02.160> X.<00:14:03.199> In<00:14:03.360> a<00:14:03.600> very<00:14:04.000> basic,\nsystem is simply X. In a very basic,\nsystem is simply X. In a very basic, more<00:14:04.959> ideal<00:14:06.320> user<00:14:06.720> flow,<00:14:07.600> you<00:14:07.760> would<00:14:07.920> just\nmore ideal user flow, you would just\nmore ideal user flow, you would just have<00:14:08.240> to<00:14:08.399> write<00:14:08.560> that.<00:14:08.800> You<00:14:08.959> just<00:14:09.040> have<00:14:09.120> to<00:14:09.279> say\nhave to write that. You just have to say\nhave to write that. You just have to say X.<00:14:09.760> X<00:14:10.000> is<00:14:10.079> what<00:14:10.240> I'm<00:14:10.399> looking<00:14:10.560> for,<00:14:11.279> right?\nX. X is what I'm looking for, right?\nX. X is what I'm looking for, right? Instead,<00:14:12.160> you'd<00:14:12.560> find<00:14:12.639> a<00:14:12.800> spot<00:14:12.959> in<00:14:13.120> your<00:14:13.279> code,\nInstead, you'd find a spot in your code,\nInstead, you'd find a spot in your code, write<00:14:14.160> the<00:14:14.399> extra<00:14:14.639> printing<00:14:14.959> or<00:14:15.120> logging\nwrite the extra printing or logging\nwrite the extra printing or logging code,<00:14:15.760> and<00:14:16.000> that's<00:14:16.160> like<00:14:16.320> the<00:14:16.480> best<00:14:16.720> case,\ncode, and that's like the best case,\ncode, and that's like the best case, right?<00:14:17.199> We<00:14:17.360> don't<00:14:17.440> know<00:14:17.440> what<00:14:17.680> it's<00:14:17.839> going<00:14:17.920> to\nright? We don't know what it's going to\nright? We don't know what it's going to look<00:14:18.160> like.<00:14:18.959> Um,<00:14:19.440> you<00:14:19.680> build,\nlook like. Um, you build,\nlook like. Um, you build, you<00:14:21.440> run<00:14:21.600> and<00:14:21.760> recreate<00:14:22.160> whatever<00:14:22.480> state<00:14:22.720> you\nyou run and recreate whatever state you\nyou run and recreate whatever state you wanted<00:14:23.120> to<00:14:23.199> be<00:14:23.279> in,<00:14:23.680> and<00:14:23.920> you<00:14:24.079> browse<00:14:24.320> the<00:14:24.480> log\nwanted to be in, and you browse the log\nwanted to be in, and you browse the log again.\nagain.\nagain. And<00:14:27.040> needless<00:14:27.440> to<00:14:27.600> say,<00:14:27.760> the<00:14:28.000> huge<00:14:28.240> problem\nAnd needless to say, the huge problem\nAnd needless to say, the huge problem with<00:14:28.639> this,<00:14:29.839> this<00:14:30.320> is<00:14:30.720> roughly<00:14:31.199> instant<00:14:31.839> for\nwith this, this is roughly instant for\nwith this, this is roughly instant for the<00:14:32.320> user.\nthe user.\nthe user. This<00:14:34.639> is<00:14:34.880> often<00:14:35.279> frustratingly<00:14:36.000> long.<00:14:37.199> So\nThis is often frustratingly long. So\nThis is often frustratingly long. So even<00:14:37.600> in<00:14:37.839> a<00:14:38.000> small<00:14:38.320> wellorganized<00:14:38.959> codebase\neven in a small wellorganized codebase\neven in a small wellorganized codebase that<00:14:39.600> builds<00:14:39.920> very<00:14:40.160> quickly<00:14:41.440> uh<00:14:41.600> that's\nthat builds very quickly uh that's\nthat builds very quickly uh that's optimized<00:14:42.560> for<00:14:42.800> very<00:14:43.120> good<00:14:43.360> development\noptimized for very good development\noptimized for very good development times<00:14:45.120> this<00:14:45.360> will<00:14:45.519> take<00:14:45.680> many<00:14:45.920> extra<00:14:46.240> seconds.\ntimes this will take many extra seconds.\ntimes this will take many extra seconds. Um<00:14:48.399> furthermore<00:14:48.880> if<00:14:48.959> a<00:14:49.120> codebase<00:14:49.519> isn't\nUm furthermore if a codebase isn't\nUm furthermore if a codebase isn't prepared<00:14:50.000> to<00:14:50.240> recreate<00:14:50.720> state<00:14:51.040> very<00:14:51.279> easily\nprepared to recreate state very easily\nprepared to recreate state very easily which<00:14:51.920> it<00:14:52.160> very<00:14:52.320> often<00:14:52.639> is<00:14:53.279> uh<00:14:53.600> not<00:14:53.839> prepared\nwhich it very often is uh not prepared\nwhich it very often is uh not prepared to<00:14:54.320> do<00:14:54.399> that<00:14:55.199> um<00:14:55.360> it'll<00:14:55.680> be<00:14:56.079> much<00:14:56.320> worse.\nto do that um it'll be much worse.\nto do that um it'll be much worse. And<00:14:59.040> lastly,<00:14:59.360> browsing<00:14:59.760> the<00:14:59.920> log<00:15:00.160> itself<00:15:01.040> can\nAnd lastly, browsing the log itself can\nAnd lastly, browsing the log itself can often<00:15:01.519> be<00:15:01.680> quite<00:15:01.920> slow.<00:15:02.240> And<00:15:02.399> the<00:15:02.560> reason<00:15:02.720> why\noften be quite slow. And the reason why\noften be quite slow. And the reason why is<00:15:03.120> that<00:15:03.279> it's<00:15:03.360> a<00:15:03.519> fire<00:15:03.760> hose<00:15:04.000> of<00:15:04.160> information,\nis that it's a fire hose of information,\nis that it's a fire hose of information, right?<00:15:04.800> You<00:15:04.959> have<00:15:05.120> so<00:15:05.279> much<00:15:05.440> information\nright? You have so much information\nright? You have so much information pouring<00:15:06.240> into<00:15:06.480> you.<00:15:07.360> Um,<00:15:07.600> and<00:15:07.839> you're<00:15:08.079> just\npouring into you. Um, and you're just\npouring into you. Um, and you're just like<00:15:08.480> looking<00:15:08.639> for<00:15:08.959> if<00:15:09.199> you're<00:15:09.760> sometimes<00:15:10.079> the\nlike looking for if you're sometimes the\nlike looking for if you're sometimes the log<00:15:10.399> is<00:15:10.560> useful<00:15:10.800> information,<00:15:11.199> right?\nlog is useful information, right?\nlog is useful information, right? Sometimes<00:15:11.680> you<00:15:11.839> want<00:15:11.920> to<00:15:12.000> see<00:15:12.160> it<00:15:12.320> over<00:15:12.560> time,\nSometimes you want to see it over time,\nSometimes you want to see it over time, but<00:15:13.120> if<00:15:13.279> you're<00:15:13.360> trying<00:15:13.440> to<00:15:13.600> zoom<00:15:13.839> in<00:15:14.000> and\nbut if you're trying to zoom in and\nbut if you're trying to zoom in and really<00:15:14.480> narrow<00:15:14.800> in<00:15:14.959> on<00:15:15.120> one<00:15:15.360> particular\nreally narrow in on one particular\nreally narrow in on one particular thing,<00:15:15.920> you<00:15:16.160> have<00:15:16.240> a<00:15:16.480> whole<00:15:16.639> window<00:15:16.880> of\nthing, you have a whole window of\nthing, you have a whole window of information<00:15:17.360> that<00:15:17.519> you<00:15:17.600> have<00:15:17.680> to<00:15:17.839> look\ninformation that you have to look\ninformation that you have to look through.\nthrough.\nthrough. Um,<00:15:20.480> so\nUm, so\nUm, so I<00:15:23.040> think<00:15:23.120> of<00:15:23.360> this<00:15:23.519> problem<00:15:24.079> as<00:15:24.399> being<00:15:25.120> related\nI think of this problem as being related\nI think of this problem as being related to<00:15:26.480> information<00:15:26.880> flow.<00:15:28.320> uh<00:15:28.399> a<00:15:28.639> constant<00:15:29.040> cycle\nto information flow. uh a constant cycle\nto information flow. uh a constant cycle of<00:15:29.519> information<00:15:30.000> passing<00:15:30.399> between<00:15:30.639> the<00:15:30.800> user\nof information passing between the user\nof information passing between the user and<00:15:31.279> the<00:15:31.519> computer.<00:15:32.320> So<00:15:32.800> you<00:15:33.440> on<00:15:33.680> the<00:15:33.839> left\nand the computer. So you on the left\nand the computer. So you on the left there<00:15:35.440> good<00:15:35.680> good<00:15:36.000> diagram.<00:15:36.639> Pass<00:15:36.880> down<00:15:37.120> your\nthere good good diagram. Pass down your\nthere good good diagram. Pass down your your<00:15:37.440> your<00:15:37.839> information<00:15:38.240> as<00:15:38.399> inputs.\nyour your information as inputs.\nyour your information as inputs. Computer<00:15:39.360> returns<00:15:39.600> it<00:15:39.760> back<00:15:39.920> out<00:15:40.000> as<00:15:40.240> outputs,\nComputer returns it back out as outputs,\nComputer returns it back out as outputs, right?\nright?\nright? Um<00:15:43.760> so<00:15:44.000> we<00:15:44.240> repeat<00:15:44.639> we<00:15:44.959> repeat<00:15:45.199> this<00:15:45.360> cycle<00:15:45.600> of\nUm so we repeat we repeat this cycle of\nUm so we repeat we repeat this cycle of information<00:15:46.000> flow<00:15:46.240> in<00:15:46.399> order<00:15:46.560> to<00:15:46.800> sort<00:15:47.040> of\ninformation flow in order to sort of\ninformation flow in order to sort of refine<00:15:47.440> our<00:15:47.600> data<00:15:47.760> over<00:15:48.000> time.<00:15:48.160> It's<00:15:48.320> this\nrefine our data over time. It's this\nrefine our data over time. It's this constant<00:15:48.880> back<00:15:49.040> and<00:15:49.279> forth<00:15:49.920> with<00:15:50.079> the\nconstant back and forth with the\nconstant back and forth with the computer.<00:15:50.639> You<00:15:50.800> start<00:15:50.959> with<00:15:51.120> some<00:15:51.279> very\ncomputer. You start with some very\ncomputer. You start with some very unrefined<00:15:52.160> state<00:15:52.639> or<00:15:52.800> or<00:15:53.120> no<00:15:53.360> state<00:15:53.519> at<00:15:53.680> all\nunrefined state or or no state at all\nunrefined state or or no state at all and<00:15:54.240> then<00:15:54.399> you<00:15:54.959> progressively<00:15:55.519> refine<00:15:55.839> it.\nand then you progressively refine it.\nand then you progressively refine it. you<00:15:56.480> you<00:15:56.880> build<00:15:57.120> towards<00:15:57.440> whatever<00:15:57.759> you're\nyou you build towards whatever you're\nyou you build towards whatever you're trying<00:15:58.000> to<00:15:58.160> build<00:15:58.399> towards.\nFor<00:16:01.839> programmers,<00:16:02.560> the<00:16:02.800> data<00:16:03.040> we're<00:16:03.199> working\nFor programmers, the data we're working\nFor programmers, the data we're working on<00:16:03.519> is<00:16:03.759> code.<00:16:04.160> So<00:16:04.320> if<00:16:04.480> we<00:16:04.639> zoom<00:16:04.800> into<00:16:05.120> one<00:16:05.279> of\non is code. So if we zoom into one of\non is code. So if we zoom into one of those<00:16:05.519> like<00:16:05.680> little<00:16:05.839> blob<00:16:06.240> shapes,<00:16:06.480> we've<00:16:06.720> got\nthose like little blob shapes, we've got\nthose like little blob shapes, we've got A<00:16:07.040> to<00:16:07.199> B<00:16:07.600> prime<00:16:07.839> and<00:16:07.920> then<00:16:08.079> A<00:16:08.240> to<00:16:08.399> B<00:16:08.560> double\nA to B prime and then A to B double\nA to B prime and then A to B double prime.<00:16:09.519> That's<00:16:09.680> what<00:16:09.839> we're<00:16:10.000> refining.\nprime. That's what we're refining.\nprime. That's what we're refining. Uh<00:16:12.480> the<00:16:12.720> information<00:16:13.120> flow<00:16:13.600> cycle<00:16:13.920> is<00:16:14.160> sort<00:16:14.320> of\nUh the information flow cycle is sort of\nUh the information flow cycle is sort of what<00:16:14.639> pushes<00:16:14.880> this<00:16:15.040> forward,<00:16:15.279> right?<00:16:15.440> We<00:16:15.600> see\nwhat pushes this forward, right? We see\nwhat pushes this forward, right? We see the<00:16:15.759> outputs<00:16:16.079> from<00:16:16.160> one<00:16:16.320> state,<00:16:16.560> we<00:16:16.720> produce\nthe outputs from one state, we produce\nthe outputs from one state, we produce information<00:16:17.600> that<00:16:17.759> encodes<00:16:18.079> a<00:16:18.240> new<00:16:18.399> state<00:16:18.560> and\ninformation that encodes a new state and\ninformation that encodes a new state and and<00:16:18.800> and<00:16:19.120> so<00:16:19.279> on<00:16:19.360> and<00:16:19.600> so<00:16:19.759> forth.<00:16:20.800> Um\nand and so on and so forth. Um\nand and so on and so forth. Um uh<00:16:23.680> oh.<00:16:24.399> So<00:16:24.639> we<00:16:24.800> can<00:16:24.880> think<00:16:24.959> of<00:16:25.120> this\nuh oh. So we can think of this\nuh oh. So we can think of this refinement<00:16:25.680> process<00:16:26.079> as<00:16:26.399> like<00:16:26.560> a<00:16:26.800> repeating\nrefinement process as like a repeating\nrefinement process as like a repeating cycle<00:16:27.440> across<00:16:27.839> time.<00:16:28.720> Um<00:16:29.360> and<00:16:29.519> now<00:16:29.839> maybe<00:16:30.079> this\ncycle across time. Um and now maybe this\ncycle across time. Um and now maybe this is<00:16:30.480> all<00:16:30.880> just<00:16:31.199> like<00:16:31.440> a<00:16:31.680> little<00:16:32.000> abstract<00:16:32.720> and<00:16:32.959> I\nis all just like a little abstract and I\nis all just like a little abstract and I get<00:16:33.279> it.<00:16:33.839> But<00:16:33.920> the<00:16:34.160> reason<00:16:34.320> I<00:16:34.480> frame<00:16:34.639> it<00:16:34.800> this\nget it. But the reason I frame it this\nget it. But the reason I frame it this way<00:16:35.360> is<00:16:35.600> to<00:16:35.839> associate<00:16:36.880> um<00:16:37.199> certain<00:16:37.519> problems\nway is to associate um certain problems\nway is to associate um certain problems on<00:16:38.000> computers<00:16:38.880> like<00:16:39.120> with<00:16:39.360> programming<00:16:39.759> or\non computers like with programming or\non computers like with programming or debugging<00:16:40.959> or<00:16:41.519> uh<00:16:41.680> or<00:16:42.000> understanding\ndebugging or uh or understanding\ndebugging or uh or understanding anything<00:16:42.880> with<00:16:43.120> certain<00:16:43.920> uh<00:16:44.000> undesirable\nanything with certain uh undesirable\nanything with certain uh undesirable properties<00:16:45.040> of<00:16:45.199> this<00:16:45.360> sort<00:16:45.519> of<00:16:45.600> like<00:16:45.759> wave\nproperties of this sort of like wave\nproperties of this sort of like wave pattern<00:16:46.320> that<00:16:46.480> you<00:16:46.639> end<00:16:46.720> up<00:16:46.880> seeing.<00:16:48.320> For\npattern that you end up seeing. For\npattern that you end up seeing. For instance,<00:16:49.680> programming<00:16:50.160> can<00:16:50.399> feel<00:16:50.560> very\ninstance, programming can feel very\ninstance, programming can feel very frustrating\nfrustrating\nfrustrating um<00:16:52.639> or<00:16:53.120> more<00:16:53.360> opaque<00:16:53.759> or<00:16:53.920> more<00:16:54.079> difficult<00:16:54.320> to\num or more opaque or more difficult to\num or more opaque or more difficult to understand<00:16:55.120> when<00:16:55.440> this<00:16:55.600> cycle<00:16:55.839> has<00:16:56.000> a<00:16:56.079> much\nunderstand when this cycle has a much\nunderstand when this cycle has a much longer<00:16:56.560> frequency.<00:16:57.600> Um<00:16:58.639> if<00:16:58.800> the<00:16:58.959> flow<00:16:59.199> of\nlonger frequency. Um if the flow of\nlonger frequency. Um if the flow of information<00:16:59.680> is<00:16:59.839> blocked<00:17:00.160> on<00:17:00.320> something,\ninformation is blocked on something,\ninformation is blocked on something, let's<00:17:00.720> just<00:17:00.880> use<00:17:01.040> compile<00:17:01.440> times<00:17:01.680> as<00:17:01.839> an\nlet's just use compile times as an\nlet's just use compile times as an example.<00:17:02.639> You<00:17:02.800> tweak<00:17:03.120> something,<00:17:03.759> you\nexample. You tweak something, you\nexample. You tweak something, you accidentally<00:17:04.480> touch<00:17:04.640> a<00:17:04.799> C++<00:17:05.360> header<00:17:05.679> file,\naccidentally touch a C++ header file,\naccidentally touch a C++ header file, you're<00:17:06.160> in<00:17:06.400> like<00:17:06.559> some<00:17:06.799> major<00:17:07.199> nightmare<00:17:08.240> uh\nyou're in like some major nightmare uh\nyou're in like some major nightmare uh C++<00:17:09.039> codebase,<00:17:09.679> you<00:17:09.839> hit<00:17:10.000> build,<00:17:10.240> and<00:17:10.400> you're\nC++ codebase, you hit build, and you're\nC++ codebase, you hit build, and you're like,<00:17:10.640> great,<00:17:10.880> I<00:17:11.039> can't<00:17:11.120> wait<00:17:11.280> to<00:17:11.439> test<00:17:11.679> this\nlike, great, I can't wait to test this\nlike, great, I can't wait to test this new<00:17:12.160> like<00:17:12.480> jump<00:17:13.199> speed<00:17:13.439> or<00:17:13.679> whatever.<00:17:14.480> And\nnew like jump speed or whatever. And\nnew like jump speed or whatever. And it's<00:17:14.880> like<00:17:15.679> 10<00:17:15.919> minutes<00:17:16.559> just<00:17:16.799> gone.<00:17:17.520> Um\nuh<00:17:21.280> that's<00:17:21.600> an<00:17:21.760> example<00:17:22.000> of<00:17:22.240> like\nuh that's an example of like\nuh that's an example of like deterioration<00:17:23.039> of<00:17:23.199> this<00:17:23.439> information<00:17:23.760> flow,\ndeterioration of this information flow,\ndeterioration of this information flow, the<00:17:24.240> quality<00:17:24.400> of<00:17:24.559> this<00:17:24.799> information<00:17:25.199> flow\nthe quality of this information flow\nthe quality of this information flow just<00:17:26.079> due<00:17:26.319> to<00:17:26.559> this<00:17:27.039> frequency<00:17:27.520> expanding.\njust due to this frequency expanding.\njust due to this frequency expanding. Um<00:17:29.919> so<00:17:30.240> this<00:17:30.559> is<00:17:30.880> less<00:17:31.200> efficient.<00:17:32.000> It's<00:17:32.160> less\nUm so this is less efficient. It's less\nUm so this is less efficient. It's less effective.<00:17:33.039> It's<00:17:33.280> not<00:17:33.440> good.<00:17:34.559> Furthermore,\neffective. It's not good. Furthermore,\neffective. It's not good. Furthermore, the<00:17:35.200> information<00:17:35.440> flow<00:17:35.760> doesn't<00:17:36.000> only<00:17:36.160> have<00:17:36.240> a\nthe information flow doesn't only have a\nthe information flow doesn't only have a frequency<00:17:36.720> but<00:17:36.880> a<00:17:37.039> band<00:17:37.440> a<00:17:37.600> bandwidth<00:17:38.080> as\nfrequency but a band a bandwidth as\nfrequency but a band a bandwidth as well.<00:17:39.360> Now<00:17:39.600> to<00:17:39.760> be<00:17:39.840> fair,<00:17:40.080> I<00:17:40.240> probably<00:17:40.400> could\nwell. Now to be fair, I probably could\nwell. Now to be fair, I probably could have<00:17:40.640> drawn<00:17:40.880> that<00:17:41.039> as<00:17:41.280> like<00:17:41.840> the<00:17:42.080> amplitude,\nhave drawn that as like the amplitude,\nhave drawn that as like the amplitude, but<00:17:42.720> I<00:17:42.960> just<00:17:43.120> wanted<00:17:43.360> to<00:17:43.520> make<00:17:43.600> it<00:17:43.760> like<00:17:44.000> thick\nbut I just wanted to make it like thick\nbut I just wanted to make it like thick versus<00:17:44.559> thin<00:17:44.799> for<00:17:45.039> whatever<00:17:45.280> reason.<00:17:45.440> I<00:17:45.600> don't\nversus thin for whatever reason. I don't\nversus thin for whatever reason. I don't It's<00:17:45.919> all<00:17:46.000> abstract,<00:17:46.400> but<00:17:46.559> you<00:17:46.720> get<00:17:46.799> the\nIt's all abstract, but you get the\nIt's all abstract, but you get the point.<00:17:47.600> Um,<00:17:48.720> it,<00:17:49.039> you<00:17:49.120> know,<00:17:49.200> if<00:17:49.440> you're\npoint. Um, it, you know, if you're\npoint. Um, it, you know, if you're waiting<00:17:49.760> a<00:17:49.919> long<00:17:50.080> time<00:17:50.160> for<00:17:50.400> some<00:17:50.559> information\nwaiting a long time for some information\nwaiting a long time for some information to<00:17:51.039> come<00:17:51.200> back,<00:17:51.440> it's<00:17:51.600> better<00:17:51.760> if<00:17:51.919> you<00:17:52.080> get<00:17:52.160> a\nto come back, it's better if you get a\nto come back, it's better if you get a lot<00:17:52.400> of<00:17:52.559> information.<00:17:53.360> If<00:17:53.600> you<00:17:53.679> get<00:17:53.840> very\nlot of information. If you get very\nlot of information. If you get very little<00:17:54.320> information<00:17:54.880> and<00:17:55.360> you're<00:17:55.600> waiting<00:17:55.760> a\nlittle information and you're waiting a\nlittle information and you're waiting a long<00:17:56.080> time<00:17:56.160> for<00:17:56.320> it,<00:17:56.480> it's<00:17:56.720> like<00:17:56.880> almost\nlong time for it, it's like almost\nlong time for it, it's like almost completely<00:17:57.520> useless.\ncompletely useless.\ncompletely useless. Um,\nUm,\nUm, so<00:18:02.880> the<00:18:03.120> goal<00:18:03.440> is<00:18:03.679> to<00:18:03.840> maximize<00:18:04.320> frequency<00:18:05.360> and\nso the goal is to maximize frequency and\nso the goal is to maximize frequency and maximize<00:18:06.400> useful<00:18:06.799> bandwidth.\nmaximize useful bandwidth.\nmaximize useful bandwidth. So<00:18:08.880> let's<00:18:09.120> take<00:18:09.200> a<00:18:09.520> look<00:18:09.760> at<00:18:10.080> logging<00:18:10.559> from\nSo let's take a look at logging from\nSo let's take a look at logging from this<00:18:10.960> perspective.<00:18:11.600> Um<00:18:11.919> logging<00:18:12.480> does\nthis perspective. Um logging does\nthis perspective. Um logging does obviously<00:18:13.200> have<00:18:13.440> the<00:18:13.679> ability<00:18:13.919> to<00:18:14.080> provide\nobviously have the ability to provide\nobviously have the ability to provide useful<00:18:15.120> information.<00:18:16.160> Um<00:18:16.640> it<00:18:16.880> can\nuseful information. Um it can\nuseful information. Um it can dramatically<00:18:17.440> improve<00:18:17.760> the<00:18:17.919> bandwidth<00:18:18.559> uh\ndramatically improve the bandwidth uh\ndramatically improve the bandwidth uh improve<00:18:19.120> the<00:18:19.280> bandwidth<00:18:19.600> of<00:18:19.840> information<00:18:20.559> uh\nimprove the bandwidth of information uh\nimprove the bandwidth of information uh output<00:18:21.440> from<00:18:21.600> the<00:18:21.760> computer<00:18:22.000> back<00:18:22.160> to<00:18:22.320> you.\noutput from the computer back to you.\noutput from the computer back to you. But<00:18:23.280> it<00:18:23.520> can<00:18:23.679> require<00:18:24.160> many<00:18:24.480> slow<00:18:24.720> iterations\nBut it can require many slow iterations\nBut it can require many slow iterations to<00:18:25.440> refine<00:18:25.760> for<00:18:26.000> some<00:18:26.160> debugging<00:18:26.640> case.<00:18:26.880> And\nto refine for some debugging case. And\nto refine for some debugging case. And again<00:18:27.280> there's<00:18:27.679> there's<00:18:27.919> a<00:18:28.080> universe<00:18:28.400> of\nagain there's there's a universe of\nagain there's there's a universe of information<00:18:28.880> you<00:18:29.120> could<00:18:29.200> be<00:18:29.360> looking<00:18:29.520> at.<00:18:30.000> You\ninformation you could be looking at. You\ninformation you could be looking at. You can't<00:18:30.320> log<00:18:30.640> all<00:18:30.720> of<00:18:30.880> it.<00:18:31.600> Um<00:18:32.160> and<00:18:32.559> and<00:18:32.799> it<00:18:32.960> can\ncan't log all of it. Um and and it can\ncan't log all of it. Um and and it can uh<00:18:33.919> also<00:18:34.240> slow<00:18:34.480> down<00:18:34.640> the<00:18:34.799> execution<00:18:35.120> of<00:18:35.200> the\nuh also slow down the execution of the\nuh also slow down the execution of the program<00:18:35.600> itself.<00:18:35.919> So<00:18:36.160> it's<00:18:36.480> you<00:18:36.640> you<00:18:36.960> get<00:18:37.120> a\nprogram itself. So it's you you get a\nprogram itself. So it's you you get a little<00:18:37.440> bit<00:18:37.520> thicker<00:18:37.840> bandwidth<00:18:38.880> but<00:18:39.600> you\nlittle bit thicker bandwidth but you\nlittle bit thicker bandwidth but you decrease<00:18:40.400> the<00:18:40.559> frequency<00:18:40.960> a<00:18:41.120> bit.\ndecrease the frequency a bit.\ndecrease the frequency a bit. Um<00:18:43.919> so<00:18:44.400> hopefully<00:18:44.799> I've<00:18:44.960> been<00:18:45.120> convincing\nUm so hopefully I've been convincing\nUm so hopefully I've been convincing enough<00:18:46.559> to<00:18:46.720> to<00:18:47.120> show<00:18:47.360> that<00:18:47.760> while<00:18:48.000> logs<00:18:48.400> can<00:18:48.559> be\nenough to to show that while logs can be\nenough to to show that while logs can be good<00:18:48.880> and<00:18:49.120> while<00:18:49.840> this<00:18:50.080> is<00:18:50.320> a<00:18:50.640> completely\ngood and while this is a completely\ngood and while this is a completely valid<00:18:51.520> technique,<00:18:52.400> it's<00:18:52.640> it's<00:18:53.200> uh<00:18:53.440> it<00:18:53.679> can<00:18:53.760> be\nvalid technique, it's it's uh it can be\nvalid technique, it's it's uh it can be less<00:18:54.160> efficient<00:18:54.480> than<00:18:54.640> what<00:18:54.799> you<00:18:54.960> might<00:18:55.600> uh\nless efficient than what you might uh\nless efficient than what you might uh imagine<00:18:56.080> is<00:18:56.320> the<00:18:56.480> ideal<00:18:56.799> case.\nimagine is the ideal case.\nimagine is the ideal case. That's<00:18:58.960> where<00:18:59.120> a<00:18:59.280> debugger<00:18:59.600> comes<00:18:59.760> into<00:19:00.000> play.\nThat's where a debugger comes into play.\nThat's where a debugger comes into play. So<00:19:02.000> I'll<00:19:02.240> start<00:19:02.320> by<00:19:02.480> saying<00:19:02.559> that<00:19:02.720> I<00:19:02.880> often<00:19:03.120> see\nSo I'll start by saying that I often see\nSo I'll start by saying that I often see debuggers<00:19:03.919> misunderstood.<00:19:04.720> If<00:19:04.960> you<00:19:05.120> if<00:19:05.280> I\ndebuggers misunderstood. If you if I\ndebuggers misunderstood. If you if I could<00:19:05.520> have<00:19:05.679> gone<00:19:05.919> back<00:19:06.160> in<00:19:06.400> time,<00:19:07.039> I<00:19:07.280> pro<00:19:07.600> like\ncould have gone back in time, I pro like\ncould have gone back in time, I pro like in<00:19:08.160> if<00:19:08.320> I<00:19:08.480> was<00:19:08.559> in<00:19:08.799> charge,<00:19:09.280> I<00:19:09.520> wouldn't<00:19:09.760> have\nin if I was in charge, I wouldn't have\nin if I was in charge, I wouldn't have called<00:19:10.240> them<00:19:10.400> that<00:19:10.720> probably.<00:19:10.960> I<00:19:11.120> mean,<00:19:11.280> I\ncalled them that probably. I mean, I\ncalled them that probably. I mean, I understand<00:19:11.600> it's<00:19:11.840> like<00:19:11.919> the<00:19:12.080> physical<00:19:12.320> bug<00:19:12.480> in\nunderstand it's like the physical bug in\nunderstand it's like the physical bug in the<00:19:12.720> machine.<00:19:12.960> Everyone<00:19:13.200> knows<00:19:13.440> the<00:19:13.760> story.\nthe machine. Everyone knows the story.\nthe machine. Everyone knows the story. But,<00:19:14.799> you<00:19:14.960> know,<00:19:15.120> it<00:19:15.280> might<00:19:15.520> illuminate<00:19:15.919> them\nBut, you know, it might illuminate them\nBut, you know, it might illuminate them a<00:19:16.240> little<00:19:16.320> bit<00:19:16.480> today<00:19:16.880> like<00:19:17.120> modern<00:19:17.440> debuggers\na little bit today like modern debuggers\na little bit today like modern debuggers if<00:19:18.080> you<00:19:18.160> think<00:19:18.400> about<00:19:18.640> them<00:19:18.799> as<00:19:18.960> just<00:19:19.039> a\nif you think about them as just a\nif you think about them as just a program<00:19:19.440> analyzer.<00:19:20.000> So,<00:19:20.000> it's<00:19:20.080> giving<00:19:20.240> you<00:19:20.320> a\nprogram analyzer. So, it's giving you a\nprogram analyzer. So, it's giving you a window<00:19:20.720> into<00:19:20.880> your<00:19:21.120> program.\nwindow into your program.\nwindow into your program. Uh<00:19:23.039> really,<00:19:23.280> it's<00:19:23.520> just<00:19:23.919> giving<00:19:24.160> you\nUh really, it's just giving you\nUh really, it's just giving you information<00:19:24.799> extraction<00:19:25.280> tools.\ninformation extraction tools.\ninformation extraction tools. Uh<00:19:27.280> in<00:19:27.520> any<00:19:27.760> case,\nUh in any case,\nUh in any case, a<00:19:30.320> debugger<00:19:30.720> allows<00:19:30.960> us<00:19:31.200> to<00:19:32.000> analyze<00:19:32.400> a\na debugger allows us to analyze a\na debugger allows us to analyze a program<00:19:32.960> at<00:19:33.200> runtime.\nprogram at runtime.\nprogram at runtime. without<00:19:35.120> modifying<00:19:35.600> it.<00:19:36.400> Um<00:19:36.880> you<00:19:37.120> can<00:19:37.200> use\nwithout modifying it. Um you can use\nwithout modifying it. Um you can use structural<00:19:37.760> information<00:19:38.080> about<00:19:38.240> the<00:19:38.400> program\nstructural information about the program\nstructural information about the program stored<00:19:38.880> in<00:19:39.039> debug<00:19:39.360> info<00:19:40.080> to<00:19:40.320> get<00:19:40.559> like\nstored in debug info to get like\nstored in debug info to get like readaloud<00:19:41.520> print<00:19:41.760> loop<00:19:42.000> style<00:19:42.240> features<00:19:42.720> at\nreadaloud print loop style features at\nreadaloud print loop style features at the<00:19:43.120> limit.<00:19:44.400> Um<00:19:44.799> and<00:19:45.039> therefore<00:19:45.360> you<00:19:45.600> shortcut\nthe limit. Um and therefore you shortcut\nthe limit. Um and therefore you shortcut the<00:19:46.160> code<00:19:46.320> modification<00:19:46.880> process\nthe code modification process\nthe code modification process altogether.<00:19:47.679> You<00:19:47.760> you<00:19:48.080> completely<00:19:48.559> avoid<00:19:48.799> the\naltogether. You you completely avoid the\naltogether. You you completely avoid the tool<00:19:49.200> chain.<00:19:50.080> Um<00:19:50.880> so<00:19:51.280> importantly<00:19:51.760> debugger\ntool chain. Um so importantly debugger\ntool chain. Um so importantly debugger allows<00:19:52.400> us<00:19:52.559> to<00:19:52.960> avoid<00:19:53.440> that<00:19:53.760> second<00:19:54.080> problem\nallows us to avoid that second problem\nallows us to avoid that second problem of<00:19:54.960> modification<00:19:55.520> time.<00:19:55.840> How<00:19:56.080> long<00:19:56.320> does<00:19:56.480> it\nof modification time. How long does it\nof modification time. How long does it take<00:19:57.120> for<00:19:57.360> me<00:19:57.600> to<00:19:58.320> get<00:19:58.480> some<00:19:58.720> new<00:19:58.960> information\ntake for me to get some new information\ntake for me to get some new information out<00:19:59.440> of<00:19:59.600> the<00:19:59.760> system?<00:20:00.400> All<00:20:00.400> right.<00:20:01.760> Um,<00:20:02.880> so<00:20:03.280> the\nout of the system? All right. Um, so the\nout of the system? All right. Um, so the reason<00:20:03.600> I've<00:20:03.840> been<00:20:04.000> so<00:20:04.160> focused<00:20:04.320> on<00:20:04.400> debugger\nreason I've been so focused on debugger\nreason I've been so focused on debugger visualization<00:20:05.520> and<00:20:05.760> the<00:20:05.919> reason<00:20:06.080> why<00:20:06.559> I<00:20:07.200> would\nvisualization and the reason why I would\nvisualization and the reason why I would argue<00:20:07.679> it's<00:20:07.919> important<00:20:08.160> and<00:20:08.400> hopefully<00:20:08.880> it's\nargue it's important and hopefully it's\nargue it's important and hopefully it's been<00:20:09.360> convincing<00:20:09.760> and<00:20:10.160> justifies<00:20:10.720> this<00:20:10.880> talk.\nbeen convincing and justifies this talk.\nbeen convincing and justifies this talk. Um,<00:20:12.240> first<00:20:12.559> the<00:20:12.720> visualizations<00:20:13.440> don't<00:20:13.600> need\nUm, first the visualizations don't need\nUm, first the visualizations don't need to<00:20:13.760> be<00:20:13.919> textual<00:20:14.480> and<00:20:14.720> second<00:20:15.120> they<00:20:15.280> don't<00:20:15.440> need\nto be textual and second they don't need\nto be textual and second they don't need to<00:20:15.679> be<00:20:15.919> they<00:20:16.160> don't<00:20:16.320> need<00:20:16.480> to<00:20:16.640> require<00:20:17.039> this\nto be they don't need to require this\nto be they don't need to require this this<00:20:17.600> build<00:20:18.640> run<00:20:19.039> recreate<00:20:19.520> state<00:20:20.000> observe\nthis build run recreate state observe\nthis build run recreate state observe loop.\nloop.\nloop. So<00:20:23.440> in<00:20:23.600> order<00:20:23.840> to<00:20:24.000> be<00:20:24.160> useful<00:20:24.400> a<00:20:24.559> debugger<00:20:24.880> has\nSo in order to be useful a debugger has\nSo in order to be useful a debugger has to<00:20:25.039> meet<00:20:25.200> that<00:20:25.360> mandate.<00:20:26.320> It<00:20:26.480> needs<00:20:26.640> to\nto meet that mandate. It needs to\nto meet that mandate. It needs to provide<00:20:26.960> a<00:20:27.120> variety<00:20:27.360> of<00:20:27.760> visualizations<00:20:28.559> not\nprovide a variety of visualizations not\nprovide a variety of visualizations not just<00:20:28.880> textual<00:20:29.440> ones.<00:20:30.080> and<00:20:30.240> it<00:20:30.480> needs<00:20:30.640> to<00:20:30.720> be\njust textual ones. and it needs to be\njust textual ones. and it needs to be able<00:20:30.880> to<00:20:31.039> do<00:20:31.120> it<00:20:31.280> quickly.<00:20:32.400> Um,<00:20:32.799> if<00:20:32.960> it<00:20:33.120> can't\nable to do it quickly. Um, if it can't\nable to do it quickly. Um, if it can't provide<00:20:33.679> a<00:20:34.000> variety,<00:20:34.799> then<00:20:35.440> um,<00:20:35.919> it<00:20:36.080> forces\nprovide a variety, then um, it forces\nprovide a variety, then um, it forces the<00:20:36.559> programmer<00:20:36.799> to<00:20:36.960> go<00:20:37.039> back<00:20:37.120> to<00:20:37.280> custom\nthe programmer to go back to custom\nthe programmer to go back to custom logging<00:20:37.919> tools.<00:20:38.720> And<00:20:38.880> if<00:20:39.039> it<00:20:39.200> can't<00:20:39.440> do<00:20:39.600> it\nlogging tools. And if it can't do it\nlogging tools. And if it can't do it quickly,<00:20:40.159> it's<00:20:40.400> faster<00:20:40.720> anyways<00:20:41.039> for<00:20:41.200> the\nquickly, it's faster anyways for the\nquickly, it's faster anyways for the programmer<00:20:41.679> to<00:20:41.840> go<00:20:42.000> back<00:20:42.080> to<00:20:42.159> the<00:20:42.320> program<00:20:42.559> and\nprogrammer to go back to the program and\nprogrammer to go back to the program and just<00:20:42.799> write<00:20:42.960> their<00:20:43.120> own<00:20:43.280> custom<00:20:43.520> visualizer,\njust write their own custom visualizer,\njust write their own custom visualizer, right?<00:20:44.480> So,<00:20:44.559> if<00:20:44.720> it<00:20:44.960> can't<00:20:45.120> do<00:20:45.280> both<00:20:45.520> of<00:20:45.679> those\nright? So, if it can't do both of those\nright? So, if it can't do both of those things,<00:20:46.880> then<00:20:47.360> the<00:20:47.760> utility<00:20:48.000> of<00:20:48.080> a<00:20:48.240> debugger\nthings, then the utility of a debugger\nthings, then the utility of a debugger dramatically<00:20:49.120> drops.\nSo,<00:20:53.039> let's<00:20:53.280> look<00:20:53.360> at<00:20:53.520> how<00:20:53.600> this<00:20:53.840> will<00:20:54.000> work.\nSo, let's look at how this will work.\nSo, let's look at how this will work. I'll<00:20:55.840> start<00:20:56.000> with<00:20:56.080> a<00:20:56.320> brief<00:20:56.559> introduction<00:20:56.960> to\nI'll start with a brief introduction to\nI'll start with a brief introduction to the<00:20:57.360> basics<00:20:57.600> of<00:20:57.760> how<00:20:58.080> debuggers<00:20:58.640> work<00:20:58.799> with\nthe basics of how debuggers work with\nthe basics of how debuggers work with your<00:20:59.200> programs<00:20:59.600> at<00:20:59.840> all<00:21:00.000> and<00:21:00.159> then<00:21:00.320> we'll\nyour programs at all and then we'll\nyour programs at all and then we'll build<00:21:00.720> up<00:21:01.039> from<00:21:01.280> there.\nbuild up from there.\nbuild up from there. First,<00:21:03.360> let's<00:21:03.600> consider<00:21:03.919> how<00:21:04.080> your<00:21:04.240> program\nFirst, let's consider how your program\nFirst, let's consider how your program is<00:21:04.799> executing<00:21:05.440> on<00:21:05.679> a<00:21:05.840> modern<00:21:06.159> operating\nis executing on a modern operating\nis executing on a modern operating system.<00:21:07.360> And<00:21:07.679> note<00:21:07.919> that<00:21:08.159> like<00:21:08.320> the\nsystem. And note that like the\nsystem. And note that like the terminology<00:21:08.960> I<00:21:09.120> use,<00:21:09.360> it<00:21:09.520> differs<00:21:09.840> across<00:21:10.960> uh\nterminology I use, it differs across uh\nterminology I use, it differs across uh environments<00:21:11.600> or<00:21:11.919> platforms,<00:21:12.400> but<00:21:12.559> you<00:21:12.799> can\nenvironments or platforms, but you can\nenvironments or platforms, but you can find<00:21:13.280> analoges<00:21:13.840> of<00:21:14.000> everything.<00:21:14.559> Um<00:21:14.880> it's\nfind analoges of everything. Um it's\nfind analoges of everything. Um it's all,<00:21:15.840> you<00:21:16.000> know,<00:21:16.559> you'll<00:21:16.880> you'll<00:21:17.120> find<00:21:17.280> the\nall, you know, you'll you'll find the\nall, you know, you'll you'll find the matching<00:21:17.840> terms<00:21:18.240> if<00:21:18.480> you<00:21:18.559> look.<00:21:19.679> Um<00:21:20.080> so<00:21:20.240> when\nmatching terms if you look. Um so when\nmatching terms if you look. Um so when you<00:21:20.559> start<00:21:20.640> your<00:21:20.799> program,<00:21:21.120> you<00:21:21.200> know,<00:21:21.280> you've\nyou start your program, you know, you've\nyou start your program, you know, you've got<00:21:21.600> your<00:21:21.760> executables<00:21:22.799> uh<00:21:22.960> file<00:21:23.200> on<00:21:23.360> disk.\ngot your executables uh file on disk.\ngot your executables uh file on disk. there's<00:21:23.919> a<00:21:24.000> bunch<00:21:24.080> of<00:21:24.159> DL<00:21:24.640> files<00:21:24.880> on<00:21:25.120> disk.<00:21:25.919> Uh\nthere's a bunch of DL files on disk. Uh\nthere's a bunch of DL files on disk. Uh those<00:21:26.640> can<00:21:26.799> be<00:21:26.960> referred<00:21:27.200> to<00:21:27.360> as<00:21:27.520> executable\nthose can be referred to as executable\nthose can be referred to as executable images.\nimages.\nimages. Um<00:21:30.240> when<00:21:30.480> you<00:21:30.640> launch<00:21:30.880> your<00:21:31.120> process,<00:21:32.000> the<00:21:32.240> the\nUm when you launch your process, the the\nUm when you launch your process, the the kernel's<00:21:33.039> loader<00:21:33.280> is<00:21:33.440> actually<00:21:33.679> going<00:21:33.840> to\nkernel's loader is actually going to\nkernel's loader is actually going to take<00:21:34.559> those<00:21:34.880> images<00:21:35.760> and<00:21:36.320> uh<00:21:36.480> it<00:21:37.280> it<00:21:37.600> produces\ntake those images and uh it it produces\ntake those images and uh it it produces modules.<00:21:38.480> Modules<00:21:38.799> aren't<00:21:39.039> exactly<00:21:39.280> the<00:21:39.440> same\nmodules. Modules aren't exactly the same\nmodules. Modules aren't exactly the same as<00:21:39.760> executable<00:21:40.240> images,<00:21:40.480> but<00:21:40.640> you<00:21:40.720> can<00:21:40.880> think\nas executable images, but you can think\nas executable images, but you can think of<00:21:41.039> modules<00:21:41.440> as<00:21:41.600> sort<00:21:41.760> of<00:21:42.000> the<00:21:42.240> loaded\nof modules as sort of the loaded\nof modules as sort of the loaded equivalent<00:21:43.200> into<00:21:43.440> your<00:21:43.679> address<00:21:44.000> space<00:21:44.799> of\nequivalent into your address space of\nequivalent into your address space of those<00:21:45.360> executable<00:21:45.919> images.\nthose executable images.\nthose executable images. Um<00:21:48.159> the<00:21:48.320> process<00:21:48.640> also<00:21:48.880> includes<00:21:49.120> a<00:21:49.280> page\nUm the process also includes a page\nUm the process also includes a page table<00:21:49.840> to<00:21:50.080> map<00:21:50.320> from,<00:21:50.720> you<00:21:50.880> know,<00:21:50.960> it's<00:21:51.120> got<00:21:51.200> a\ntable to map from, you know, it's got a\ntable to map from, you know, it's got a virtual<00:21:51.600> address<00:21:51.840> base.<00:21:52.159> It<00:21:52.240> maps<00:21:52.480> from\nvirtual address base. It maps from\nvirtual address base. It maps from virtual<00:21:52.880> addresses<00:21:53.200> to<00:21:53.360> physical<00:21:53.679> addresses.\nvirtual addresses to physical addresses.\nvirtual addresses to physical addresses. Um,\nUm,\nUm, and<00:21:57.600> uh,<00:21:57.679> your<00:21:57.919> process<00:21:58.240> also<00:21:58.880> contains<00:21:59.200> one\nand uh, your process also contains one\nand uh, your process also contains one or<00:21:59.520> more<00:21:59.679> threads<00:22:00.000> that<00:22:00.159> are<00:22:00.320> executing<00:22:00.720> just,\nor more threads that are executing just,\nor more threads that are executing just, you<00:22:01.280> know,<00:22:01.360> pieces<00:22:01.679> of<00:22:01.919> code,<00:22:02.400> right?<00:22:03.760> Uh,<00:22:04.000> and\nyou know, pieces of code, right? Uh, and\nyou know, pieces of code, right? Uh, and each<00:22:04.559> one<00:22:04.799> includes<00:22:05.200> things<00:22:05.440> like<00:22:05.760> a<00:22:06.000> register\neach one includes things like a register\neach one includes things like a register file.<00:22:07.360> Um,<00:22:07.600> the<00:22:07.840> kernel<00:22:08.320> scheduler<00:22:08.799> then<00:22:08.960> is\nfile. Um, the kernel scheduler then is\nfile. Um, the kernel scheduler then is like,<00:22:09.280> I've<00:22:09.440> got<00:22:09.520> all<00:22:09.600> these<00:22:09.760> threads.<00:22:10.080> I'll\nlike, I've got all these threads. I'll\nlike, I've got all these threads. I'll start<00:22:10.480> putting<00:22:10.720> them<00:22:10.799> onto<00:22:11.039> these<00:22:11.200> cores.\nstart putting them onto these cores.\nstart putting them onto these cores. We'll<00:22:11.760> schedule<00:22:12.000> them,<00:22:12.320> get<00:22:12.480> them<00:22:12.640> going,<00:22:13.360> and\nWe'll schedule them, get them going, and\nWe'll schedule them, get them going, and then<00:22:13.760> your<00:22:14.000> program<00:22:14.320> is<00:22:14.640> executing.\nthen your program is executing.\nthen your program is executing. So,<00:22:17.200> a<00:22:17.360> debugger<00:22:17.840> is<00:22:18.000> just<00:22:18.159> a<00:22:18.400> program.<00:22:19.360> And<00:22:19.520> so\nSo, a debugger is just a program. And so\nSo, a debugger is just a program. And so when<00:22:19.840> it<00:22:20.000> executes<00:22:20.480> it's<00:22:20.640> just<00:22:20.799> another\nwhen it executes it's just another\nwhen it executes it's just another process<00:22:22.159> uh<00:22:22.320> one<00:22:22.559> which<00:22:22.799> the<00:22:23.039> kernel<00:22:23.520> records\nprocess uh one which the kernel records\nprocess uh one which the kernel records as<00:22:24.159> being<00:22:24.400> attached<00:22:25.360> to<00:22:26.000> uh\nah<00:22:29.520> got<00:22:29.679> it<00:22:29.919> thanks<00:22:31.120> uh<00:22:31.280> it's<00:22:31.520> just<00:22:31.760> another\nah got it thanks uh it's just another\nah got it thanks uh it's just another process<00:22:32.400> but<00:22:32.799> uh<00:22:32.880> the<00:22:33.120> kernel<00:22:33.520> is<00:22:33.760> just\nprocess but uh the kernel is just\nprocess but uh the kernel is just recording<00:22:34.799> the<00:22:35.039> debugger<00:22:35.520> as<00:22:35.760> being<00:22:36.000> attached\nrecording the debugger as being attached\nrecording the debugger as being attached to<00:22:37.360> the<00:22:37.600> debuggy.<00:22:38.080> It's<00:22:38.240> just<00:22:38.320> a<00:22:38.480> state<00:22:38.720> in<00:22:38.880> the\nto the debuggy. It's just a state in the\nto the debuggy. It's just a state in the kernel.\nkernel.\nkernel. Um,<00:22:41.760> so,<00:22:42.320> uh,<00:22:42.880> when<00:22:43.120> a<00:22:43.280> debugger<00:22:43.600> is<00:22:43.760> attached\nUm, so, uh, when a debugger is attached\nUm, so, uh, when a debugger is attached to<00:22:44.080> another<00:22:44.400> process,<00:22:44.960> which<00:22:45.280> I<00:22:45.440> refer<00:22:45.600> to<00:22:45.760> as\nto another process, which I refer to as\nto another process, which I refer to as the<00:22:46.080> debug,<00:22:47.200> I<00:22:47.360> don't<00:22:47.440> know<00:22:47.520> if<00:22:47.679> anyone<00:22:47.919> else\nthe debug, I don't know if anyone else\nthe debug, I don't know if anyone else does<00:22:48.320> that,<00:22:48.480> but<00:22:48.799> it's<00:22:49.039> kind<00:22:49.200> of,<00:22:49.440> you<00:22:49.600> know,<00:22:49.760> I\ndoes that, but it's kind of, you know, I\ndoes that, but it's kind of, you know, I don't<00:22:50.000> know,<00:22:50.320> hopefully<00:22:50.720> hopefully<00:22:51.039> it's\ndon't know, hopefully hopefully it's\ndon't know, hopefully hopefully it's clear.<00:22:51.600> Hope<00:22:51.840> I<00:22:52.000> don't<00:22:52.159> fumble<00:22:52.880> it.<00:22:53.200> But<00:22:53.760> point\nclear. Hope I don't fumble it. But point\nclear. Hope I don't fumble it. But point being,<00:22:54.480> uh,<00:22:54.640> when<00:22:54.880> you're<00:22:55.039> attached<00:22:55.440> as<00:22:55.600> debug\nbeing, uh, when you're attached as debug\nbeing, uh, when you're attached as debug as<00:22:56.159> the<00:22:56.320> debugger,<00:22:56.720> the<00:22:56.799> kernel<00:22:57.120> will<00:22:57.280> report\nas the debugger, the kernel will report\nas the debugger, the kernel will report to<00:22:57.679> the<00:22:57.760> debugger<00:22:58.559> uh,<00:22:58.720> debug<00:22:59.039> events.<00:22:59.360> You\nto the debugger uh, debug events. You\nto the debugger uh, debug events. You get<00:22:59.840> sort<00:23:00.000> of<00:23:00.080> a<00:23:00.240> series<00:23:00.400> of<00:23:00.559> debug<00:23:00.960> events.\nget sort of a series of debug events.\nget sort of a series of debug events. Um,<00:23:02.799> sometimes<00:23:03.120> the<00:23:03.280> building<00:23:03.520> blocks<00:23:03.679> that\nUm, sometimes the building blocks that\nUm, sometimes the building blocks that the<00:23:03.919> colonel<00:23:04.159> provides<00:23:04.400> are<00:23:04.559> lower<00:23:04.799> than\nthe colonel provides are lower than\nthe colonel provides are lower than this,<00:23:05.280> but<00:23:06.240> in<00:23:06.400> principle,<00:23:06.799> this<00:23:06.960> is<00:23:07.120> sort<00:23:07.280> of\nthis, but in principle, this is sort of\nthis, but in principle, this is sort of how<00:23:07.760> it's<00:23:08.000> how<00:23:08.159> you<00:23:08.320> can<00:23:08.480> conceptualize<00:23:09.039> it.\nhow it's how you can conceptualize it.\nhow it's how you can conceptualize it. Um,<00:23:10.480> and<00:23:10.640> these<00:23:10.880> debug<00:23:11.200> events<00:23:11.440> include\nUm, and these debug events include\nUm, and these debug events include things<00:23:11.840> like,<00:23:12.080> okay,<00:23:12.240> a<00:23:12.400> thread<00:23:12.559> has<00:23:12.720> been\nthings like, okay, a thread has been\nthings like, okay, a thread has been created,<00:23:13.120> a<00:23:13.280> module<00:23:13.520> has<00:23:13.679> been<00:23:13.840> loaded,\ncreated, a module has been loaded,\ncreated, a module has been loaded, etc.<00:23:16.640> Or,<00:23:17.039> oh,<00:23:17.280> I<00:23:17.440> should<00:23:17.600> say,<00:23:17.840> this<00:23:18.000> one's\netc. Or, oh, I should say, this one's\netc. Or, oh, I should say, this one's important,<00:23:18.960> or<00:23:19.280> an<00:23:19.520> exception<00:23:19.840> has<00:23:20.080> been<00:23:20.159> hit,\nimportant, or an exception has been hit,\nimportant, or an exception has been hit, right?<00:23:21.120> Like<00:23:21.280> a<00:23:21.520> hardware<00:23:21.840> exception.\nright? Like a hardware exception.\nright? Like a hardware exception. Um,<00:23:24.000> so<00:23:24.159> the<00:23:24.400> debugger<00:23:24.799> process<00:23:25.120> control,\nUm, so the debugger process control,\nUm, so the debugger process control, like<00:23:25.760> the<00:23:25.919> piece<00:23:26.080> of<00:23:26.159> the<00:23:26.240> debugger<00:23:26.640> that's\nlike the piece of the debugger that's\nlike the piece of the debugger that's doing<00:23:26.960> process<00:23:27.280> control,<00:23:27.600> and<00:23:27.760> the<00:23:27.919> debuggy\ndoing process control, and the debuggy\ndoing process control, and the debuggy are<00:23:28.480> in<00:23:28.640> kind<00:23:28.720> of<00:23:28.799> one<00:23:28.960> of<00:23:29.120> two<00:23:29.360> states,<00:23:29.600> you\nare in kind of one of two states, you\nare in kind of one of two states, you can<00:23:29.840> think<00:23:30.000> of<00:23:30.080> it.<00:23:31.360> um<00:23:31.760> either<00:23:32.000> the\ncan think of it. um either the\ncan think of it. um either the debugger's<00:23:32.720> process<00:23:33.039> control<00:23:33.679> is<00:23:34.000> running\ndebugger's process control is running\ndebugger's process control is running and<00:23:35.360> the<00:23:35.520> debuggy<00:23:36.000> is<00:23:36.240> paused<00:23:37.520> or<00:23:38.000> the\nand the debuggy is paused or the\nand the debuggy is paused or the debugger<00:23:38.720> process<00:23:39.120> control<00:23:39.360> is<00:23:39.600> paused<00:23:40.320> and\ndebugger process control is paused and\ndebugger process control is paused and the<00:23:40.720> debug<00:23:41.360> is<00:23:41.679> running.<00:23:42.159> So<00:23:42.320> it<00:23:42.559> get<00:23:42.799> kind<00:23:42.960> of\nthe debug is running. So it get kind of\nthe debug is running. So it get kind of a<00:23:43.360> pingpong<00:23:43.919> between<00:23:44.159> these<00:23:44.400> two<00:23:44.559> states<00:23:44.799> is\na pingpong between these two states is\na pingpong between these two states is happening.\nhappening.\nhappening. Uh<00:23:47.840> and<00:23:48.080> this<00:23:48.240> means<00:23:48.400> that<00:23:48.720> execution<00:23:49.679> between\nUh and this means that execution between\nUh and this means that execution between a<00:23:50.080> debugger<00:23:50.480> and<00:23:50.640> debug<00:23:51.280> can<00:23:51.440> sort<00:23:51.600> of<00:23:51.679> be<00:23:52.000> you\na debugger and debug can sort of be you\na debugger and debug can sort of be you can<00:23:52.320> think<00:23:52.400> of<00:23:52.480> it<00:23:52.640> as<00:23:52.799> interled<00:23:53.280> across<00:23:53.600> time\ncan think of it as interled across time\ncan think of it as interled across time like<00:23:54.320> it's<00:23:54.559> mutually<00:23:54.960> exclusive<00:23:55.520> only<00:23:55.760> one<00:23:55.919> is\nlike it's mutually exclusive only one is\nlike it's mutually exclusive only one is really<00:23:56.400> doing<00:23:56.559> things<00:23:57.679> uh<00:23:57.760> at<00:23:58.000> a<00:23:58.159> time.\nreally doing things uh at a time.\nreally doing things uh at a time. This<00:23:59.840> allows<00:24:00.080> the<00:24:00.159> debugger<00:24:00.559> to<00:24:00.720> sort<00:24:00.880> of\nThis allows the debugger to sort of\nThis allows the debugger to sort of interle<00:24:01.360> its<00:24:01.600> execution<00:24:02.480> with<00:24:02.720> the<00:24:02.880> debuggy\ninterle its execution with the debuggy\ninterle its execution with the debuggy in<00:24:03.440> a<00:24:03.520> variety<00:24:03.760> of<00:24:03.840> ways.<00:24:04.080> So<00:24:04.240> this<00:24:04.400> is<00:24:04.480> how<00:24:04.640> the\nin a variety of ways. So this is how the\nin a variety of ways. So this is how the runtime<00:24:05.520> code<00:24:05.840> modification<00:24:06.720> actually\nruntime code modification actually\nruntime code modification actually works.<00:24:07.679> It's<00:24:07.919> that<00:24:08.320> the<00:24:08.559> debugger<00:24:09.120> has<00:24:09.360> the\nworks. It's that the debugger has the\nworks. It's that the debugger has the opportunity<00:24:09.840> to<00:24:10.080> sort<00:24:10.240> of<00:24:10.400> mutate<00:24:10.880> the<00:24:11.120> debug\nopportunity to sort of mutate the debug\nopportunity to sort of mutate the debug live<00:24:12.720> before<00:24:12.960> it<00:24:13.200> continues.<00:24:13.760> So<00:24:13.919> you<00:24:14.080> can\nlive before it continues. So you can\nlive before it continues. So you can change<00:24:14.640> how<00:24:14.799> it's<00:24:15.039> actually<00:24:15.279> executing.\nchange how it's actually executing.\nchange how it's actually executing. That's<00:24:16.240> how<00:24:16.400> it<00:24:16.480> avoids<00:24:16.880> the<00:24:17.120> whole<00:24:17.440> build\nThat's how it avoids the whole build\nThat's how it avoids the whole build step<00:24:18.159> alto<00:24:18.400> together.<00:24:19.360> Um\nstep alto together. Um\nstep alto together. Um now<00:24:21.200> the<00:24:21.360> granularity<00:24:21.840> here<00:24:22.000> is<00:24:22.159> somewhat\nnow the granularity here is somewhat\nnow the granularity here is somewhat subtle<00:24:23.039> and<00:24:23.279> it<00:24:23.440> varies<00:24:23.679> by<00:24:23.919> platform.<00:24:24.480> So,\nsubtle and it varies by platform. So,\nsubtle and it varies by platform. So, you<00:24:25.200> know,<00:24:25.360> for<00:24:25.520> example,<00:24:26.159> while<00:24:26.480> the<00:24:26.640> debuggy\nyou know, for example, while the debuggy\nyou know, for example, while the debuggy is<00:24:27.279> executing,<00:24:27.600> the<00:24:27.760> debugger<00:24:28.080> could<00:24:28.240> still\nis executing, the debugger could still\nis executing, the debugger could still be<00:24:28.559> doing<00:24:28.720> UI<00:24:29.200> like<00:24:30.000> um<00:24:30.480> you<00:24:30.720> know,\nbe doing UI like um you know,\nbe doing UI like um you know, it's<00:24:33.039> not<00:24:33.200> necessarily<00:24:34.000> exactly<00:24:34.559> that,<00:24:35.279> you\nit's not necessarily exactly that, you\nit's not necessarily exactly that, you know,<00:24:35.679> the<00:24:35.840> the<00:24:36.240> entire<00:24:36.559> debugger<00:24:36.960> is<00:24:37.120> stopped\nknow, the the entire debugger is stopped\nknow, the the entire debugger is stopped while<00:24:37.600> the<00:24:37.760> debuggy<00:24:38.960> uh<00:24:39.120> is<00:24:39.360> running.<00:24:40.320> Um\nwhile the debuggy uh is running. Um\nwhile the debuggy uh is running. Um now<00:24:42.400> on<00:24:42.640> Windows,<00:24:43.360> it<00:24:43.600> tends<00:24:43.840> to<00:24:44.000> look<00:24:44.159> a<00:24:44.320> lot\nnow on Windows, it tends to look a lot\nnow on Windows, it tends to look a lot like<00:24:44.640> this<00:24:45.120> um<00:24:45.279> because<00:24:45.520> it's<00:24:45.760> explicitly\nlike this um because it's explicitly\nlike this um because it's explicitly like<00:24:46.799> wait<00:24:47.039> for<00:24:47.200> a<00:24:47.279> debug<00:24:47.679> event<00:24:47.919> API.<00:24:48.720> Um<00:24:49.039> so\nlike wait for a debug event API. Um so\nlike wait for a debug event API. Um so in<00:24:49.360> that<00:24:49.520> case,<00:24:49.679> it's<00:24:49.919> like<00:24:50.080> your<00:24:50.240> thread<00:24:50.400> is\nin that case, it's like your thread is\nin that case, it's like your thread is literally<00:24:50.960> sleeping<00:24:51.279> here.<00:24:51.919> So<00:24:52.559> um<00:24:52.799> it<00:24:53.039> looks\nliterally sleeping here. So um it looks\nliterally sleeping here. So um it looks it<00:24:54.000> looks<00:24:54.240> a<00:24:54.400> lot<00:24:54.480> like<00:24:54.720> this.<00:24:55.120> Uh<00:24:55.679> but<00:24:56.080> you\nit looks a lot like this. Uh but you\nit looks a lot like this. Uh but you know<00:24:56.400> hope<00:24:56.640> hopefully<00:24:56.960> that's<00:24:57.200> clear<00:24:57.360> enough.\nknow hope hopefully that's clear enough.\nknow hope hopefully that's clear enough. Um\nUm\nUm so<00:25:01.679> this<00:25:01.919> interled<00:25:02.720> uh<00:25:02.880> execution<00:25:03.760> like<00:25:03.919> I\nso this interled uh execution like I\nso this interled uh execution like I said<00:25:04.480> the<00:25:04.720> debugger<00:25:05.120> can<00:25:05.200> do<00:25:05.279> a<00:25:05.440> bunch<00:25:05.600> of\nsaid the debugger can do a bunch of\nsaid the debugger can do a bunch of things<00:25:06.080> like<00:25:06.880> read<00:25:07.440> registers,<00:25:08.080> write\nthings like read registers, write\nthings like read registers, write registers,<00:25:09.440> read<00:25:09.760> debug<00:25:10.159> events<00:25:10.559> or<00:25:10.880> obtain\nregisters, read debug events or obtain\nregisters, read debug events or obtain debug<00:25:11.679> events,\ndebug events,\ndebug events, read<00:25:14.400> memory,<00:25:15.120> write<00:25:15.360> memory\nread memory, write memory\nread memory, write memory um<00:25:17.520> and<00:25:17.760> so<00:25:17.919> on.<00:25:18.640> Uh<00:25:19.039> and<00:25:19.279> then<00:25:19.679> you<00:25:19.840> know<00:25:20.080> from\num and so on. Uh and then you know from\num and so on. Uh and then you know from the\nthe\nthe well<00:25:22.559> that<00:25:22.799> covers<00:25:23.039> all<00:25:23.120> of<00:25:23.200> it<00:25:23.360> right<00:25:23.600> read\nwell that covers all of it right read\nwell that covers all of it right read and<00:25:23.919> write<00:25:24.159> is<00:25:24.559> reading<00:25:24.960> is<00:25:25.039> is<00:25:25.360> the<00:25:25.520> blue<00:25:25.760> and\nand write is reading is is the blue and\nand write is reading is is the blue and then<00:25:26.640> writing<00:25:26.960> is<00:25:27.120> the<00:25:27.279> orange<00:25:27.600> right?\nthen writing is the orange right?\nthen writing is the orange right? So<00:25:30.640> we<00:25:30.880> know<00:25:30.960> that<00:25:31.120> a<00:25:31.279> debugger<00:25:31.840> can<00:25:32.080> read\nSo we know that a debugger can read\nSo we know that a debugger can read registers<00:25:32.799> in<00:25:32.960> memory<00:25:33.440> which<00:25:33.600> is<00:25:33.760> really<00:25:33.919> the\nregisters in memory which is really the\nregisters in memory which is really the main<00:25:34.240> building<00:25:34.559> block<00:25:35.279> for<00:25:35.520> like<00:25:35.760> extracting\nmain building block for like extracting\nmain building block for like extracting information<00:25:36.720> out<00:25:36.880> of<00:25:36.960> a<00:25:37.200> process<00:25:37.520> right<00:25:37.679> you\ninformation out of a process right you\ninformation out of a process right you kind<00:25:38.000> of<00:25:38.159> you<00:25:38.400> can<00:25:38.480> read<00:25:38.720> memory<00:25:39.760> right<00:25:40.080> and<00:25:40.240> so\nkind of you can read memory right and so\nkind of you can read memory right and so like<00:25:40.640> all<00:25:40.799> we<00:25:40.960> need<00:25:41.120> is<00:25:41.360> to<00:25:41.520> like<00:25:41.679> ask<00:25:41.919> the<00:25:42.080> user\nlike all we need is to like ask the user\nlike all we need is to like ask the user for<00:25:42.400> an<00:25:42.559> address<00:25:43.039> you<00:25:43.120> know<00:25:43.279> ask<00:25:43.520> them<00:25:43.679> for<00:25:43.760> a\nfor an address you know ask them for a\nfor an address you know ask them for a size<00:25:44.080> and<00:25:44.240> then<00:25:44.320> we<00:25:44.400> just<00:25:44.559> show<00:25:44.640> them<00:25:44.720> the\nsize and then we just show them the\nsize and then we just show them the bytes<00:25:45.120> and<00:25:45.200> then<00:25:45.360> we're<00:25:45.440> done<00:25:45.679> right\nbytes and then we're done right\nbytes and then we're done right visualization<00:25:47.120> the<00:25:47.360> end<00:25:48.400> um<00:25:49.360> obviously<00:25:49.679> not\nvisualization the end um obviously not\nvisualization the end um obviously not as<00:25:50.159> the<00:25:50.400> user<00:25:50.880> you<00:25:51.039> don't<00:25:51.200> want<00:25:51.279> to<00:25:51.360> ask<00:25:51.600> about\nas the user you don't want to ask about\nas the user you don't want to ask about address<00:25:52.400> uh<00:25:52.559> what<00:25:52.799> what<00:25:52.960> did<00:25:53.120> I<00:25:53.279> write<00:25:53.679> 0x1<00:25:54.559> f4\naddress uh what what did I write 0x1 f4\naddress uh what what did I write 0x1 f4 3<00:25:55.440> b5<00:25:55.919> c<00:25:56.159> 0<00:25:56.640> b<00:25:56.799> 0\n3 b5 c 0 b 0\n3 b5 c 0 b 0 you<00:25:58.640> wanted<00:25:58.880> to<00:25:58.960> ask<00:25:59.120> about<00:25:59.440> X\nyou wanted to ask about X\nyou wanted to ask about X and<00:26:01.679> ideally<00:26:02.080> the<00:26:02.240> system<00:26:02.480> which<00:26:03.039> allows<00:26:03.279> you\nand ideally the system which allows you\nand ideally the system which allows you to<00:26:03.600> ask<00:26:03.760> about<00:26:03.919> X<00:26:04.720> is<00:26:05.039> flexible<00:26:05.520> enough<00:26:06.480> such\nto ask about X is flexible enough such\nto ask about X is flexible enough such that<00:26:07.039> X<00:26:07.279> is<00:26:07.520> a<00:26:07.679> large<00:26:08.000> set<00:26:08.159> of<00:26:08.240> expressions.<00:26:08.720> It\nthat X is a large set of expressions. It\nthat X is a large set of expressions. It could<00:26:08.960> be<00:26:09.200> it<00:26:09.360> could<00:26:09.520> be<00:26:09.679> many<00:26:09.919> things<00:26:10.000> you\ncould be it could be many things you\ncould be it could be many things you could<00:26:10.320> ask<00:26:10.480> about<00:26:10.720> your<00:26:10.880> program.\ncould ask about your program.\ncould ask about your program. Um<00:26:13.760> debuggers<00:26:14.240> know<00:26:14.320> how<00:26:14.400> to<00:26:14.559> evaluate\nUm debuggers know how to evaluate\nUm debuggers know how to evaluate something<00:26:15.120> like<00:26:15.279> X<00:26:16.240> through<00:26:17.039> uh<00:26:17.200> an<00:26:17.440> evalu<00:26:18.080> uh\nsomething like X through uh an evalu uh\nsomething like X through uh an evalu uh an<00:26:18.480> expression<00:26:18.960> evaluation<00:26:19.600> system.<00:26:20.559> And\nan expression evaluation system. And\nan expression evaluation system. And this<00:26:20.880> is<00:26:20.960> where<00:26:21.120> all<00:26:21.279> the<00:26:21.440> visualization\nthis is where all the visualization\nthis is where all the visualization stuff<00:26:22.240> starts<00:26:22.640> kind<00:26:22.799> of<00:26:22.880> piecing<00:26:23.279> together.\nstuff starts kind of piecing together.\nstuff starts kind of piecing together. So<00:26:23.840> let's<00:26:24.000> dig<00:26:24.159> into<00:26:24.400> that.\nSo let's dig into that.\nSo let's dig into that. Evaluating<00:26:27.039> expressions,<00:26:27.679> it's<00:26:27.919> just<00:26:28.080> a\nEvaluating expressions, it's just a\nEvaluating expressions, it's just a compiler.<00:26:28.720> It's<00:26:28.880> just<00:26:29.039> a<00:26:29.200> compiler<00:26:29.600> problem.\ncompiler. It's just a compiler problem.\ncompiler. It's just a compiler problem. Normal<00:26:30.480> compiler<00:26:30.960> problem.<00:26:31.200> We<00:26:31.360> know<00:26:31.440> how<00:26:31.600> to\nNormal compiler problem. We know how to\nNormal compiler problem. We know how to solve<00:26:31.919> those.<00:26:32.400> If<00:26:32.640> we<00:26:32.799> have<00:26:32.880> some<00:26:33.360> textual\nsolve those. If we have some textual\nsolve those. If we have some textual expression<00:26:34.400> like<00:26:34.640> entity.targets<00:26:35.840> at<00:26:36.080> five,\nexpression like entity.targets at five,\nexpression like entity.targets at five, the<00:26:37.520> first<00:26:37.679> step<00:26:37.840> we<00:26:38.080> can<00:26:38.159> use<00:26:38.320> to<00:26:38.480> understand\nthe first step we can use to understand\nthe first step we can use to understand that<00:26:39.039> expression<00:26:40.400> is<00:26:40.640> to<00:26:40.799> parse<00:26:41.039> it<00:26:41.440> into<00:26:41.679> a\nthat expression is to parse it into a\nthat expression is to parse it into a structured<00:26:42.240> representation.<00:26:43.279> Now<00:26:43.600> Sam<00:26:44.159> has\nstructured representation. Now Sam has\nstructured representation. Now Sam has some<00:26:44.640> opinions<00:26:46.080> that<00:26:46.400> will<00:26:47.039> invalidate<00:26:47.840> what\nsome opinions that will invalidate what\nsome opinions that will invalidate what what<00:26:48.240> I<00:26:48.400> say<00:26:48.720> maybe,<00:26:48.960> but<00:26:49.279> but<00:26:49.600> you<00:26:49.679> know<00:26:49.840> the\nwhat I say maybe, but but you know the\nwhat I say maybe, but but you know the traditional<00:26:50.320> pipeline<00:26:50.720> is<00:26:50.880> like<00:26:51.039> okay,<00:26:51.279> first\ntraditional pipeline is like okay, first\ntraditional pipeline is like okay, first you're<00:26:51.600> going<00:26:51.600> to<00:26:51.760> parse<00:26:51.919> it<00:26:52.080> into<00:26:52.240> some<00:26:52.400> sort\nyou're going to parse it into some sort\nyou're going to parse it into some sort of<00:26:52.559> abstract<00:26:52.960> syntax<00:26:53.360> tree<00:26:53.679> structure.<00:26:54.640> Um,\nof abstract syntax tree structure. Um,\nof abstract syntax tree structure. Um, you<00:26:55.200> know,<00:26:55.279> in<00:26:55.440> this<00:26:55.600> case,<00:26:56.080> not<00:26:56.320> surprising,\nyou know, in this case, not surprising,\nyou know, in this case, not surprising, square<00:26:57.440> brackets<00:26:57.760> at<00:26:57.919> the<00:26:58.000> top,<00:26:58.240> five<00:26:58.480> on<00:26:58.640> the\nsquare brackets at the top, five on the\nsquare brackets at the top, five on the right,<00:26:59.039> dot<00:26:59.279> operator<00:26:59.679> on<00:26:59.840> the<00:26:59.919> left,\nright, dot operator on the left,\nright, dot operator on the left, entity.targets\nentity.targets\nentity.targets for<00:27:02.080> the<00:27:02.240> children<00:27:02.480> of<00:27:02.559> the<00:27:02.720> dot<00:27:02.960> operator.\nfor the children of the dot operator.\nfor the children of the dot operator. From<00:27:05.760> there,<00:27:06.720> um,<00:27:07.039> you<00:27:07.279> know,<00:27:07.760> you<00:27:07.919> can\nFrom there, um, you know, you can\nFrom there, um, you know, you can evaluate<00:27:08.400> types<00:27:08.720> for<00:27:08.799> the<00:27:08.880> abstract<00:27:09.279> syntax\nevaluate types for the abstract syntax\nevaluate types for the abstract syntax tree.<00:27:09.760> You<00:27:09.840> can<00:27:09.919> type<00:27:10.159> check<00:27:10.320> it,<00:27:10.799> you<00:27:10.960> can\ntree. You can type check it, you can\ntree. You can type check it, you can interpret<00:27:11.520> it,<00:27:12.000> or<00:27:12.240> you<00:27:12.400> can<00:27:12.480> produce<00:27:12.799> any\ninterpret it, or you can produce any\ninterpret it, or you can produce any intermediate<00:27:13.520> representation<00:27:14.240> that<00:27:14.480> you\nintermediate representation that you\nintermediate representation that you need.<00:27:15.520> Um,<00:27:15.760> you<00:27:15.919> can<00:27:16.000> lower<00:27:16.240> down<00:27:16.400> to<00:27:16.559> bite\nneed. Um, you can lower down to bite\nneed. Um, you can lower down to bite code.<00:27:17.279> You<00:27:17.440> could<00:27:17.520> even<00:27:17.679> lower<00:27:17.919> down<00:27:18.080> to\ncode. You could even lower down to\ncode. You could even lower down to native<00:27:18.559> code.<00:27:19.679> In<00:27:19.919> this<00:27:20.080> particular<00:27:20.480> case,<00:27:21.120> if\nnative code. In this particular case, if\nnative code. In this particular case, if we<00:27:21.520> boil<00:27:21.919> down<00:27:22.159> to<00:27:22.400> like<00:27:22.559> a<00:27:22.799> simple<00:27:23.120> sort<00:27:23.279> of\nwe boil down to like a simple sort of\nwe boil down to like a simple sort of stack<00:27:23.760> machine<00:27:24.400> like<00:27:24.640> intermediate\nstack machine like intermediate\nstack machine like intermediate representation<00:27:25.600> bite<00:27:25.919> code<00:27:26.400> uh<00:27:26.640> like<00:27:26.960> format\nrepresentation bite code uh like format\nrepresentation bite code uh like format um<00:27:29.360> you<00:27:29.520> know<00:27:29.760> not<00:27:30.000> that<00:27:30.159> surprising<00:27:30.960> push<00:27:31.200> the\num you know not that surprising push the\num you know not that surprising push the address<00:27:31.679> of<00:27:31.760> entity<00:27:32.080> add<00:27:32.240> the<00:27:32.320> offset<00:27:32.640> of\naddress of entity add the offset of\naddress of entity add the offset of targets<00:27:33.360> add<00:27:33.600> five<00:27:33.840> times<00:27:34.240> you<00:27:34.400> know<00:27:34.480> the\ntargets add five times you know the\ntargets add five times you know the element<00:27:34.960> size<00:27:35.120> of<00:27:35.279> whatever<00:27:35.520> this<00:27:35.679> array<00:27:35.919> is\nelement size of whatever this array is\nelement size of whatever this array is and<00:27:36.400> then<00:27:36.559> you<00:27:36.640> pop<00:27:36.880> and<00:27:36.960> that's<00:27:37.120> your<00:27:37.279> address\nand then you pop and that's your address\nand then you pop and that's your address of<00:27:37.760> entity.target<00:27:38.320> target<00:27:38.559> set<00:27:38.880> five\nof entity.target target set five\nof entity.target target set five and<00:27:40.720> then<00:27:40.960> obviously<00:27:41.279> to<00:27:41.440> compute<00:27:41.760> the<00:27:41.919> value\nand then obviously to compute the value\nand then obviously to compute the value of<00:27:42.240> something<00:27:42.400> you<00:27:42.559> just<00:27:42.720> read<00:27:42.880> from<00:27:43.039> whatever\nof something you just read from whatever\nof something you just read from whatever that<00:27:43.520> address<00:27:43.840> is<00:27:44.240> because<00:27:44.559> the<00:27:44.799> debugger<00:27:45.200> can\nthat address is because the debugger can\nthat address is because the debugger can do<00:27:45.520> that<00:27:45.919> and<00:27:46.159> then<00:27:46.559> you've<00:27:46.799> got<00:27:46.960> your<00:27:47.200> value.\ndo that and then you've got your value.\ndo that and then you've got your value. So<00:27:49.600> the<00:27:49.760> full<00:27:50.000> pipeline<00:27:50.720> might<00:27:50.960> look\nSo the full pipeline might look\nSo the full pipeline might look something<00:27:51.360> like<00:27:51.520> this<00:27:52.320> and<00:27:52.559> we<00:27:52.799> can<00:27:52.960> call<00:27:53.200> that\nsomething like this and we can call that\nsomething like this and we can call that an<00:27:53.760> evaluation.<00:27:54.960> Um<00:27:55.279> so<00:27:55.440> you<00:27:55.600> start<00:27:55.679> with<00:27:55.840> the\nan evaluation. Um so you start with the\nan evaluation. Um so you start with the text<00:27:56.159> you<00:27:56.240> get<00:27:56.320> an<00:27:56.480> abstract<00:27:56.799> syntax<00:27:57.200> tree<00:27:57.919> you\ntext you get an abstract syntax tree you\ntext you get an abstract syntax tree you get<00:27:58.240> an<00:27:58.480> intermediate<00:27:58.960> representation<00:27:59.840> you\nget an intermediate representation you\nget an intermediate representation you know<00:28:00.000> a<00:28:00.240> type<00:28:00.720> pops<00:28:01.039> out<00:28:01.600> and<00:28:01.840> you<00:28:02.000> get<00:28:02.159> a<00:28:02.559> uh\nknow a type pops out and you get a uh\nknow a type pops out and you get a uh value<00:28:03.520> finally<00:28:03.919> at<00:28:04.080> the<00:28:04.240> end.\nvalue finally at the end.\nvalue finally at the end. But<00:28:06.320> how<00:28:06.399> does<00:28:06.559> our<00:28:06.960> compiler<00:28:08.000> know<00:28:08.240> what<00:28:08.399> the\nBut how does our compiler know what the\nBut how does our compiler know what the address<00:28:08.880> of<00:28:09.039> entity<00:28:09.360> is?<00:28:09.679> Like<00:28:09.919> what<00:28:10.080> was\naddress of entity is? Like what was\naddress of entity is? Like what was that?<00:28:10.640> And<00:28:10.880> how<00:28:11.039> do<00:28:11.200> we<00:28:11.600> we<00:28:12.000> like<00:28:12.240> the<00:28:12.399> com<00:28:12.640> our\nthat? And how do we we like the com our\nthat? And how do we we like the com our compiler<00:28:13.679> really<00:28:13.919> wants<00:28:14.159> to<00:28:14.320> talk<00:28:14.480> about<00:28:14.720> the\ncompiler really wants to talk about the\ncompiler really wants to talk about the same<00:28:15.200> things<00:28:15.840> that<00:28:16.159> the<00:28:16.480> actual<00:28:16.880> program\nsame things that the actual program\nsame things that the actual program compiler<00:28:18.240> talked<00:28:18.480> about<00:28:18.720> like<00:28:18.880> the<00:28:18.960> thing\ncompiler talked about like the thing\ncompiler talked about like the thing you're<00:28:19.440> interacting<00:28:19.840> with<00:28:20.000> when<00:28:20.240> you<00:28:20.320> write\nyou're interacting with when you write\nyou're interacting with when you write the<00:28:20.640> code.<00:28:21.200> You<00:28:21.440> the<00:28:21.679> debugger<00:28:22.159> wanted<00:28:22.399> to\nthe code. You the debugger wanted to\nthe code. You the debugger wanted to talk<00:28:22.799> about<00:28:23.039> that<00:28:23.360> stuff<00:28:24.000> too.<00:28:24.640> And<00:28:24.799> we<00:28:24.960> can<00:28:25.120> do\ntalk about that stuff too. And we can do\ntalk about that stuff too. And we can do that<00:28:25.679> with<00:28:26.000> debug<00:28:26.320> info<00:28:26.880> which<00:28:27.120> is<00:28:27.279> provided\nthat with debug info which is provided\nthat with debug info which is provided to<00:28:27.679> us<00:28:27.840> by<00:28:28.000> the<00:28:28.159> compiler<00:28:28.559> and<00:28:28.640> linker.\nto us by the compiler and linker.\nto us by the compiler and linker. Whoops.\nWhoops.\nWhoops. Okay.<00:28:34.559> So<00:28:34.880> debug<00:28:35.279> info<00:28:35.919> contains<00:28:36.320> a<00:28:36.640> like<00:28:36.799> a\nOkay. So debug info contains a like a\nOkay. So debug info contains a like a ton<00:28:37.120> of<00:28:37.279> stuff<00:28:37.520> like<00:28:37.679> there's<00:28:37.919> just<00:28:38.080> tons<00:28:38.240> of\nton of stuff like there's just tons of\nton of stuff like there's just tons of stuff<00:28:38.559> in<00:28:38.720> there.<00:28:39.200> I'm<00:28:39.360> not<00:28:39.520> going<00:28:39.600> to<00:28:39.679> cover\nstuff in there. I'm not going to cover\nstuff in there. I'm not going to cover all<00:28:40.000> of<00:28:40.159> it.<00:28:40.640> Um<00:28:41.039> but<00:28:41.279> you<00:28:41.440> can<00:28:41.520> think<00:28:41.679> of<00:28:41.840> it<00:28:42.000> as\nall of it. Um but you can think of it as\nall of it. Um but you can think of it as sort<00:28:42.320> of<00:28:42.399> a<00:28:42.640> serialization<00:28:43.919> of<00:28:44.159> what<00:28:44.320> the\nsort of a serialization of what the\nsort of a serialization of what the compiler<00:28:44.880> and<00:28:45.039> linker<00:28:45.440> did<00:28:45.679> to<00:28:45.919> turn<00:28:46.320> your\ncompiler and linker did to turn your\ncompiler and linker did to turn your highle<00:28:46.960> source<00:28:47.200> code<00:28:47.919> into<00:28:49.120> your\nhighle source code into your\nhighle source code into your final<00:28:51.760> uh<00:28:52.000> you<00:28:52.159> know<00:28:52.320> executable<00:28:52.799> images\nfinal uh you know executable images\nfinal uh you know executable images right<00:28:54.159> so<00:28:54.399> it's<00:28:54.559> sort<00:28:54.640> of<00:28:54.720> a<00:28:54.880> recording<00:28:55.200> of\nright so it's sort of a recording of\nright so it's sort of a recording of like<00:28:55.520> what<00:28:55.679> work<00:28:56.000> happened<00:28:56.640> if<00:28:56.799> that<00:28:57.039> makes\nlike what work happened if that makes\nlike what work happened if that makes sense.\nsense.\nsense. Um<00:28:59.120> so<00:28:59.600> one<00:28:59.840> thing<00:28:59.919> that<00:29:00.159> debug<00:29:00.559> info<00:29:00.799> has\nUm so one thing that debug info has\nUm so one thing that debug info has which<00:29:01.200> I<00:29:01.360> don't<00:29:01.520> cover<00:29:01.679> here<00:29:01.840> because<00:29:02.080> it's\nwhich I don't cover here because it's\nwhich I don't cover here because it's not<00:29:02.399> exactly<00:29:02.720> relevant<00:29:03.039> to<00:29:03.279> this<00:29:03.520> talk<00:29:04.240> is\nnot exactly relevant to this talk is\nnot exactly relevant to this talk is line<00:29:04.960> information<00:29:05.600> which<00:29:05.840> will<00:29:06.240> take<00:29:06.720> uh<00:29:06.799> it\nline information which will take uh it\nline information which will take uh it takes<00:29:07.200> like<00:29:07.840> ranges<00:29:08.159> of<00:29:08.320> exeu<00:29:08.880> ex<00:29:08.880> executable\ntakes like ranges of exeu ex executable\ntakes like ranges of exeu ex executable code<00:29:09.840> inside<00:29:10.159> of<00:29:10.320> your<00:29:11.279> uh<00:29:11.440> inside<00:29:11.679> of<00:29:11.760> your\ncode inside of your uh inside of your\ncode inside of your uh inside of your executable<00:29:12.480> image<00:29:12.880> and<00:29:13.039> it<00:29:13.279> maps<00:29:13.520> it<00:29:13.679> to<00:29:13.760> some\nexecutable image and it maps it to some\nexecutable image and it maps it to some source<00:29:14.240> location.<00:29:14.960> So<00:29:15.120> that's<00:29:15.279> like<00:29:15.440> one\nsource location. So that's like one\nsource location. So that's like one thing<00:29:16.080> used<00:29:16.240> to<00:29:16.399> implement<00:29:16.640> things<00:29:16.799> like\nthing used to implement things like\nthing used to implement things like stepping.<00:29:18.399> Not<00:29:18.640> going<00:29:18.720> to<00:29:18.799> get<00:29:18.960> into<00:29:19.120> that\nstepping. Not going to get into that\nstepping. Not going to get into that here<00:29:19.679> but<00:29:19.840> that's<00:29:20.080> in<00:29:20.240> debug<00:29:20.559> info<00:29:20.960> too.<00:29:22.000> Um,\nhere but that's in debug info too. Um,\nhere but that's in debug info too. Um, so<00:29:23.600> these<00:29:23.840> are<00:29:24.000> all<00:29:24.159> the<00:29:24.320> parts<00:29:24.559> that<00:29:24.720> I<00:29:25.039> would\nso these are all the parts that I would\nso these are all the parts that I would consider<00:29:25.679> relevant<00:29:26.080> for<00:29:26.399> like<00:29:27.039> evaluation,\nconsider relevant for like evaluation,\nconsider relevant for like evaluation, the<00:29:27.840> basics<00:29:28.159> of<00:29:28.320> an<00:29:28.480> evaluation<00:29:29.039> system,\nthe basics of an evaluation system,\nthe basics of an evaluation system, right?<00:29:30.240> So<00:29:30.320> you've<00:29:30.559> got<00:29:30.720> types,<00:29:31.760> globals,\nright? So you've got types, globals,\nright? So you've got types, globals, thread<00:29:32.480> locals,<00:29:32.880> procedures,<00:29:33.600> location\nthread locals, procedures, location\nthread locals, procedures, location info,<00:29:34.480> scopes,<00:29:34.799> and<00:29:34.960> locals.<00:29:35.440> All<00:29:35.679> this\ninfo, scopes, and locals. All this\ninfo, scopes, and locals. All this information<00:29:36.559> about<00:29:36.720> all<00:29:36.880> of<00:29:37.039> these<00:29:37.200> is<00:29:37.360> inside\ninformation about all of these is inside\ninformation about all of these is inside debug<00:29:38.000> info.\nThe<00:29:41.760> thing<00:29:41.840> about<00:29:42.000> debug<00:29:42.399> info<00:29:42.960> very<00:29:43.279> cross\nThe thing about debug info very cross\nThe thing about debug info very cross referential.<00:29:44.480> So<00:29:44.720> globals<00:29:46.000> all<00:29:46.240> point<00:29:46.480> to\nreferential. So globals all point to\nreferential. So globals all point to their<00:29:46.880> type<00:29:47.120> information.<00:29:47.600> So<00:29:47.840> a<00:29:48.000> global\ntheir type information. So a global\ntheir type information. So a global variable<00:29:48.640> obviously<00:29:48.960> has<00:29:49.120> a<00:29:49.279> type.<00:29:49.919> Global\nvariable obviously has a type. Global\nvariable obviously has a type. Global gets<00:29:50.480> a<00:29:50.640> type.<00:29:51.840> Thread<00:29:52.080> locals<00:29:52.399> get<00:29:52.480> a<00:29:52.559> type.\ngets a type. Thread locals get a type.\ngets a type. Thread locals get a type. Procedures<00:29:53.200> get<00:29:53.279> a<00:29:53.520> type.<00:29:54.399> Local<00:29:54.799> variables\nProcedures get a type. Local variables\nProcedures get a type. Local variables obviously<00:29:55.520> get<00:29:55.679> a<00:29:55.840> type.\nobviously get a type.\nobviously get a type. Locals<00:29:59.039> refer<00:29:59.279> to<00:29:59.440> their<00:29:59.679> location<00:30:00.080> info.\nLocals refer to their location info.\nLocals refer to their location info. Hint<00:30:02.399> for<00:30:02.640> the<00:30:02.960> address<00:30:03.279> entity<00:30:03.679> thing.<00:30:03.840> We'll\nHint for the address entity thing. We'll\nHint for the address entity thing. We'll get<00:30:04.159> there.<00:30:04.960> Um,<00:30:05.200> and<00:30:05.520> scopes<00:30:05.840> refer<00:30:06.080> to<00:30:06.159> the\nget there. Um, and scopes refer to the\nget there. Um, and scopes refer to the local<00:30:06.480> variables<00:30:06.799> that<00:30:06.960> they<00:30:07.120> contain.<00:30:07.520> And\nlocal variables that they contain. And\nlocal variables that they contain. And the<00:30:07.760> procedures<00:30:08.240> refer<00:30:09.279> to<00:30:09.440> the<00:30:09.679> scopes<00:30:10.880> um\nthe procedures refer to the scopes um\nthe procedures refer to the scopes um that<00:30:11.200> that<00:30:11.520> that<00:30:11.760> are<00:30:11.919> sort<00:30:12.000> of<00:30:12.080> nested<00:30:12.480> under\nthat that that are sort of nested under\nthat that that are sort of nested under them.\nthem.\nthem. Zoom<00:30:15.440> into<00:30:15.679> types.<00:30:16.240> Types<00:30:16.640> take<00:30:16.799> the<00:30:16.880> form<00:30:17.120> of\nZoom into types. Types take the form of\nZoom into types. Types take the form of a<00:30:17.360> directed<00:30:17.760> graph.\na directed graph.\na directed graph. So<00:30:20.559> let's<00:30:20.720> say<00:30:20.799> I've<00:30:21.039> got<00:30:21.120> some<00:30:21.360> type<00:30:21.919> in32\nSo let's say I've got some type in32\nSo let's say I've got some type in32 four<00:30:22.799> bytes.<00:30:23.120> Everyone<00:30:23.360> knows<00:30:23.520> what<00:30:23.600> an<00:30:23.760> in32\nfour bytes. Everyone knows what an in32\nfour bytes. Everyone knows what an in32 is<00:30:24.559> here<00:30:24.880> I<00:30:25.039> would<00:30:25.200> imagine.<00:30:26.320> Um<00:30:26.960> the<00:30:27.200> type\nis here I would imagine. Um the type\nis here I would imagine. Um the type information<00:30:28.000> records<00:30:28.320> that<00:30:28.559> as<00:30:28.720> sort<00:30:28.799> of<00:30:28.880> a\ninformation records that as sort of a\ninformation records that as sort of a basic<00:30:29.279> type.<00:30:30.080> It<00:30:30.320> can<00:30:30.399> encode<00:30:30.720> like<00:30:30.880> the<00:30:31.039> name\nbasic type. It can encode like the name\nbasic type. It can encode like the name of<00:30:31.360> it<00:30:31.919> and<00:30:32.159> then<00:30:32.480> its<00:30:32.799> size<00:30:33.039> and<00:30:33.279> then\nof it and then its size and then\nof it and then its size and then probably<00:30:33.760> like<00:30:33.919> it's<00:30:34.159> just<00:30:34.320> got<00:30:34.399> a<00:30:34.559> fixed<00:30:34.799> code\nprobably like it's just got a fixed code\nprobably like it's just got a fixed code for<00:30:35.279> this<00:30:35.520> in<00:30:35.760> in<00:30:35.760> in<00:30:36.640> pretty<00:30:36.880> much<00:30:37.039> every\nfor this in in in pretty much every\nfor this in in in pretty much every case.<00:30:38.399> Um\ncase. Um\ncase. Um types<00:30:40.559> can<00:30:40.640> also<00:30:40.880> act<00:30:41.039> as<00:30:41.200> type<00:30:41.440> operators<00:30:42.159> on\ntypes can also act as type operators on\ntypes can also act as type operators on on<00:30:42.960> some<00:30:43.120> other<00:30:43.279> type.<00:30:43.600> So<00:30:43.679> you've<00:30:43.840> got<00:30:43.919> a\non some other type. So you've got a\non some other type. So you've got a type,<00:30:44.320> it<00:30:44.480> can<00:30:44.559> point<00:30:44.799> to<00:30:44.960> another<00:30:45.200> type<00:30:45.760> and\ntype, it can point to another type and\ntype, it can point to another type and say<00:30:46.159> I'm<00:30:46.399> an<00:30:46.640> operator<00:30:47.039> on<00:30:47.200> that<00:30:47.360> type.<00:30:48.000> So\nsay I'm an operator on that type. So\nsay I'm an operator on that type. So here<00:30:49.679> I've<00:30:49.919> got<00:30:50.080> this<00:30:50.399> 16<00:30:50.720> array<00:30:51.039> type<00:30:51.600> and<00:30:51.840> it\nhere I've got this 16 array type and it\nhere I've got this 16 array type and it points<00:30:52.240> at<00:30:52.320> the<00:30:52.480> N32<00:30:53.120> type<00:30:53.679> and<00:30:54.080> and<00:30:54.320> if<00:30:54.480> I\npoints at the N32 type and and if I\npoints at the N32 type and and if I point<00:30:54.720> at<00:30:54.880> the<00:30:55.120> 16<00:30:55.919> array<00:30:56.320> node,<00:30:57.120> that's<00:30:57.360> an<00:30:57.520> in\npoint at the 16 array node, that's an in\npoint at the 16 array node, that's an in that's<00:30:58.159> a<00:30:58.320> 16<00:30:58.640> array<00:30:58.799> of<00:30:58.880> N32s.\nIf<00:31:03.600> I've<00:31:03.760> got<00:31:03.840> a<00:31:04.000> pointer<00:31:04.399> type<00:31:05.760> um<00:31:05.919> pointing\nIf I've got a pointer type um pointing\nIf I've got a pointer type um pointing to<00:31:06.399> the<00:31:06.480> N32,<00:31:07.520> if<00:31:07.760> I<00:31:07.840> point<00:31:08.000> at<00:31:08.240> that,<00:31:08.640> if<00:31:08.799> I<00:31:08.960> say\nto the N32, if I point at that, if I say\nto the N32, if I point at that, if I say like<00:31:09.440> that<00:31:09.679> type,<00:31:10.000> that's<00:31:10.240> going<00:31:10.240> to<00:31:10.320> be<00:31:10.399> an\nlike that type, that's going to be an\nlike that type, that's going to be an N32<00:31:11.279> pointer.\nN32 pointer.\nN32 pointer. double<00:31:14.159> pointer\n32<00:31:17.840> array<00:31:18.320> of<00:31:18.559> double<00:31:18.880> pointer\ntype<00:31:23.440> information<00:31:23.840> maybe<00:31:24.080> unsurprisingly\ntype information maybe unsurprisingly\ntype information maybe unsurprisingly also<00:31:25.120> covers<00:31:25.600> uh<00:31:25.760> userdefined<00:31:26.320> types<00:31:26.640> like\nalso covers uh userdefined types like\nalso covers uh userdefined types like structures\nstructures\nstructures if<00:31:29.200> I've<00:31:29.360> got<00:31:29.520> two<00:31:29.679> structures<00:31:30.000> here<00:31:30.320> and\nif I've got two structures here and\nif I've got two structures here and we've<00:31:30.640> got<00:31:30.799> entity<00:31:31.440> ve<00:31:31.840> 3<00:31:32.559> um<00:31:32.799> entity's<00:31:33.279> got\nwe've got entity ve 3 um entity's got\nwe've got entity ve 3 um entity's got position<00:31:34.080> velocity<00:31:34.559> vec<00:31:34.799> 3<00:31:34.960> x<00:31:35.200> y<00:31:35.279> and<00:31:35.520> z<00:31:35.919> then\nposition velocity vec 3 x y and z then\nposition velocity vec 3 x y and z then there's<00:31:36.320> some<00:31:36.480> base<00:31:36.720> type<00:31:36.960> float<00:31:37.360> 32<00:31:38.720> um<00:31:39.440> you\nthere's some base type float 32 um you\nthere's some base type float 32 um you know\nknow\nknow not<00:31:41.440> that<00:31:41.679> surprising<00:31:42.080> hopefully<00:31:42.720> position\nnot that surprising hopefully position\nnot that surprising hopefully position points<00:31:43.440> of<00:31:43.519> velocity<00:31:44.399> points<00:31:44.640> of<00:31:44.799> ve<00:31:45.440> xyz\npoints of velocity points of ve xyz\npoints of velocity points of ve xyz point<00:31:46.159> to<00:31:46.320> float<00:31:46.640> 32.<00:31:47.120> That's<00:31:47.279> how<00:31:47.440> that'd<00:31:47.600> be\npoint to float 32. That's how that'd be\npoint to float 32. That's how that'd be laid<00:31:47.919> out.\nlaid out.\nlaid out. So<00:31:51.200> like<00:31:51.360> I<00:31:51.519> said,<00:31:51.840> debug<00:31:52.240> info<00:31:52.640> has<00:31:53.279> uh<00:31:53.440> data\nSo like I said, debug info has uh data\nSo like I said, debug info has uh data bounce<00:31:54.000> scopes<00:31:54.559> in<00:31:54.799> your<00:31:55.039> program.<00:31:56.320> So<00:31:56.559> let's\nbounce scopes in your program. So let's\nbounce scopes in your program. So let's say<00:31:56.799> I've<00:31:57.039> got<00:31:57.120> this<00:31:57.279> procedure<00:31:57.679> update.\nsay I've got this procedure update.\nsay I've got this procedure update. We've<00:31:58.720> got<00:31:59.039> uh<00:31:59.120> some<00:31:59.360> local<00:31:59.679> variable<00:32:00.159> entity\nWe've got uh some local variable entity\nWe've got uh some local variable entity pointer<00:32:01.360> entities.<00:32:02.399> Um<00:32:03.600> and<00:32:03.840> we've<00:32:04.159> got<00:32:04.240> two\npointer entities. Um and we've got two\npointer entities. Um and we've got two loops.<00:32:05.039> We've<00:32:05.279> got<00:32:05.440> some<00:32:06.000> idx<00:32:06.399> variable.\nloops. We've got some idx variable.\nloops. We've got some idx variable. That's<00:32:07.039> how<00:32:07.120> I<00:32:07.200> shorten<00:32:07.600> index.<00:32:08.480> I<00:32:08.640> don't<00:32:08.799> know\nThat's how I shorten index. I don't know\nThat's how I shorten index. I don't know how<00:32:09.039> many<00:32:09.200> people<00:32:09.440> do<00:32:09.600> that,<00:32:09.760> but<00:32:10.640> uh<00:32:10.799> so<00:32:11.039> index\nhow many people do that, but uh so index\nhow many people do that, but uh so index and<00:32:11.840> then<00:32:12.159> you<00:32:12.320> know<00:32:12.399> we've<00:32:12.640> got<00:32:12.960> maybe<00:32:13.200> we're\nand then you know we've got maybe we're\nand then you know we've got maybe we're looping<00:32:13.679> over<00:32:13.840> the<00:32:14.000> entities<00:32:14.399> or<00:32:14.559> or\nlooping over the entities or or\nlooping over the entities or or whatever.<00:32:15.840> So<00:32:16.000> if<00:32:16.159> we<00:32:16.320> have<00:32:16.399> this<00:32:16.799> then<00:32:17.200> in\nwhatever. So if we have this then in\nwhatever. So if we have this then in debug<00:32:17.760> info<00:32:18.240> you've<00:32:18.399> got<00:32:18.480> a<00:32:18.640> procedure<00:32:19.120> record\ndebug info you've got a procedure record\ndebug info you've got a procedure record for<00:32:20.080> for<00:32:20.320> the<00:32:20.480> update<00:32:21.519> procedure.<00:32:22.880> It<00:32:23.120> points\nfor for the update procedure. It points\nfor for the update procedure. It points at<00:32:23.519> a<00:32:23.760> at<00:32:23.919> a<00:32:24.080> scope<00:32:24.399> tree<00:32:25.440> um<00:32:25.760> underneath<00:32:26.320> which\nat a at a scope tree um underneath which\nat a at a scope tree um underneath which uh<00:32:27.200> you<00:32:27.440> also<00:32:27.600> have<00:32:27.760> local<00:32:28.000> variables.<00:32:28.320> So\nuh you also have local variables. So\nuh you also have local variables. So you've<00:32:28.640> got<00:32:28.720> at<00:32:28.880> the<00:32:28.960> root<00:32:29.200> scope<00:32:29.360> you've<00:32:29.519> got\nyou've got at the root scope you've got\nyou've got at the root scope you've got the<00:32:29.760> entities<00:32:30.159> variable<00:32:30.880> at<00:32:31.039> the<00:32:31.279> two\nthe entities variable at the two\nthe entities variable at the two subscopes<00:32:32.559> you've<00:32:32.799> got<00:32:33.039> two<00:32:33.279> different<00:32:33.600> index\nsubscopes you've got two different index\nsubscopes you've got two different index variables\nvariables\nvariables and<00:32:36.080> each<00:32:36.320> one<00:32:36.480> of<00:32:36.559> the<00:32:36.720> variables<00:32:37.600> contain<00:32:38.159> uh\nand each one of the variables contain uh\nand each one of the variables contain uh points<00:32:38.480> at<00:32:38.640> their<00:32:38.880> type<00:32:39.039> info.<00:32:40.159> So<00:32:41.039> you've<00:32:41.360> got\npoints at their type info. So you've got\npoints at their type info. So you've got index<00:32:43.679> maybe<00:32:44.000> points<00:32:44.240> to<00:32:44.320> in<00:32:44.640> 64\nindex maybe points to in 64\nindex maybe points to in 64 entities<00:32:47.440> points<00:32:47.760> to<00:32:48.000> a<00:32:48.159> pointer<00:32:48.480> which\nentities points to a pointer which\nentities points to a pointer which points<00:32:48.880> to<00:32:48.960> an<00:32:49.200> entity<00:32:49.519> type.<00:32:50.559> That's<00:32:50.799> how<00:32:50.960> the\npoints to an entity type. That's how the\npoints to an entity type. That's how the type<00:32:51.360> might<00:32:51.600> show<00:32:51.760> up.\nA<00:32:56.480> variable<00:32:56.799> like<00:32:57.200> index<00:32:58.000> not<00:32:58.240> only<00:32:58.559> refers<00:32:58.799> to\nA variable like index not only refers to\nA variable like index not only refers to an<00:32:59.120> in64<00:33:00.080> might<00:33:00.320> also<00:33:00.640> refer<00:33:01.039> to\nan in64 might also refer to\nan in64 might also refer to its<00:33:03.519> location<00:33:04.000> information.<00:33:05.039> And<00:33:05.200> this\nits location information. And this\nits location information. And this location<00:33:05.840> info<00:33:06.240> is<00:33:06.399> how<00:33:06.559> our<00:33:06.720> debugger's\nlocation info is how our debugger's\nlocation info is how our debugger's expression<00:33:07.600> compiler<00:33:08.399> can<00:33:08.640> actually\nexpression compiler can actually\nexpression compiler can actually understand<00:33:09.200> where<00:33:09.440> certain<00:33:09.679> variables<00:33:10.159> live.\nunderstand where certain variables live.\nunderstand where certain variables live. So<00:33:10.720> if<00:33:10.880> our<00:33:11.039> variable<00:33:11.440> index<00:33:12.000> within<00:33:12.399> some\nSo if our variable index within some\nSo if our variable index within some scope<00:33:12.880> is<00:33:13.120> at<00:33:13.279> like<00:33:13.440> the<00:33:13.600> value<00:33:13.679> of<00:33:13.840> the<00:33:14.000> stack\nscope is at like the value of the stack\nscope is at like the value of the stack pointer<00:33:15.120> minus<00:33:15.519> 64<00:33:15.919> bytes<00:33:16.960> um<00:33:17.200> then<00:33:17.440> the\npointer minus 64 bytes um then the\npointer minus 64 bytes um then the location<00:33:18.000> info<00:33:18.320> is<00:33:18.559> what's<00:33:18.799> going<00:33:18.880> to<00:33:19.039> tell<00:33:19.279> us\nlocation info is what's going to tell us\nlocation info is what's going to tell us that<00:33:19.679> it's<00:33:19.840> going<00:33:19.919> to<00:33:20.000> encode<00:33:20.320> that<00:33:20.559> somehow.\nthat it's going to encode that somehow.\nthat it's going to encode that somehow. It<00:33:22.720> might<00:33:22.880> also<00:33:23.120> tell<00:33:23.279> us<00:33:23.440> that<00:33:24.080> um<00:33:24.240> a<00:33:24.399> reg<00:33:24.799> a\nIt might also tell us that um a reg a\nIt might also tell us that um a reg a variable<00:33:25.279> lives<00:33:25.519> inside<00:33:25.760> of<00:33:25.840> a<00:33:26.000> register<00:33:26.880> or\nvariable lives inside of a register or\nvariable lives inside of a register or the<00:33:28.159> value<00:33:29.120> of<00:33:29.279> a<00:33:29.519> variable<00:33:30.000> is<00:33:30.399> like<00:33:31.519> uh<00:33:31.760> you\nthe value of a variable is like uh you\nthe value of a variable is like uh you know<00:33:32.159> it<00:33:32.399> could<00:33:32.480> be<00:33:32.559> arbitrarily<00:33:33.120> complicated\nknow it could be arbitrarily complicated\nknow it could be arbitrarily complicated really<00:33:33.919> that<00:33:34.159> it<00:33:34.240> can<00:33:34.320> be<00:33:34.480> computed<00:33:34.880> somehow.\nreally that it can be computed somehow.\nreally that it can be computed somehow. Um<00:33:36.640> but<00:33:36.880> those<00:33:37.120> cases<00:33:37.440> tend<00:33:37.600> to<00:33:37.679> show<00:33:37.760> up<00:33:37.919> in\nUm but those cases tend to show up in\nUm but those cases tend to show up in optimized<00:33:38.480> builds,<00:33:38.720> right?<00:33:38.960> You're<00:33:39.120> not\noptimized builds, right? You're not\noptimized builds, right? You're not always<00:33:39.519> going<00:33:39.600> to<00:33:39.760> have<00:33:40.320> complicated<00:33:40.799> cases\nalways going to have complicated cases\nalways going to have complicated cases like<00:33:41.360> that.<00:33:42.480> Um<00:33:43.120> global<00:33:43.440> variables<00:33:43.760> and\nlike that. Um global variables and\nlike that. Um global variables and thread<00:33:44.159> locals<00:33:44.559> tend<00:33:44.799> to<00:33:44.960> have<00:33:45.760> much<00:33:46.080> simpler\nthread locals tend to have much simpler\nthread locals tend to have much simpler uh<00:33:47.039> location<00:33:47.360> info.<00:33:47.919> they<00:33:48.159> tend<00:33:48.320> to<00:33:48.480> be<00:33:48.559> like\nuh location info. they tend to be like\nuh location info. they tend to be like fixed<00:33:49.200> offset<00:33:49.679> like<00:33:49.919> address<00:33:50.240> offsets<00:33:51.120> into\nfixed offset like address offsets into\nfixed offset like address offsets into in<00:33:52.080> the<00:33:52.320> case<00:33:52.399> of<00:33:52.559> globals<00:33:53.039> like<00:33:53.120> a<00:33:53.519> like<00:33:53.760> a\nin the case of globals like a like a\nin the case of globals like a like a module<00:33:54.320> or<00:33:54.559> something.\nmodule or something.\nmodule or something. So<00:33:57.360> with<00:33:57.600> all<00:33:57.679> of<00:33:57.840> those<00:33:58.000> pieces<00:33:58.320> we<00:33:58.480> can<00:33:58.559> sort\nSo with all of those pieces we can sort\nSo with all of those pieces we can sort of<00:33:58.799> put<00:33:59.039> together<00:33:59.679> a<00:33:59.919> compiler<00:34:00.399> in<00:34:00.640> the\nof put together a compiler in the\nof put together a compiler in the debugger<00:34:01.760> which<00:34:02.080> evaluates<00:34:02.640> expressions.\ndebugger which evaluates expressions.\ndebugger which evaluates expressions. So\nSo\nSo now<00:34:06.480> that<00:34:06.640> we<00:34:06.720> know<00:34:06.880> how<00:34:06.960> to<00:34:07.120> compute<00:34:07.519> the\nnow that we know how to compute the\nnow that we know how to compute the value<00:34:08.399> of<00:34:08.639> an<00:34:08.879> expression,<00:34:09.280> I'll<00:34:09.520> unpack<00:34:09.839> how\nvalue of an expression, I'll unpack how\nvalue of an expression, I'll unpack how we<00:34:10.240> can<00:34:10.399> begin<00:34:10.960> to<00:34:11.440> uh<00:34:11.599> to<00:34:11.839> visualize<00:34:12.320> it.\nwe can begin to uh to visualize it.\nwe can begin to uh to visualize it. So<00:34:14.320> the<00:34:14.639> most<00:34:14.800> basic<00:34:15.119> form<00:34:15.359> of<00:34:15.520> visualization\nSo the most basic form of visualization\nSo the most basic form of visualization that<00:34:16.720> we<00:34:16.879> can<00:34:17.040> do<00:34:17.119> for<00:34:17.280> an<00:34:17.440> evaluation<00:34:18.320> is<00:34:18.720> turn\nthat we can do for an evaluation is turn\nthat we can do for an evaluation is turn its<00:34:19.280> value<00:34:19.520> into<00:34:19.760> a<00:34:19.919> string,<00:34:20.240> right?<00:34:20.480> Just\nits value into a string, right? Just\nits value into a string, right? Just turn<00:34:20.720> it<00:34:20.879> into<00:34:21.119> text.\nturn it into text.\nturn it into text. So<00:34:24.320> you<00:34:24.480> know,<00:34:24.639> for<00:34:24.720> example,<00:34:25.520> you've<00:34:25.839> got<00:34:26.879> uh\nSo you know, for example, you've got uh\nSo you know, for example, you've got uh some<00:34:27.280> entity<00:34:28.000> expression,<00:34:28.800> you<00:34:29.040> want<00:34:29.119> to<00:34:29.200> turn\nsome entity expression, you want to turn\nsome entity expression, you want to turn it<00:34:29.440> into<00:34:29.679> a<00:34:29.760> string<00:34:30.000> like<00:34:30.159> this.<00:34:30.399> You've<00:34:30.639> got,\nit into a string like this. You've got,\nit into a string like this. You've got, you<00:34:30.960> know,<00:34:31.359> left<00:34:31.599> curly<00:34:32.079> brace<00:34:32.399> and<00:34:32.560> then<00:34:32.639> you\nyou know, left curly brace and then you\nyou know, left curly brace and then you put<00:34:32.960> print<00:34:33.200> out<00:34:33.359> all<00:34:33.520> the<00:34:33.679> members<00:34:34.320> uh\nput print out all the members uh\nput print out all the members uh recursively<00:34:35.599> and<00:34:35.839> so<00:34:36.000> on.\nrecursively and so on.\nrecursively and so on. So<00:34:39.200> what<00:34:39.440> this<00:34:39.599> code<00:34:39.919> path<00:34:40.240> does<00:34:40.560> is<00:34:41.040> sort<00:34:41.280> of\nSo what this code path does is sort of\nSo what this code path does is sort of inherently<00:34:42.000> dependent<00:34:42.399> on<00:34:42.879> what<00:34:43.280> on<00:34:43.679> the<00:34:43.919> type\ninherently dependent on what on the type\ninherently dependent on what on the type information<00:34:45.040> of<00:34:45.280> some<00:34:45.520> evaluation.<00:34:46.159> So<00:34:46.320> you\ninformation of some evaluation. So you\ninformation of some evaluation. So you could<00:34:46.639> first<00:34:46.800> note<00:34:47.040> that<00:34:47.200> we've<00:34:47.440> got<00:34:47.520> a<00:34:47.760> set<00:34:47.919> of\ncould first note that we've got a set of\ncould first note that we've got a set of like<00:34:48.879> known<00:34:49.280> simple<00:34:49.679> cases,<00:34:50.079> right?<00:34:50.399> We<00:34:50.639> know\nlike known simple cases, right? We know\nlike known simple cases, right? We know how<00:34:50.960> to<00:34:51.040> print<00:34:51.200> an<00:34:51.359> integer.<00:34:51.760> We<00:34:51.839> know<00:34:51.919> how<00:34:52.079> to\nhow to print an integer. We know how to\nhow to print an integer. We know how to print<00:34:52.320> a<00:34:52.480> floating<00:34:52.800> point.<00:34:53.599> We<00:34:53.839> know<00:34:54.000> how<00:34:54.159> to\nprint a floating point. We know how to\nprint a floating point. We know how to print<00:34:55.359> uh<00:34:55.839> well,<00:34:56.159> okay,<00:34:56.560> strings<00:34:56.879> are\nprint uh well, okay, strings are\nprint uh well, okay, strings are complicated.<00:34:57.920> Um<00:34:58.800> but<00:34:59.040> we<00:34:59.200> know<00:34:59.280> how<00:34:59.440> to<00:34:59.520> print\ncomplicated. Um but we know how to print\ncomplicated. Um but we know how to print those<00:35:00.079> those<00:35:00.400> two,<00:35:00.640> right?<00:35:00.800> It's<00:35:00.960> like<00:35:01.040> an\nthose those two, right? It's like an\nthose those two, right? It's like an integer.<00:35:01.680> We<00:35:01.839> know<00:35:01.920> how<00:35:02.079> to<00:35:02.160> do<00:35:02.320> that.<00:35:02.640> you\ninteger. We know how to do that. you\ninteger. We know how to do that. you know,<00:35:02.960> maybe<00:35:03.119> we<00:35:03.280> can<00:35:03.359> change<00:35:03.520> the<00:35:03.680> radics.\nknow, maybe we can change the radics.\nknow, maybe we can change the radics. Um,\nUm,\nUm, with<00:35:06.640> floating<00:35:07.040> point\nwith floating point\nwith floating point also,<00:35:08.880> you<00:35:09.040> can<00:35:09.119> change<00:35:09.359> the<00:35:09.520> radex.<00:35:10.320> Uh,<00:35:10.560> but\nalso, you can change the radex. Uh, but\nalso, you can change the radex. Uh, but you<00:35:10.960> know,<00:35:11.040> we<00:35:11.200> know<00:35:11.280> how<00:35:11.440> to<00:35:11.520> print<00:35:11.680> these<00:35:11.920> two\nyou know, we know how to print these two\nyou know, we know how to print these two things.<00:35:13.040> With<00:35:13.599> uh<00:35:14.560> strings,<00:35:14.960> it's<00:35:15.280> relatively\nthings. With uh strings, it's relatively\nthings. With uh strings, it's relatively basic,<00:35:16.400> but<00:35:16.640> it's<00:35:16.960> it's<00:35:17.359> not<00:35:17.520> as<00:35:17.680> it's<00:35:18.000> not<00:35:18.079> as\nbasic, but it's it's not as it's not as\nbasic, but it's it's not as it's not as trivial<00:35:18.560> as<00:35:18.640> those<00:35:18.880> first<00:35:19.040> two<00:35:19.200> cases<00:35:19.520> because\ntrivial as those first two cases because\ntrivial as those first two cases because strings<00:35:21.040> um<00:35:21.680> they're<00:35:21.920> not<00:35:22.160> normally<00:35:22.480> encoded\nstrings um they're not normally encoded\nstrings um they're not normally encoded as<00:35:23.760> uh<00:35:24.160> or<00:35:24.400> they're<00:35:24.640> normally<00:35:24.880> encoded<00:35:25.200> as<00:35:25.440> a\nas uh or they're normally encoded as a\nas uh or they're normally encoded as a like<00:35:25.760> a<00:35:26.000> pointer<00:35:26.560> or<00:35:26.800> an<00:35:27.040> array<00:35:27.280> of<00:35:27.440> characters\nlike a pointer or an array of characters\nlike a pointer or an array of characters in<00:35:28.079> in<00:35:28.320> the<00:35:28.400> case<00:35:28.560> of<00:35:28.640> like<00:35:28.800> C<00:35:29.040> types.\nin in the case of like C types.\nin in the case of like C types. Obviously<00:35:29.680> there's<00:35:29.839> formal<00:35:30.240> types<00:35:30.480> in<00:35:30.640> the\nObviously there's formal types in the\nObviously there's formal types in the languages<00:35:31.280> but<00:35:31.520> in<00:35:31.680> terms<00:35:31.839> of<00:35:31.920> debug<00:35:32.320> info\nlanguages but in terms of debug info\nlanguages but in terms of debug info there's<00:35:33.280> no<00:35:33.520> string<00:35:34.000> like<00:35:34.160> there's<00:35:34.320> no<00:35:34.480> formal\nthere's no string like there's no formal\nthere's no string like there's no formal string<00:35:35.040> type<00:35:35.200> in<00:35:35.359> the<00:35:35.440> debug<00:35:35.839> info<00:35:36.160> obviously\nstring type in the debug info obviously\nstring type in the debug info obviously because<00:35:36.800> debug<00:35:37.119> info<00:35:37.440> evolves<00:35:37.839> around<00:35:38.320> sort\nbecause debug info evolves around sort\nbecause debug info evolves around sort of<00:35:38.560> the<00:35:38.720> C<00:35:38.960> tool<00:35:39.200> chain<00:35:39.839> there's<00:35:40.160> the<00:35:40.400> standard\nof the C tool chain there's the standard\nof the C tool chain there's the standard of<00:35:41.280> string<00:35:41.520> types<00:35:41.760> in<00:35:42.000> other<00:35:42.160> languages<00:35:43.119> not\nof string types in other languages not\nof string types in other languages not buried<00:35:43.920> that<00:35:44.079> deep<00:35:44.240> in<00:35:44.400> the<00:35:44.560> ecosystem.\nburied that deep in the ecosystem.\nburied that deep in the ecosystem. Um,<00:35:47.440> so<00:35:47.599> if<00:35:47.760> it's<00:35:47.920> a<00:35:48.000> pointer<00:35:48.320> to<00:35:48.480> a<00:35:48.640> character\nUm, so if it's a pointer to a character\nUm, so if it's a pointer to a character type,<00:35:49.359> it's<00:35:49.599> a<00:35:49.760> pretty<00:35:50.000> safe<00:35:50.240> bet<00:35:50.480> that<00:35:50.720> it's<00:35:50.880> a\ntype, it's a pretty safe bet that it's a\ntype, it's a pretty safe bet that it's a string.<00:35:51.599> But<00:35:51.760> if<00:35:51.839> it's<00:35:52.000> a<00:35:52.079> pointer<00:35:52.400> to<00:35:52.480> a<00:35:52.640> U8,\nstring. But if it's a pointer to a U8,\nstring. But if it's a pointer to a U8, it's<00:35:53.839> like<00:35:54.800> maybe<00:35:55.119> a<00:35:55.280> string.<00:35:55.680> Like<00:35:55.920> who<00:35:56.160> knows\nit's like maybe a string. Like who knows\nit's like maybe a string. Like who knows for<00:35:56.640> sure,<00:35:56.960> probably,<00:35:57.920> maybe<00:35:58.320> not,<00:35:58.800> you<00:35:58.960> know,\nfor sure, probably, maybe not, you know,\nfor sure, probably, maybe not, you know, not<00:35:59.520> really<00:35:59.760> clear.<00:36:00.240> But<00:36:00.320> you<00:36:00.560> can<00:36:00.640> try<00:36:00.800> it<00:36:00.960> and\nnot really clear. But you can try it and\nnot really clear. But you can try it and then<00:36:01.280> if<00:36:01.440> it<00:36:01.599> doesn't<00:36:02.079> produce<00:36:02.400> any,<00:36:02.800> you\nthen if it doesn't produce any, you\nthen if it doesn't produce any, you know,<00:36:03.119> seemingly<00:36:03.520> readable<00:36:03.920> text,<00:36:04.880> you<00:36:05.040> know,\nknow, seemingly readable text, you know,\nknow, seemingly readable text, you know, maybe<00:36:05.680> don't<00:36:05.839> use<00:36:06.079> it.<00:36:07.040> Um,<00:36:07.760> the<00:36:08.000> other<00:36:08.160> caveat\nmaybe don't use it. Um, the other caveat\nmaybe don't use it. Um, the other caveat is<00:36:08.640> that<00:36:08.800> you<00:36:08.960> don't<00:36:09.119> actually<00:36:09.280> know<00:36:09.440> how<00:36:09.680> many\nis that you don't actually know how many\nis that you don't actually know how many characters<00:36:10.720> you're<00:36:10.960> working<00:36:11.119> with,<00:36:11.440> right?\ncharacters you're working with, right?\ncharacters you're working with, right? you<00:36:11.760> don't<00:36:12.079> because<00:36:12.320> it's<00:36:12.560> just<00:36:12.720> pointers<00:36:13.280> in\nyou don't because it's just pointers in\nyou don't because it's just pointers in the<00:36:13.599> type<00:36:13.839> info.<00:36:14.560> You<00:36:14.800> don't<00:36:14.960> know<00:36:15.200> that<00:36:15.440> like\nthe type info. You don't know that like\nthe type info. You don't know that like that's,<00:36:16.160> you<00:36:16.240> know,<00:36:16.400> that's<00:36:16.560> what<00:36:16.720> everyone\nthat's, you know, that's what everyone\nthat's, you know, that's what everyone talks<00:36:17.119> about<00:36:17.200> with<00:36:17.359> pointers.<00:36:17.760> You<00:36:17.920> don't\ntalks about with pointers. You don't\ntalks about with pointers. You don't know<00:36:19.119> how<00:36:19.359> many<00:36:19.520> things<00:36:19.760> they're<00:36:20.000> pointing\nknow how many things they're pointing\nknow how many things they're pointing to,<00:36:20.960> you<00:36:21.119> know.<00:36:21.280> So,<00:36:22.000> um,<00:36:22.400> you<00:36:22.560> know,\nto, you know. So, um, you know,\nto, you know. So, um, you know, you<00:36:24.400> kind<00:36:24.560> of<00:36:24.640> have<00:36:24.800> to<00:36:24.880> guess.<00:36:25.119> You<00:36:25.280> could\nyou kind of have to guess. You could\nyou kind of have to guess. You could say,<00:36:25.599> I've<00:36:25.839> got<00:36:25.920> some<00:36:26.160> fixed<00:36:26.400> upper<00:36:26.720> limit.\nsay, I've got some fixed upper limit.\nsay, I've got some fixed upper limit. I'll<00:36:27.280> look<00:36:27.359> for<00:36:27.520> a<00:36:27.680> null<00:36:27.920> terminator.<00:36:28.800> Um,<00:36:29.280> you\nI'll look for a null terminator. Um, you\nI'll look for a null terminator. Um, you know,<00:36:29.520> the<00:36:29.760> UI<00:36:30.000> can<00:36:30.160> only<00:36:30.320> render<00:36:30.640> so<00:36:30.800> much\nknow, the UI can only render so much\nknow, the UI can only render so much text<00:36:31.280> anyways.<00:36:31.920> So,<00:36:32.079> you<00:36:32.240> can<00:36:32.560> have<00:36:32.720> a<00:36:32.880> pretty\ntext anyways. So, you can have a pretty\ntext anyways. So, you can have a pretty small<00:36:33.280> limit,<00:36:33.920> but,<00:36:34.240> you<00:36:34.400> know,<00:36:35.119> not<00:36:35.359> too\nsmall limit, but, you know, not too\nsmall limit, but, you know, not too difficult.<00:36:36.880> With<00:36:37.119> enum<00:36:37.520> values,<00:36:38.640> you<00:36:38.800> can\ndifficult. With enum values, you can\ndifficult. With enum values, you can just<00:36:39.040> look<00:36:39.200> at<00:36:39.280> the<00:36:39.359> enum<00:36:39.760> type<00:36:39.920> info<00:36:40.160> since\njust look at the enum type info since\njust look at the enum type info since that's<00:36:40.560> in<00:36:40.880> in<00:36:41.119> the<00:36:41.280> debug<00:36:41.680> info.<00:36:42.320> You<00:36:42.480> can\nthat's in in the debug info. You can\nthat's in in the debug info. You can like<00:36:43.119> try<00:36:43.359> to<00:36:43.520> find<00:36:43.839> some<00:36:44.079> member<00:36:44.400> inside<00:36:44.640> of\nlike try to find some member inside of\nlike try to find some member inside of the<00:36:44.880> enum<00:36:45.280> type<00:36:45.440> info.<00:36:45.839> See<00:36:46.000> if<00:36:46.320> an<00:36:46.560> integer\nthe enum type info. See if an integer\nthe enum type info. See if an integer evaluation<00:36:47.839> or<00:36:48.079> an<00:36:48.640> uh<00:36:48.880> you<00:36:49.040> know,<00:36:49.200> you'd<00:36:49.520> have\nevaluation or an uh you know, you'd have\nevaluation or an uh you know, you'd have it<00:36:49.839> as<00:36:50.000> an<00:36:50.079> enum<00:36:50.560> evaluation.<00:36:51.520> Uh<00:36:51.760> you<00:36:52.000> could\nit as an enum evaluation. Uh you could\nit as an enum evaluation. Uh you could say<00:36:52.320> like<00:36:52.480> I've<00:36:52.720> got<00:36:52.880> this<00:36:53.040> integer<00:36:53.440> value.\nsay like I've got this integer value.\nsay like I've got this integer value. Let's<00:36:54.000> try<00:36:54.079> to<00:36:54.240> look<00:36:54.320> up<00:36:54.480> at<00:36:54.640> the<00:36:54.800> enum<00:36:55.200> type\nLet's try to look up at the enum type\nLet's try to look up at the enum type information.<00:36:56.000> Find<00:36:56.240> out<00:36:57.200> if<00:36:57.440> there's<00:36:57.599> a\ninformation. Find out if there's a\ninformation. Find out if there's a member<00:36:57.920> inside<00:36:58.160> of<00:36:58.240> the<00:36:58.400> enum<00:36:59.040> that<00:37:00.160> um<00:37:01.359> that\nmember inside of the enum that um that\nmember inside of the enum that um that there's<00:37:02.560> a<00:37:02.720> member<00:37:02.880> that<00:37:03.119> has<00:37:03.280> a<00:37:03.440> value<00:37:03.599> that\nthere's a member that has a value that\nthere's a member that has a value that matches<00:37:04.160> whatever<00:37:04.480> value<00:37:04.720> I<00:37:04.880> evaluated.<00:37:05.599> then\nmatches whatever value I evaluated. then\nmatches whatever value I evaluated. then I<00:37:05.920> use<00:37:06.079> the<00:37:06.240> name<00:37:07.040> if<00:37:07.280> if<00:37:07.520> not<00:37:07.680> then<00:37:07.839> maybe<00:37:08.000> I\nI use the name if if not then maybe I\nI use the name if if not then maybe I just<00:37:08.320> fall<00:37:08.480> back<00:37:08.560> to<00:37:08.640> the<00:37:08.800> integer<00:37:09.119> case<00:37:09.599> or\njust fall back to the integer case or\njust fall back to the integer case or whatever.\nwhatever.\nwhatever. The<00:37:12.400> only<00:37:12.560> missing<00:37:12.880> piece<00:37:13.040> here<00:37:13.680> are<00:37:14.000> compound\nThe only missing piece here are compound\nThe only missing piece here are compound types<00:37:14.800> like<00:37:14.960> strrus,<00:37:15.440> unions<00:37:15.760> and<00:37:15.920> arrays.\ntypes like strrus, unions and arrays.\ntypes like strrus, unions and arrays. Uh<00:37:17.839> so<00:37:18.000> with<00:37:18.160> a<00:37:18.320> strruct\nUh so with a strruct\nUh so with a strruct might<00:37:20.320> want<00:37:20.480> something<00:37:20.720> like<00:37:20.800> that<00:37:21.040> like<00:37:21.200> I\nmight want something like that like I\nmight want something like that like I mentioned<00:37:21.599> earlier<00:37:22.000> braces<00:37:22.720> iterate<00:37:23.119> the\nmentioned earlier braces iterate the\nmentioned earlier braces iterate the members.\nmembers.\nmembers. So<00:37:27.040> this<00:37:27.280> can<00:37:27.440> be<00:37:27.599> done<00:37:27.760> by<00:37:28.000> just<00:37:28.400> you<00:37:28.640> walk\nSo this can be done by just you walk\nSo this can be done by just you walk basically<00:37:29.359> the<00:37:29.520> strct<00:37:29.839> members<00:37:30.079> recursively.\nbasically the strct members recursively.\nbasically the strct members recursively. So<00:37:31.760> you<00:37:31.920> walk<00:37:32.079> to<00:37:32.240> each<00:37:32.880> uh<00:37:33.200> child<00:37:33.839> and<00:37:34.000> then\nSo you walk to each uh child and then\nSo you walk to each uh child and then when<00:37:34.320> you<00:37:34.480> come<00:37:34.640> across<00:37:34.960> another<00:37:35.520> compound\nwhen you come across another compound\nwhen you come across another compound strct,<00:37:36.160> you've<00:37:36.320> got<00:37:36.400> a<00:37:36.480> strct<00:37:36.720> inside<00:37:36.960> of<00:37:37.040> a\nstrct, you've got a strct inside of a\nstrct, you've got a strct inside of a strruct.<00:37:37.680> You've<00:37:37.839> got<00:37:37.920> to<00:37:38.079> say,<00:37:38.240> okay,<00:37:38.480> I'm\nstrruct. You've got to say, okay, I'm\nstrruct. You've got to say, okay, I'm going<00:37:38.720> to<00:37:38.800> recursively<00:37:39.280> descend<00:37:39.599> into<00:37:39.760> that.\ngoing to recursively descend into that.\ngoing to recursively descend into that. So<00:37:40.079> I<00:37:40.240> go,<00:37:40.720> you<00:37:40.960> know,<00:37:41.359> um<00:37:41.599> doesn't<00:37:41.839> have<00:37:41.920> to<00:37:42.000> be\nSo I go, you know, um doesn't have to be\nSo I go, you know, um doesn't have to be literally<00:37:42.480> recursive,<00:37:43.280> but<00:37:43.680> you<00:37:43.839> know,<00:37:44.480> uh\nliterally recursive, but you know, uh\nliterally recursive, but you know, uh the<00:37:44.800> the<00:37:45.119> sort<00:37:45.280> of<00:37:45.359> algorithm<00:37:45.760> is<00:37:45.920> sort<00:37:46.079> of\nthe the sort of algorithm is sort of\nthe the sort of algorithm is sort of recursive.<00:37:46.640> You<00:37:46.720> need<00:37:46.800> like<00:37:46.960> a<00:37:47.119> stack.<00:37:47.839> So<00:37:49.280> um\nrecursive. You need like a stack. So um\nrecursive. You need like a stack. So um so<00:37:50.480> yeah,<00:37:50.640> you<00:37:50.800> walk<00:37:51.040> the<00:37:51.200> children,<00:37:51.599> you<00:37:51.760> do\nso yeah, you walk the children, you do\nso yeah, you walk the children, you do that,<00:37:52.640> you<00:37:52.880> can<00:37:52.960> get<00:37:53.040> a<00:37:53.200> string<00:37:53.440> like<00:37:53.599> that.\nthat, you can get a string like that.\nthat, you can get a string like that. Um<00:37:57.119> with<00:37:57.359> arrays,<00:37:57.920> very<00:37:58.160> similar<00:37:58.480> problem.\nUm with arrays, very similar problem.\nUm with arrays, very similar problem. you've<00:37:59.359> got<00:37:59.520> some<00:37:59.760> you<00:37:59.920> know<00:38:00.000> you<00:38:00.160> have<00:38:00.240> some\nyou've got some you know you have some\nyou've got some you know you have some notion<00:38:00.640> of<00:38:00.800> how<00:38:00.960> many<00:38:01.119> elements<00:38:01.440> are<00:38:01.599> in<00:38:01.680> the\nnotion of how many elements are in the\nnotion of how many elements are in the array.<00:38:02.000> So<00:38:02.079> you<00:38:02.320> can<00:38:02.400> say<00:38:02.800> well<00:38:02.960> I<00:38:03.119> found<00:38:03.280> the\narray. So you can say well I found the\narray. So you can say well I found the base<00:38:03.760> address<00:38:04.000> of<00:38:04.079> the<00:38:04.240> array<00:38:04.480> but<00:38:04.640> to\nbase address of the array but to\nbase address of the array but to actually<00:38:05.040> visualize<00:38:05.440> this<00:38:05.599> as<00:38:05.760> a<00:38:05.920> string<00:38:06.160> I\nactually visualize this as a string I\nactually visualize this as a string I want<00:38:06.400> to<00:38:06.560> go<00:38:06.960> okay<00:38:07.280> go<00:38:07.440> to<00:38:07.599> the<00:38:07.760> first<00:38:08.000> element\nwant to go okay go to the first element\nwant to go okay go to the first element turn<00:38:08.960> it<00:38:09.119> into<00:38:09.280> a<00:38:09.520> string<00:38:10.160> second<00:38:10.480> element\nturn it into a string second element\nturn it into a string second element turn<00:38:11.040> it<00:38:11.200> into<00:38:11.359> a<00:38:11.520> string<00:38:12.079> commas<00:38:12.480> delimiting\nturn it into a string commas delimiting\nturn it into a string commas delimiting them<00:38:14.000> pretty<00:38:14.320> basic<00:38:14.640> problem\nthem pretty basic problem\nthem pretty basic problem um<00:38:18.880> this<00:38:19.040> is<00:38:19.200> also<00:38:19.440> recursive<00:38:20.800> uh<00:38:21.280> so\nso<00:38:27.200> what<00:38:27.440> I<00:38:27.599> want<00:38:27.680> to<00:38:27.760> note<00:38:28.079> here<00:38:28.400> is<00:38:28.640> that<00:38:28.880> both\nso what I want to note here is that both\nso what I want to note here is that both of<00:38:29.280> these<00:38:30.079> uh<00:38:30.320> exhibit<00:38:30.720> sort<00:38:30.960> of\nof these uh exhibit sort of\nof these uh exhibit sort of a<00:38:32.160> single<00:38:32.400> pattern<00:38:33.040> that<00:38:33.280> we<00:38:33.440> can<00:38:33.520> think<00:38:33.680> of\na single pattern that we can think of\na single pattern that we can think of which<00:38:34.000> is<00:38:34.160> that<00:38:34.400> if<00:38:34.560> we've<00:38:34.800> got<00:38:34.960> some\nwhich is that if we've got some\nwhich is that if we've got some evaluation<00:38:36.079> you've<00:38:36.400> computed<00:38:36.800> some\nevaluation you've computed some\nevaluation you've computed some evaluation<00:38:38.320> certain<00:38:38.640> types<00:38:39.119> can<00:38:39.280> produce<00:38:39.599> a\nevaluation certain types can produce a\nevaluation certain types can produce a set<00:38:40.160> of<00:38:40.400> child<00:38:40.720> evaluations<00:38:41.520> right<00:38:41.680> so<00:38:41.839> in<00:38:42.000> the\nset of child evaluations right so in the\nset of child evaluations right so in the case<00:38:42.160> of<00:38:42.320> the<00:38:42.480> strruct<00:38:43.599> you<00:38:43.760> produce<00:38:44.079> all<00:38:44.160> the\ncase of the strruct you produce all the\ncase of the strruct you produce all the members<00:38:45.119> and<00:38:45.359> if<00:38:45.520> in<00:38:45.760> the<00:38:45.839> case<00:38:45.920> of<00:38:46.079> arrays<00:38:46.640> you\nmembers and if in the case of arrays you\nmembers and if in the case of arrays you produce<00:38:47.119> all<00:38:47.359> of<00:38:47.440> the<00:38:47.920> array<00:38:48.240> elements\num\num\num another<00:38:53.920> common<00:38:54.240> case<00:38:54.560> just<00:38:54.880> before<00:38:55.119> I<00:38:55.280> move\nanother common case just before I move\nanother common case just before I move on<00:38:56.000> pointers<00:38:56.880> uh<00:38:57.599> don't<00:38:57.839> always<00:38:58.079> point<00:38:58.240> to\non pointers uh don't always point to\non pointers uh don't always point to strings<00:38:58.960> obviously<00:38:59.280> like<00:38:59.520> sometimes<00:38:59.760> they\nstrings obviously like sometimes they\nstrings obviously like sometimes they point<00:39:00.160> to<00:39:00.320> a<00:39:00.480> strruct\npoint to a strruct\npoint to a strruct Um<00:39:03.040> so<00:39:03.760> uh<00:39:04.240> in<00:39:04.480> those<00:39:04.720> cases<00:39:05.119> you<00:39:05.280> don't<00:39:05.440> just\nUm so uh in those cases you don't just\nUm so uh in those cases you don't just want<00:39:05.760> to<00:39:05.920> see<00:39:06.079> like<00:39:06.400> oh<00:39:06.640> my<00:39:06.880> pointer<00:39:07.280> value<00:39:07.599> is\nwant to see like oh my pointer value is\nwant to see like oh my pointer value is like<00:39:08.720> that<00:39:09.119> it's<00:39:09.280> like<00:39:09.440> you<00:39:09.680> want<00:39:09.760> to<00:39:09.839> see<00:39:09.920> what\nlike that it's like you want to see what\nlike that it's like you want to see what it's<00:39:10.320> pointing<00:39:10.560> to<00:39:10.880> often<00:39:11.599> um<00:39:11.680> other<00:39:11.920> than\nit's pointing to often um other than\nit's pointing to often um other than strruct<00:39:12.480> memory.<00:39:12.720> So<00:39:12.880> in<00:39:13.040> that<00:39:13.200> case<00:39:13.920> uh\nstrruct memory. So in that case uh\nstrruct memory. So in that case uh that's<00:39:14.240> also<00:39:14.480> another<00:39:14.800> case<00:39:15.040> of<00:39:15.280> expansion\nthat's also another case of expansion\nthat's also another case of expansion uh<00:39:17.440> you<00:39:17.599> just<00:39:17.760> dreference<00:39:18.320> the<00:39:18.480> pointer<00:39:18.880> you\nuh you just dreference the pointer you\nuh you just dreference the pointer you that's<00:39:19.359> your<00:39:19.680> child<00:39:20.000> evaluation<00:39:20.560> basically\nthat's your child evaluation basically\nthat's your child evaluation basically and<00:39:21.599> then<00:39:21.760> you<00:39:22.000> actually<00:39:22.240> do<00:39:22.320> the<00:39:22.480> recur\nand then you actually do the recur\nand then you actually do the recur recursive<00:39:23.359> path.<00:39:23.680> So<00:39:23.839> if<00:39:24.000> you're<00:39:24.079> pointing<00:39:24.320> at\nrecursive path. So if you're pointing at\nrecursive path. So if you're pointing at an<00:39:24.640> integer<00:39:24.960> you<00:39:25.119> print<00:39:25.200> the<00:39:25.359> integer.<00:39:25.599> If\nan integer you print the integer. If\nan integer you print the integer. If you're<00:39:25.760> pointing<00:39:26.000> out<00:39:26.079> the<00:39:26.160> array<00:39:26.400> you<00:39:26.480> print\nyou're pointing out the array you print\nyou're pointing out the array you print the<00:39:26.800> array.<00:39:27.119> so<00:39:27.280> on<00:39:27.440> and<00:39:27.599> so<00:39:27.680> forth.<00:39:27.920> It's<00:39:28.000> just\nthe array. so on and so forth. It's just\nthe array. so on and so forth. It's just one<00:39:28.320> layer<00:39:28.400> of<00:39:28.480> interaction<00:39:28.960> removed,<00:39:29.440> right?\none layer of interaction removed, right?\none layer of interaction removed, right? So<00:39:30.800> that<00:39:30.960> gives<00:39:31.119> us<00:39:31.280> all<00:39:31.359> the<00:39:31.520> building<00:39:31.760> blocks\nSo that gives us all the building blocks\nSo that gives us all the building blocks we<00:39:32.240> need<00:39:32.960> actually<00:39:33.440> to<00:39:33.680> build<00:39:33.839> a<00:39:34.000> very<00:39:34.160> simple\nwe need actually to build a very simple\nwe need actually to build a very simple watch<00:39:34.720> window.\nwatch window.\nwatch window. Uh<00:39:36.720> you<00:39:36.880> input<00:39:37.200> expressions<00:39:37.599> and<00:39:37.760> then<00:39:37.920> you\nUh you input expressions and then you\nUh you input expressions and then you just<00:39:38.480> stringify<00:39:39.040> them.<00:39:39.359> You<00:39:39.520> know,<00:39:39.599> they've\njust stringify them. You know, they've\njust stringify them. You know, they've got<00:39:40.000> type<00:39:40.240> info.<00:39:40.640> You<00:39:40.800> could<00:39:40.880> write<00:39:41.040> a<00:39:41.200> very\ngot type info. You could write a very\ngot type info. You could write a very simple<00:39:42.160> uh<00:39:42.400> stringification<00:39:43.440> path,<00:39:43.760> if<00:39:44.000> you\nsimple uh stringification path, if you\nsimple uh stringification path, if you will,<00:39:44.720> uh<00:39:44.880> for<00:39:45.119> the<00:39:45.359> type.<00:39:46.480> There<00:39:46.640> you<00:39:46.800> go.\nwill, uh for the type. There you go.\nwill, uh for the type. There you go. Um<00:39:49.599> that<00:39:49.839> gives<00:39:50.000> you<00:39:50.079> a<00:39:50.160> watch<00:39:50.400> window.<00:39:50.960> But<00:39:51.119> a\nUm that gives you a watch window. But a\nUm that gives you a watch window. But a very<00:39:51.520> useful<00:39:51.839> property<00:39:52.079> of<00:39:52.240> a<00:39:52.400> watch<00:39:52.640> window\nvery useful property of a watch window\nvery useful property of a watch window is<00:39:53.359> not<00:39:53.680> only<00:39:53.839> that<00:39:54.079> you<00:39:54.240> can<00:39:54.640> enter<00:39:54.880> an\nis not only that you can enter an\nis not only that you can enter an expression,<00:39:55.920> but<00:39:56.079> that<00:39:56.320> you<00:39:56.480> can<00:39:56.640> also<00:39:57.440> expand\nexpression, but that you can also expand\nexpression, but that you can also expand them.\nthem.\nthem. So<00:40:00.320> this<00:40:00.560> is<00:40:00.720> really<00:40:01.119> useful<00:40:01.520> because<00:40:01.920> you\nSo this is really useful because you\nSo this is really useful because you know<00:40:02.160> more<00:40:02.320> often<00:40:02.560> than<00:40:02.720> not<00:40:03.040> like<00:40:03.359> that\nknow more often than not like that\nknow more often than not like that single<00:40:04.000> line<00:40:04.240> visualization<00:40:04.800> path.<00:40:05.200> It's\nsingle line visualization path. It's\nsingle line visualization path. It's like<00:40:05.680> you've<00:40:06.000> got<00:40:06.640> 256<00:40:07.440> elements<00:40:07.680> in<00:40:07.839> an<00:40:08.000> array\nlike you've got 256 elements in an array\nlike you've got 256 elements in an array or<00:40:08.480> or<00:40:08.640> whatever<00:40:09.440> and<00:40:09.760> you<00:40:09.920> only<00:40:10.160> see<00:40:10.240> the\nor or whatever and you only see the\nor or whatever and you only see the first<00:40:10.640> eight.<00:40:11.040> You<00:40:11.200> don't<00:40:11.280> want<00:40:11.359> to<00:40:11.520> be<00:40:11.680> like\nfirst eight. You don't want to be like\nfirst eight. You don't want to be like okay<00:40:12.320> now<00:40:12.480> evaluate<00:40:13.040> array<00:40:13.359> plus<00:40:13.760> 8<00:40:14.079> and<00:40:14.240> then\nokay now evaluate array plus 8 and then\nokay now evaluate array plus 8 and then array<00:40:14.720> plus<00:40:15.040> 16<00:40:15.280> and<00:40:15.440> array<00:40:15.760> plus<00:40:16.000> 32.<00:40:16.400> It's\narray plus 16 and array plus 32. It's\narray plus 16 and array plus 32. It's like<00:40:16.640> a<00:40:16.800> whole<00:40:16.880> nightmare,<00:40:17.359> right?<00:40:18.480> Um,<00:40:19.920> same\nlike a whole nightmare, right? Um, same\nlike a whole nightmare, right? Um, same thing<00:40:20.320> with<00:40:20.480> strrus<00:40:21.280> especially<00:40:22.079> you<00:40:22.320> know\nthing with strrus especially you know\nthing with strrus especially you know you<00:40:23.119> don't<00:40:23.200> want<00:40:23.359> to<00:40:23.440> force<00:40:23.760> the<00:40:23.920> user<00:40:24.240> to<00:40:24.400> like\nyou don't want to force the user to like\nyou don't want to force the user to like think<00:40:24.720> of<00:40:24.960> like<00:40:25.440> oh<00:40:25.760> like<00:40:25.920> what<00:40:26.160> was<00:40:26.240> the<00:40:26.400> fifth\nthink of like oh like what was the fifth\nthink of like oh like what was the fifth element<00:40:26.960> of<00:40:27.200> entity<00:40:27.680> like<00:40:27.839> let<00:40:28.000> me<00:40:28.079> put<00:40:28.160> that\nelement of entity like let me put that\nelement of entity like let me put that in<00:40:28.480> as<00:40:28.640> a<00:40:28.800> second<00:40:28.960> expression<00:40:29.520> that<00:40:29.680> just\nin as a second expression that just\nin as a second expression that just sucks.<00:40:30.160> So<00:40:30.320> expansion<00:40:30.960> very<00:40:31.280> easy<00:40:31.680> design\nsucks. So expansion very easy design\nsucks. So expansion very easy design extension<00:40:32.720> we<00:40:32.960> could<00:40:33.040> do<00:40:33.119> to<00:40:33.280> the<00:40:33.359> watch\nextension we could do to the watch\nextension we could do to the watch window<00:40:33.839> to<00:40:33.920> just<00:40:34.079> speed<00:40:34.320> those<00:40:34.480> things<00:40:34.640> up<00:40:34.800> a\nwindow to just speed those things up a\nwindow to just speed those things up a little<00:40:35.040> bit<00:40:35.520> in<00:40:35.760> those<00:40:35.920> cases<00:40:36.240> if<00:40:36.400> the<00:40:36.560> user<00:40:36.720> is\nlittle bit in those cases if the user is\nlittle bit in those cases if the user is looking<00:40:37.119> for<00:40:37.359> entity.position<00:40:38.320> they<00:40:38.480> don't\nlooking for entity.position they don't\nlooking for entity.position they don't even<00:40:38.720> have<00:40:38.800> to<00:40:38.960> type<00:40:39.200> entity.position<00:40:40.160> is\neven have to type entity.position is\neven have to type entity.position is just<00:40:40.560> there.<00:40:40.960> So<00:40:41.119> that's<00:40:41.280> even<00:40:41.520> faster,\njust there. So that's even faster,\njust there. So that's even faster, right,<00:40:42.160> than<00:40:42.320> having<00:40:42.560> to<00:40:42.720> do<00:40:42.880> like<00:40:44.000> the<00:40:44.320> print\nright, than having to do like the print\nright, than having to do like the print uh<00:40:45.040> sort<00:40:45.200> of<00:40:45.280> the<00:40:45.520> print<00:40:45.920> writing<00:40:46.320> even\nuh sort of the print writing even\nuh sort of the print writing even writing<00:40:46.880> the<00:40:47.119> expression<00:40:47.440> that<00:40:47.599> you<00:40:47.760> want<00:40:47.839> to\nwriting the expression that you want to\nwriting the expression that you want to print.<00:40:48.320> We<00:40:48.480> don't<00:40:48.640> even<00:40:48.800> have<00:40:48.960> to<00:40:49.119> do<00:40:49.200> that.\nprint. We don't even have to do that.\nprint. We don't even have to do that. Lucky<00:40:52.160> for<00:40:52.320> us,<00:40:52.960> we<00:40:53.200> already<00:40:53.359> know<00:40:53.520> how<00:40:53.680> to\nLucky for us, we already know how to\nLucky for us, we already know how to expand<00:40:54.079> an<00:40:54.320> evaluation.<00:40:55.680> That's<00:40:55.920> why<00:40:56.000> I<00:40:56.160> made\nexpand an evaluation. That's why I made\nexpand an evaluation. That's why I made that<00:40:56.480> note.<00:40:57.359> It's<00:40:57.680> you<00:40:57.920> take<00:40:58.000> an<00:40:58.160> evaluation\nthat note. It's you take an evaluation\nthat note. It's you take an evaluation and<00:40:58.800> you<00:40:58.960> produce<00:40:59.119> a<00:40:59.280> list<00:40:59.440> of<00:40:59.520> evaluations.\nand you produce a list of evaluations.\nand you produce a list of evaluations. You<00:41:00.319> need<00:41:00.480> it<00:41:00.800> for<00:41:01.680> the<00:41:02.240> uh<00:41:02.640> for<00:41:02.960> the<00:41:03.200> recursive\nYou need it for the uh for the recursive\nYou need it for the uh for the recursive children<00:41:04.319> walking<00:41:04.720> case<00:41:05.040> when<00:41:05.280> you<00:41:05.599> take\nchildren walking case when you take\nchildren walking case when you take structures<00:41:06.640> or<00:41:06.880> arrays<00:41:07.200> and<00:41:07.359> turn<00:41:07.520> them<00:41:07.760> into\nstructures or arrays and turn them into\nstructures or arrays and turn them into a<00:41:08.319> string,<00:41:08.720> right?\num<00:41:12.240> you<00:41:12.480> can<00:41:12.640> use<00:41:12.800> that<00:41:13.040> same<00:41:13.200> path<00:41:13.520> to<00:41:13.760> produce\num you can use that same path to produce\num you can use that same path to produce a<00:41:14.160> tree<00:41:14.319> of<00:41:14.400> evaluations.<00:41:15.440> So<00:41:16.000> you<00:41:16.160> know<00:41:16.240> if<00:41:16.400> I\na tree of evaluations. So you know if I\na tree of evaluations. So you know if I evaluate<00:41:16.880> the<00:41:17.040> root<00:41:17.280> level<00:41:17.520> entity<00:41:18.160> that\nevaluate the root level entity that\nevaluate the root level entity that produces<00:41:18.720> a<00:41:18.960> list<00:41:19.119> of<00:41:19.280> subealuations<00:41:20.000> which\nproduces a list of subealuations which\nproduces a list of subealuations which are<00:41:20.480> named<00:41:20.880> position<00:41:21.359> velocity<00:41:21.680> in<00:41:21.839> this<00:41:22.000> case\nare named position velocity in this case\nare named position velocity in this case um<00:41:23.280> and<00:41:23.440> I<00:41:23.599> can<00:41:23.760> build<00:41:23.920> the<00:41:24.079> tree<00:41:24.720> that<00:41:25.040> way<00:41:26.000> but\num and I can build the tree that way but\num and I can build the tree that way but there's<00:41:26.400> a<00:41:26.560> problem.\nthere's a problem.\nthere's a problem. Let's<00:41:28.480> say<00:41:28.560> we've<00:41:28.800> got<00:41:28.880> an<00:41:29.040> array<00:41:29.520> of<00:41:29.760> 1\nLet's say we've got an array of 1\nLet's say we've got an array of 1 billion<00:41:30.319> integers.\nI<00:41:35.040> evaluate<00:41:35.520> it,<00:41:35.760> turn<00:41:35.920> it<00:41:36.079> into<00:41:36.319> a<00:41:36.480> string,\nI evaluate it, turn it into a string,\nI evaluate it, turn it into a string, or<00:41:39.440> in<00:41:39.760> general,<00:41:40.240> if<00:41:40.480> I<00:41:40.640> expand<00:41:40.880> it,<00:41:41.040> like<00:41:41.200> I'm\nor in general, if I expand it, like I'm\nor in general, if I expand it, like I'm trying<00:41:41.520> to<00:41:42.319> open<00:41:42.640> it<00:41:42.800> in<00:41:43.280> watch<00:41:43.599> window.\ntrying to open it in watch window.\ntrying to open it in watch window. Either<00:41:44.480> case,<00:41:45.119> I<00:41:45.359> have<00:41:45.440> to<00:41:45.599> produce<00:41:45.839> a<00:41:46.000> list<00:41:46.079> of\nEither case, I have to produce a list of\nEither case, I have to produce a list of child<00:41:46.560> evaluations\nchild evaluations\nchild evaluations that<00:41:49.200> requires<00:41:49.520> 1<00:41:49.680> billion<00:41:50.000> expansions.\nthat requires 1 billion expansions.\nthat requires 1 billion expansions. Unsurprisingly,<00:41:52.319> now<00:41:52.560> you<00:41:52.800> may<00:41:52.960> think<00:41:53.040> that\nUnsurprisingly, now you may think that\nUnsurprisingly, now you may think that that's<00:41:53.440> like<00:41:53.680> very<00:41:53.920> contrived<00:41:54.640> or<00:41:54.800> or\nthat's like very contrived or or\nthat's like very contrived or or whatever,<00:41:55.599> but<00:41:55.839> remember<00:41:56.079> that<00:41:56.240> the<00:41:56.400> debugger\nwhatever, but remember that the debugger\nwhatever, but remember that the debugger needs<00:41:56.960> to<00:41:57.119> work<00:41:57.200> with<00:41:58.000> uh<00:41:58.240> needs<00:41:58.400> to<00:41:58.480> work\nneeds to work with uh needs to work\nneeds to work with uh needs to work gracefully<00:41:59.119> with<00:41:59.359> arbitrary<00:41:59.839> code.<00:42:00.319> Doesn't\ngracefully with arbitrary code. Doesn't\ngracefully with arbitrary code. Doesn't shouldn't<00:42:01.440> matter<00:42:01.680> what<00:42:01.839> the<00:42:02.000> user<00:42:02.240> actually\nshouldn't matter what the user actually\nshouldn't matter what the user actually puts.<00:42:02.880> If<00:42:03.040> it's<00:42:03.200> complete<00:42:03.440> bogus,<00:42:03.839> the\nputs. If it's complete bogus, the\nputs. If it's complete bogus, the debugger<00:42:04.400> should<00:42:04.640> at<00:42:04.640> least<00:42:05.200> handle<00:42:05.520> it\ndebugger should at least handle it\ndebugger should at least handle it gracefully.<00:42:06.720> Furthermore,<00:42:07.280> if<00:42:07.440> you<00:42:07.520> ever\ngracefully. Furthermore, if you ever\ngracefully. Furthermore, if you ever like<00:42:08.000> generate<00:42:08.480> an<00:42:08.720> array<00:42:09.040> type<00:42:09.440> and<00:42:09.599> you're\nlike generate an array type and you're\nlike generate an array type and you're saying<00:42:09.920> like,<00:42:10.160> oh,<00:42:10.319> the<00:42:10.480> size<00:42:10.640> of<00:42:10.800> this<00:42:10.960> array\nsaying like, oh, the size of this array\nsaying like, oh, the size of this array is<00:42:11.440> actually<00:42:11.680> sized<00:42:12.000> by<00:42:12.160> this<00:42:12.400> variable<00:42:12.720> over\nis actually sized by this variable over\nis actually sized by this variable over here<00:42:13.520> and<00:42:13.760> that<00:42:13.920> variable<00:42:14.160> is<00:42:14.319> not\nhere and that variable is not\nhere and that variable is not initialized<00:42:15.040> at<00:42:15.200> some<00:42:15.440> point<00:42:15.520> in<00:42:15.760> the\ninitialized at some point in the\ninitialized at some point in the program.<00:42:16.240> It'll<00:42:16.480> be<00:42:16.560> complete<00:42:16.880> bogus.<00:42:17.280> It'll\nprogram. It'll be complete bogus. It'll\nprogram. It'll be complete bogus. It'll it<00:42:17.760> could<00:42:17.839> be<00:42:18.000> something<00:42:18.160> like<00:42:18.319> 1<00:42:18.560> billion<00:42:19.280> and\nit could be something like 1 billion and\nit could be something like 1 billion and you<00:42:20.079> know<00:42:20.240> then<00:42:20.400> you<00:42:20.560> have<00:42:20.640> to<00:42:20.800> handle<00:42:20.960> it\nyou know then you have to handle it\nyou know then you have to handle it anyways,<00:42:21.680> right?\nanyways, right?\nanyways, right? This<00:42:23.359> problem<00:42:23.599> doesn't<00:42:23.839> stop<00:42:24.079> there.<00:42:25.040> Let's\nThis problem doesn't stop there. Let's\nThis problem doesn't stop there. Let's say<00:42:25.359> you've<00:42:25.520> got<00:42:25.599> a<00:42:25.760> structure<00:42:26.000> like<00:42:26.160> this,\nsay you've got a structure like this,\nsay you've got a structure like this, some<00:42:26.640> linked<00:42:26.960> list<00:42:27.200> node,<00:42:27.680> got<00:42:27.839> a<00:42:28.000> next\nsome linked list node, got a next\nsome linked list node, got a next pointer<00:42:28.560> in<00:42:28.720> x<00:42:28.880> and<00:42:29.040> y<00:42:29.599> in<00:42:29.920> 32.<00:42:31.359> Um\nuh<00:42:36.319> whoops.<00:42:37.680> So<00:42:38.079> let's<00:42:38.319> walk<00:42:38.480> through<00:42:38.640> the\nuh whoops. So let's walk through the\nuh whoops. So let's walk through the steps<00:42:38.960> to<00:42:39.280> actually<00:42:39.520> visualize<00:42:39.920> it.<00:42:40.079> We're\nsteps to actually visualize it. We're\nsteps to actually visualize it. We're evaluating<00:42:40.720> node.<00:42:41.040> We<00:42:41.119> want<00:42:41.200> to<00:42:41.280> turn<00:42:41.440> it<00:42:41.599> into\nevaluating node. We want to turn it into\nevaluating node. We want to turn it into a<00:42:41.920> string.<00:42:42.640> Whoops.<00:42:43.200> That<00:42:43.680> goes<00:42:43.920> through<00:42:44.079> all\na string. Whoops. That goes through all\na string. Whoops. That goes through all I<00:42:44.400> guess<00:42:44.480> I<00:42:44.640> could<00:42:44.720> just<00:42:44.880> do<00:42:44.960> that.<00:42:45.200> That's\nI guess I could just do that. That's\nI guess I could just do that. That's that's<00:42:45.680> fine.<00:42:46.079> Step<00:42:46.319> one,<00:42:46.560> push<00:42:46.720> a<00:42:46.880> left\nthat's fine. Step one, push a left\nthat's fine. Step one, push a left brace,<00:42:47.440> descend<00:42:47.839> to<00:42:47.920> next,<00:42:48.160> push<00:42:48.319> string<00:42:48.480> of\nbrace, descend to next, push string of\nbrace, descend to next, push string of x,<00:42:48.720> push<00:42:48.880> string<00:42:49.119> of<00:42:49.200> y,\nx, push string of y,\nx, push string of y, and<00:42:51.119> then<00:42:51.280> we<00:42:51.440> wrap<00:42:51.599> it<00:42:51.680> all<00:42:51.760> up<00:42:51.920> with<00:42:52.000> a\nand then we wrap it all up with a\nand then we wrap it all up with a closing<00:42:52.400> brace.<00:42:52.720> Right.<00:42:53.280> Problem<00:42:53.520> here<00:42:53.680> is\nclosing brace. Right. Problem here is\nclosing brace. Right. Problem here is that<00:42:54.000> that<00:42:54.319> is<00:42:54.560> recursive.<00:42:55.680> So<00:42:56.880> um<00:42:57.599> begins<00:42:58.000> the\nthat that is recursive. So um begins the\nthat that is recursive. So um begins the entire<00:42:58.640> process<00:42:58.960> again<00:42:59.200> and<00:42:59.440> then<00:42:59.599> it<00:42:59.760> just\nentire process again and then it just\nentire process again and then it just descends<00:43:00.240> and<00:43:00.400> descends<00:43:00.720> and<00:43:00.880> descends.\ndescends and descends and descends.\ndescends and descends and descends. Maybe<00:43:01.920> you're<00:43:02.160> like<00:43:02.720> I<00:43:02.960> know<00:43:03.040> the<00:43:03.280> solution\nMaybe you're like I know the solution\nMaybe you're like I know the solution stop<00:43:04.000> when<00:43:04.079> you<00:43:04.240> hit<00:43:04.319> a<00:43:04.400> null<00:43:04.720> pointer<00:43:05.760> can't\nstop when you hit a null pointer can't\nstop when you hit a null pointer can't do<00:43:06.240> that.<00:43:06.720> Remember<00:43:06.960> it's<00:43:07.200> any<00:43:07.440> arbitrary\ndo that. Remember it's any arbitrary\ndo that. Remember it's any arbitrary structure.<00:43:08.800> In<00:43:09.040> fact<00:43:10.160> uh<00:43:10.319> a<00:43:10.560> very<00:43:10.720> common<00:43:10.960> case\nstructure. In fact uh a very common case\nstructure. In fact uh a very common case is<00:43:11.359> like<00:43:11.520> sentinel<00:43:11.920> nodes<00:43:12.160> for<00:43:12.240> example<00:43:12.480> or\nis like sentinel nodes for example or\nis like sentinel nodes for example or like<00:43:12.880> nil<00:43:13.200> nodes<00:43:13.680> they<00:43:13.920> point<00:43:14.160> at<00:43:14.319> themselves.\nlike nil nodes they point at themselves.\nlike nil nodes they point at themselves. So<00:43:14.960> you'll<00:43:15.200> just<00:43:15.359> go<00:43:15.599> forever<00:43:15.920> and<00:43:16.160> you<00:43:16.400> have\nSo you'll just go forever and you have\nSo you'll just go forever and you have to<00:43:16.640> be<00:43:16.720> able<00:43:16.880> to<00:43:17.119> handle<00:43:17.440> this<00:43:17.680> case<00:43:17.920> right.\nto be able to handle this case right.\nto be able to handle this case right. Um<00:43:21.040> so\nUm so\nUm so in<00:43:22.800> either<00:43:23.119> case<00:43:23.760> the<00:43:24.000> billion<00:43:24.319> array<00:43:24.560> of\nin either case the billion array of\nin either case the billion array of integers<00:43:25.440> or<00:43:25.760> the<00:43:26.240> recursing<00:43:26.720> node<00:43:27.040> structure\nintegers or the recursing node structure\nintegers or the recursing node structure um<00:43:28.480> and<00:43:28.800> many<00:43:29.119> other<00:43:29.359> like<00:43:29.680> similar<00:43:30.160> sort<00:43:30.400> of\num and many other like similar sort of\num and many other like similar sort of kinds<00:43:30.960> of<00:43:31.119> problems.<00:43:31.760> The<00:43:32.000> fundamental\nkinds of problems. The fundamental\nkinds of problems. The fundamental problem<00:43:32.800> here<00:43:33.440> is<00:43:33.680> that<00:43:33.920> we<00:43:34.160> have<00:43:34.319> not\nproblem here is that we have not\nproblem here is that we have not properly<00:43:34.880> bounded<00:43:35.280> the<00:43:35.520> problem.<00:43:36.640> Uh<00:43:37.119> the<00:43:37.520> we\nproperly bounded the problem. Uh the we\nproperly bounded the problem. Uh the we haven't<00:43:37.920> we<00:43:38.079> haven't<00:43:38.240> properly<00:43:38.640> bounded<00:43:39.440> the\nhaven't we haven't properly bounded the\nhaven't we haven't properly bounded the set<00:43:40.560> of<00:43:40.720> information<00:43:41.040> that<00:43:41.200> the<00:43:41.359> debugger\nset of information that the debugger\nset of information that the debugger actually<00:43:41.920> has<00:43:42.160> to<00:43:42.240> work<00:43:42.400> with.<00:43:42.640> Right?<00:43:42.800> the\nactually has to work with. Right? the\nactually has to work with. Right? the debugger<00:43:43.359> can<00:43:43.520> just<00:43:43.680> like<00:43:44.640> we<00:43:45.200> so<00:43:45.440> far<00:43:45.599> we've\ndebugger can just like we so far we've\ndebugger can just like we so far we've only<00:43:46.000> sketched<00:43:46.319> out<00:43:46.480> if<00:43:46.720> like<00:43:47.119> this<00:43:47.280> is<00:43:47.359> a\nonly sketched out if like this is a\nonly sketched out if like this is a magical<00:43:48.000> function<00:43:48.480> you<00:43:48.640> can<00:43:48.800> do<00:43:48.880> this<00:43:49.040> and\nmagical function you can do this and\nmagical function you can do this and then<00:43:49.359> the<00:43:49.520> debugger<00:43:49.839> just<00:43:50.000> calls<00:43:50.160> them<00:43:50.400> gets<00:43:50.560> a\nthen the debugger just calls them gets a\nthen the debugger just calls them gets a list<00:43:50.800> of<00:43:50.880> evaluations<00:43:51.520> it's<00:43:51.680> like<00:43:52.160> okay<00:43:52.640> now\nlist of evaluations it's like okay now\nlist of evaluations it's like okay now you've<00:43:52.960> got<00:43:53.040> a<00:43:53.280> billion<00:43:53.680> things<00:43:53.920> to<00:43:54.240> go<00:43:54.400> and<00:43:54.640> do\nyou've got a billion things to go and do\nyou've got a billion things to go and do not<00:43:55.839> really<00:43:56.079> realistic<00:43:56.480> we<00:43:56.640> need<00:43:56.720> to<00:43:56.880> scope<00:43:57.119> it\nnot really realistic we need to scope it\nnot really realistic we need to scope it we<00:43:57.359> need<00:43:57.440> to<00:43:57.599> bound<00:43:57.839> it<00:43:58.240> again<00:43:58.560> the<00:43:58.800> debugger\nwe need to bound it again the debugger\nwe need to bound it again the debugger has<00:43:59.200> to<00:43:59.359> be<00:43:59.520> fast\nhas to be fast\nhas to be fast um\num\num so\nso\nso um\num\num note<00:44:07.920> that<00:44:08.160> a<00:44:08.319> debugger<00:44:08.720> UI<00:44:09.520> cannot<00:44:10.240> uh<00:44:11.040> you\nnote that a debugger UI cannot uh you\nnote that a debugger UI cannot uh you can't<00:44:11.359> visualize<00:44:11.760> arbitrarily<00:44:12.240> many<00:44:12.560> things\ncan't visualize arbitrarily many things\ncan't visualize arbitrarily many things anyways.<00:44:13.920> So<00:44:14.079> it<00:44:14.240> can't<00:44:14.560> visualize<00:44:14.960> a<00:44:15.200> billion\nanyways. So it can't visualize a billion\nanyways. So it can't visualize a billion integers.<00:44:16.240> It<00:44:16.400> can<00:44:16.560> only<00:44:16.800> visualize<00:44:17.359> like\nintegers. It can only visualize like\nintegers. It can only visualize like some<00:44:17.839> windowed<00:44:18.400> range<00:44:18.640> of<00:44:18.800> it.\nsome windowed range of it.\nsome windowed range of it. Um<00:44:21.920> there's<00:44:22.160> really<00:44:22.319> only<00:44:22.560> so<00:44:22.720> many<00:44:22.880> visual\nUm there's really only so many visual\nUm there's really only so many visual visualizations<00:44:24.160> you<00:44:24.319> can<00:44:24.480> actually<00:44:24.640> fit<00:44:24.960> on<00:44:25.119> a\nvisualizations you can actually fit on a\nvisualizations you can actually fit on a screen,<00:44:25.839> right?<00:44:26.880> So<00:44:26.960> you<00:44:27.119> can<00:44:27.280> use<00:44:27.440> those<00:44:27.599> sort\nscreen, right? So you can use those sort\nscreen, right? So you can use those sort of<00:44:27.839> like<00:44:28.079> soft<00:44:28.400> up<00:44:28.720> you<00:44:28.960> can<00:44:29.040> use<00:44:29.280> that<00:44:29.680> fact<00:44:30.000> to\nof like soft up you can use that fact to\nof like soft up you can use that fact to sort<00:44:30.400> of<00:44:30.480> form<00:44:30.880> soft<00:44:31.119> upper<00:44:31.520> limits<00:44:32.160> to<00:44:32.400> what\nsort of form soft upper limits to what\nsort of form soft upper limits to what you<00:44:32.720> actually<00:44:32.880> have<00:44:33.040> to<00:44:33.119> grab<00:44:33.359> as<00:44:33.599> the\nyou actually have to grab as the\nyou actually have to grab as the debugger.\ndebugger.\ndebugger. So<00:44:36.000> um<00:44:36.800> to<00:44:37.119> do<00:44:37.280> that<00:44:37.839> these<00:44:38.319> expansions<00:44:39.200> or\nSo um to do that these expansions or\nSo um to do that these expansions or anything<00:44:40.160> like<00:44:40.480> sort<00:44:40.720> of<00:44:40.800> that<00:44:41.520> that<00:44:41.920> could\nanything like sort of that that could\nanything like sort of that that could expand<00:44:42.560> like<00:44:42.880> that<00:44:43.520> needs<00:44:43.760> to<00:44:43.839> be<00:44:44.000> windowed\nexpand like that needs to be windowed\nexpand like that needs to be windowed right\nright\nright needs<00:44:47.680> to<00:44:47.760> be<00:44:47.920> windowed.<00:44:48.400> So<00:44:48.560> instead<00:44:48.880> of\nneeds to be windowed. So instead of\nneeds to be windowed. So instead of taking<00:44:49.520> an<00:44:49.920> an<00:44:50.160> evaluation<00:44:50.720> producing<00:44:51.040> a<00:44:51.200> list\ntaking an an evaluation producing a list\ntaking an an evaluation producing a list of<00:44:51.440> evaluations<00:44:52.400> we<00:44:52.640> need<00:44:52.720> to<00:44:52.880> scope<00:44:53.200> it.<00:44:53.359> We\nof evaluations we need to scope it. We\nof evaluations we need to scope it. We can<00:44:53.680> say<00:44:53.920> we<00:44:54.160> we're<00:44:54.400> taking<00:44:54.640> an<00:44:54.800> evaluation\ncan say we we're taking an evaluation\ncan say we we're taking an evaluation and<00:44:55.520> some<00:44:55.760> range<00:44:56.079> of<00:44:56.560> within<00:44:56.880> that<00:44:57.119> expansion.\nand some range of within that expansion.\nand some range of within that expansion. We<00:44:58.000> produce<00:44:58.240> a<00:44:58.400> list<00:44:58.560> of<00:44:58.720> evaluations<00:44:59.280> just\nWe produce a list of evaluations just\nWe produce a list of evaluations just for<00:44:59.680> that<00:44:59.839> range,<00:45:00.240> right?<00:45:00.400> We<00:45:00.560> need<00:45:00.720> some\nfor that range, right? We need some\nfor that range, right? We need some windowed<00:45:01.680> range.<00:45:02.640> When<00:45:02.880> we<00:45:03.040> generate<00:45:03.359> a\nwindowed range. When we generate a\nwindowed range. When we generate a string,<00:45:04.319> you<00:45:04.480> know,<00:45:05.760> you<00:45:06.000> can't<00:45:06.160> just<00:45:06.319> go\nstring, you know, you can't just go\nstring, you know, you can't just go forever.<00:45:07.119> Maybe<00:45:07.359> you<00:45:07.520> say,<00:45:07.680> I<00:45:07.920> I've<00:45:08.079> got<00:45:08.160> an\nforever. Maybe you say, I I've got an\nforever. Maybe you say, I I've got an evaluation.<00:45:08.800> I've<00:45:08.960> got<00:45:09.040> a<00:45:09.200> font<00:45:10.480> and<00:45:10.640> I've<00:45:10.880> got\nevaluation. I've got a font and I've got\nevaluation. I've got a font and I've got some<00:45:11.200> pixel<00:45:11.599> range<00:45:12.560> um<00:45:12.640> that,<00:45:13.040> you<00:45:13.119> know,\nsome pixel range um that, you know,\nsome pixel range um that, you know, delimmits<00:45:13.760> how<00:45:13.920> many<00:45:14.079> characters<00:45:14.400> I<00:45:14.560> actually\ndelimmits how many characters I actually\ndelimmits how many characters I actually want<00:45:14.880> to<00:45:14.960> generate<00:45:15.200> and<00:45:15.440> then<00:45:15.520> I<00:45:15.599> get<00:45:15.680> a<00:45:15.760> string\nwant to generate and then I get a string\nwant to generate and then I get a string at<00:45:16.079> the<00:45:16.160> end<00:45:16.319> there.\nat the end there.\nat the end there. Now<00:45:19.359> if<00:45:19.520> we<00:45:19.680> imagine<00:45:20.000> windowing<00:45:20.480> a<00:45:20.640> list<00:45:20.800> of\nNow if we imagine windowing a list of\nNow if we imagine windowing a list of rows<00:45:21.920> like<00:45:22.319> in<00:45:22.480> a<00:45:22.640> watch<00:45:22.880> window,<00:45:23.599> it's<00:45:23.760> a<00:45:23.920> very\nrows like in a watch window, it's a very\nrows like in a watch window, it's a very simple<00:45:24.400> problem.<00:45:25.040> Um<00:45:25.359> especially<00:45:25.680> because\nsimple problem. Um especially because\nsimple problem. Um especially because the<00:45:26.079> rows<00:45:26.240> are<00:45:26.400> all<00:45:26.480> like<00:45:26.720> uniformly<00:45:27.280> sized,\nthe rows are all like uniformly sized,\nthe rows are all like uniformly sized, right?<00:45:28.960> Um<00:45:29.760> you're<00:45:30.000> storing<00:45:30.240> some<00:45:30.560> state\nright? Um you're storing some state\nright? Um you're storing some state somewhere<00:45:31.359> that<00:45:31.680> you<00:45:31.839> know<00:45:32.000> deter<00:45:32.480> determines\nsomewhere that you know deter determines\nsomewhere that you know deter determines your<00:45:33.040> scroll<00:45:33.440> position\nyour scroll position\nyour scroll position and<00:45:36.079> that<00:45:36.400> combined<00:45:36.800> with<00:45:37.040> like<00:45:37.280> how<00:45:37.599> large\nand that combined with like how large\nand that combined with like how large the<00:45:38.160> visible<00:45:38.480> range<00:45:38.720> is<00:45:38.960> will<00:45:39.200> tell<00:45:39.359> you<00:45:39.680> you\nthe visible range is will tell you you\nthe visible range is will tell you you know<00:45:39.920> depending<00:45:40.160> on<00:45:40.319> how<00:45:40.480> you're<00:45:40.640> storing\nknow depending on how you're storing\nknow depending on how you're storing that<00:45:40.960> scroll<00:45:41.280> offset.<00:45:41.839> you<00:45:42.000> know,<00:45:42.160> you<00:45:42.240> can\nthat scroll offset. you know, you can\nthat scroll offset. you know, you can store<00:45:42.480> it<00:45:42.560> in<00:45:42.720> a<00:45:42.880> number<00:45:42.960> of<00:45:43.119> ways,<00:45:43.280> but<00:45:43.520> you\nstore it in a number of ways, but you\nstore it in a number of ways, but you could<00:45:43.760> pretty<00:45:44.000> easily<00:45:44.240> compute,<00:45:44.880> oh,<00:45:45.040> I'm\ncould pretty easily compute, oh, I'm\ncould pretty easily compute, oh, I'm viewing<00:45:45.520> this<00:45:45.680> index<00:45:46.000> to<00:45:46.160> this<00:45:46.400> this<00:45:46.720> index,\nviewing this index to this this index,\nviewing this index to this this index, right?\nright?\nright? Um,\nUm,\nUm, not<00:45:51.920> surprisingly,<00:45:52.960> region<00:45:53.359> before<00:45:53.599> and\nnot surprisingly, region before and\nnot surprisingly, region before and after<00:45:54.400> not<00:45:54.720> visible.<00:45:55.200> Don't<00:45:55.440> need<00:45:55.599> to<00:45:55.680> do\nafter not visible. Don't need to do\nafter not visible. Don't need to do anything<00:45:56.000> for<00:45:56.240> you.<00:45:56.400> You<00:45:56.640> don't<00:45:56.800> actually\nanything for you. You don't actually\nanything for you. You don't actually have<00:45:57.280> to<00:45:57.440> compute<00:45:57.839> anything<00:45:58.480> for<00:45:58.800> those.<00:45:59.359> Work\nhave to compute anything for those. Work\nhave to compute anything for those. Work only<00:45:59.839> needs<00:46:00.000> to<00:46:00.160> be<00:46:00.240> done<00:46:00.319> for<00:46:00.480> the<00:46:00.560> visible\nonly needs to be done for the visible\nonly needs to be done for the visible region.\nregion.\nregion. But<00:46:03.040> if<00:46:03.200> we<00:46:03.359> take<00:46:03.440> a<00:46:03.599> look<00:46:03.680> at<00:46:03.839> an<00:46:04.000> actual<00:46:04.240> watch\nBut if we take a look at an actual watch\nBut if we take a look at an actual watch window,<00:46:05.040> you<00:46:05.200> might<00:46:05.359> notice<00:46:05.760> it's<00:46:06.079> not<00:46:06.240> really\nwindow, you might notice it's not really\nwindow, you might notice it's not really a<00:46:06.640> list.<00:46:07.040> It's<00:46:07.280> kind<00:46:07.440> of<00:46:07.520> this<00:46:07.920> tree\na list. It's kind of this tree\na list. It's kind of this tree structure,<00:46:09.200> right?<00:46:09.599> It's<00:46:09.839> a<00:46:10.000> tree<00:46:10.240> of<00:46:10.400> lists\nstructure, right? It's a tree of lists\nstructure, right? It's a tree of lists where<00:46:11.280> each<00:46:12.079> list<00:46:12.640> in<00:46:13.040> the<00:46:13.280> tree<00:46:13.520> kind<00:46:13.760> of\nwhere each list in the tree kind of\nwhere each list in the tree kind of interrupts<00:46:14.400> the<00:46:14.560> parent<00:46:15.200> list.\nUm<00:46:19.359> so<00:46:19.839> this<00:46:20.400> these<00:46:20.720> are<00:46:20.800> all<00:46:20.880> the<00:46:21.040> members<00:46:21.280> of\nUm so this these are all the members of\nUm so this these are all the members of shared<00:46:21.920> on<00:46:22.160> this<00:46:22.319> level.<00:46:23.760> These<00:46:24.079> are<00:46:24.160> the\nshared on this level. These are the\nshared on this level. These are the members<00:46:24.560> of<00:46:24.720> the<00:46:24.880> control<00:46:25.200> bindings<00:46:25.680> member.\nmembers of the control bindings member.\nmembers of the control bindings member. These<00:46:27.280> are<00:46:27.359> the<00:46:27.520> members<00:46:28.079> uh<00:46:28.160> these<00:46:28.400> are<00:46:28.480> the\nThese are the members uh these are the\nThese are the members uh these are the elements<00:46:28.880> of<00:46:29.040> the<00:46:29.200> bindings<00:46:29.599> array<00:46:29.839> inside<00:46:30.079> of\nelements of the bindings array inside of\nelements of the bindings array inside of control<00:46:30.560> bindings.\nOh<00:46:33.920> no.<00:46:35.280> Uh<00:46:35.760> these<00:46:36.079> are<00:46:36.160> the<00:46:36.560> uh<00:46:36.640> the<00:46:36.880> members\nOh no. Uh these are the uh the members\nOh no. Uh these are the uh the members of<00:46:37.359> bindings<00:46:37.839> at<00:46:38.079> four.\nof bindings at four.\nof bindings at four. Um,\nwait.<00:46:43.920> Yeah,<00:46:44.160> bindings<00:46:44.640> of<00:46:44.800> four.<00:46:45.040> Yep.<00:46:45.760> So,\nwait. Yeah, bindings of four. Yep. So,\nwait. Yeah, bindings of four. Yep. So, if<00:46:46.160> you<00:46:46.240> encode<00:46:46.640> that<00:46:46.880> hierarchy<00:46:47.359> into<00:46:47.680> sort\nif you encode that hierarchy into sort\nif you encode that hierarchy into sort of<00:46:47.920> a<00:46:48.079> tree<00:46:48.319> structure,<00:46:48.720> if<00:46:48.880> you're<00:46:48.960> just\nof a tree structure, if you're just\nof a tree structure, if you're just going<00:46:49.280> to<00:46:49.440> like<00:46:50.000> build<00:46:50.319> that<00:46:50.880> explicitly,\ngoing to like build that explicitly,\ngoing to like build that explicitly, it'd<00:46:51.760> look<00:46:52.079> something<00:46:52.400> like<00:46:52.640> this.<00:46:54.000> So,<00:46:55.280> um,\nit'd look something like this. So, um,\nit'd look something like this. So, um, you've<00:46:56.640> got<00:46:56.720> your<00:46:57.119> watch<00:46:57.359> list,<00:46:57.680> which<00:46:57.839> is\nyou've got your watch list, which is\nyou've got your watch list, which is just<00:46:58.160> some<00:46:58.319> number<00:46:58.480> of<00:46:58.640> watch<00:46:58.880> expressions,\njust some number of watch expressions,\njust some number of watch expressions, members<00:47:00.160> of<00:47:00.480> members<00:47:00.800> of<00:47:01.040> shared,<00:47:01.440> members<00:47:01.680> of\nmembers of members of shared, members of\nmembers of members of shared, members of control<00:47:02.079> bindings,<00:47:02.800> elements<00:47:03.119> of<00:47:03.280> bindings,\ncontrol bindings, elements of bindings,\ncontrol bindings, elements of bindings, members<00:47:04.160> of<00:47:04.319> bindings<00:47:04.720> at<00:47:04.880> four.<00:47:05.680> For<00:47:06.000> this\nmembers of bindings at four. For this\nmembers of bindings at four. For this example,<00:47:06.560> that's<00:47:06.800> what<00:47:06.880> we<00:47:07.040> would<00:47:07.280> see,\nexample, that's what we would see,\nexample, that's what we would see, right?<00:47:07.760> So<00:47:07.920> let's<00:47:08.160> see<00:47:08.240> how<00:47:08.400> we<00:47:08.560> can<00:47:08.640> take<00:47:08.800> a\nright? So let's see how we can take a\nright? So let's see how we can take a structure<00:47:09.280> like<00:47:09.520> this<00:47:10.000> and<00:47:10.240> window<00:47:10.640> it.\nstructure like this and window it.\nstructure like this and window it. So<00:47:12.720> first<00:47:13.359> let's<00:47:13.680> label<00:47:14.079> each<00:47:14.319> node.<00:47:14.960> Um<00:47:16.160> W<00:47:16.400> is\nSo first let's label each node. Um W is\nSo first let's label each node. Um W is watch<00:47:16.800> list.<00:47:17.040> S<00:47:17.280> is<00:47:17.440> shared.<00:47:18.079> C<00:47:18.319> is<00:47:18.480> the<00:47:18.640> member\nwatch list. S is shared. C is the member\nwatch list. S is shared. C is the member members<00:47:19.359> of<00:47:19.520> control<00:47:19.839> bindings.<00:47:20.720> B<00:47:20.960> is<00:47:21.119> the\nmembers of control bindings. B is the\nmembers of control bindings. B is the elements<00:47:21.520> of<00:47:21.680> bindings.<00:47:22.480> Four<00:47:22.640> is<00:47:22.800> the\nelements of bindings. Four is the\nelements of bindings. Four is the members<00:47:23.440> of<00:47:23.839> bindings<00:47:24.319> at<00:47:24.480> four.\nmembers of bindings at four.\nmembers of bindings at four. We<00:47:26.400> can<00:47:26.560> also<00:47:26.720> say<00:47:26.960> that<00:47:27.599> each<00:47:27.920> node<00:47:28.400> sort<00:47:28.640> of\nWe can also say that each node sort of\nWe can also say that each node sort of uh<00:47:29.119> splits<00:47:29.599> the<00:47:29.839> parent<00:47:30.400> at<00:47:30.720> some<00:47:30.960> particular\nuh splits the parent at some particular\nuh splits the parent at some particular index<00:47:31.839> in<00:47:32.079> the<00:47:32.240> range.<00:47:32.560> So<00:47:33.359> s<00:47:33.920> uh<00:47:34.079> let's<00:47:34.319> just\nindex in the range. So s uh let's just\nindex in the range. So s uh let's just say<00:47:34.640> they<00:47:34.880> all<00:47:35.119> split<00:47:35.359> their<00:47:35.520> parent<00:47:35.839> at<00:47:36.480> uh\nsay they all split their parent at uh\nsay they all split their parent at uh you<00:47:36.880> know<00:47:37.040> s<00:47:37.440> subscript<00:47:38.079> whatever<00:47:38.400> that<00:47:38.560> node\nyou know s subscript whatever that node\nyou know s subscript whatever that node happens<00:47:39.119> to<00:47:39.280> be.\nWe<00:47:44.640> then<00:47:44.880> turn<00:47:45.040> this<00:47:45.200> tree<00:47:45.440> into<00:47:45.680> a<00:47:45.839> flat<00:47:46.079> list.\nWe then turn this tree into a flat list.\nWe then turn this tree into a flat list. Right?<00:47:46.640> You<00:47:46.800> have<00:47:46.880> this<00:47:47.040> tree<00:47:47.280> structure<00:47:48.240> and\nRight? You have this tree structure and\nRight? You have this tree structure and um<00:47:49.119> each<00:47:49.440> split<00:47:49.920> actually<00:47:50.160> causes<00:47:50.880> two<00:47:51.599> uh\num each split actually causes two uh\num each split actually causes two uh ranges<00:47:52.560> of<00:47:52.960> rows<00:47:53.040> to<00:47:53.200> be<00:47:53.359> generated.<00:47:53.760> Right?\nranges of rows to be generated. Right?\nranges of rows to be generated. Right? You've<00:47:54.079> got<00:47:54.240> W<00:47:54.560> for<00:47:54.720> the<00:47:54.880> top<00:47:55.760> um<00:47:56.720> uh<00:47:57.040> well\nYou've got W for the top um uh well\nYou've got W for the top um uh well you've<00:47:57.440> got<00:47:57.599> W<00:47:57.839> as<00:47:58.000> the<00:47:58.160> top<00:47:58.319> node<00:47:58.560> and<00:47:58.800> then\nyou've got W as the top node and then\nyou've got W as the top node and then the<00:47:59.359> things<00:47:59.599> before<00:47:59.920> the<00:48:00.160> splits<00:48:00.720> are<00:48:01.040> W<00:48:01.359> pre\nthe things before the splits are W pre\nthe things before the splits are W pre and<00:48:01.760> the<00:48:01.920> things<00:48:02.079> after<00:48:02.319> the<00:48:02.480> splits<00:48:02.720> are<00:48:02.880> W\nand the things after the splits are W\nand the things after the splits are W post<00:48:03.839> in<00:48:04.000> this<00:48:04.160> particular<00:48:04.480> case<00:48:04.720> for<00:48:04.880> one\npost in this particular case for one\npost in this particular case for one child<00:48:05.440> split<00:48:05.680> it's<00:48:05.760> a<00:48:05.839> very<00:48:06.000> simple<00:48:06.160> case\nchild split it's a very simple case\nchild split it's a very simple case right<00:48:06.560> you've<00:48:06.720> only<00:48:06.880> got<00:48:06.960> one<00:48:07.200> split<00:48:07.440> per<00:48:07.599> node\nright you've only got one split per node\nright you've only got one split per node but<00:48:08.640> um<00:48:08.880> but<00:48:09.040> yes<00:48:09.280> you've<00:48:09.440> got<00:48:09.599> W<00:48:09.760> pre<00:48:10.880> and<00:48:11.119> so\nbut um but yes you've got W pre and so\nbut um but yes you've got W pre and so on<00:48:11.359> and<00:48:11.520> so<00:48:11.680> forth<00:48:12.240> doesn't<00:48:12.400> have<00:48:12.560> any<00:48:12.720> splits\non and so forth doesn't have any splits\non and so forth doesn't have any splits underneath<00:48:13.359> it<00:48:13.520> so<00:48:13.680> you<00:48:13.839> just<00:48:13.920> get<00:48:14.079> four<00:48:15.280> um\nunderneath it so you just get four um\nunderneath it so you just get four um but<00:48:15.760> you<00:48:15.920> can<00:48:16.079> flatten<00:48:16.400> it<00:48:16.560> this<00:48:16.800> way\nand<00:48:20.640> looking<00:48:20.880> back<00:48:20.960> at<00:48:21.119> the<00:48:21.359> original<00:48:21.599> image\nand looking back at the original image\nand looking back at the original image we<00:48:22.800> can<00:48:22.880> see<00:48:23.040> these<00:48:23.280> ranges<00:48:23.760> directly,<00:48:24.559> right?\nwe can see these ranges directly, right?\nwe can see these ranges directly, right? Here's<00:48:25.760> W<00:48:26.000> pre,<00:48:26.960> here's<00:48:27.280> S<00:48:27.520> pre,<00:48:28.640> here's<00:48:29.040> C\nHere's W pre, here's S pre, here's C\nHere's W pre, here's S pre, here's C pre,\npre,\npre, here's<00:48:31.119> B<00:48:31.359> pre,<00:48:32.160> here's<00:48:32.400> all<00:48:32.480> the<00:48:32.640> members\nhere's B pre, here's all the members\nhere's B pre, here's all the members before,<00:48:33.359> no,<00:48:33.599> no<00:48:33.839> splits,<00:48:34.240> right?<00:48:34.480> So,<00:48:34.559> that's\nbefore, no, no splits, right? So, that's\nbefore, no, no splits, right? So, that's all<00:48:34.880> of<00:48:35.040> them.<00:48:36.160> Uh,<00:48:36.400> and<00:48:36.559> then<00:48:36.720> we<00:48:36.880> pop<00:48:37.119> back\nall of them. Uh, and then we pop back\nall of them. Uh, and then we pop back out,<00:48:37.440> right?<00:48:37.599> We've<00:48:37.760> got<00:48:37.920> B<00:48:38.160> post.<00:48:39.040> Cost\nout, right? We've got B post. Cost\nout, right? We've got B post. Cost happens<00:48:40.079> to<00:48:40.240> be<00:48:40.319> empty,<00:48:40.800> right?<00:48:41.040> There's<00:48:41.200> no\nhappens to be empty, right? There's no\nhappens to be empty, right? There's no members<00:48:41.680> after<00:48:42.720> um<00:48:42.960> bindings,<00:48:43.520> which<00:48:44.000> no\nmembers after um bindings, which no\nmembers after um bindings, which no problem.\nproblem.\nproblem. And<00:48:46.160> then<00:48:46.319> we<00:48:46.400> get<00:48:46.559> S<00:48:46.800> post.\nAnd then we get S post.\nAnd then we get S post. um<00:48:48.720> that's<00:48:48.960> all<00:48:49.040> you<00:48:49.200> can<00:48:49.280> see<00:48:49.359> in<00:48:49.520> this<00:48:49.599> image,\num that's all you can see in this image,\num that's all you can see in this image, but<00:48:50.000> then<00:48:50.079> there'd<00:48:50.319> be<00:48:50.400> a<00:48:50.559> W<00:48:50.800> post<00:48:51.359> further<00:48:51.760> on\nbut then there'd be a W post further on\nbut then there'd be a W post further on like<00:48:52.720> you<00:48:52.880> know<00:48:52.960> I<00:48:53.119> think<00:48:53.200> there<00:48:53.520> technically\nlike you know I think there technically\nlike you know I think there technically should<00:48:54.160> be<00:48:54.319> but<00:48:54.960> um<00:48:55.440> there<00:48:55.920> but<00:48:56.160> you<00:48:56.319> can't\nshould be but um there but you can't\nshould be but um there but you can't really<00:48:56.640> see<00:48:56.720> it<00:48:56.960> but<00:48:57.280> there'd<00:48:57.520> be<00:48:57.599> a<00:48:57.680> W<00:48:57.920> post\nreally see it but there'd be a W post\nreally see it but there'd be a W post after<00:48:58.400> that.<00:48:59.280> So<00:48:59.599> given<00:48:59.920> this<00:49:00.079> flat<00:49:00.319> list<00:49:00.559> of\nafter that. So given this flat list of\nafter that. So given this flat list of ranges<00:49:01.680> um<00:49:01.839> of<00:49:02.079> evaluations<00:49:02.720> we<00:49:02.880> can<00:49:02.960> then\nranges um of evaluations we can then\nranges um of evaluations we can then perform<00:49:03.440> the<00:49:03.599> windowing<00:49:04.079> on<00:49:04.240> that<00:49:04.480> structure.\nperform the windowing on that structure.\nperform the windowing on that structure. You've<00:49:04.960> got<00:49:05.040> a<00:49:05.200> you've<00:49:05.440> got<00:49:05.520> a<00:49:05.680> linear<00:49:06.000> list<00:49:06.319> at\nYou've got a you've got a linear list at\nYou've got a you've got a linear list at that<00:49:06.720> point<00:49:06.880> you<00:49:07.119> know<00:49:07.280> how<00:49:07.599> big<00:49:07.839> each<00:49:08.079> of\nthat point you know how big each of\nthat point you know how big each of these<00:49:08.400> ranges<00:49:08.800> are.<00:49:09.359> Then<00:49:09.599> you<00:49:09.760> can<00:49:10.160> uh<00:49:10.400> window\nthese ranges are. Then you can uh window\nthese ranges are. Then you can uh window that<00:49:10.960> list.<00:49:11.280> it's<00:49:11.520> sort<00:49:11.680> of<00:49:12.000> um<00:49:13.440> you're\nthat list. it's sort of um you're\nthat list. it's sort of um you're performing<00:49:14.000> windowing<00:49:14.400> on<00:49:14.480> a<00:49:14.640> much<00:49:14.800> more\nperforming windowing on a much more\nperforming windowing on a much more limited<00:49:15.280> range<00:49:15.599> than<00:49:15.760> the<00:49:16.000> full<00:49:16.240> set<00:49:16.400> of\nlimited range than the full set of\nlimited range than the full set of possible<00:49:17.119> rows.<00:49:17.359> Right?\npossible rows. Right?\npossible rows. Right? So<00:49:20.720> uh<00:49:20.800> in<00:49:21.040> my<00:49:21.200> terminology<00:49:21.680> and<00:49:21.920> the<00:49:22.079> way<00:49:22.160> that\nSo uh in my terminology and the way that\nSo uh in my terminology and the way that I<00:49:22.480> implement<00:49:22.800> this<00:49:23.359> uh<00:49:23.599> each<00:49:23.839> one<00:49:24.000> of<00:49:24.079> those\nI implement this uh each one of those\nI implement this uh each one of those nodes<00:49:24.720> the<00:49:25.200> in<00:49:25.440> the<00:49:25.680> sort<00:49:25.920> of<00:49:26.079> tree<00:49:26.319> of<00:49:26.640> ranged\nnodes the in the sort of tree of ranged\nnodes the in the sort of tree of ranged evaluations<00:49:27.680> or<00:49:28.000> whatever<00:49:28.319> you<00:49:28.400> want<00:49:28.480> to<00:49:28.559> call\nevaluations or whatever you want to call\nevaluations or whatever you want to call it<00:49:28.960> I<00:49:29.119> call<00:49:29.280> it<00:49:29.440> a<00:49:29.599> block.<00:49:30.240> Um<00:49:31.599> and<00:49:31.760> so<00:49:31.920> to<00:49:32.160> do\nit I call it a block. Um and so to do\nit I call it a block. Um and so to do this<00:49:32.400> step<00:49:32.640> of<00:49:32.800> evaluation<00:49:33.839> visualization<00:49:34.480> we\nthis step of evaluation visualization we\nthis step of evaluation visualization we produce<00:49:34.880> a<00:49:35.040> block<00:49:35.280> tree<00:49:35.839> from<00:49:36.079> an<00:49:36.240> evaluation.\nproduce a block tree from an evaluation.\nproduce a block tree from an evaluation. So<00:49:37.359> a<00:49:37.599> block<00:49:38.000> contains<00:49:38.319> an<00:49:38.559> evaluation<00:49:39.440> some\nSo a block contains an evaluation some\nSo a block contains an evaluation some root<00:49:40.000> evaluation<00:49:40.480> and<00:49:40.640> then<00:49:40.800> it<00:49:40.960> says<00:49:41.760> uh<00:49:41.920> I'm\nroot evaluation and then it says uh I'm\nroot evaluation and then it says uh I'm the<00:49:42.480> range<00:49:42.720> of<00:49:43.280> you<00:49:43.440> know<00:49:43.599> 0<00:49:43.920> to<00:49:45.040> n<00:49:45.680> of<00:49:46.079> the<00:49:46.240> or\nthe range of you know 0 to n of the or\nthe range of you know 0 to n of the or you<00:49:46.800> know<00:49:47.119> n<00:49:47.280> to<00:49:47.520> n<00:49:47.760> maybe<00:49:48.640> uh<00:49:48.800> of<00:49:49.200> like<00:49:49.440> within\nyou know n to n maybe uh of like within\nyou know n to n maybe uh of like within this<00:49:50.079> evaluation<00:49:50.640> I'm<00:49:50.880> sort<00:49:51.040> of<00:49:51.200> like<00:49:51.440> here's\nthis evaluation I'm sort of like here's\nthis evaluation I'm sort of like here's the<00:49:51.839> root<00:49:52.000> evaluation<00:49:52.480> that<00:49:52.720> I'm<00:49:52.880> going<00:49:52.960> to\nthe root evaluation that I'm going to\nthe root evaluation that I'm going to look<00:49:53.200> at<00:49:53.359> the<00:49:53.839> these<00:49:54.319> children<00:49:54.559> of<00:49:54.800> that.\nlook at the these children of that.\nlook at the these children of that. Um,<00:49:57.839> so<00:49:58.640> given<00:49:58.960> this<00:49:59.200> example,<00:49:59.839> you've<00:50:00.000> got<00:50:00.079> a\nUm, so given this example, you've got a\nUm, so given this example, you've got a ve<00:50:00.640> 4<00:50:01.760> array<00:50:02.400> of<00:50:02.640> 1<00:50:02.880> billion<00:50:03.440> ve<00:50:03.760> 4s.<00:50:04.640> Um,<00:50:05.680> uh,\nve 4 array of 1 billion ve 4s. Um, uh,\nve 4 array of 1 billion ve 4s. Um, uh, with<00:50:06.000> the<00:50:06.160> element<00:50:06.480> at,<00:50:06.880> uh,<00:50:07.040> you've<00:50:07.200> got<00:50:07.280> the\nwith the element at, uh, you've got the\nwith the element at, uh, you've got the element<00:50:07.760> at<00:50:07.920> 1<00:50:08.160> million<00:50:08.559> expanded.<00:50:09.040> So<00:50:09.200> you've\nelement at 1 million expanded. So you've\nelement at 1 million expanded. So you've like<00:50:09.920> scrolled<00:50:10.319> a<00:50:10.559> long<00:50:10.720> way<00:50:10.880> and<00:50:11.119> then<00:50:11.200> you've\nlike scrolled a long way and then you've\nlike scrolled a long way and then you've like<00:50:11.599> clicked,\nlike clicked,\nlike clicked, you<00:50:14.160> get<00:50:14.240> this<00:50:14.480> block<00:50:14.720> tree,<00:50:14.960> right?<00:50:15.119> You've\nyou get this block tree, right? You've\nyou get this block tree, right? You've got<00:50:15.440> some<00:50:15.599> root<00:50:15.920> evaluation<00:50:16.480> for<00:50:16.720> array.<00:50:18.160> Um,\ngot some root evaluation for array. Um,\ngot some root evaluation for array. Um, and<00:50:19.119> then<00:50:19.280> when<00:50:19.440> you<00:50:19.599> expand<00:50:19.839> array,<00:50:20.160> you<00:50:20.319> need\nand then when you expand array, you need\nand then when you expand array, you need a<00:50:20.559> block<00:50:20.720> for<00:50:20.880> that<00:50:21.119> expansion.<00:50:21.599> So<00:50:21.680> you<00:50:21.839> get\na block for that expansion. So you get\na block for that expansion. So you get one<00:50:22.480> node<00:50:22.720> that's<00:50:23.040> 0<00:50:23.280> to<00:50:23.440> 1<00:50:23.680> billion.<00:50:24.160> And<00:50:24.400> then\none node that's 0 to 1 billion. And then\none node that's 0 to 1 billion. And then you've<00:50:25.119> got<00:50:25.440> one<00:50:25.680> node<00:50:26.000> for<00:50:26.160> the<00:50:26.319> members<00:50:26.559> of\nyou've got one node for the members of\nyou've got one node for the members of the<00:50:26.880> 1<00:50:27.119> millionth<00:50:27.839> or<00:50:28.160> sorry<00:50:29.040> 1<00:50:29.280> million<00:50:29.680> and\nthe 1 millionth or sorry 1 million and\nthe 1 millionth or sorry 1 million and first<00:50:30.400> element.<00:50:31.280> Um<00:50:31.760> you<00:50:31.920> get<00:50:32.160> you<00:50:32.480> hopefully\nfirst element. Um you get you hopefully\nfirst element. Um you get you hopefully get<00:50:32.960> the<00:50:33.119> picture.\nUm\nso<00:50:43.280> um<00:50:44.400> when<00:50:44.640> we're<00:50:44.880> actually<00:50:45.040> building<00:50:45.280> this\nso um when we're actually building this\nso um when we're actually building this block<00:50:45.760> tree<00:50:45.920> structure<00:50:46.240> so<00:50:46.400> we<00:50:46.559> have<00:50:46.720> an\nblock tree structure so we have an\nblock tree structure so we have an evaluation<00:50:47.680> we<00:50:47.839> need<00:50:48.000> to<00:50:48.079> sort<00:50:48.240> of<00:50:48.400> build<00:50:48.640> this\nevaluation we need to sort of build this\nevaluation we need to sort of build this block<00:50:49.200> structure<00:50:49.520> here.<00:50:50.720> And<00:50:51.040> the<00:50:51.200> way<00:50:51.359> we<00:50:51.520> can\nblock structure here. And the way we can\nblock structure here. And the way we can do<00:50:51.760> that<00:50:51.920> is<00:50:52.079> by<00:50:52.319> storing<00:50:52.800> some<00:50:53.119> kind<00:50:53.359> of\ndo that is by storing some kind of\ndo that is by storing some kind of expansion<00:50:54.240> state,<00:50:54.559> right?<00:50:54.720> We<00:50:54.880> need<00:50:54.960> to<00:50:55.200> sort\nexpansion state, right? We need to sort\nexpansion state, right? We need to sort of<00:50:55.680> have<00:50:55.920> some<00:50:56.240> data<00:50:56.559> structure<00:50:56.880> that<00:50:57.200> records\nof have some data structure that records\nof have some data structure that records which<00:50:58.640> nodes<00:50:58.960> are<00:50:59.119> expanded.<00:50:59.599> And<00:50:59.760> how<00:50:59.920> do<00:51:00.000> we\nwhich nodes are expanded. And how do we\nwhich nodes are expanded. And how do we record<00:51:00.480> that<00:51:00.800> if<00:51:01.200> you<00:51:01.359> know<00:51:01.440> we<00:51:01.680> don't<00:51:01.839> want<00:51:01.920> to\nrecord that if you know we don't want to\nrecord that if you know we don't want to store<00:51:02.400> something<00:51:02.640> for<00:51:02.800> every<00:51:03.119> row<00:51:03.200> because\nstore something for every row because\nstore something for every row because then<00:51:03.520> we're<00:51:03.599> back<00:51:03.760> in<00:51:03.920> the<00:51:04.079> same<00:51:04.319> problem,\nthen we're back in the same problem,\nthen we're back in the same problem, right?<00:51:04.880> It's<00:51:05.040> like<00:51:05.680> I<00:51:05.839> don't<00:51:06.000> want<00:51:06.079> to<00:51:06.240> store<00:51:06.559> 1\nright? It's like I don't want to store 1\nright? It's like I don't want to store 1 billion<00:51:07.200> expansion<00:51:07.680> states,<00:51:08.240> right?<00:51:08.559> Um<00:51:08.880> so\nbillion expansion states, right? Um so\nbillion expansion states, right? Um so we<00:51:09.359> need<00:51:09.440> to<00:51:09.599> find<00:51:09.839> some<00:51:10.079> kind<00:51:10.240> of<00:51:10.480> sparse\nwe need to find some kind of sparse\nwe need to find some kind of sparse representation<00:51:12.319> for<00:51:12.559> that<00:51:12.800> information.\nUm<00:51:16.960> so<00:51:17.280> to<00:51:17.520> see<00:51:17.680> how<00:51:17.839> that<00:51:18.000> might<00:51:18.240> work,\nUm so to see how that might work,\nUm so to see how that might work, consider<00:51:18.960> a<00:51:19.119> watch<00:51:19.440> tree<00:51:19.680> like<00:51:19.920> this.<00:51:20.880> Um<00:51:21.359> you\nconsider a watch tree like this. Um you\nconsider a watch tree like this. Um you need<00:51:21.760> a<00:51:21.920> data<00:51:22.160> structure<00:51:22.400> which<00:51:22.800> would<00:51:23.119> be\nneed a data structure which would be\nneed a data structure which would be able<00:51:23.440> to<00:51:23.760> sort<00:51:24.000> of<00:51:24.079> uniquely<00:51:24.720> pick<00:51:25.040> out\nable to sort of uniquely pick out\nable to sort of uniquely pick out certain<00:51:25.760> points<00:51:26.000> in<00:51:26.240> the<00:51:26.400> tree<00:51:27.280> and<00:51:27.680> store<00:51:27.839> a\ncertain points in the tree and store a\ncertain points in the tree and store a state<00:51:28.240> for<00:51:28.480> them<00:51:28.720> and<00:51:28.960> store<00:51:29.200> only<00:51:29.520> those\nstate for them and store only those\nstate for them and store only those expansion<00:51:30.240> states.\nexpansion states.\nexpansion states. Um<00:51:32.880> so<00:51:33.119> let's<00:51:33.359> say<00:51:33.520> A,<00:51:33.760> B,<00:51:34.000> C,<00:51:34.079> and<00:51:34.319> D.<00:51:34.559> Those\nUm so let's say A, B, C, and D. Those\nUm so let's say A, B, C, and D. Those are<00:51:34.800> the<00:51:34.960> nodes<00:51:35.359> that<00:51:35.599> we<00:51:35.760> want<00:51:35.920> to<00:51:36.079> sort<00:51:36.240> of<00:51:36.319> be\nare the nodes that we want to sort of be\nare the nodes that we want to sort of be able<00:51:36.559> to<00:51:36.720> uniquely<00:51:37.119> define.\nable to uniquely define.\nable to uniquely define. And<00:51:39.599> then<00:51:39.839> you<00:51:39.920> know<00:51:40.000> once<00:51:40.240> we<00:51:40.400> have<00:51:40.480> that<00:51:40.720> data\nAnd then you know once we have that data\nAnd then you know once we have that data structure<00:51:41.520> when<00:51:41.760> we're<00:51:41.920> building<00:51:42.160> the<00:51:42.319> block\nstructure when we're building the block\nstructure when we're building the block tree<00:51:42.640> we<00:51:42.800> can<00:51:42.880> go<00:51:42.960> ahead<00:51:43.200> and<00:51:43.359> say<00:51:43.839> here's<00:51:44.160> my\ntree we can go ahead and say here's my\ntree we can go ahead and say here's my here's<00:51:44.800> my<00:51:45.440> spot<00:51:45.680> in<00:51:45.839> the<00:51:46.000> tree<00:51:46.400> check<00:51:46.559> if<00:51:46.800> it's\nhere's my spot in the tree check if it's\nhere's my spot in the tree check if it's expanded<00:51:48.000> um<00:51:48.160> in<00:51:48.400> the<00:51:48.559> sparse<00:51:48.960> expansion\nexpanded um in the sparse expansion\nexpanded um in the sparse expansion state<00:51:49.760> and<00:51:49.920> if<00:51:50.160> it's<00:51:50.400> expanded<00:51:50.880> then<00:51:51.040> we\nstate and if it's expanded then we\nstate and if it's expanded then we recursively<00:51:52.000> descend<00:51:52.319> right<00:51:52.640> then<00:51:52.800> we<00:51:52.960> build\nrecursively descend right then we build\nrecursively descend right then we build another<00:51:53.440> block<00:51:53.680> in<00:51:53.920> the<00:51:54.079> in<00:51:54.240> the<00:51:54.400> block<00:51:54.559> tree.\nanother block in the in the block tree.\nanother block in the in the block tree. Oh<00:51:56.720> no.\nOh no.\nOh no. Okay.<00:51:59.920> One<00:52:00.240> way<00:52:00.319> of<00:52:00.480> defining<00:52:01.119> uh<00:52:01.280> A,<00:52:01.520> B,<00:52:01.680> C,\nOkay. One way of defining uh A, B, C,\nOkay. One way of defining uh A, B, C, and<00:52:02.000> D<00:52:02.400> for<00:52:02.720> any<00:52:03.040> tree\nand D for any tree\nand D for any tree um<00:52:04.880> is<00:52:05.119> to<00:52:05.440> store<00:52:05.760> a<00:52:06.079> walk<00:52:06.480> from<00:52:06.720> the<00:52:06.880> root<00:52:07.119> node\num is to store a walk from the root node\num is to store a walk from the root node of<00:52:07.440> the<00:52:07.599> tree<00:52:08.000> down<00:52:09.040> um<00:52:09.359> to<00:52:09.599> whatever<00:52:10.000> child\nof the tree down um to whatever child\nof the tree down um to whatever child you're<00:52:10.480> going<00:52:10.559> to<00:52:10.640> end<00:52:10.800> up<00:52:10.960> at.<00:52:11.599> Um<00:52:12.240> so,<00:52:12.640> you\nyou're going to end up at. Um so, you\nyou're going to end up at. Um so, you know,<00:52:12.960> consider<00:52:13.359> that<00:52:14.000> uh<00:52:14.559> we<00:52:14.880> know<00:52:15.680> that<00:52:16.160> each\nknow, consider that uh we know that each\nknow, consider that uh we know that each we<00:52:17.119> know<00:52:17.359> each<00:52:17.839> uh<00:52:18.000> index<00:52:18.400> within<00:52:18.720> some<00:52:19.040> parent\nwe know each uh index within some parent\nwe know each uh index within some parent uh<00:52:21.280> of<00:52:21.599> some<00:52:21.920> of<00:52:22.160> some<00:52:22.400> one<00:52:22.559> of<00:52:22.640> these<00:52:22.880> rows.<00:52:23.040> We\nuh of some of some one of these rows. We\nuh of some of some one of these rows. We know<00:52:23.280> the<00:52:23.440> index<00:52:23.760> within<00:52:24.000> its<00:52:24.240> parent,<00:52:24.559> right?\nknow the index within its parent, right?\nknow the index within its parent, right? So,<00:52:25.440> we've<00:52:25.680> got<00:52:26.240> one<00:52:26.480> is<00:52:26.640> the<00:52:26.800> first<00:52:26.960> one<00:52:27.119> at\nSo, we've got one is the first one at\nSo, we've got one is the first one at the<00:52:27.440> root<00:52:27.760> level.<00:52:28.400> We've<00:52:28.640> got<00:52:28.800> one<00:52:29.200> underneath\nthe root level. We've got one underneath\nthe root level. We've got one underneath that<00:52:30.800> and<00:52:30.960> then<00:52:31.119> we've<00:52:31.359> got<00:52:31.839> one<00:52:32.079> and<00:52:32.319> two\nthat and then we've got one and two\nthat and then we've got one and two underneath<00:52:33.200> that.\nThis<00:52:37.359> node's<00:52:37.839> ID<00:52:38.079> can<00:52:38.319> then<00:52:38.559> be<00:52:39.200> uh<00:52:39.280> encoded<00:52:39.760> as\nThis node's ID can then be uh encoded as\nThis node's ID can then be uh encoded as okay<00:52:40.319> well<00:52:40.640> we<00:52:40.880> start<00:52:41.040> at<00:52:41.599> one<00:52:41.839> and<00:52:42.000> then<00:52:42.160> we\nokay well we start at one and then we\nokay well we start at one and then we walk<00:52:42.559> to<00:52:42.720> one.\nwalk to one.\nwalk to one. Um<00:52:45.839> here<00:52:46.319> you<00:52:46.480> know<00:52:46.559> you<00:52:46.720> you<00:52:46.960> start<00:52:47.119> at<00:52:47.359> one\nUm here you know you you start at one\nUm here you know you you start at one you<00:52:48.000> walk<00:52:48.160> to<00:52:48.400> one<00:52:48.640> you<00:52:48.800> walk<00:52:48.960> to<00:52:49.119> two.<00:52:49.440> That's\nyou walk to one you walk to two. That's\nyou walk to one you walk to two. That's that<00:52:49.920> that's<00:52:50.160> how<00:52:50.240> we<00:52:50.400> can<00:52:50.480> encode<00:52:50.800> that\nthat that's how we can encode that\nthat that's how we can encode that position<00:52:51.200> in<00:52:51.440> the<00:52:51.520> tree<00:52:52.240> here.\nposition in the tree here.\nposition in the tree here. Unsurprisingly<00:52:53.520> one<00:52:53.680> to<00:52:53.839> one<00:52:54.000> to<00:52:54.160> one.\nUnsurprisingly one to one to one.\nUnsurprisingly one to one to one. Now,\nokay,<00:53:00.640> right.<00:53:01.040> One<00:53:01.280> undesirable<00:53:02.079> property<00:53:02.400> of\nokay, right. One undesirable property of\nokay, right. One undesirable property of this<00:53:02.720> is<00:53:02.880> that<00:53:03.040> this<00:53:03.200> is<00:53:03.359> like<00:53:03.520> a<00:53:04.079> variable\nthis is that this is like a variable\nthis is that this is like a variable length<00:53:04.800> encoding<00:53:05.359> of<00:53:05.599> a<00:53:05.760> particular<00:53:06.079> spot<00:53:06.240> in\nlength encoding of a particular spot in\nlength encoding of a particular spot in the<00:53:06.559> tree.<00:53:06.880> You<00:53:07.040> have<00:53:07.200> to<00:53:07.280> store<00:53:07.440> this<00:53:07.680> chain\nthe tree. You have to store this chain\nthe tree. You have to store this chain of<00:53:08.079> walk<00:53:08.720> steps<00:53:09.200> to<00:53:09.520> get<00:53:09.680> from<00:53:09.839> the<00:53:10.000> root<00:53:10.240> node\nof walk steps to get from the root node\nof walk steps to get from the root node down.<00:53:11.359> Um,<00:53:12.720> and<00:53:13.040> so<00:53:13.520> all<00:53:13.760> your<00:53:14.079> ids<00:53:14.319> become\ndown. Um, and so all your ids become\ndown. Um, and so all your ids become variable<00:53:14.880> lengths.<00:53:15.200> Now,<00:53:15.359> obviously<00:53:15.680> you\nvariable lengths. Now, obviously you\nvariable lengths. Now, obviously you could<00:53:16.000> just<00:53:16.160> do<00:53:16.319> that,<00:53:16.800> but<00:53:17.040> I<00:53:17.200> figured<00:53:17.440> I\ncould just do that, but I figured I\ncould just do that, but I figured I would<00:53:17.680> include<00:53:18.000> how<00:53:18.160> you<00:53:18.400> don't<00:53:18.559> do<00:53:18.720> that<00:53:18.880> or\nwould include how you don't do that or\nwould include how you don't do that or how<00:53:19.359> you<00:53:19.520> don't<00:53:19.680> need<00:53:19.839> to<00:53:20.000> do<00:53:20.160> that.<00:53:20.559> Um<00:53:20.880> simple\nhow you don't need to do that. Um simple\nhow you don't need to do that. Um simple way<00:53:21.280> to<00:53:21.440> eliminate<00:53:21.839> that<00:53:22.640> would<00:53:22.960> just<00:53:23.200> be\nway to eliminate that would just be\nway to eliminate that would just be consider<00:53:24.480> first<00:53:24.720> we<00:53:24.960> can<00:53:25.040> consider<00:53:25.359> it<00:53:25.520> as\nconsider first we can consider it as\nconsider first we can consider it as sort<00:53:25.760> of<00:53:25.839> a<00:53:26.079> parent<00:53:27.359> uh<00:53:27.599> ID<00:53:27.920> and<00:53:28.079> then<00:53:28.240> some\nsort of a parent uh ID and then some\nsort of a parent uh ID and then some child<00:53:28.880> ID.<00:53:29.520> Uh<00:53:29.760> so<00:53:29.920> we<00:53:30.079> have<00:53:30.240> some<00:53:30.800> encoding<00:53:31.440> of\nchild ID. Uh so we have some encoding of\nchild ID. Uh so we have some encoding of the<00:53:32.079> walk<00:53:32.480> from<00:53:33.119> uh<00:53:33.359> the<00:53:33.599> walk<00:53:33.760> to<00:53:33.920> the<00:53:34.079> parent\nthe walk from uh the walk to the parent\nthe walk from uh the walk to the parent and<00:53:34.800> then<00:53:34.960> we<00:53:35.359> encode<00:53:35.760> the<00:53:35.920> additional<00:53:36.319> step\nand then we encode the additional step\nand then we encode the additional step that<00:53:36.720> we<00:53:36.880> take<00:53:37.440> at<00:53:37.760> this<00:53:38.000> particular<00:53:38.319> spot<00:53:38.640> by\nthat we take at this particular spot by\nthat we take at this particular spot by saying<00:53:39.119> here's<00:53:39.359> my<00:53:39.599> child<00:53:39.920> index<00:53:40.319> or<00:53:40.559> ID<00:53:40.800> or\nsaying here's my child index or ID or\nsaying here's my child index or ID or whatever.\nSo<00:53:45.119> um<00:53:45.920> this<00:53:46.160> node<00:53:46.480> here<00:53:47.200> uh<00:53:47.359> the<00:53:47.760> the<00:53:48.640> yellow\nSo um this node here uh the the yellow\nSo um this node here uh the the yellow one<00:53:49.680> the<00:53:50.000> one<00:53:50.240> circled<00:53:50.559> in<00:53:50.720> yellow<00:53:51.280> the<00:53:51.520> way<00:53:51.599> we\none the one circled in yellow the way we\none the one circled in yellow the way we define<00:53:52.000> that<00:53:52.160> key<00:53:52.400> is<00:53:52.559> you<00:53:52.720> know<00:53:52.800> we<00:53:52.880> have<00:53:52.960> some\ndefine that key is you know we have some\ndefine that key is you know we have some encoding<00:53:53.440> of<00:53:53.599> the<00:53:53.680> walk<00:53:53.839> to<00:53:54.000> the<00:53:54.160> parent\nencoding of the walk to the parent\nencoding of the walk to the parent unique<00:53:54.880> child<00:53:55.200> ID<00:53:55.920> this<00:53:56.160> one<00:53:56.559> same<00:53:56.880> thing\nunique child ID this one same thing\nunique child ID this one same thing really<00:53:59.359> easy<00:53:59.599> way<00:53:59.680> to<00:53:59.839> do<00:54:00.000> that<00:54:00.400> get<00:54:00.559> a\nreally easy way to do that get a\nreally easy way to do that get a cumulative<00:54:01.200> hash<00:54:01.599> of<00:54:01.839> the<00:54:02.079> walk.<00:54:02.480> So\ncumulative hash of the walk. So\ncumulative hash of the walk. So basically<00:54:03.520> we<00:54:03.760> can<00:54:03.920> start<00:54:04.160> we<00:54:04.400> start<00:54:04.559> with\nbasically we can start we start with\nbasically we can start we start with some<00:54:04.880> default<00:54:05.280> hash<00:54:06.000> and<00:54:06.160> then<00:54:06.400> some<00:54:06.559> some<00:54:06.960> ID\nsome default hash and then some some ID\nsome default hash and then some some ID for<00:54:07.280> the<00:54:07.440> root<00:54:07.680> node<00:54:08.079> and<00:54:08.319> then<00:54:08.480> we<00:54:08.720> hash<00:54:09.040> that\nfor the root node and then we hash that\nfor the root node and then we hash that and<00:54:09.520> that's<00:54:09.680> an<00:54:09.839> encoding<00:54:10.240> of<00:54:10.400> the<00:54:10.559> walk<00:54:10.720> to\nand that's an encoding of the walk to\nand that's an encoding of the walk to the<00:54:11.040> parent<00:54:11.599> recursively.<00:54:12.240> Right?<00:54:12.480> So<00:54:12.960> for<00:54:13.200> so\nthe parent recursively. Right? So for so\nthe parent recursively. Right? So for so for<00:54:13.680> the<00:54:14.400> for<00:54:14.640> the<00:54:14.800> middle<00:54:14.960> one<00:54:15.119> there<00:54:15.359> we<00:54:15.520> hash\nfor the for the middle one there we hash\nfor the for the middle one there we hash the<00:54:16.000> top<00:54:16.160> one<00:54:16.559> we<00:54:16.800> get<00:54:16.880> some<00:54:17.119> ID.<00:54:17.839> Um<00:54:18.880> similarly\nthe top one we get some ID. Um similarly\nthe top one we get some ID. Um similarly oh<00:54:20.079> my<00:54:20.240> gosh<00:54:21.200> this<00:54:21.440> thing<00:54:21.760> sticks.\noh my gosh this thing sticks.\noh my gosh this thing sticks. Okay.\nOkay.\nOkay. Okay.<00:54:26.880> All<00:54:26.880> right.<00:54:27.200> All<00:54:27.200> right.<00:54:27.520> All<00:54:27.520> right.\nOkay. All right. All right. All right.\nOkay. All right. All right. All right. That<00:54:29.760> one\nThat one\nThat one ignore<00:54:32.160> everything<00:54:32.480> you<00:54:32.640> just<00:54:32.880> saw.<00:54:33.920> Um<00:54:34.319> that\nignore everything you just saw. Um that\nignore everything you just saw. Um that one<00:54:34.800> you<00:54:34.880> know<00:54:34.960> you<00:54:35.119> hash<00:54:35.359> the<00:54:35.520> parent<00:54:35.920> and<00:54:36.160> so\none you know you hash the parent and so\none you know you hash the parent and so on.<00:54:36.559> Right.\non. Right.\non. Right. So<00:54:38.319> then<00:54:38.720> because<00:54:39.040> you<00:54:39.280> can<00:54:39.440> have<00:54:39.520> these<00:54:39.760> like\nSo then because you can have these like\nSo then because you can have these like sort<00:54:40.079> of<00:54:40.160> unique<00:54:40.480> keys,<00:54:41.119> it's<00:54:41.280> pretty<00:54:41.440> easy<00:54:41.599> at\nsort of unique keys, it's pretty easy at\nsort of unique keys, it's pretty easy at that<00:54:41.920> point<00:54:42.079> to<00:54:42.319> have<00:54:42.480> a<00:54:42.640> sparse<00:54:43.200> data\nthat point to have a sparse data\nthat point to have a sparse data structure<00:54:43.760> that's<00:54:44.079> like<00:54:44.480> look,<00:54:44.720> we're<00:54:44.880> only\nstructure that's like look, we're only\nstructure that's like look, we're only talking<00:54:45.280> about<00:54:45.359> the<00:54:45.599> hashes<00:54:45.920> that<00:54:46.160> have\ntalking about the hashes that have\ntalking about the hashes that have actually<00:54:46.559> the<00:54:46.800> hashes<00:54:47.040> and<00:54:47.359> ids<00:54:47.599> that<00:54:47.680> have\nactually the hashes and ids that have\nactually the hashes and ids that have actually<00:54:48.160> been<00:54:48.319> expanded.<00:54:49.280> Um<00:54:50.240> and<00:54:50.400> then<00:54:50.559> you\nactually been expanded. Um and then you\nactually been expanded. Um and then you can<00:54:50.960> actually<00:54:51.520> uh<00:54:51.920> you<00:54:52.079> know<00:54:52.319> look<00:54:52.480> it<00:54:52.640> up<00:54:52.800> and\ncan actually uh you know look it up and\ncan actually uh you know look it up and produce<00:54:53.119> the<00:54:53.280> block<00:54:53.520> tree,<00:54:53.839> right?<00:54:54.800> So<00:54:54.960> let's\nproduce the block tree, right? So let's\nproduce the block tree, right? So let's zoom<00:54:55.440> back<00:54:55.599> out.<00:54:56.480> Start<00:54:56.640> with<00:54:56.800> an<00:54:56.960> evaluation\nzoom back out. Start with an evaluation\nzoom back out. Start with an evaluation which<00:54:58.160> again<00:54:58.480> that's<00:54:58.640> produced<00:54:58.960> by<00:54:59.119> the\nwhich again that's produced by the\nwhich again that's produced by the compiler<00:54:59.680> by<00:54:59.839> the<00:55:00.000> debuggers<00:55:00.480> compiler.\ncompiler by the debuggers compiler.\ncompiler by the debuggers compiler. Um<00:55:03.359> using<00:55:03.680> the<00:55:03.920> expansion<00:55:04.400> state<00:55:04.720> you<00:55:04.880> can\nUm using the expansion state you can\nUm using the expansion state you can produce<00:55:05.200> a<00:55:05.440> block<00:55:05.680> tree.\nproduce a block tree.\nproduce a block tree. Um<00:55:09.200> a<00:55:09.440> block<00:55:09.760> tree<00:55:10.079> can<00:55:10.400> be<00:55:10.559> used<00:55:10.800> to<00:55:11.040> produce<00:55:11.280> a\nUm a block tree can be used to produce a\nUm a block tree can be used to produce a list<00:55:11.680> of<00:55:12.000> pairs.<00:55:12.400> You<00:55:12.559> can<00:55:12.640> think<00:55:12.800> of<00:55:12.880> it<00:55:13.440> uh\nlist of pairs. You can think of it uh\nlist of pairs. You can think of it uh you<00:55:13.839> know<00:55:14.079> each<00:55:14.319> pair<00:55:14.559> containing<00:55:14.960> you've<00:55:15.119> got\nyou know each pair containing you've got\nyou know each pair containing you've got some<00:55:15.520> block<00:55:15.760> and<00:55:15.920> then<00:55:16.079> some<00:55:16.319> range<00:55:16.640> within\nsome block and then some range within\nsome block and then some range within that<00:55:17.200> block.\nthat block.\nthat block. Um<00:55:19.280> so<00:55:19.440> that<00:55:19.680> would<00:55:19.839> be<00:55:19.920> like<00:55:20.240> you<00:55:20.319> know<00:55:20.400> the<00:55:20.640> W\nUm so that would be like you know the W\nUm so that would be like you know the W pre<00:55:22.079> and<00:55:22.240> so<00:55:22.480> on.<00:55:23.040> That<00:55:23.280> would<00:55:23.359> be<00:55:23.520> like<00:55:23.920> that\npre and so on. That would be like that\npre and so on. That would be like that step.<00:55:25.440> And<00:55:25.599> so<00:55:25.839> that<00:55:26.079> forms<00:55:26.480> like<00:55:26.640> the<00:55:26.880> linear\nstep. And so that forms like the linear\nstep. And so that forms like the linear sequence<00:55:27.440> of<00:55:27.520> blocks<00:55:27.839> right?<00:55:28.079> got<00:55:28.240> like<00:55:28.559> these\nsequence of blocks right? got like these\nsequence of blocks right? got like these rows<00:55:29.119> and<00:55:29.200> these<00:55:29.520> rows<00:55:29.599> and<00:55:29.760> these<00:55:30.000> rows<00:55:30.160> and\nrows and these rows and these rows and\nrows and these rows and these rows and these<00:55:30.559> rows<00:55:31.040> and<00:55:31.359> you're<00:55:31.680> not<00:55:31.839> doing<00:55:32.400> per<00:55:32.800> row\nthese rows and you're not doing per row\nthese rows and you're not doing per row work<00:55:33.119> anymore.<00:55:34.000> And<00:55:34.240> finally,<00:55:35.680> remember<00:55:36.400> that\nwork anymore. And finally, remember that\nwork anymore. And finally, remember that we<00:55:36.800> have<00:55:36.960> a<00:55:37.119> way<00:55:37.280> to<00:55:37.359> take<00:55:37.520> an<00:55:37.680> evaluation<00:55:38.400> and\nwe have a way to take an evaluation and\nwe have a way to take an evaluation and given<00:55:38.960> some<00:55:39.119> range<00:55:39.359> under<00:55:39.599> that<00:55:39.760> evaluation,\ngiven some range under that evaluation,\ngiven some range under that evaluation, we<00:55:40.480> can<00:55:40.640> expand<00:55:40.960> it<00:55:41.200> to<00:55:41.440> all<00:55:41.520> the<00:55:41.680> children\nwe can expand it to all the children\nwe can expand it to all the children evaluations.\nevaluations.\nevaluations. So\nSo\nSo with<00:55:46.800> that<00:55:46.960> list,<00:55:47.200> you<00:55:47.359> can<00:55:47.520> produce<00:55:47.680> a<00:55:47.839> final\nwith that list, you can produce a final\nwith that list, you can produce a final list<00:55:48.319> of<00:55:48.880> row<00:55:49.040> evaluations.<00:55:49.599> Right?<00:55:49.839> That's\nlist of row evaluations. Right? That's\nlist of row evaluations. Right? That's how<00:55:50.160> you<00:55:50.640> with<00:55:50.880> the<00:55:51.119> global<00:55:51.440> viewing<00:55:51.839> range\nhow you with the global viewing range\nhow you with the global viewing range you<00:55:52.319> can<00:55:52.480> you<00:55:52.720> can<00:55:52.799> use<00:55:53.040> that<00:55:53.280> together<00:55:53.599> with\nyou can you can use that together with\nyou can you can use that together with the<00:55:53.839> list.<00:55:54.079> This<00:55:54.240> is<00:55:54.319> the<00:55:54.480> windowing<00:55:54.880> step.\nthe list. This is the windowing step.\nthe list. This is the windowing step. you<00:55:55.440> get<00:55:55.520> the<00:55:55.760> list<00:55:55.839> of<00:55:56.000> actual<00:55:56.400> evaluations\nyou get the list of actual evaluations\nyou get the list of actual evaluations that<00:55:57.119> you<00:55:57.280> can<00:55:57.359> use<00:55:57.520> for<00:55:57.680> all<00:55:57.839> the<00:55:58.079> rows<00:55:58.480> that\nthat you can use for all the rows that\nthat you can use for all the rows that are<00:55:58.880> visibly<00:55:59.359> available<00:56:00.160> in<00:56:00.400> the<00:56:00.559> watch<00:56:00.880> tree.\nare visibly available in the watch tree.\nare visibly available in the watch tree. So<00:56:03.280> let's<00:56:03.520> take<00:56:03.599> a<00:56:03.760> step<00:56:03.920> back,<00:56:04.319> think<00:56:04.480> about\nSo let's take a step back, think about\nSo let's take a step back, think about what<00:56:04.799> this<00:56:05.040> actually<00:56:05.200> gets<00:56:05.440> us<00:56:06.799> in<00:56:07.040> terms<00:56:07.200> of\nwhat this actually gets us in terms of\nwhat this actually gets us in terms of like<00:56:07.599> our<00:56:07.839> overall<00:56:08.160> goal,<00:56:08.480> right?<00:56:09.040> Our<00:56:09.359> idea,\nlike our overall goal, right? Our idea,\nlike our overall goal, right? Our idea, we<00:56:09.920> want<00:56:10.079> to<00:56:10.160> accelerate<00:56:10.559> visualization.\nwe want to accelerate visualization.\nwe want to accelerate visualization. What<00:56:11.359> is<00:56:11.440> this?<00:56:11.680> What<00:56:11.839> does<00:56:12.079> all<00:56:12.319> that<00:56:13.040> crap\nWhat is this? What does all that crap\nWhat is this? What does all that crap actually<00:56:13.680> get<00:56:13.920> us?\nactually get us?\nactually get us? So<00:56:17.359> I've<00:56:17.680> covered<00:56:18.160> almost<00:56:18.480> all<00:56:18.640> the<00:56:18.799> steps\nSo I've covered almost all the steps\nSo I've covered almost all the steps besides<00:56:20.079> the<00:56:20.240> UI<00:56:20.960> part\nbesides the UI part\nbesides the UI part um<00:56:22.880> that<00:56:23.200> you<00:56:23.359> would<00:56:23.520> need<00:56:23.760> in<00:56:24.000> order<00:56:24.079> to<00:56:24.319> build\num that you would need in order to build\num that you would need in order to build like<00:56:25.040> this<00:56:25.440> kind<00:56:25.599> of<00:56:25.760> watch<00:56:26.079> window\nlike this kind of watch window\nlike this kind of watch window structure.\nstructure.\nstructure. Uh<00:56:28.799> so<00:56:28.960> this<00:56:29.119> is<00:56:29.200> like<00:56:29.280> a<00:56:29.440> fully<00:56:29.760> windowed<00:56:30.160> one.\nUh so this is like a fully windowed one.\nUh so this is like a fully windowed one. We<00:56:30.480> only<00:56:30.640> evaluate<00:56:31.119> what<00:56:31.280> we<00:56:31.359> need.<00:56:31.599> We<00:56:31.760> don't\nWe only evaluate what we need. We don't\nWe only evaluate what we need. We don't pull<00:56:32.000> in<00:56:32.240> memory<00:56:32.480> that's<00:56:32.720> not<00:56:32.880> visible.<00:56:33.359> None\npull in memory that's not visible. None\npull in memory that's not visible. None of<00:56:33.680> that<00:56:33.839> happens.\nof that happens.\nof that happens. Um<00:56:36.640> and<00:56:36.880> then<00:56:37.040> obviously<00:56:37.359> we<00:56:37.599> visualize\nUm and then obviously we visualize\nUm and then obviously we visualize everything<00:56:38.319> textually.<00:56:39.119> We've<00:56:39.280> got<00:56:39.359> a<00:56:39.520> strct.\neverything textually. We've got a strct.\neverything textually. We've got a strct. You've<00:56:40.079> got<00:56:40.640> members<00:56:41.040> of<00:56:41.280> the<00:56:41.520> strct.<00:56:42.000> Some<00:56:42.160> of\nYou've got members of the strct. Some of\nYou've got members of the strct. Some of them<00:56:42.400> are<00:56:42.480> integers.<00:56:42.960> Some<00:56:43.040> of<00:56:43.119> them<00:56:43.200> are\nthem are integers. Some of them are\nthem are integers. Some of them are strrus.<00:56:44.079> whenever<00:56:44.400> we<00:56:44.480> we<00:56:44.799> show<00:56:44.960> the<00:56:45.119> textual\nstrrus. whenever we we show the textual\nstrrus. whenever we we show the textual representation<00:56:46.720> and<00:56:46.960> that's<00:56:47.119> great.<00:56:47.359> We<00:56:47.599> can\nrepresentation and that's great. We can\nrepresentation and that's great. We can dig<00:56:47.839> into<00:56:48.000> anything<00:56:48.240> the<00:56:48.480> debugger<00:56:48.880> can\ndig into anything the debugger can\ndig into anything the debugger can evaluate<00:56:49.520> using<00:56:49.760> its<00:56:50.079> compiler<00:56:50.799> this<00:56:51.040> way.\nevaluate using its compiler this way.\nevaluate using its compiler this way. We've<00:56:51.599> done<00:56:51.760> sort<00:56:51.920> of<00:56:52.000> a<00:56:52.480> general\nWe've done sort of a general\nWe've done sort of a general textualization<00:56:54.000> case,<00:56:55.200> but<00:56:56.400> in<00:56:56.559> a<00:56:56.720> sense<00:56:57.599> all\ntextualization case, but in a sense all\ntextualization case, but in a sense all that<00:56:58.000> is<00:56:58.880> we've<00:56:59.200> kind<00:56:59.280> of<00:56:59.359> just<00:56:59.520> accelerated\nthat is we've kind of just accelerated\nthat is we've kind of just accelerated print<00:57:00.319> f<00:57:00.960> print<00:57:01.200> f<00:57:01.359> debugging.\nprint f print f debugging.\nprint f print f debugging. We've<00:57:03.359> kind<00:57:03.520> of<00:57:03.599> just<00:57:03.760> produced<00:57:04.160> a<00:57:04.480> typeaware\nWe've kind of just produced a typeaware\nWe've kind of just produced a typeaware version,<00:57:06.240> right?<00:57:06.480> So<00:57:06.559> in<00:57:06.880> C<00:57:07.440> it's<00:57:07.760> really\nversion, right? So in C it's really\nversion, right? So in C it's really stupid.<00:57:08.559> You<00:57:08.880> have<00:57:09.040> to<00:57:09.200> sort<00:57:09.359> of<00:57:09.520> just<00:57:09.680> say\nstupid. You have to sort of just say\nstupid. You have to sort of just say like<00:57:10.559> have<00:57:10.720> to<00:57:10.880> remember<00:57:11.040> the<00:57:11.200> type<00:57:11.359> info<00:57:11.760> and\nlike have to remember the type info and\nlike have to remember the type info and say<00:57:12.160> well<00:57:12.400> I'm<00:57:12.559> going<00:57:12.640> to<00:57:12.720> log<00:57:12.960> the<00:57:13.119> strct.\nsay well I'm going to log the strct.\nsay well I'm going to log the strct. I've<00:57:13.599> got<00:57:13.680> a<00:57:13.760> print<00:57:14.079> defaf<00:57:14.559> hitter<00:57:15.200> like<00:57:15.440> in\nI've got a print defaf hitter like in\nI've got a print defaf hitter like in this<00:57:15.680> case<00:57:15.839> I'm<00:57:16.000> at<00:57:16.160> my<00:57:16.319> hit<00:57:16.559> entity<00:57:16.880> code\nthis case I'm at my hit entity code\nthis case I'm at my hit entity code path.<00:57:17.359> I've<00:57:17.520> got<00:57:17.920> hitter<00:57:18.720> id.<00:57:18.880> I've<00:57:19.040> got<00:57:19.119> to\npath. I've got hitter id. I've got to\npath. I've got hitter id. I've got to log<00:57:19.440> that<00:57:19.680> hitter.parent.<00:57:20.480> I'm<00:57:20.640> just<00:57:20.799> like\nlog that hitter.parent. I'm just like\nlog that hitter.parent. I'm just like duplicating<00:57:21.440> the<00:57:21.599> type<00:57:21.839> info<00:57:22.160> at<00:57:22.319> this<00:57:22.480> point\nduplicating the type info at this point\nduplicating the type info at this point and<00:57:23.280> I've<00:57:23.440> just<00:57:23.599> got<00:57:23.680> to<00:57:23.839> remember<00:57:24.079> how<00:57:24.240> to<00:57:24.319> do\nand I've just got to remember how to do\nand I've just got to remember how to do that.<00:57:24.559> Or<00:57:24.720> maybe<00:57:24.880> I<00:57:25.040> just<00:57:25.200> narrow<00:57:25.520> down<00:57:25.680> to<00:57:25.760> the\nthat. Or maybe I just narrow down to the\nthat. Or maybe I just narrow down to the subset<00:57:26.240> that<00:57:26.400> I<00:57:26.559> want.<00:57:26.799> Whatever.<00:57:28.160> Um,<00:57:28.880> you\nsubset that I want. Whatever. Um, you\nsubset that I want. Whatever. Um, you know,<00:57:29.119> in<00:57:29.280> a<00:57:29.440> better<00:57:29.599> language,<00:57:30.000> maybe<00:57:30.160> it'd\nknow, in a better language, maybe it'd\nknow, in a better language, maybe it'd look<00:57:30.559> more<00:57:30.720> like<00:57:30.880> that.<00:57:31.280> You<00:57:31.440> know,<00:57:31.520> you've\nlook more like that. You know, you've\nlook more like that. You know, you've got<00:57:31.839> print<00:57:32.160> f<00:57:32.400> and<00:57:32.640> then<00:57:33.280> uh<00:57:33.520> hitter.<00:57:34.000> Maybe\ngot print f and then uh hitter. Maybe\ngot print f and then uh hitter. Maybe it's<00:57:34.319> not<00:57:34.480> even<00:57:34.720> f.<00:57:35.040> I<00:57:35.119> don't<00:57:35.280> know.<00:57:35.680> You<00:57:35.839> know,\nit's not even f. I don't know. You know,\nit's not even f. I don't know. You know, hitter<00:57:36.559> and<00:57:36.799> then<00:57:37.200> percent<00:57:37.599> and<00:57:37.760> then<00:57:37.920> you<00:57:38.000> can\nhitter and then percent and then you can\nhitter and then percent and then you can just<00:57:38.240> pass<00:57:38.480> the<00:57:38.640> strruct.<00:57:39.040> Maybe<00:57:39.200> it<00:57:39.359> should\njust pass the strruct. Maybe it should\njust pass the strruct. Maybe it should just<00:57:39.680> be<00:57:39.760> aware<00:57:40.000> of<00:57:40.079> the<00:57:40.240> type<00:57:40.480> info<00:57:41.520> uh\njust be aware of the type info uh\njust be aware of the type info uh somehow.<00:57:42.079> Obviously<00:57:42.480> not<00:57:42.640> the<00:57:42.799> true<00:57:43.280> uh<00:57:43.359> not\nsomehow. Obviously not the true uh not\nsomehow. Obviously not the true uh not not<00:57:43.760> the<00:57:43.920> case<00:57:44.079> in<00:57:44.319> C<00:57:44.559> but<00:57:45.760> point<00:57:46.079> being<00:57:46.720> the\nnot the case in C but point being the\nnot the case in C but point being the watch<00:57:47.200> window<00:57:47.680> effectively<00:57:48.160> provides<00:57:48.480> an\nwatch window effectively provides an\nwatch window effectively provides an accelerated<00:57:49.280> version<00:57:49.440> of<00:57:49.599> that.<00:57:50.240> Um<00:57:50.720> now<00:57:50.880> the\naccelerated version of that. Um now the\naccelerated version of that. Um now the watch<00:57:51.200> window<00:57:51.520> offers<00:57:51.839> some<00:57:52.079> pretty<00:57:52.240> big\nwatch window offers some pretty big\nwatch window offers some pretty big improvements<00:57:53.359> right<00:57:53.680> the<00:57:54.000> ability<00:57:54.240> to\nimprovements right the ability to\nimprovements right the ability to interact<00:57:54.720> with<00:57:54.880> the<00:57:55.040> data.<00:57:55.280> You<00:57:55.440> can<00:57:55.520> write<00:57:55.760> to\ninteract with the data. You can write to\ninteract with the data. You can write to the<00:57:56.079> data.<00:57:56.720> Um<00:57:57.359> you<00:57:57.599> can<00:57:58.000> dynamically<00:57:58.640> expand\nthe data. Um you can dynamically expand\nthe data. Um you can dynamically expand or<00:57:59.119> collapse<00:57:59.520> parts<00:57:59.760> of<00:57:59.839> the<00:58:00.079> data.<00:58:00.960> Um<00:58:01.440> it\nor collapse parts of the data. Um it\nor collapse parts of the data. Um it only<00:58:01.839> pays<00:58:02.079> the<00:58:02.240> cost<00:58:02.400> for<00:58:02.559> what<00:58:02.720> is<00:58:02.880> visible.\nonly pays the cost for what is visible.\nonly pays the cost for what is visible. You<00:58:03.440> don't<00:58:03.599> have<00:58:03.680> to<00:58:03.839> literally<00:58:04.160> log\nYou don't have to literally log\nYou don't have to literally log everything<00:58:04.799> and<00:58:05.040> then<00:58:05.359> hunt<00:58:05.599> through<00:58:05.839> it.<00:58:06.559> Um\neverything and then hunt through it. Um\neverything and then hunt through it. Um and<00:58:08.079> you<00:58:08.240> can<00:58:08.319> also<00:58:08.559> like<00:58:08.720> interactively<00:58:10.000> go\nand you can also like interactively go\nand you can also like interactively go to<00:58:10.319> other<00:58:10.559> parts.<00:58:10.720> So<00:58:10.799> you<00:58:10.960> can<00:58:11.040> evaluate<00:58:11.520> as\nto other parts. So you can evaluate as\nto other parts. So you can evaluate as you<00:58:11.920> need<00:58:12.400> instead<00:58:12.720> of<00:58:12.799> having<00:58:13.040> to<00:58:13.200> evaluate\nyou need instead of having to evaluate\nyou need instead of having to evaluate everything<00:58:14.799> and<00:58:15.119> print<00:58:15.359> it<00:58:15.520> and<00:58:15.760> log<00:58:16.000> it.<00:58:16.880> Um\neverything and print it and log it. Um\neverything and print it and log it. Um and<00:58:17.839> then<00:58:18.000> and<00:58:18.240> then<00:58:18.480> you<00:58:18.640> know<00:58:18.799> search\nand then and then you know search\nand then and then you know search through<00:58:19.200> the<00:58:19.359> sea<00:58:19.520> of<00:58:19.680> log<00:58:20.240> that<00:58:20.480> you<00:58:20.640> get.<00:58:21.680> Um\nthrough the sea of log that you get. Um\nthrough the sea of log that you get. Um so<00:58:24.079> eliminates<00:58:24.559> the<00:58:24.720> code<00:58:24.880> modification\nso eliminates the code modification\nso eliminates the code modification step,<00:58:25.839> eliminates<00:58:26.240> the<00:58:26.319> build,<00:58:26.640> eliminates\nstep, eliminates the build, eliminates\nstep, eliminates the build, eliminates the<00:58:27.200> run,<00:58:27.599> eliminates<00:58:28.000> the<00:58:28.160> recreate<00:58:28.559> state.\nthe run, eliminates the recreate state.\nthe run, eliminates the recreate state. So<00:58:30.960> but<00:58:32.400> we<00:58:32.720> already<00:58:33.040> know\nSo but we already know\nSo but we already know that<00:58:35.040> text<00:58:35.280> is<00:58:35.440> insufficient.<00:58:36.799> So,\nthat text is insufficient. So,\nthat text is insufficient. So, um,<00:58:39.520> how<00:58:39.680> can<00:58:39.839> we<00:58:39.920> push<00:58:40.160> it<00:58:40.240> further<00:58:41.200> to\num, how can we push it further to\num, how can we push it further to support,<00:58:42.079> uh,<00:58:42.240> non-extual<00:58:43.119> visualizers<00:58:43.680> as\nsupport, uh, non-extual visualizers as\nsupport, uh, non-extual visualizers as well?<00:58:45.280> No,<00:58:45.599> no,<00:58:45.839> no,<00:58:46.079> no,<00:58:46.480> no.\nwell? No, no, no, no, no.\nwell? No, no, no, no, no. I'm<00:58:48.240> really<00:58:48.480> bad<00:58:48.640> with<00:58:48.799> this<00:58:49.040> thing.<00:58:50.079> Um,\nokay.<00:58:54.720> So,<00:58:55.280> let's<00:58:55.599> consider<00:58:55.839> a<00:58:56.079> basic<00:58:56.319> case<00:58:56.720> of\nokay. So, let's consider a basic case of\nokay. So, let's consider a basic case of visualization,<00:58:57.920> right?<00:58:58.160> Instead<00:58:58.400> of<00:58:58.559> single\nvisualization, right? Instead of single\nvisualization, right? Instead of single line<00:58:59.040> text,<00:58:59.359> we've<00:58:59.520> got<00:58:59.680> multi-line<00:59:00.319> text.\nline text, we've got multi-line text.\nline text, we've got multi-line text. So,<00:59:01.680> in<00:59:01.839> this<00:59:02.079> in<00:59:02.319> this<00:59:02.559> case,<00:59:03.200> I've<00:59:03.440> got<00:59:03.599> some\nSo, in this in this case, I've got some\nSo, in this in this case, I've got some like<00:59:04.000> shader<00:59:04.319> blob.<00:59:04.559> I've<00:59:04.880> got<00:59:05.040> some<00:59:05.440> some\nlike shader blob. I've got some some\nlike shader blob. I've got some some shader<00:59:06.319> program<00:59:06.640> text<00:59:06.880> that<00:59:07.119> I'm<00:59:07.280> evaluating.\nshader program text that I'm evaluating.\nshader program text that I'm evaluating. Um,<00:59:09.200> and<00:59:09.440> our<00:59:09.680> watch<00:59:10.000> our<00:59:10.160> watch<00:59:10.400> window<00:59:10.720> kind\nUm, and our watch our watch window kind\nUm, and our watch our watch window kind of<00:59:10.880> just<00:59:11.040> like<00:59:11.280> shows<00:59:11.440> this.<00:59:11.680> You<00:59:11.839> like<00:59:12.000> get\nof just like shows this. You like get\nof just like shows this. You like get the<00:59:12.319> string.<00:59:12.559> You're<00:59:12.720> like,<00:59:12.880> here's<00:59:13.119> my\nthe string. You're like, here's my\nthe string. You're like, here's my pointer<00:59:13.520> to<00:59:13.680> the<00:59:13.760> string<00:59:14.000> data.<00:59:14.400> You<00:59:14.559> expand\npointer to the string data. You expand\npointer to the string data. You expand it<00:59:15.040> and<00:59:15.200> it's<00:59:15.359> like,<00:59:15.599> oh,<00:59:16.079> like<00:59:16.319> that's<00:59:17.520> like\nit and it's like, oh, like that's like\nit and it's like, oh, like that's like pretty<00:59:18.000> good.<00:59:18.400> Like<00:59:18.559> I<00:59:18.799> can<00:59:18.880> see<00:59:19.040> the\npretty good. Like I can see the\npretty good. Like I can see the characters<00:59:19.680> or<00:59:19.839> whatever<00:59:20.160> if<00:59:20.319> they're<00:59:20.480> asky.\ncharacters or whatever if they're asky.\ncharacters or whatever if they're asky. You<00:59:21.040> know,<00:59:21.119> it<00:59:21.280> doesn't<00:59:21.359> even<00:59:21.520> support<00:59:21.760> UTF8.\nYou know, it doesn't even support UTF8.\nYou know, it doesn't even support UTF8. I<00:59:23.040> don't<00:59:23.200> really<00:59:23.520> want<00:59:23.680> to<00:59:23.839> look<00:59:23.920> at<00:59:24.079> this<00:59:24.240> if\nI don't really want to look at this if\nI don't really want to look at this if I'm<00:59:24.559> like,<00:59:24.799> what's<00:59:25.119> this<00:59:25.280> string?<00:59:25.839> You<00:59:26.000> know,\nI'm like, what's this string? You know,\nI'm like, what's this string? You know, that's<00:59:26.400> bad.\nthat's bad.\nthat's bad. Now,<00:59:28.400> one<00:59:28.559> potential<00:59:29.200> al<00:59:29.200> alternative<00:59:29.760> is\nNow, one potential al alternative is\nNow, one potential al alternative is like<00:59:30.559> hex<00:59:30.799> editor,<00:59:31.200> right?<00:59:31.440> Memory<00:59:31.839> view<00:59:32.240> kind\nlike hex editor, right? Memory view kind\nlike hex editor, right? Memory view kind of<00:59:32.559> thing.<00:59:33.200> Um,<00:59:33.599> and<00:59:33.760> this<00:59:33.920> is<00:59:34.079> often<00:59:34.319> actually\nof thing. Um, and this is often actually\nof thing. Um, and this is often actually good<00:59:34.880> for<00:59:34.960> this.<00:59:35.200> Like<00:59:35.280> if<00:59:35.440> you're<00:59:35.520> writing<00:59:35.680> a\ngood for this. Like if you're writing a\ngood for this. Like if you're writing a parser<00:59:36.240> or<00:59:36.480> something,<00:59:36.720> you<00:59:36.880> can<00:59:37.040> like<00:59:37.839> look\nparser or something, you can like look\nparser or something, you can like look at<00:59:38.160> the<00:59:38.319> data<00:59:38.559> this<00:59:38.720> way.<00:59:38.960> You<00:59:39.040> can<00:59:39.200> you<00:59:39.440> can,\nat the data this way. You can you can,\nat the data this way. You can you can, you<00:59:39.839> know,<00:59:40.079> position<00:59:40.400> your<00:59:40.640> cursor<00:59:41.040> maybe<00:59:41.280> at\nyou know, position your cursor maybe at\nyou know, position your cursor maybe at where<00:59:42.000> the<00:59:42.160> the<00:59:42.480> parsing<00:59:42.880> iterator<00:59:43.280> is<00:59:43.520> or\nwhere the the parsing iterator is or\nwhere the the parsing iterator is or something.<00:59:43.920> So<00:59:44.079> you<00:59:44.240> can<00:59:44.400> see<00:59:44.559> like<00:59:44.799> how<00:59:45.040> it's\nsomething. So you can see like how it's\nsomething. So you can see like how it's treating<00:59:45.599> maybe<00:59:45.920> usually<00:59:46.319> invisible\ntreating maybe usually invisible\ntreating maybe usually invisible characters<00:59:47.280> like<00:59:47.440> new<00:59:47.680> lines<00:59:47.920> or<00:59:48.160> whatever.\ncharacters like new lines or whatever.\ncharacters like new lines or whatever. Um,<00:59:49.440> so<00:59:49.839> this<00:59:50.000> isn't<00:59:50.319> like\nUm, so this isn't like\nUm, so this isn't like uh<00:59:53.520> it's<00:59:53.839> not<00:59:54.079> useless<00:59:54.559> to<00:59:54.720> to<00:59:55.040> look<00:59:55.200> at<00:59:55.280> it\nuh it's not useless to to look at it\nuh it's not useless to to look at it this<00:59:55.680> way.<00:59:56.559> Um,<00:59:57.119> but<00:59:57.280> more<00:59:57.520> often<00:59:57.760> than<00:59:57.920> not,\nthis way. Um, but more often than not,\nthis way. Um, but more often than not, if<00:59:58.319> you're<00:59:58.559> working<00:59:58.799> with<00:59:59.119> textual<00:59:59.599> data,\nif you're working with textual data,\nif you're working with textual data, what<01:00:00.480> you'd<01:00:00.799> really<01:00:01.040> actually<01:00:01.359> prefer<01:00:02.400> is\nwhat you'd really actually prefer is\nwhat you'd really actually prefer is like<01:00:02.880> an<01:00:03.119> actual<01:00:03.520> visual,<01:00:03.920> like<01:00:04.160> just<01:00:04.400> show<01:00:04.559> me\nlike an actual visual, like just show me\nlike an actual visual, like just show me the<01:00:04.960> text.<01:00:05.440> You<01:00:05.520> know<01:00:05.599> what<01:00:05.680> I<01:00:05.839> mean?<01:00:06.640> Um,<01:00:07.359> you\nthe text. You know what I mean? Um, you\nthe text. You know what I mean? Um, you kind<01:00:07.680> of<01:00:07.760> want<01:00:07.920> to<01:00:08.000> just<01:00:08.160> treat<01:00:08.240> it<01:00:08.400> like<01:00:08.480> a\nkind of want to just treat it like a\nkind of want to just treat it like a text<01:00:08.880> file<01:00:09.280> like<01:00:09.440> that.\ntext file like that.\ntext file like that. So,<01:00:12.799> I<01:00:13.040> mean,<01:00:13.200> all<01:00:13.359> three<01:00:13.520> of<01:00:13.599> these\nSo, I mean, all three of these\nSo, I mean, all three of these visualizers<01:00:14.799> might<01:00:14.960> be<01:00:15.119> useful<01:00:15.359> at<01:00:15.520> different\nvisualizers might be useful at different\nvisualizers might be useful at different times.<01:00:16.160> One<01:00:16.319> on<01:00:16.480> the<01:00:16.640> left<01:00:16.960> kind<01:00:17.119> of<01:00:17.200> the<01:00:17.359> odd\ntimes. One on the left kind of the odd\ntimes. One on the left kind of the odd one<01:00:17.680> out<01:00:18.000> kind<01:00:18.160> of<01:00:18.240> sucks<01:00:19.040> usually.<01:00:19.839> Um,<01:00:20.240> not\none out kind of sucks usually. Um, not\none out kind of sucks usually. Um, not not<01:00:20.720> universally.<01:00:21.280> You<01:00:21.440> know,<01:00:21.599> maybe<01:00:21.839> you<01:00:21.920> can\nnot universally. You know, maybe you can\nnot universally. You know, maybe you can imagine<01:00:22.319> the<01:00:22.480> case,<01:00:22.640> but<01:00:22.880> point<01:00:23.119> is<01:00:23.839> all<01:00:24.079> three\nimagine the case, but point is all three\nimagine the case, but point is all three of<01:00:24.400> these<01:00:24.880> different<01:00:25.200> ways<01:00:25.440> of<01:00:25.680> looking<01:00:25.839> at\nof these different ways of looking at\nof these different ways of looking at the<01:00:26.240> same<01:00:26.480> data.<01:00:27.760> Um,<01:00:28.240> same<01:00:28.480> data,<01:00:29.040> same<01:00:29.280> type,\nthe same data. Um, same data, same type,\nthe same data. Um, same data, same type, same<01:00:30.160> format,<01:00:30.880> different<01:00:31.200> visualizations.\nsame format, different visualizations.\nsame format, different visualizations. And<01:00:32.240> importantly,<01:00:33.280> the<01:00:33.520> user's<01:00:33.920> got<01:00:34.000> to<01:00:34.160> be\nAnd importantly, the user's got to be\nAnd importantly, the user's got to be able<01:00:34.400> to<01:00:34.480> choose<01:00:35.119> like<01:00:35.440> as<01:00:35.599> the<01:00:35.760> debugger,\nable to choose like as the debugger,\nable to choose like as the debugger, we've<01:00:36.400> got<01:00:36.480> to<01:00:36.559> provide<01:00:36.720> the<01:00:36.960> the<01:00:37.280> ability<01:00:37.920> for\nwe've got to provide the the ability for\nwe've got to provide the the ability for the<01:00:38.319> user<01:00:38.640> to<01:00:38.880> pick<01:00:39.280> between<01:00:39.520> these<01:00:39.839> three\nthe user to pick between these three\nthe user to pick between these three things.<01:00:40.400> We<01:00:40.640> can't<01:00:40.960> enforce<01:00:41.359> it<01:00:41.520> on<01:00:41.760> them,<01:00:42.799> you\nthings. We can't enforce it on them, you\nthings. We can't enforce it on them, you know,<01:00:43.359> given<01:00:43.599> the<01:00:43.760> type<01:00:43.920> info<01:00:44.240> or<01:00:44.480> something.\nknow, given the type info or something.\nknow, given the type info or something. Um,<01:00:47.920> okay.<01:00:48.720> So,<01:00:50.000> so<01:00:50.160> far<01:00:50.319> I've<01:00:50.559> covered<01:00:50.720> these\nUm, okay. So, so far I've covered these\nUm, okay. So, so far I've covered these three<01:00:51.200> steps.<01:00:52.000> We've<01:00:52.240> got<01:00:52.319> the<01:00:52.480> compiler,<01:00:53.440> got\nthree steps. We've got the compiler, got\nthree steps. We've got the compiler, got the<01:00:53.839> interpreter,<01:00:54.640> uh,<01:00:54.720> and<01:00:54.960> then<01:00:55.040> we've<01:00:55.280> got\nthe interpreter, uh, and then we've got\nthe interpreter, uh, and then we've got the<01:00:55.760> or,<01:00:56.160> you<01:00:56.319> know,<01:00:56.400> or<01:00:56.640> a<01:00:56.799> virtual<01:00:57.119> machine\nthe or, you know, or a virtual machine\nthe or, you know, or a virtual machine or<01:00:57.680> CPU<01:00:58.079> or<01:00:58.319> whatever.<01:00:59.119> And<01:00:59.200> then<01:00:59.359> we've<01:00:59.520> got\nor CPU or whatever. And then we've got\nor CPU or whatever. And then we've got the<01:00:59.760> windowed<01:01:00.079> watch<01:01:00.400> tree<01:01:00.640> build<01:01:01.119> down<01:01:01.359> here.\nthe windowed watch tree build down here.\nthe windowed watch tree build down here. The<01:01:03.839> final<01:01:04.079> missing<01:01:04.480> piece<01:01:04.640> of<01:01:04.799> this<01:01:06.079> is\nThe final missing piece of this is\nThe final missing piece of this is you've<01:01:07.040> got<01:01:07.520> uh\nyou've got uh\nyou've got uh the<01:01:09.839> watch<01:01:10.079> tree<01:01:10.319> build<01:01:10.559> and<01:01:10.720> you've<01:01:10.880> got<01:01:10.960> to\nthe watch tree build and you've got to\nthe watch tree build and you've got to produce<01:01:11.359> some<01:01:11.599> UI<01:01:11.920> for<01:01:12.000> it,<01:01:12.160> right?<01:01:12.319> You've\nproduce some UI for it, right? You've\nproduce some UI for it, right? You've got<01:01:12.559> a<01:01:12.640> list<01:01:12.799> of<01:01:12.880> final<01:01:13.119> evaluations<01:01:13.680> you<01:01:13.839> get\ngot a list of final evaluations you get\ngot a list of final evaluations you get out<01:01:14.079> of<01:01:14.160> this,<01:01:14.480> got<01:01:14.640> to<01:01:14.799> produce<01:01:14.960> a<01:01:15.119> UI<01:01:15.359> for<01:01:15.520> it.\nout of this, got to produce a UI for it.\nout of this, got to produce a UI for it. Um,\nUm,\nUm, now<01:01:19.599> started<01:01:20.000> by<01:01:20.160> introducing<01:01:20.480> the<01:01:20.720> most\nnow started by introducing the most\nnow started by introducing the most basic<01:01:21.119> one.<01:01:21.680> You<01:01:21.920> produce<01:01:22.160> a<01:01:22.240> textual\nbasic one. You produce a textual\nbasic one. You produce a textual representation<01:01:23.359> for<01:01:23.599> each<01:01:23.760> valuation.<01:01:24.319> Put\nrepresentation for each valuation. Put\nrepresentation for each valuation. Put them<01:01:24.480> in<01:01:24.640> a<01:01:24.799> put<01:01:25.040> them<01:01:25.119> in<01:01:25.200> a<01:01:25.359> little<01:01:25.520> watch\nthem in a put them in a little watch\nthem in a put them in a little watch window<01:01:26.079> UI.<01:01:26.799> That's<01:01:27.040> fine.<01:01:27.599> Um,<01:01:28.000> the<01:01:28.160> UI<01:01:28.480> build\nwindow UI. That's fine. Um, the UI build\nwindow UI. That's fine. Um, the UI build for<01:01:28.880> that<01:01:29.040> is<01:01:29.200> not<01:01:29.440> like<01:01:30.079> conceptually\nfor that is not like conceptually\nfor that is not like conceptually difficult.<01:01:31.119> It's<01:01:31.440> like<01:01:32.000> an<01:01:32.240> Excel<01:01:33.119> cell<01:01:33.520> like\ndifficult. It's like an Excel cell like\ndifficult. It's like an Excel cell like it's<01:01:34.079> just<01:01:34.240> like<01:01:34.400> Excel<01:01:34.720> for<01:01:34.880> your<01:01:35.040> program\nit's just like Excel for your program\nit's just like Excel for your program data.<01:01:36.240> Um,<01:01:36.720> the<01:01:36.960> full<01:01:37.119> watchman<01:01:37.520> is<01:01:37.680> just<01:01:37.839> like\ndata. Um, the full watchman is just like\ndata. Um, the full watchman is just like a<01:01:38.160> table<01:01:38.480> of<01:01:38.720> those<01:01:38.880> cells.<01:01:39.520> Um,\na table of those cells. Um,\na table of those cells. Um, you<01:01:41.359> know,<01:01:41.839> first<01:01:42.319> first<01:01:42.640> cell<01:01:42.880> would<01:01:43.119> be<01:01:43.200> the\nyou know, first first cell would be the\nyou know, first first cell would be the string<01:01:43.839> representing<01:01:44.319> the<01:01:44.559> expression.\nstring representing the expression.\nstring representing the expression. Second<01:01:45.599> cell<01:01:45.839> would<01:01:46.000> be<01:01:46.079> the<01:01:46.160> string\nSecond cell would be the string\nSecond cell would be the string representing<01:01:47.119> the<01:01:47.280> the<01:01:47.760> value.<01:01:48.480> Third<01:01:48.720> would\nrepresenting the the value. Third would\nrepresenting the the value. Third would be<01:01:49.040> the<01:01:49.200> type<01:01:49.920> and<01:01:50.000> and<01:01:50.400> so<01:01:50.559> on.\nbe the type and and so on.\nbe the type and and so on. Um\nUm\nUm but<01:01:56.160> it's<01:01:56.480> at<01:01:56.640> this<01:01:56.799> stage<01:01:57.040> that<01:01:57.280> other\nbut it's at this stage that other\nbut it's at this stage that other visualizers<01:01:58.160> can<01:01:58.319> actually<01:01:58.559> slot<01:01:58.880> in.<01:01:59.280> Right?\nvisualizers can actually slot in. Right?\nvisualizers can actually slot in. Right? If<01:01:59.599> we<01:01:59.760> want<01:01:59.839> to<01:02:00.000> take<01:02:00.240> that<01:02:00.559> path<01:02:01.119> and\nIf we want to take that path and\nIf we want to take that path and override<01:02:01.839> it<01:02:02.000> to<01:02:02.160> do<01:02:02.319> something<01:02:02.559> else,<01:02:03.040> here's\noverride it to do something else, here's\noverride it to do something else, here's where<01:02:03.440> we<01:02:03.760> actually<01:02:04.000> do<01:02:04.160> that.<01:02:04.559> So<01:02:04.880> instead<01:02:06.079> of\nwhere we actually do that. So instead of\nwhere we actually do that. So instead of taking<01:02:06.720> our<01:02:07.040> evaluations,\ntaking our evaluations,\ntaking our evaluations, feeding<01:02:09.040> them<01:02:09.200> into<01:02:09.359> a<01:02:09.520> value<01:02:09.839> string<01:02:10.640> text\nfeeding them into a value string text\nfeeding them into a value string text generator,\ngenerator,\ngenerator, we<01:02:13.520> could<01:02:13.599> also<01:02:13.839> feed<01:02:14.079> it<01:02:14.480> into<01:02:14.720> a<01:02:14.880> bit<01:02:15.119> map\nwe could also feed it into a bit map\nwe could also feed it into a bit map visualizer.<01:02:16.720> Oh<01:02:17.040> no,<01:02:18.160> 3D<01:02:18.559> geometry\nvisualizer. Oh no, 3D geometry\nvisualizer. Oh no, 3D geometry visualizer,<01:02:19.680> disassembly<01:02:20.240> visualizer,\nvisualizer, disassembly visualizer,\nvisualizer, disassembly visualizer, pointer<01:02:20.960> graph<01:02:21.200> visualizer,<01:02:21.599> right?<01:02:21.839> Or\npointer graph visualizer, right? Or\npointer graph visualizer, right? Or anything<01:02:22.480> you<01:02:22.640> can<01:02:22.799> think<01:02:22.880> of.<01:02:23.119> This<01:02:23.200> is<01:02:23.359> where\nanything you can think of. This is where\nanything you can think of. This is where it<01:02:23.520> would<01:02:23.680> slot<01:02:23.920> in<01:02:24.160> here.\nit would slot in here.\nit would slot in here. Um,<01:02:27.839> so<01:02:28.000> the<01:02:28.160> way<01:02:28.240> I<01:02:28.400> think<01:02:28.559> about<01:02:28.720> this<01:02:29.040> is\nUm, so the way I think about this is\nUm, so the way I think about this is that<01:02:29.520> all<01:02:29.680> of<01:02:29.839> these<01:02:30.079> different<01:02:30.240> visualizers\nthat all of these different visualizers\nthat all of these different visualizers are<01:02:31.200> sort<01:02:31.359> of<01:02:31.440> just<01:02:31.599> different<01:02:31.920> like<01:02:32.079> lenses\nare sort of just different like lenses\nare sort of just different like lenses into<01:02:32.799> our<01:02:32.960> data,<01:02:33.520> right?<01:02:33.680> you<01:02:33.920> can<01:02:34.079> just<01:02:34.240> take\ninto our data, right? you can just take\ninto our data, right? you can just take an<01:02:34.559> evaluation<01:02:35.040> and<01:02:35.359> view<01:02:35.599> it<01:02:35.839> like<01:02:36.400> literally\nan evaluation and view it like literally\nan evaluation and view it like literally like<01:02:36.960> a<01:02:37.200> physical<01:02:37.599> lens,<01:02:38.000> right?<01:02:38.400> Um<01:02:38.720> it's\nlike a physical lens, right? Um it's\nlike a physical lens, right? Um it's changing<01:02:39.280> how<01:02:39.440> you're<01:02:39.680> looking<01:02:39.839> at<01:02:40.079> it.<01:02:40.960> So<01:02:41.599> 64\nchanging how you're looking at it. So 64\nchanging how you're looking at it. So 64 megabyte<01:02:42.400> buffer<01:02:42.720> can<01:02:42.799> be<01:02:42.960> viewed<01:02:43.200> in<01:02:43.440> many\nmegabyte buffer can be viewed in many\nmegabyte buffer can be viewed in many ways.<01:02:45.040> It<01:02:45.200> can<01:02:45.359> be<01:02:45.440> viewed<01:02:45.599> through<01:02:45.680> a<01:02:45.839> bit<01:02:46.079> map\nways. It can be viewed through a bit map\nways. It can be viewed through a bit map lens,\nlens,\nlens, a<01:02:48.160> hex<01:02:48.400> editor<01:02:48.799> lens.<01:02:49.760> No,<01:02:50.240> please<01:02:50.559> stop<01:02:50.799> doing\na hex editor lens. No, please stop doing\na hex editor lens. No, please stop doing that<01:02:51.599> dude.\nthat dude.\nthat dude. Uh<01:02:53.520> or<01:02:53.680> a<01:02:53.839> text<01:02:54.000> editor<01:02:54.400> lens<01:02:54.880> or<01:02:55.200> you<01:02:55.280> know\nUh or a text editor lens or you know\nUh or a text editor lens or you know many<01:02:55.839> other<01:02:56.000> possible<01:02:56.400> things.\nmany other possible things.\nmany other possible things. Now<01:02:58.559> a<01:02:58.799> complication<01:02:59.359> arises\nNow a complication arises\nNow a complication arises which<01:03:02.000> is<01:03:02.079> that<01:03:02.319> not<01:03:02.480> all<01:03:02.640> the<01:03:02.799> information<01:03:03.119> to\nwhich is that not all the information to\nwhich is that not all the information to actually<01:03:03.520> produce<01:03:03.760> a<01:03:03.920> visualization<01:03:04.559> is\nactually produce a visualization is\nactually produce a visualization is present<01:03:05.200> inside<01:03:05.520> of<01:03:05.599> the<01:03:05.760> evaluation.<01:03:06.319> Right?\npresent inside of the evaluation. Right?\npresent inside of the evaluation. Right? If<01:03:06.799> I<01:03:06.880> want<01:03:07.040> to<01:03:07.119> visualize<01:03:07.440> a<01:03:07.520> bit<01:03:07.760> map<01:03:08.480> what\nIf I want to visualize a bit map what\nIf I want to visualize a bit map what dimensions<01:03:09.119> am<01:03:09.280> I<01:03:09.440> talking<01:03:09.599> about?<01:03:09.760> Like<01:03:10.000> what\ndimensions am I talking about? Like what\ndimensions am I talking about? Like what what<01:03:10.480> are<01:03:10.559> the<01:03:10.640> dimensions<01:03:10.960> of<01:03:11.040> the<01:03:11.119> bit<01:03:11.359> map?\nwhat are the dimensions of the bit map?\nwhat are the dimensions of the bit map? What<01:03:11.760> format<01:03:12.160> is<01:03:12.319> the<01:03:12.480> data<01:03:12.640> encoded<01:03:13.119> in?<01:03:13.599> Um\nWhat format is the data encoded in? Um\nWhat format is the data encoded in? Um if<01:03:14.079> I'm<01:03:14.319> looking<01:03:14.480> at<01:03:14.640> geometry<01:03:15.280> is<01:03:15.440> this<01:03:15.760> like\nif I'm looking at geometry is this like\nif I'm looking at geometry is this like vertices<01:03:17.280> or<01:03:17.599> indices<01:03:18.000> or<01:03:18.240> what<01:03:18.319> is<01:03:18.480> it?<01:03:18.720> What\nvertices or indices or what is it? What\nvertices or indices or what is it? What topology<01:03:19.440> is<01:03:19.599> the<01:03:19.839> geometry?<01:03:20.559> What's<01:03:20.720> the\ntopology is the geometry? What's the\ntopology is the geometry? What's the vertex<01:03:21.359> format?<01:03:21.760> Like<01:03:22.000> how<01:03:22.160> are<01:03:22.240> these<01:03:22.480> things\nvertex format? Like how are these things\nvertex format? Like how are these things laid<01:03:23.119> out<01:03:23.680> actually?<01:03:24.160> How's<01:03:24.400> the<01:03:24.559> different\nlaid out actually? How's the different\nlaid out actually? How's the different information<01:03:25.119> laid<01:03:25.440> out<01:03:25.760> with<01:03:26.079> disassembly?\ninformation laid out with disassembly?\ninformation laid out with disassembly? uh<01:03:27.200> what<01:03:27.359> architecture,<01:03:28.000> what<01:03:28.160> syntax,<01:03:28.720> how\nuh what architecture, what syntax, how\nuh what architecture, what syntax, how many<01:03:28.960> bytes<01:03:29.359> do<01:03:29.599> I<01:03:29.680> want<01:03:29.760> to<01:03:29.920> pull<01:03:30.079> down<01:03:30.559> and\nmany bytes do I want to pull down and\nmany bytes do I want to pull down and actually<01:03:31.039> visualize?<01:03:32.480> Um<01:03:33.680> and<01:03:33.920> so<01:03:34.079> note<01:03:34.319> that\nactually visualize? Um and so note that\nactually visualize? Um and so note that all<01:03:34.640> of<01:03:34.720> these<01:03:34.960> questions<01:03:35.280> are<01:03:35.440> like<01:03:35.599> highly\nall of these questions are like highly\nall of these questions are like highly specific.<01:03:36.400> They're<01:03:36.640> parameterizations<01:03:37.599> to\nspecific. They're parameterizations to\nspecific. They're parameterizations to the<01:03:38.000> visualizer.<01:03:39.359> Um\nthe visualizer. Um\nthe visualizer. Um uh<01:03:41.839> they're<01:03:42.000> also<01:03:42.240> the<01:03:42.400> kinds<01:03:42.559> of<01:03:42.640> things<01:03:42.799> that\nuh they're also the kinds of things that\nuh they're also the kinds of things that a<01:03:43.200> user<01:03:43.599> probably<01:03:44.079> wants<01:03:44.319> to<01:03:44.480> explicitly\na user probably wants to explicitly\na user probably wants to explicitly express.\nOkay.\nOkay.\nOkay. Um<01:03:52.319> so<01:03:52.880> to<01:03:53.200> solve<01:03:53.359> this<01:03:53.599> problem<01:03:54.240> we<01:03:54.480> need<01:03:54.559> to\nUm so to solve this problem we need to\nUm so to solve this problem we need to have<01:03:54.880> some<01:03:55.119> way<01:03:55.359> of<01:03:56.079> obtaining<01:03:56.480> from<01:03:56.720> the<01:03:56.880> user\nhave some way of obtaining from the user\nhave some way of obtaining from the user a<01:03:57.599> choice<01:03:57.839> of<01:03:58.000> visualizer<01:03:58.880> and<01:03:59.119> a<01:03:59.280> choice<01:03:59.440> of\na choice of visualizer and a choice of\na choice of visualizer and a choice of all<01:03:59.680> that<01:03:59.839> visualizer's<01:04:00.559> options<01:04:01.680> um<01:04:01.839> for\nall that visualizer's options um for\nall that visualizer's options um for some<01:04:02.240> evaluation.<01:04:03.119> So<01:04:03.359> if<01:04:03.520> I've<01:04:03.760> got<01:04:03.839> this\nsome evaluation. So if I've got this\nsome evaluation. So if I've got this buffer<01:04:04.640> evaluation\nbuffer evaluation\nbuffer evaluation and<01:04:06.400> it's<01:04:06.640> array<01:04:06.880> of<01:04:07.039> 64<01:04:07.440> million<01:04:07.760> u8s<01:04:08.640> I<01:04:09.039> need\nand it's array of 64 million u8s I need\nand it's array of 64 million u8s I need to<01:04:09.359> somehow<01:04:09.760> tag<01:04:10.079> it.<01:04:10.319> I<01:04:10.480> need<01:04:10.640> to<01:04:10.720> somehow\nto somehow tag it. I need to somehow\nto somehow tag it. I need to somehow like<01:04:11.440> take<01:04:11.680> that<01:04:12.079> evaluation<01:04:12.559> to<01:04:12.720> just<01:04:12.799> like\nlike take that evaluation to just like\nlike take that evaluation to just like tack<01:04:13.280> some<01:04:13.440> information<01:04:13.760> on<01:04:13.920> that's<01:04:14.160> like<01:04:14.400> by\ntack some information on that's like by\ntack some information on that's like by the<01:04:14.640> way<01:04:15.119> I<01:04:15.280> want<01:04:15.359> to<01:04:15.440> look<01:04:15.520> at<01:04:15.680> this<01:04:15.760> as<01:04:15.920> a<01:04:16.000> bit\nthe way I want to look at this as a bit\nthe way I want to look at this as a bit map<01:04:17.359> by24<01:04:18.079> RGBA88<01:04:19.119> or<01:04:19.359> something.\nmap by24 RGBA88 or something.\nmap by24 RGBA88 or something. Lucky<01:04:22.000> for<01:04:22.160> us<01:04:22.559> there's<01:04:22.799> already<01:04:22.960> a<01:04:23.200> way<01:04:23.359> to\nLucky for us there's already a way to\nLucky for us there's already a way to tag<01:04:23.760> an<01:04:23.920> evaluation<01:04:25.039> and<01:04:25.280> that's<01:04:25.440> with<01:04:25.599> type\ntag an evaluation and that's with type\ntag an evaluation and that's with type info.\ninfo.\ninfo. So<01:04:28.480> we<01:04:28.720> can<01:04:28.799> use<01:04:29.039> type<01:04:29.359> info<01:04:29.920> to<01:04:30.240> express<01:04:30.640> all\nSo we can use type info to express all\nSo we can use type info to express all of<01:04:30.960> these<01:04:31.200> visualizer<01:04:31.920> decisions.<01:04:32.880> Um<01:04:33.680> so<01:04:34.799> we\nof these visualizer decisions. Um so we\nof these visualizer decisions. Um so we already<01:04:35.280> have<01:04:35.440> paths<01:04:35.760> that<01:04:35.920> rely<01:04:36.160> on<01:04:36.319> type\nalready have paths that rely on type\nalready have paths that rely on type info,<01:04:36.960> right?<01:04:37.119> Remember<01:04:37.440> when<01:04:37.599> I<01:04:37.760> turned<01:04:37.920> it\ninfo, right? Remember when I turned it\ninfo, right? Remember when I turned it into<01:04:38.240> a<01:04:38.400> string,<01:04:38.799> I<01:04:38.960> had<01:04:39.119> to<01:04:39.280> like<01:04:39.440> look<01:04:39.520> at<01:04:39.599> the\ninto a string, I had to like look at the\ninto a string, I had to like look at the type<01:04:40.000> info<01:04:40.559> and<01:04:40.880> see<01:04:41.119> like<01:04:41.359> what<01:04:41.599> case<01:04:41.839> I\ntype info and see like what case I\ntype info and see like what case I wanted<01:04:42.160> to<01:04:42.400> actually<01:04:42.640> do.<01:04:43.680> Not<01:04:44.000> really<01:04:44.160> that\nwanted to actually do. Not really that\nwanted to actually do. Not really that much<01:04:44.559> different,<01:04:44.799> right?<01:04:45.039> I<01:04:45.200> can<01:04:45.359> just<01:04:45.680> say\nmuch different, right? I can just say\nmuch different, right? I can just say like<01:04:46.160> the<01:04:46.319> type<01:04:46.480> is<01:04:46.640> going<01:04:46.720> to<01:04:46.799> somehow\nlike the type is going to somehow\nlike the type is going to somehow express<01:04:47.520> this<01:04:47.920> and<01:04:48.079> then<01:04:48.240> we<01:04:48.400> can<01:04:48.480> choose\nexpress this and then we can choose\nexpress this and then we can choose visualizers<01:04:49.440> based<01:04:49.680> on<01:04:49.839> that.<01:04:51.200> So<01:04:52.319> how<01:04:52.480> do<01:04:52.640> we\nvisualizers based on that. So how do we\nvisualizers based on that. So how do we extend<01:04:52.960> the<01:04:53.039> type<01:04:53.280> info<01:04:53.599> to<01:04:53.760> do<01:04:53.920> that?<01:04:54.640> Um<01:04:55.039> so\nextend the type info to do that? Um so\nextend the type info to do that? Um so the<01:04:55.599> buffer<01:04:56.000> type<01:04:56.240> you<01:04:56.400> can<01:04:56.480> imagine<01:04:56.960> buffer\nthe buffer type you can imagine buffer\nthe buffer type you can imagine buffer could<01:04:57.599> be<01:04:57.680> like<01:04:57.760> a<01:04:57.920> local<01:04:58.160> variable<01:04:58.559> or<01:04:58.799> or\ncould be like a local variable or or\ncould be like a local variable or or probably<01:04:59.280> not<01:04:59.599> 64<01:04:59.920> megabytes<01:05:00.720> global\nprobably not 64 megabytes global\nprobably not 64 megabytes global variable.<01:05:01.839> uh<01:05:01.920> its<01:05:02.240> type<01:05:02.400> is<01:05:02.559> a<01:05:02.799> you<01:05:02.960> know<01:05:03.119> 64\nvariable. uh its type is a you know 64\nvariable. uh its type is a you know 64 megabyte<01:05:04.000> array<01:05:04.559> of<01:05:04.720> U8s.\nSo<01:05:08.480> all<01:05:08.640> we<01:05:08.799> have<01:05:08.880> to<01:05:08.960> do<01:05:09.119> is<01:05:09.280> extend<01:05:09.599> our\nSo all we have to do is extend our\nSo all we have to do is extend our visual<01:05:10.240> uh<01:05:10.319> our<01:05:10.559> evaluation<01:05:11.200> language<01:05:12.240> to<01:05:12.559> be\nvisual uh our evaluation language to be\nvisual uh our evaluation language to be able<01:05:12.880> to<01:05:13.200> extend<01:05:13.520> that<01:05:13.680> type<01:05:14.000> information.\nable to extend that type information.\nable to extend that type information. Conceptually<01:05:15.359> it's<01:05:15.520> almost<01:05:15.760> like<01:05:15.920> just<01:05:16.079> a<01:05:16.799> uh\nConceptually it's almost like just a uh\nConceptually it's almost like just a uh it's<01:05:17.119> actually<01:05:17.359> not<01:05:17.599> just<01:05:17.760> a<01:05:17.920> cast.<01:05:18.240> It's<01:05:18.480> sort\nit's actually not just a cast. It's sort\nit's actually not just a cast. It's sort of<01:05:18.640> like<01:05:18.799> a<01:05:19.440> it's<01:05:20.000> it's<01:05:20.240> sort<01:05:20.400> of<01:05:20.799> appending<01:05:21.200> on\nof like a it's it's sort of appending on\nof like a it's it's sort of appending on to<01:05:21.440> the<01:05:21.599> type<01:05:21.839> operators<01:05:22.240> if<01:05:22.400> that<01:05:22.559> makes\nto the type operators if that makes\nto the type operators if that makes sense.<01:05:23.280> I<01:05:23.520> guess<01:05:23.599> it<01:05:23.760> is<01:05:23.920> sort<01:05:24.000> of<01:05:24.079> a<01:05:24.240> kind<01:05:24.400> of\nsense. I guess it is sort of a kind of\nsense. I guess it is sort of a kind of cast.<01:05:24.960> take<01:05:25.440> take<01:05:25.680> the<01:05:26.000> 64<01:05:26.400> megabyte<01:05:27.039> array<01:05:27.440> of\ncast. take take the 64 megabyte array of\ncast. take take the 64 megabyte array of U8s<01:05:28.160> and<01:05:28.240> then<01:05:28.319> you<01:05:28.480> sort<01:05:28.640> of<01:05:28.720> cast<01:05:29.039> it<01:05:29.200> to\nU8s and then you sort of cast it to\nU8s and then you sort of cast it to bitmap<01:05:30.960> type<01:05:32.000> special<01:05:32.400> type<01:05:32.799> which<01:05:33.119> points<01:05:33.520> to\nbitmap type special type which points to\nbitmap type special type which points to that<01:05:34.640> type<01:05:35.119> right\nthat type right\nthat type right um<01:05:37.760> so<01:05:38.240> like<01:05:38.480> if<01:05:38.720> we<01:05:38.880> look<01:05:38.960> at<01:05:39.119> this<01:05:39.280> expression\num so like if we look at this expression\num so like if we look at this expression down<01:05:39.839> here<01:05:40.079> you've<01:05:40.319> got<01:05:40.480> like<01:05:40.640> this<01:05:40.880> bit<01:05:41.200> map\ndown here you've got like this bit map\ndown here you've got like this bit map call<01:05:41.839> it's<01:05:42.000> like<01:05:42.240> looks<01:05:42.400> like<01:05:42.480> a<01:05:42.640> function\ncall it's like looks like a function\ncall it's like looks like a function call<01:05:43.760> you<01:05:43.920> know<01:05:44.079> bit<01:05:44.400> map<01:05:44.640> and<01:05:44.799> then<01:05:44.960> you've\ncall you know bit map and then you've\ncall you know bit map and then you've got<01:05:45.280> some<01:05:45.440> buffer<01:05:46.000> and<01:05:46.160> then<01:05:46.319> the\ngot some buffer and then the\ngot some buffer and then the parameterizations<01:05:47.200> of<01:05:47.359> the<01:05:47.440> bitmap\nparameterizations of the bitmap\nparameterizations of the bitmap visualizer<01:05:48.960> that's<01:05:49.200> just<01:05:49.359> a<01:05:49.520> type<01:05:49.760> now<01:05:50.240> or\nvisualizer that's just a type now or\nvisualizer that's just a type now or that<01:05:50.640> that<01:05:51.039> implies<01:05:51.520> that<01:05:51.680> the<01:05:51.839> type<01:05:52.160> turns\nthat that implies that the type turns\nthat that implies that the type turns into<01:05:52.640> this\nSo<01:05:58.559> in<01:05:58.720> one<01:05:58.960> step<01:06:00.000> we've<01:06:00.559> uh<01:06:00.640> allowed<01:06:00.880> our\nSo in one step we've uh allowed our\nSo in one step we've uh allowed our expression<01:06:01.440> language<01:06:01.760> to<01:06:02.640> express<01:06:02.720> express\nexpression language to express express\nexpression language to express express both<01:06:03.359> a<01:06:03.599> choice<01:06:03.760> of<01:06:03.920> visualizer<01:06:04.799> and<01:06:05.039> any<01:06:05.280> set\nboth a choice of visualizer and any set\nboth a choice of visualizer and any set of<01:06:05.599> arguments<01:06:05.920> to<01:06:06.079> that<01:06:06.240> visualizer.<01:06:06.960> So<01:06:07.119> our\nof arguments to that visualizer. So our\nof arguments to that visualizer. So our UI<01:06:07.680> build<01:06:08.160> by<01:06:08.400> looking<01:06:08.640> at<01:06:08.720> the<01:06:08.880> type\nUI build by looking at the type\nUI build by looking at the type information<01:06:10.160> can<01:06:10.400> then<01:06:10.559> decide\ninformation can then decide\ninformation can then decide appropriately<01:06:11.359> on<01:06:11.520> the<01:06:11.680> visualizer<01:06:12.160> path\nappropriately on the visualizer path\nappropriately on the visualizer path like<01:06:13.280> do<01:06:13.440> I<01:06:13.599> have<01:06:13.680> a<01:06:13.839> visualizer<01:06:14.319> type\nlike do I have a visualizer type\nlike do I have a visualizer type operator<01:06:14.880> or<01:06:15.039> do<01:06:15.200> I<01:06:15.359> not?\noperator or do I not?\noperator or do I not? Um,\nUm,\nUm, so<01:06:20.000> our<01:06:20.240> visualizers<01:06:20.799> fill<01:06:21.039> this<01:06:21.200> part<01:06:21.440> out,\nso our visualizers fill this part out,\nso our visualizers fill this part out, right?<01:06:22.000> We've<01:06:22.240> got<01:06:22.319> some<01:06:22.559> evaluation.<01:06:23.440> We\nright? We've got some evaluation. We\nright? We've got some evaluation. We produce<01:06:23.839> a<01:06:24.000> UI.\nproduce a UI.\nproduce a UI. Pretty<01:06:25.839> pretty<01:06:26.160> straightforward<01:06:26.960> hopefully.\nPretty pretty straightforward hopefully.\nPretty pretty straightforward hopefully. Um,\nUm,\nUm, and<01:06:30.079> recall<01:06:30.400> that<01:06:30.720> an<01:06:30.880> evaluation<01:06:31.359> implies<01:06:32.000> an\nand recall that an evaluation implies an\nand recall that an evaluation implies an abstract<01:06:32.640> syntax<01:06:32.960> tree,<01:06:33.119> an<01:06:33.280> intermediate\nabstract syntax tree, an intermediate\nabstract syntax tree, an intermediate representation,<01:06:34.480> a<01:06:34.720> type,<01:06:35.200> and<01:06:35.440> a<01:06:35.599> value.\nrepresentation, a type, and a value.\nrepresentation, a type, and a value. And<01:06:37.680> the<01:06:37.839> type<01:06:38.400> implies<01:06:38.799> all<01:06:38.960> the<01:06:39.119> opt<01:06:39.599> uh<01:06:39.680> all\nAnd the type implies all the opt uh all\nAnd the type implies all the opt uh all the<01:06:40.000> options<01:06:40.319> for<01:06:40.480> the<01:06:40.640> visualizers.\nUm,\nUm,\nUm, so<01:06:45.680> now,<01:06:46.000> okay,<01:06:46.480> let's<01:06:46.720> back<01:06:46.960> up.\nso now, okay, let's back up.\nso now, okay, let's back up. got<01:06:49.119> these<01:06:49.359> lenses.<01:06:49.920> We<01:06:50.160> can<01:06:50.240> extend<01:06:50.559> type\ngot these lenses. We can extend type\ngot these lenses. We can extend type information<01:06:51.280> to<01:06:51.520> include<01:06:52.400> arbitrary\ninformation to include arbitrary\ninformation to include arbitrary visualiz<01:06:53.599> uh<01:06:53.760> visualizer\nvisualiz uh visualizer\nvisualiz uh visualizer parameterizations.<01:06:55.760> Uh<01:06:56.240> let's<01:06:56.559> take<01:06:56.720> them<01:06:56.880> a\nparameterizations. Uh let's take them a\nparameterizations. Uh let's take them a little<01:06:57.200> bit<01:06:57.359> further.\nlittle bit further.\nlittle bit further. Uh<01:06:59.680> so<01:06:59.839> let's<01:07:00.000> imagine<01:07:00.319> types<01:07:00.720> like<01:07:00.880> this.\nUh so let's imagine types like this.\nUh so let's imagine types like this. You've<01:07:01.680> got<01:07:02.079> you<01:07:02.240> know<01:07:02.480> f<01:07:02.720> this<01:07:02.880> is<01:07:03.039> very\nYou've got you know f this is very\nYou've got you know f this is very common<01:07:03.520> in<01:07:03.760> C<01:07:04.079> code<01:07:04.319> bases<01:07:04.799> because<01:07:05.039> we<01:07:05.359> don't\ncommon in C code bases because we don't\ncommon in C code bases because we don't have<01:07:05.920> nice<01:07:06.160> things<01:07:06.319> in<01:07:06.559> C.<01:07:07.039> You've<01:07:07.200> got\nhave nice things in C. You've got\nhave nice things in C. You've got strruct<01:07:07.760> fu<01:07:08.000> slice.<01:07:08.720> You<01:07:08.880> got<01:07:08.960> a<01:07:09.119> pointer<01:07:09.440> and\nstrruct fu slice. You got a pointer and\nstrruct fu slice. You got a pointer and some<01:07:09.839> count.<01:07:10.480> or<01:07:10.720> if<01:07:10.880> I've<01:07:11.039> got<01:07:11.119> a<01:07:11.359> list<01:07:11.599> like\nsome count. or if I've got a list like\nsome count. or if I've got a list like strruct<01:07:12.240> fu<01:07:12.559> node<01:07:13.280> pointer<01:07:13.680> to<01:07:13.839> the<01:07:14.000> next<01:07:14.079> node\nstrruct fu node pointer to the next node\nstrruct fu node pointer to the next node and<01:07:14.480> then<01:07:14.559> and<01:07:14.799> then<01:07:14.880> a<01:07:15.119> member<01:07:15.359> with<01:07:15.520> the\nand then and then a member with the\nand then and then a member with the actual<01:07:16.000> data.<01:07:17.280> Um<01:07:18.720> so<01:07:18.880> given<01:07:19.200> the<01:07:19.359> given<01:07:19.680> the\nactual data. Um so given the given the\nactual data. Um so given the given the current<01:07:20.160> sort<01:07:20.319> of<01:07:20.400> type<01:07:20.640> info<01:07:21.039> visualization\ncurrent sort of type info visualization\ncurrent sort of type info visualization rules<01:07:22.079> you<01:07:22.240> put<01:07:22.400> that<01:07:22.480> into<01:07:22.640> the<01:07:22.799> watch<01:07:23.039> window\nrules you put that into the watch window\nrules you put that into the watch window you're<01:07:23.440> like<01:07:23.599> great<01:07:23.839> I'm<01:07:24.079> going<01:07:24.160> to<01:07:24.240> visualize\nyou're like great I'm going to visualize\nyou're like great I'm going to visualize my<01:07:24.880> dynamic<01:07:25.280> array<01:07:25.599> today<01:07:26.160> you<01:07:26.319> expand<01:07:26.640> it<01:07:26.960> and\nmy dynamic array today you expand it and\nmy dynamic array today you expand it and you've<01:07:27.280> got<01:07:27.440> two<01:07:27.599> members<01:07:27.920> it's<01:07:28.079> like<01:07:28.240> v<01:07:28.480> and\nyou've got two members it's like v and\nyou've got two members it's like v and count<01:07:28.960> and<01:07:29.200> then<01:07:29.280> you<01:07:29.520> expand<01:07:29.839> v<01:07:30.079> and<01:07:30.240> it's\ncount and then you expand v and it's\ncount and then you expand v and it's like<01:07:30.640> one<01:07:31.200> thing<01:07:31.520> and<01:07:31.680> you're<01:07:31.920> like<01:07:32.319> what<01:07:32.640> what\nlike one thing and you're like what what\nlike one thing and you're like what what what<01:07:33.200> is<01:07:33.359> that?<01:07:33.680> Same<01:07:33.920> thing<01:07:34.079> with<01:07:34.160> the<01:07:34.319> link\nwhat is that? Same thing with the link\nwhat is that? Same thing with the link list.<01:07:34.799> you<01:07:35.119> like<01:07:35.440> put<01:07:35.680> in<01:07:35.839> the<01:07:36.000> first<01:07:36.319> the<01:07:36.559> head\nlist. you like put in the first the head\nlist. you like put in the first the head of<01:07:36.799> the<01:07:36.960> link<01:07:37.200> list,<01:07:37.839> you<01:07:38.000> expand<01:07:38.319> it<01:07:38.720> and<01:07:38.960> then\nof the link list, you expand it and then\nof the link list, you expand it and then you<01:07:39.200> can<01:07:39.280> actually<01:07:39.599> recursively<01:07:40.240> expand<01:07:40.480> it.\nyou can actually recursively expand it.\nyou can actually recursively expand it. But<01:07:40.960> like<01:07:41.200> in<01:07:41.440> your<01:07:41.680> head<01:07:41.920> a<01:07:42.160> list<01:07:42.400> is<01:07:42.640> flat<01:07:43.280> and\nBut like in your head a list is flat and\nBut like in your head a list is flat and then<01:07:43.760> everyone's<01:07:44.559> everyone's<01:07:45.039> like<01:07:45.280> who's\nthen everyone's everyone's like who's\nthen everyone's everyone's like who's used<01:07:45.760> debuggers<01:07:46.480> knows<01:07:46.799> like<01:07:46.960> to<01:07:47.119> visualize<01:07:47.359> a\nused debuggers knows like to visualize a\nused debuggers knows like to visualize a linked<01:07:47.760> list<01:07:47.920> you've<01:07:48.160> got<01:07:48.240> to<01:07:48.319> like<01:07:48.640> expand<01:07:48.960> in\nlinked list you've got to like expand in\nlinked list you've got to like expand in and<01:07:49.359> expand<01:07:49.599> in<01:07:49.839> and<01:07:50.000> expand<01:07:50.240> in<01:07:50.799> like<01:07:51.839> what<01:07:52.000> am\nand expand in and expand in like what am\nand expand in and expand in like what am I<01:07:52.319> even<01:07:52.480> looking<01:07:52.640> at<01:07:52.880> at<01:07:53.039> some<01:07:53.200> point,<01:07:53.440> right?\nI even looking at at some point, right?\nI even looking at at some point, right? It<01:07:53.839> gets<01:07:54.240> really<01:07:54.559> ridiculous.\nIt gets really ridiculous.\nIt gets really ridiculous. Um\nso<01:08:01.599> taking<01:08:01.839> a<01:08:02.000> look<01:08:02.079> at<01:08:02.160> the<01:08:02.319> visualization\nso taking a look at the visualization\nso taking a look at the visualization pipeline<01:08:03.680> we<01:08:03.920> know<01:08:04.000> that<01:08:04.160> our<01:08:04.400> lenses<01:08:05.039> those\npipeline we know that our lenses those\npipeline we know that our lenses those lens<01:08:05.680> type<01:08:05.920> operator<01:08:06.400> things<01:08:07.440> they<01:08:07.839> override\nlens type operator things they override\nlens type operator things they override this<01:08:08.720> part<01:08:09.119> like<01:08:09.280> the<01:08:09.440> the<01:08:09.839> arrow<01:08:10.240> here<01:08:10.480> which\nthis part like the the arrow here which\nthis part like the the arrow here which is<01:08:10.880> like<01:08:11.839> turns<01:08:12.160> a<01:08:12.319> list<01:08:12.400> of<01:08:12.559> evaluations<01:08:13.119> into\nis like turns a list of evaluations into\nis like turns a list of evaluations into a<01:08:13.520> list<01:08:13.680> of<01:08:13.760> UIs<01:08:14.240> right<01:08:14.400> because<01:08:14.559> we<01:08:14.640> can<01:08:14.720> take\na list of UIs right because we can take\na list of UIs right because we can take an<01:08:14.960> eval<01:08:15.359> produce<01:08:15.599> a<01:08:15.680> UI<01:08:16.000> which<01:08:16.159> means<01:08:16.640> got<01:08:16.799> a\nan eval produce a UI which means got a\nan eval produce a UI which means got a list<01:08:17.040> of<01:08:17.199> evaluations<01:08:17.920> we<01:08:18.080> can<01:08:18.159> produce<01:08:18.400> a\nlist of evaluations we can produce a\nlist of evaluations we can produce a list<01:08:18.640> of<01:08:18.719> UIs<01:08:19.359> we<01:08:19.520> can<01:08:19.679> override<01:08:20.080> that<01:08:20.400> using\nlist of UIs we can override that using\nlist of UIs we can override that using that<01:08:20.880> type<01:08:21.120> info\nthat type info\nthat type info same<01:08:24.319> pattern<01:08:25.040> we<01:08:25.279> can<01:08:25.440> also<01:08:26.080> override<01:08:26.640> this\nsame pattern we can also override this\nsame pattern we can also override this right<01:08:27.199> we<01:08:27.359> can<01:08:27.440> just<01:08:27.600> say<01:08:27.759> like<01:08:28.080> hey<01:08:28.319> we're\nright we can just say like hey we're\nright we can just say like hey we're going<01:08:28.560> to<01:08:28.640> change<01:08:28.799> the<01:08:28.960> way<01:08:29.040> we're<01:08:29.199> going<01:08:29.279> to\ngoing to change the way we're going to\ngoing to change the way we're going to build<01:08:29.440> this<01:08:29.600> block<01:08:29.920> tree<01:08:30.480> we're<01:08:30.640> actually\nbuild this block tree we're actually\nbuild this block tree we're actually going<01:08:30.960> to<01:08:31.040> say<01:08:31.199> like<01:08:31.359> the<01:08:31.520> type<01:08:31.759> info<01:08:32.080> can<01:08:32.319> now\ngoing to say like the type info can now\ngoing to say like the type info can now have<01:08:32.799> some<01:08:33.120> say<01:08:33.759> in<01:08:34.000> that<01:08:34.239> stage<01:08:34.560> as<01:08:34.799> well\nhave some say in that stage as well\nhave some say in that stage as well um<01:08:38.799> so<01:08:38.960> instead<01:08:39.199> of<01:08:39.359> visualizing<01:08:39.839> these<01:08:40.159> two\num so instead of visualizing these two\num so instead of visualizing these two particular<01:08:40.960> structures<01:08:41.359> like<01:08:41.600> this<01:08:42.799> we<01:08:43.040> can\nparticular structures like this we can\nparticular structures like this we can now<01:08:43.359> actually<01:08:43.600> introduce<01:08:43.920> some<01:08:44.080> lens<01:08:44.400> types\nnow actually introduce some lens types\nnow actually introduce some lens types which<01:08:45.120> have<01:08:45.520> custom<01:08:46.000> rules<01:08:46.400> for<01:08:46.640> buil<01:08:46.880> for<01:08:47.040> how\nwhich have custom rules for buil for how\nwhich have custom rules for buil for how to<01:08:47.359> build<01:08:48.080> uh<01:08:48.159> the<01:08:48.319> block<01:08:48.560> tree<01:08:48.799> here<01:08:49.120> so<01:08:49.359> for\nto build uh the block tree here so for\nto build uh the block tree here so for the<01:08:49.679> left<01:08:50.319> you<01:08:50.400> know<01:08:50.560> let's<01:08:50.719> say<01:08:50.880> I<01:08:51.040> use<01:08:51.199> the\nthe left you know let's say I use the\nthe left you know let's say I use the array<01:08:51.679> slice<01:08:51.920> and<01:08:52.080> I'm<01:08:52.239> like<01:08:52.560> you<01:08:52.719> got<01:08:52.880> an\narray slice and I'm like you got an\narray slice and I'm like you got an array<01:08:53.839> here's<01:08:54.080> the<01:08:54.239> pointer<01:08:54.640> here's<01:08:54.799> the\narray here's the pointer here's the\narray here's the pointer here's the count<01:08:56.000> give<01:08:56.159> Give<01:08:56.239> me<01:08:56.400> the<01:08:56.560> block<01:08:56.719> of<01:08:56.799> all<01:08:56.960> the\ncount give Give me the block of all the\ncount give Give me the block of all the elements.<01:08:57.839> On<01:08:58.080> the<01:08:58.239> right,<01:08:58.880> I've<01:08:59.120> got<01:08:59.359> here's\nelements. On the right, I've got here's\nelements. On the right, I've got here's the<01:08:59.679> head<01:08:59.920> pointer<01:09:00.239> and<01:09:00.400> here's<01:09:00.640> the<01:09:00.799> name<01:09:00.880> of\nthe head pointer and here's the name of\nthe head pointer and here's the name of the<01:09:01.120> member<01:09:01.359> I<01:09:01.520> want<01:09:01.600> you<01:09:01.759> to<01:09:01.839> follow<01:09:02.159> to<01:09:02.319> find\nthe member I want you to follow to find\nthe member I want you to follow to find all<01:09:02.640> the<01:09:03.199> list<01:09:03.520> elements.<01:09:04.319> Give<01:09:04.480> me<01:09:04.640> the<01:09:04.719> list\nall the list elements. Give me the list\nall the list elements. Give me the list of<01:09:05.040> elements.<01:09:05.440> And<01:09:05.520> we<01:09:05.679> can<01:09:05.759> just<01:09:05.920> do<01:09:06.000> that\nof elements. And we can just do that\nof elements. And we can just do that with<01:09:06.400> the<01:09:06.560> type<01:09:06.799> info.\nNo,<01:09:11.839> I'm<01:09:12.159> so<01:09:12.319> bad<01:09:12.560> with<01:09:12.719> this.<01:09:14.159> Okay,<01:09:15.279> so<01:09:16.319> I've\nNo, I'm so bad with this. Okay, so I've\nNo, I'm so bad with this. Okay, so I've walked<01:09:16.880> through<01:09:17.679> uh<01:09:18.080> this<01:09:18.319> whole\nwalked through uh this whole\nwalked through uh this whole visualization<01:09:19.600> pipeline.<01:09:20.400> Um,<01:09:21.679> it<01:09:21.920> allows<01:09:22.159> us\nvisualization pipeline. Um, it allows us\nvisualization pipeline. Um, it allows us to<01:09:23.040> just<01:09:23.279> visualize<01:09:23.839> in<01:09:24.080> the<01:09:24.239> ways<01:09:24.400> that<01:09:24.560> I've\nto just visualize in the ways that I've\nto just visualize in the ways that I've showed<01:09:26.000> uh<01:09:26.400> anything<01:09:26.640> the<01:09:26.880> debugger<01:09:27.279> can\nshowed uh anything the debugger can\nshowed uh anything the debugger can evaluate.<01:09:28.159> And<01:09:28.319> so,<01:09:28.560> so<01:09:28.880> far,<01:09:29.520> anything<01:09:29.839> the\nevaluate. And so, so far, anything the\nevaluate. And so, so far, anything the debugger<01:09:30.400> can<01:09:30.560> evaluate<01:09:31.279> has<01:09:31.520> just<01:09:31.679> included\ndebugger can evaluate has just included\ndebugger can evaluate has just included like<01:09:32.719> expressions<01:09:33.199> relating<01:09:33.520> to<01:09:33.679> your\nlike expressions relating to your\nlike expressions relating to your program<01:09:34.560> like<01:09:34.880> in<01:09:35.359> like<01:09:35.520> a<01:09:35.679> debuggy<01:09:36.239> address\nprogram like in like a debuggy address\nprogram like in like a debuggy address space<01:09:37.600> or<01:09:38.000> you<01:09:38.159> know<01:09:38.640> something<01:09:38.880> in<01:09:39.120> a<01:09:39.199> thread\nspace or you know something in a thread\nspace or you know something in a thread register<01:09:39.759> inside<01:09:40.080> of<01:09:40.159> a<01:09:40.239> debuggy<01:09:41.040> so<01:09:41.279> on.\nregister inside of a debuggy so on.\nregister inside of a debuggy so on. But<01:09:43.600> let's<01:09:43.920> consider<01:09:44.239> all<01:09:44.400> of<01:09:44.560> the<01:09:44.719> scenarios\nBut let's consider all of the scenarios\nBut let's consider all of the scenarios where<01:09:46.080> we<01:09:46.319> have<01:09:46.480> some<01:09:46.719> data<01:09:47.279> from<01:09:47.520> anywhere\nwhere we have some data from anywhere\nwhere we have some data from anywhere that<01:09:48.319> we're<01:09:48.560> looking<01:09:48.719> at<01:09:48.880> and<01:09:49.040> we<01:09:49.199> want<01:09:49.359> to\nthat we're looking at and we want to\nthat we're looking at and we want to understand\nunderstand\nunderstand you<01:09:52.159> know<01:09:53.120> a<01:09:53.359> significant<01:09:53.839> subset<01:09:54.320> is<01:09:54.560> what<01:09:54.719> I\nyou know a significant subset is what I\nyou know a significant subset is what I just<01:09:54.960> said<01:09:55.120> it's<01:09:55.360> like<01:09:55.440> somewhere<01:09:55.679> in<01:09:55.840> the\njust said it's like somewhere in the\njust said it's like somewhere in the debuggy<01:09:56.400> debugging<01:09:56.880> memory<01:09:57.280> you<01:09:57.440> know\ndebuggy debugging memory you know\ndebuggy debugging memory you know debugging<01:09:58.159> registers<01:09:58.640> whatever<01:09:59.760> um<01:10:01.040> like<01:10:01.199> I\ndebugging registers whatever um like I\ndebugging registers whatever um like I said<01:10:01.920> walked<01:10:02.320> through<01:10:02.640> a<01:10:02.880> pipeline<01:10:03.280> for\nsaid walked through a pipeline for\nsaid walked through a pipeline for visualizing<01:10:04.080> stuff<01:10:04.239> from<01:10:04.400> that<01:10:04.880> but<01:10:05.120> let's\nvisualizing stuff from that but let's\nvisualizing stuff from that but let's appreciate<01:10:05.840> something<01:10:06.159> here<01:10:06.719> which<01:10:06.960> is<01:10:07.040> that\nappreciate something here which is that\nappreciate something here which is that this<01:10:07.920> is<01:10:08.080> a<01:10:08.320> subset<01:10:09.120> and<01:10:09.520> like<01:10:09.760> an<01:10:10.239> very<01:10:10.640> large\nthis is a subset and like an very large\nthis is a subset and like an very large number<01:10:11.199> of<01:10:11.360> cases<01:10:11.760> actually<01:10:12.400> it's<01:10:12.640> also<01:10:12.800> also\nnumber of cases actually it's also also\nnumber of cases actually it's also also common<01:10:13.760> to<01:10:13.920> look<01:10:14.000> at<01:10:14.239> memory<01:10:14.560> from<01:10:14.719> other\ncommon to look at memory from other\ncommon to look at memory from other sources<01:10:15.360> like<01:10:15.600> the<01:10:15.840> file<01:10:16.080> system,<01:10:16.880> right?<01:10:18.320> And\nsources like the file system, right? And\nsources like the file system, right? And turns<01:10:19.120> out<01:10:19.360> people<01:10:19.520> have<01:10:19.679> built<01:10:19.840> an<01:10:20.000> enormous\nturns out people have built an enormous\nturns out people have built an enormous number<01:10:20.560> of<01:10:20.719> tools<01:10:20.960> to<01:10:21.120> work<01:10:21.199> on<01:10:21.440> data<01:10:22.000> from<01:10:22.239> a\nnumber of tools to work on data from a\nnumber of tools to work on data from a file<01:10:22.640> system<01:10:23.600> like<01:10:24.239> IMEX\nfile system like IMEX\nfile system like IMEX looks<01:10:26.000> like<01:10:26.239> maybe<01:10:26.480> a<01:10:26.640> little<01:10:26.800> familiar.<01:10:27.679> Um\nlooks like maybe a little familiar. Um\nlooks like maybe a little familiar. Um 10x<01:10:30.640> views,<01:10:31.120> you<01:10:31.199> know,<01:10:31.360> source<01:10:31.679> code\n10x views, you know, source code\n10x views, you know, source code and<01:10:33.520> editing<01:10:33.920> source<01:10:34.239> code<01:10:34.719> obviously.<01:10:35.520> Um\nand editing source code obviously. Um\nand editing source code obviously. Um beyond<01:10:36.560> compare,<01:10:37.120> you<01:10:37.199> know,<01:10:37.360> take<01:10:37.600> two\nbeyond compare, you know, take two\nbeyond compare, you know, take two textual<01:10:38.239> buffers,<01:10:38.880> compare<01:10:39.120> them,<01:10:39.440> show<01:10:39.520> me\ntextual buffers, compare them, show me\ntextual buffers, compare them, show me how<01:10:39.840> they're<01:10:40.000> different.\nhow they're different.\nhow they're different. And<01:10:42.400> so<01:10:42.560> there's<01:10:42.880> sort<01:10:43.040> of<01:10:43.120> this<01:10:43.360> like\nAnd so there's sort of this like\nAnd so there's sort of this like unfortunate<01:10:45.520> problem<01:10:45.840> emerging,<01:10:46.320> right?\nunfortunate problem emerging, right?\nunfortunate problem emerging, right? We've<01:10:46.640> got<01:10:46.800> these<01:10:47.040> two<01:10:47.280> worlds<01:10:48.000> where<01:10:48.239> it's\nWe've got these two worlds where it's\nWe've got these two worlds where it's like<01:10:49.040> our<01:10:49.280> debug<01:10:49.920> world<01:10:50.239> where<01:10:50.560> you<01:10:50.719> know<01:10:50.800> we\nlike our debug world where you know we\nlike our debug world where you know we build<01:10:51.120> all<01:10:51.199> these<01:10:51.360> cool<01:10:51.520> debugger\nbuild all these cool debugger\nbuild all these cool debugger visualizers.<01:10:52.400> We've<01:10:52.480> got<01:10:52.560> a<01:10:52.640> hex<01:10:52.880> grid,<01:10:53.120> we've\nvisualizers. We've got a hex grid, we've\nvisualizers. We've got a hex grid, we've got<01:10:53.360> text,<01:10:53.600> we've<01:10:53.760> got<01:10:53.840> a<01:10:53.920> bit<01:10:54.159> map.<01:10:54.560> And<01:10:54.640> then\ngot text, we've got a bit map. And then\ngot text, we've got a bit map. And then it's<01:10:54.960> like<01:10:55.199> wait<01:10:55.679> on<01:10:55.920> the<01:10:56.080> file<01:10:56.400> world<01:10:56.640> I've\nit's like wait on the file world I've\nit's like wait on the file world I've also<01:10:57.040> got<01:10:57.120> a<01:10:57.280> hex<01:10:57.520> grid<01:10:57.760> and<01:10:58.080> which<01:10:58.320> is<01:10:58.560> would\nalso got a hex grid and which is would\nalso got a hex grid and which is would be<01:10:58.880> something<01:10:59.120> like<01:10:59.280> IMX.<01:11:00.000> I've<01:11:00.239> also<01:11:00.400> got<01:11:00.480> a\nbe something like IMX. I've also got a\nbe something like IMX. I've also got a text<01:11:00.880> viewer<01:11:01.360> editor<01:11:01.760> and<01:11:01.920> I've<01:11:02.159> also<01:11:02.320> got<01:11:02.400> a\ntext viewer editor and I've also got a\ntext viewer editor and I've also got a bit<01:11:02.719> map<01:11:02.880> viewer.<01:11:03.280> So<01:11:03.520> like<01:11:03.679> what's<01:11:03.920> what's\nbit map viewer. So like what's what's\nbit map viewer. So like what's what's kind<01:11:05.920> of<01:11:06.000> sucks,<01:11:06.400> right?<01:11:07.199> Um\nkind of sucks, right? Um\nkind of sucks, right? Um because<01:11:09.440> each<01:11:09.760> visualizer<01:11:10.320> is<01:11:10.400> sort<01:11:10.480> of<01:11:10.560> like\nbecause each visualizer is sort of like\nbecause each visualizer is sort of like coupled<01:11:11.199> to<01:11:11.360> like<01:11:11.600> where<01:11:11.840> the<01:11:12.000> data<01:11:12.159> is<01:11:12.320> coming\ncoupled to like where the data is coming\ncoupled to like where the data is coming from.<01:11:13.120> Like<01:11:13.440> these<01:11:13.760> only<01:11:14.000> apply<01:11:14.239> to<01:11:14.480> like\nfrom. Like these only apply to like\nfrom. Like these only apply to like reading<01:11:15.040> process<01:11:15.360> memory.<01:11:16.080> These<01:11:16.400> only<01:11:16.560> apply\nreading process memory. These only apply\nreading process memory. These only apply to<01:11:17.040> files.\nAnd<01:11:20.560> because<01:11:21.360> like\nAnd because like\nAnd because like the<01:11:23.520> one<01:11:23.679> on<01:11:23.840> the<01:11:24.000> right<01:11:24.159> is<01:11:24.400> more<01:11:24.640> common,\nthe one on the right is more common,\nthe one on the right is more common, right?<01:11:25.440> Like<01:11:25.600> it's<01:11:26.000> everyone's<01:11:26.480> built<01:11:26.719> tools\nright? Like it's everyone's built tools\nright? Like it's everyone's built tools for<01:11:27.199> this<01:11:27.360> side<01:11:28.159> and<01:11:28.640> you<01:11:28.880> know<01:11:30.159> comparatively\nfor this side and you know comparatively\nfor this side and you know comparatively few<01:11:30.960> people<01:11:31.040> have<01:11:31.280> built<01:11:31.440> tools<01:11:31.679> for<01:11:31.760> the<01:11:31.920> left\nfew people have built tools for the left\nfew people have built tools for the left side.<01:11:33.040> It's<01:11:33.280> sort<01:11:33.440> of<01:11:33.600> like<01:11:34.239> it's<01:11:34.480> just<01:11:34.640> more\nside. It's sort of like it's just more\nside. It's sort of like it's just more worth<01:11:35.040> it<01:11:35.120> to<01:11:35.280> build<01:11:35.440> tools<01:11:35.679> for<01:11:35.840> the<01:11:36.000> right\nworth it to build tools for the right\nworth it to build tools for the right side.<01:11:36.800> And<01:11:37.040> so<01:11:37.280> like<01:11:37.440> the<01:11:37.600> debuggy\nside. And so like the debuggy\nside. And so like the debuggy visualization<01:11:38.800> stuff<01:11:39.040> kind<01:11:39.280> of<01:11:39.360> suffers<01:11:39.920> a\nvisualization stuff kind of suffers a\nvisualization stuff kind of suffers a lot.<01:11:40.800> Um<01:11:41.040> it's<01:11:41.280> just<01:11:41.600> more<01:11:41.840> worthwhile<01:11:42.239> to<01:11:42.400> do\nlot. Um it's just more worthwhile to do\nlot. Um it's just more worthwhile to do an<01:11:42.640> investment<01:11:42.960> on<01:11:43.120> the<01:11:43.199> right<01:11:43.360> side<01:11:43.520> than<01:11:43.679> the\nan investment on the right side than the\nan investment on the right side than the left<01:11:44.080> side.\nleft side.\nleft side. Um<01:11:46.400> just<01:11:46.640> get<01:11:46.800> way<01:11:46.960> more<01:11:47.120> bang<01:11:47.360> for<01:11:47.520> buck<01:11:47.760> that\nUm just get way more bang for buck that\nUm just get way more bang for buck that way.<01:11:48.320> What's<01:11:48.560> worse<01:11:48.880> is<01:11:49.120> if<01:11:49.360> we<01:11:49.520> consider<01:11:49.840> the\nway. What's worse is if we consider the\nway. What's worse is if we consider the needs<01:11:50.159> of<01:11:50.320> an<01:11:50.480> actual<01:11:50.719> debugger<01:11:51.120> UI,<01:11:51.679> we<01:11:51.840> have\nneeds of an actual debugger UI, we have\nneeds of an actual debugger UI, we have to<01:11:52.080> do<01:11:52.159> the<01:11:52.320> file<01:11:52.560> system<01:11:52.800> part<01:11:53.040> two.<01:11:53.520> Like<01:11:53.679> we\nto do the file system part two. Like we\nto do the file system part two. Like we have<01:11:54.000> to<01:11:54.159> look<01:11:54.239> at<01:11:54.400> a<01:11:54.560> source<01:11:54.800> file<01:11:55.040> on<01:11:55.199> disk.\nhave to look at a source file on disk.\nhave to look at a source file on disk. We<01:11:55.920> have<01:11:56.000> to<01:11:56.080> pull<01:11:56.239> it<01:11:56.320> down<01:11:56.480> as<01:11:56.640> text.<01:11:56.960> We<01:11:57.040> have\nWe have to pull it down as text. We have\nWe have to pull it down as text. We have to<01:11:57.199> visualize<01:11:57.520> it<01:11:57.679> as<01:11:57.920> text.\nto visualize it as text.\nto visualize it as text. So<01:12:00.239> for<01:12:00.480> me<01:12:00.719> like<01:12:00.880> this<01:12:01.040> was<01:12:01.199> just<01:12:01.360> like<01:12:01.600> too\nSo for me like this was just like too\nSo for me like this was just like too much.<01:12:02.080> I'm<01:12:02.400> like<01:12:02.960> when<01:12:03.199> I<01:12:03.280> first<01:12:03.920> built<01:12:04.159> the\nmuch. I'm like when I first built the\nmuch. I'm like when I first built the visualizer<01:12:04.800> system<01:12:04.960> in<01:12:05.120> the<01:12:05.199> RAD<01:12:05.440> debugger,<01:12:06.159> I\nvisualizer system in the RAD debugger, I\nvisualizer system in the RAD debugger, I like<01:12:06.800> was<01:12:06.960> starting<01:12:07.280> to<01:12:07.520> have<01:12:07.920> like<01:12:08.320> here's\nlike was starting to have like here's\nlike was starting to have like here's how<01:12:08.800> you<01:12:09.040> like<01:12:09.280> here's<01:12:09.440> the<01:12:09.679> source<01:12:10.000> viewer\nhow you like here's the source viewer\nhow you like here's the source viewer and<01:12:10.880> here's<01:12:11.120> the<01:12:11.280> debuggy<01:12:11.920> process<01:12:12.960> memory\nand here's the debuggy process memory\nand here's the debuggy process memory text<01:12:13.760> viewer<01:12:14.400> and<01:12:14.640> they're<01:12:14.880> bifurcated<01:12:15.520> in\ntext viewer and they're bifurcated in\ntext viewer and they're bifurcated in this<01:12:15.840> uncomfortable<01:12:16.480> way<01:12:17.120> and<01:12:17.280> I<01:12:17.520> was<01:12:17.600> like\nthis uncomfortable way and I was like\nthis uncomfortable way and I was like there's<01:12:18.080> too<01:12:18.320> much<01:12:18.640> like<01:12:18.880> these<01:12:19.120> things\nthere's too much like these things\nthere's too much like these things should<01:12:19.520> be<01:12:19.600> the<01:12:19.760> same.<01:12:19.920> Like<01:12:20.080> I<01:12:20.239> had<01:12:20.400> a<01:12:20.560> feeling\nshould be the same. Like I had a feeling\nshould be the same. Like I had a feeling that<01:12:20.960> these<01:12:21.199> should<01:12:21.440> collapse.\nthat these should collapse.\nthat these should collapse. Um<01:12:24.719> why<01:12:24.880> do<01:12:25.040> I<01:12:25.120> feel<01:12:25.280> that<01:12:25.440> way?<01:12:25.679> Because<01:12:25.840> past\nUm why do I feel that way? Because past\nUm why do I feel that way? Because past the<01:12:26.400> point<01:12:26.560> of<01:12:26.719> actually<01:12:27.040> reading<01:12:27.360> the<01:12:27.520> data\nthe point of actually reading the data\nthe point of actually reading the data it's<01:12:28.159> like<01:12:28.239> the<01:12:28.480> same<01:12:28.560> thing,<01:12:28.800> right?<01:12:29.120> Same\nit's like the same thing, right? Same\nit's like the same thing, right? Same problem.\nUm<01:12:33.840> but<01:12:34.480> remember<01:12:34.800> I<01:12:35.040> said\nUm but remember I said\nUm but remember I said uh<01:12:37.040> our<01:12:37.199> visualizers<01:12:37.760> in<01:12:37.920> the<01:12:38.000> debugger<01:12:38.560> can\nuh our visualizers in the debugger can\nuh our visualizers in the debugger can apply<01:12:38.960> to<01:12:39.120> anything<01:12:39.360> the<01:12:39.520> debugger<01:12:39.920> can<01:12:40.480> uh\napply to anything the debugger can uh\napply to anything the debugger can uh can<01:12:41.199> evaluate.<01:12:42.640> So<01:12:42.960> what<01:12:43.199> can<01:12:43.600> the<01:12:43.840> debugger\ncan evaluate. So what can the debugger\ncan evaluate. So what can the debugger evaluate?\nevaluate?\nevaluate? So<01:12:47.440> so<01:12:47.679> far<01:12:47.920> a<01:12:48.159> debugger<01:12:48.480> evaluation<01:12:48.880> can\nSo so far a debugger evaluation can\nSo so far a debugger evaluation can produce<01:12:49.360> like<01:12:49.600> you<01:12:49.679> know<01:12:49.840> like<01:12:50.000> an<01:12:50.239> address<01:12:50.640> or\nproduce like you know like an address or\nproduce like you know like an address or a<01:12:51.360> register<01:12:51.760> or<01:12:52.000> a<01:12:52.239> value<01:12:53.679> um<01:12:54.159> or<01:12:54.320> register\na register or a value um or register\na register or a value um or register location<01:12:55.040> I<01:12:55.199> should<01:12:55.360> say<01:12:55.600> or<01:12:56.159> uh<01:12:56.239> or<01:12:56.880> like<01:12:57.120> a\nlocation I should say or uh or like a\nlocation I should say or uh or like a constant<01:12:57.679> value<01:12:57.920> of<01:12:58.159> something.\nconstant value of something.\nconstant value of something. But<01:13:00.480> if<01:13:00.640> we<01:13:00.800> extend<01:13:01.040> the<01:13:01.199> notion<01:13:01.760> of<01:13:02.000> an\nBut if we extend the notion of an\nBut if we extend the notion of an evaluation<01:13:03.360> to<01:13:03.679> also<01:13:04.000> include<01:13:04.239> a<01:13:04.400> notion<01:13:04.640> of\nevaluation to also include a notion of\nevaluation to also include a notion of which<01:13:05.520> space,<01:13:05.920> which<01:13:06.239> universe<01:13:06.640> that\nwhich space, which universe that\nwhich space, which universe that evaluation<01:13:07.440> is<01:13:07.600> within,<01:13:08.480> then<01:13:08.719> we<01:13:08.880> can\nevaluation is within, then we can\nevaluation is within, then we can broaden<01:13:09.360> the<01:13:09.520> applicability,<01:13:10.080> right?<01:13:10.239> We've\nbroaden the applicability, right? We've\nbroaden the applicability, right? We've sort<01:13:10.560> of<01:13:10.719> parameterize<01:13:11.199> this<01:13:11.440> thing<01:13:11.600> a<01:13:11.760> little\nsort of parameterize this thing a little\nsort of parameterize this thing a little bit<01:13:12.000> more<01:13:12.239> to<01:13:12.480> say<01:13:13.040> a<01:13:13.360> little<01:13:13.440> bit<01:13:13.600> more<01:13:13.840> about\nbit more to say a little bit more about\nbit more to say a little bit more about where<01:13:14.239> it<01:13:14.400> is<01:13:14.480> and<01:13:14.640> and<01:13:14.880> where<01:13:15.040> it's<01:13:15.280> coming\nwhere it is and and where it's coming\nwhere it is and and where it's coming from.<01:13:16.560> So<01:13:16.719> a<01:13:16.960> space<01:13:17.840> can<01:13:18.080> be<01:13:18.159> used<01:13:18.320> to<01:13:18.480> choose\nfrom. So a space can be used to choose\nfrom. So a space can be used to choose between<01:13:18.880> a<01:13:19.040> debug<01:13:19.679> obviously,\nbetween a debug obviously,\nbetween a debug obviously, but<01:13:21.920> it<01:13:22.159> can<01:13:22.239> also<01:13:22.719> pick<01:13:23.040> between,<01:13:23.840> let's<01:13:24.000> say,\nbut it can also pick between, let's say,\nbut it can also pick between, let's say, another<01:13:24.400> debuggy.<01:13:24.960> Let's<01:13:25.040> say<01:13:25.120> your<01:13:25.280> debugger\nanother debuggy. Let's say your debugger\nanother debuggy. Let's say your debugger is<01:13:25.679> not<01:13:25.760> just<01:13:25.920> attached<01:13:26.239> to<01:13:26.400> one<01:13:26.560> process,<01:13:26.960> but\nis not just attached to one process, but\nis not just attached to one process, but multiple<01:13:27.520> processes.<01:13:28.320> which<01:13:28.560> one<01:13:28.719> are<01:13:28.880> you\nmultiple processes. which one are you\nmultiple processes. which one are you evaluating<01:13:29.440> in<01:13:29.840> a<01:13:30.000> space<01:13:30.320> can<01:13:30.480> tell<01:13:30.640> you<01:13:30.800> that\nevaluating in a space can tell you that\nevaluating in a space can tell you that but<01:13:33.040> you<01:13:33.280> could<01:13:33.440> also<01:13:33.679> say<01:13:34.159> the<01:13:34.480> space<01:13:34.719> is<01:13:34.880> a\nbut you could also say the space is a\nbut you could also say the space is a file<01:13:35.440> or<01:13:35.600> the<01:13:35.760> space<01:13:35.920> is<01:13:36.080> just<01:13:36.239> some<01:13:36.400> file<01:13:36.640> on\nfile or the space is just some file on\nfile or the space is just some file on disk<01:13:37.280> at<01:13:37.520> some<01:13:37.760> path<01:13:38.320> or<01:13:38.640> it's<01:13:39.040> something<01:13:39.280> in\ndisk at some path or it's something in\ndisk at some path or it's something in the<01:13:39.600> debugger<01:13:40.000> itself.<01:13:41.199> So<01:13:41.360> if<01:13:41.520> we<01:13:41.679> expand\nthe debugger itself. So if we expand\nthe debugger itself. So if we expand that<01:13:43.360> then<01:13:43.600> these<01:13:43.920> different<01:13:44.239> worlds<01:13:44.880> simply\nthat then these different worlds simply\nthat then these different worlds simply become<01:13:45.600> different<01:13:46.000> spaces<01:13:46.880> within<01:13:47.199> which<01:13:47.440> the\nbecome different spaces within which the\nbecome different spaces within which the debugger<01:13:48.000> can<01:13:48.159> evaluate.\ndebugger can evaluate.\ndebugger can evaluate. So<01:13:49.920> remember<01:13:50.159> that<01:13:50.320> source<01:13:50.640> view<01:13:50.880> in<01:13:51.040> the<01:13:51.120> RAD\nSo remember that source view in the RAD\nSo remember that source view in the RAD debugger<01:13:52.640> that's<01:13:52.880> just<01:13:53.040> the<01:13:53.199> text<01:13:53.440> visualizer\ndebugger that's just the text visualizer\ndebugger that's just the text visualizer applied<01:13:54.239> to<01:13:54.320> a<01:13:54.480> file<01:13:54.719> path\napplied to a file path\napplied to a file path output<01:13:57.440> tab\noutput tab\noutput tab just<01:13:59.199> the<01:13:59.360> text<01:13:59.600> visualizer<01:14:00.320> evaluating<01:14:00.800> the\njust the text visualizer evaluating the\njust the text visualizer evaluating the output<01:14:01.199> log<01:14:01.520> within<01:14:01.760> the<01:14:01.840> debugger<01:14:02.320> space.\noutput log within the debugger space.\noutput log within the debugger space. What<01:14:04.159> happens<01:14:04.400> if<01:14:04.480> you<01:14:04.640> open<01:14:04.800> a<01:14:04.960> binary<01:14:05.280> file?\nWhat happens if you open a binary file?\nWhat happens if you open a binary file? It's<01:14:06.159> just<01:14:06.239> a<01:14:06.400> hex<01:14:06.719> viewer<01:14:07.520> because<01:14:07.760> the\nIt's just a hex viewer because the\nIt's just a hex viewer because the debugger<01:14:08.320> has<01:14:08.400> a<01:14:08.560> way<01:14:08.640> of<01:14:08.719> viewing<01:14:08.960> memory\ndebugger has a way of viewing memory\ndebugger has a way of viewing memory from<01:14:09.520> any<01:14:09.760> space<01:14:09.920> with<01:14:10.080> a<01:14:10.239> hex<01:14:10.480> grid.<01:14:10.880> So\nfrom any space with a hex grid. So\nfrom any space with a hex grid. So that's<01:14:11.280> that's<01:14:11.600> how<01:14:11.760> that<01:14:12.080> actually<01:14:12.640> works\nthat's that's how that actually works\nthat's that's how that actually works and<01:14:13.120> it<01:14:13.280> doesn't<01:14:13.440> stop<01:14:13.600> with<01:14:13.760> the<01:14:13.920> visualizer\nand it doesn't stop with the visualizer\nand it doesn't stop with the visualizer uh<01:14:15.199> sort<01:14:15.360> of<01:14:15.520> endpoints.\nuh sort of endpoints.\nuh sort of endpoints. Um,<01:14:18.159> you<01:14:18.400> might<01:14:18.560> also<01:14:18.880> remember<01:14:19.440> like<01:14:19.600> when<01:14:19.760> I\nUm, you might also remember like when I\nUm, you might also remember like when I added<01:14:20.159> a<01:14:20.320> condition<01:14:20.560> to<01:14:20.719> a<01:14:20.880> breakpoint,<01:14:21.199> I\nadded a condition to a breakpoint, I\nadded a condition to a breakpoint, I rightcicked<01:14:21.760> on<01:14:21.840> the<01:14:21.920> breakpoint.<01:14:22.320> This<01:14:22.480> UI\nrightcicked on the breakpoint. This UI\nrightcicked on the breakpoint. This UI pops<01:14:22.960> up.<01:14:23.280> Kind<01:14:23.440> of<01:14:23.520> looks<01:14:23.679> like<01:14:23.760> a<01:14:23.920> watch\npops up. Kind of looks like a watch\npops up. Kind of looks like a watch window,<01:14:24.560> doesn't<01:14:24.719> it?\nwindow, doesn't it?\nwindow, doesn't it? You<01:14:27.360> may<01:14:27.520> think<01:14:27.679> it<01:14:27.920> looks<01:14:28.080> like<01:14:28.239> one\nYou may think it looks like one\nYou may think it looks like one maybe.<01:14:31.199> Um,<01:14:31.520> and<01:14:31.679> that's<01:14:31.920> because<01:14:32.080> it<01:14:32.159> is.\nmaybe. Um, and that's because it is.\nmaybe. Um, and that's because it is. It's<01:14:32.480> an<01:14:32.640> actual<01:14:32.800> watch<01:14:33.040> window<01:14:33.280> evaluating\nIt's an actual watch window evaluating\nIt's an actual watch window evaluating the<01:14:33.920> break<01:14:34.159> point<01:14:34.400> within<01:14:34.640> the<01:14:34.800> debugger\nthe break point within the debugger\nthe break point within the debugger address<01:14:35.840> or<01:14:36.640> not<01:14:36.880> address<01:14:37.120> space,<01:14:37.360> debugger\naddress or not address space, debugger\naddress or not address space, debugger space.<01:14:38.320> Uh,\nspace. Uh,\nspace. Uh, and<01:14:40.640> it<01:14:40.880> doesn't<01:14:41.040> stop<01:14:41.199> with<01:14:41.360> breakpoints.\nand it doesn't stop with breakpoints.\nand it doesn't stop with breakpoints. All<01:14:42.159> configuration<01:14:42.640> data<01:14:42.960> works<01:14:43.120> this<01:14:43.440> If<01:14:43.600> I\nAll configuration data works this If I\nAll configuration data works this If I evaluate<01:14:44.320> a<01:14:44.640> target<01:14:45.040> like<01:14:45.280> all<01:14:45.360> the<01:14:45.840> all<01:14:46.000> the\nevaluate a target like all the all the\nevaluate a target like all the all the options<01:14:46.400> for<01:14:46.560> launching<01:14:46.800> an<01:14:47.040> executable<01:14:48.000> um\noptions for launching an executable um\noptions for launching an executable um that's<01:14:48.320> just<01:14:48.480> evaluating<01:14:48.960> the<01:14:49.120> target<01:14:50.480> looks\nthat's just evaluating the target looks\nthat's just evaluating the target looks like<01:14:50.800> a<01:14:50.960> watch<01:14:51.199> window<01:14:51.760> because<01:14:52.000> there's<01:14:52.320> one.\nlike a watch window because there's one.\nlike a watch window because there's one. Here's<01:14:53.600> the<01:14:53.760> list<01:14:53.920> of<01:14:54.080> threads<01:14:54.880> in<01:14:55.120> the<01:14:55.199> RAD\nHere's the list of threads in the RAD\nHere's the list of threads in the RAD debugger.\ndebugger.\ndebugger. Need<01:14:57.520> I<01:14:57.679> say<01:14:57.840> more?<01:14:58.159> It's<01:14:58.320> a<01:14:58.400> watch<01:14:58.640> window.\nNeed I say more? It's a watch window.\nNeed I say more? It's a watch window. Tab<01:15:01.920> rightclick<01:15:02.400> menu.<01:15:03.120> Yes,<01:15:03.600> I<01:15:03.840> I<01:15:04.080> know<01:15:04.320> it's\nTab rightclick menu. Yes, I I know it's\nTab rightclick menu. Yes, I I know it's a<01:15:04.719> watch<01:15:04.960> window.\na watch window.\na watch window. File<01:15:07.120> tree<01:15:07.360> view.<01:15:08.480> Guess<01:15:08.719> what?\nFile tree view. Guess what?\nFile tree view. Guess what? >> Watch<01:15:10.640> window.<01:15:11.280> Just<01:15:11.600> evaluating<01:15:12.080> folders.\n>> Watch window. Just evaluating folders.\n>> Watch window. Just evaluating folders. Everything's<01:15:13.600> a<01:15:13.760> watch<01:15:14.000> window.\nEverything's a watch window.\nEverything's a watch window. Everything's<01:15:15.920> a<01:15:16.080> watch<01:15:16.239> window.\nNow,<01:15:21.840> to<01:15:22.000> build<01:15:22.239> visualizations<01:15:22.800> for<01:15:22.960> the\nNow, to build visualizations for the\nNow, to build visualizations for the system,<01:15:23.679> a<01:15:23.920> visualization<01:15:24.480> engine<01:15:24.719> needs\nsystem, a visualization engine needs\nsystem, a visualization engine needs visualizers<01:15:25.840> that<01:15:26.080> are<01:15:26.159> sort<01:15:26.320> of<01:15:26.480> agnostic<01:15:27.040> to\nvisualizers that are sort of agnostic to\nvisualizers that are sort of agnostic to the<01:15:27.679> uh<01:15:27.840> source<01:15:28.080> of<01:15:28.239> the<01:15:28.400> underlying<01:15:28.880> data.\nthe uh source of the underlying data.\nthe uh source of the underlying data. Um,<01:15:30.480> so<01:15:30.719> in<01:15:30.880> other<01:15:30.960> words,<01:15:31.120> they<01:15:31.280> need<01:15:31.360> to<01:15:31.520> be\nUm, so in other words, they need to be\nUm, so in other words, they need to be based<01:15:31.760> around<01:15:32.000> like<01:15:32.159> some<01:15:32.400> contents.<01:15:33.040> Like\nbased around like some contents. Like\nbased around like some contents. Like you<01:15:33.440> want<01:15:33.600> to<01:15:33.760> talk<01:15:33.920> about<01:15:34.080> the<01:15:34.239> contents<01:15:34.640> of\nyou want to talk about the contents of\nyou want to talk about the contents of something,<01:15:35.760> not<01:15:36.000> like<01:15:36.640> um<01:15:37.760> the<01:15:38.000> path<01:15:38.239> to<01:15:38.480> that\nsomething, not like um the path to that\nsomething, not like um the path to that data<01:15:38.880> because<01:15:39.120> that<01:15:39.280> couples<01:15:39.600> it<01:15:39.760> sort<01:15:39.920> of<01:15:40.000> to\ndata because that couples it sort of to\ndata because that couples it sort of to the<01:15:40.320> file<01:15:40.640> to<01:15:40.719> the<01:15:40.880> file<01:15:41.120> system,<01:15:41.520> right?\nthe file to the file system, right?\nthe file to the file system, right? Um,<01:15:43.679> so<01:15:43.920> let's<01:15:44.080> imagine<01:15:44.400> a<01:15:44.560> filebased<01:15:45.840> viewing\nUm, so let's imagine a filebased viewing\nUm, so let's imagine a filebased viewing program.<01:15:46.880> In<01:15:47.040> that<01:15:47.199> case,<01:15:47.360> the<01:15:47.600> user<01:15:47.840> is<01:15:48.000> like,\nprogram. In that case, the user is like,\nprogram. In that case, the user is like, I'm<01:15:48.480> going<01:15:48.560> to<01:15:48.640> view<01:15:48.800> this<01:15:49.040> path<01:15:49.440> and<01:15:49.600> the\nI'm going to view this path and the\nI'm going to view this path and the program<01:15:50.080> produces<01:15:50.400> a<01:15:50.560> UI.<01:15:51.199> If<01:15:51.360> the<01:15:51.520> code<01:15:51.679> is\nprogram produces a UI. If the code is\nprogram produces a UI. If the code is written<01:15:52.080> exactly<01:15:52.480> like<01:15:52.719> this,<01:15:53.120> then<01:15:53.360> the<01:15:53.520> UI\nwritten exactly like this, then the UI\nwritten exactly like this, then the UI path<01:15:54.080> is<01:15:54.480> just<01:15:54.800> completely<01:15:55.280> wound<01:15:55.600> together\npath is just completely wound together\npath is just completely wound together with<01:15:56.000> the<01:15:56.159> idea<01:15:56.560> of<01:15:56.800> pulling<01:15:57.120> the<01:15:57.280> data<01:15:57.440> from\nwith the idea of pulling the data from\nwith the idea of pulling the data from the<01:15:57.679> file<01:15:57.920> system.<01:15:58.400> Now,<01:15:58.640> a<01:15:58.800> contentbased\nthe file system. Now, a contentbased\nthe file system. Now, a contentbased viewing<01:15:59.840> program<01:16:00.640> produces<01:16:01.040> a<01:16:01.199> UI\nviewing program produces a UI\nviewing program produces a UI given<01:16:03.120> some<01:16:03.280> blob<01:16:03.600> of<01:16:03.760> data<01:16:04.640> whether<01:16:04.880> it's\ngiven some blob of data whether it's\ngiven some blob of data whether it's read<01:16:05.280> from<01:16:05.360> the<01:16:05.520> file<01:16:05.760> system<01:16:06.000> or<01:16:06.239> from\nread from the file system or from\nread from the file system or from somewhere<01:16:06.800> else.<01:16:07.600> So<01:16:07.760> the<01:16:08.000> input<01:16:08.320> is<01:16:08.480> the<01:16:08.719> data\nsomewhere else. So the input is the data\nsomewhere else. So the input is the data instead<01:16:09.360> of<01:16:09.440> the<01:16:09.679> path<01:16:09.920> to<01:16:10.080> the<01:16:10.239> data<01:16:11.120> since\ninstead of the path to the data since\ninstead of the path to the data since the<01:16:11.600> path<01:16:11.840> is<01:16:12.080> coupled<01:16:12.400> to<01:16:12.480> the<01:16:12.640> file<01:16:12.880> system.\nthe path is coupled to the file system.\nthe path is coupled to the file system. Now<01:16:14.239> we<01:16:14.480> know<01:16:14.640> that<01:16:14.880> in<01:16:15.040> the<01:16:15.120> debugger<01:16:15.840> the\nNow we know that in the debugger the\nNow we know that in the debugger the user<01:16:16.640> can<01:16:16.800> refer<01:16:17.120> to<01:16:17.520> content<01:16:18.400> using<01:16:18.719> an\nuser can refer to content using an\nuser can refer to content using an evaluation.\nevaluation.\nevaluation. So<01:16:22.000> let's<01:16:22.159> evaluate<01:16:22.800> uh<01:16:22.960> let's<01:16:23.199> let's<01:16:23.600> um\nSo let's evaluate uh let's let's um\nSo let's evaluate uh let's let's um imagine<01:16:24.400> what<01:16:24.560> we<01:16:24.719> need<01:16:24.880> in<01:16:25.040> order<01:16:25.199> to<01:16:25.440> build<01:16:25.920> a\nimagine what we need in order to build a\nimagine what we need in order to build a bit<01:16:26.400> map<01:16:26.640> viewer.<01:16:27.760> The<01:16:27.920> user<01:16:28.159> specifies<01:16:28.640> some\nbit map viewer. The user specifies some\nbit map viewer. The user specifies some evaluation,<01:16:29.679> some<01:16:29.920> visualizer<01:16:30.400> parameters\nevaluation, some visualizer parameters\nevaluation, some visualizer parameters and<01:16:31.280> we<01:16:31.520> need<01:16:31.600> to<01:16:31.760> map<01:16:32.000> that<01:16:32.719> uh<01:16:33.040> to<01:16:33.360> some<01:16:33.600> data\nand we need to map that uh to some data\nand we need to map that uh to some data and<01:16:34.000> present<01:16:34.239> that<01:16:34.400> as<01:16:34.560> a<01:16:34.719> texture<01:16:35.040> somehow.\nand present that as a texture somehow.\nand present that as a texture somehow. that<01:16:36.239> might<01:16:36.480> require<01:16:36.880> like\nthat might require like\nthat might require like uploading<01:16:39.520> the<01:16:39.760> data<01:16:39.920> to<01:16:40.080> the<01:16:40.239> GPU<01:16:40.719> and\nuploading the data to the GPU and\nuploading the data to the GPU and obtaining<01:16:41.360> a<01:16:41.520> handle<01:16:41.840> to<01:16:41.920> a<01:16:42.080> texture<01:16:42.800> and<01:16:42.960> then\nobtaining a handle to a texture and then\nobtaining a handle to a texture and then we<01:16:43.280> render<01:16:43.679> with<01:16:43.840> that<01:16:44.080> texture.\nwe render with that texture.\nwe render with that texture. Now<01:16:45.840> to<01:16:46.000> do<01:16:46.080> that<01:16:46.239> we<01:16:46.400> might<01:16:46.560> need<01:16:46.640> to<01:16:46.800> do\nNow to do that we might need to do\nNow to do that we might need to do something<01:16:47.600> like<01:16:47.760> these<01:16:48.080> steps<01:16:48.480> like<01:16:48.640> given\nsomething like these steps like given\nsomething like these steps like given some<01:16:49.120> evaluation<01:16:49.600> you<01:16:49.840> extract<01:16:50.159> base<01:16:50.480> address\nsome evaluation you extract base address\nsome evaluation you extract base address and<01:16:51.360> a<01:16:51.600> space<01:16:52.719> you<01:16:52.880> extract<01:16:53.280> some<01:16:53.440> memory<01:16:53.840> size\nand a space you extract some memory size\nand a space you extract some memory size which<01:16:55.360> you<01:16:55.520> would<01:16:55.600> get<01:16:55.760> from<01:16:55.920> the<01:16:56.080> visualizer\nwhich you would get from the visualizer\nwhich you would get from the visualizer things<01:16:57.600> because<01:16:58.000> specify<01:16:58.400> the<01:16:58.560> dimensions\nthings because specify the dimensions\nthings because specify the dimensions the<01:16:59.040> format<01:16:59.280> you<01:16:59.440> can<01:16:59.520> infer<01:16:59.840> the<01:17:00.000> memory<01:17:00.239> size\nthe format you can infer the memory size\nthe format you can infer the memory size you<01:17:01.440> need<01:17:01.520> to<01:17:01.679> read<01:17:01.840> the<01:17:02.000> memory<01:17:02.239> from<01:17:02.320> the\nyou need to read the memory from the\nyou need to read the memory from the space<01:17:02.719> and<01:17:02.960> you<01:17:03.040> need<01:17:03.199> to<01:17:03.280> upload<01:17:03.600> the<01:17:03.840> memory\nspace and you need to upload the memory\nspace and you need to upload the memory to<01:17:04.159> the<01:17:04.320> GPU<01:17:04.719> storage<01:17:05.120> right\nto the GPU storage right\nto the GPU storage right now<01:17:08.560> the<01:17:08.800> naive<01:17:09.120> implementation<01:17:09.520> of<01:17:09.679> this\nnow the naive implementation of this\nnow the naive implementation of this would<01:17:10.000> just<01:17:10.239> put<01:17:10.400> this<01:17:10.560> straight<01:17:10.800> up<01:17:11.440> into<01:17:11.760> the\nwould just put this straight up into the\nwould just put this straight up into the into<01:17:12.159> the<01:17:12.320> UI<01:17:12.640> build<01:17:13.120> right<01:17:14.480> the<01:17:14.640> UI<01:17:14.880> is<01:17:15.040> just\ninto the UI build right the UI is just\ninto the UI build right the UI is just going<01:17:15.520> along.<01:17:15.760> It's<01:17:15.920> like<01:17:16.080> building<01:17:16.239> buttons\ngoing along. It's like building buttons\ngoing along. It's like building buttons and<01:17:16.719> stuff<01:17:16.800> and<01:17:16.960> it's<01:17:17.199> like<01:17:17.520> need<01:17:17.679> to<01:17:17.760> build<01:17:17.840> a\nand stuff and it's like need to build a\nand stuff and it's like need to build a bit<01:17:18.159> map<01:17:18.400> viewer.<01:17:18.880> Let's<01:17:19.199> like<01:17:19.360> get<01:17:19.600> the<01:17:19.679> base\nbit map viewer. Let's like get the base\nbit map viewer. Let's like get the base address,<01:17:20.400> the<01:17:20.640> space,<01:17:21.120> get<01:17:21.360> how<01:17:21.520> many<01:17:21.679> bytes<01:17:21.920> I\naddress, the space, get how many bytes I\naddress, the space, get how many bytes I need<01:17:22.159> to<01:17:22.239> read,<01:17:22.480> read<01:17:22.719> all<01:17:22.800> the<01:17:22.960> memory<01:17:23.199> and\nneed to read, read all the memory and\nneed to read, read all the memory and then<01:17:23.520> upload<01:17:23.840> it<01:17:23.920> and<01:17:24.080> then<01:17:24.239> get<01:17:24.400> a<01:17:24.560> texture\nthen upload it and then get a texture\nthen upload it and then get a texture handle.<01:17:26.080> Um,<01:17:26.960> so<01:17:27.120> that's<01:17:27.360> the<01:17:27.520> naive\nhandle. Um, so that's the naive\nhandle. Um, so that's the naive implementation.<01:17:28.320> You<01:17:28.400> just<01:17:28.560> do<01:17:28.640> that<01:17:28.800> all<01:17:28.960> on\nimplementation. You just do that all on\nimplementation. You just do that all on the<01:17:29.120> UI<01:17:29.440> thread.<01:17:30.320> Um,<01:17:31.040> you<01:17:31.280> run<01:17:31.440> into<01:17:31.600> a\nthe UI thread. Um, you run into a\nthe UI thread. Um, you run into a problem<01:17:31.920> with<01:17:32.080> that<01:17:32.800> unsurprisingly,<01:17:33.920> which\nproblem with that unsurprisingly, which\nproblem with that unsurprisingly, which is<01:17:34.239> that<01:17:34.400> the<01:17:34.560> size<01:17:34.719> of<01:17:34.800> this<01:17:35.040> data<01:17:35.199> is\nis that the size of this data is\nis that the size of this data is unbounded.\nunbounded.\nunbounded. You<01:17:37.600> have<01:17:37.760> very<01:17:38.000> few<01:17:38.239> constraints<01:17:38.640> about<01:17:38.880> how\nYou have very few constraints about how\nYou have very few constraints about how large<01:17:39.440> this<01:17:39.679> can<01:17:39.840> actually<01:17:40.080> be.<01:17:41.199> um<01:17:42.400> which\nlarge this can actually be. um which\nlarge this can actually be. um which also<01:17:42.960> means\nalso means\nalso means that<01:17:45.040> is<01:17:45.199> unbounded.<01:17:46.159> These<01:17:46.480> two<01:17:46.640> things<01:17:46.719> are\nthat is unbounded. These two things are\nthat is unbounded. These two things are unbounded.<01:17:47.760> So<01:17:48.320> remember<01:17:48.719> like<01:17:49.120> everything\nunbounded. So remember like everything\nunbounded. So remember like everything up<01:17:49.679> until<01:17:49.920> this<01:17:50.159> point<01:17:50.480> I've<01:17:50.719> been<01:17:50.880> like\nup until this point I've been like\nup until this point I've been like talking<01:17:51.280> about<01:17:51.360> how<01:17:51.520> to<01:17:51.679> window<01:17:51.920> a<01:17:52.159> watch\ntalking about how to window a watch\ntalking about how to window a watch tree.<01:17:52.640> I've<01:17:52.880> talked<01:17:53.040> about<01:17:53.440> how<01:17:53.679> to<01:17:53.760> like\ntree. I've talked about how to like\ntree. I've talked about how to like scope<01:17:54.320> down<01:17:54.480> what<01:17:54.640> the<01:17:54.800> debugger<01:17:55.120> is<01:17:55.199> looking\nscope down what the debugger is looking\nscope down what the debugger is looking at<01:17:55.520> because<01:17:55.679> otherwise<01:17:55.920> our<01:17:56.159> debugger<01:17:56.480> UI<01:17:56.719> is\nat because otherwise our debugger UI is\nat because otherwise our debugger UI is going<01:17:56.880> to<01:17:57.040> be<01:17:57.280> going<01:17:57.440> to<01:17:57.520> have<01:17:57.679> way<01:17:57.920> too<01:17:58.080> much\ngoing to be going to have way too much\ngoing to be going to have way too much stuff<01:17:58.400> to<01:17:58.560> do.<01:17:58.960> You've<01:17:59.280> got<01:17:59.440> just<01:18:00.080> so<01:18:00.320> much\nstuff to do. You've got just so much\nstuff to do. You've got just so much memory<01:18:00.719> to<01:18:00.880> read,<01:18:01.120> so<01:18:01.280> much<01:18:01.440> stuff<01:18:01.600> to<01:18:01.760> build.\nmemory to read, so much stuff to build.\nmemory to read, so much stuff to build. All<01:18:03.120> like<01:18:03.679> half<01:18:04.000> this<01:18:04.159> talk<01:18:04.480> has<01:18:04.719> really<01:18:04.880> been\nAll like half this talk has really been\nAll like half this talk has really been about<01:18:05.520> how<01:18:05.679> do<01:18:05.760> I<01:18:06.000> scope<01:18:06.320> this<01:18:06.560> down?<01:18:07.199> How<01:18:07.360> do<01:18:07.440> I\nabout how do I scope this down? How do I\nabout how do I scope this down? How do I not<01:18:07.840> do<01:18:07.920> all<01:18:08.159> that<01:18:08.320> work?<01:18:09.199> And<01:18:09.360> I've<01:18:09.600> just<01:18:09.760> like\nnot do all that work? And I've just like\nnot do all that work? And I've just like completely<01:18:10.400> eliminated<01:18:10.880> all<01:18:11.120> that<01:18:11.199> with<01:18:11.360> this\ncompletely eliminated all that with this\ncompletely eliminated all that with this step,<01:18:12.719> right?\nstep, right?\nstep, right? Furthermore,<01:18:15.679> this<01:18:15.840> isn't<01:18:16.080> a<01:18:16.239> windowed\nFurthermore, this isn't a windowed\nFurthermore, this isn't a windowed problem.<01:18:17.120> Like<01:18:17.280> you<01:18:17.440> can't<01:18:17.600> really<01:18:17.840> window\nproblem. Like you can't really window\nproblem. Like you can't really window this<01:18:18.400> part.<01:18:19.600> Um,<01:18:20.719> doesn't<01:18:20.960> really<01:18:21.120> fit<01:18:21.280> the\nthis part. Um, doesn't really fit the\nthis part. Um, doesn't really fit the pattern.<01:18:22.400> Uh,<01:18:23.040> other<01:18:23.360> visualizers,<01:18:24.000> similar\npattern. Uh, other visualizers, similar\npattern. Uh, other visualizers, similar problem.<01:18:24.880> To<01:18:25.040> visualize<01:18:25.440> text,<01:18:26.080> pull<01:18:26.239> it<01:18:26.400> all\nproblem. To visualize text, pull it all\nproblem. To visualize text, pull it all down.<01:18:27.120> Disassembly,<01:18:27.760> pull<01:18:27.840> it<01:18:27.920> all<01:18:28.080> down.\ndown. Disassembly, pull it all down.\ndown. Disassembly, pull it all down. Geometry,<01:18:28.800> pull<01:18:28.960> it<01:18:29.040> all<01:18:29.280> down.<01:18:30.080> Um,<01:18:31.040> pointer\nGeometry, pull it all down. Um, pointer\nGeometry, pull it all down. Um, pointer visualizer,<01:18:32.320> you<01:18:32.480> got<01:18:32.640> to<01:18:32.719> like<01:18:32.960> walk<01:18:33.199> the\nvisualizer, you got to like walk the\nvisualizer, you got to like walk the pointer<01:18:33.760> graph<01:18:34.000> and<01:18:34.159> build<01:18:34.320> it<01:18:34.560> up.<01:18:35.760> And<01:18:35.920> so\npointer graph and build it up. And so\npointer graph and build it up. And so you<01:18:36.239> need<01:18:36.400> this<01:18:36.560> like<01:18:36.800> large<01:18:37.120> data\nyou need this like large data\nyou need this like large data preparation<01:18:38.000> pass<01:18:38.800> before<01:18:39.120> you<01:18:39.360> actually<01:18:39.520> go\npreparation pass before you actually go\npreparation pass before you actually go and<01:18:39.920> build<01:18:40.080> the<01:18:40.239> visualizer<01:18:40.800> UI.<01:18:41.600> Um<01:18:43.040> so\nand build the visualizer UI. Um so\nand build the visualizer UI. Um so putting<01:18:43.679> this<01:18:43.920> non-winded<01:18:44.560> stuff<01:18:44.719> in<01:18:44.880> the<01:18:45.040> UI\nputting this non-winded stuff in the UI\nputting this non-winded stuff in the UI build<01:18:45.520> just<01:18:45.760> compromises<01:18:46.239> everything.<01:18:46.560> It\nbuild just compromises everything. It\nbuild just compromises everything. It just<01:18:46.880> ruins<01:18:47.199> everything<01:18:47.520> else.<01:18:48.080> If<01:18:48.320> you<01:18:48.400> do\njust ruins everything else. If you do\njust ruins everything else. If you do this<01:18:48.719> it's<01:18:48.960> like<01:18:49.600> nothing<01:18:49.920> was<01:18:50.159> gained.\nthis it's like nothing was gained.\nthis it's like nothing was gained. So<01:18:53.280> instead\nSo instead\nSo instead the<01:18:56.239> evaluation<01:18:56.800> and<01:18:56.960> UI<01:18:57.360> paths<01:18:58.239> use<01:18:58.719> light\nthe evaluation and UI paths use light\nthe evaluation and UI paths use light keys<01:18:59.520> to<01:18:59.679> the<01:18:59.840> data.<01:19:00.159> So<01:19:00.320> they<01:19:00.560> say<01:19:01.120> I've<01:19:01.440> got\nkeys to the data. So they say I've got\nkeys to the data. So they say I've got some<01:19:01.840> light<01:19:02.159> key<01:19:02.400> which<01:19:02.640> can<01:19:03.120> which<01:19:03.360> can<01:19:03.520> be\nsome light key which can which can be\nsome light key which can which can be used<01:19:03.840> to<01:19:04.000> get<01:19:04.159> to<01:19:04.320> the<01:19:04.480> data\nused to get to the data\nused to get to the data which<01:19:06.800> this<01:19:06.960> is<01:19:07.120> what<01:19:07.360> a<01:19:07.840> like<01:19:08.560> when<01:19:08.719> you<01:19:08.880> use<01:19:09.040> a\nwhich this is what a like when you use a\nwhich this is what a like when you use a file<01:19:09.840> system<01:19:10.080> based<01:19:10.400> program<01:19:10.880> this<01:19:10.960> is<01:19:11.040> what\nfile system based program this is what\nfile system based program this is what the<01:19:11.360> path<01:19:11.520> is<01:19:11.760> right<01:19:11.840> you've<01:19:12.080> got<01:19:12.159> some<01:19:12.320> light\nthe path is right you've got some light\nthe path is right you've got some light key<01:19:13.040> it's<01:19:13.360> much<01:19:13.520> lighter<01:19:13.840> than<01:19:13.920> the<01:19:14.080> data\nkey it's much lighter than the data\nkey it's much lighter than the data which<01:19:14.480> you<01:19:14.719> can<01:19:14.880> use<01:19:15.040> to<01:19:15.280> get<01:19:15.440> to<01:19:15.600> the<01:19:15.760> data<01:19:16.800> and\nwhich you can use to get to the data and\nwhich you can use to get to the data and then<01:19:17.280> the<01:19:17.600> UI<01:19:17.920> thread<01:19:18.159> wants<01:19:18.400> to<01:19:18.480> sort<01:19:18.640> of<01:19:18.800> use\nthen the UI thread wants to sort of use\nthen the UI thread wants to sort of use that<01:19:19.199> key<01:19:19.760> and<01:19:19.920> sort<01:19:20.080> of<01:19:20.159> like<01:19:20.480> tell<01:19:20.800> some\nthat key and sort of like tell some\nthat key and sort of like tell some system<01:19:21.360> it's<01:19:21.520> like<01:19:21.760> look<01:19:21.920> I've<01:19:22.159> got<01:19:22.480> got<01:19:22.719> this\nsystem it's like look I've got got this\nsystem it's like look I've got got this key<01:19:23.199> give<01:19:23.280> me<01:19:23.440> the<01:19:23.920> go<01:19:24.159> and<01:19:24.320> read<01:19:24.560> and<01:19:24.800> prepare\nkey give me the go and read and prepare\nkey give me the go and read and prepare this<01:19:25.280> data<01:19:25.520> for<01:19:25.679> my<01:19:25.840> visualizer<01:19:27.040> and<01:19:27.199> then\nthis data for my visualizer and then\nthis data for my visualizer and then when<01:19:27.679> it's<01:19:27.840> ready<01:19:28.080> I'll<01:19:28.320> build<01:19:28.480> the<01:19:28.640> UI<01:19:28.880> with\nwhen it's ready I'll build the UI with\nwhen it's ready I'll build the UI with it<01:19:29.440> Right?\nit Right?\nit Right? So<01:19:31.840> even<01:19:32.080> if<01:19:32.239> some<01:19:32.400> data<01:19:32.640> preparation<01:19:33.120> task\nSo even if some data preparation task\nSo even if some data preparation task takes<01:19:33.920> like<01:19:34.960> n<01:19:35.280> frames<01:19:35.679> to<01:19:35.840> actually<01:19:36.080> execute,\ntakes like n frames to actually execute,\ntakes like n frames to actually execute, the<01:19:36.960> debugger's<01:19:37.440> UI<01:19:37.760> can<01:19:38.000> continue<01:19:38.320> just\nthe debugger's UI can continue just\nthe debugger's UI can continue just going<01:19:38.719> along<01:19:39.040> smoothly.\ngoing along smoothly.\ngoing along smoothly. Very<01:19:42.000> simple<01:19:42.239> way<01:19:42.400> to<01:19:42.640> produce<01:19:42.880> a<01:19:43.040> light<01:19:43.280> key\nVery simple way to produce a light key\nVery simple way to produce a light key which<01:19:44.159> refers<01:19:44.560> to<01:19:44.800> some<01:19:45.040> data<01:19:45.280> uniquely\nwhich refers to some data uniquely\nwhich refers to some data uniquely is<01:19:47.280> to<01:19:47.440> take<01:19:47.600> a<01:19:47.760> hash<01:19:47.920> of<01:19:48.080> the<01:19:48.239> data.<01:19:48.880> So\nis to take a hash of the data. So\nis to take a hash of the data. So instead<01:19:49.920> of<01:19:50.080> reading<01:19:50.719> uh<01:19:50.880> all<01:19:51.040> the<01:19:51.280> data<01:19:51.520> for\ninstead of reading uh all the data for\ninstead of reading uh all the data for some<01:19:51.840> evaluation<01:19:52.400> every<01:19:52.640> frame,<01:19:54.000> you<01:19:54.159> map<01:19:54.400> it\nsome evaluation every frame, you map it\nsome evaluation every frame, you map it to<01:19:54.640> some<01:19:54.800> hash<01:19:55.120> of<01:19:55.280> the<01:19:55.440> data<01:19:56.239> which<01:19:56.400> can<01:19:56.640> serve\nto some hash of the data which can serve\nto some hash of the data which can serve as<01:19:56.880> the<01:19:57.040> unique<01:19:57.280> key<01:19:57.440> to<01:19:57.600> some<01:19:57.840> content.<01:19:59.120> So\nas the unique key to some content. So\nas the unique key to some content. So our<01:19:59.440> background<01:19:59.840> data<01:20:00.080> preparation<01:20:00.480> threads\nour background data preparation threads\nour background data preparation threads can<01:20:00.960> use<01:20:01.120> that<01:20:01.280> hash<01:20:01.920> to<01:20:02.159> obtain<01:20:02.480> the<01:20:02.719> data<01:20:02.960> and\ncan use that hash to obtain the data and\ncan use that hash to obtain the data and then<01:20:03.440> process<01:20:03.760> it<01:20:04.400> and<01:20:04.560> so<01:20:04.719> on.\nSo<01:20:09.360> the<01:20:09.520> first<01:20:09.679> thing<01:20:09.840> we<01:20:10.000> need<01:20:10.159> to<01:20:10.320> do<01:20:10.960> uh<01:20:11.199> we\nSo the first thing we need to do uh we\nSo the first thing we need to do uh we need<01:20:11.679> to<01:20:11.840> do<01:20:12.080> that<01:20:12.640> is<01:20:12.719> just<01:20:12.960> a<01:20:13.120> cache<01:20:13.760> from<01:20:14.239> a\nneed to do that is just a cache from a\nneed to do that is just a cache from a hash<01:20:14.560> to<01:20:14.640> a<01:20:14.800> data<01:20:14.960> right<01:20:15.120> we've<01:20:15.280> got<01:20:15.360> some<01:20:15.600> data\nhash to a data right we've got some data\nhash to a data right we've got some data structure<01:20:16.400> in<01:20:16.640> our<01:20:16.800> program<01:20:17.040> which<01:20:17.280> says<01:20:17.679> hey\nstructure in our program which says hey\nstructure in our program which says hey look<01:20:18.080> you've<01:20:18.239> got<01:20:18.320> a<01:20:18.480> hash<01:20:18.800> here's<01:20:19.040> how<01:20:19.120> you\nlook you've got a hash here's how you\nlook you've got a hash here's how you get<01:20:19.360> the<01:20:19.440> data<01:20:19.600> for<01:20:19.760> the<01:20:19.920> hash<01:20:20.719> done.\nget the data for the hash done.\nget the data for the hash done. This<01:20:23.280> has<01:20:23.440> the<01:20:23.600> added<01:20:23.840> advantage<01:20:24.159> of<01:20:24.320> like\nThis has the added advantage of like\nThis has the added advantage of like this<01:20:24.719> is<01:20:24.880> dduplicating<01:20:25.600> everything,<01:20:25.920> right?\nthis is dduplicating everything, right?\nthis is dduplicating everything, right? If<01:20:26.239> you<01:20:26.320> hash<01:20:26.560> the<01:20:26.719> same<01:20:26.800> data<01:20:27.120> twice,<01:20:27.840> you<01:20:28.000> can\nIf you hash the same data twice, you can\nIf you hash the same data twice, you can trivially<01:20:28.800> see<01:20:28.960> that<01:20:29.120> when<01:20:29.280> you<01:20:29.440> implement\ntrivially see that when you implement\ntrivially see that when you implement this<01:20:29.840> data<01:20:30.080> structure.<01:20:30.400> It's<01:20:30.480> like,<01:20:30.640> oh,\nthis data structure. It's like, oh,\nthis data structure. It's like, oh, these<01:20:31.040> are<01:20:31.120> the<01:20:31.280> same<01:20:31.360> thing.<01:20:31.920> Um,<01:20:32.239> so<01:20:32.480> just,\nthese are the same thing. Um, so just,\nthese are the same thing. Um, so just, you<01:20:32.960> know,<01:20:33.120> don't<01:20:33.440> actually<01:20:33.679> store<01:20:33.920> it<01:20:34.080> twice.\nyou know, don't actually store it twice.\nyou know, don't actually store it twice. Um,<01:20:36.320> then<01:20:36.560> you<01:20:36.719> can<01:20:36.800> build<01:20:36.880> a<01:20:37.120> number<01:20:37.199> of<01:20:37.360> other\nUm, then you can build a number of other\nUm, then you can build a number of other caches<01:20:37.920> which<01:20:38.080> also<01:20:38.400> store<01:20:38.640> the<01:20:38.960> processed\ncaches which also store the processed\ncaches which also store the processed sort<01:20:39.679> of<01:20:39.840> data<01:20:40.239> representations.\nsort of data representations.\nsort of data representations. So<01:20:41.920> you<01:20:42.080> might<01:20:42.159> have<01:20:42.239> a<01:20:42.400> cache<01:20:42.719> which<01:20:43.120> uh<01:20:43.280> maps\nSo you might have a cache which uh maps\nSo you might have a cache which uh maps a<01:20:43.760> hash<01:20:44.000> and<01:20:44.080> a<01:20:44.239> parameters<01:20:44.560> to<01:20:44.719> a<01:20:44.880> texture\na hash and a parameters to a texture\na hash and a parameters to a texture hash<01:20:46.239> and<01:20:46.400> parameters<01:20:46.960> to<01:20:47.520> a<01:20:47.760> text<01:20:48.159> and<01:20:48.320> like<01:20:48.480> a\nhash and parameters to a text and like a\nhash and parameters to a text and like a parse<01:20:48.880> of<01:20:49.040> that<01:20:49.199> text<01:20:49.520> like<01:20:49.920> or<01:20:50.480> uh<01:20:50.640> sorry<01:20:51.040> not\nparse of that text like or uh sorry not\nparse of that text like or uh sorry not not<01:20:51.280> not<01:20:51.679> the<01:20:51.760> text<01:20:52.000> the<01:20:52.159> text<01:20:52.400> just<01:20:52.560> the<01:20:52.719> data\nnot not the text the text just the data\nnot not the text the text just the data but<01:20:53.040> the<01:20:53.280> the<01:20:53.520> the<01:20:54.000> textual<01:20:54.480> lex<01:20:54.719> and<01:20:54.960> parse<01:20:55.199> of\nbut the the the textual lex and parse of\nbut the the the textual lex and parse of the<01:20:55.440> data<01:20:56.000> got<01:20:56.239> some<01:20:56.400> cache<01:20:56.719> for<01:20:56.880> that\nhash<01:21:00.800> parameters<01:21:01.120> to<01:21:01.280> some<01:21:01.360> vertex<01:21:01.679> and<01:21:01.840> index\nhash parameters to some vertex and index\nhash parameters to some vertex and index buffer\nbuffer\nbuffer and<01:21:04.640> then<01:21:04.800> our<01:21:04.960> UI<01:21:05.360> thread<01:21:06.080> when<01:21:06.239> it's\nand then our UI thread when it's\nand then our UI thread when it's building<01:21:06.719> a<01:21:06.880> UI<01:21:07.280> for<01:21:07.440> a<01:21:07.600> visualizer<01:21:08.320> can<01:21:08.560> just\nbuilding a UI for a visualizer can just\nbuilding a UI for a visualizer can just read<01:21:08.960> from<01:21:09.120> these<01:21:09.360> caches<01:21:09.760> without<01:21:10.080> doing<01:21:10.239> the\nread from these caches without doing the\nread from these caches without doing the data<01:21:10.719> processing<01:21:11.120> itself.<01:21:11.280> itself.\ndata processing itself. itself.\ndata processing itself. itself. So,<01:21:13.360> um,<01:21:13.520> when<01:21:13.679> you're<01:21:13.840> building<01:21:13.920> a<01:21:14.080> bit<01:21:14.320> map\nSo, um, when you're building a bit map\nSo, um, when you're building a bit map viewer,<01:21:14.960> you<01:21:15.199> just<01:21:16.239> read<01:21:16.560> you<01:21:16.800> just<01:21:16.960> read<01:21:17.120> from\nviewer, you just read you just read from\nviewer, you just read you just read from that<01:21:17.520> cache.\nthat cache.\nthat cache. When<01:21:20.159> you<01:21:20.239> build<01:21:20.400> a<01:21:20.560> text<01:21:20.800> viewer,<01:21:21.520> read<01:21:21.760> from\nWhen you build a text viewer, read from\nWhen you build a text viewer, read from the<01:21:22.000> text<01:21:22.239> cache.<01:21:23.120> When<01:21:23.360> you're<01:21:23.440> building<01:21:23.600> a\nthe text cache. When you're building a\nthe text cache. When you're building a memory<01:21:24.080> viewer,<01:21:24.640> there's<01:21:24.880> there's<01:21:25.120> no\nmemory viewer, there's there's no\nmemory viewer, there's there's no special<01:21:25.520> cache.<01:21:25.840> You<01:21:25.920> need<01:21:26.159> just<01:21:26.320> get<01:21:26.480> the\nspecial cache. You need just get the\nspecial cache. You need just get the data<01:21:26.880> from<01:21:27.120> the<01:21:27.280> from<01:21:27.440> the<01:21:27.600> hash<01:21:27.840> to<01:21:28.000> data\ndata from the from the hash to data\ndata from the from the hash to data cache.<01:21:28.960> And<01:21:29.120> then<01:21:29.520> when<01:21:29.840> you're<01:21:30.080> doing<01:21:30.400> a\ncache. And then when you're doing a\ncache. And then when you're doing a geometry<01:21:31.440> visualizer,\ngeometry visualizer,\ngeometry visualizer, unsurprisingly,\nunsurprisingly,\nunsurprisingly, everyone<01:21:35.040> can<01:21:35.280> tell,<01:21:35.760> you<01:21:36.000> just<01:21:36.159> read<01:21:36.400> from\neveryone can tell, you just read from\neveryone can tell, you just read from that<01:21:36.719> cache,<01:21:37.040> right?\nthat cache, right?\nthat cache, right? And<01:21:38.880> again,<01:21:39.120> instead<01:21:39.360> of<01:21:39.520> the<01:21:39.679> UI<01:21:40.000> thread\nAnd again, instead of the UI thread\nAnd again, instead of the UI thread doing<01:21:40.480> that<01:21:40.719> work,<01:21:41.199> you've<01:21:41.440> got<01:21:41.520> these\ndoing that work, you've got these\ndoing that work, you've got these background<01:21:42.080> work<01:21:42.239> threads<01:21:42.560> that<01:21:42.719> are<01:21:42.800> that\nbackground work threads that are that\nbackground work threads that are that are<01:21:43.120> filling<01:21:43.440> those<01:21:43.600> caches<01:21:44.080> as<01:21:44.320> needed.<01:21:45.600> So\nare filling those caches as needed. So\nare filling those caches as needed. So the<01:21:45.840> UI<01:21:46.159> thread<01:21:46.400> can<01:21:46.719> request<01:21:47.199> some<01:21:47.440> hash.\nthe UI thread can request some hash.\nthe UI thread can request some hash. It's<01:21:47.920> like,<01:21:48.400> look,<01:21:48.640> I've<01:21:48.800> got<01:21:48.880> this<01:21:49.040> hash<01:21:49.280> from\nIt's like, look, I've got this hash from\nIt's like, look, I've got this hash from an<01:21:49.600> evaluation.<01:21:50.400> It<01:21:50.560> has<01:21:50.719> these<01:21:50.960> visualizer\nan evaluation. It has these visualizer\nan evaluation. It has these visualizer parameters.<01:21:52.960> Please<01:21:53.280> give<01:21:53.360> me<01:21:53.520> the<01:21:53.920> thing.\nparameters. Please give me the thing.\nparameters. Please give me the thing. And<01:21:54.320> then<01:21:54.480> the<01:21:54.639> cache<01:21:54.960> can<01:21:55.120> say,<01:21:55.600> hey<01:21:55.840> buddy,\nAnd then the cache can say, hey buddy,\nAnd then the cache can say, hey buddy, don't<01:21:56.239> have<01:21:56.320> it<01:21:56.480> yet.<01:21:56.880> UI<01:21:57.280> can<01:21:57.520> say<01:21:57.679> like,<01:21:58.639> no\ndon't have it yet. UI can say like, no\ndon't have it yet. UI can say like, no problem,<01:21:59.280> bro.<01:22:00.080> I'll<01:22:00.320> just,<01:22:00.639> you<01:22:00.719> know,<01:22:00.960> go\nproblem, bro. I'll just, you know, go\nproblem, bro. I'll just, you know, go and<01:22:01.760> draw<01:22:01.920> an<01:22:02.159> empty<01:22:02.400> screen<01:22:02.639> or<01:22:02.880> whatever<01:22:03.280> or\nand draw an empty screen or whatever or\nand draw an empty screen or whatever or an<01:22:03.679> empty<01:22:03.920> visualizer<01:22:04.400> in<01:22:04.639> that<01:22:04.800> case.<01:22:05.920> Um\nan empty visualizer in that case. Um\nan empty visualizer in that case. Um point<01:22:07.679> is<01:22:07.920> it<01:22:08.159> can<01:22:08.400> continue<01:22:08.719> along<01:22:09.040> smoothly,\npoint is it can continue along smoothly,\npoint is it can continue along smoothly, right?<01:22:09.600> The<01:22:09.679> UI<01:22:09.920> is<01:22:10.080> not<01:22:10.159> blocked,<01:22:10.480> the<01:22:10.639> user\nright? The UI is not blocked, the user\nright? The UI is not blocked, the user is<01:22:11.040> not<01:22:11.199> blocked,<01:22:11.840> which<01:22:12.080> is<01:22:12.560> priority.\nis not blocked, which is priority.\nis not blocked, which is priority. So<01:22:14.880> taking<01:22:15.120> a<01:22:15.280> step<01:22:15.440> back,<01:22:16.639> let's<01:22:16.880> think<01:22:17.040> about\nSo taking a step back, let's think about\nSo taking a step back, let's think about some<01:22:17.360> pseudo<01:22:17.760> code<01:22:17.920> we<01:22:18.159> might<01:22:18.400> write<01:22:18.639> to<01:22:18.880> build\nsome pseudo code we might write to build\nsome pseudo code we might write to build a<01:22:19.120> bit<01:22:19.360> map<01:22:19.520> viewer.<01:22:20.880> You<01:22:21.199> get<01:22:21.440> some\na bit map viewer. You get some\na bit map viewer. You get some evaluation.<01:22:22.239> It's<01:22:22.400> like<01:22:22.560> passed<01:22:22.800> into<01:22:23.040> the\nevaluation. It's like passed into the\nevaluation. It's like passed into the bitmap<01:22:23.520> viewer,<01:22:23.760> right?<01:22:24.080> Again,<01:22:24.400> this<01:22:24.560> is\nbitmap viewer, right? Again, this is\nbitmap viewer, right? Again, this is implementing<01:22:25.280> eval<01:22:25.679> to<01:22:25.840> UI.<01:22:26.320> That<01:22:26.560> arrow<01:22:27.120> get\nimplementing eval to UI. That arrow get\nimplementing eval to UI. That arrow get the<01:22:27.440> eval,<01:22:28.000> get<01:22:28.159> an<01:22:28.320> address,<01:22:28.639> get<01:22:28.719> a<01:22:28.880> width.\nthe eval, get an address, get a width.\nthe eval, get an address, get a width. Again,<01:22:29.360> these<01:22:29.600> are<01:22:29.679> all<01:22:29.840> implied<01:22:30.159> by<01:22:30.239> the<01:22:30.400> type\nAgain, these are all implied by the type\nAgain, these are all implied by the type info.<01:22:30.800> So<01:22:30.960> we<01:22:31.040> get<01:22:31.199> an<01:22:31.360> address,<01:22:31.600> width,\ninfo. So we get an address, width,\ninfo. So we get an address, width, height,<01:22:32.239> format,<01:22:32.719> size,<01:22:33.520> hash<01:22:34.400> from<01:22:34.639> some\nheight, format, size, hash from some\nheight, format, size, hash from some space<01:22:35.280> and<01:22:35.440> some<01:22:35.600> range.\nspace and some range.\nspace and some range. We<01:22:37.840> can<01:22:37.920> get<01:22:38.080> a<01:22:38.239> texture<01:22:38.560> from<01:22:38.719> some<01:22:38.880> hash<01:22:39.120> in\nWe can get a texture from some hash in\nWe can get a texture from some hash in those<01:22:39.520> parameters.<01:22:40.159> Then<01:22:40.320> we<01:22:40.480> can<01:22:40.560> draw<01:22:40.719> the\nthose parameters. Then we can draw the\nthose parameters. Then we can draw the texture.<01:22:41.600> Right?<01:22:42.400> Pretty<01:22:42.639> pretty<01:22:43.040> like\ntexture. Right? Pretty pretty like\ntexture. Right? Pretty pretty like pseudo<01:22:43.520> code<01:22:43.760> high<01:22:44.000> level,<01:22:44.159> but<01:22:44.719> hopefully\npseudo code high level, but hopefully\npseudo code high level, but hopefully that<01:22:45.199> sketches<01:22:45.600> it<01:22:45.760> out<01:22:45.920> pretty<01:22:46.159> well.\nStill<01:22:51.600> nervous<01:22:51.840> to<01:22:52.000> press<01:22:52.239> it.<01:22:53.040> Um\nStill nervous to press it. Um\nStill nervous to press it. Um now<01:22:55.520> the<01:22:55.679> last<01:22:55.760> thing<01:22:55.920> I'd<01:22:56.080> like<01:22:56.159> to<01:22:56.239> cover<01:22:56.400> is\nnow the last thing I'd like to cover is\nnow the last thing I'd like to cover is one<01:22:56.880> problem<01:22:57.679> we've<01:22:58.000> introduced<01:22:58.400> by\none problem we've introduced by\none problem we've introduced by switching<01:22:58.880> to<01:22:59.040> content<01:22:59.840> based<01:23:00.080> visualizers\nswitching to content based visualizers\nswitching to content based visualizers and<01:23:01.120> that<01:23:01.280> has<01:23:01.360> to<01:23:01.520> do<01:23:01.600> with<01:23:01.760> how<01:23:02.159> like<01:23:02.400> you\nand that has to do with how like you\nand that has to do with how like you have<01:23:02.639> a<01:23:02.800> hash<01:23:03.280> the<01:23:03.440> hash<01:23:03.679> can<01:23:03.920> change<01:23:04.159> across\nhave a hash the hash can change across\nhave a hash the hash can change across time<01:23:04.800> because<01:23:05.280> you<01:23:05.360> know<01:23:05.520> a<01:23:05.679> program<01:23:05.920> is\ntime because you know a program is\ntime because you know a program is mutating<01:23:06.719> some<01:23:06.960> some<01:23:07.280> data<01:23:07.920> so<01:23:08.080> you<01:23:08.239> get<01:23:08.400> a\nmutating some some data so you get a\nmutating some some data so you get a different<01:23:08.639> hash<01:23:08.960> when<01:23:09.120> you<01:23:09.199> actually<01:23:09.360> hash\ndifferent hash when you actually hash\ndifferent hash when you actually hash that<01:23:09.840> data.<01:23:10.560> So<01:23:10.880> you<01:23:11.040> know<01:23:11.120> if<01:23:11.280> you<01:23:11.440> step<01:23:12.080> like\nthat data. So you know if you step like\nthat data. So you know if you step like the<01:23:12.719> hash<01:23:13.040> of<01:23:13.440> many<01:23:13.760> things<01:23:14.000> will<01:23:14.239> change.\nthe hash of many things will change.\nthe hash of many things will change. So<01:23:17.120> imagine<01:23:17.520> this<01:23:17.760> scenario.<01:23:18.159> You<01:23:18.239> know,\nSo imagine this scenario. You know,\nSo imagine this scenario. You know, we've<01:23:18.560> got<01:23:18.639> some<01:23:18.880> visualizer.<01:23:19.360> It's<01:23:19.440> got<01:23:19.520> an\nwe've got some visualizer. It's got an\nwe've got some visualizer. It's got an eval<01:23:20.080> to<01:23:20.159> a<01:23:20.320> hash.<01:23:20.880> Get<01:23:21.120> some<01:23:21.280> hash<01:23:22.000> which<01:23:22.159> maps\neval to a hash. Get some hash which maps\neval to a hash. Get some hash which maps to<01:23:22.560> some<01:23:22.719> visualizer<01:23:23.199> data.<01:23:23.920> At<01:23:24.239> time<01:23:24.560> zero,\nto some visualizer data. At time zero,\nto some visualizer data. At time zero, like<01:23:25.280> we<01:23:25.520> were<01:23:25.760> building<01:23:26.000> the<01:23:26.159> UI<01:23:26.400> at<01:23:26.560> time\nlike we were building the UI at time\nlike we were building the UI at time zero.<01:23:27.600> A<01:23:27.760> and<01:23:27.920> B<01:23:28.080> both<01:23:28.400> pass.<01:23:28.800> We<01:23:28.960> get<01:23:29.040> an<01:23:29.199> eval\nzero. A and B both pass. We get an eval\nzero. A and B both pass. We get an eval and<01:23:29.600> a<01:23:29.679> hash.<01:23:29.920> We<01:23:30.000> get<01:23:30.080> a<01:23:30.159> hash<01:23:30.320> and<01:23:30.400> a\nand a hash. We get a hash and a\nand a hash. We get a hash and a visualizer<01:23:30.960> data.<01:23:31.600> All<01:23:31.760> good.<01:23:32.000> We<01:23:32.159> build<01:23:32.320> the\nvisualizer data. All good. We build the\nvisualizer data. All good. We build the visualizer.<01:23:33.840> At<01:23:34.159> t1,<01:23:35.040> we<01:23:35.199> get<01:23:35.360> a<01:23:35.520> new<01:23:35.679> hash,\nvisualizer. At t1, we get a new hash,\nvisualizer. At t1, we get a new hash, but<01:23:37.120> b<01:23:37.280> is<01:23:37.440> still<01:23:37.679> preparing,<01:23:38.800> which<01:23:39.120> means<01:23:39.280> we\nbut b is still preparing, which means we\nbut b is still preparing, which means we do<01:23:39.679> not<01:23:39.840> visualize<01:23:40.400> successfully.<01:23:41.840> And<01:23:42.000> at\ndo not visualize successfully. And at\ndo not visualize successfully. And at time<01:23:42.480> two,<01:23:42.800> B<01:23:43.120> has<01:23:43.360> actually<01:23:43.679> completed<01:23:44.159> again\ntime two, B has actually completed again\ntime two, B has actually completed again with<01:23:44.880> the<01:23:45.040> new<01:23:45.199> hash.<01:23:45.520> And<01:23:45.679> we<01:23:45.840> can<01:23:46.000> continue\nwith the new hash. And we can continue\nwith the new hash. And we can continue building<01:23:47.120> the<01:23:47.360> the<01:23:47.679> UI.\nbuilding the the UI.\nbuilding the the UI. And<01:23:49.920> what<01:23:50.159> this<01:23:50.400> manifests<01:23:50.960> as<01:23:51.280> as<01:23:52.080> maybe\nAnd what this manifests as as maybe\nAnd what this manifests as as maybe unsurprisingly<01:23:53.040> is<01:23:53.280> at<01:23:53.520> time<01:23:53.679> zero<01:23:54.000> you<01:23:54.159> get<01:23:54.239> a\nunsurprisingly is at time zero you get a\nunsurprisingly is at time zero you get a picture.<01:23:54.719> At<01:23:54.880> time<01:23:55.040> one<01:23:55.280> you<01:23:55.440> don't.<01:23:55.920> At<01:23:56.159> time\npicture. At time one you don't. At time\npicture. At time one you don't. At time two<01:23:57.440> you<01:23:57.679> get<01:23:57.840> a<01:23:58.000> picture.<01:23:58.719> It's<01:23:58.960> flickering.\ntwo you get a picture. It's flickering.\ntwo you get a picture. It's flickering. It<01:23:59.679> gets<01:23:59.920> harder<01:24:00.159> to<01:24:00.320> track<01:24:00.639> how<01:24:00.880> data<01:24:01.120> is\nIt gets harder to track how data is\nIt gets harder to track how data is changing<01:24:01.600> across<01:24:02.000> time<01:24:02.800> because<01:24:03.120> you've<01:24:03.360> lost\nchanging across time because you've lost\nchanging across time because you've lost that<01:24:03.760> sort<01:24:03.920> of<01:24:04.000> what<01:24:04.239> the<01:24:04.400> file<01:24:04.560> path<01:24:04.880> was\nthat sort of what the file path was\nthat sort of what the file path was providing<01:24:05.280> was<01:24:05.520> sort<01:24:05.679> of<01:24:05.679> the<01:24:06.000> identity.<01:24:06.400> It's\nproviding was sort of the identity. It's\nproviding was sort of the identity. It's sort<01:24:06.719> of<01:24:06.800> this<01:24:07.040> key<01:24:07.600> that<01:24:07.920> refers.<01:24:08.400> It's<01:24:08.639> like\nsort of this key that refers. It's like\nsort of this key that refers. It's like the<01:24:09.040> name<01:24:09.280> of<01:24:09.360> the<01:24:09.600> thing<01:24:10.080> but<01:24:10.320> not<01:24:10.480> the\nthe name of the thing but not the\nthe name of the thing but not the content<01:24:10.880> of<01:24:11.040> the<01:24:11.120> thing.<01:24:11.360> It<01:24:11.520> can<01:24:11.600> refer<01:24:11.840> to\ncontent of the thing. It can refer to\ncontent of the thing. It can refer to the<01:24:12.159> same<01:24:12.320> thing<01:24:12.480> across<01:24:12.880> time.<01:24:13.600> We<01:24:13.920> lost<01:24:14.159> that\nthe same thing across time. We lost that\nthe same thing across time. We lost that when<01:24:14.560> we<01:24:14.719> moved<01:24:14.960> to<01:24:16.239> to<01:24:16.560> content<01:24:17.440> based\nwhen we moved to to content based\nwhen we moved to to content based visualizers.<01:24:18.400> So<01:24:18.560> how<01:24:18.639> do<01:24:18.719> we<01:24:18.880> get<01:24:18.960> it<01:24:19.120> back?\nvisualizers. So how do we get it back?\nvisualizers. So how do we get it back? Um<01:24:22.719> and<01:24:23.040> really<01:24:24.080> maybe<01:24:24.400> not<01:24:24.639> surprising<01:24:25.600> we\nUm and really maybe not surprising we\nUm and really maybe not surprising we really<01:24:26.000> want<01:24:26.159> to<01:24:26.320> map<01:24:26.639> to<01:24:27.120> some<01:24:27.440> key<01:24:27.760> which<01:24:28.000> can\nreally want to map to some key which can\nreally want to map to some key which can get<01:24:28.320> us<01:24:28.480> to<01:24:28.639> a<01:24:28.880> list<01:24:29.120> of<01:24:29.280> hashes<01:24:30.080> like<01:24:30.239> a\nget us to a list of hashes like a\nget us to a list of hashes like a history<01:24:30.719> of<01:24:30.880> hashes<01:24:31.360> if<01:24:31.520> you<01:24:31.600> will.\nhistory of hashes if you will.\nhistory of hashes if you will. And<01:24:32.960> at<01:24:33.199> that<01:24:33.440> point,<01:24:34.000> once<01:24:34.239> we<01:24:34.400> have<01:24:34.560> that,\nAnd at that point, once we have that,\nAnd at that point, once we have that, once<01:24:35.360> we<01:24:35.520> have<01:24:35.600> some<01:24:35.920> unique<01:24:36.400> identity<01:24:36.719> which\nonce we have some unique identity which\nonce we have some unique identity which can<01:24:37.040> refer<01:24:37.280> to<01:24:37.360> a<01:24:37.520> history<01:24:37.760> of<01:24:37.920> hashes<01:24:38.320> across\ncan refer to a history of hashes across\ncan refer to a history of hashes across time,<01:24:39.199> we're<01:24:39.360> at<01:24:39.520> time<01:24:39.760> one,<01:24:40.480> we<01:24:40.719> know<01:24:40.960> B\ntime, we're at time one, we know B\ntime, we're at time one, we know B fails,<01:24:41.679> we<01:24:41.920> just<01:24:42.080> roll<01:24:42.320> back,<01:24:42.639> just<01:24:43.040> okay,\nfails, we just roll back, just okay,\nfails, we just roll back, just okay, grab<01:24:43.600> the<01:24:43.760> previous<01:24:44.080> results,<01:24:44.719> keep<01:24:44.960> building\ngrab the previous results, keep building\ngrab the previous results, keep building the<01:24:45.360> stale<01:24:45.679> results<01:24:45.920> so<01:24:46.080> that<01:24:46.239> the<01:24:46.400> user<01:24:46.639> is\nthe stale results so that the user is\nthe stale results so that the user is not<01:24:46.960> like<01:24:47.360> seeing<01:24:47.600> stuff<01:24:47.840> flash<01:24:48.080> in<01:24:48.239> their\nnot like seeing stuff flash in their\nnot like seeing stuff flash in their face<01:24:48.480> when<01:24:48.639> they're<01:24:48.800> trying<01:24:48.880> to<01:24:48.960> see<01:24:49.040> how\nface when they're trying to see how\nface when they're trying to see how something<01:24:49.440> is<01:24:49.679> changing,<01:24:50.159> right?\nFurthermore,<01:24:54.560> this<01:24:54.880> step<01:24:55.280> is<01:24:55.520> the<01:24:55.679> first<01:24:55.920> step\nFurthermore, this step is the first step\nFurthermore, this step is the first step to<01:24:56.400> solving<01:24:56.639> a<01:24:56.880> different<01:24:57.040> problem.\nSo<01:25:01.920> while<01:25:02.159> this<01:25:02.320> kind<01:25:02.400> of<01:25:02.480> debugger\nSo while this kind of debugger\nSo while this kind of debugger visualization<01:25:03.440> engine<01:25:03.840> can<01:25:04.080> be<01:25:04.400> pretty<01:25:04.800> good\nvisualization engine can be pretty good\nvisualization engine can be pretty good at<01:25:06.000> like<01:25:06.239> looking<01:25:06.480> at<01:25:06.719> things<01:25:06.880> quickly<01:25:07.679> and\nat like looking at things quickly and\nat like looking at things quickly and interactively<01:25:08.719> and<01:25:08.880> and<01:25:08.960> and<01:25:09.840> seeing<01:25:10.320> data<01:25:10.639> at\ninteractively and and and seeing data at\ninteractively and and and seeing data at certain<01:25:11.199> points<01:25:11.520> in<01:25:11.760> time<01:25:12.880> and<01:25:13.040> still<01:25:13.280> lacking\ncertain points in time and still lacking\ncertain points in time and still lacking something<01:25:14.239> that<01:25:14.480> logging<01:25:14.960> provides<01:25:15.600> which<01:25:15.840> a\nsomething that logging provides which a\nsomething that logging provides which a log<01:25:16.320> kind<01:25:16.560> of<01:25:16.639> covers<01:25:16.960> a<01:25:17.199> whole<01:25:17.679> range<01:25:17.920> of\nlog kind of covers a whole range of\nlog kind of covers a whole range of time.<01:25:19.040> This<01:25:19.440> visualizer<01:25:20.080> kind<01:25:20.320> of<01:25:20.639> po<01:25:21.120> uh<01:25:21.600> sort\ntime. This visualizer kind of po uh sort\ntime. This visualizer kind of po uh sort of<01:25:21.840> like<01:25:22.000> pokes<01:25:22.400> into<01:25:22.719> points<01:25:22.960> of<01:25:23.120> time\nof like pokes into points of time\nof like pokes into points of time and<01:25:24.960> shows<01:25:25.360> state<01:25:26.159> at<01:25:26.400> those<01:25:26.639> moments.\nSo<01:25:33.679> by<01:25:33.920> mapping<01:25:34.239> an<01:25:34.400> evaluation<01:25:34.800> to<01:25:34.960> a<01:25:35.120> history\nSo by mapping an evaluation to a history\nSo by mapping an evaluation to a history of<01:25:35.440> hashes<01:25:36.560> um<01:25:36.800> rather<01:25:37.040> than<01:25:37.280> just<01:25:37.440> a<01:25:37.679> single\nof hashes um rather than just a single\nof hashes um rather than just a single like<01:25:38.239> most<01:25:38.560> recent<01:25:38.880> hash<01:25:39.920> um<01:25:40.719> we've<01:25:41.040> actually\nlike most recent hash um we've actually\nlike most recent hash um we've actually introduced<01:25:41.760> some<01:25:42.000> of<01:25:42.080> the<01:25:42.239> machinery<01:25:42.719> we<01:25:42.880> need\nintroduced some of the machinery we need\nintroduced some of the machinery we need to<01:25:43.440> start<01:25:43.679> rewinding<01:25:44.080> the<01:25:44.320> clock.\nto start rewinding the clock.\nto start rewinding the clock. So<01:25:46.719> this<01:25:46.880> way<01:25:47.040> we<01:25:47.199> can<01:25:47.360> see<01:25:47.679> like<01:25:47.920> an<01:25:48.159> entire\nSo this way we can see like an entire\nSo this way we can see like an entire entire<01:25:49.280> history<01:25:49.600> of<01:25:49.760> changes<01:25:51.040> um<01:25:51.440> to<01:25:51.679> some\nentire history of changes um to some\nentire history of changes um to some evaluation<01:25:52.960> that<01:25:53.199> sounds<01:25:53.440> an<01:25:53.600> awful<01:25:53.920> lot\nevaluation that sounds an awful lot\nevaluation that sounds an awful lot like<01:25:55.840> a<01:25:56.080> dynamic<01:25:56.560> logging<01:25:56.960> system.\nlike a dynamic logging system.\nlike a dynamic logging system. But<01:25:59.199> um<01:25:59.679> at<01:25:59.920> this<01:26:00.080> point<01:26:01.120> we've<01:26:01.440> reached<01:26:01.679> the\nBut um at this point we've reached the\nBut um at this point we've reached the boundaries<01:26:02.159> of<01:26:02.320> all<01:26:02.400> the<01:26:02.480> work<01:26:02.639> I've\nboundaries of all the work I've\nboundaries of all the work I've completed<01:26:04.000> uh<01:26:04.239> on<01:26:04.719> this<01:26:05.040> problem<01:26:05.360> and<01:26:05.760> kind<01:26:05.920> of\ncompleted uh on this problem and kind of\ncompleted uh on this problem and kind of what<01:26:06.159> I<01:26:06.320> was<01:26:06.480> able<01:26:06.560> to<01:26:06.719> fit<01:26:07.600> uh<01:26:07.840> into<01:26:08.159> like<01:26:08.400> this\nwhat I was able to fit uh into like this\nwhat I was able to fit uh into like this level<01:26:08.880> of<01:26:09.040> detail<01:26:09.360> and<01:26:09.679> and<01:26:09.840> this<01:26:10.080> time<01:26:11.520> uh<01:26:11.920> I\nlevel of detail and and this time uh I\nlevel of detail and and this time uh I realized<01:26:12.480> that<01:26:12.639> that<01:26:12.800> was<01:26:12.960> like<01:26:13.360> probably<01:26:13.679> a\nrealized that that was like probably a\nrealized that that was like probably a lot<01:26:14.000> of<01:26:14.159> information.<01:26:15.360> Uh\nlot of information. Uh\nlot of information. Uh uh<01:26:17.199> but<01:26:17.600> you<01:26:17.840> know<01:26:18.000> we've<01:26:18.320> walked<01:26:18.639> through<01:26:18.800> all\nuh but you know we've walked through all\nuh but you know we've walked through all the<01:26:19.199> building<01:26:19.440> blocks<01:26:19.679> of<01:26:19.840> a<01:26:20.000> general<01:26:20.320> purpose\nthe building blocks of a general purpose\nthe building blocks of a general purpose real-time<01:26:21.600> debugger<01:26:22.080> data<01:26:22.320> visualization\nreal-time debugger data visualization\nreal-time debugger data visualization engine.<01:26:23.280> So<01:26:23.520> from<01:26:24.000> process<01:26:24.400> control<01:26:25.199> to\nengine. So from process control to\nengine. So from process control to expression<01:26:26.000> compilation<01:26:26.480> and<01:26:26.639> evaluation<01:26:27.520> to\nexpression compilation and evaluation to\nexpression compilation and evaluation to debug<01:26:28.239> information<01:26:28.639> to<01:26:28.960> windowed<01:26:29.280> watch\ndebug information to windowed watch\ndebug information to windowed watch trees<01:26:29.920> all<01:26:30.080> the<01:26:30.159> way<01:26:30.320> to<01:26:30.880> visualization\ntrees all the way to visualization\ntrees all the way to visualization systems.<01:26:32.800> Now<01:26:33.600> there's<01:26:33.920> tons<01:26:34.080> of<01:26:34.239> problems<01:26:34.960> in\nsystems. Now there's tons of problems in\nsystems. Now there's tons of problems in this<01:26:35.440> space<01:26:35.679> that<01:26:35.920> I<01:26:36.080> have<01:26:36.320> not<01:26:36.639> like<01:26:37.199> explored\nthis space that I have not like explored\nthis space that I have not like explored and<01:26:38.320> so<01:26:38.480> there's<01:26:38.719> always<01:26:39.040> much<01:26:39.280> more<01:26:39.440> to<01:26:39.600> do.\nand so there's always much more to do.\nand so there's always much more to do. There's<01:26:40.080> always<01:26:40.239> so<01:26:40.400> much<01:26:40.560> stuff<01:26:40.639> to<01:26:40.800> do<01:26:40.880> in\nThere's always so much stuff to do in\nThere's always so much stuff to do in this<01:26:41.199> space.<01:26:42.239> Um<01:26:43.600> and<01:26:43.840> there's<01:26:44.000> a<01:26:44.159> lot<01:26:44.239> of<01:26:44.400> like\nthis space. Um and there's a lot of like\nthis space. Um and there's a lot of like implementation<01:26:45.280> details<01:26:45.600> that<01:26:45.840> are\nimplementation details that are\nimplementation details that are interesting<01:26:46.400> that<01:26:46.960> you<01:26:47.040> know<01:26:47.280> obviously\ninteresting that you know obviously\ninteresting that you know obviously there<01:26:48.320> I<01:26:48.480> need<01:26:48.639> a<01:26:48.800> higher<01:26:48.960> level<01:26:49.120> of<01:26:49.280> detail\nthere I need a higher level of detail\nthere I need a higher level of detail than<01:26:49.760> what<01:26:49.840> I<01:26:50.000> could<01:26:50.159> get<01:26:50.239> into<01:26:50.880> just<01:26:51.040> to<01:26:51.199> cover\nthan what I could get into just to cover\nthan what I could get into just to cover all<01:26:51.679> this.<01:26:52.800> But<01:26:52.960> I'm<01:26:53.120> happy<01:26:53.280> to<01:26:53.360> expand<01:26:53.600> on\nall this. But I'm happy to expand on\nall this. But I'm happy to expand on them<01:26:53.840> if<01:26:54.000> anyone<01:26:54.320> has<01:26:54.480> questions.\nthem if anyone has questions.\nthem if anyone has questions. So\nSo\nSo all<01:26:57.840> right,<01:26:58.719> one<01:26:58.960> thing<01:26:59.040> I<01:26:59.199> hope<01:26:59.360> to<01:26:59.520> get\nall right, one thing I hope to get\nall right, one thing I hope to get across<01:27:00.000> is<01:27:00.239> not<01:27:00.480> only<01:27:00.639> like<01:27:00.880> how<01:27:01.040> all<01:27:01.199> this<01:27:01.760> how\nacross is not only like how all this how\nacross is not only like how all this how this<01:27:02.239> kind<01:27:02.400> of<01:27:02.560> system<01:27:02.880> works,<01:27:03.520> but<01:27:03.760> why<01:27:04.159> it<01:27:04.639> uh\nthis kind of system works, but why it uh\nthis kind of system works, but why it uh matters<01:27:05.120> and<01:27:05.360> why<01:27:05.520> it's<01:27:05.679> an<01:27:05.840> exciting<01:27:06.159> and\nmatters and why it's an exciting and\nmatters and why it's an exciting and sort<01:27:06.560> of<01:27:06.639> fruitful<01:27:07.040> area<01:27:07.280> of<01:27:07.440> development.\nsort of fruitful area of development.\nsort of fruitful area of development. Computers<01:27:10.159> very<01:27:10.400> opaque.<01:27:11.679> I<01:27:12.000> know<01:27:12.159> we<01:27:12.320> have\nComputers very opaque. I know we have\nComputers very opaque. I know we have all<01:27:12.639> looked<01:27:12.880> like<01:27:13.040> this<01:27:13.360> at<01:27:13.600> some<01:27:13.760> point.<01:27:14.480> Um\nall looked like this at some point. Um\nall looked like this at some point. Um in<01:27:15.040> order<01:27:15.199> to<01:27:15.280> do<01:27:15.440> a<01:27:15.600> good<01:27:15.760> job<01:27:16.000> at<01:27:16.239> producing\nin order to do a good job at producing\nin order to do a good job at producing good<01:27:16.960> software,<01:27:17.920> we've<01:27:18.159> got<01:27:18.239> to<01:27:18.400> have<01:27:18.480> a\ngood software, we've got to have a\ngood software, we've got to have a strong<01:27:18.960> understanding<01:27:19.360> of<01:27:19.520> what<01:27:19.679> we're\nstrong understanding of what we're\nstrong understanding of what we're doing.<01:27:20.159> We<01:27:20.239> have<01:27:20.320> to<01:27:20.480> have<01:27:20.560> a<01:27:20.639> strong\ndoing. We have to have a strong\ndoing. We have to have a strong understanding<01:27:21.199> of<01:27:21.360> how<01:27:21.520> our<01:27:21.760> data<01:27:22.000> is\nunderstanding of how our data is\nunderstanding of how our data is changing<01:27:22.560> across<01:27:22.960> time<01:27:23.840> and<01:27:24.159> and<01:27:25.280> we<01:27:25.520> do<01:27:25.679> that\nchanging across time and and we do that\nchanging across time and and we do that better<01:27:26.159> with<01:27:26.400> visualizations.<01:27:27.199> So,<01:27:28.320> um<01:27:29.040> just\nbetter with visualizations. So, um just\nbetter with visualizations. So, um just like<01:27:29.440> to<01:27:29.600> say<01:27:29.760> I'm<01:27:29.920> I'm,<01:27:30.560> you<01:27:30.639> know,<01:27:30.800> I've<01:27:30.960> been\nlike to say I'm I'm, you know, I've been\nlike to say I'm I'm, you know, I've been working<01:27:31.199> on<01:27:31.360> this<01:27:31.440> problem<01:27:31.679> for<01:27:31.760> a<01:27:31.920> few<01:27:32.080> years.\nworking on this problem for a few years.\nworking on this problem for a few years. Uh<01:27:32.880> really<01:27:33.120> proud<01:27:33.360> of<01:27:33.840> the<01:27:34.159> progress<01:27:34.480> I've\nUh really proud of the progress I've\nUh really proud of the progress I've made,<01:27:34.960> but<01:27:35.679> um<01:27:35.920> really<01:27:36.239> happy<01:27:36.400> that<01:27:36.560> I<01:27:36.719> was\nmade, but um really happy that I was\nmade, but um really happy that I was able<01:27:36.960> to<01:27:37.040> come<01:27:37.199> and<01:27:37.360> share<01:27:37.840> it<01:27:38.080> with<01:27:38.320> everyone\nable to come and share it with everyone\nable to come and share it with everyone uh<01:27:39.280> here<01:27:39.440> and<01:27:39.679> then<01:27:40.000> online.<01:27:41.120> Um<01:27:41.520> and<01:27:41.679> I<01:27:41.920> hope\nuh here and then online. Um and I hope\nuh here and then online. Um and I hope it<01:27:42.159> was<01:27:42.320> interesting,<01:27:42.719> informative<01:27:43.679> uh<01:27:43.920> and\nit was interesting, informative uh and\nit was interesting, informative uh and helpful.<01:27:44.639> And<01:27:44.880> again,<01:27:45.199> thank<01:27:45.280> you<01:27:45.440> to<01:27:45.600> Sam,\nhelpful. And again, thank you to Sam,\nhelpful. And again, thank you to Sam, Sander,<01:27:46.400> and<01:27:46.560> Charlie<01:27:47.120> uh<01:27:47.280> for<01:27:47.440> the\nSander, and Charlie uh for the\nSander, and Charlie uh for the opportunity.\nopportunity.\nopportunity. And<01:27:50.000> Casey's<01:27:50.480> gone<01:27:50.800> now,<01:27:51.040> but<01:27:51.280> like<01:27:51.600> and<01:27:51.760> I\nAnd Casey's gone now, but like and I\nAnd Casey's gone now, but like and I know<01:27:52.080> we've<01:27:52.320> like<01:27:52.560> piled<01:27:52.960> tons<01:27:53.280> of<01:27:53.440> thank<01:27:53.600> yous\nknow we've like piled tons of thank yous\nknow we've like piled tons of thank yous onto<01:27:54.159> him,<01:27:54.400> but<01:27:55.040> uh<01:27:55.199> you<01:27:55.360> know,<01:27:55.440> I've<01:27:55.679> wanted\nonto him, but uh you know, I've wanted\nonto him, but uh you know, I've wanted to<01:27:56.000> put<01:27:56.159> one<01:27:56.320> more<01:27:56.480> in<01:27:56.639> my<01:27:56.800> talk.<01:27:57.600> Um<01:27:58.560> a<01:27:58.719> lot<01:27:58.880> of\nto put one more in my talk. Um a lot of\nto put one more in my talk. Um a lot of my<01:27:59.120> work<01:27:59.280> on<01:27:59.440> this<01:27:59.600> problem<01:27:59.920> required<01:28:00.400> like\nmy work on this problem required like\nmy work on this problem required like lots<01:28:01.040> of<01:28:01.120> insights<01:28:01.920> and<01:28:02.320> lots<01:28:02.560> of<01:28:02.719> like\nlots of insights and lots of like\nlots of insights and lots of like everything<01:28:03.280> down<01:28:03.440> to<01:28:03.679> like<01:28:04.159> programming\neverything down to like programming\neverything down to like programming techniques,<01:28:05.440> but<01:28:05.760> but<01:28:06.800> up<01:28:06.960> to<01:28:07.199> and<01:28:07.360> including\ntechniques, but but up to and including\ntechniques, but but up to and including stuff<01:28:08.000> within<01:28:08.400> this<01:28:08.560> problem<01:28:08.800> that<01:28:08.960> I<01:28:09.120> covered\nstuff within this problem that I covered\nstuff within this problem that I covered today.<01:28:09.920> And<01:28:10.080> a<01:28:10.320> lot<01:28:10.400> of<01:28:10.480> that<01:28:10.719> came<01:28:10.880> from\ntoday. And a lot of that came from\ntoday. And a lot of that came from insights<01:28:11.520> that<01:28:11.920> Casey<01:28:12.400> shared<01:28:13.120> years<01:28:13.360> ago,\ninsights that Casey shared years ago,\ninsights that Casey shared years ago, not<01:28:14.239> even<01:28:14.400> with<01:28:14.560> me,<01:28:14.719> but<01:28:14.880> with<01:28:15.120> people<01:28:15.280> like\nnot even with me, but with people like\nnot even with me, but with people like 10<01:28:15.760> years<01:28:15.920> ago.<01:28:16.159> And<01:28:16.320> he<01:28:16.480> told<01:28:16.639> me<01:28:16.719> about<01:28:16.880> it.\n10 years ago. And he told me about it.\n10 years ago. And he told me about it. I'm<01:28:17.280> like,<01:28:17.679> \"Wow,<01:28:18.159> that<01:28:18.400> needs<01:28:18.639> to<01:28:18.800> be\nI'm like, \"Wow, that needs to be\nI'm like, \"Wow, that needs to be implemented.\"<01:28:19.280> Like,<01:28:19.360> \"That's<01:28:19.600> a<01:28:19.760> really\nimplemented.\" Like, \"That's a really\nimplemented.\" Like, \"That's a really good<01:28:20.080> idea.\"<01:28:20.400> So<01:28:20.960> Casey<01:28:21.440> is<01:28:21.679> like,<01:28:22.400> you<01:28:22.560> know,\ngood idea.\" So Casey is like, you know,\ngood idea.\" So Casey is like, you know, none<01:28:22.880> of<01:28:22.960> this<01:28:23.040> would<01:28:23.199> have<01:28:23.360> happened<01:28:23.600> without\nnone of this would have happened without\nnone of this would have happened without him.<01:28:24.159> I<01:28:24.400> wouldn't<01:28:24.560> have<01:28:24.639> my<01:28:24.880> job.<01:28:25.040> I<01:28:25.280> wouldn't\nhim. I wouldn't have my job. I wouldn't\nhim. I wouldn't have my job. I wouldn't be<01:28:25.600> none<01:28:25.760> of<01:28:25.840> us<01:28:26.000> would<01:28:26.159> be<01:28:26.320> here.<01:28:26.719> I<01:28:26.960> wouldn't\nbe none of us would be here. I wouldn't\nbe none of us would be here. I wouldn't know<01:28:27.280> how<01:28:27.360> to<01:28:27.440> do<01:28:27.520> it.<01:28:27.679> I<01:28:27.920> wouldn't<01:28:28.080> know<01:28:28.159> how\nknow how to do it. I wouldn't know how\nknow how to do it. I wouldn't know how to<01:28:28.400> work<01:28:28.560> on<01:28:28.719> this<01:28:28.960> problem<01:28:29.520> were<01:28:29.760> it<01:28:29.920> not<01:28:30.080> for\nto work on this problem were it not for\nto work on this problem were it not for for<01:28:30.880> everything<01:28:31.280> he<01:28:31.520> did.<01:28:32.800> And<01:28:33.280> uh<01:28:34.719> so<01:28:34.960> yeah,<01:28:35.360> I\nfor everything he did. And uh so yeah, I\nfor everything he did. And uh so yeah, I mean,<01:28:36.480> tons<01:28:36.719> of<01:28:36.880> props<01:28:37.040> to<01:28:37.199> Casey,<01:28:37.600> obviously.\nmean, tons of props to Casey, obviously.\nmean, tons of props to Casey, obviously. Um<01:28:39.280> but<01:28:40.239> finally,<01:28:41.120> thank<01:28:41.280> you<01:28:41.600> all<01:28:41.920> for\nUm but finally, thank you all for\nUm but finally, thank you all for listening.<01:28:43.040> Thanks<01:28:43.280> for<01:28:43.520> bearing<01:28:43.840> with<01:28:44.000> me\nlistening. Thanks for bearing with me\nlistening. Thanks for bearing with me through<01:28:44.400> all<01:28:44.560> that<01:28:44.800> stuff.<01:28:45.520> Um,<01:28:46.000> and<01:28:46.239> thanks\nthrough all that stuff. Um, and thanks\nthrough all that stuff. Um, and thanks to<01:28:46.639> everyone<01:28:46.960> online<01:28:47.360> for<01:28:47.679> for<01:28:48.080> your<01:28:48.239> time<01:28:48.400> and\nto everyone online for for your time and\nto everyone online for for your time and attention.<01:28:49.440> And<01:28:49.600> that's<01:28:49.760> all<01:28:49.920> I've<01:28:50.159> got.\nattention. And that's all I've got.\nattention. And that's all I've got. Thank<01:28:51.120> you.\nAll<01:29:01.600> right.\nAll right.\nAll right. Hi<01:29:03.679> guys.\nHi guys.\nHi guys. I'm<01:29:06.000> Raphael.<01:29:06.880> Um,<01:29:07.360> sorry<01:29:07.679> my<01:29:08.000> voice<01:29:08.239> has\nI'm Raphael. Um, sorry my voice has\nI'm Raphael. Um, sorry my voice has given<01:29:08.960> up<01:29:09.120> on<01:29:09.360> day<01:29:09.520> one<01:29:09.760> and<01:29:10.000> I'm<01:29:10.560> just<01:29:10.880> hanging\ngiven up on day one and I'm just hanging\ngiven up on day one and I'm just hanging on<01:29:11.360> by<01:29:11.600> a<01:29:11.760> silver<01:29:12.080> thread,<01:29:12.239> but<01:29:12.400> I<01:29:12.560> hope<01:29:12.639> we<01:29:12.800> can\non by a silver thread, but I hope we can\non by a silver thread, but I hope we can still<01:29:13.199> make<01:29:13.360> this.<01:29:14.080> Uh,<01:29:14.560> great<01:29:14.800> talk.<01:29:15.280> Uh,\nstill make this. Uh, great talk. Uh,\nstill make this. Uh, great talk. Uh, great<01:29:16.239> work.<01:29:16.800> I<01:29:17.520> I<01:29:17.920> love<01:29:18.080> the<01:29:18.239> RAD<01:29:18.560> debugger.\ngreat work. I I love the RAD debugger.\ngreat work. I I love the RAD debugger. Like<01:29:19.440> the<01:29:19.679> times<01:29:20.000> I've<01:29:20.239> used<01:29:20.400> it,<01:29:20.639> I've<01:29:20.880> been\nLike the times I've used it, I've been\nLike the times I've used it, I've been blown<01:29:21.360> away<01:29:21.600> by<01:29:21.920> the<01:29:22.159> power<01:29:22.400> it<01:29:22.639> has.<01:29:22.960> Like<01:29:23.199> I\nblown away by the power it has. Like I\nblown away by the power it has. Like I think<01:29:23.600> you<01:29:23.840> sold<01:29:24.080> yourself<01:29:24.560> short<01:29:24.880> in<01:29:25.120> the\nthink you sold yourself short in the\nthink you sold yourself short in the talk<01:29:25.520> by<01:29:25.760> not<01:29:26.000> just<01:29:26.560> demoing<01:29:27.040> all<01:29:27.280> the<01:29:27.440> cool\ntalk by not just demoing all the cool\ntalk by not just demoing all the cool stuff<01:29:28.080> that<01:29:28.560> the<01:29:28.880> system<01:29:29.199> like<01:29:29.440> you<01:29:29.679> talk\nstuff that the system like you talk\nstuff that the system like you talk about<01:29:29.920> the<01:29:30.159> system,<01:29:30.400> but<01:29:30.719> like<01:29:31.360> the<01:29:31.600> amount<01:29:31.840> of\nabout the system, but like the amount of\nabout the system, but like the amount of power<01:29:32.159> it<01:29:32.320> gives<01:29:32.400> you<01:29:32.560> is<01:29:32.719> amazing.<01:29:32.880> I<01:29:33.120> want<01:29:33.199> to\npower it gives you is amazing. I want to\npower it gives you is amazing. I want to dive<01:29:33.520> into<01:29:33.679> that.<01:29:34.000> But<01:29:34.080> like<01:29:34.320> first<01:29:34.960> after<01:29:35.280> all\ndive into that. But like first after all\ndive into that. But like first after all the<01:29:35.920> praise<01:29:36.320> you've<01:29:36.639> gotten<01:29:36.960> for<01:29:37.360> the<01:29:37.520> red\nthe praise you've gotten for the red\nthe praise you've gotten for the red debugger<01:29:38.320> and<01:29:38.560> your<01:29:38.880> skills<01:29:39.360> over<01:29:39.600> the<01:29:39.760> past\ndebugger and your skills over the past\ndebugger and your skills over the past few<01:29:40.080> days<01:29:40.320> and<01:29:40.880> before<01:29:41.199> that<01:29:41.920> it<01:29:42.159> was<01:29:42.400> very\nfew days and before that it was very\nfew days and before that it was very refreshing<01:29:43.120> to<01:29:43.360> see<01:29:43.440> you<01:29:43.679> finally<01:29:44.080> fail<01:29:44.400> at<01:29:44.560> a\nrefreshing to see you finally fail at a\nrefreshing to see you finally fail at a technical<01:29:45.120> task<01:29:45.440> which<01:29:45.679> is<01:29:45.840> like<01:29:46.000> wrestling\ntechnical task which is like wrestling\ntechnical task which is like wrestling with<01:29:46.480> a<01:29:46.639> shitty<01:29:46.960> clipper.<01:29:47.679> Uh<01:29:48.000> so<01:29:48.159> that<01:29:48.400> was\nwith a shitty clipper. Uh so that was\nwith a shitty clipper. Uh so that was really<01:29:48.960> good.\nreally good.\nreally good. >> I<01:29:49.920> don't<01:29:50.000> know<01:29:50.239> how<01:29:50.400> I<01:29:50.560> don't<01:29:50.639> know<01:29:50.719> what's\n>> I don't know how I don't know what's\n>> I don't know how I don't know what's happening.<01:29:51.199> It's<01:29:51.360> like<01:29:51.520> buffering<01:29:51.840> them<01:29:52.000> up\nhappening. It's like buffering them up\nhappening. It's like buffering them up or<01:29:52.320> something,<01:29:53.040> you<01:29:53.120> know.\nor something, you know.\nor something, you know. >> Yeah.<01:29:53.679> No,<01:29:54.080> like<01:29:54.480> awesome.<01:29:54.880> Um<01:29:55.199> I'm<01:29:55.520> hugely\n>> Yeah. No, like awesome. Um I'm hugely\n>> Yeah. No, like awesome. Um I'm hugely impressed<01:29:56.320> with<01:29:56.639> what<01:29:56.880> you<01:29:57.040> did<01:29:57.120> with<01:29:57.280> Ready\nimpressed with what you did with Ready\nimpressed with what you did with Ready Bugger.<01:29:58.000> Thanks,<01:29:58.159> man.<01:29:58.320> Um,<01:29:58.800> and<01:29:59.040> since<01:29:59.280> we\nBugger. Thanks, man. Um, and since we\nBugger. Thanks, man. Um, and since we know<01:29:59.679> from<01:30:00.000> old<01:30:00.320> Twitter<01:30:00.639> that<01:30:00.880> you<01:30:01.040> need\nknow from old Twitter that you need\nknow from old Twitter that you need about<01:30:01.520> a<01:30:01.600> thousand<01:30:02.000> developers<01:30:02.560> to<01:30:02.800> do<01:30:02.960> like\nabout a thousand developers to do like\nabout a thousand developers to do like 140<01:30:04.080> character<01:30:04.400> text<01:30:04.719> posts,\n140 character text posts,\n140 character text posts, >> right?\n>> right?\n>> right? >> Uh,<01:30:06.480> how<01:30:06.800> many<01:30:07.040> tens<01:30:07.360> of<01:30:07.600> thousands<01:30:08.080> of\n>> Uh, how many tens of thousands of\n>> Uh, how many tens of thousands of developers<01:30:08.719> are<01:30:08.880> working<01:30:09.040> on<01:30:09.199> the<01:30:09.360> right\ndevelopers are working on the right\ndevelopers are working on the right debugger<01:30:10.000> right<01:30:10.159> now?\ndebugger right now?\ndebugger right now? >> Right.<01:30:10.719> So,<01:30:11.440> um,<01:30:12.320> you<01:30:12.560> know,<01:30:13.280> we<01:30:13.600> really\n>> Right. So, um, you know, we really\n>> Right. So, um, you know, we really couldn't<01:30:14.159> do<01:30:14.239> it<01:30:14.400> without<01:30:14.719> at<01:30:14.800> least<01:30:15.199> three<01:30:15.360> or\ncouldn't do it without at least three or\ncouldn't do it without at least three or four,<01:30:16.400> but<01:30:16.960> uh,<01:30:17.120> no,<01:30:17.360> I'm<01:30:17.440> just<01:30:17.600> kidding.<01:30:17.840> It's\nfour, but uh, no, I'm just kidding. It's\nfour, but uh, no, I'm just kidding. It's just,<01:30:18.239> so<01:30:18.480> currently<01:30:18.800> it's<01:30:19.040> just<01:30:19.199> me<01:30:19.440> and\njust, so currently it's just me and\njust, so currently it's just me and then,<01:30:20.239> uh,<01:30:20.400> there's<01:30:20.639> another<01:30:20.880> developer<01:30:21.199> on\nthen, uh, there's another developer on\nthen, uh, there's another developer on the<01:30:21.440> team,<01:30:21.679> Nikita<01:30:22.159> Smith,<01:30:22.480> who<01:30:22.719> who's<01:30:23.120> not\nthe team, Nikita Smith, who who's not\nthe team, Nikita Smith, who who's not here.<01:30:23.920> Um,<01:30:24.400> he<01:30:24.719> works<01:30:24.960> primarily<01:30:25.280> on<01:30:25.440> the<01:30:25.520> RAD\nhere. Um, he works primarily on the RAD\nhere. Um, he works primarily on the RAD linker.<01:30:26.639> uh<01:30:26.960> but<01:30:27.520> you<01:30:27.679> know<01:30:28.159> for<01:30:28.400> which<01:30:28.800> is<01:30:28.960> a\nlinker. uh but you know for which is a\nlinker. uh but you know for which is a part<01:30:29.280> of<01:30:29.360> the<01:30:29.520> project<01:30:29.920> for<01:30:30.239> a<01:30:30.480> number<01:30:30.560> of\npart of the project for a number of\npart of the project for a number of reasons<01:30:31.120> but<01:30:31.440> there's<01:30:31.679> a<01:30:31.840> lot<01:30:31.920> of<01:30:32.080> overlap\nreasons but there's a lot of overlap\nreasons but there's a lot of overlap between<01:30:33.040> like<01:30:33.440> those<01:30:33.760> problems<01:30:34.000> like<01:30:34.159> a\nbetween like those problems like a\nbetween like those problems like a linker<01:30:34.639> has<01:30:34.800> to<01:30:34.880> produce<01:30:35.120> debug<01:30:35.520> info\nlinker has to produce debug info\nlinker has to produce debug info debuggers<01:30:36.480> have<01:30:36.560> to<01:30:36.719> read<01:30:36.880> it<01:30:37.199> there's<01:30:37.360> a<01:30:37.520> lot\ndebuggers have to read it there's a lot\ndebuggers have to read it there's a lot of<01:30:37.679> shared<01:30:38.159> we<01:30:38.400> both<01:30:38.639> have<01:30:38.800> to<01:30:38.880> parse<01:30:39.199> certain\nof shared we both have to parse certain\nof shared we both have to parse certain formats<01:30:40.159> stuff<01:30:40.400> like<01:30:40.480> that<01:30:40.639> so<01:30:40.880> there's<01:30:41.120> a<01:30:41.280> lot\nformats stuff like that so there's a lot\nformats stuff like that so there's a lot of<01:30:41.679> um<01:30:42.080> overlap<01:30:42.560> and<01:30:42.800> so<01:30:43.760> um<01:30:44.159> Nick<01:30:44.400> kind<01:30:44.560> of\nof um overlap and so um Nick kind of\nof um overlap and so um Nick kind of works<01:30:44.800> on<01:30:44.880> those<01:30:45.040> parts<01:30:45.199> of<01:30:45.280> the<01:30:45.360> problem<01:30:45.679> he's\nworks on those parts of the problem he's\nworks on those parts of the problem he's really<01:30:46.000> good<01:30:46.080> at<01:30:46.239> like<01:30:46.560> how<01:30:46.719> do<01:30:46.880> you<01:30:46.960> unwind<01:30:47.520> on\nreally good at like how do you unwind on\nreally good at like how do you unwind on Windows<01:30:48.560> x6<01:30:49.120> like<01:30:49.440> how<01:30:49.600> do<01:30:49.760> you<01:30:49.840> unwind<01:30:50.400> you\nWindows x6 like how do you unwind you\nWindows x6 like how do you unwind you using<01:30:51.040> PE<01:30:51.520> unwind<01:30:51.920> info<01:30:52.239> on<01:30:52.400> Windows<01:30:52.639> x64<01:30:53.360> or\nusing PE unwind info on Windows x64 or\nusing PE unwind info on Windows x64 or whatever<01:30:53.760> it's<01:30:53.920> like<01:30:54.400> he's<01:30:54.639> really<01:30:54.800> good<01:30:54.880> at\nwhatever it's like he's really good at\nwhatever it's like he's really good at that<01:30:55.280> kind<01:30:55.360> of<01:30:55.440> thing<01:30:55.760> Um<01:30:56.000> I've<01:30:56.239> focused\nthat kind of thing Um I've focused\nthat kind of thing Um I've focused primarily<01:30:56.960> on<01:30:57.040> the<01:30:57.199> debugger<01:30:57.600> itself.<01:30:58.239> Um<01:30:58.800> the\nprimarily on the debugger itself. Um the\nprimarily on the debugger itself. Um the process<01:30:59.520> control<01:30:59.840> stuff,<01:31:00.320> the<01:31:00.960> the<01:31:01.600> UI\nprocess control stuff, the the UI\nprocess control stuff, the the UI obviously<01:31:02.480> the<01:31:02.719> visualization<01:31:03.199> engine,<01:31:03.600> the\nobviously the visualization engine, the\nobviously the visualization engine, the evaluation<01:31:04.320> engine,<01:31:04.719> like<01:31:04.880> stuff<01:31:05.120> like<01:31:05.280> that.\nevaluation engine, like stuff like that.\nevaluation engine, like stuff like that. So<01:31:06.480> us<01:31:06.800> two,<01:31:07.120> those<01:31:07.280> are<01:31:07.440> what<01:31:07.600> we<01:31:07.760> do.\nSo us two, those are what we do.\nSo us two, those are what we do. >> All right.<01:31:09.679> Um<01:31:10.159> and<01:31:10.400> yeah,<01:31:10.719> for<01:31:11.120> in<01:31:11.280> case\n>> All right. Um and yeah, for in case\n>> All right. Um and yeah, for in case people<01:31:11.760> haven't<01:31:12.000> heard<01:31:12.159> it,<01:31:12.400> like<01:31:13.040> uh<01:31:13.199> Casey\npeople haven't heard it, like uh Casey\npeople haven't heard it, like uh Casey yesterday<01:31:14.159> called<01:31:14.400> him<01:31:14.639> the<01:31:14.960> best<01:31:15.360> systems\nyesterday called him the best systems\nyesterday called him the best systems architect.<01:31:16.800> He<01:31:17.040> knows\narchitect. He knows\narchitect. He knows >> that's\n>> that's\n>> that's >> I<01:31:18.719> think<01:31:18.800> he<01:31:19.199> said<01:31:19.440> one<01:31:19.600> of<01:31:20.000> maybe\n>> I think he said one of maybe\n>> I think he said one of maybe >> maybe<01:31:20.800> he<01:31:20.960> said<01:31:21.199> one<01:31:21.360> of<01:31:21.600> but<01:31:21.760> if<01:31:21.840> he<01:31:21.920> said<01:31:22.080> it\n>> maybe he said one of but if he said it\n>> maybe he said one of but if he said it said<01:31:22.400> it<01:31:22.560> quietly<01:31:23.040> like<01:31:23.280> I<01:31:23.440> heard<01:31:23.679> best\nsaid it quietly like I heard best\nsaid it quietly like I heard best systems<01:31:24.800> architecture\nsystems architecture\nsystems architecture >> very<01:31:25.679> very<01:31:26.000> high<01:31:26.159> praise<01:31:27.040> um<01:31:27.440> yeah\n>> very very high praise um yeah\n>> very very high praise um yeah >> and<01:31:27.920> you're<01:31:28.080> like<01:31:28.239> you're<01:31:28.560> super<01:31:28.880> young<01:31:30.000> um\n>> and you're like you're super young um\n>> and you're like you're super young um how<01:31:31.280> do<01:31:31.440> you<01:31:31.679> how<01:31:31.920> did<01:31:32.080> you<01:31:32.239> get<01:31:32.480> so<01:31:32.719> good<01:31:32.960> so\nhow do you how did you get so good so\nhow do you how did you get so good so fast<01:31:33.600> like<01:31:33.920> it<01:31:34.239> seems<01:31:34.480> like<01:31:34.719> even<01:31:35.040> Casey<01:31:35.520> said\nfast like it seems like even Casey said\nfast like it seems like even Casey said yesterday<01:31:36.239> like<01:31:36.480> he<01:31:36.800> had<01:31:36.960> his<01:31:37.920> oop<01:31:38.880> oops<01:31:39.679> uh\nyesterday like he had his oop oops uh\nyesterday like he had his oop oops uh phase<01:31:40.239> where<01:31:40.480> he<01:31:40.639> did<01:31:40.880> heavily\nphase where he did heavily\nphase where he did heavily object-oriented<01:31:42.159> programming<01:31:42.480> and<01:31:42.719> did<01:31:42.880> all\nobject-oriented programming and did all\nobject-oriented programming and did all the<01:31:43.199> pitfalls<01:31:43.920> and<01:31:44.239> I<01:31:44.560> certainly<01:31:44.880> had<01:31:45.120> that\nthe pitfalls and I certainly had that\nthe pitfalls and I certainly had that time<01:31:45.520> where<01:31:45.679> I<01:31:45.840> had<01:31:46.239> to<01:31:46.800> unlearn<01:31:47.360> like<01:31:47.920> do<01:31:48.159> all\ntime where I had to unlearn like do all\ntime where I had to unlearn like do all the<01:31:48.480> damage<01:31:48.800> that<01:31:48.960> you<01:31:49.120> do<01:31:49.280> with<01:31:49.440> that<01:31:49.600> and\nthe damage that you do with that and\nthe damage that you do with that and then<01:31:50.000> see<01:31:50.239> that<01:31:50.560> and<01:31:50.719> unlearn<01:31:51.199> it<01:31:51.440> and<01:31:51.760> just\nthen see that and unlearn it and just\nthen see that and unlearn it and just come<01:31:52.239> back<01:31:52.400> to<01:31:52.639> the<01:31:52.719> root<01:31:53.040> like<01:31:53.360> did<01:31:53.600> you<01:31:53.760> skip\ncome back to the root like did you skip\ncome back to the root like did you skip that<01:31:54.159> phase<01:31:54.400> or<01:31:54.560> did<01:31:54.719> you<01:31:54.880> pass<01:31:55.120> through<01:31:55.360> it\nthat phase or did you pass through it\nthat phase or did you pass through it quickly<01:31:55.840> or<01:31:56.159> how<01:31:56.320> do<01:31:56.480> you<01:31:57.040> how<01:31:57.280> do<01:31:57.360> you<01:31:57.520> get<01:31:57.679> to\nquickly or how do you how do you get to\nquickly or how do you how do you get to your<01:31:58.000> skill<01:31:58.239> level<01:31:58.400> at<01:31:58.639> your<01:31:58.880> age<01:31:59.120> like<01:31:59.360> what\nyour skill level at your age like what\nyour skill level at your age like what happened?\nhappened?\nhappened? >> So<01:32:01.040> uh<01:32:01.520> I<01:32:01.760> mean<01:32:01.920> one<01:32:02.080> of<01:32:02.159> the<01:32:02.320> reasons<01:32:02.480> I<01:32:02.639> I<01:32:02.880> got\n>> So uh I mean one of the reasons I I got\n>> So uh I mean one of the reasons I I got a<01:32:03.120> pretty<01:32:03.280> good<01:32:03.440> head<01:32:03.679> start<01:32:03.840> on<01:32:04.080> everyone<01:32:04.400> I\na pretty good head start on everyone I\na pretty good head start on everyone I start<01:32:04.719> I<01:32:05.040> started<01:32:05.520> programming<01:32:06.000> when<01:32:06.159> I<01:32:06.239> was\nstart I started programming when I was\nstart I started programming when I was like<01:32:06.480> six<01:32:06.880> and<01:32:07.040> it<01:32:07.280> wasn't<01:32:07.600> my<01:32:07.840> own<01:32:08.080> doing<01:32:08.560> it\nlike six and it wasn't my own doing it\nlike six and it wasn't my own doing it was<01:32:08.800> my<01:32:09.040> older<01:32:09.360> brother<01:32:09.600> who<01:32:09.840> showed<01:32:10.159> me<01:32:10.320> it\nwas my older brother who showed me it\nwas my older brother who showed me it and<01:32:10.719> I<01:32:10.880> was<01:32:10.960> like<01:32:11.199> fascinated<01:32:11.679> by<01:32:11.920> it.<01:32:12.480> Um,<01:32:12.960> I\nand I was like fascinated by it. Um, I\nand I was like fascinated by it. Um, I did<01:32:13.360> have<01:32:13.520> that<01:32:13.679> phase,<01:32:14.080> although<01:32:14.400> I<01:32:14.639> was<01:32:14.719> too\ndid have that phase, although I was too\ndid have that phase, although I was too lazy<01:32:15.440> to<01:32:15.679> actually<01:32:16.000> go<01:32:16.159> and<01:32:16.400> do<01:32:16.560> all<01:32:16.719> the\nlazy to actually go and do all the\nlazy to actually go and do all the complicated<01:32:17.600> oop<01:32:17.840> like<01:32:18.080> template<01:32:18.639> stuff<01:32:18.800> that\ncomplicated oop like template stuff that\ncomplicated oop like template stuff that Casey<01:32:19.600> actually<01:32:19.840> did.<01:32:20.159> So,<01:32:20.560> he<01:32:20.880> actually<01:32:21.199> try\nCasey actually did. So, he actually try\nCasey actually did. So, he actually try he<01:32:21.679> tried<01:32:21.920> much<01:32:22.080> harder<01:32:22.320> and<01:32:22.480> like<01:32:22.639> went<01:32:22.800> much\nhe tried much harder and like went much\nhe tried much harder and like went much further<01:32:23.199> in<01:32:23.360> that<01:32:23.520> direction<01:32:23.760> than<01:32:24.080> than<01:32:24.400> I\nfurther in that direction than than I\nfurther in that direction than than I ever<01:32:24.880> remember<01:32:25.199> myself<01:32:25.600> doing.<01:32:26.159> I<01:32:26.400> definitely\never remember myself doing. I definitely\never remember myself doing. I definitely had<01:32:27.040> it<01:32:27.280> though.<01:32:27.840> Um,<01:32:28.320> because<01:32:28.560> it's<01:32:28.719> what\nhad it though. Um, because it's what\nhad it though. Um, because it's what people<01:32:29.120> tell<01:32:29.199> you<01:32:29.360> to<01:32:29.520> do,<01:32:29.760> right?<01:32:30.000> like<01:32:30.159> you\npeople tell you to do, right? like you\npeople tell you to do, right? like you go<01:32:30.400> and<01:32:30.560> read<01:32:30.719> tutorials<01:32:31.120> and<01:32:31.360> every<01:32:31.679> code<01:32:31.920> is\ngo and read tutorials and every code is\ngo and read tutorials and every code is structured<01:32:32.400> in<01:32:32.560> a<01:32:32.719> particular<01:32:33.120> way<01:32:33.440> and<01:32:33.600> so\nstructured in a particular way and so\nstructured in a particular way and so you<01:32:33.920> just<01:32:34.080> kind<01:32:34.239> of<01:32:34.320> copy<01:32:34.639> it<01:32:35.520> and<01:32:36.239> um<01:32:36.960> and<01:32:37.440> so<01:32:37.760> I\nyou just kind of copy it and um and so I\nyou just kind of copy it and um and so I had<01:32:38.159> it<01:32:38.320> and<01:32:38.560> I<01:32:38.719> didn't<01:32:38.880> really<01:32:39.040> know<01:32:39.199> why<01:32:39.440> it\nhad it and I didn't really know why it\nhad it and I didn't really know why it was<01:32:39.760> happening<01:32:40.560> and<01:32:40.800> I<01:32:41.040> just<01:32:41.440> figured<01:32:41.840> it's\nwas happening and I just figured it's\nwas happening and I just figured it's like<01:32:42.320> it's<01:32:42.719> important<01:32:43.360> at<01:32:43.600> some<01:32:43.840> point\nlike it's important at some point\nlike it's important at some point someday<01:32:44.639> to<01:32:44.880> someone<01:32:45.120> that<01:32:45.360> I<01:32:45.520> put<01:32:45.840> like\nsomeday to someone that I put like\nsomeday to someone that I put like everything<01:32:46.320> behind<01:32:46.560> a<01:32:46.719> getter<01:32:46.880> instead<01:32:47.280> or\neverything behind a getter instead or\neverything behind a getter instead or whatever.<01:32:47.600> It's<01:32:47.679> like<01:32:47.840> oh<01:32:48.000> this<01:32:48.080> will<01:32:48.159> be<01:32:48.320> this\nwhatever. It's like oh this will be this\nwhatever. It's like oh this will be this will<01:32:48.560> be<01:32:48.719> useful<01:32:48.960> someday.<01:32:49.679> Never<01:32:49.920> was\nwill be useful someday. Never was\nwill be useful someday. Never was useful.<01:32:50.719> Um<01:32:51.120> but<01:32:51.440> it's<01:32:51.920> uh<01:32:52.080> I<01:32:52.320> just<01:32:52.480> started\nuseful. Um but it's uh I just started\nuseful. Um but it's uh I just started doing<01:32:52.960> it<01:32:53.520> but<01:32:53.760> I<01:32:53.920> didn't<01:32:54.159> go<01:32:54.400> nuts<01:32:54.719> with<01:32:55.040> like\ndoing it but I didn't go nuts with like\ndoing it but I didn't go nuts with like the<01:32:55.520> crazy<01:32:55.840> abstraction<01:32:56.560> template<01:32:56.960> stuff.<01:32:57.120> I\nthe crazy abstraction template stuff. I\nthe crazy abstraction template stuff. I did<01:32:57.440> a<01:32:57.600> little<01:32:57.679> bit<01:32:57.760> of<01:32:57.840> that,<01:32:58.000> but<01:32:58.320> not<01:32:58.639> not<01:32:59.280> um\ndid a little bit of that, but not not um\ndid a little bit of that, but not not um I<01:32:59.679> didn't<01:32:59.840> go<01:33:00.159> far<01:33:00.400> down<01:33:00.560> that<01:33:00.800> rabbit<01:33:01.040> hole.\nI didn't go far down that rabbit hole.\nI didn't go far down that rabbit hole. The<01:33:01.520> way<01:33:01.600> I<01:33:01.760> got<01:33:01.920> out<01:33:02.000> of<01:33:02.080> it<01:33:02.239> is<01:33:02.400> just<01:33:02.560> Handmade\nThe way I got out of it is just Handmade\nThe way I got out of it is just Handmade Hero.<01:33:03.280> Like<01:33:03.440> I<01:33:03.600> I<01:33:04.000> was<01:33:04.159> I<01:33:04.400> was<01:33:04.480> spending<01:33:04.719> a<01:33:04.880> lot\nHero. Like I I was I was spending a lot\nHero. Like I I was I was spending a lot of<01:33:05.040> time<01:33:05.199> building<01:33:05.520> games<01:33:05.760> and<01:33:06.000> engines<01:33:07.440> and\nof time building games and engines and\nof time building games and engines and um<01:33:08.639> I<01:33:08.880> would<01:33:09.040> build<01:33:09.199> them<01:33:09.360> in<01:33:09.600> sort<01:33:09.760> of<01:33:09.840> this\num I would build them in sort of this\num I would build them in sort of this like<01:33:10.400> you<01:33:10.480> know<01:33:10.560> what<01:33:10.719> you<01:33:10.880> might<01:33:11.040> imagine\nlike you know what you might imagine\nlike you know what you might imagine finding<01:33:11.600> on<01:33:11.760> like<01:33:11.920> gamedev<01:33:12.400> forums<01:33:12.880> in<01:33:13.280> the\nfinding on like gamedev forums in the\nfinding on like gamedev forums in the early<01:33:13.840> 2000s<01:33:14.960> um<01:33:15.199> sort<01:33:15.360> of<01:33:15.440> like<01:33:15.600> C++<01:33:16.239> 03<01:33:17.040> you\nearly 2000s um sort of like C++ 03 you\nearly 2000s um sort of like C++ 03 you know<01:33:17.440> early<01:33:18.159> before<01:33:18.560> C++<01:33:19.120> 11<01:33:19.440> like<01:33:19.600> that<01:33:19.840> style\nknow early before C++ 11 like that style\nknow early before C++ 11 like that style of<01:33:20.239> code<01:33:20.400> where<01:33:20.639> it's<01:33:20.800> like<01:33:21.199> object-oriented\nof code where it's like object-oriented\nof code where it's like object-oriented crap<01:33:22.400> mixed<01:33:22.719> with<01:33:23.120> C<01:33:23.440> basically.<01:33:24.400> And<01:33:24.719> so<01:33:24.880> I\ncrap mixed with C basically. And so I\ncrap mixed with C basically. And so I didn't<01:33:25.360> go<01:33:26.239> crazy.<01:33:26.639> Like<01:33:26.800> I<01:33:26.960> was<01:33:27.040> doing<01:33:27.199> a<01:33:27.360> lot\ndidn't go crazy. Like I was doing a lot\ndidn't go crazy. Like I was doing a lot of<01:33:27.600> that.<01:33:28.159> Um,<01:33:28.320> and<01:33:28.480> I<01:33:28.719> thought<01:33:28.800> that<01:33:29.120> I\nof that. Um, and I thought that I\nof that. Um, and I thought that I believed<01:33:29.679> in<01:33:29.840> a<01:33:30.000> lot<01:33:30.080> of<01:33:30.159> things<01:33:30.239> that<01:33:30.400> were\nbelieved in a lot of things that were\nbelieved in a lot of things that were kind<01:33:30.639> of<01:33:30.719> leading<01:33:30.960> me<01:33:31.120> astray,<01:33:31.520> but<01:33:31.679> I<01:33:31.840> didn't\nkind of leading me astray, but I didn't\nkind of leading me astray, but I didn't actually<01:33:32.320> try<01:33:32.480> that<01:33:32.639> hard<01:33:32.800> on<01:33:33.040> them<01:33:33.199> because<01:33:33.360> I\nactually try that hard on them because I\nactually try that hard on them because I was<01:33:33.600> too<01:33:33.760> lazy<01:33:34.239> because<01:33:34.480> it's<01:33:34.639> just<01:33:34.719> a<01:33:34.880> ton<01:33:34.960> of\nwas too lazy because it's just a ton of\nwas too lazy because it's just a ton of typing.<01:33:35.360> Like<01:33:35.520> Casey<01:33:35.840> was<01:33:36.000> like<01:33:36.400> when<01:33:36.639> Casey\ntyping. Like Casey was like when Casey\ntyping. Like Casey was like when Casey was<01:33:37.120> talking<01:33:37.280> about<01:33:37.360> it,<01:33:37.600> he's<01:33:37.760> like<01:33:38.400> he<01:33:38.639> just\nwas talking about it, he's like he just\nwas talking about it, he's like he just buckled<01:33:39.280> down<01:33:39.440> and<01:33:39.679> started<01:33:39.920> writing<01:33:40.320> all\nbuckled down and started writing all\nbuckled down and started writing all this<01:33:40.960> crazy<01:33:41.360> stuff<01:33:41.600> and<01:33:41.760> I'm<01:33:42.000> like,<01:33:42.239> I<01:33:42.480> just\nthis crazy stuff and I'm like, I just\nthis crazy stuff and I'm like, I just don't<01:33:42.960> want<01:33:43.120> to<01:33:43.280> do<01:33:43.360> that.<01:33:43.600> So<01:33:43.760> I<01:33:43.920> kind<01:33:44.080> of<01:33:44.239> I\ndon't want to do that. So I kind of I\ndon't want to do that. So I kind of I kind<01:33:44.719> of<01:33:44.880> stayed<01:33:45.120> more<01:33:45.360> constrained<01:33:45.840> and<01:33:46.080> and\nkind of stayed more constrained and and\nkind of stayed more constrained and and um<01:33:47.440> just<01:33:47.679> tried<01:33:47.840> to<01:33:48.000> build<01:33:48.159> games<01:33:48.400> that<01:33:48.560> way.\num just tried to build games that way.\num just tried to build games that way. And<01:33:48.880> then<01:33:49.040> when<01:33:49.120> I<01:33:49.280> saw<01:33:49.440> Handmade<01:33:49.760> Hero,<01:33:50.080> I'm\nAnd then when I saw Handmade Hero, I'm\nAnd then when I saw Handmade Hero, I'm like,<01:33:50.880> oh,<01:33:51.120> like<01:33:51.360> none<01:33:51.520> of<01:33:51.600> that<01:33:51.760> was<01:33:51.920> needed.\nlike, oh, like none of that was needed.\nlike, oh, like none of that was needed. Like<01:33:52.400> I<01:33:52.560> didn't<01:33:52.639> have<01:33:52.800> to<01:33:52.880> even<01:33:53.120> go<01:33:53.440> I<01:33:53.679> didn't\nLike I didn't have to even go I didn't\nLike I didn't have to even go I didn't even<01:33:54.000> even<01:33:54.239> have<01:33:54.400> to<01:33:54.480> like<01:33:54.639> open<01:33:54.800> the<01:33:55.040> door<01:33:55.120> to\neven even have to like open the door to\neven even have to like open the door to that<01:33:55.520> hallway.<01:33:56.239> I<01:33:56.480> can<01:33:56.560> just<01:33:57.120> you<01:33:57.280> know\nthat hallway. I can just you know\nthat hallway. I can just you know actually<01:33:58.000> not<01:33:58.239> get<01:33:58.400> sidetracked.\nactually not get sidetracked.\nactually not get sidetracked. >> So<01:33:59.120> maybe<01:33:59.280> a<01:33:59.520> bit<01:33:59.600> of<01:33:59.760> laziness<01:34:00.320> saved.\n>> So maybe a bit of laziness saved.\n>> So maybe a bit of laziness saved. >> Yes.<01:34:01.120> Okay.\n>> Yes. Okay.\n>> Yes. Okay. >> Yes.<01:34:02.080> It's<01:34:02.239> it's<01:34:02.639> my<01:34:02.800> laziness<01:34:03.280> saved<01:34:03.520> me<01:34:03.679> I\n>> Yes. It's it's my laziness saved me I\n>> Yes. It's it's my laziness saved me I think<01:34:04.000> to<01:34:04.159> some<01:34:04.320> degree.<01:34:04.480> I<01:34:04.639> want<01:34:04.719> to<01:34:04.880> go<01:34:05.120> go\nthink to some degree. I want to go go\nthink to some degree. I want to go go get<01:34:05.679> more<01:34:05.840> into<01:34:06.080> the<01:34:06.239> red<01:34:06.400> debugger<01:34:06.880> details,\nget more into the red debugger details,\nget more into the red debugger details, but<01:34:07.440> first<01:34:07.760> like<01:34:08.080> the<01:34:08.320> channel<01:34:08.800> I<01:34:09.040> saw<01:34:09.280> that\nbut first like the channel I saw that\nbut first like the channel I saw that like<01:34:10.159> you<01:34:10.400> described<01:34:10.960> your<01:34:11.520> like<01:34:12.000> kind<01:34:12.239> of<01:34:12.320> the\nlike you described your like kind of the\nlike you described your like kind of the building<01:34:13.120> generic<01:34:13.679> building<01:34:13.920> blocks<01:34:14.320> you<01:34:14.560> you\nbuilding generic building blocks you you\nbuilding generic building blocks you you assembled<01:34:15.440> to<01:34:15.840> visualize<01:34:16.400> data<01:34:16.719> in<01:34:16.960> the\nassembled to visualize data in the\nassembled to visualize data in the debugger<01:34:17.840> and<01:34:18.239> it<01:34:18.560> seems<01:34:18.800> like<01:34:18.960> when<01:34:19.120> I<01:34:19.360> just\ndebugger and it seems like when I just\ndebugger and it seems like when I just watch<01:34:20.000> like<01:34:20.239> the<01:34:20.480> things<01:34:20.639> you<01:34:20.880> didn't<01:34:21.040> show\nwatch like the things you didn't show\nwatch like the things you didn't show like<01:34:21.520> all<01:34:21.679> the<01:34:21.840> things<01:34:22.000> you<01:34:22.159> you<01:34:22.480> demoed<01:34:22.880> on\nlike all the things you you demoed on\nlike all the things you you demoed on Twitter<01:34:23.520> etc<01:34:23.920> of<01:34:24.000> of<01:34:24.159> the<01:34:24.400> power<01:34:24.639> that<01:34:24.960> gives\nTwitter etc of of the power that gives\nTwitter etc of of the power that gives you<01:34:25.679> it<01:34:25.840> seems<01:34:26.080> like<01:34:26.239> you<01:34:26.639> discovered<01:34:27.360> the\nyou it seems like you discovered the\nyou it seems like you discovered the right<01:34:28.400> building<01:34:28.719> blocks<01:34:29.040> that<01:34:29.280> give<01:34:29.440> you\nright building blocks that give you\nright building blocks that give you enormous<01:34:30.800> expressiveness<01:34:31.760> with<01:34:32.239> very\nenormous expressiveness with very\nenormous expressiveness with very small<01:34:34.400> set<01:34:34.639> of<01:34:34.960> like<01:34:36.000> it<01:34:36.080> it<01:34:36.239> seems<01:34:36.480> like<01:34:36.639> a\nsmall set of like it it seems like a\nsmall set of like it it seems like a small<01:34:37.040> set<01:34:37.199> of<01:34:38.239> Lego<01:34:38.639> blocks<01:34:38.960> let's<01:34:39.120> say<01:34:39.280> to\nsmall set of Lego blocks let's say to\nsmall set of Lego blocks let's say to assemble<01:34:39.760> it.<01:34:40.239> Um,<01:34:40.880> how<01:34:41.040> do<01:34:41.120> you<01:34:41.280> do<01:34:41.360> that\nassemble it. Um, how do you do that\nassemble it. Um, how do you do that without<01:34:41.920> like<01:34:42.159> how<01:34:42.320> did<01:34:42.400> you<01:34:42.480> arrive<01:34:42.719> at<01:34:42.960> that\nwithout like how did you arrive at that\nwithout like how did you arrive at that with<01:34:44.400> because<01:34:45.360> a<01:34:45.600> counter<01:34:45.840> example<01:34:46.080> I<01:34:46.239> would\nwith because a counter example I would\nwith because a counter example I would give<01:34:46.480> of<01:34:46.639> people<01:34:46.880> trying<01:34:47.120> that<01:34:47.360> is<01:34:47.600> like<01:34:48.400> at\ngive of people trying that is like at\ngive of people trying that is like at some<01:34:48.880> point<01:34:49.040> I<01:34:49.199> think<01:34:49.360> the<01:34:49.520> office<01:34:49.920> suite\nsome point I think the office suite\nsome point I think the office suite decided<01:34:50.719> that<01:34:51.199> every<01:34:51.520> window<01:34:52.000> every<01:34:52.239> UI\ndecided that every window every UI\ndecided that every window every UI element<01:34:52.880> should<01:34:53.120> be<01:34:53.199> a<01:34:53.360> dragable<01:34:53.920> window\nelement should be a dragable window\nelement should be a dragable window >> and<01:34:54.880> of<01:34:55.040> course<01:34:55.199> everything<01:34:55.520> that<01:34:55.760> a<01:34:56.000> window\n>> and of course everything that a window\n>> and of course everything that a window that's<01:34:56.480> floating<01:34:56.880> should<01:34:57.120> be<01:34:57.280> closable<01:34:58.239> and\nthat's floating should be closable and\nthat's floating should be closable and so<01:34:59.280> they<01:34:59.600> came<01:34:59.840> to<01:35:00.000> this<01:35:00.400> great<01:35:00.800> state<01:35:01.120> where\nso they came to this great state where\nso they came to this great state where people<01:35:01.760> could<01:35:02.000> just<01:35:02.400> close<01:35:02.719> their<01:35:03.040> menu<01:35:03.440> bar\npeople could just close their menu bar\npeople could just close their menu bar and<01:35:04.080> be<01:35:04.320> completely<01:35:04.880> host<01:35:05.520> unless<01:35:05.920> unless\nand be completely host unless unless\nand be completely host unless unless they<01:35:06.480> Google<01:35:06.719> how<01:35:06.880> to<01:35:07.040> restore<01:35:07.280> that<01:35:08.000> um<01:35:08.480> and\nthey Google how to restore that um and\nthey Google how to restore that um and like<01:35:08.880> they<01:35:09.120> tried<01:35:09.280> to<01:35:09.440> be<01:35:09.520> very<01:35:09.760> generic<01:35:10.320> have\nlike they tried to be very generic have\nlike they tried to be very generic have building<01:35:10.800> blocks<01:35:11.040> of<01:35:11.199> like<01:35:11.360> everything's<01:35:11.760> a\nbuilding blocks of like everything's a\nbuilding blocks of like everything's a dragable<01:35:12.400> window<01:35:12.560> and<01:35:12.800> we're<01:35:12.880> going<01:35:12.960> to<01:35:13.040> get<01:35:13.120> a\ndragable window and we're going to get a\ndragable window and we're going to get a great<01:35:13.440> power<01:35:13.600> of<01:35:13.760> that<01:35:13.920> and<01:35:14.719> result<01:35:15.040> we<01:35:15.199> all\ngreat power of that and result we all\ngreat power of that and result we all suffered.<01:35:15.920> Um,\nsuffered. Um,\nsuffered. Um, >> how<01:35:16.880> did<01:35:17.040> you<01:35:17.199> get<01:35:17.360> to<01:35:17.520> this<01:35:17.840> set<01:35:18.000> of<01:35:18.159> building\n>> how did you get to this set of building\n>> how did you get to this set of building blocks?<01:35:18.719> Was<01:35:18.880> it<01:35:18.960> like<01:35:19.679> do<01:35:19.920> you<01:35:20.159> have<01:35:20.320> to\nblocks? Was it like do you have to\nblocks? Was it like do you have to iterate<01:35:20.800> on<01:35:20.960> that?<01:35:21.199> Was<01:35:21.360> it<01:35:21.520> trial<01:35:21.760> and<01:35:22.000> error?\niterate on that? Was it trial and error?\niterate on that? Was it trial and error? Was<01:35:22.400> it<01:35:22.639> undo<01:35:23.120> redo<01:35:23.760> dozens<01:35:24.080> of<01:35:24.239> times<01:35:24.400> or<01:35:24.639> are\nWas it undo redo dozens of times or are\nWas it undo redo dozens of times or are you<01:35:24.880> like<01:35:25.199> n<01:35:25.520> like<01:35:25.760> Neo<01:35:26.080> and<01:35:26.320> just<01:35:26.719> see<01:35:26.960> the\nyou like n like Neo and just see the\nyou like n like Neo and just see the I<01:35:28.639> I'm<01:35:28.880> definitely<01:35:29.120> not<01:35:29.360> Neo.<01:35:30.480> I<01:35:30.639> think<01:35:30.960> so.<01:35:31.360> I\nI I'm definitely not Neo. I think so. I\nI I'm definitely not Neo. I think so. I think<01:35:31.920> um<01:35:32.560> I<01:35:32.880> think<01:35:33.040> that<01:35:33.520> where<01:35:33.920> people<01:35:34.719> where\nthink um I think that where people where\nthink um I think that where people where I've<01:35:35.280> screwed<01:35:35.520> up<01:35:35.679> in<01:35:35.920> the<01:35:36.000> past<01:35:36.239> and<01:35:36.480> where<01:35:36.800> I\nI've screwed up in the past and where I\nI've screwed up in the past and where I think<01:35:37.440> a<01:35:37.679> lot<01:35:37.760> of<01:35:37.920> those<01:35:38.159> designs<01:35:38.560> are<01:35:38.719> screwed\nthink a lot of those designs are screwed\nthink a lot of those designs are screwed up<01:35:39.360> is<01:35:39.600> when<01:35:39.760> they<01:35:39.920> try<01:35:40.080> to<01:35:40.159> abstract<01:35:40.639> over\nup is when they try to abstract over\nup is when they try to abstract over like<01:35:41.199> they<01:35:41.360> have<01:35:41.520> like<01:35:41.679> one<01:35:42.080> interface<01:35:42.880> but\nlike they have like one interface but\nlike they have like one interface but that<01:35:43.280> interface<01:35:43.679> actually<01:35:43.920> implies<01:35:44.320> many\nthat interface actually implies many\nthat interface actually implies many concrete<01:35:45.120> realities.<01:35:45.600> And<01:35:45.760> I<01:35:45.920> think<01:35:46.080> people<01:35:46.639> I\nconcrete realities. And I think people I\nconcrete realities. And I think people I think<01:35:47.040> people<01:35:47.360> lie<01:35:47.600> to<01:35:47.679> themselves<01:35:48.080> a<01:35:48.239> little\nthink people lie to themselves a little\nthink people lie to themselves a little bit<01:35:48.480> about<01:35:48.800> how<01:35:49.360> little<01:35:50.000> concret<01:35:50.560> they<01:35:50.800> they\nbit about how little concret they they\nbit about how little concret they they lie<01:35:51.199> to<01:35:51.360> themselves<01:35:51.679> about<01:35:51.840> how<01:35:52.080> many\nlie to themselves about how many\nlie to themselves about how many concrete<01:35:52.880> details<01:35:53.280> actually<01:35:53.520> float<01:35:53.840> up<01:35:53.920> and\nconcrete details actually float up and\nconcrete details actually float up and are<01:35:54.320> needed<01:35:54.560> in<01:35:54.719> the<01:35:54.880> abstraction.<01:35:55.840> And<01:35:56.080> so,\nare needed in the abstraction. And so,\nare needed in the abstraction. And so, um,<01:35:57.120> those<01:35:57.360> abstractions<01:35:57.920> get<01:35:58.080> pretty\num, those abstractions get pretty\num, those abstractions get pretty brittle<01:35:58.719> and<01:35:58.960> leaky<01:35:59.520> and,<01:36:00.159> um,<01:36:00.719> and<01:36:00.960> so<01:36:02.159> I\nbrittle and leaky and, um, and so I\nbrittle and leaky and, um, and so I think<01:36:02.480> it's<01:36:02.800> that<01:36:03.120> root<01:36:03.440> problem<01:36:03.760> where<01:36:03.920> it's\nthink it's that root problem where it's\nthink it's that root problem where it's like<01:36:04.239> you've<01:36:04.480> got<01:36:04.639> one<01:36:04.880> thing<01:36:05.120> you<01:36:05.360> want<01:36:05.440> to\nlike you've got one thing you want to\nlike you've got one thing you want to treat<01:36:05.760> as<01:36:06.000> one<01:36:06.159> thing,<01:36:06.560> but<01:36:06.800> it's<01:36:07.040> secretly\ntreat as one thing, but it's secretly\ntreat as one thing, but it's secretly multiple<01:36:07.920> things<01:36:08.320> and<01:36:08.639> you<01:36:08.880> don't<01:36:09.040> want<01:36:09.199> to\nmultiple things and you don't want to\nmultiple things and you don't want to pretend<01:36:09.600> that<01:36:09.760> it's<01:36:10.000> multiple<01:36:10.320> things.<01:36:10.560> Now,\npretend that it's multiple things. Now,\npretend that it's multiple things. Now, the<01:36:11.280> way<01:36:11.360> that<01:36:11.520> I<01:36:11.760> tend<01:36:12.000> to<01:36:12.159> think<01:36:12.239> about<01:36:12.400> it<01:36:12.560> is\nthe way that I tend to think about it is\nthe way that I tend to think about it is like<01:36:12.960> I'm<01:36:13.199> always<01:36:13.520> trying<01:36:13.760> to<01:36:14.000> take<01:36:14.239> a<01:36:14.560> path\nlike I'm always trying to take a path\nlike I'm always trying to take a path that's<01:36:15.280> doing<01:36:15.520> some<01:36:15.760> work.<01:36:16.000> So,<01:36:16.239> in<01:36:16.400> the<01:36:16.480> case\nthat's doing some work. So, in the case\nthat's doing some work. So, in the case of<01:36:16.719> the<01:36:16.800> visual<01:36:17.199> uh,<01:36:17.280> the<01:36:17.440> evaluation<01:36:18.159> system,\nof the visual uh, the evaluation system,\nof the visual uh, the evaluation system, I<01:36:19.920> started<01:36:20.239> with<01:36:20.400> just<01:36:20.560> the<01:36:20.800> debug\nI started with just the debug\nI started with just the debug evaluation.<01:36:22.000> So<01:36:22.159> I<01:36:22.320> started<01:36:22.480> with<01:36:22.639> like<01:36:22.960> look,\nevaluation. So I started with like look,\nevaluation. So I started with like look, I've<01:36:23.280> got<01:36:23.360> an<01:36:23.520> address<01:36:23.760> space.<01:36:24.000> I've<01:36:24.159> got<01:36:24.239> a\nI've got an address space. I've got a\nI've got an address space. I've got a selected<01:36:24.880> thread<01:36:25.199> that's<01:36:25.440> inside<01:36:25.679> of<01:36:25.760> a\nselected thread that's inside of a\nselected thread that's inside of a debug.<01:36:27.199> I<01:36:27.440> can<01:36:27.520> evaluate<01:36:28.000> things<01:36:28.159> inside<01:36:28.480> of\ndebug. I can evaluate things inside of\ndebug. I can evaluate things inside of that.<01:36:29.440> Um,<01:36:30.639> and<01:36:31.120> what<01:36:31.440> I<01:36:31.600> I<01:36:32.080> at<01:36:32.239> some<01:36:32.480> point<01:36:32.719> I\nthat. Um, and what I I at some point I\nthat. Um, and what I I at some point I thought<01:36:33.679> hard<01:36:33.920> about<01:36:34.080> it<01:36:34.239> and<01:36:34.400> I<01:36:34.639> noticed<01:36:34.880> that\nthought hard about it and I noticed that\nthought hard about it and I noticed that like<01:36:35.360> this<01:36:35.600> file<01:36:35.920> system<01:36:36.719> split<01:36:37.120> was<01:36:37.360> going<01:36:37.440> to\nlike this file system split was going to\nlike this file system split was going to be<01:36:37.600> a<01:36:37.840> problem.<01:36:38.800> Um,\nbe a problem. Um,\nbe a problem. Um, and<01:36:40.560> so<01:36:40.719> I<01:36:40.960> needed<01:36:41.199> to<01:36:41.360> find<01:36:41.520> a<01:36:41.679> way<01:36:41.840> to<01:36:42.000> take\nand so I needed to find a way to take\nand so I needed to find a way to take the<01:36:42.480> existing<01:36:42.800> code<01:36:43.120> path<01:36:43.840> and<01:36:44.239> like<01:36:44.560> kind<01:36:44.800> of\nthe existing code path and like kind of\nthe existing code path and like kind of just<01:36:45.040> widen<01:36:45.440> it.<01:36:45.600> Like<01:36:45.760> you<01:36:45.920> want<01:36:46.000> to<01:36:46.080> just<01:36:46.239> say\njust widen it. Like you want to just say\njust widen it. Like you want to just say this<01:36:46.719> is<01:36:47.040> expressing<01:36:47.600> more<01:36:48.320> than<01:36:48.719> what<01:36:48.960> it<01:36:49.119> was\nthis is expressing more than what it was\nthis is expressing more than what it was before.<01:36:49.840> So<01:36:50.000> it's<01:36:50.239> actually<01:36:50.400> the<01:36:50.560> same\nbefore. So it's actually the same\nbefore. So it's actually the same concrete<01:36:51.199> code<01:36:51.440> path.<01:36:51.920> It's<01:36:52.080> not<01:36:52.159> an\nconcrete code path. It's not an\nconcrete code path. It's not an abstraction<01:36:52.719> over<01:36:52.960> many<01:36:53.199> things.<01:36:53.440> It's<01:36:53.600> just\nabstraction over many things. It's just\nabstraction over many things. It's just one<01:36:54.000> thing<01:36:54.400> which<01:36:54.719> contains<01:36:55.040> more\none thing which contains more\none thing which contains more information.<01:36:56.159> And<01:36:56.719> once<01:36:56.960> you<01:36:57.199> get<01:36:57.280> to<01:36:57.440> that\ninformation. And once you get to that\ninformation. And once you get to that point,<01:36:57.840> it's<01:36:58.000> like,<01:36:58.400> you<01:36:58.480> know,<01:36:58.639> you<01:36:58.719> could\npoint, it's like, you know, you could\npoint, it's like, you know, you could make<01:36:58.960> the<01:36:59.199> argument<01:36:59.440> it's<01:36:59.600> like,<01:36:59.760> well,<01:37:00.000> now\nmake the argument it's like, well, now\nmake the argument it's like, well, now the<01:37:00.320> space<01:37:00.480> is<01:37:00.719> being<01:37:00.960> specified<01:37:01.600> when<01:37:02.080> it\nthe space is being specified when it\nthe space is being specified when it doesn't<01:37:02.480> need<01:37:02.560> to<01:37:02.639> be<01:37:02.880> or<01:37:03.199> it's<01:37:03.360> like<01:37:03.840> it's\ndoesn't need to be or it's like it's\ndoesn't need to be or it's like it's like<01:37:04.800> just<01:37:05.119> store<01:37:05.440> the<01:37:05.679> space,<01:37:06.000> dude.<01:37:06.320> Like\nlike just store the space, dude. Like\nlike just store the space, dude. Like it's<01:37:06.719> not<01:37:06.800> that<01:37:06.960> much<01:37:07.199> data.<01:37:07.520> It's<01:37:07.760> it's<01:37:07.920> it's\nit's not that much data. It's it's it's\nit's not that much data. It's it's it's it's<01:37:08.719> tiny.<01:37:09.119> You're<01:37:09.280> making<01:37:09.440> it<01:37:09.600> more\nit's tiny. You're making it more\nit's tiny. You're making it more flexible,<01:37:10.159> basically.<01:37:10.560> So<01:37:10.639> I<01:37:10.880> so<01:37:11.040> I<01:37:11.199> try<01:37:11.360> to\nflexible, basically. So I so I try to\nflexible, basically. So I so I try to take<01:37:12.239> that<01:37:12.400> approach<01:37:12.639> where<01:37:12.800> it's<01:37:13.040> like<01:37:13.360> start\ntake that approach where it's like start\ntake that approach where it's like start with<01:37:14.320> start<01:37:14.560> by<01:37:14.880> laying<01:37:15.040> out<01:37:15.119> my<01:37:15.360> constraints\nwith start by laying out my constraints\nwith start by laying out my constraints as<01:37:15.920> many<01:37:16.080> as<01:37:16.239> I<01:37:16.400> know<01:37:17.040> build<01:37:17.199> a<01:37:17.360> path<01:37:17.600> which\nas many as I know build a path which\nas many as I know build a path which supports<01:37:18.239> those<01:37:18.719> and<01:37:18.960> then<01:37:19.119> try<01:37:19.280> to<01:37:19.440> fit<01:37:19.679> more\nsupports those and then try to fit more\nsupports those and then try to fit more constraints<01:37:20.320> into<01:37:20.480> it<01:37:20.639> and<01:37:20.880> sort<01:37:21.040> of<01:37:21.199> widen\nconstraints into it and sort of widen\nconstraints into it and sort of widen the<01:37:21.679> possibility<01:37:22.159> space<01:37:22.480> as<01:37:22.639> as<01:37:23.040> possible.\nthe possibility space as as possible.\nthe possibility space as as possible. It's<01:37:23.520> super<01:37:23.920> super<01:37:24.239> abstract.<01:37:24.719> It's<01:37:24.880> really\nIt's super super abstract. It's really\nIt's super super abstract. It's really hard<01:37:25.119> to<01:37:25.280> describe<01:37:25.600> how<01:37:25.679> I<01:37:25.840> think<01:37:25.920> about<01:37:26.080> it\nhard to describe how I think about it\nhard to describe how I think about it but<01:37:26.400> hopefully<01:37:26.719> that's<01:37:27.119> some<01:37:27.360> some<01:37:27.679> degree<01:37:27.920> of\nbut hopefully that's some some degree of\nbut hopefully that's some some degree of insight<01:37:28.480> into<01:37:28.719> it.\ninsight into it.\ninsight into it. >> So<01:37:29.440> uh<01:37:29.760> can<01:37:29.920> you<01:37:30.080> rephrase<01:37:30.400> that<01:37:30.639> as<01:37:30.800> kind<01:37:30.960> of\n>> So uh can you rephrase that as kind of\n>> So uh can you rephrase that as kind of like<01:37:31.920> fat<01:37:32.320> strcts<01:37:32.719> instead<01:37:33.119> of<01:37:33.679> right\nlike fat strcts instead of right\nlike fat strcts instead of right >> uh<01:37:34.719> domain<01:37:35.199> model<01:37:35.840> statically<01:37:36.880> whatever<01:37:37.199> the\n>> uh domain model statically whatever the\n>> uh domain model statically whatever the thing<01:37:37.440> was<01:37:37.679> that<01:37:37.920> I<01:37:38.159> can't<01:37:38.320> remember.<01:37:38.880> Yeah,\nthing was that I can't remember. Yeah,\nthing was that I can't remember. Yeah, we're<01:37:39.600> team<01:37:39.760> Plex<01:37:40.159> basically.<01:37:40.639> So<01:37:40.880> that's\nwe're team Plex basically. So that's\nwe're team Plex basically. So that's Plex.<01:37:41.600> It's<01:37:41.840> Plex<01:37:42.159> programming.<01:37:42.560> Yeah.\nPlex. It's Plex programming. Yeah.\nPlex. It's Plex programming. Yeah. >> For<01:37:42.880> people<01:37:43.119> who<01:37:43.280> don't<01:37:43.360> know<01:37:43.440> what<01:37:43.679> Plex<01:37:44.000> is,\n>> For people who don't know what Plex is,\n>> For people who don't know what Plex is, watch<01:37:44.560> yesterday's<01:37:45.040> stream.<01:37:45.520> Uh<01:37:45.840> you<01:37:46.000> should\nwatch yesterday's stream. Uh you should\nwatch yesterday's stream. Uh you should watch<01:37:46.320> it<01:37:46.480> anyways.<01:37:46.880> It's<01:37:47.119> good.<01:37:47.760> Um<01:37:48.800> right.\nwatch it anyways. It's good. Um right.\nwatch it anyways. It's good. Um right. Yeah,<01:37:49.280> because<01:37:49.520> I<01:37:49.760> struggled<01:37:50.159> like<01:37:50.480> when<01:37:50.719> I\nYeah, because I struggled like when I\nYeah, because I struggled like when I design<01:37:51.360> systems,<01:37:51.920> I<01:37:52.159> don't<01:37:52.239> have<01:37:52.400> your<01:37:52.719> skill\ndesign systems, I don't have your skill\ndesign systems, I don't have your skill like<01:37:53.280> often<01:37:53.679> like<01:37:54.159> the<01:37:54.400> building<01:37:54.719> blocks\nlike often like the building blocks\nlike often like the building blocks don't<01:37:55.280> quite<01:37:55.600> fit<01:37:55.840> and<01:37:56.080> they<01:37:56.480> give<01:37:56.639> me<01:37:56.880> more\ndon't quite fit and they give me more\ndon't quite fit and they give me more complexity<01:37:57.760> with<01:37:58.480> that<01:37:58.800> much<01:37:58.960> power<01:37:59.199> and<01:37:59.360> it\ncomplexity with that much power and it\ncomplexity with that much power and it seems<01:37:59.760> like<01:38:00.159> I<01:38:00.400> want<01:38:00.560> to<01:38:01.040> like<01:38:01.360> I<01:38:01.600> would<01:38:01.679> like\nseems like I want to like I would like\nseems like I want to like I would like to<01:38:01.920> hit<01:38:02.080> that<01:38:02.239> sweet<01:38:02.400> spot.<01:38:02.639> I<01:38:02.800> see<01:38:02.960> that.<01:38:03.520> Um\nto hit that sweet spot. I see that. Um\nto hit that sweet spot. I see that. Um well<01:38:04.800> let's<01:38:05.040> get<01:38:05.199> more<01:38:05.440> into<01:38:05.679> before<01:38:05.920> I<01:38:06.080> open\nwell let's get more into before I open\nwell let's get more into before I open to<01:38:06.560> the<01:38:06.880> like<01:38:07.600> to<01:38:07.840> the<01:38:08.000> audience.<01:38:08.880> Um<01:38:09.119> I<01:38:09.280> have<01:38:09.360> a\nto the like to the audience. Um I have a\nto the like to the audience. Um I have a few<01:38:09.679> more<01:38:09.760> questions<01:38:10.000> about<01:38:10.159> the<01:38:10.320> debugger\nfew more questions about the debugger\nfew more questions about the debugger itself.<01:38:10.960> We<01:38:11.119> did<01:38:11.280> you<01:38:11.440> didn't<01:38:11.679> talk<01:38:11.840> about<01:38:11.920> the\nitself. We did you didn't talk about the\nitself. We did you didn't talk about the red<01:38:12.480> debugger<01:38:13.199> details<01:38:13.920> very<01:38:14.239> much<01:38:14.480> like\nred debugger details very much like\nred debugger details very much like >> very<01:38:15.600> much<01:38:15.760> but<01:38:16.159> you<01:38:16.400> have<01:38:16.560> your<01:38:16.800> own<01:38:17.360> debug\n>> very much but you have your own debug\n>> very much but you have your own debug info<01:38:18.320> format.\ninfo format.\ninfo format. >> Yes.\n>> Yes.\n>> Yes. >> And<01:38:19.920> you<01:38:20.159> convert<01:38:20.639> from<01:38:21.520> uh<01:38:21.760> code<01:38:22.000> view<01:38:22.239> which\n>> And you convert from uh code view which\n>> And you convert from uh code view which is<01:38:22.480> the<01:38:22.639> Microsoft<01:38:23.119> format<01:38:23.520> that's<01:38:23.760> stored<01:38:23.920> in\nis the Microsoft format that's stored in\nis the Microsoft format that's stored in PDB<01:38:25.040> um<01:38:25.280> to<01:38:25.520> that.\nPDB um to that.\nPDB um to that. >> Mhm.<01:38:26.800> What<01:38:27.280> prompted<01:38:27.760> that<01:38:28.239> and<01:38:28.719> like<01:38:28.960> how<01:38:29.199> did\n>> Mhm. What prompted that and like how did\n>> Mhm. What prompted that and like how did you<01:38:29.520> design<01:38:29.760> that<01:38:30.000> dra<01:38:30.320> debug<01:38:30.560> info<01:38:30.960> format\nyou design that dra debug info format\nyou design that dra debug info format like<01:38:31.440> how<01:38:31.520> is<01:38:31.679> it<01:38:31.840> different<01:38:32.000> from<01:38:32.320> the<01:38:32.480> war\nlike how is it different from the war\nlike how is it different from the war for<01:38:32.800> code<01:38:33.280> that's<01:38:33.520> very<01:38:33.840> like<01:38:34.320> into<01:38:35.280> I<01:38:35.440> I<01:38:35.840> wrote\nfor code that's very like into I I wrote\nfor code that's very like into I I wrote a<01:38:36.159> debugger<01:38:36.560> myself<01:38:36.880> I<01:38:37.040> generate<01:38:37.360> debug<01:38:37.679> info\na debugger myself I generate debug info\na debugger myself I generate debug info as<01:38:38.080> part<01:38:38.239> of<01:38:38.320> the<01:38:38.480> J<01:38:38.719> compilers<01:38:39.040> that<01:38:39.280> this<01:38:39.440> is\nas part of the J compilers that this is\nas part of the J compilers that this is like<01:38:39.760> my<01:38:40.320> this<01:38:40.560> is<01:38:40.960> my<01:38:41.199> what<01:38:41.520> interests<01:38:41.760> me<01:38:41.920> I'm\nlike my this is my what interests me I'm\nlike my this is my what interests me I'm sorry<01:38:42.159> if<01:38:42.320> it's<01:38:42.480> not<01:38:42.560> for<01:38:42.719> everyone<01:38:43.040> but<01:38:43.360> like\nsorry if it's not for everyone but like\nsorry if it's not for everyone but like how<01:38:44.000> did<01:38:44.159> you<01:38:44.960> uh<01:38:46.000> what<01:38:46.239> what<01:38:46.560> went<01:38:46.719> into\nhow did you uh what what went into\nhow did you uh what what went into designing<01:38:47.360> the<01:38:47.440> right<01:38:47.679> debugging<01:38:48.080> for<01:38:48.239> format\ndesigning the right debugging for format\ndesigning the right debugging for format and<01:38:48.719> why<01:38:48.800> is<01:38:48.960> it<01:38:49.119> better<01:38:49.440> than<01:38:49.679> PDB<01:38:50.159> like<01:38:50.400> why\nand why is it better than PDB like why\nand why is it better than PDB like why why<01:38:50.639> is<01:38:50.800> it<01:38:50.960> worth<01:38:51.119> transforming\nwhy is it worth transforming\nwhy is it worth transforming >> yeah<01:38:52.239> so<01:38:52.800> um<01:38:53.600> the<01:38:53.840> the<01:38:54.239> reason<01:38:54.400> why<01:38:55.440> uh<01:38:55.840> So<01:38:56.239> the\n>> yeah so um the the reason why uh So the\n>> yeah so um the the reason why uh So the reason<01:38:56.719> why<01:38:56.960> that<01:38:57.199> whole<01:38:57.440> that<01:38:57.760> whole<01:38:58.000> thing\nreason why that whole that whole thing\nreason why that whole that whole thing started<01:38:59.040> when<01:38:59.280> I<01:38:59.440> originally<01:38:59.840> joined<01:39:00.159> the\nstarted when I originally joined the\nstarted when I originally joined the project<01:39:01.040> we<01:39:01.360> the<01:39:01.679> team<01:39:02.080> was<01:39:02.400> working<01:39:02.719> on<01:39:03.840> uh\nproject we the team was working on uh\nproject we the team was working on uh debug<01:39:04.320> info<01:39:04.719> parsing.<01:39:05.119> Now<01:39:05.360> if<01:39:05.520> you<01:39:05.600> want<01:39:05.760> to\ndebug info parsing. Now if you want to\ndebug info parsing. Now if you want to support<01:39:06.480> a<01:39:06.719> debugger<01:39:07.199> that's<01:39:07.520> like<01:39:07.679> a<01:39:07.920> un<01:39:08.400> it's\nsupport a debugger that's like a un it's\nsupport a debugger that's like a un it's like<01:39:08.800> a<01:39:08.960> uniform<01:39:09.360> debugger<01:39:10.000> that<01:39:10.320> works<01:39:10.560> on\nlike a uniform debugger that works on\nlike a uniform debugger that works on both<01:39:11.199> Windows<01:39:11.520> and<01:39:11.679> Linux<01:39:12.000> like<01:39:12.159> the<01:39:12.320> original\nboth Windows and Linux like the original\nboth Windows and Linux like the original ambition<01:39:13.119> of<01:39:13.199> the<01:39:13.360> project<01:39:13.600> was<01:39:13.840> Linux<01:39:14.719> uh<01:39:14.880> was\nambition of the project was Linux uh was\nambition of the project was Linux uh was a<01:39:15.119> Linux<01:39:15.440> debugger<01:39:15.840> good<01:39:16.000> Linux<01:39:16.239> debugger.\na Linux debugger good Linux debugger.\na Linux debugger good Linux debugger. So,<01:39:17.119> so<01:39:17.600> we<01:39:17.840> know<01:39:18.000> we<01:39:18.320> wanted<01:39:18.560> to<01:39:18.719> abstract\nSo, so we know we wanted to abstract\nSo, so we know we wanted to abstract over<01:39:19.760> those<01:39:20.000> two<01:39:20.239> possibilities<01:39:20.960> and<01:39:21.600> you\nover those two possibilities and you\nover those two possibilities and you know<01:39:22.000> you<01:39:22.239> kind<01:39:22.400> of<01:39:22.480> should<01:39:22.800> because<01:39:22.960> there's\nknow you kind of should because there's\nknow you kind of should because there's it's<01:39:24.239> just<01:39:24.400> two<01:39:24.639> different<01:39:24.960> ways<01:39:25.199> of<01:39:25.360> exposing\nit's just two different ways of exposing\nit's just two different ways of exposing the<01:39:25.920> same<01:39:26.080> information<01:39:26.400> from<01:39:26.639> the<01:39:26.800> underlying\nthe same information from the underlying\nthe same information from the underlying system<01:39:27.600> in<01:39:27.840> a<01:39:27.920> sense.<01:39:28.159> So<01:39:28.239> it's<01:39:28.400> like<01:39:28.480> you\nsystem in a sense. So it's like you\nsystem in a sense. So it's like you should<01:39:28.800> be<01:39:28.960> able<01:39:29.040> to.<01:39:29.360> So<01:39:29.679> so<01:39:29.920> we<01:39:30.159> started<01:39:30.800> and\nshould be able to. So so we started and\nshould be able to. So so we started and of<01:39:31.199> course<01:39:31.360> on<01:39:31.520> Windows<01:39:31.840> and<01:39:32.000> Linux<01:39:32.239> they<01:39:32.400> use\nof course on Windows and Linux they use\nof course on Windows and Linux they use two<01:39:32.719> different<01:39:32.880> tool<01:39:33.199> chains.<01:39:33.760> They<01:39:33.840> use<01:39:34.080> two\ntwo different tool chains. They use two\ntwo different tool chains. They use two different<01:39:34.400> debug<01:39:34.800> info<01:39:35.040> formats.<01:39:35.679> On<01:39:35.840> Linux\ndifferent debug info formats. On Linux\ndifferent debug info formats. On Linux you<01:39:36.239> have<01:39:36.320> dwarf.<01:39:36.719> Windows<01:39:36.960> you<01:39:37.119> have<01:39:37.199> PTB.<01:39:37.920> We\nyou have dwarf. Windows you have PTB. We\nyou have dwarf. Windows you have PTB. We were<01:39:38.159> building<01:39:38.400> an<01:39:38.560> abstract<01:39:39.280> uh<01:39:39.440> parsing\nwere building an abstract uh parsing\nwere building an abstract uh parsing library<01:39:40.239> for<01:39:40.480> it.<01:39:41.040> You<01:39:41.199> can<01:39:41.360> still<01:39:41.520> find<01:39:41.679> this\nlibrary for it. You can still find this\nlibrary for it. You can still find this code<01:39:42.080> online,<01:39:42.480> but<01:39:42.800> it's<01:39:43.199> uh<01:39:44.159> uh<01:39:44.400> it's<01:39:45.040> it\ncode online, but it's uh uh it's it\ncode online, but it's uh uh it's it basically<01:39:45.840> presents<01:39:46.239> an<01:39:46.480> interface<01:39:46.960> and<01:39:47.199> it\nbasically presents an interface and it\nbasically presents an interface and it go<01:39:47.440> it<01:39:47.600> does<01:39:47.760> that<01:39:47.920> abstraction<01:39:48.320> thing<01:39:48.560> I\ngo it does that abstraction thing I\ngo it does that abstraction thing I talked<01:39:48.960> about<01:39:49.119> where<01:39:49.360> it's<01:39:49.520> like<01:39:49.679> you<01:39:49.840> have\ntalked about where it's like you have\ntalked about where it's like you have one<01:39:50.239> interface<01:39:50.800> and<01:39:51.040> it<01:39:51.360> applies<01:39:51.679> to<01:39:51.840> two\none interface and it applies to two\none interface and it applies to two concrete<01:39:52.480> realities.<01:39:53.040> So<01:39:53.199> you've<01:39:53.520> got<01:39:53.679> a<01:39:53.920> PTB\nconcrete realities. So you've got a PTB\nconcrete realities. So you've got a PTB parser<01:39:54.719> as<01:39:54.880> one<01:39:55.040> backend<01:39:55.360> and<01:39:55.520> you've<01:39:55.679> got<01:39:55.760> a\nparser as one backend and you've got a\nparser as one backend and you've got a dwarf<01:39:56.320> parser<01:39:56.719> as<01:39:56.960> the<01:39:57.119> other<01:39:57.280> backend\ndwarf parser as the other backend\ndwarf parser as the other backend presented<01:39:58.480> through<01:39:58.639> the<01:39:58.800> same<01:39:58.960> interface.\npresented through the same interface.\npresented through the same interface. The<01:40:00.080> problem<01:40:00.320> is<01:40:00.480> is<01:40:00.639> that<01:40:00.880> when<01:40:01.040> you're\nThe problem is is that when you're\nThe problem is is that when you're actually<01:40:01.440> like<01:40:01.760> wanting<01:40:02.000> to<01:40:02.239> use<01:40:02.480> debug<01:40:02.880> info,\nactually like wanting to use debug info,\nactually like wanting to use debug info, there's<01:40:03.600> a<01:40:03.760> lot<01:40:03.840> of<01:40:03.920> incremental<01:40:04.560> things<01:40:04.800> you\nthere's a lot of incremental things you\nthere's a lot of incremental things you want<01:40:05.040> to<01:40:05.119> do.<01:40:05.360> You<01:40:05.520> want<01:40:05.600> to<01:40:05.679> be<01:40:05.760> able<01:40:05.920> to<01:40:06.000> say\nwant to do. You want to be able to say\nwant to do. You want to be able to say like,<01:40:06.800> well,<01:40:06.960> I<01:40:07.199> don't<01:40:07.280> want<01:40:07.360> to<01:40:07.520> parse<01:40:07.840> like\nlike, well, I don't want to parse like\nlike, well, I don't want to parse like all<01:40:08.400> the<01:40:08.639> types<01:40:09.280> if<01:40:09.520> I'm<01:40:09.679> just<01:40:09.920> trying<01:40:10.080> to<01:40:10.239> take\nall the types if I'm just trying to take\nall the types if I'm just trying to take an<01:40:10.639> address<01:40:10.880> and<01:40:11.119> turn<01:40:11.280> it<01:40:11.440> into<01:40:11.600> a<01:40:11.760> symbol.\nan address and turn it into a symbol.\nan address and turn it into a symbol. Like,<01:40:12.239> there's<01:40:12.400> so<01:40:12.560> much<01:40:12.719> information<01:40:13.040> in\nLike, there's so much information in\nLike, there's so much information in there<01:40:13.280> that<01:40:13.600> really<01:40:13.760> what<01:40:13.920> you<01:40:14.080> want<01:40:14.239> is<01:40:14.400> like\nthere that really what you want is like\nthere that really what you want is like incremental<01:40:15.119> parsing<01:40:15.440> or<01:40:15.600> incremental\nincremental parsing or incremental\nincremental parsing or incremental lookups.<01:40:17.040> Um,<01:40:18.159> it's<01:40:18.480> kind<01:40:18.560> of<01:40:18.639> rare<01:40:18.880> that<01:40:19.119> you\nlookups. Um, it's kind of rare that you\nlookups. Um, it's kind of rare that you want<01:40:19.440> just<01:40:19.679> to<01:40:19.840> parse<01:40:20.239> literally<01:40:20.639> everything\nwant just to parse literally everything\nwant just to parse literally everything um<01:40:21.679> right<01:40:21.920> away.<01:40:22.719> And<01:40:23.040> so<01:40:24.239> long<01:40:24.480> story<01:40:24.800> short,\num right away. And so long story short,\num right away. And so long story short, because<01:40:25.760> Dwarf<01:40:26.080> and<01:40:26.239> PDB<01:40:26.639> are<01:40:26.880> different<01:40:27.040> in\nbecause Dwarf and PDB are different in\nbecause Dwarf and PDB are different in how<01:40:27.360> they<01:40:27.520> arrange<01:40:27.840> that<01:40:28.080> data,<01:40:28.480> it<01:40:28.639> gets<01:40:28.800> like\nhow they arrange that data, it gets like\nhow they arrange that data, it gets like very<01:40:29.360> complicated<01:40:29.760> very<01:40:30.080> quickly<01:40:30.320> to<01:40:30.560> build\nvery complicated very quickly to build\nvery complicated very quickly to build an<01:40:31.199> abstract<01:40:31.679> API<01:40:32.400> that<01:40:32.719> presents<01:40:33.040> these\nan abstract API that presents these\nan abstract API that presents these incremental<01:40:33.760> paths<01:40:34.159> that<01:40:34.480> don't<01:40:34.639> have<01:40:34.880> really\nincremental paths that don't have really\nincremental paths that don't have really weird<01:40:35.679> details<01:40:36.159> like<01:40:36.719> oh<01:40:37.040> in<01:40:37.280> PDB<01:40:37.920> it's<01:40:38.159> really\nweird details like oh in PDB it's really\nweird details like oh in PDB it's really fast<01:40:38.560> to<01:40:38.719> do<01:40:38.880> this<01:40:39.119> particular<01:40:39.520> thing.<01:40:40.000> In\nfast to do this particular thing. In\nfast to do this particular thing. In dwarf<01:40:40.639> you<01:40:40.800> need<01:40:40.880> to<01:40:40.960> do<01:40:41.040> a<01:40:41.280> parse<01:40:41.600> all<01:40:41.840> of<01:40:42.000> that\ndwarf you need to do a parse all of that\ndwarf you need to do a parse all of that particular<01:40:42.639> section<01:40:42.960> before<01:40:43.199> you<01:40:43.360> can<01:40:43.440> do\nparticular section before you can do\nparticular section before you can do this.<01:40:43.760> And<01:40:43.840> so<01:40:44.000> it's<01:40:44.159> like<01:40:44.560> it's<01:40:44.800> just<01:40:44.960> like<01:40:45.119> a\nthis. And so it's like it's just like a\nthis. And so it's like it's just like a nightmare<01:40:45.840> when<01:40:46.080> you're<01:40:46.239> actually<01:40:46.400> writing\nnightmare when you're actually writing\nnightmare when you're actually writing stuff<01:40:46.880> on<01:40:47.119> top<01:40:47.440> because<01:40:47.679> it's<01:40:47.920> like<01:40:48.080> every<01:40:48.239> API\nstuff on top because it's like every API\nstuff on top because it's like every API now<01:40:48.960> has<01:40:49.119> two<01:40:49.360> potential<01:40:49.760> guarantees.<01:40:50.400> It's\nnow has two potential guarantees. It's\nnow has two potential guarantees. It's like<01:40:50.960> okay<01:40:51.199> when<01:40:51.360> I<01:40:51.520> parse<01:40:52.159> when<01:40:52.400> I<01:40:52.560> want<01:40:52.639> to<01:40:52.719> do\nlike okay when I parse when I want to do\nlike okay when I parse when I want to do this<01:40:53.119> particular<01:40:53.520> incremental<01:40:54.000> parse<01:40:54.400> it\nthis particular incremental parse it\nthis particular incremental parse it might<01:40:54.719> be<01:40:54.800> fast<01:40:55.040> it<01:40:55.199> might<01:40:55.360> be<01:40:55.440> slow<01:40:55.920> depending\nmight be fast it might be slow depending\nmight be fast it might be slow depending on<01:40:56.400> what<01:40:56.560> I'm<01:40:56.719> actually<01:40:56.960> using<01:40:57.199> and<01:40:57.360> so<01:40:57.520> I<01:40:57.760> have\non what I'm actually using and so I have\non what I'm actually using and so I have no<01:40:58.159> I<01:40:58.320> have<01:40:58.400> very<01:40:58.639> limited<01:40:59.040> information<01:40:59.440> about\nno I have very limited information about\nno I have very limited information about what's<01:41:00.000> actually<01:41:00.239> going<01:41:00.320> to<01:41:00.480> happen<01:41:01.119> and<01:41:01.280> so\nwhat's actually going to happen and so\nwhat's actually going to happen and so what's<01:41:01.760> much<01:41:02.000> better<01:41:03.040> is<01:41:03.280> to<01:41:03.440> just<01:41:03.920> have\nwhat's much better is to just have\nwhat's much better is to just have basically<01:41:05.199> you<01:41:05.360> do<01:41:05.520> the<01:41:05.679> parse<01:41:06.000> all<01:41:06.480> in<01:41:06.719> as\nbasically you do the parse all in as\nbasically you do the parse all in as fast<01:41:07.119> a<01:41:07.360> way<01:41:07.440> as<01:41:07.679> possible<01:41:08.400> and<01:41:08.719> then<01:41:09.360> um<01:41:09.840> and\nfast a way as possible and then um and\nfast a way as possible and then um and then<01:41:10.239> just<01:41:10.400> use<01:41:10.639> the<01:41:10.800> the<01:41:11.119> full<01:41:11.360> parsed\nthen just use the the full parsed\nthen just use the the full parsed structure.<01:41:12.880> Um<01:41:14.239> but<01:41:14.719> uh<01:41:14.880> at<01:41:15.119> that<01:41:15.440> point<01:41:15.840> like\nstructure. Um but uh at that point like\nstructure. Um but uh at that point like it<01:41:16.320> really<01:41:16.480> just<01:41:16.719> made<01:41:16.880> sense<01:41:17.119> to<01:41:17.280> go<01:41:17.440> the<01:41:17.679> full\nit really just made sense to go the full\nit really just made sense to go the full way<01:41:18.000> to<01:41:18.159> the<01:41:18.239> format.<01:41:18.639> Like<01:41:18.800> at<01:41:18.960> that<01:41:19.040> point\nway to the format. Like at that point\nway to the format. Like at that point you<01:41:19.360> you've<01:41:19.679> already<01:41:19.840> doing<01:41:20.000> this<01:41:20.159> parcel,\nyou you've already doing this parcel,\nyou you've already doing this parcel, you<01:41:20.800> have<01:41:20.960> internal<01:41:21.280> structures<01:41:21.679> for<01:41:21.920> it.\nyou have internal structures for it.\nyou have internal structures for it. What<01:41:22.960> would<01:41:23.119> be<01:41:23.280> even<01:41:23.440> better<01:41:23.679> if<01:41:24.239> is<01:41:24.400> if<01:41:24.639> like\nWhat would be even better if is if like\nWhat would be even better if is if like you<01:41:25.119> could<01:41:25.199> actually<01:41:25.440> just<01:41:25.840> um<01:41:26.320> you<01:41:26.480> know\nyou could actually just um you know\nyou could actually just um you know serialize<01:41:28.000> this<01:41:28.239> to<01:41:28.400> disk,<01:41:28.800> have<01:41:28.960> it<01:41:29.119> be<01:41:29.199> a\nserialize this to disk, have it be a\nserialize this to disk, have it be a much<01:41:29.600> simpler<01:41:29.840> debug<01:41:30.239> info<01:41:30.480> format<01:41:30.960> that<01:41:31.119> you\nmuch simpler debug info format that you\nmuch simpler debug info format that you can<01:41:31.360> use<01:41:31.600> everywhere<01:41:32.159> because<01:41:32.400> it's<01:41:32.560> not<01:41:32.639> just\ncan use everywhere because it's not just\ncan use everywhere because it's not just the<01:41:32.960> debugger<01:41:33.280> that<01:41:33.360> has<01:41:33.440> to<01:41:33.520> use<01:41:33.679> debug<01:41:34.000> info.\nthe debugger that has to use debug info.\nthe debugger that has to use debug info. There's<01:41:34.560> tons<01:41:34.800> of<01:41:35.119> tons<01:41:35.440> of<01:41:35.600> tools<01:41:35.840> that<01:41:36.000> need\nThere's tons of tons of tools that need\nThere's tons of tons of tools that need to<01:41:36.239> use<01:41:36.400> debug<01:41:36.719> info.<01:41:37.280> And<01:41:37.440> so<01:41:37.679> we<01:41:37.920> were<01:41:38.080> like\nto use debug info. And so we were like\nto use debug info. And so we were like we<01:41:38.800> we<01:41:39.119> just<01:41:39.360> don't<01:41:39.520> want<01:41:39.600> to<01:41:39.679> work<01:41:39.840> on<01:41:40.000> PDB\nwe we just don't want to work on PDB\nwe we just don't want to work on PDB dwarf<01:41:40.800> actually.<01:41:41.119> Like<01:41:41.280> it's<01:41:41.520> actually\ndwarf actually. Like it's actually\ndwarf actually. Like it's actually terrible.<01:41:42.159> So,<01:41:42.960> um,<01:41:43.440> so<01:41:43.679> we<01:41:44.000> just<01:41:44.159> built<01:41:44.480> this\nterrible. So, um, so we just built this\nterrible. So, um, so we just built this one<01:41:45.440> and,<01:41:46.159> uh,<01:41:46.480> in<01:41:46.719> terms<01:41:46.880> of<01:41:47.040> like<01:41:47.199> how<01:41:47.520> you\none and, uh, in terms of like how you\none and, uh, in terms of like how you design<01:41:48.080> it,<01:41:48.960> like<01:41:49.199> I<01:41:49.520> could<01:41:49.679> give<01:41:49.760> my<01:41:50.000> thoughts\ndesign it, like I could give my thoughts\ndesign it, like I could give my thoughts on<01:41:50.320> that,<01:41:50.560> but<01:41:50.880> the<01:41:51.119> person<01:41:51.360> responsible<01:41:51.840> for\non that, but the person responsible for\non that, but the person responsible for the<01:41:52.239> original<01:41:52.880> design<01:41:53.199> of<01:41:53.440> the<01:41:53.600> format<01:41:53.920> is\nthe original design of the format is\nthe original design of the format is Alan<01:41:54.400> Webster,<01:41:54.880> who<01:41:55.040> made<01:41:55.199> Forkoder.<01:41:56.320> So,<01:41:56.560> he\nAlan Webster, who made Forkoder. So, he\nAlan Webster, who made Forkoder. So, he uh,<01:41:58.159> he<01:41:58.400> has<01:41:58.560> since<01:41:58.880> he's<01:41:59.119> not<01:41:59.199> on<01:41:59.360> the<01:41:59.520> project\nuh, he has since he's not on the project\nuh, he has since he's not on the project anymore,<01:42:00.239> but<01:42:00.480> that<01:42:00.719> was<01:42:00.880> like<01:42:01.040> his<01:42:01.280> last<01:42:01.440> big\nanymore, but that was like his last big\nanymore, but that was like his last big contribution<01:42:02.239> to<01:42:02.400> it.<01:42:02.880> He<01:42:03.040> did<01:42:03.280> an<01:42:03.520> excellent\ncontribution to it. He did an excellent\ncontribution to it. He did an excellent job<01:42:04.080> on<01:42:04.239> it.<01:42:04.719> And<01:42:04.880> it's<01:42:05.360> um,<01:42:06.400> I<01:42:06.639> mean,<01:42:06.800> it's\njob on it. And it's um, I mean, it's\njob on it. And it's um, I mean, it's kind<01:42:07.280> of<01:42:07.360> like<01:42:08.000> it's<01:42:08.239> kind<01:42:08.320> of<01:42:08.400> like<01:42:08.560> how<01:42:08.719> you\nkind of like it's kind of like how you\nkind of like it's kind of like how you do<01:42:09.040> anything.<01:42:09.440> It's<01:42:09.840> um<01:42:10.880> it's<01:42:11.199> sort<01:42:11.360> of<01:42:11.440> like\ndo anything. It's um it's sort of like\ndo anything. It's um it's sort of like what<01:42:11.760> Casey<01:42:12.159> was<01:42:12.320> talking<01:42:12.560> about<01:42:13.360> like<01:42:13.679> get\nwhat Casey was talking about like get\nwhat Casey was talking about like get rid<01:42:14.000> of<01:42:14.080> the<01:42:14.239> idea<01:42:14.400> that<01:42:14.560> you<01:42:14.719> don't<01:42:14.880> need\nrid of the idea that you don't need\nrid of the idea that you don't need someone<01:42:15.360> omnisient<01:42:15.840> about<01:42:16.080> things.<01:42:16.400> It's\nsomeone omnisient about things. It's\nsomeone omnisient about things. It's like<01:42:16.719> no<01:42:16.880> just<01:42:17.040> like<01:42:17.280> store<01:42:17.600> the<01:42:17.760> data<01:42:18.000> with\nlike no just like store the data with\nlike no just like store the data with all<01:42:18.239> the<01:42:18.400> context<01:42:18.800> that<01:42:19.040> you<01:42:19.199> have.<01:42:19.760> And<01:42:19.920> so\nall the context that you have. And so\nall the context that you have. And so the<01:42:20.880> rad<01:42:21.119> debug<01:42:21.440> info<01:42:21.679> format<01:42:22.000> is<01:42:22.159> like<01:42:22.320> very\nthe rad debug info format is like very\nthe rad debug info format is like very simple.<01:42:22.719> It's<01:42:22.960> like<01:42:23.280> look,<01:42:23.520> we've<01:42:23.679> got<01:42:23.760> these\nsimple. It's like look, we've got these\nsimple. It's like look, we've got these flat<01:42:24.239> data<01:42:24.480> tables<01:42:24.800> and<01:42:25.040> they<01:42:25.199> point<01:42:25.520> they\nflat data tables and they point they\nflat data tables and they point they index<01:42:26.080> into<01:42:26.320> each<01:42:26.560> other<01:42:27.119> and<01:42:27.360> it's<01:42:27.600> just<01:42:27.760> like\nindex into each other and it's just like\nindex into each other and it's just like that<01:42:28.320> the<01:42:28.560> information<01:42:28.960> you<01:42:29.199> want<01:42:29.440> laid<01:42:29.760> out\nthat the information you want laid out\nthat the information you want laid out in<01:42:30.080> a<01:42:30.239> really<01:42:30.400> simple<01:42:30.639> way<01:42:31.360> and<01:42:31.600> it's<01:42:31.920> just<01:42:32.159> and\nin a really simple way and it's just and\nin a really simple way and it's just and that<01:42:32.560> makes<01:42:32.719> it<01:42:32.880> very<01:42:33.040> simple<01:42:33.280> to<01:42:33.440> do<01:42:33.600> things\nthat makes it very simple to do things\nthat makes it very simple to do things like<01:42:34.000> incremental<01:42:34.480> lookups<01:42:34.880> and<01:42:35.119> like<01:42:35.280> to<01:42:35.520> use\nlike incremental lookups and like to use\nlike incremental lookups and like to use it<01:42:35.840> much<01:42:36.080> more<01:42:36.480> quickly<01:42:37.440> um<01:42:37.600> with<01:42:37.840> all<01:42:38.000> the\nit much more quickly um with all the\nit much more quickly um with all the guarantees<01:42:38.639> you<01:42:38.880> want<01:42:39.119> like<01:42:39.280> from<01:42:39.440> the\nguarantees you want like from the\nguarantees you want like from the debugger's<01:42:40.080> point<01:42:40.159> of<01:42:40.320> view<01:42:40.480> for<01:42:40.639> example.<01:42:41.040> So\ndebugger's point of view for example. So\ndebugger's point of view for example. So instead<01:42:41.840> of<01:42:42.000> having<01:42:42.159> to<01:42:42.480> poke<01:42:42.719> into<01:42:42.960> two\ninstead of having to poke into two\ninstead of having to poke into two different<01:42:43.360> backends<01:42:43.840> basically.<01:42:44.239> So<01:42:44.960> um<01:42:45.199> I\ndifferent backends basically. So um I\ndifferent backends basically. So um I may<01:42:45.520> have<01:42:45.679> missed<01:42:45.920> part<01:42:46.080> of<01:42:46.159> the<01:42:46.320> question<01:42:46.400> in\nmay have missed part of the question in\nmay have missed part of the question in that<01:42:46.719> but<01:42:46.960> hopefully<01:42:47.199> that<01:42:47.679> yeah\nthat but hopefully that yeah\nthat but hopefully that yeah >> I'll<01:42:48.560> do<01:42:48.639> the<01:42:48.800> follow-up<01:42:49.199> later<01:42:49.520> because<01:42:50.000> it\n>> I'll do the follow-up later because it\n>> I'll do the follow-up later because it might<01:42:50.320> be<01:42:50.400> very<01:42:50.719> specific.<01:42:51.440> Um<01:42:52.880> the<01:42:53.119> rad\nmight be very specific. Um the rad\nmight be very specific. Um the rad bugger<01:42:53.760> is<01:42:53.920> written<01:42:54.320> is<01:42:54.480> it<01:42:54.800> written<01:42:54.960> in<01:42:55.199> C<01:42:55.440> or\nbugger is written is it written in C or\nbugger is written is it written in C or C++<01:42:56.560> or<01:42:56.960> like\nC++ or like\nC++ or like >> oh<01:42:57.600> it's<01:42:57.760> just<01:42:57.920> C.<01:42:58.239> Yeah.\n>> oh it's just C. Yeah.\n>> oh it's just C. Yeah. >> Okay.<01:42:58.639> So<01:42:58.800> bare<01:42:59.119> C.<01:42:59.520> Why<01:42:59.760> bare<01:43:00.080> C<01:43:00.239> and<01:43:00.480> not<01:43:00.639> like\n>> Okay. So bare C. Why bare C and not like\n>> Okay. So bare C. Why bare C and not like like<01:43:01.360> often<01:43:01.840> like<01:43:02.320> I<01:43:02.719> many<01:43:03.040> people<01:43:03.280> actually\nlike often like I many people actually\nlike often like I many people actually in<01:43:03.679> the<01:43:03.840> talks<01:43:04.159> right<01:43:04.400> now<01:43:04.639> picked<01:43:04.960> bare<01:43:05.360> C.<01:43:06.000> Um\nin the talks right now picked bare C. Um\nin the talks right now picked bare C. Um >> I<01:43:07.119> thought<01:43:07.280> the<01:43:07.520> common<01:43:07.840> way<01:43:08.080> was<01:43:08.320> like<01:43:08.560> to<01:43:08.800> use\n>> I thought the common way was like to use\n>> I thought the common way was like to use C++<01:43:09.760> but<01:43:10.239> almost<01:43:10.719> nothing<01:43:11.040> of<01:43:11.199> C++<01:43:11.840> even<01:43:12.000> as\nC++ but almost nothing of C++ even as\nC++ but almost nothing of C++ even as Casey<01:43:12.560> usually<01:43:12.800> does<01:43:12.960> it.<01:43:13.199> Y<01:43:13.440> like<01:43:13.600> what\nCasey usually does it. Y like what\nCasey usually does it. Y like what prompted<01:43:14.239> you<01:43:14.400> to<01:43:14.560> do<01:43:14.800> nahh<01:43:15.440> just<01:43:15.679> pure<01:43:16.080> C.<01:43:16.320> So\nprompted you to do nahh just pure C. So\nprompted you to do nahh just pure C. So I<01:43:17.119> think<01:43:17.280> like<01:43:18.000> I<01:43:18.239> so<01:43:18.400> I<01:43:18.560> don't<01:43:18.719> tend<01:43:18.880> to<01:43:18.960> do\nI think like I so I don't tend to do\nI think like I so I don't tend to do very<01:43:19.360> math<01:43:19.600> heavy<01:43:19.920> code.<01:43:20.320> So<01:43:20.480> I<01:43:21.280> um\nvery math heavy code. So I um\nvery math heavy code. So I um unsurprisingly<01:43:22.080> I<01:43:22.239> mean<01:43:22.400> there's<01:43:22.560> not<01:43:22.639> a<01:43:22.719> lot\nunsurprisingly I mean there's not a lot\nunsurprisingly I mean there's not a lot of<01:43:22.960> like<01:43:23.199> linear<01:43:23.520> algebra<01:43:23.840> in<01:43:24.000> a<01:43:24.159> debugger\nof like linear algebra in a debugger\nof like linear algebra in a debugger basically.<01:43:25.040> So<01:43:25.199> it's<01:43:25.440> like<01:43:25.760> I<01:43:26.000> benefit<01:43:26.400> less\nbasically. So it's like I benefit less\nbasically. So it's like I benefit less from<01:43:26.800> a<01:43:27.040> lot<01:43:27.119> of<01:43:27.199> things<01:43:27.360> that<01:43:27.600> people<01:43:27.760> who\nfrom a lot of things that people who\nfrom a lot of things that people who need<01:43:28.480> C++<01:43:29.280> do<01:43:29.760> which<01:43:30.000> it<01:43:30.159> would<01:43:30.320> be<01:43:30.480> something\nneed C++ do which it would be something\nneed C++ do which it would be something like<01:43:30.880> operator<01:43:31.280> overloading<01:43:31.920> like<01:43:32.080> that\nlike operator overloading like that\nlike operator overloading like that becomes<01:43:32.639> pretty<01:43:32.800> important<01:43:33.040> if<01:43:33.199> you're\nbecomes pretty important if you're\nbecomes pretty important if you're writing<01:43:33.520> lots<01:43:33.760> and<01:43:33.920> lots<01:43:34.159> of<01:43:34.320> math<01:43:35.040> code.<01:43:35.840> Um\nwriting lots and lots of math code. Um\nwriting lots and lots of math code. Um for<01:43:36.880> me<01:43:37.360> it's<01:43:37.679> like<01:43:38.000> I'm<01:43:38.320> not<01:43:38.480> writing<01:43:38.719> that\nfor me it's like I'm not writing that\nfor me it's like I'm not writing that much<01:43:39.119> code.<01:43:39.679> Um<01:43:39.920> I<01:43:40.080> could<01:43:40.239> build<01:43:40.480> kind<01:43:40.639> of<01:43:40.719> the\nmuch code. Um I could build kind of the\nmuch code. Um I could build kind of the abstractions<01:43:41.440> I<01:43:41.679> wanted<01:43:42.080> inside<01:43:42.480> of<01:43:42.639> C.<01:43:43.360> um<01:43:43.600> I\nabstractions I wanted inside of C. um I\nabstractions I wanted inside of C. um I could<01:43:43.920> build<01:43:44.080> the<01:43:44.239> tools<01:43:44.480> I<01:43:44.639> needed<01:43:45.360> and<01:43:45.920> one\ncould build the tools I needed and one\ncould build the tools I needed and one of<01:43:46.159> the<01:43:46.400> most<01:43:46.560> important<01:43:46.960> things<01:43:47.520> was<01:43:47.760> that<01:43:48.080> C\nof the most important things was that C\nof the most important things was that C compiles<01:43:48.880> like<01:43:49.040> 40%<01:43:49.520> faster.<01:43:50.000> Like<01:43:50.159> if<01:43:50.400> you\ncompiles like 40% faster. Like if you\ncompiles like 40% faster. Like if you just<01:43:50.639> have<01:43:51.119> because<01:43:51.280> the<01:43:51.600> and<01:43:52.239> to<01:43:52.560> explain<01:43:52.800> how\njust have because the and to explain how\njust have because the and to explain how I<01:43:53.119> know<01:43:53.280> that<01:43:54.000> the<01:43:54.239> codebase<01:43:54.719> used<01:43:54.880> to<01:43:55.040> be<01:43:55.119> C++\nI know that the codebase used to be C++\nI know that the codebase used to be C++ it<01:43:56.080> was<01:43:56.320> Casey<01:43:56.639> style<01:43:56.960> C++<01:43:57.440> where<01:43:57.600> it's<01:43:57.840> like\nit was Casey style C++ where it's like\nit was Casey style C++ where it's like you've<01:43:58.560> got<01:43:58.719> C++<01:43:59.280> it's<01:43:59.520> mostly<01:43:59.840> C<01:44:00.080> but<01:44:00.320> then\nyou've got C++ it's mostly C but then\nyou've got C++ it's mostly C but then there's<01:44:00.639> a<01:44:00.800> couple<01:44:01.040> of<01:44:01.280> things<01:44:01.440> that<01:44:01.679> you<01:44:01.840> use\nthere's a couple of things that you use\nthere's a couple of things that you use in<01:44:02.239> there<01:44:03.360> and<01:44:04.080> uh<01:44:04.800> at<01:44:05.040> some<01:44:05.280> point<01:44:05.679> like<01:44:06.480> um\nin there and uh at some point like um\nin there and uh at some point like um when<01:44:07.840> I<01:44:08.000> had<01:44:08.239> like<01:44:08.400> more<01:44:08.639> control<01:44:08.880> over<01:44:09.040> the\nwhen I had like more control over the\nwhen I had like more control over the project<01:44:09.679> I<01:44:09.840> was<01:44:10.000> like<01:44:11.040> build<01:44:11.280> times<01:44:11.600> are\nproject I was like build times are\nproject I was like build times are important<01:44:11.920> to<01:44:12.080> me<01:44:12.639> for<01:44:13.040> the<01:44:13.199> reasons<01:44:13.520> I<01:44:13.760> open\nimportant to me for the reasons I open\nimportant to me for the reasons I open the<01:44:14.080> talk<01:44:14.239> with.<01:44:14.560> And<01:44:14.639> so<01:44:14.800> I'm<01:44:14.960> like<01:44:15.280> I'm<01:44:15.440> just\nthe talk with. And so I'm like I'm just\nthe talk with. And so I'm like I'm just going<01:44:15.760> to<01:44:15.840> like<01:44:16.560> turn<01:44:16.800> this<01:44:16.960> to<01:44:17.119> C<01:44:17.360> because<01:44:17.520> I'm\ngoing to like turn this to C because I'm\ngoing to like turn this to C because I'm pretty<01:44:17.760> sure<01:44:17.920> that'll<01:44:18.239> compile<01:44:18.560> faster.<01:44:19.040> And\npretty sure that'll compile faster. And\npretty sure that'll compile faster. And it<01:44:19.280> did.<01:44:19.520> It's<01:44:19.760> about<01:44:19.840> 40%<01:44:20.320> faster<01:44:20.639> at<01:44:20.719> least\nit did. It's about 40% faster at least\nit did. It's about 40% faster at least on<01:44:21.440> you<01:44:21.520> know<01:44:21.679> my<01:44:22.000> machines<01:44:22.800> uh<01:44:22.880> with<01:44:23.040> with<01:44:23.600> you\non you know my machines uh with with you\non you know my machines uh with with you know<01:44:23.920> whatever<01:44:24.320> version<01:44:24.560> of<01:44:24.719> MSVC<01:44:25.360> I'm<01:44:25.600> using\nknow whatever version of MSVC I'm using\nknow whatever version of MSVC I'm using with<01:44:26.639> clang<01:44:26.960> it's<01:44:27.199> similar<01:44:27.520> and<01:44:27.679> then<01:44:28.560> um<01:44:29.040> and\nwith clang it's similar and then um and\nwith clang it's similar and then um and there's<01:44:29.440> a<01:44:29.679> couple<01:44:29.760> of<01:44:29.920> things<01:44:30.080> in<01:44:30.320> C<01:44:30.560> that<01:44:30.800> are\nthere's a couple of things in C that are\nthere's a couple of things in C that are actually<01:44:31.199> better<01:44:31.600> like<01:44:32.320> um<01:44:32.560> Vaslav<01:44:33.360> yesterday\nactually better like um Vaslav yesterday\nactually better like um Vaslav yesterday mentioned<01:44:34.239> designated<01:44:34.800> initializers<01:44:35.840> C++\nmentioned designated initializers C++\nmentioned designated initializers C++ does<01:44:36.639> have<01:44:36.800> them<01:44:37.040> but<01:44:37.199> they're<01:44:37.679> pretty<01:44:38.159> bad\ndoes have them but they're pretty bad\ndoes have them but they're pretty bad like<01:44:38.800> they're<01:44:39.040> not<01:44:39.840> um<01:44:40.480> I<01:44:40.800> maybe<01:44:41.040> they're\nlike they're not um I maybe they're\nlike they're not um I maybe they're fixing<01:44:41.440> this<01:44:42.000> some<01:44:42.560> somebody<01:44:43.040> can<01:44:43.119> tell<01:44:43.280> me\nfixing this some somebody can tell me\nfixing this some somebody can tell me but<01:44:43.679> but<01:44:44.080> maybe<01:44:44.239> they're<01:44:44.480> fixing<01:44:44.639> this<01:44:44.800> but\nbut but maybe they're fixing this but\nbut but maybe they're fixing this but they<01:44:45.119> they<01:44:45.280> have<01:44:45.360> a<01:44:45.520> very<01:44:45.679> specific<01:44:46.000> like\nthey they have a very specific like\nthey they have a very specific like ordering<01:44:46.800> requirement<01:44:47.280> on<01:44:47.600> like<01:44:47.840> the<01:44:48.080> the<01:44:48.560> way\nordering requirement on like the the way\nordering requirement on like the the way you<01:44:49.280> specify<01:44:49.679> the<01:44:49.840> the<01:44:50.239> initializers<01:44:50.880> because\nyou specify the the initializers because\nyou specify the the initializers because of<01:44:51.280> like<01:44:51.440> constructor<01:44:52.239> uh<01:44:52.400> execution\nof like constructor uh execution\nof like constructor uh execution ordering<01:44:53.119> or<01:44:53.360> whatever<01:44:53.840> even<01:44:54.000> if<01:44:54.159> it's<01:44:54.400> even\nordering or whatever even if it's even\nordering or whatever even if it's even if<01:44:54.639> there<01:44:54.800> are<01:44:54.960> no<01:44:55.119> constructors<01:44:55.520> which<01:44:55.679> I<01:44:55.760> I\nif there are no constructors which I I\nif there are no constructors which I I don't<01:44:56.080> understand<01:44:56.320> that<01:44:56.560> part<01:44:56.719> maybe<01:44:56.880> that's\ndon't understand that part maybe that's\ndon't understand that part maybe that's what<01:44:57.119> they're<01:44:57.280> fixing<01:44:57.600> but<01:44:57.760> point<01:44:58.000> being<01:44:59.360> um\nwhat they're fixing but point being um\nwhat they're fixing but point being um point<01:45:00.880> being<01:45:01.360> uh<01:45:01.520> in<01:45:01.760> C<01:45:02.000> you<01:45:02.239> just<01:45:02.320> have<01:45:02.480> what\npoint being uh in C you just have what\npoint being uh in C you just have what you<01:45:02.880> actually<01:45:03.040> want<01:45:03.280> which<01:45:03.440> is<01:45:03.520> to<01:45:03.679> say<01:45:03.840> like\nyou actually want which is to say like\nyou actually want which is to say like this<01:45:04.239> member<01:45:04.560> this<01:45:04.719> member<01:45:04.960> this<01:45:05.119> member<01:45:05.360> in\nthis member this member this member in\nthis member this member this member in any<01:45:05.760> order<01:45:06.159> I<01:45:06.320> don't<01:45:06.400> care<01:45:06.800> like<01:45:07.040> just<01:45:07.280> let<01:45:07.440> me\nany order I don't care like just let me\nany order I don't care like just let me fill<01:45:07.840> them<01:45:08.000> out<01:45:08.639> um<01:45:08.880> so<01:45:09.199> there's<01:45:09.360> a<01:45:09.520> couple<01:45:09.679> of\nfill them out um so there's a couple of\nfill them out um so there's a couple of features<01:45:10.000> like<01:45:10.159> that<01:45:10.239> that<01:45:10.480> I<01:45:10.639> like<01:45:10.880> a<01:45:11.119> little\nfeatures like that that I like a little\nfeatures like that that I like a little bit<01:45:11.360> more<01:45:12.400> it's<01:45:12.719> mostly<01:45:13.040> just<01:45:13.360> like<01:45:13.679> compile\nbit more it's mostly just like compile\nbit more it's mostly just like compile time<01:45:14.719> also<01:45:15.199> I<01:45:15.440> just<01:45:15.679> like<01:45:16.159> aesthetically<01:45:16.880> I\ntime also I just like aesthetically I\ntime also I just like aesthetically I suppose<01:45:17.520> prefer<01:45:17.840> the<01:45:18.000> idea<01:45:18.239> of<01:45:18.480> relying<01:45:18.880> on<01:45:19.040> a\nsuppose prefer the idea of relying on a\nsuppose prefer the idea of relying on a smaller<01:45:19.440> tool<01:45:19.760> chain<01:45:20.239> to<01:45:20.400> build<01:45:20.639> everything\nsmaller tool chain to build everything\nsmaller tool chain to build everything because<01:45:21.280> then<01:45:21.440> it's<01:45:21.600> like<01:45:21.760> someday<01:45:22.159> you<01:45:22.320> know\nbecause then it's like someday you know\nbecause then it's like someday you know like<01:45:22.880> if<01:45:23.119> there<01:45:23.280> is<01:45:23.360> a<01:45:23.520> C<01:45:23.760> compiler<01:45:24.320> that<01:45:24.560> comes\nlike if there is a C compiler that comes\nlike if there is a C compiler that comes out<01:45:25.119> it's<01:45:25.280> like<01:45:25.440> the<01:45:25.600> debugger<01:45:26.080> can<01:45:26.239> be<01:45:26.400> built\nout it's like the debugger can be built\nout it's like the debugger can be built with<01:45:26.800> it<01:45:27.119> whereas<01:45:27.440> if<01:45:27.600> I<01:45:27.760> need<01:45:28.080> some<01:45:28.400> subset<01:45:28.719> of\nwith it whereas if I need some subset of\nwith it whereas if I need some subset of a<01:45:28.880> C++<01:45:29.360> compiler<01:45:29.760> that<01:45:30.000> happens<01:45:30.239> to<01:45:30.400> be<01:45:30.480> a\na C++ compiler that happens to be a\na C++ compiler that happens to be a different<01:45:30.800> subset<01:45:31.360> than<01:45:31.600> what<01:45:31.840> everyone<01:45:32.159> else\ndifferent subset than what everyone else\ndifferent subset than what everyone else needs<01:45:33.040> it's<01:45:33.280> like<01:45:33.520> no<01:45:33.760> you're<01:45:33.920> good<01:45:34.560> um<01:45:35.360> you\nneeds it's like no you're good um you\nneeds it's like no you're good um you know<01:45:35.679> then<01:45:35.840> it's<01:45:36.080> like<01:45:36.400> that<01:45:36.639> thing<01:45:36.800> is<01:45:36.960> never\nknow then it's like that thing is never\nknow then it's like that thing is never going<01:45:37.199> to<01:45:37.280> happen<01:45:37.520> like<01:45:37.679> C++<01:45:38.159> compilers<01:45:38.560> are\ngoing to happen like C++ compilers are\ngoing to happen like C++ compilers are it's<01:45:39.199> way<01:45:39.360> harder<01:45:39.679> problem<01:45:39.840> than<01:45:40.000> a<01:45:40.080> C\nit's way harder problem than a C\nit's way harder problem than a C compiler<01:45:40.719> so<01:45:40.880> it's<01:45:41.040> like<01:45:41.600> I<01:45:41.840> kind<01:45:42.000> of<01:45:42.080> just\ncompiler so it's like I kind of just\ncompiler so it's like I kind of just liked<01:45:42.560> that<01:45:42.880> option<01:45:43.280> better<01:45:43.840> um<01:45:44.000> seemed<01:45:44.320> like\nliked that option better um seemed like\nliked that option better um seemed like a<01:45:44.639> good<01:45:44.800> investment\na good investment\na good investment >> and<01:45:46.159> since<01:45:46.320> you<01:45:46.560> mentioned<01:45:46.880> build<01:45:47.199> speed<01:45:47.679> like\n>> and since you mentioned build speed like\n>> and since you mentioned build speed like ready<01:45:48.080> debugger<01:45:48.400> compiles<01:45:49.199> really<01:45:49.520> fast<01:45:50.800> even\nready debugger compiles really fast even\nready debugger compiles really fast even though<01:45:51.760> like<01:45:52.080> you<01:45:52.239> have<01:45:52.400> a<01:45:52.639> as<01:45:52.960> far<01:45:53.119> as<01:45:53.199> I<01:45:53.360> know\nthough like you have a as far as I know\nthough like you have a as far as I know you<01:45:53.679> haven't<01:45:53.840> mentioned<01:45:54.000> that<01:45:54.159> in<01:45:54.320> that<01:45:54.480> talk\nyou haven't mentioned that in that talk\nyou haven't mentioned that in that talk but<01:45:54.960> you<01:45:55.119> have<01:45:55.199> a<01:45:55.360> pre-processing<01:45:56.000> step<01:45:56.239> where\nbut you have a pre-processing step where\nbut you have a pre-processing step where you<01:45:56.560> do<01:45:56.719> code<01:45:56.960> generation<01:45:57.440> even<01:45:57.840> yes<01:45:58.159> like\nyou do code generation even yes like\nyou do code generation even yes like >> do<01:45:59.280> you<01:45:59.440> want<01:45:59.520> to<01:45:59.679> get<01:46:00.239> a<01:46:00.480> bit<01:46:00.719> into<01:46:01.040> that<01:46:01.600> like\n>> do you want to get a bit into that like\n>> do you want to get a bit into that like what<01:46:02.239> kind<01:46:02.400> of<01:46:02.480> you<01:46:02.719> do<01:46:02.800> some<01:46:02.960> kind<01:46:03.040> of<01:46:03.199> meta\nwhat kind of you do some kind of meta\nwhat kind of you do some kind of meta programming<01:46:04.080> as<01:46:04.320> I<01:46:04.480> understand<01:46:04.880> even<01:46:05.040> in<01:46:05.280> C\nprogramming as I understand even in C\nprogramming as I understand even in C with<01:46:06.000> your<01:46:06.239> simple<01:46:06.480> build<01:46:06.800> system<01:46:07.199> like<01:46:07.520> want\nwith your simple build system like want\nwith your simple build system like want to<01:46:07.840> elaborate<01:46:08.159> on<01:46:08.320> that<01:46:08.480> a<01:46:08.639> bit<01:46:08.800> or<01:46:08.960> have<01:46:09.119> you\nto elaborate on that a bit or have you\nto elaborate on that a bit or have you like<01:46:09.520> is<01:46:09.760> there<01:46:09.840> a<01:46:10.000> source<01:46:10.159> you<01:46:10.239> want<01:46:10.320> to<01:46:10.400> point\nlike is there a source you want to point\nlike is there a source you want to point to<01:46:10.719> instead\nto instead\nto instead >> um<01:46:11.679> I<01:46:11.840> can<01:46:12.000> cover<01:46:12.159> it<01:46:12.400> pretty<01:46:12.639> quick<01:46:12.800> I<01:46:12.960> mean\n>> um I can cover it pretty quick I mean\n>> um I can cover it pretty quick I mean it's<01:46:13.280> just<01:46:13.440> like<01:46:14.080> you<01:46:14.239> know<01:46:14.320> to<01:46:14.480> do<01:46:14.639> compile\nit's just like you know to do compile\nit's just like you know to do compile time<01:46:15.199> execution<01:46:15.679> and<01:46:15.840> see<01:46:16.639> uh<01:46:16.800> you<01:46:16.960> don't<01:46:17.040> need\ntime execution and see uh you don't need\ntime execution and see uh you don't need the<01:46:17.280> compiler<01:46:17.679> to<01:46:17.760> do<01:46:17.840> it<01:46:18.000> for<01:46:18.080> for<01:46:18.239> you.<01:46:18.400> You\nthe compiler to do it for for you. You\nthe compiler to do it for for you. You just<01:46:18.800> build<01:46:18.960> a<01:46:19.119> program,<01:46:19.440> run<01:46:19.600> the<01:46:19.760> program,\njust build a program, run the program,\njust build a program, run the program, and<01:46:20.159> then<01:46:20.239> you<01:46:20.320> build<01:46:20.480> your<01:46:20.639> main<01:46:20.880> program<01:46:21.199> and\nand then you build your main program and\nand then you build your main program and then<01:46:21.840> arbitrary<01:46:22.320> compile<01:46:22.719> time<01:46:23.040> execution\nthen arbitrary compile time execution\nthen arbitrary compile time execution goes<01:46:23.760> there.<01:46:24.639> And<01:46:25.040> uh<01:46:25.600> and<01:46:25.920> yeah,<01:46:26.159> so<01:46:26.400> I<01:46:26.639> mean\ngoes there. And uh and yeah, so I mean\ngoes there. And uh and yeah, so I mean building<01:46:27.280> C<01:46:27.440> is<01:46:27.600> really<01:46:27.760> fast.<01:46:28.000> So<01:46:28.159> building\nbuilding C is really fast. So building\nbuilding C is really fast. So building the<01:46:28.560> meta<01:46:28.880> program,<01:46:29.119> I<01:46:29.280> do<01:46:29.360> it<01:46:29.520> every<01:46:29.679> time<01:46:29.920> I\nthe meta program, I do it every time I\nthe meta program, I do it every time I build<01:46:30.320> the<01:46:30.400> meta<01:46:30.719> program,<01:46:30.960> I<01:46:31.119> run<01:46:31.280> it.<01:46:32.000> Um<01:46:32.719> and\nbuild the meta program, I run it. Um and\nbuild the meta program, I run it. Um and uh\nuh\nuh uh<01:46:35.520> and<01:46:35.760> so<01:46:36.000> that's<01:46:36.320> basically<01:46:36.639> how<01:46:36.880> that\nuh and so that's basically how that\nuh and so that's basically how that works.<01:46:37.520> Um<01:46:38.080> what<01:46:38.320> was<01:46:38.400> the<01:46:38.560> other<01:46:38.639> part<01:46:38.800> of<01:46:38.880> the\nworks. Um what was the other part of the\nworks. Um what was the other part of the question?<01:46:39.360> I<01:46:39.760> think<01:46:40.159> was<01:46:40.400> that<01:46:40.560> just<01:46:40.639> it?\nquestion? I think was that just it?\nquestion? I think was that just it? >> Yeah.<01:46:41.199> What<01:46:41.280> do<01:46:41.360> you<01:46:41.440> use<01:46:41.520> it<01:46:41.679> for?<01:46:41.840> Like<01:46:42.000> what\n>> Yeah. What do you use it for? Like what\n>> Yeah. What do you use it for? Like what what what<01:46:42.800> do<01:46:42.880> you<01:46:42.960> do<01:46:43.040> with<01:46:43.199> a<01:46:43.280> meta<01:46:43.600> program\nwhat what do you do with a meta program\nwhat what do you do with a meta program and<01:46:43.920> the<01:46:44.000> code<01:46:44.239> generation?<01:46:44.560> Like<01:46:44.719> what<01:46:44.800> do\nand the code generation? Like what do\nand the code generation? Like what do you<01:46:44.960> use<01:46:45.040> it<01:46:45.199> for?<01:46:45.440> Where<01:46:45.600> is<01:46:45.679> it<01:46:45.840> useful?\nyou use it for? Where is it useful?\nyou use it for? Where is it useful? >> Yeah.<01:46:46.639> So<01:46:47.040> I<01:46:47.280> tend<01:46:47.520> to<01:46:47.679> in<01:46:47.840> the<01:46:48.000> debugger\n>> Yeah. So I tend to in the debugger\n>> Yeah. So I tend to in the debugger there's<01:46:48.880> like<01:46:49.040> it's<01:46:49.360> mostly<01:46:49.600> a<01:46:49.760> data\nthere's like it's mostly a data\nthere's like it's mostly a data management<01:46:50.400> problem<01:46:50.719> like<01:46:51.679> um<01:46:51.840> there's<01:46:52.159> a<01:46:52.400> lot\nmanagement problem like um there's a lot\nmanagement problem like um there's a lot of<01:46:52.800> like<01:46:53.679> just<01:46:54.000> giant<01:46:54.560> things<01:46:54.719> that<01:46:55.040> you\nof like just giant things that you\nof like just giant things that you really<01:46:55.440> want<01:46:55.600> to<01:46:55.679> be<01:46:55.840> Excel<01:46:56.239> tables<01:46:56.880> that<01:46:57.119> are\nreally want to be Excel tables that are\nreally want to be Excel tables that are like<01:46:57.440> just<01:46:57.679> like<01:46:57.840> here's<01:46:58.080> the<01:46:58.239> information\nlike just like here's the information\nlike just like here's the information like<01:46:58.719> here's<01:46:58.880> all<01:46:59.040> the<01:46:59.119> UI<01:46:59.520> commands<01:46:59.840> and\nlike here's all the UI commands and\nlike here's all the UI commands and here's<01:47:00.320> like<01:47:00.880> how<01:47:01.840> here's<01:47:02.080> what<01:47:02.239> they<01:47:02.480> do<01:47:02.639> if\nhere's like how here's what they do if\nhere's like how here's what they do if like<01:47:03.040> if<01:47:03.199> you<01:47:03.280> trigger<01:47:03.520> them<01:47:03.600> with<01:47:03.760> a<01:47:03.920> hotkey\nlike if you trigger them with a hotkey\nlike if you trigger them with a hotkey and<01:47:04.560> the<01:47:04.800> command<01:47:05.040> needs<01:47:05.199> a<01:47:05.360> little<01:47:05.440> bit<01:47:05.600> more\nand the command needs a little bit more\nand the command needs a little bit more information<01:47:06.080> to<01:47:06.320> execute.<01:47:07.199> Here's<01:47:07.440> what<01:47:07.600> the\ninformation to execute. Here's what the\ninformation to execute. Here's what the query<01:47:08.159> information<01:47:08.480> looks<01:47:08.719> like<01:47:08.800> for<01:47:08.960> that.\nquery information looks like for that.\nquery information looks like for that. Here's<01:47:09.360> the<01:47:09.520> name,<01:47:09.760> here's<01:47:09.920> the<01:47:10.080> description,\nHere's the name, here's the description,\nHere's the name, here's the description, here's<01:47:10.719> the<01:47:10.880> icon,<01:47:11.199> like<01:47:11.440> all<01:47:11.600> that<01:47:11.760> stuff.\nhere's the icon, like all that stuff.\nhere's the icon, like all that stuff. there's<01:47:12.639> like<01:47:12.880> tons<01:47:13.199> of<01:47:13.360> like<01:47:13.679> tables<01:47:14.000> of<01:47:14.159> all\nthere's like tons of like tables of all\nthere's like tons of like tables of all that<01:47:14.480> information<01:47:15.040> and<01:47:15.679> oftentimes<01:47:16.320> you<01:47:16.480> want\nthat information and oftentimes you want\nthat information and oftentimes you want to<01:47:16.960> use<01:47:17.280> that<01:47:17.520> to<01:47:17.760> produce<01:47:18.080> like<01:47:19.440> a<01:47:19.760> variety<01:47:20.159> of\nto use that to produce like a variety of\nto use that to produce like a variety of C<01:47:20.960> constructs.<01:47:21.600> So<01:47:21.760> it's<01:47:21.920> not<01:47:22.080> just<01:47:22.159> like<01:47:22.320> I\nC constructs. So it's not just like I\nC constructs. So it's not just like I want<01:47:22.560> a<01:47:22.639> strruct<01:47:22.960> for<01:47:23.040> this.<01:47:23.280> It's<01:47:23.440> like<01:47:23.760> okay\nwant a strruct for this. It's like okay\nwant a strruct for this. It's like okay I<01:47:24.159> want<01:47:24.239> a<01:47:24.400> strct<01:47:24.639> and<01:47:24.800> a<01:47:25.040> table<01:47:25.199> of<01:47:25.360> the\nI want a strct and a table of the\nI want a strct and a table of the offsets<01:47:26.000> of<01:47:26.159> the<01:47:26.320> members<01:47:26.719> and<01:47:27.040> like<01:47:27.520> a<01:47:27.760> table\noffsets of the members and like a table\noffsets of the members and like a table of<01:47:28.239> all<01:47:28.400> the<01:47:28.480> types<01:47:28.800> and<01:47:29.040> like<01:47:29.520> um<01:47:30.639> you<01:47:30.800> know\nof all the types and like um you know\nof all the types and like um you know things<01:47:31.199> like<01:47:31.280> that.<01:47:31.600> Now,<01:47:31.760> you<01:47:31.920> can<01:47:32.000> do<01:47:32.080> that\nthings like that. Now, you can do that\nthings like that. Now, you can do that with<01:47:32.400> X<01:47:32.639> macros<01:47:33.840> um<01:47:34.159> to<01:47:34.400> some<01:47:34.639> degree,<01:47:35.119> but<01:47:35.440> I\nwith X macros um to some degree, but I\nwith X macros um to some degree, but I kind<01:47:35.920> of<01:47:36.159> don't<01:47:36.480> like<01:47:36.960> that<01:47:37.360> because<01:47:37.600> it's\nkind of don't like that because it's\nkind of don't like that because it's pretty<01:47:38.080> opaque<01:47:38.639> to<01:47:38.800> simple<01:47:39.199> tooling.<01:47:39.760> Like<01:47:40.239> my\npretty opaque to simple tooling. Like my\npretty opaque to simple tooling. Like my editor<01:47:40.880> doesn't<01:47:41.040> know<01:47:41.199> how<01:47:41.280> to<01:47:41.600> understand<01:47:42.159> X\neditor doesn't know how to understand X\neditor doesn't know how to understand X macros<01:47:42.880> and<01:47:43.040> all<01:47:43.199> that,<01:47:43.360> and<01:47:43.520> I'm<01:47:43.679> not<01:47:43.840> going\nmacros and all that, and I'm not going\nmacros and all that, and I'm not going to<01:47:43.920> use<01:47:44.159> an<01:47:44.480> editor<01:47:44.880> that<01:47:45.119> can<01:47:45.360> because<01:47:45.840> all<01:47:46.000> of\nto use an editor that can because all of\nto use an editor that can because all of them<01:47:46.239> are<01:47:46.400> really<01:47:46.639> slow.<01:47:47.199> And<01:47:47.360> so,<01:47:47.520> it's<01:47:47.760> like\nthem are really slow. And so, it's like\nthem are really slow. And so, it's like I'd<01:47:48.480> rather<01:47:48.719> just<01:47:48.960> have<01:47:49.679> um<01:47:50.480> I'd<01:47:50.800> rather<01:47:50.960> just\nI'd rather just have um I'd rather just\nI'd rather just have um I'd rather just produce<01:47:51.440> the<01:47:51.600> C<01:47:51.840> code<01:47:52.000> I<01:47:52.239> want.<01:47:52.560> Now,<01:47:52.800> in<01:47:53.040> other\nproduce the C code I want. Now, in other\nproduce the C code I want. Now, in other projects<01:47:53.600> in<01:47:53.679> in<01:47:53.920> the<01:47:54.000> RAD<01:47:54.239> debugger,<01:47:54.639> I<01:47:54.800> don't\nprojects in in the RAD debugger, I don't\nprojects in in the RAD debugger, I don't actually<01:47:55.360> do<01:47:55.520> this,<01:47:55.679> but<01:47:55.920> in<01:47:56.080> other<01:47:56.320> projects,\nactually do this, but in other projects,\nactually do this, but in other projects, I<01:47:56.880> do<01:47:57.040> like<01:47:57.920> more<01:47:58.159> complicated<01:47:58.639> meta\nI do like more complicated meta\nI do like more complicated meta programming<01:47:59.280> where<01:47:59.520> it's<01:47:59.679> like<01:48:00.080> I'm<01:48:00.320> going<01:48:00.400> to\nprogramming where it's like I'm going to\nprogramming where it's like I'm going to find<01:48:00.880> like<01:48:01.199> tweak<01:48:01.520> variables<01:48:02.000> that<01:48:02.159> are\nfind like tweak variables that are\nfind like tweak variables that are scattered<01:48:02.719> throughout<01:48:02.960> the<01:48:03.040> codebase.<01:48:03.520> I'm\nscattered throughout the codebase. I'm\nscattered throughout the codebase. I'm going<01:48:03.760> to<01:48:03.840> find<01:48:04.080> all<01:48:04.239> of<01:48:04.320> them<01:48:04.480> and<01:48:04.639> build<01:48:04.800> a\ngoing to find all of them and build a\ngoing to find all of them and build a data<01:48:05.280> table<01:48:05.679> so<01:48:05.840> that<01:48:06.080> like<01:48:06.239> I<01:48:06.400> can<01:48:06.480> build<01:48:06.639> a<01:48:06.800> UI\ndata table so that like I can build a UI\ndata table so that like I can build a UI in<01:48:07.199> my<01:48:07.360> game,<01:48:07.679> for<01:48:07.760> example,<01:48:08.080> that's<01:48:08.400> like\nin my game, for example, that's like\nin my game, for example, that's like here's<01:48:09.040> all<01:48:09.119> the<01:48:09.199> tweak<01:48:09.520> variables<01:48:09.840> in<01:48:10.080> the\nhere's all the tweak variables in the\nhere's all the tweak variables in the system<01:48:10.560> and<01:48:10.800> you<01:48:10.880> can<01:48:11.040> just<01:48:11.119> toggle<01:48:11.520> them\nsystem and you can just toggle them\nsystem and you can just toggle them dynamically.<01:48:12.239> Even<01:48:12.400> though<01:48:12.800> the<01:48:13.119> only<01:48:13.280> thing\ndynamically. Even though the only thing\ndynamically. Even though the only thing I<01:48:13.520> had<01:48:13.679> to<01:48:13.760> do<01:48:13.840> to<01:48:14.000> actually<01:48:14.239> add<01:48:14.400> that<01:48:14.560> was<01:48:14.800> say\nI had to do to actually add that was say\nI had to do to actually add that was say tweak<01:48:15.600> and<01:48:15.840> then<01:48:16.000> like<01:48:16.239> some<01:48:16.480> value<01:48:16.719> and<01:48:16.880> then\ntweak and then like some value and then\ntweak and then like some value and then it's<01:48:17.280> like<01:48:17.520> there<01:48:17.760> you<01:48:17.920> go.\nit's like there you go.\nit's like there you go. So<01:48:19.840> this<01:48:20.080> is<01:48:20.400> partially<01:48:20.800> how<01:48:21.040> you<01:48:21.280> avoid<01:48:21.600> like\nSo this is partially how you avoid like\nSo this is partially how you avoid like one<01:48:22.000> of<01:48:22.080> the<01:48:22.320> drawbacks<01:48:22.719> of<01:48:23.040> using<01:48:23.440> C<01:48:23.679> and\none of the drawbacks of using C and\none of the drawbacks of using C and having<01:48:24.159> to<01:48:24.239> do<01:48:24.320> a<01:48:24.480> lot<01:48:24.639> of<01:48:24.880> macros<01:48:25.360> to<01:48:25.600> work\nhaving to do a lot of macros to work\nhaving to do a lot of macros to work around<01:48:26.000> it<01:48:26.159> is<01:48:26.320> like<01:48:27.280> as<01:48:27.520> we're<01:48:27.679> on<01:48:27.840> the<01:48:28.000> topic\naround it is like as we're on the topic\naround it is like as we're on the topic of<01:48:28.239> debugger<01:48:28.800> as<01:48:28.960> anyone<01:48:29.280> knows<01:48:29.440> who's<01:48:29.679> done\nof debugger as anyone knows who's done\nof debugger as anyone knows who's done that<01:48:30.000> debugging<01:48:30.560> macros<01:48:30.960> is<01:48:31.199> a<01:48:31.360> nightmare\nthat debugging macros is a nightmare\nthat debugging macros is a nightmare >> because<01:48:32.400> you<01:48:32.719> basically<01:48:33.040> don't<01:48:33.199> get<01:48:33.360> a<01:48:33.440> debug\n>> because you basically don't get a debug\n>> because you basically don't get a debug information<01:48:34.000> you<01:48:34.239> can't<01:48:34.320> properly<01:48:34.639> step<01:48:35.280> etc\ninformation you can't properly step etc\ninformation you can't properly step etc etc.\netc.\netc. >> So<01:48:36.880> you<01:48:37.119> also<01:48:37.440> avoid<01:48:37.679> that<01:48:38.159> by<01:48:38.320> generating\n>> So you also avoid that by generating\n>> So you also avoid that by generating code<01:48:38.880> instead<01:48:39.119> of<01:48:39.360> relying<01:48:39.600> on<01:48:39.760> macros<01:48:40.159> you\ncode instead of relying on macros you\ncode instead of relying on macros you kind<01:48:40.480> of<01:48:40.560> avoid<01:48:40.880> that<01:48:41.040> step<01:48:41.280> and<01:48:41.440> have<01:48:41.600> code\nkind of avoid that step and have code\nkind of avoid that step and have code that<01:48:41.920> you<01:48:42.080> can<01:48:42.159> step<01:48:42.400> through.<01:48:42.560> Is<01:48:42.719> that<01:48:42.880> a\nthat you can step through. Is that a\nthat you can step through. Is that a >> um<01:48:44.800> yeah<01:48:45.040> that's<01:48:45.199> one<01:48:45.440> benefit<01:48:45.760> for<01:48:46.000> sure.<01:48:46.480> Um\n>> um yeah that's one benefit for sure. Um\n>> um yeah that's one benefit for sure. Um it's<01:48:47.600> uh<01:48:48.239> that's<01:48:48.480> partly<01:48:48.800> a<01:48:48.880> debug<01:48:49.199> info\nit's uh that's partly a debug info\nit's uh that's partly a debug info problem.<01:48:49.760> Like<01:48:49.920> you<01:48:50.080> could<01:48:50.159> imagine<01:48:50.400> debug\nproblem. Like you could imagine debug\nproblem. Like you could imagine debug info<01:48:51.040> being<01:48:51.199> slightly<01:48:51.520> in<01:48:51.679> fact<01:48:51.760> I<01:48:51.920> think\ninfo being slightly in fact I think\ninfo being slightly in fact I think dwarf<01:48:52.400> is<01:48:52.880> like<01:48:53.119> dwarf<01:48:53.440> tool<01:48:53.679> chains<01:48:53.920> tend<01:48:54.159> to\ndwarf is like dwarf tool chains tend to\ndwarf is like dwarf tool chains tend to be<01:48:54.320> more<01:48:54.560> useful<01:48:54.880> I<01:48:55.119> think.<01:48:55.280> I<01:48:55.440> mean<01:48:55.600> I<01:48:56.000> you\nbe more useful I think. I mean I you\nbe more useful I think. I mean I you tell<01:48:56.400> me<01:48:56.639> but<01:48:57.199> I'm<01:48:57.360> pretty<01:48:57.679> sure<01:48:57.920> dwarf\ntell me but I'm pretty sure dwarf\ntell me but I'm pretty sure dwarf >> dwarf<01:48:59.280> is<01:48:59.440> complicated<01:48:59.760> because<01:48:59.920> it's<01:49:00.080> like\n>> dwarf is complicated because it's like\n>> dwarf is complicated because it's like of<01:49:00.400> course<01:49:00.560> it<01:49:00.719> can<01:49:00.960> express<01:49:01.280> anything<01:49:01.520> but\nof course it can express anything but\nof course it can express anything but what<01:49:01.920> compilers<01:49:02.320> generates<01:49:02.719> another\nwhat compilers generates another\nwhat compilers generates another question.<01:49:03.280> Right.<01:49:03.600> Exactly.<01:49:04.000> So<01:49:04.719> um<01:49:04.960> so<01:49:05.440> but\nquestion. Right. Exactly. So um so but\nquestion. Right. Exactly. So um so but yeah<01:49:05.840> it's<01:49:06.000> it's<01:49:06.560> definitely<01:49:06.960> partly<01:49:07.360> that.\nyeah it's it's definitely partly that.\nyeah it's it's definitely partly that. Um,<01:49:08.080> I<01:49:08.239> don't<01:49:08.400> tend<01:49:08.560> to<01:49:08.719> do<01:49:09.040> like<01:49:09.199> I<01:49:09.360> don't<01:49:09.520> use\nUm, I don't tend to do like I don't use\nUm, I don't tend to do like I don't use any<01:49:09.920> like<01:49:10.159> generics<01:49:10.639> or<01:49:10.880> anything<01:49:11.119> like<01:49:11.360> I<01:49:11.520> do\nany like generics or anything like I do\nany like generics or anything like I do use<01:49:11.840> like<01:49:12.080> the<01:49:12.560> the<01:49:12.960> like<01:49:13.199> list<01:49:13.440> macros<01:49:13.840> that\nuse like the the like list macros that\nuse like the the like list macros that Vosov<01:49:14.639> showed<01:49:14.880> like<01:49:15.040> I<01:49:15.199> have<01:49:15.440> equivalents\nVosov showed like I have equivalents\nVosov showed like I have equivalents basically<01:49:16.320> in<01:49:16.560> this<01:49:16.719> codebase<01:49:17.199> and\nbasically in this codebase and\nbasically in this codebase and >> stealing<01:49:18.400> them<01:49:18.560> from<01:49:18.800> you<01:49:19.040> I<01:49:19.199> think<01:49:19.440> if\n>> stealing them from you I think if\n>> stealing them from you I think if >> can<01:49:22.000> we<01:49:22.159> confirm\n>> can we confirm\n>> can we confirm >> yeah<01:49:24.400> you<01:49:24.800> your<01:49:24.880> your<01:49:25.119> code<01:49:25.280> seems<01:49:25.520> to<01:49:25.600> be<01:49:25.760> kind\n>> yeah you your your code seems to be kind\n>> yeah you your your code seems to be kind of<01:49:25.920> the<01:49:26.159> new<01:49:26.320> standard<01:49:26.639> library<01:49:26.960> for<01:49:27.280> C\nof the new standard library for C\nof the new standard library for C because<01:49:27.760> I<01:49:28.000> had<01:49:28.080> it<01:49:28.239> from<01:49:28.400> a<01:49:28.560> couple<01:49:28.719> people\nbecause I had it from a couple people\nbecause I had it from a couple people that<01:49:29.119> they<01:49:29.280> just<01:49:29.440> steal<01:49:29.679> stuff<01:49:29.920> from\nthat they just steal stuff from\nthat they just steal stuff from >> I<01:49:30.400> mean<01:49:30.639> that's<01:49:30.880> fine<01:49:31.199> man<01:49:31.440> like<01:49:31.600> C's<01:49:31.920> standard\n>> I mean that's fine man like C's standard\n>> I mean that's fine man like C's standard library<01:49:32.480> is<01:49:32.719> pretty<01:49:32.880> bad<01:49:33.119> so<01:49:33.360> it's<01:49:33.440> it's<01:49:33.840> good\nlibrary is pretty bad so it's it's good\nlibrary is pretty bad so it's it's good to<01:49:34.159> have<01:49:34.400> like<01:49:34.639> people<01:49:35.360> just<01:49:35.679> demonstrate\nto have like people just demonstrate\nto have like people just demonstrate it's<01:49:36.480> like<01:49:36.719> you<01:49:37.040> didn't<01:49:37.280> you<01:49:37.520> didn't<01:49:37.679> have<01:49:37.760> to\nit's like you didn't you didn't have to\nit's like you didn't you didn't have to stop<01:49:38.080> with<01:49:38.239> a<01:49:38.400> standard<01:49:38.639> library<01:49:38.960> like<01:49:39.119> you\nstop with a standard library like you\nstop with a standard library like you can<01:49:39.440> actually<01:49:39.600> build<01:49:39.760> a<01:49:39.920> good<01:49:40.080> code<01:49:40.320> base\ncan actually build a good code base\ncan actually build a good code base obviously<01:49:41.199> there's<01:49:41.360> some<01:49:41.520> runway\nobviously there's some runway\nobviously there's some runway >> like<01:49:42.480> Shan<01:49:42.719> Barrett<01:49:42.960> has<01:49:43.119> been<01:49:43.199> a<01:49:43.360> prime\n>> like Shan Barrett has been a prime\n>> like Shan Barrett has been a prime example<01:49:43.840> of<01:49:44.000> that<01:49:44.239> like<01:49:44.560> here\nexample of that like here\nexample of that like here >> yeah<01:49:45.520> definitely<01:49:46.159> yeah<01:49:46.639> so\n>> yeah definitely yeah so\n>> yeah definitely yeah so >> uh<01:49:48.400> I<01:49:48.639> guess<01:49:48.800> my<01:49:49.040> final<01:49:49.280> question<01:49:49.520> before<01:49:49.760> I\n>> uh I guess my final question before I\n>> uh I guess my final question before I open<01:49:50.159> up<01:49:50.320> is<01:49:50.639> like<01:49:51.600> uh<01:49:52.080> Gingerbill<01:49:52.719> was<01:49:53.280> kind\nopen up is like uh Gingerbill was kind\nopen up is like uh Gingerbill was kind enough<01:49:53.840> to<01:49:54.159> announce<01:49:54.639> the<01:49:54.880> macros<01:49:55.360> and<01:49:55.520> Linux\nenough to announce the macros and Linux\nenough to announce the macros and Linux version<01:49:55.920> of<01:49:56.080> the<01:49:56.159> red<01:49:56.400> debugger<01:49:56.880> yesterday\nversion of the red debugger yesterday\nversion of the red debugger yesterday are<01:49:58.159> there<01:49:58.320> any<01:49:58.480> announcement<01:49:58.960> you<01:49:59.119> want<01:49:59.199> to\nare there any announcement you want to\nare there any announcement you want to add<01:49:59.440> to<01:49:59.600> that\nadd to that\nadd to that >> um<01:50:01.760> yeah<01:50:02.000> so<01:50:02.159> I<01:50:02.400> should<01:50:02.560> clarify<01:50:03.600> like<01:50:04.080> we're\n>> um yeah so I should clarify like we're\n>> um yeah so I should clarify like we're not<01:50:04.480> like<01:50:04.639> we<01:50:04.880> haven't<01:50:05.199> announced<01:50:05.920> a<01:50:06.480> a<01:50:06.639> Mac\nnot like we haven't announced a a Mac\nnot like we haven't announced a a Mac port<01:50:07.199> or<01:50:07.440> anything.<01:50:07.679> Obviously<01:50:08.080> like\nport or anything. Obviously like\nport or anything. Obviously like >> uh<01:50:09.280> it's<01:50:09.760> it's<01:50:10.000> done<01:50:10.239> actually.\n>> uh it's it's done actually.\n>> uh it's it's done actually. >> Question<01:50:10.800> is<01:50:10.960> when<01:50:11.119> do<01:50:11.199> you<01:50:11.280> ship<01:50:11.520> it?<01:50:11.679> Like<01:50:12.239> it\n>> Question is when do you ship it? Like it\n>> Question is when do you ship it? Like it has<01:50:12.719> been<01:50:12.880> announced.\nhas been announced.\nhas been announced. >> Yeah.<01:50:14.800> I<01:50:14.960> mean<01:50:15.040> obviously<01:50:15.360> we're<01:50:15.600> focused<01:50:15.840> on\n>> Yeah. I mean obviously we're focused on\n>> Yeah. I mean obviously we're focused on the<01:50:16.080> Linux<01:50:16.400> port<01:50:16.960> um<01:50:17.360> next.<01:50:17.920> So<01:50:18.320> obviously<01:50:18.719> a\nthe Linux port um next. So obviously a\nthe Linux port um next. So obviously a big<01:50:19.440> early<01:50:19.760> stage<01:50:20.080> of<01:50:20.239> like<01:50:20.480> so<01:50:20.639> the<01:50:20.800> debugger\nbig early stage of like so the debugger\nbig early stage of like so the debugger is<01:50:21.119> an<01:50:21.280> open<01:50:21.440> alpha.<01:50:21.840> I<01:50:22.000> never<01:50:22.159> mentioned<01:50:22.320> that\nis an open alpha. I never mentioned that\nis an open alpha. I never mentioned that but<01:50:22.719> that's<01:50:22.880> what<01:50:23.040> it's<01:50:23.280> in.<01:50:23.840> Um<01:50:24.239> so<01:50:24.480> people\nbut that's what it's in. Um so people\nbut that's what it's in. Um so people can<01:50:24.880> use<01:50:25.040> it<01:50:25.199> and<01:50:25.840> a<01:50:26.159> large<01:50:26.400> portion<01:50:26.719> of<01:50:26.880> work\ncan use it and a large portion of work\ncan use it and a large portion of work is<01:50:27.280> just<01:50:27.440> like<01:50:28.239> making<01:50:28.480> sure<01:50:28.639> it<01:50:28.800> works<01:50:28.960> on\nis just like making sure it works on\nis just like making sure it works on large<01:50:29.280> code<01:50:29.520> bases<01:50:30.000> getting<01:50:30.159> it<01:50:30.400> more<01:50:30.560> stable\nlarge code bases getting it more stable\nlarge code bases getting it more stable like<01:50:31.199> adding<01:50:31.600> adding<01:50:31.920> the<01:50:32.080> features<01:50:32.320> that\nlike adding adding the features that\nlike adding adding the features that people<01:50:32.719> need<01:50:32.960> like<01:50:33.119> stuff<01:50:33.280> like<01:50:33.440> that.<01:50:34.000> Then\npeople need like stuff like that. Then\npeople need like stuff like that. Then the<01:50:34.400> next<01:50:34.560> phase<01:50:34.800> is<01:50:34.960> really<01:50:35.119> the<01:50:35.360> Linux<01:50:35.600> port.\nthe next phase is really the Linux port.\nthe next phase is really the Linux port. So,<01:50:36.000> we're<01:50:36.159> actually<01:50:36.320> going<01:50:36.480> to<01:50:36.560> do<01:50:36.719> the<01:50:36.880> first\nSo, we're actually going to do the first\nSo, we're actually going to do the first porting<01:50:37.520> step<01:50:37.760> will<01:50:37.920> be<01:50:38.080> x64<01:50:38.719> Linux<01:50:39.600> and<01:50:39.760> then\nporting step will be x64 Linux and then\nporting step will be x64 Linux and then we'll<01:50:40.560> um<01:50:40.800> we'll<01:50:41.119> keep<01:50:41.280> going<01:50:41.440> in<01:50:41.600> other\nwe'll um we'll keep going in other\nwe'll um we'll keep going in other directions<01:50:42.080> like<01:50:42.320> we'll<01:50:42.480> be<01:50:42.560> able<01:50:42.639> to<01:50:42.800> support\ndirections like we'll be able to support\ndirections like we'll be able to support ARM<01:50:43.440> and<01:50:43.679> like<01:50:43.840> things<01:50:44.080> like<01:50:44.239> that.<01:50:44.880> So,<01:50:45.520> um\nARM and like things like that. So, um\nARM and like things like that. So, um that's<01:50:46.159> sort<01:50:46.320> of<01:50:46.400> the<01:50:46.639> direction.<01:50:47.520> Uh<01:50:48.239> but\nthat's sort of the direction. Uh but\nthat's sort of the direction. Uh but like<01:50:48.880> we're<01:50:49.119> not<01:50:49.280> going<01:50:49.360> to<01:50:49.520> be<01:50:49.600> working<01:50:49.760> on\nlike we're not going to be working on\nlike we're not going to be working on Mac<01:50:50.480> and<01:50:50.719> like<01:50:51.360> before<01:50:51.760> any<01:50:51.920> of<01:50:52.080> that.<01:50:52.400> So,<01:50:52.719> so\nMac and like before any of that. So, so\nMac and like before any of that. So, so while<01:50:54.480> maybe<01:50:54.719> he<01:50:54.960> was<01:50:55.040> wishful<01:50:55.679> maybe<01:50:55.840> he<01:50:56.000> was\nwhile maybe he was wishful maybe he was\nwhile maybe he was wishful maybe he was just<01:50:56.239> expressing<01:50:56.560> wishful<01:50:56.960> thinking.<01:50:57.520> Um<01:50:57.920> and\njust expressing wishful thinking. Um and\njust expressing wishful thinking. Um and you<01:50:58.400> know<01:50:58.639> once<01:50:58.880> you've<01:50:59.040> done<01:50:59.199> the<01:50:59.360> Linux<01:50:59.679> port\nyou know once you've done the Linux port\nyou know once you've done the Linux port I<01:51:00.239> my<01:51:00.560> intuition<01:51:00.960> is<01:51:01.199> like<01:51:01.360> you're<01:51:01.600> not<01:51:01.679> that\nI my intuition is like you're not that\nI my intuition is like you're not that far<01:51:02.080> from<01:51:02.239> a<01:51:02.400> Mac<01:51:02.639> port.<01:51:02.800> So<01:51:02.960> I<01:51:03.119> don't<01:51:03.199> think\nfar from a Mac port. So I don't think\nfar from a Mac port. So I don't think it'll<01:51:03.600> be<01:51:03.760> like<01:51:04.000> impossible<01:51:04.560> but<01:51:04.800> it's<01:51:05.199> but\nit'll be like impossible but it's but\nit'll be like impossible but it's but yeah<01:51:05.600> it's<01:51:05.760> just<01:51:05.920> like<01:51:06.159> we<01:51:06.400> haven't<01:51:06.639> like<01:51:06.880> said\nyeah it's just like we haven't like said\nyeah it's just like we haven't like said that\nthat\nthat >> switch<01:51:08.800> and<01:51:08.960> iOS<01:51:09.280> when\n>> switch and iOS when\n>> switch and iOS when >> Yeah.<01:51:10.239> Yeah.<01:51:10.639> Exactly.<01:51:11.360> So\n>> Yeah. Yeah. Exactly. So\n>> Yeah. Yeah. Exactly. So >> all<01:51:12.960> right.<01:51:13.520> Um<01:51:14.480> any<01:51:14.800> qu<01:51:15.119> Yeah,<01:51:15.440> please.\n>> all right. Um any qu Yeah, please.\n>> all right. Um any qu Yeah, please. >> So<01:51:16.159> you<01:51:16.400> mentioned<01:51:16.800> uh<01:51:16.880> the<01:51:17.040> idea<01:51:17.280> of<01:51:17.360> a<01:51:17.520> black\n>> So you mentioned uh the idea of a black\n>> So you mentioned uh the idea of a black box<01:51:17.920> at<01:51:18.159> the<01:51:18.320> beginning<01:51:18.400> of<01:51:18.480> the<01:51:18.639> talk<01:51:18.880> and<01:51:19.280> uh\nbox at the beginning of the talk and uh\nbox at the beginning of the talk and uh I<01:51:19.600> feel<01:51:19.760> like<01:51:20.239> uh<01:51:20.400> this<01:51:20.639> talk<01:51:20.800> goes<01:51:21.040> a<01:51:21.119> long<01:51:21.280> way\nI feel like uh this talk goes a long way\nI feel like uh this talk goes a long way to<01:51:21.600> kind<01:51:21.760> of<01:51:21.840> demystifying<01:51:22.480> some<01:51:22.560> of<01:51:22.639> the\nto kind of demystifying some of the\nto kind of demystifying some of the inner<01:51:23.119> workings<01:51:23.360> of<01:51:23.440> a<01:51:23.600> debugger<01:51:24.000> which<01:51:24.320> is\ninner workings of a debugger which is\ninner workings of a debugger which is very<01:51:24.639> helpful<01:51:24.880> but<01:51:25.040> I<01:51:25.199> kind<01:51:25.280> of<01:51:25.360> wonder<01:51:25.520> if\nvery helpful but I kind of wonder if\nvery helpful but I kind of wonder if there's<01:51:25.920> ways<01:51:26.159> to<01:51:26.800> expose<01:51:27.199> some<01:51:27.360> of<01:51:27.440> that<01:51:27.600> to<01:51:27.760> a\nthere's ways to expose some of that to a\nthere's ways to expose some of that to a user.<01:51:28.639> Uh,<01:51:28.880> one<01:51:29.040> of<01:51:29.119> the<01:51:29.280> experiences<01:51:29.600> that<01:51:29.840> I\nuser. Uh, one of the experiences that I\nuser. Uh, one of the experiences that I often<01:51:30.400> have<01:51:30.480> with<01:51:30.639> the<01:51:30.800> debugger<01:51:31.199> is<01:51:31.360> I<01:51:31.520> will\noften have with the debugger is I will\noften have with the debugger is I will point<01:51:31.840> it<01:51:32.000> at<01:51:32.159> executable.<01:51:32.719> I<01:51:32.880> will<01:51:33.040> start<01:51:33.119> it\npoint it at executable. I will start it\npoint it at executable. I will start it up<01:51:33.360> and<01:51:33.520> I<01:51:33.600> say<01:51:33.760> I<01:51:33.840> want<01:51:33.920> to<01:51:34.000> hit<01:51:34.080> this<01:51:34.239> break\nup and I say I want to hit this break\nup and I say I want to hit this break point.<01:51:34.639> It's<01:51:34.719> like<01:51:34.880> I<01:51:35.040> don't<01:51:35.119> know<01:51:35.199> what<01:51:35.360> that\npoint. It's like I don't know what that\npoint. It's like I don't know what that means.<01:51:35.760> It's<01:51:35.920> like<01:51:36.080> I<01:51:36.239> don't<01:51:36.320> know<01:51:36.480> what<01:51:36.639> file\nmeans. It's like I don't know what file\nmeans. It's like I don't know what file that<01:51:37.199> refers<01:51:37.360> to<01:51:37.520> or<01:51:37.840> I<01:51:37.920> don't<01:51:38.000> know<01:51:38.159> what<01:51:38.320> like\nthat refers to or I don't know what like\nthat refers to or I don't know what like actual<01:51:38.800> instruction<01:51:39.119> that<01:51:39.360> refers<01:51:39.599> to.<01:51:40.159> And\nactual instruction that refers to. And\nactual instruction that refers to. And so<01:51:40.480> there's<01:51:40.639> all<01:51:40.719> this<01:51:40.880> inner<01:51:41.199> working<01:51:41.440> behind\nso there's all this inner working behind\nso there's all this inner working behind it<01:51:41.760> to<01:51:41.920> get<01:51:42.080> that<01:51:42.239> debug<01:51:42.560> info<01:51:42.880> to<01:51:43.040> find<01:51:43.119> it\nit to get that debug info to find it\nit to get that debug info to find it automatically<01:51:43.760> to<01:51:43.920> parse<01:51:44.159> it.<01:51:44.400> It's\nautomatically to parse it. It's\nautomatically to parse it. It's potentially,<01:51:45.199> you<01:51:45.280> know,<01:51:45.520> trying<01:51:45.679> to<01:51:45.840> match\npotentially, you know, trying to match\npotentially, you know, trying to match file<01:51:46.400> paths.<01:51:46.639> I<01:51:46.880> might<01:51:46.960> have<01:51:47.119> like<01:51:47.280> forward\nfile paths. I might have like forward\nfile paths. I might have like forward slashes,<01:51:47.920> backslashes,<01:51:48.560> whatever.<01:51:48.960> There's\nslashes, backslashes, whatever. There's\nslashes, backslashes, whatever. There's like<01:51:49.280> all<01:51:49.440> of<01:51:49.520> this<01:51:49.679> inner<01:51:50.000> tooling<01:51:50.639> that<01:51:50.880> can\nlike all of this inner tooling that can\nlike all of this inner tooling that can go<01:51:51.280> wrong<01:51:51.920> and<01:51:52.239> it<01:51:52.480> kind<01:51:52.560> of<01:51:52.639> gets\ngo wrong and it kind of gets\ngo wrong and it kind of gets encapsulated<01:51:53.679> in<01:51:53.840> this<01:51:54.000> black<01:51:54.239> box<01:51:54.639> that\nencapsulated in this black box that\nencapsulated in this black box that feels<01:51:55.119> like<01:51:55.360> magic,<01:51:55.760> right?<01:51:56.000> it's<01:51:56.159> like,<01:51:56.320> oh,\nfeels like magic, right? it's like, oh,\nfeels like magic, right? it's like, oh, you<01:51:56.639> know,<01:51:56.800> I<01:51:56.960> don't<01:51:57.040> I<01:51:57.199> don't<01:51:57.280> want<01:51:57.360> to<01:51:57.440> I\nyou know, I don't I don't want to I\nyou know, I don't I don't want to I don't<01:51:57.679> know<01:51:57.840> anything<01:51:58.080> about<01:51:58.239> that<01:51:58.480> as<01:51:58.639> a\ndon't know anything about that as a\ndon't know anything about that as a user.<01:51:59.199> So,<01:51:59.599> is<01:51:59.760> there<01:51:59.840> anything<01:52:00.080> you<01:52:00.239> could<01:52:00.320> do\nuser. So, is there anything you could do\nuser. So, is there anything you could do to<01:52:00.560> make<01:52:00.719> that<01:52:00.880> better,<01:52:01.119> do<01:52:01.199> you<01:52:01.280> think?\nto make that better, do you think?\nto make that better, do you think? >> Um,<01:52:02.719> yeah.<01:52:02.960> I<01:52:03.199> think<01:52:03.360> I<01:52:03.599> think<01:52:03.679> a<01:52:03.920> lot<01:52:04.000> of<01:52:04.080> that\n>> Um, yeah. I think I think a lot of that\n>> Um, yeah. I think I think a lot of that is<01:52:04.480> just<01:52:04.639> like<01:52:04.719> a<01:52:04.880> UI<01:52:05.199> design<01:52:05.520> problem<01:52:05.760> and\nis just like a UI design problem and\nis just like a UI design problem and like<01:52:06.080> a<01:52:06.239> visualization<01:52:06.800> problem.<01:52:07.119> So<01:52:07.280> it's\nlike a visualization problem. So it's\nlike a visualization problem. So it's like<01:52:07.679> one<01:52:07.920> thing<01:52:08.080> that<01:52:08.239> we<01:52:08.400> do<01:52:08.480> in<01:52:08.639> the\nlike one thing that we do in the\nlike one thing that we do in the debugger<01:52:09.119> which<01:52:10.159> like<01:52:10.320> I<01:52:10.560> don't<01:52:10.719> think\ndebugger which like I don't think\ndebugger which like I don't think anybody<01:52:11.199> does<01:52:11.520> but<01:52:11.840> like<01:52:12.320> what<01:52:12.480> tends<01:52:12.719> to\nanybody does but like what tends to\nanybody does but like what tends to happen<01:52:13.040> if<01:52:13.199> you<01:52:13.360> put<01:52:14.239> like<01:52:14.480> in<01:52:14.639> Visual<01:52:14.960> Studio\nhappen if you put like in Visual Studio\nhappen if you put like in Visual Studio if<01:52:15.360> you<01:52:15.440> put<01:52:15.599> a<01:52:15.679> breakpoint<01:52:16.080> on<01:52:16.239> a<01:52:16.400> line<01:52:17.840> if\nif you put a breakpoint on a line if\nif you put a breakpoint on a line if there's<01:52:18.639> no<01:52:18.880> line<01:52:19.119> info<01:52:19.440> like<01:52:19.599> that<01:52:19.760> you're\nthere's no line info like that you're\nthere's no line info like that you're not<01:52:20.080> running<01:52:20.239> a<01:52:20.480> program<01:52:20.639> or<01:52:20.960> something<01:52:22.239> um<01:52:23.040> uh\nnot running a program or something um uh\nnot running a program or something um uh it'll<01:52:23.840> like<01:52:24.159> just<01:52:24.560> go<01:52:24.719> to<01:52:24.880> the<01:52:24.960> line<01:52:25.199> like\nit'll like just go to the line like\nit'll like just go to the line like there<01:52:25.520> will<01:52:25.679> be<01:52:25.760> a<01:52:25.840> breakpoint<01:52:26.480> shows<01:52:26.719> up<01:52:26.880> on\nthere will be a breakpoint shows up on\nthere will be a breakpoint shows up on the<01:52:27.119> line<01:52:27.440> done.<01:52:28.639> Then<01:52:28.880> you<01:52:29.119> like<01:52:29.840> run<01:52:30.080> the\nthe line done. Then you like run the\nthe line done. Then you like run the program<01:52:30.560> and<01:52:30.800> you'll<01:52:31.040> notice<01:52:31.280> your\nprogram and you'll notice your\nprogram and you'll notice your breakpoints<01:52:32.000> like<01:52:33.119> like<01:52:33.360> it<01:52:33.599> snaps<01:52:34.000> or\nbreakpoints like like it snaps or\nbreakpoints like like it snaps or whatever.<01:52:34.800> And<01:52:35.599> the<01:52:35.840> reason<01:52:36.000> why<01:52:36.159> is<01:52:36.400> because\nwhatever. And the reason why is because\nwhatever. And the reason why is because like<01:52:36.960> not<01:52:37.199> every<01:52:37.440> line<01:52:37.840> has<01:52:38.400> source<01:52:38.719> code<01:52:39.199> uh\nlike not every line has source code uh\nlike not every line has source code uh or<01:52:39.679> or<01:52:39.679> or<01:52:39.840> sorry<01:52:40.159> not<01:52:40.320> every<01:52:40.480> source<01:52:40.800> code\nor or or sorry not every source code\nor or or sorry not every source code line<01:52:41.199> has<01:52:41.440> actual<01:52:41.840> code<01:52:42.080> which<01:52:42.400> which<01:52:42.560> would\nline has actual code which which would\nline has actual code which which would be<01:52:42.880> machine<01:52:43.199> code<01:52:43.440> instructions.<01:52:44.480> Um<01:52:45.440> and<01:52:45.679> so\nbe machine code instructions. Um and so\nbe machine code instructions. Um and so like<01:52:46.639> stuff<01:52:46.960> like<01:52:47.119> that<01:52:47.440> can<01:52:47.599> be<01:52:47.920> like<01:52:48.320> it's\nlike stuff like that can be like it's\nlike stuff like that can be like it's really<01:52:49.280> kind<01:52:49.520> of<01:52:49.679> interesting<01:52:50.000> how<01:52:50.239> it's<01:52:50.480> like\nreally kind of interesting how it's like\nreally kind of interesting how it's like been<01:52:50.960> accepted<01:52:51.280> that<01:52:51.520> it's<01:52:51.760> like<01:52:52.480> that's<01:52:52.800> just\nbeen accepted that it's like that's just\nbeen accepted that it's like that's just a<01:52:53.360> way<01:52:53.440> that<01:52:53.679> it<01:52:53.840> works<01:52:54.000> and<01:52:54.239> everyone's<01:52:54.560> like\na way that it works and everyone's like\na way that it works and everyone's like oh<01:52:54.960> if<01:52:55.119> it<01:52:55.280> snaps<01:52:55.679> that<01:52:55.840> means<01:52:56.000> it<01:52:56.159> found<01:52:56.320> the\noh if it snaps that means it found the\noh if it snaps that means it found the line<01:52:56.639> info.<01:52:57.040> It's<01:52:57.199> like<01:52:57.360> what<01:52:57.599> like<01:52:57.760> what<01:52:57.920> does\nline info. It's like what like what does\nline info. It's like what like what does that<01:52:58.159> mean?<01:52:58.400> So<01:52:58.800> I<01:52:59.040> think<01:52:59.199> like<01:52:59.679> um<01:53:00.159> in<01:53:00.400> the<01:53:00.560> RAD\nthat mean? So I think like um in the RAD\nthat mean? So I think like um in the RAD debugger<01:53:01.360> I<01:53:01.520> mean<01:53:01.679> obviously<01:53:01.920> it's<01:53:02.159> early<01:53:02.400> so\ndebugger I mean obviously it's early so\ndebugger I mean obviously it's early so a<01:53:02.719> lot<01:53:02.800> of<01:53:02.880> it's<01:53:03.119> not<01:53:03.280> like<01:53:03.599> done<01:53:03.760> or\na lot of it's not like done or\na lot of it's not like done or documented<01:53:04.560> or<01:53:04.719> whatever<01:53:04.960> but<01:53:05.199> I've<01:53:05.520> tried<01:53:05.679> to\ndocumented or whatever but I've tried to\ndocumented or whatever but I've tried to visualize<01:53:07.040> a<01:53:07.360> lot<01:53:07.520> more<01:53:08.000> information<01:53:08.400> about\nvisualize a lot more information about\nvisualize a lot more information about what<01:53:08.719> the<01:53:08.880> debugger<01:53:09.360> knows<01:53:09.599> about<01:53:10.239> than<01:53:10.400> what\nwhat the debugger knows about than what\nwhat the debugger knows about than what other<01:53:10.800> debuggers<01:53:11.280> tend<01:53:11.360> to<01:53:11.520> do.<01:53:11.679> So<01:53:11.920> I've\nother debuggers tend to do. So I've\nother debuggers tend to do. So I've explicitly<01:53:12.800> visualize<01:53:13.199> you<01:53:13.440> probably<01:53:13.920> a<01:53:14.080> lot\nexplicitly visualize you probably a lot\nexplicitly visualize you probably a lot of<01:53:14.239> people<01:53:14.400> ask<01:53:14.560> about<01:53:14.719> the<01:53:14.880> colored<01:53:15.199> gutters\nof people ask about the colored gutters\nof people ask about the colored gutters on<01:53:15.760> the<01:53:15.920> side<01:53:16.000> of<01:53:16.080> the<01:53:16.239> source<01:53:16.480> view.<01:53:16.880> That's\non the side of the source view. That's\non the side of the source view. That's the<01:53:17.280> line<01:53:17.520> info.<01:53:18.639> Also<01:53:18.960> what<01:53:19.199> happens<01:53:19.440> is<01:53:19.679> like\nthe line info. Also what happens is like\nthe line info. Also what happens is like I<01:53:20.000> don't<01:53:20.159> reposition<01:53:20.639> breakpoints.<01:53:21.760> I<01:53:22.000> will\nI don't reposition breakpoints. I will\nI don't reposition breakpoints. I will if<01:53:22.320> you<01:53:22.480> put<01:53:22.560> a<01:53:22.639> breakpoint<01:53:22.960> on<01:53:23.119> a<01:53:23.280> line<01:53:23.440> I'll\nif you put a breakpoint on a line I'll\nif you put a breakpoint on a line I'll draw<01:53:24.000> and<01:53:24.159> it<01:53:24.400> and<01:53:24.639> there's<01:53:24.880> no<01:53:25.360> code<01:53:25.599> on<01:53:25.760> that\ndraw and it and there's no code on that\ndraw and it and there's no code on that line<01:53:26.159> but<01:53:26.320> there<01:53:26.480> is<01:53:26.639> some<01:53:26.800> code<01:53:27.040> on<01:53:27.280> some\nline but there is some code on some\nline but there is some code on some subsequent<01:53:28.159> line<01:53:29.199> general<01:53:29.599> rule<01:53:30.080> would<01:53:30.320> be\nsubsequent line general rule would be\nsubsequent line general rule would be like<01:53:30.800> okay<01:53:31.040> let's<01:53:31.280> make<01:53:31.440> the<01:53:31.679> code<01:53:31.920> hit<01:53:32.159> the\nlike okay let's make the code hit the\nlike okay let's make the code hit the next<01:53:32.960> line<01:53:33.199> with<01:53:33.520> code<01:53:34.159> um<01:53:34.320> I<01:53:34.480> just<01:53:34.639> visualize\nnext line with code um I just visualize\nnext line with code um I just visualize that<01:53:35.280> in<01:53:35.440> the<01:53:35.599> UI<01:53:35.920> directly<01:53:36.960> um<01:53:37.199> and<01:53:37.360> so<01:53:37.440> I\nthat in the UI directly um and so I\nthat in the UI directly um and so I think<01:53:37.679> it's<01:53:37.840> a<01:53:38.000> visualization<01:53:38.560> problem<01:53:38.960> and<01:53:39.119> a\nthink it's a visualization problem and a\nthink it's a visualization problem and a UI<01:53:39.679> problem<01:53:40.080> you're<01:53:40.320> right<01:53:40.480> that<01:53:40.639> a<01:53:40.800> lot<01:53:40.880> of\nUI problem you're right that a lot of\nUI problem you're right that a lot of stuff<01:53:41.119> can<01:53:41.280> go<01:53:41.440> wrong\nstuff can go wrong\nstuff can go wrong a<01:53:43.280> lot<01:53:43.360> of<01:53:43.520> that<01:53:44.239> is<01:53:44.639> not<01:53:44.880> necessary<01:53:45.599> I<01:53:45.760> think\na lot of that is not necessary I think\na lot of that is not necessary I think like<01:53:46.080> the<01:53:46.320> file<01:53:46.560> paths<01:53:47.119> good<01:53:47.360> example<01:53:47.840> it's\nlike the file paths good example it's\nlike the file paths good example it's like<01:53:48.560> there's<01:53:48.880> and<01:53:49.199> you<01:53:49.360> know<01:53:49.679> not<01:53:49.920> to<01:53:50.080> blame\nlike there's and you know not to blame\nlike there's and you know not to blame anyone<01:53:50.560> because<01:53:50.719> I've<01:53:50.880> had<01:53:50.960> bugs<01:53:51.199> where<01:53:51.280> I\nanyone because I've had bugs where I\nanyone because I've had bugs where I don't<01:53:51.679> treat<01:53:51.920> paths<01:53:52.239> correctly,<01:53:52.560> but<01:53:52.800> it's\ndon't treat paths correctly, but it's\ndon't treat paths correctly, but it's like,<01:53:53.360> you<01:53:53.520> know,<01:53:54.320> back<01:53:54.480> slash<01:53:55.040> slash<01:53:56.400> look,\nlike, you know, back slash slash look,\nlike, you know, back slash slash look, you<01:53:56.880> can<01:53:57.040> figure<01:53:57.119> it<01:53:57.280> out.<01:53:57.440> Like<01:53:57.599> the<01:53:57.760> debugger\nyou can figure it out. Like the debugger\nyou can figure it out. Like the debugger should<01:53:58.159> be<01:53:58.239> able<01:53:58.400> to<01:53:58.480> figure<01:53:58.560> it<01:53:58.639> out.<01:53:58.880> You\nshould be able to figure it out. You\nshould be able to figure it out. You know<01:53:59.040> what<01:53:59.199> I<01:53:59.280> mean?<01:53:59.440> Not<01:53:59.599> not<01:53:59.840> the<01:54:00.000> user.<01:54:00.239> The\nknow what I mean? Not not the user. The\nknow what I mean? Not not the user. The user<01:54:00.719> shouldn't<01:54:00.960> have<01:54:01.040> to<01:54:01.119> care,<01:54:01.280> but<01:54:01.440> the\nuser shouldn't have to care, but the\nuser shouldn't have to care, but the debugger<01:54:01.920> should<01:54:02.080> be<01:54:02.159> able<01:54:02.239> to<01:54:02.320> figure<01:54:02.480> it\ndebugger should be able to figure it\ndebugger should be able to figure it out.<01:54:03.199> So,<01:54:04.080> I<01:54:04.320> guess<01:54:04.400> that's<01:54:04.560> what<01:54:04.719> I<01:54:04.880> would\nout. So, I guess that's what I would\nout. So, I guess that's what I would say.<01:54:05.199> Like<01:54:05.360> there's<01:54:05.520> a<01:54:05.679> lot<01:54:05.760> of<01:54:05.840> room<01:54:06.000> for\nsay. Like there's a lot of room for\nsay. Like there's a lot of room for visual.<01:54:06.560> Another<01:54:06.880> another<01:54:07.280> spot<01:54:07.520> of\nvisual. Another another spot of\nvisual. Another another spot of visualization,<01:54:08.239> for<01:54:08.239> example,<01:54:08.639> would<01:54:08.880> be\nvisualization, for example, would be\nvisualization, for example, would be like\nlike\nlike other<01:54:10.800> debuggers<01:54:11.280> don't<01:54:11.360> tend<01:54:11.520> to<01:54:11.679> show<01:54:11.840> where\nother debuggers don't tend to show where\nother debuggers don't tend to show where other<01:54:12.320> threads<01:54:12.719> are.<01:54:13.119> Like<01:54:13.920> it's<01:54:14.159> just<01:54:14.320> where\nother threads are. Like it's just where\nother threads are. Like it's just where the<01:54:14.639> selected<01:54:14.960> thread<01:54:15.199> is<01:54:15.520> for<01:54:15.760> some<01:54:15.920> reason.\nthe selected thread is for some reason.\nthe selected thread is for some reason. like<01:54:17.040> um<01:54:17.280> I<01:54:17.599> just<01:54:17.760> try<01:54:17.920> to<01:54:18.080> show<01:54:19.040> all<01:54:19.280> the\nlike um I just try to show all the\nlike um I just try to show all the threads<01:54:19.679> that<01:54:19.920> are<01:54:20.000> in<01:54:20.560> active<01:54:20.960> view.<01:54:21.440> So<01:54:21.760> I\nthreads that are in active view. So I\nthreads that are in active view. So I don't<01:54:22.080> know<01:54:22.239> there's<01:54:22.480> lots<01:54:22.639> of<01:54:22.800> opportunities\ndon't know there's lots of opportunities\ndon't know there's lots of opportunities for<01:54:23.360> visualizations<01:54:23.920> and<01:54:24.159> to<01:54:24.320> just<01:54:24.480> improve\nfor visualizations and to just improve\nfor visualizations and to just improve it<01:54:25.119> basically.<01:54:26.400> Um<01:54:27.440> yeah<01:54:27.760> I<01:54:27.920> think<01:54:28.080> that's<01:54:28.239> the\nit basically. Um yeah I think that's the\nit basically. Um yeah I think that's the direction<01:54:28.719> that<01:54:28.960> you<01:54:29.119> have<01:54:29.199> to<01:54:29.280> go<01:54:29.440> for<01:54:29.679> that.\ndirection that you have to go for that.\ndirection that you have to go for that. So\n>> so<01:54:34.080> many<01:54:34.239> questions<01:54:34.960> uh\n>> so many questions uh\n>> so many questions uh what<01:54:36.880> kind<01:54:37.199> of\nwhat kind of\nwhat kind of cash<01:54:39.280> eviction<01:54:39.760> strategy<01:54:40.239> are<01:54:40.480> you<01:54:40.639> using<01:54:40.880> for\ncash eviction strategy are you using for\ncash eviction strategy are you using for the<01:54:41.679> hash<01:54:42.080> to<01:54:42.639> data<01:54:43.199> cache?<01:54:43.520> Are<01:54:43.679> you<01:54:43.760> using\nthe hash to data cache? Are you using\nthe hash to data cache? Are you using like<01:54:44.159> the<01:54:44.320> least<01:54:44.560> recently<01:54:45.040> used<01:54:45.920> Um<01:54:46.639> so<01:54:47.760> uh\nbasically<01:54:51.280> there's<01:54:51.679> like<01:54:51.920> there's<01:54:52.159> a<01:54:52.320> few\nbasically there's like there's a few\nbasically there's like there's a few different<01:54:52.880> sorts<01:54:53.199> of<01:54:53.520> reference<01:54:53.920> counters<01:54:54.320> in\ndifferent sorts of reference counters in\ndifferent sorts of reference counters in the<01:54:54.639> system.<01:54:55.520> One<01:54:55.679> is<01:54:55.920> if<01:54:56.159> like<01:54:56.480> that<01:54:56.719> keying\nthe system. One is if like that keying\nthe system. One is if like that keying mechanism<01:54:57.520> that<01:54:57.760> I<01:54:57.920> spoke<01:54:58.000> about<01:54:58.159> where<01:54:58.320> it's\nmechanism that I spoke about where it's\nmechanism that I spoke about where it's like<01:54:58.560> you've<01:54:58.719> got<01:54:58.800> a<01:54:58.880> key<01:54:59.040> it<01:54:59.199> refers<01:54:59.360> to<01:54:59.520> a\nlike you've got a key it refers to a\nlike you've got a key it refers to a history<01:54:59.840> of<01:55:00.000> hashes.<01:55:01.040> Every<01:55:01.360> key<01:55:01.599> that's\nhistory of hashes. Every key that's\nhistory of hashes. Every key that's touching<01:55:02.480> a<01:55:02.800> hash<01:55:03.679> um<01:55:03.920> that's<01:55:04.239> like<01:55:04.960> that\ntouching a hash um that's like that\ntouching a hash um that's like that implies<01:55:05.679> a<01:55:05.840> reference<01:55:06.159> count.<01:55:06.880> And<01:55:07.119> so<01:55:07.280> if<01:55:07.520> the\nimplies a reference count. And so if the\nimplies a reference count. And so if the reference<01:55:08.000> count<01:55:08.080> is<01:55:08.239> ever<01:55:08.480> non<01:55:08.639> zero<01:55:09.119> that\nreference count is ever non zero that\nreference count is ever non zero that hash<01:55:09.599> is<01:55:09.760> going<01:55:09.840> to<01:55:10.000> stay<01:55:10.159> there.<01:55:10.800> Um<01:55:11.360> now<01:55:11.920> you\nhash is going to stay there. Um now you\nhash is going to stay there. Um now you you<01:55:13.040> it<01:55:13.280> only<01:55:13.440> does<01:55:13.599> that<01:55:13.760> to<01:55:13.920> some<01:55:14.159> extent.<01:55:14.480> So\nyou it only does that to some extent. So\nyou it only does that to some extent. So it'll<01:55:14.960> start<01:55:15.119> throwing<01:55:15.360> away<01:55:15.599> things<01:55:15.840> that\nit'll start throwing away things that\nit'll start throwing away things that are<01:55:16.080> old<01:55:16.320> in<01:55:16.560> history,<01:55:17.280> but<01:55:17.520> it'll<01:55:17.840> generally\nare old in history, but it'll generally\nare old in history, but it'll generally it'll<01:55:18.880> keep<01:55:19.119> like<01:55:19.360> the<01:55:19.599> two<01:55:19.840> most<01:55:20.000> recent\nit'll keep like the two most recent\nit'll keep like the two most recent states<01:55:20.560> at<01:55:20.719> the<01:55:20.800> very<01:55:21.040> least.<01:55:21.760> Um,<01:55:22.239> but<01:55:22.480> once\nstates at the very least. Um, but once\nstates at the very least. Um, but once you<01:55:22.880> know<01:55:23.040> that<01:55:23.280> and<01:55:23.440> then<01:55:23.520> the<01:55:23.679> other<01:55:23.840> the\nyou know that and then the other the\nyou know that and then the other the other<01:55:24.159> ref<01:55:24.400> count<01:55:24.639> that's<01:55:24.800> in<01:55:24.880> the<01:55:24.960> system<01:55:25.119> is\nother ref count that's in the system is\nother ref count that's in the system is if<01:55:25.520> someone's<01:55:25.840> accessing<01:55:26.159> the<01:55:26.320> data,<01:55:26.639> right?\nif someone's accessing the data, right?\nif someone's accessing the data, right? So<01:55:27.119> it's<01:55:27.360> like<01:55:27.520> if<01:55:27.760> I've<01:55:29.040> I<01:55:29.280> didn't<01:55:29.440> get<01:55:29.520> into\nSo it's like if I've I didn't get into\nSo it's like if I've I didn't get into the<01:55:29.840> code<01:55:30.080> really,<01:55:30.320> but<01:55:30.800> like<01:55:31.040> if<01:55:31.280> I've<01:55:31.440> got\nthe code really, but like if I've got\nthe code really, but like if I've got there's<01:55:32.000> a<01:55:32.159> construct<01:55:32.480> called<01:55:32.639> a<01:55:32.880> scope<01:55:34.000> um<01:55:34.239> to\nthere's a construct called a scope um to\nthere's a construct called a scope um to access<01:55:34.800> these<01:55:35.040> caches<01:55:35.440> of<01:55:35.599> like<01:55:35.760> large<01:55:36.080> data.\naccess these caches of like large data.\naccess these caches of like large data. And<01:55:36.880> so<01:55:37.119> you<01:55:37.599> the<01:55:37.840> API<01:55:38.239> construct<01:55:38.560> is\nAnd so you the API construct is\nAnd so you the API construct is basically<01:55:38.960> you<01:55:39.199> obtain<01:55:39.440> a<01:55:39.679> scope,<01:55:40.400> you<01:55:41.280> grab\nbasically you obtain a scope, you grab\nbasically you obtain a scope, you grab the<01:55:41.760> data,<01:55:42.400> and<01:55:42.560> then<01:55:42.719> you<01:55:42.880> close<01:55:43.119> the<01:55:43.280> scope.\nthe data, and then you close the scope.\nthe data, and then you close the scope. And<01:55:43.760> then<01:55:44.000> while<01:55:44.239> this<01:55:44.480> scope<01:55:44.800> is<01:55:44.960> open,<01:55:45.360> you\nAnd then while this scope is open, you\nAnd then while this scope is open, you you're<01:55:45.920> able<01:55:46.080> to<01:55:46.239> talk<01:55:46.480> about<01:55:46.639> that<01:55:46.800> data.\nyou're able to talk about that data.\nyou're able to talk about that data. You're<01:55:47.280> able<01:55:47.360> to<01:55:47.520> read<01:55:47.679> it.<01:55:48.639> Um<01:55:49.920> and<01:55:50.480> if<01:55:50.719> that's\nYou're able to read it. Um and if that's\nYou're able to read it. Um and if that's happening,<01:55:51.280> obviously<01:55:51.520> you<01:55:51.679> can't<01:55:51.760> evict<01:55:52.080> it.\nhappening, obviously you can't evict it.\nhappening, obviously you can't evict it. So<01:55:52.639> there's<01:55:53.040> two<01:55:53.199> ref<01:55:53.440> counts<01:55:53.760> like<01:55:53.840> that\nSo there's two ref counts like that\nSo there's two ref counts like that where<01:55:54.320> it's<01:55:54.560> like<01:55:54.960> if<01:55:55.199> a<01:55:55.360> key<01:55:55.520> is<01:55:55.679> referring<01:55:55.920> to\nwhere it's like if a key is referring to\nwhere it's like if a key is referring to this,<01:55:56.480> you<01:55:56.639> keep<01:55:56.800> it<01:55:56.960> around.<01:55:57.840> If<01:55:58.159> a<01:55:58.960> um<01:56:00.320> if<01:56:00.560> a\nthis, you keep it around. If a um if a\nthis, you keep it around. If a um if a scope<01:56:01.119> is<01:56:01.440> opening<01:56:01.840> it,<01:56:02.159> you<01:56:02.400> keep<01:56:02.480> it<01:56:02.639> around.\nscope is opening it, you keep it around.\nscope is opening it, you keep it around. If<01:56:04.560> neither<01:56:04.880> of<01:56:05.040> those<01:56:05.199> things<01:56:05.360> are<01:56:05.520> true,\nIf neither of those things are true,\nIf neither of those things are true, then<01:56:06.080> it's<01:56:06.400> kind<01:56:06.560> of<01:56:06.639> just<01:56:06.719> a<01:56:06.960> heristic<01:56:07.360> of\nthen it's kind of just a heristic of\nthen it's kind of just a heristic of like,<01:56:08.080> well,<01:56:09.040> you<01:56:09.199> know,<01:56:09.440> it's<01:56:09.760> not<01:56:09.920> false\nlike, well, you know, it's not false\nlike, well, you know, it's not false that<01:56:10.480> this<01:56:10.719> hash<01:56:11.119> maps<01:56:11.440> to<01:56:11.599> this<01:56:11.760> data.<01:56:12.000> Like\nthat this hash maps to this data. Like\nthat this hash maps to this data. Like we<01:56:12.320> could<01:56:12.480> keep<01:56:12.560> it<01:56:12.719> around<01:56:12.960> forever.<01:56:14.080> Um<01:56:15.040> but,\nwe could keep it around forever. Um but,\nwe could keep it around forever. Um but, you<01:56:15.520> know,<01:56:15.599> it's<01:56:15.760> kind<01:56:15.840> of<01:56:15.920> a<01:56:16.080> heristic<01:56:16.400> of\nyou know, it's kind of a heristic of\nyou know, it's kind of a heristic of like,<01:56:16.800> well,<01:56:17.040> you<01:56:17.119> know,<01:56:17.280> do<01:56:17.440> you<01:56:17.520> want<01:56:17.599> to\nlike, well, you know, do you want to\nlike, well, you know, do you want to throw<01:56:17.840> it<01:56:18.000> away?<01:56:18.320> like<01:56:18.639> and<01:56:18.880> you<01:56:19.040> can<01:56:19.199> throw<01:56:19.360> it\nthrow it away? like and you can throw it\nthrow it away? like and you can throw it away<01:56:19.760> like<01:56:20.159> if<01:56:20.400> it's<01:56:20.560> not<01:56:20.719> accessed<01:56:21.119> in<01:56:21.280> 10\naway like if it's not accessed in 10\naway like if it's not accessed in 10 seconds<01:56:22.159> like<01:56:22.320> there<01:56:22.480> are<01:56:22.639> some<01:56:22.960> caches<01:56:23.360> like\nseconds like there are some caches like\nseconds like there are some caches like that<01:56:23.599> like<01:56:23.760> texture<01:56:24.080> handles<01:56:24.480> I'm<01:56:24.639> like<01:56:25.040> if\nthat like texture handles I'm like if\nthat like texture handles I'm like if nobody's<01:56:25.679> accessed<01:56:25.920> it<01:56:26.000> in<01:56:26.159> 10<01:56:26.320> seconds<01:56:26.560> or\nnobody's accessed it in 10 seconds or\nnobody's accessed it in 10 seconds or whatever<01:56:26.960> I'll<01:56:27.119> just<01:56:27.199> throw<01:56:27.360> it<01:56:27.440> away\nwhatever I'll just throw it away\nwhatever I'll just throw it away basically<01:56:28.560> and<01:56:28.800> I<01:56:28.960> just<01:56:29.199> it's<01:56:29.440> not<01:56:29.599> least\nbasically and I just it's not least\nbasically and I just it's not least recently<01:56:30.239> used<01:56:30.560> basically<01:56:30.880> because<01:56:31.040> I'm<01:56:31.199> just\nrecently used basically because I'm just\nrecently used basically because I'm just like<01:56:31.679> I<01:56:31.840> mean<01:56:31.920> I<01:56:32.159> could<01:56:32.239> do<01:56:32.400> it<01:56:32.480> that<01:56:32.639> way<01:56:32.800> but\nlike I mean I could do it that way but\nlike I mean I could do it that way but I'm<01:56:33.199> kind<01:56:33.280> of<01:56:33.440> like<01:56:34.320> really<01:56:34.639> brute<01:56:34.880> forcy\nI'm kind of like really brute forcy\nI'm kind of like really brute forcy about<01:56:35.440> it<01:56:35.599> and<01:56:35.840> it<01:56:36.000> just<01:56:36.159> doesn't<01:56:36.400> matter.\nabout it and it just doesn't matter.\nabout it and it just doesn't matter. It's<01:56:36.960> just<01:56:37.119> like<01:56:37.599> look<01:56:37.920> man<01:56:38.560> loop<01:56:38.880> over<01:56:39.040> the\nIt's just like look man loop over the\nIt's just like look man loop over the textures<01:56:39.599> and<01:56:39.840> throw<01:56:40.080> away<01:56:40.239> the<01:56:40.400> ones<01:56:40.639> that\ntextures and throw away the ones that\ntextures and throw away the ones that you<01:56:41.199> know<01:56:41.280> what<01:56:41.360> I<01:56:41.520> mean<01:56:41.760> like<01:56:42.080> that's<01:56:42.320> kind\nyou know what I mean like that's kind\nyou know what I mean like that's kind that's<01:56:42.800> kind<01:56:42.880> of<01:56:42.960> how<01:56:43.199> that<01:56:43.520> works.\nthat's kind of how that works.\nthat's kind of how that works. >> Yep.<01:56:45.040> Have<01:56:45.280> you<01:56:45.520> run<01:56:45.679> into<01:56:45.920> issues<01:56:46.320> where<01:56:46.560> like\n>> Yep. Have you run into issues where like\n>> Yep. Have you run into issues where like because<01:56:47.280> because<01:56:47.760> all<01:56:47.920> the<01:56:48.080> visualizations\nbecause because all the visualizations\nbecause because all the visualizations you<01:56:48.960> have<01:56:49.040> and<01:56:49.520> they<01:56:49.840> like<01:56:50.080> is<01:56:50.239> it<01:56:50.320> like<01:56:50.560> oh<01:56:50.719> my\nyou have and they like is it like oh my\nyou have and they like is it like oh my god<01:56:51.199> like<01:56:51.360> how<01:56:51.599> much<01:56:51.760> memory<01:56:52.159> does<01:56:52.320> it<01:56:52.480> like<01:56:52.639> is\ngod like how much memory does it like is\ngod like how much memory does it like is there<01:56:52.800> is<01:56:53.040> there<01:56:53.199> like<01:56:53.440> are<01:56:53.599> you<01:56:53.760> forced<01:56:54.159> to<01:56:54.320> be\nthere is there like are you forced to be\nthere is there like are you forced to be aggressively<01:56:55.119> evicting<01:56:55.679> stuff<01:56:55.920> to<01:56:56.239> kind<01:56:56.400> of\naggressively evicting stuff to kind of\naggressively evicting stuff to kind of not<01:56:56.719> blow<01:56:56.880> up<01:56:57.119> everything<01:56:57.360> or<01:56:57.599> is<01:56:57.760> it<01:56:57.920> pretty\nnot blow up everything or is it pretty\nnot blow up everything or is it pretty chill<01:56:58.320> like<01:56:58.480> I<01:56:58.800> have<01:56:58.960> no<01:56:59.119> feeling<01:56:59.360> for<01:56:59.520> the\nchill like I have no feeling for the\nchill like I have no feeling for the amount<01:56:59.920> of<01:57:00.080> data?\namount of data?\namount of data? >> Um\n>> Um\n>> Um really<01:57:02.719> depends<01:57:02.880> on<01:57:03.040> what<01:57:03.199> you're\nreally depends on what you're\nreally depends on what you're visualizing.<01:57:03.840> So<01:57:04.080> like<01:57:04.800> early<01:57:05.119> when<01:57:05.280> I\nvisualizing. So like early when I\nvisualizing. So like early when I prototyped<01:57:05.920> the<01:57:06.080> bitmap<01:57:06.560> viewer,\nprototyped the bitmap viewer,\nprototyped the bitmap viewer, I<01:57:08.239> had<01:57:08.400> like<01:57:08.560> a<01:57:08.719> video<01:57:08.960> playback<01:57:09.440> like<01:57:09.599> I<01:57:09.840> was\nI had like a video playback like I was\nI had like a video playback like I was using<01:57:10.320> a<01:57:10.560> I<01:57:10.719> was<01:57:10.800> going<01:57:10.960> through<01:57:11.040> a<01:57:11.199> [ __ ]\nusing a I was going through a [ __ ]\nusing a I was going through a [ __ ] program<01:57:12.480> uh<01:57:12.639> sample<01:57:13.679> that<01:57:13.920> like<01:57:14.080> plays<01:57:14.320> back<01:57:14.480> a\nprogram uh sample that like plays back a\nprogram uh sample that like plays back a video\nvideo\nvideo and<01:57:17.199> on<01:57:17.440> each<01:57:17.599> frame<01:57:17.760> of<01:57:17.840> the<01:57:18.000> video<01:57:18.159> I<01:57:18.320> would\nand on each frame of the video I would\nand on each frame of the video I would visualize<01:57:18.719> a<01:57:18.800> new<01:57:18.960> bit<01:57:19.199> map.<01:57:19.440> So<01:57:19.599> I<01:57:19.760> could<01:57:19.920> hold\nvisualize a new bit map. So I could hold\nvisualize a new bit map. So I could hold F5<01:57:20.480> and<01:57:20.719> watch<01:57:20.880> the<01:57:21.040> video<01:57:21.280> in<01:57:21.440> the<01:57:21.599> watch\nF5 and watch the video in the watch\nF5 and watch the video in the watch window.\nwindow.\nwindow. Um<01:57:23.840> which<01:57:24.000> was<01:57:24.239> pretty<01:57:24.400> cool.<01:57:24.960> But<01:57:25.199> you<01:57:25.280> know\nUm which was pretty cool. But you know\nUm which was pretty cool. But you know if<01:57:25.599> you<01:57:25.679> don't<01:57:25.760> have<01:57:25.840> a<01:57:25.920> good<01:57:26.080> eviction\nif you don't have a good eviction\nif you don't have a good eviction strategy<01:57:26.880> you<01:57:27.119> like<01:57:27.360> look<01:57:27.520> at<01:57:27.760> you<01:57:28.000> open<01:57:28.159> up\nstrategy you like look at you open up\nstrategy you like look at you open up task<01:57:28.639> manager<01:57:28.880> or<01:57:29.040> whatever<01:57:29.440> you<01:57:29.520> go<01:57:29.760> look<01:57:29.840> at\ntask manager or whatever you go look at\ntask manager or whatever you go look at it<01:57:30.080> and<01:57:30.159> it's<01:57:30.320> like<01:57:31.520> Yep.<01:57:32.080> Exactly.<01:57:32.560> So<01:57:33.040> it's\nit and it's like Yep. Exactly. So it's\nit and it's like Yep. Exactly. So it's so<01:57:34.320> um<01:57:34.639> over<01:57:35.040> time<01:57:35.440> it<01:57:35.679> can<01:57:35.840> grow<01:57:36.159> pretty\nso um over time it can grow pretty\nso um over time it can grow pretty substantially.<01:57:37.599> Um<01:57:38.000> so<01:57:38.239> I<01:57:38.480> tend<01:57:38.719> to<01:57:39.599> a<01:57:39.760> victim\nsubstantially. Um so I tend to a victim\nsubstantially. Um so I tend to a victim like<01:57:40.480> like<01:57:40.719> I<01:57:40.880> said<01:57:41.040> it's<01:57:41.280> like<01:57:41.520> different\nlike like I said it's like different\nlike like I said it's like different heristics.<01:57:42.239> I<01:57:42.400> don't<01:57:42.480> remember<01:57:42.719> exactly<01:57:42.960> what\nheristics. I don't remember exactly what\nheristics. I don't remember exactly what the<01:57:43.280> numbers<01:57:43.440> are<01:57:43.599> but<01:57:43.840> I'm<01:57:44.000> like<01:57:44.480> if<01:57:44.719> nobody's\nthe numbers are but I'm like if nobody's\nthe numbers are but I'm like if nobody's touching<01:57:45.360> this<01:57:45.520> in<01:57:45.760> a<01:57:45.840> long<01:57:46.000> time<01:57:46.239> throw<01:57:46.400> it\ntouching this in a long time throw it\ntouching this in a long time throw it away.<01:57:47.280> Um<01:57:47.840> and<01:57:48.080> that<01:57:48.320> tends<01:57:48.639> to<01:57:48.880> just<01:57:49.360> kind<01:57:49.599> of\naway. Um and that tends to just kind of\naway. Um and that tends to just kind of like<01:57:50.159> soften<01:57:50.560> that<01:57:50.800> problem<01:57:51.199> basically.\n>> Yeah.\n>> Yeah.\n>> Yeah. >> Talking<01:57:55.760> about<01:57:56.000> visualization.<01:57:56.639> Have<01:57:56.800> you\n>> Talking about visualization. Have you\n>> Talking about visualization. Have you considered<01:57:57.360> also<01:57:57.599> visualizing<01:57:58.239> things\nconsidered also visualizing things\nconsidered also visualizing things dynamically<01:57:59.119> over<01:57:59.360> time<01:57:59.599> like<01:57:59.840> how<01:58:00.000> the\ndynamically over time like how the\ndynamically over time like how the changes<01:58:00.560> of<01:58:00.800> things<01:58:01.280> have<01:58:01.520> also<01:58:02.880> um<01:58:03.119> like<01:58:03.920> bit\nchanges of things have also um like bit\nchanges of things have also um like bit I<01:58:05.280> realize<01:58:05.599> I'm<01:58:05.920> saying<01:58:07.119> I'm<01:58:07.440> wondering<01:58:07.760> like\nI realize I'm saying I'm wondering like\nI realize I'm saying I'm wondering like for<01:58:08.080> example<01:58:08.400> for<01:58:08.639> bit<01:58:08.880> maps<01:58:09.280> like<01:58:09.679> uh<01:58:09.840> you<01:58:10.080> can\nfor example for bit maps like uh you can\nfor example for bit maps like uh you can highlight<01:58:10.880> like<01:58:11.119> as<01:58:11.280> in<01:58:11.440> render<01:58:11.760> doc<01:58:12.000> okay\nhighlight like as in render doc okay\nhighlight like as in render doc okay here's<01:58:12.480> where<01:58:12.639> the<01:58:12.800> change<01:58:13.119> happened<01:58:14.159> from\nhere's where the change happened from\nhere's where the change happened from the<01:58:14.560> last<01:58:14.719> time<01:58:15.040> you<01:58:15.199> looked<01:58:15.440> at<01:58:15.520> this<01:58:15.760> thing.\nthe last time you looked at this thing.\nthe last time you looked at this thing. >> Yeah.<01:58:16.800> Yeah.<01:58:17.119> So<01:58:17.760> um<01:58:18.159> with<01:58:18.400> bit<01:58:18.639> so<01:58:18.800> I<01:58:18.960> haven't\n>> Yeah. Yeah. So um with bit so I haven't\n>> Yeah. Yeah. So um with bit so I haven't done<01:58:19.199> it<01:58:19.360> in<01:58:19.520> every<01:58:19.679> visualizer.<01:58:20.080> So<01:58:20.239> a<01:58:20.400> lot<01:58:20.480> of\ndone it in every visualizer. So a lot of\ndone it in every visualizer. So a lot of what<01:58:20.639> I<01:58:20.800> talked<01:58:20.960> about<01:58:21.119> today<01:58:21.280> was<01:58:21.440> like<01:58:21.520> the\nwhat I talked about today was like the\nwhat I talked about today was like the visualizer<01:58:22.159> architecture<01:58:22.880> like<01:58:23.040> sort<01:58:23.199> of\nvisualizer architecture like sort of\nvisualizer architecture like sort of like<01:58:23.840> how<01:58:24.080> the<01:58:24.239> building<01:58:24.560> blocks<01:58:24.800> are<01:58:24.960> all\nlike how the building blocks are all\nlike how the building blocks are all arranged<01:58:26.000> but<01:58:26.239> I<01:58:26.400> haven't<01:58:26.719> actually<01:58:27.040> like\narranged but I haven't actually like\narranged but I haven't actually like most<01:58:28.159> of<01:58:28.239> my<01:58:28.400> work<01:58:28.560> has<01:58:28.719> been<01:58:28.800> on<01:58:28.960> that<01:58:29.040> part<01:58:29.199> of\nmost of my work has been on that part of\nmost of my work has been on that part of the<01:58:29.360> problem<01:58:29.520> to<01:58:29.679> make<01:58:29.760> sure<01:58:29.920> that's<01:58:30.159> solid\nthe problem to make sure that's solid\nthe problem to make sure that's solid before<01:58:30.639> I<01:58:30.800> go<01:58:30.880> and<01:58:31.119> build<01:58:31.360> like<01:58:32.080> fanciest\nbefore I go and build like fanciest\nbefore I go and build like fanciest bitmap<01:58:32.960> visualizer<01:58:33.440> known<01:58:33.760> to<01:58:33.840> man<01:58:34.239> sort<01:58:34.480> of\nbitmap visualizer known to man sort of\nbitmap visualizer known to man sort of thing<01:58:34.880> which<01:58:35.119> like<01:58:35.360> if<01:58:35.679> you<01:58:35.840> know<01:58:36.480> but<01:58:36.960> um<01:58:37.280> so<01:58:37.520> I\nthing which like if you know but um so I\nthing which like if you know but um so I don't<01:58:37.920> I<01:58:38.159> I<01:58:38.480> don't<01:58:38.560> have<01:58:38.719> that<01:58:38.960> particular\ndon't I I don't have that particular\ndon't I I don't have that particular feature<01:58:39.520> in<01:58:39.679> the<01:58:39.760> bitmap<01:58:40.159> visualizer<01:58:40.639> but<01:58:41.040> um\nfeature in the bitmap visualizer but um\nfeature in the bitmap visualizer but um but<01:58:41.840> like<01:58:42.000> the<01:58:42.159> memory<01:58:42.480> viewer<01:58:42.880> I<01:58:43.040> do<01:58:43.360> like<01:58:43.520> is\nbut like the memory viewer I do like is\nbut like the memory viewer I do like is an<01:58:43.920> example<01:58:44.080> where<01:58:44.239> I<01:58:44.320> do<01:58:44.480> have<01:58:44.560> that<01:58:44.719> feature\nan example where I do have that feature\nan example where I do have that feature where<01:58:45.119> it's<01:58:45.199> like<01:58:45.360> you<01:58:45.520> show<01:58:45.679> the<01:58:45.840> changes<01:58:46.159> as\nwhere it's like you show the changes as\nwhere it's like you show the changes as they<01:58:46.639> happen.<01:58:47.520> Um,<01:58:48.400> now<01:58:48.800> obviously<01:58:49.119> what<01:58:49.360> you\nthey happen. Um, now obviously what you\nthey happen. Um, now obviously what you want<01:58:49.920> is<01:58:50.560> uh<01:58:50.960> kind<01:58:51.119> of<01:58:51.199> what<01:58:51.360> I<01:58:51.679> alluded<01:58:52.080> to<01:58:52.239> at\nwant is uh kind of what I alluded to at\nwant is uh kind of what I alluded to at the<01:58:52.480> end<01:58:52.560> of<01:58:52.639> the<01:58:52.800> talk<01:58:52.960> where<01:58:53.119> it's<01:58:53.280> like<01:58:53.440> you\nthe end of the talk where it's like you\nthe end of the talk where it's like you really<01:58:53.679> want<01:58:53.760> a<01:58:53.920> scrub<01:58:54.239> like<01:58:54.480> you<01:58:54.560> want<01:58:54.639> a\nreally want a scrub like you want a\nreally want a scrub like you want a timeline<01:58:55.440> like<01:58:55.760> white<01:58:56.000> box<01:58:56.320> where<01:58:56.560> you<01:58:56.639> want\ntimeline like white box where you want\ntimeline like white box where you want like<01:58:57.360> you<01:58:57.599> want<01:58:58.480> you<01:58:58.719> want<01:58:58.800> a<01:58:59.040> timeline<01:58:59.440> where\nlike you want you want a timeline where\nlike you want you want a timeline where it's<01:58:59.920> like<01:59:00.320> look<01:59:00.639> I've<01:59:00.880> got<01:59:01.040> this<01:59:01.280> whole\nit's like look I've got this whole\nit's like look I've got this whole history<01:59:01.840> of<01:59:02.080> those<01:59:02.239> hashes<01:59:03.199> where<01:59:03.840> um<01:59:04.000> it's\nhistory of those hashes where um it's\nhistory of those hashes where um it's like<01:59:05.040> there's<01:59:05.440> more<01:59:05.679> information<01:59:06.000> you<01:59:06.159> need\nlike there's more information you need\nlike there's more information you need but<01:59:06.480> it's<01:59:06.639> like<01:59:06.800> you've<01:59:06.960> got<01:59:07.119> this<01:59:07.440> history<01:59:07.760> of\nbut it's like you've got this history of\nbut it's like you've got this history of data<01:59:08.480> transforms<01:59:09.199> applying<01:59:09.599> to<01:59:09.760> this<01:59:10.719> and\ndata transforms applying to this and\ndata transforms applying to this and really<01:59:11.280> what<01:59:11.440> you<01:59:11.599> want<01:59:11.679> to<01:59:11.760> do<01:59:11.840> is<01:59:12.080> just<01:59:12.239> like\nreally what you want to do is just like\nreally what you want to do is just like rewind<01:59:13.440> to<01:59:13.599> those<01:59:13.840> states<01:59:14.080> and<01:59:14.400> see<01:59:14.480> like<01:59:14.719> what\nrewind to those states and see like what\nrewind to those states and see like what the<01:59:15.040> data<01:59:15.199> was<01:59:15.440> actually<01:59:15.599> like<01:59:15.840> then.<01:59:17.040> Um\nthe data was actually like then. Um\nthe data was actually like then. Um uh<01:59:18.880> and<01:59:19.199> you<01:59:19.440> know<01:59:20.719> I<01:59:21.040> haven't<01:59:21.199> done<01:59:21.360> that<01:59:21.599> yet\nuh and you know I haven't done that yet\nuh and you know I haven't done that yet because<01:59:22.080> it's<01:59:22.320> like<01:59:22.639> subtle<01:59:22.960> with<01:59:23.199> how<01:59:23.360> you\nbecause it's like subtle with how you\nbecause it's like subtle with how you want<01:59:23.599> to<01:59:23.679> do<01:59:23.760> that.<01:59:24.000> Like<01:59:24.159> how<01:59:24.320> is<01:59:24.400> that\nwant to do that. Like how is that\nwant to do that. Like how is that related<01:59:24.800> to<01:59:24.960> time<01:59:25.199> travel<01:59:25.520> debugging?<01:59:26.000> How<01:59:26.080> is\nrelated to time travel debugging? How is\nrelated to time travel debugging? How is it<01:59:26.400> like<01:59:26.560> there's<01:59:26.719> a<01:59:26.800> lot<01:59:26.880> of<01:59:26.960> questions<01:59:27.199> that\nit like there's a lot of questions that\nit like there's a lot of questions that I<01:59:27.679> would<01:59:27.760> have<01:59:27.840> to<01:59:28.000> answer<01:59:28.159> to<01:59:28.400> actually<01:59:28.639> like\nI would have to answer to actually like\nI would have to answer to actually like tell<01:59:29.679> you<01:59:29.840> how<01:59:30.000> that<01:59:30.239> system<01:59:30.480> works<01:59:30.719> fully.\ntell you how that system works fully.\ntell you how that system works fully. But<01:59:31.280> like<01:59:31.760> but<01:59:32.000> yes<01:59:32.239> that<01:59:32.719> to<01:59:32.960> answer<01:59:33.119> your\nBut like but yes that to answer your\nBut like but yes that to answer your question<01:59:33.599> like<01:59:33.920> I've<01:59:34.159> done<01:59:34.320> it<01:59:34.400> I've<01:59:34.639> done\nquestion like I've done it I've done\nquestion like I've done it I've done like<01:59:34.880> in<01:59:34.960> the<01:59:35.040> watch<01:59:35.199> window<01:59:35.520> memory<01:59:35.760> view<01:59:36.000> I\nlike in the watch window memory view I\nlike in the watch window memory view I show<01:59:36.320> as<01:59:36.560> things<01:59:36.880> change.<01:59:37.440> Um<01:59:37.760> I<01:59:37.920> don't<01:59:38.080> have\nshow as things change. Um I don't have\nshow as things change. Um I don't have like<01:59:38.400> the<01:59:38.639> super<01:59:38.880> fancy<01:59:39.119> timeline<01:59:39.520> scrubber\nlike the super fancy timeline scrubber\nlike the super fancy timeline scrubber yet<01:59:40.719> but<01:59:41.119> it's<01:59:41.520> like<01:59:42.159> that's<01:59:42.560> kind<01:59:42.719> of<01:59:43.119> um<01:59:43.679> but\nyet but it's like that's kind of um but\nyet but it's like that's kind of um but yeah<01:59:44.159> for<01:59:44.320> sure<01:59:44.560> you<01:59:44.800> definitely<01:59:45.040> want<01:59:45.199> that.\nyeah for sure you definitely want that.\nyeah for sure you definitely want that. Yeah,<01:59:46.400> for<01:59:46.719> people<01:59:46.880> at<01:59:47.119> home<01:59:47.440> like<01:59:48.080> Andrew\nYeah, for people at home like Andrew\nYeah, for people at home like Andrew from<01:59:48.800> White<01:59:49.119> Box<01:59:49.440> is<01:59:49.679> here<01:59:49.840> as<01:59:50.000> well<01:59:50.159> and<01:59:50.400> yes,\nfrom White Box is here as well and yes,\nfrom White Box is here as well and yes, pe<01:59:51.119> some<01:59:51.440> people<01:59:51.679> have<01:59:51.920> been<01:59:52.080> aggressively\npe some people have been aggressively\npe some people have been aggressively pitching<01:59:53.199> like<01:59:53.360> a<01:59:53.679> debugger<01:59:54.159> cinematic\npitching like a debugger cinematic\npitching like a debugger cinematic universe<01:59:55.520> where<01:59:55.840> like<01:59:56.400> White<01:59:56.639> Box<01:59:57.040> FL\nuniverse where like White Box FL\nuniverse where like White Box FL debuggers\ndebuggers\ndebuggers >> the<01:59:58.560> Avengers.\n>> the Avengers.\n>> the Avengers. >> Yeah.<01:59:59.520> The<01:59:59.760> super<02:00:00.000> team<02:00:00.320> of<02:00:00.639> like<02:00:01.199> debug\n>> Yeah. The super team of like debug\n>> Yeah. The super team of like debug Avengers.<02:00:02.239> Yeah.\nAvengers. Yeah.\nAvengers. Yeah. >> Um<02:00:04.800> when<02:00:05.040> you<02:00:05.199> get<02:00:05.280> the<02:00:05.679> information<02:00:06.239> from<02:00:06.639> the\n>> Um when you get the information from the\n>> Um when you get the information from the operating<02:00:07.280> system<02:00:07.599> about<02:00:07.920> the<02:00:08.080> debugger<02:00:09.199> um\noperating system about the debugger um\noperating system about the debugger um the<02:00:09.599> memory,<02:00:10.080> do<02:00:10.159> you<02:00:10.320> get<02:00:10.560> memory<02:00:11.040> ranges?<02:00:11.679> Do\nthe memory, do you get memory ranges? Do\nthe memory, do you get memory ranges? Do you<02:00:11.920> get<02:00:12.159> allocation?<02:00:12.880> Do<02:00:13.040> you<02:00:13.119> get\nyou get allocation? Do you get\nyou get allocation? Do you get individual<02:00:13.920> pages?<02:00:14.880> If<02:00:15.040> there's<02:00:15.760> ations<02:00:16.000> that\nindividual pages? If there's ations that\nindividual pages? If there's ations that have<02:00:16.239> been<02:00:16.400> made<02:00:16.639> that<02:00:16.960> haven't<02:00:17.440> been<02:00:17.760> given\nhave been made that haven't been given\nhave been made that haven't been given pages<02:00:18.639> yet.<02:00:19.119> Is<02:00:19.360> that<02:00:19.840> information<02:00:20.320> you<02:00:20.560> can\npages yet. Is that information you can\npages yet. Is that information you can access?\naccess?\naccess? >> Um,<02:00:23.199> so<02:00:24.239> you<02:00:24.560> can<02:00:24.719> obtain<02:00:25.119> information<02:00:25.520> like\n>> Um, so you can obtain information like\n>> Um, so you can obtain information like that,<02:00:26.000> but<02:00:26.239> the<02:00:26.560> so<02:00:26.800> the<02:00:27.040> debug<02:00:27.440> events<02:00:27.840> don't\nthat, but the so the debug events don't\nthat, but the so the debug events don't actually<02:00:28.320> contain<02:00:28.639> that<02:00:28.880> information.<02:00:29.679> You\nactually contain that information. You\nactually contain that information. You don't<02:00:30.080> get<02:00:30.639> um<02:00:30.800> the<02:00:31.040> debug<02:00:31.440> events<02:00:32.080> don't\ndon't get um the debug events don't\ndon't get um the debug events don't report<02:00:32.639> anything<02:00:33.040> at<02:00:33.040> least<02:00:33.280> on<02:00:33.520> Windows.<02:00:34.159> Uh\nreport anything at least on Windows. Uh\nreport anything at least on Windows. Uh you<02:00:34.719> don't<02:00:34.880> get<02:00:35.040> information<02:00:35.360> about<02:00:35.599> like\nyou don't get information about like\nyou don't get information about like this<02:00:36.080> range<02:00:36.320> was<02:00:36.560> reserved<02:00:37.119> for<02:00:37.199> example.<02:00:38.159> Um\nthis range was reserved for example. Um\nthis range was reserved for example. Um what<02:00:39.199> tends<02:00:39.440> to<02:00:39.599> happen<02:00:40.159> like<02:00:40.480> all<02:00:40.639> the<02:00:40.880> stuff\nwhat tends to happen like all the stuff\nwhat tends to happen like all the stuff that<02:00:41.199> the<02:00:41.520> debugger<02:00:42.000> currently<02:00:42.320> uses<02:00:42.639> is<02:00:42.880> like\nthat the debugger currently uses is like\nthat the debugger currently uses is like read<02:00:43.440> process<02:00:43.760> memory<02:00:44.159> like<02:00:44.320> it<02:00:44.480> calls<02:00:44.719> just\nread process memory like it calls just\nread process memory like it calls just that<02:00:45.040> API.<02:00:45.440> So<02:00:45.520> it<02:00:45.679> can<02:00:45.760> read<02:00:45.920> any<02:00:46.159> range<02:00:46.719> and\nthat API. So it can read any range and\nthat API. So it can read any range and if<02:00:47.040> it<02:00:47.280> and<02:00:47.679> it<02:00:48.000> can<02:00:48.239> infer<02:00:48.719> from<02:00:49.040> how<02:00:49.199> that<02:00:49.440> API\nif it and it can infer from how that API\nif it and it can infer from how that API returns<02:00:50.239> like<02:00:50.639> whether<02:00:50.960> it<02:00:51.119> failed<02:00:51.440> for<02:00:51.599> some\nreturns like whether it failed for some\nreturns like whether it failed for some for<02:00:52.239> some<02:00:52.400> pages.<02:00:52.880> So<02:00:53.040> it<02:00:53.199> can<02:00:53.280> infer<02:00:53.679> stuff\nfor some pages. So it can infer stuff\nfor some pages. So it can infer stuff like<02:00:54.080> that.<02:00:54.719> Now<02:00:55.440> even<02:00:55.679> if<02:00:55.840> there's<02:00:56.080> no<02:00:56.320> way<02:00:56.719> to\nlike that. Now even if there's no way to\nlike that. Now even if there's no way to actually<02:00:57.280> know<02:00:57.840> like<02:00:58.080> if<02:00:59.280> and<02:00:59.599> I<02:00:59.840> haven't<02:01:00.080> used\nactually know like if and I haven't used\nactually know like if and I haven't used it<02:01:00.480> so<02:01:00.639> I<02:01:00.800> don't<02:01:00.960> fully<02:01:01.280> know<02:01:01.360> but<02:01:01.599> I'm<02:01:01.679> pretty\nit so I don't fully know but I'm pretty\nit so I don't fully know but I'm pretty sure<02:01:01.920> there's<02:01:02.080> Windows<02:01:02.400> APIs<02:01:02.800> to<02:01:02.960> like\nsure there's Windows APIs to like\nsure there's Windows APIs to like actually<02:01:03.760> get<02:01:04.000> more<02:01:04.239> information<02:01:04.560> about<02:01:04.719> the\nactually get more information about the\nactually get more information about the page<02:01:05.199> table<02:01:05.520> basically.<02:01:06.320> But<02:01:06.560> even<02:01:06.800> if<02:01:06.960> you\npage table basically. But even if you\npage table basically. But even if you didn't<02:01:07.360> have<02:01:07.520> that,<02:01:07.840> what<02:01:08.000> the<02:01:08.080> debugger\ndidn't have that, what the debugger\ndidn't have that, what the debugger could<02:01:08.639> do<02:01:08.800> is<02:01:09.040> actually<02:01:09.199> just<02:01:09.440> hook<02:01:09.679> all<02:01:09.840> those\ncould do is actually just hook all those\ncould do is actually just hook all those APIs<02:01:10.560> and<02:01:10.800> build<02:01:11.040> it<02:01:11.199> up<02:01:11.360> for<02:01:11.520> itself.<02:01:11.920> So<02:01:12.000> if\nAPIs and build it up for itself. So if\nAPIs and build it up for itself. So if like<02:01:12.480> you<02:01:12.719> put<02:01:12.800> a<02:01:13.040> int3<02:01:14.000> in<02:01:14.239> virtual<02:01:14.560> alloc<02:01:15.280> for\nlike you put a int3 in virtual alloc for\nlike you put a int3 in virtual alloc for example<02:01:15.920> and<02:01:16.159> then<02:01:16.320> decode<02:01:16.719> the<02:01:16.960> arguments,\nexample and then decode the arguments,\nexample and then decode the arguments, you<02:01:17.679> could<02:01:17.760> start<02:01:17.920> actually<02:01:18.159> building<02:01:18.400> up\nyou could start actually building up\nyou could start actually building up like<02:01:18.800> oh<02:01:19.040> here's<02:01:19.360> who's<02:01:19.760> actually<02:01:20.000> reserved\nlike oh here's who's actually reserved\nlike oh here's who's actually reserved or<02:01:20.560> committed<02:01:20.880> what.<02:01:21.599> Um<02:01:22.560> that's<02:01:22.880> more\nor committed what. Um that's more\nor committed what. Um that's more complicated.<02:01:23.599> I'm<02:01:23.760> sure<02:01:23.920> there's<02:01:24.560> probably\ncomplicated. I'm sure there's probably\ncomplicated. I'm sure there's probably some<02:01:25.599> APIs<02:01:26.080> to<02:01:26.239> actually<02:01:26.400> just<02:01:26.560> visualize<02:01:26.880> it\nsome APIs to actually just visualize it\nsome APIs to actually just visualize it get<02:01:27.520> that<02:01:27.679> information<02:01:28.000> directly.<02:01:28.960> But<02:01:29.360> um\nget that information directly. But um\nget that information directly. But um but<02:01:30.320> yeah,<02:01:30.560> that's<02:01:30.800> that's<02:01:31.199> kind<02:01:31.440> of<02:01:31.520> the\nbut yeah, that's that's kind of the\nbut yeah, that's that's kind of the degree<02:01:32.000> of<02:01:32.159> my<02:01:32.320> understanding<02:01:32.639> about<02:01:32.800> it.<02:01:33.040> But\ndegree of my understanding about it. But\ndegree of my understanding about it. But yeah,<02:01:33.360> we<02:01:33.520> don't<02:01:33.679> we<02:01:33.840> don't<02:01:33.920> get<02:01:34.000> that<02:01:34.159> as<02:01:34.400> like\nyeah, we don't we don't get that as like\nyeah, we don't we don't get that as like a<02:01:34.639> mainline<02:01:35.119> thing<02:01:35.360> when<02:01:35.679> you<02:01:35.840> just<02:01:36.159> hook<02:01:36.400> on\na mainline thing when you just hook on\na mainline thing when you just hook on as<02:01:36.800> a<02:01:36.960> debugger.<02:01:37.520> But<02:01:38.080> um<02:01:38.480> but<02:01:38.719> yeah.\nas a debugger. But um but yeah.\nas a debugger. But um but yeah. >> Yep.\n>> Yep.\n>> Yep. >> All right.<02:01:42.880> Uh\n>> All right. Uh\n>> All right. Uh >> so<02:01:45.360> one<02:01:45.599> of<02:01:45.760> those<02:01:46.480> pain<02:01:46.960> frustration<02:01:47.440> points\n>> so one of those pain frustration points\n>> so one of those pain frustration points with<02:01:47.920> debuggers<02:01:48.560> and<02:01:48.719> and<02:01:49.119> specifically<02:01:49.599> like\nwith debuggers and and specifically like\nwith debuggers and and specifically like if<02:01:50.320> you're<02:01:50.480> talking<02:01:50.719> about<02:01:50.960> big<02:01:51.280> projects\nif you're talking about big projects\nif you're talking about big projects like<02:01:51.760> Unreal<02:01:52.159> and<02:01:52.400> it<02:01:52.560> kind<02:01:52.639> of<02:01:52.800> becomes<02:01:53.520> like\nlike Unreal and it kind of becomes like\nlike Unreal and it kind of becomes like logging\nlogging\nlogging >> is<02:01:55.440> that<02:01:55.599> you<02:01:55.840> run<02:01:56.000> across<02:01:56.320> that<02:01:56.560> issue<02:01:56.880> that\n>> is that you run across that issue that\n>> is that you run across that issue that your<02:01:57.599> engine<02:01:57.840> is<02:01:58.080> optimized.<02:01:58.639> So<02:01:58.719> you<02:01:58.880> don't\nyour engine is optimized. So you don't\nyour engine is optimized. So you don't have<02:01:59.280> information\nhave information\nhave information >> and<02:02:00.320> then<02:02:00.480> your<02:02:00.719> game<02:02:00.880> is<02:02:01.040> not<02:02:01.280> optimized<02:02:01.920> and\n>> and then your game is not optimized and\n>> and then your game is not optimized and something<02:02:02.719> happens<02:02:03.040> that<02:02:03.280> is<02:02:03.440> very<02:02:03.599> hard<02:02:03.760> to\nsomething happens that is very hard to\nsomething happens that is very hard to track<02:02:04.239> to<02:02:04.320> to<02:02:04.560> replicate<02:02:05.040> whatever<02:02:05.280> whatever\ntrack to to replicate whatever whatever\ntrack to to replicate whatever whatever then<02:02:06.000> you<02:02:06.159> get<02:02:06.239> to<02:02:06.400> that<02:02:06.560> point<02:02:06.639> that<02:02:06.800> you<02:02:06.960> need\nthen you get to that point that you need\nthen you get to that point that you need to<02:02:07.119> inspect<02:02:07.520> stuff<02:02:07.679> it's<02:02:07.840> like<02:02:08.080> oh<02:02:08.320> there's\nto inspect stuff it's like oh there's\nto inspect stuff it's like oh there's nothing<02:02:08.800> here\nnothing here\nnothing here >> oh<02:02:09.920> also<02:02:10.239> nothing<02:02:10.560> here<02:02:10.960> and<02:02:11.119> you<02:02:11.280> just<02:02:11.440> go<02:02:11.520> to\n>> oh also nothing here and you just go to\n>> oh also nothing here and you just go to a<02:02:11.840> point<02:02:11.920> it's<02:02:12.159> like<02:02:12.400> okay<02:02:13.040> now<02:02:13.199> I<02:02:13.360> have<02:02:13.520> to<02:02:13.679> go\na point it's like okay now I have to go\na point it's like okay now I have to go back<02:02:14.880> make<02:02:15.119> things<02:02:15.440> not<02:02:15.679> be<02:02:15.840> optimized<02:02:16.480> maybe\nback make things not be optimized maybe\nback make things not be optimized maybe in<02:02:16.800> this<02:02:16.960> file<02:02:17.199> or<02:02:17.360> this<02:02:17.520> mod<02:02:17.760> or<02:02:17.920> whatever\nin this file or this mod or whatever\nin this file or this mod or whatever >> and<02:02:18.639> I<02:02:18.800> think<02:02:18.960> there's<02:02:19.199> something<02:02:19.920> some\n>> and I think there's something some\n>> and I think there's something some project<02:02:20.560> or<02:02:20.639> something<02:02:20.880> from<02:02:21.119> Microsoft<02:02:21.599> or\nproject or something from Microsoft or\nproject or something from Microsoft or something<02:02:22.080> recently<02:02:22.719> where<02:02:22.960> they<02:02:23.119> kind<02:02:23.280> of\nsomething recently where they kind of\nsomething recently where they kind of grab<02:02:23.679> the<02:02:23.920> two<02:02:24.159> builds<02:02:24.560> and<02:02:24.800> then<02:02:24.960> you<02:02:25.199> can\ngrab the two builds and then you can\ngrab the two builds and then you can kind<02:02:25.599> of\nkind of\nkind of >> okay<02:02:26.800> try<02:02:26.960> to<02:02:27.119> get<02:02:27.199> the<02:02:27.440> information<02:02:27.840> from<02:02:28.080> the\n>> okay try to get the information from the\n>> okay try to get the information from the other<02:02:28.320> one<02:02:28.800> are<02:02:28.960> you<02:02:29.199> planning<02:02:29.440> on<02:02:29.679> doing\nother one are you planning on doing\nother one are you planning on doing something<02:02:30.159> like<02:02:30.400> this<02:02:30.639> or\nsomething like this or\nsomething like this or >> yeah<02:02:32.080> So<02:02:32.480> that<02:02:32.960> feature<02:02:33.280> in<02:02:33.520> particular,\n>> yeah So that feature in particular,\n>> yeah So that feature in particular, there's<02:02:34.080> a<02:02:34.159> lot<02:02:34.239> of<02:02:34.400> ways<02:02:34.480> that<02:02:34.639> you<02:02:34.800> can\nthere's a lot of ways that you can\nthere's a lot of ways that you can approach<02:02:35.119> that<02:02:35.360> problem.<02:02:36.320> Um,<02:02:36.880> one<02:02:37.119> is<02:02:37.280> with\napproach that problem. Um, one is with\napproach that problem. Um, one is with like<02:02:37.679> hot<02:02:37.920> reloading<02:02:38.320> for<02:02:38.400> example,<02:02:38.800> like<02:02:38.960> if\nlike hot reloading for example, like if\nlike hot reloading for example, like if you<02:02:39.199> want<02:02:39.360> to<02:02:39.599> not<02:02:39.840> actually<02:02:40.080> have<02:02:40.239> to\nyou want to not actually have to\nyou want to not actually have to recreate<02:02:40.960> the<02:02:41.119> state<02:02:41.360> for<02:02:41.440> example,<02:02:41.840> but<02:02:42.639> um,\nrecreate the state for example, but um,\nrecreate the state for example, but um, but<02:02:42.960> yeah,<02:02:43.199> that<02:02:43.440> particular\nbut yeah, that particular\nbut yeah, that particular uh,<02:02:45.440> Microsoft<02:02:45.920> feature<02:02:47.280> um,<02:02:48.000> to<02:02:48.320> my\nuh, Microsoft feature um, to my\nuh, Microsoft feature um, to my understanding,<02:02:48.880> I<02:02:49.040> haven't<02:02:49.199> actually\nunderstanding, I haven't actually\nunderstanding, I haven't actually dissected<02:02:49.840> it<02:02:50.000> fully,<02:02:50.239> but<02:02:50.480> my<02:02:50.639> understanding\ndissected it fully, but my understanding\ndissected it fully, but my understanding is<02:02:51.119> basically<02:02:51.360> like<02:02:51.599> yeah,<02:02:51.760> they<02:02:51.920> do<02:02:52.000> the\nis basically like yeah, they do the\nis basically like yeah, they do the build<02:02:52.320> twice.<02:02:53.199> They<02:02:53.440> take<02:02:53.599> the<02:02:53.920> unoptimized\nbuild twice. They take the unoptimized\nbuild twice. They take the unoptimized version<02:02:54.719> and<02:02:54.800> the<02:02:54.960> optimized<02:02:55.440> version.\nversion and the optimized version.\nversion and the optimized version. They're<02:02:56.159> the<02:02:56.400> same<02:02:56.480> binary<02:02:57.360> and<02:02:57.599> there's<02:02:57.920> some\nThey're the same binary and there's some\nThey're the same binary and there's some mechanism<02:02:58.639> by<02:02:58.880> which<02:02:59.040> the<02:02:59.199> debugger<02:02:59.679> can\nmechanism by which the debugger can\nmechanism by which the debugger can programmatically<02:03:00.960> control<02:03:01.360> which<02:03:01.599> is<02:03:01.840> which\nprogrammatically control which is which\nprogrammatically control which is which for<02:03:02.400> any<02:03:02.880> I<02:03:03.119> assume<02:03:03.440> symbol.<02:03:04.080> Uh<02:03:04.320> so<02:03:04.400> I'm<02:03:04.560> not\nfor any I assume symbol. Uh so I'm not\nfor any I assume symbol. Uh so I'm not 100%<02:03:05.040> sure<02:03:05.440> on<02:03:06.159> how<02:03:06.400> it's<02:03:06.719> exactly<02:03:07.119> it's\n100% sure on how it's exactly it's\n100% sure on how it's exactly it's sliced,<02:03:07.599> but<02:03:07.760> that's<02:03:07.920> kind<02:03:08.000> of<02:03:08.080> how<02:03:08.239> it<02:03:08.400> works.\nsliced, but that's kind of how it works.\nsliced, but that's kind of how it works. Now<02:03:09.280> the<02:03:09.599> utility<02:03:09.840> of<02:03:09.920> that's<02:03:10.239> questionable\nNow the utility of that's questionable\nNow the utility of that's questionable because<02:03:10.800> it's<02:03:11.040> like<02:03:11.119> you're<02:03:11.360> building<02:03:11.520> the\nbecause it's like you're building the\nbecause it's like you're building the thing<02:03:11.920> twice<02:03:12.239> and<02:03:12.400> the<02:03:12.560> binaries<02:03:12.960> are<02:03:13.119> twice\nthing twice and the binaries are twice\nthing twice and the binaries are twice as<02:03:13.440> big<02:03:13.679> and<02:03:13.920> in<02:03:14.159> many<02:03:14.320> cases<02:03:14.560> the<02:03:14.719> binaries\nas big and in many cases the binaries\nas big and in many cases the binaries are<02:03:15.280> close<02:03:15.440> to<02:03:15.679> binary<02:03:16.080> size<02:03:16.320> limits<02:03:16.639> anyways.\nare close to binary size limits anyways.\nare close to binary size limits anyways. So<02:03:17.280> I'm<02:03:17.440> not<02:03:17.599> actually<02:03:17.760> sure<02:03:18.080> like<02:03:19.280> you<02:03:19.520> know<02:03:20.320> I\nSo I'm not actually sure like you know I\nSo I'm not actually sure like you know I mean<02:03:20.639> if<02:03:20.880> it<02:03:21.040> works<02:03:21.280> that's<02:03:21.520> great<02:03:21.920> obviously.\nmean if it works that's great obviously.\nmean if it works that's great obviously. Um\nUm\nUm but<02:03:24.400> yeah,<02:03:24.639> if<02:03:24.960> that<02:03:25.280> feature<02:03:25.599> would<02:03:25.840> not<02:03:26.000> be\nbut yeah, if that feature would not be\nbut yeah, if that feature would not be hard<02:03:26.239> to<02:03:26.400> support<02:03:26.560> for<02:03:26.719> the<02:03:26.800> debugger<02:03:27.199> because\nhard to support for the debugger because\nhard to support for the debugger because basically<02:03:28.719> um<02:03:29.360> what<02:03:29.599> you<02:03:29.760> need<02:03:29.920> to<02:03:30.000> do<02:03:30.159> is<02:03:30.320> just\nbasically um what you need to do is just\nbasically um what you need to do is just have<02:03:30.639> the<02:03:30.800> debugger<02:03:32.159> whatever<02:03:32.560> state<02:03:32.800> it\nhave the debugger whatever state it\nhave the debugger whatever state it needs<02:03:33.280> to<02:03:33.440> change<02:03:33.760> to<02:03:34.080> switch<02:03:34.480> from<02:03:34.800> optimized\nneeds to change to switch from optimized\nneeds to change to switch from optimized unoptimized.<02:03:36.159> It's<02:03:36.400> all<02:03:36.480> in<02:03:36.639> the<02:03:36.719> binary.\nunoptimized. It's all in the binary.\nunoptimized. It's all in the binary. It's<02:03:37.199> all<02:03:37.280> code<02:03:37.440> the<02:03:37.599> debugger<02:03:37.920> can<02:03:38.080> refer<02:03:38.320> to.\nIt's all code the debugger can refer to.\nIt's all code the debugger can refer to. So<02:03:38.639> all<02:03:38.719> it<02:03:38.880> has<02:03:38.960> to<02:03:39.119> do<02:03:39.199> is<02:03:39.360> change<02:03:39.599> that\nSo all it has to do is change that\nSo all it has to do is change that state.<02:03:40.719> And<02:03:41.360> you<02:03:41.520> know<02:03:41.679> it's<02:03:42.000> it<02:03:42.239> seems<02:03:42.400> like\nstate. And you know it's it seems like\nstate. And you know it's it seems like it'd<02:03:42.719> be<02:03:42.800> a<02:03:42.960> pretty<02:03:43.119> minor<02:03:43.440> reverse\nit'd be a pretty minor reverse\nit'd be a pretty minor reverse engineering<02:03:44.239> task<02:03:44.480> to<02:03:44.719> actually<02:03:44.960> find<02:03:45.119> out\nengineering task to actually find out\nengineering task to actually find out what<02:03:45.760> you<02:03:46.000> need<02:03:46.080> to<02:03:46.239> do<02:03:46.320> for<02:03:46.480> that<02:03:46.639> if<02:03:46.880> nobody\nwhat you need to do for that if nobody\nwhat you need to do for that if nobody if<02:03:47.679> if<02:03:47.920> they<02:03:48.080> tell<02:03:48.239> you<02:03:48.480> nothing,<02:03:48.800> which<02:03:49.040> they\nif if they tell you nothing, which they\nif if they tell you nothing, which they might<02:03:49.360> tell<02:03:49.440> you<02:03:49.599> more<02:03:49.760> than<02:03:49.840> that.<02:03:50.320> So,<02:03:51.199> um,\nmight tell you more than that. So, um,\nmight tell you more than that. So, um, so<02:03:52.239> yeah,<02:03:52.480> hopefully<02:03:53.679> that<02:03:54.000> answers<02:03:54.400> the\nso yeah, hopefully that answers the\nso yeah, hopefully that answers the question.\nquestion.\nquestion. >> Yeah.\n>> Yeah.\n>> Yeah. So,<02:03:57.920> I<02:03:58.239> think<02:03:58.400> this<02:03:58.560> is<02:03:58.719> also<02:03:59.040> kind<02:03:59.199> of<02:03:59.280> what\nSo, I think this is also kind of what\nSo, I think this is also kind of what you're<02:03:59.679> planning<02:03:59.920> with<02:04:00.239> workbench<02:04:00.960> back<02:04:01.360> in\nyou're planning with workbench back in\nyou're planning with workbench back in the<02:04:01.760> background,<02:04:02.400> but<02:04:02.960> um<02:04:03.599> now<02:04:03.760> that<02:04:03.920> you're\nthe background, but um now that you're\nthe background, but um now that you're blurring<02:04:04.560> the<02:04:04.800> lines<02:04:05.199> between<02:04:05.760> like<02:04:06.080> the\nblurring the lines between like the\nblurring the lines between like the debuggy<02:04:07.760> inspection<02:04:08.400> and<02:04:08.719> inspecting<02:04:09.440> files,\ndebuggy inspection and inspecting files,\ndebuggy inspection and inspecting files, to<02:04:11.599> what<02:04:11.840> degree<02:04:12.560> are<02:04:12.800> you<02:04:13.040> planning<02:04:13.360> to<02:04:13.599> kind\nto what degree are you planning to kind\nto what degree are you planning to kind of<02:04:14.560> I<02:04:15.199> might<02:04:15.599> open<02:04:15.840> up<02:04:16.000> a<02:04:16.159> hex<02:04:16.480> editor<02:04:16.800> to<02:04:17.040> look\nof I might open up a hex editor to look\nof I might open up a hex editor to look at<02:04:17.360> the<02:04:17.520> file,<02:04:18.000> but<02:04:18.320> if<02:04:19.119> rap<02:04:19.440> DBG<02:04:19.920> is<02:04:20.080> like<02:04:20.239> a\nat the file, but if rap DBG is like a\nat the file, but if rap DBG is like a really<02:04:20.639> awesome<02:04:20.960> hex<02:04:21.360> editor<02:04:21.760> and<02:04:21.920> I<02:04:22.080> can<02:04:22.239> just\nreally awesome hex editor and I can just\nreally awesome hex editor and I can just drag<02:04:22.719> a<02:04:22.880> file<02:04:23.199> into<02:04:23.440> it,<02:04:23.679> right?\ndrag a file into it, right?\ndrag a file into it, right? >> Yep.\n>> Yep.\n>> Yep. >> You<02:04:24.880> already<02:04:25.199> can.<02:04:25.520> Yeah.\n>> You already can. Yeah.\n>> You already can. Yeah. >> Yeah.<02:04:26.000> Exactly.<02:04:26.800> So<02:04:27.119> I<02:04:27.440> think<02:04:27.679> about<02:04:27.840> that<02:04:28.000> and\n>> Yeah. Exactly. So I think about that and\n>> Yeah. Exactly. So I think about that and then<02:04:28.560> a<02:04:28.719> lot<02:04:28.880> of<02:04:28.960> people<02:04:29.119> obviously<02:04:29.599> ask\nthen a lot of people obviously ask\nthen a lot of people obviously ask >> okay<02:04:31.040> this<02:04:31.280> is<02:04:31.440> awesome<02:04:31.840> but<02:04:32.480> could<02:04:32.719> I<02:04:32.960> edit<02:04:33.360> my\n>> okay this is awesome but could I edit my\n>> okay this is awesome but could I edit my text<02:04:34.239> rap<02:04:35.360> you<02:04:35.520> know<02:04:36.080> do<02:04:36.239> you<02:04:36.560> have<02:04:36.800> plans<02:04:37.199> to\ntext rap you know do you have plans to\ntext rap you know do you have plans to kind<02:04:37.760> of<02:04:37.920> go<02:04:38.239> down<02:04:38.639> that<02:04:38.960> road<02:04:39.280> more<02:04:39.599> with<02:04:39.920> rapg\nkind of go down that road more with rapg\nkind of go down that road more with rapg or<02:04:41.360> is<02:04:41.440> that<02:04:41.679> more<02:04:41.840> of<02:04:42.000> a<02:04:42.320> long-term<02:04:43.520> different\nor is that more of a long-term different\nor is that more of a long-term different project?<02:04:44.880> Yeah,<02:04:45.119> I<02:04:45.360> think<02:04:45.599> so.<02:04:46.159> Um,\nproject? Yeah, I think so. Um,\nproject? Yeah, I think so. Um, obviously<02:04:48.639> there<02:04:48.880> are<02:04:49.199> higher<02:04:49.599> priorities\nobviously there are higher priorities\nobviously there are higher priorities than<02:04:50.239> making<02:04:50.400> it<02:04:50.560> a<02:04:50.719> text<02:04:50.880> editor,<02:04:51.280> but<02:04:51.440> I\nthan making it a text editor, but I\nthan making it a text editor, but I think<02:04:51.760> like<02:04:52.080> it's<02:04:52.400> definitely<02:04:52.960> clear<02:04:53.520> that\nthink like it's definitely clear that\nthink like it's definitely clear that you<02:04:54.320> want<02:04:54.480> the<02:04:54.719> ability<02:04:54.960> to<02:04:55.119> mutate<02:04:55.679> data<02:04:56.239> as\nyou want the ability to mutate data as\nyou want the ability to mutate data as well.<02:04:56.960> So<02:04:57.119> it's<02:04:57.360> not<02:04:57.440> just<02:04:57.679> about<02:04:57.920> viewing.\nwell. So it's not just about viewing.\nwell. So it's not just about viewing. Like<02:04:58.560> the<02:04:58.719> visualizers<02:04:59.199> aren't<02:04:59.360> just<02:04:59.520> for\nLike the visualizers aren't just for\nLike the visualizers aren't just for viewing,<02:04:59.920> they're<02:05:00.159> for<02:05:00.320> writing.<02:05:01.199> Um,<02:05:01.520> so<02:05:01.840> hex\nviewing, they're for writing. Um, so hex\nviewing, they're for writing. Um, so hex editor's<02:05:02.719> good<02:05:02.960> example<02:05:03.360> like<02:05:03.920> when<02:05:04.080> you're\neditor's good example like when you're\neditor's good example like when you're viewing<02:05:04.639> the<02:05:04.800> grid<02:05:04.960> of<02:05:05.040> bytes,<02:05:05.360> it<02:05:05.520> sucks<02:05:05.760> if\nviewing the grid of bytes, it sucks if\nviewing the grid of bytes, it sucks if you<02:05:06.000> can't<02:05:06.159> actually<02:05:06.480> like<02:05:06.800> in<02:05:06.960> the<02:05:07.040> RAD\nyou can't actually like in the RAD\nyou can't actually like in the RAD debugger,<02:05:07.679> you<02:05:07.840> can't<02:05:08.000> currently<02:05:08.320> mutate<02:05:08.639> the\ndebugger, you can't currently mutate the\ndebugger, you can't currently mutate the bytes,<02:05:09.040> but<02:05:09.199> you<02:05:09.360> really<02:05:09.520> want<02:05:09.679> to.<02:05:10.080> And<02:05:10.320> so<02:05:10.880> um\nbytes, but you really want to. And so um\nbytes, but you really want to. And so um similarly<02:05:11.520> with<02:05:11.679> images<02:05:12.080> like<02:05:12.239> if<02:05:12.400> you<02:05:12.560> can\nsimilarly with images like if you can\nsimilarly with images like if you can like<02:05:12.880> change<02:05:13.119> the<02:05:13.280> values<02:05:13.760> in<02:05:13.920> the<02:05:14.000> watch\nlike change the values in the watch\nlike change the values in the watch window<02:05:14.400> is<02:05:14.560> the<02:05:14.639> same<02:05:14.800> thing.<02:05:14.960> You<02:05:15.119> can<02:05:15.199> edit\nwindow is the same thing. You can edit\nwindow is the same thing. You can edit values.<02:05:16.480> So<02:05:16.719> I<02:05:16.880> think<02:05:16.960> that<02:05:17.119> should<02:05:17.280> all<02:05:17.440> be\nvalues. So I think that should all be\nvalues. So I think that should all be possible.<02:05:17.920> So<02:05:18.080> the<02:05:18.239> text<02:05:18.480> viewer<02:05:18.880> really\npossible. So the text viewer really\npossible. So the text viewer really should<02:05:19.199> become<02:05:19.440> the<02:05:19.599> text<02:05:19.760> editor<02:05:20.800> um<02:05:21.199> at<02:05:21.440> the\nshould become the text editor um at the\nshould become the text editor um at the limit.<02:05:22.000> I<02:05:22.239> think<02:05:23.280> um<02:05:23.599> I'm<02:05:23.920> not<02:05:24.080> going<02:05:24.239> to\nlimit. I think um I'm not going to\nlimit. I think um I'm not going to prioritize<02:05:25.119> it<02:05:25.280> because<02:05:25.440> there's<02:05:25.599> a<02:05:25.760> lot<02:05:25.840> of\nprioritize it because there's a lot of\nprioritize it because there's a lot of other<02:05:26.080> things<02:05:26.320> to<02:05:26.560> happen<02:05:26.800> first.<02:05:27.280> But<02:05:27.440> I\nother things to happen first. But I\nother things to happen first. But I think<02:05:27.679> like<02:05:27.920> yeah,<02:05:28.159> it's<02:05:28.320> some<02:05:28.560> it's<02:05:29.119> I<02:05:29.360> think\nthink like yeah, it's some it's I think\nthink like yeah, it's some it's I think someday<02:05:29.840> that'll<02:05:30.159> fall<02:05:30.320> in<02:05:30.480> there<02:05:30.719> even<02:05:30.960> if\nsomeday that'll fall in there even if\nsomeday that'll fall in there even if like<02:05:31.679> you<02:05:31.840> know<02:05:32.000> a<02:05:32.159> lot<02:05:32.239> of<02:05:33.040> there's<02:05:33.280> a<02:05:33.360> lot<02:05:33.440> of\nlike you know a lot of there's a lot of\nlike you know a lot of there's a lot of good<02:05:33.679> arguments<02:05:34.000> against<02:05:34.400> having<02:05:34.800> a<02:05:35.040> text\ngood arguments against having a text\ngood arguments against having a text editor<02:05:36.080> like<02:05:36.320> as<02:05:36.480> a<02:05:36.639> mainline<02:05:37.040> thing<02:05:37.199> that's\neditor like as a mainline thing that's\neditor like as a mainline thing that's always<02:05:37.679> on<02:05:37.920> in<02:05:38.080> a<02:05:38.239> debugger.<02:05:38.719> But<02:05:38.880> it<02:05:39.040> so<02:05:39.280> maybe\nalways on in a debugger. But it so maybe\nalways on in a debugger. But it so maybe it's<02:05:39.760> you<02:05:39.920> know<02:05:40.560> maybe<02:05:40.719> there's<02:05:40.960> still<02:05:41.040> a<02:05:41.199> mode\nit's you know maybe there's still a mode\nit's you know maybe there's still a mode switch<02:05:41.679> where<02:05:42.000> all<02:05:42.159> your<02:05:42.320> text<02:05:42.639> becomes<02:05:43.119> read\nswitch where all your text becomes read\nswitch where all your text becomes read only<02:05:43.760> when<02:05:44.080> you're<02:05:44.239> not<02:05:44.480> editing<02:05:44.880> it<02:05:45.119> or<02:05:45.280> or\nonly when you're not editing it or or\nonly when you're not editing it or or when<02:05:45.760> you're<02:05:45.920> debugging<02:05:46.320> it<02:05:46.480> rather.<02:05:46.880> Uh<02:05:47.119> so\nwhen you're debugging it rather. Uh so\nwhen you're debugging it rather. Uh so you<02:05:47.440> don't<02:05:47.520> like<02:05:47.840> add<02:05:48.080> a<02:05:48.239> new<02:05:48.400> line<02:05:48.480> and<02:05:48.719> all\nyou don't like add a new line and all\nyou don't like add a new line and all your<02:05:48.880> debug<02:05:49.199> info<02:05:49.440> is<02:05:49.520> broken<02:05:49.760> or<02:05:49.920> whatever.\nyour debug info is broken or whatever.\nyour debug info is broken or whatever. It's<02:05:50.320> like<02:05:50.480> that<02:05:50.719> stupid<02:05:51.119> problem.<02:05:51.520> But<02:05:52.239> um\nIt's like that stupid problem. But um\nIt's like that stupid problem. But um but<02:05:53.119> yeah,<02:05:53.199> I<02:05:53.360> think<02:05:53.440> at<02:05:53.679> the<02:05:53.760> limit<02:05:54.080> it<02:05:54.239> turns\nbut yeah, I think at the limit it turns\nbut yeah, I think at the limit it turns into<02:05:54.719> that.<02:05:55.040> It<02:05:55.280> really<02:05:55.440> does.<02:05:56.080> Yeah.<02:05:56.400> So<02:05:56.639> just\ninto that. It really does. Yeah. So just\ninto that. It really does. Yeah. So just to<02:05:56.960> add<02:05:57.119> on<02:05:57.280> to<02:05:57.440> that<02:05:57.599> actually<02:05:57.840> a<02:05:58.080> thought<02:05:59.280> uh\nto add on to that actually a thought uh\nto add on to that actually a thought uh one<02:06:01.119> really<02:06:01.360> good<02:06:01.599> argument<02:06:02.000> for<02:06:02.320> doing<02:06:02.560> this\none really good argument for doing this\none really good argument for doing this is<02:06:03.280> that<02:06:03.599> all<02:06:03.840> these<02:06:04.239> type<02:06:04.639> views<02:06:04.960> like<02:06:05.119> for\nis that all these type views like for\nis that all these type views like for example<02:06:05.599> the<02:06:05.920> view<02:06:06.239> rules<02:06:06.560> and<02:06:06.800> stuff<02:06:06.960> like\nexample the view rules and stuff like\nexample the view rules and stuff like that\nthat\nthat >> that<02:06:08.239> looks<02:06:08.560> a<02:06:08.880> lot<02:06:09.199> like<02:06:10.080> so<02:06:10.239> for<02:06:10.400> example<02:06:10.719> 101\n>> that looks a lot like so for example 101\n>> that looks a lot like so for example 101 editor<02:06:12.239> templates<02:06:13.119> that<02:06:13.360> they<02:06:13.599> use<02:06:13.760> for\neditor templates that they use for\neditor templates that they use for inspecting<02:06:14.560> files.<02:06:15.199> Yeah.<02:06:15.520> So<02:06:15.679> if<02:06:15.840> you<02:06:16.000> could\ninspecting files. Yeah. So if you could\ninspecting files. Yeah. So if you could have<02:06:16.400> like<02:06:17.040> a<02:06:17.360> description<02:06:17.760> of<02:06:18.000> a<02:06:18.159> binary<02:06:18.639> type\nhave like a description of a binary type\nhave like a description of a binary type that's<02:06:19.199> like<02:06:19.440> this<02:06:19.599> is<02:06:19.840> my<02:06:20.080> type<02:06:20.719> and<02:06:20.960> you\nthat's like this is my type and you\nthat's like this is my type and you could<02:06:21.280> look<02:06:21.440> at<02:06:21.599> it<02:06:21.840> in<02:06:22.480> memory<02:06:22.880> in<02:06:23.040> a<02:06:23.599> debugger\ncould look at it in memory in a debugger\ncould look at it in memory in a debugger but<02:06:24.320> you<02:06:24.480> could<02:06:24.639> also<02:06:25.119> look<02:06:25.280> at<02:06:25.440> it<02:06:25.760> in<02:06:26.000> a<02:06:26.239> file.\nbut you could also look at it in a file.\nbut you could also look at it in a file. I<02:06:27.119> think<02:06:27.599> really<02:06:28.000> awesome.\nI think really awesome.\nI think really awesome. >> Yes.<02:06:28.960> Yeah.<02:06:29.360> For<02:06:29.599> sure.<02:06:29.840> Agreed.<02:06:30.320> Yep.\n>> Yes. Yeah. For sure. Agreed. Yep.\n>> Yes. Yeah. For sure. Agreed. Yep. >> Like<02:06:32.560> if<02:06:32.800> you<02:06:32.960> keep<02:06:33.119> adding<02:06:33.520> like<02:06:33.840> editing\n>> Like if you keep adding like editing\n>> Like if you keep adding like editing features<02:06:34.639> to<02:06:34.800> the<02:06:34.960> visualizers,<02:06:35.599> you're\nfeatures to the visualizers, you're\nfeatures to the visualizers, you're going<02:06:35.840> to<02:06:36.000> run<02:06:36.159> into<02:06:36.320> antitrust<02:06:36.960> issues\ngoing to run into antitrust issues\ngoing to run into antitrust issues sooner<02:06:37.440> or<02:06:37.520> later<02:06:37.760> because<02:06:38.000> like<02:06:38.159> oh<02:06:38.320> no,<02:06:38.560> I'm\nsooner or later because like oh no, I'm\nsooner or later because like oh no, I'm not<02:06:38.880> only<02:06:39.119> eating<02:06:39.360> all<02:06:39.440> the<02:06:39.599> buggers<02:06:39.920> and<02:06:40.079> I'm\nnot only eating all the buggers and I'm\nnot only eating all the buggers and I'm also<02:06:40.400> eating<02:06:40.560> the<02:06:40.719> paint<02:06:40.960> programs<02:06:41.280> and<02:06:41.440> the\nalso eating the paint programs and the\nalso eating the paint programs and the hex<02:06:41.760> editors<02:06:42.239> and<02:06:42.400> the<02:06:42.719> like\nhex editors and the like\nhex editors and the like Yeah,\nYeah,\nYeah, >> it<02:06:47.599> is.<02:06:47.840> It<02:06:48.000> is<02:06:48.239> red<02:06:48.400> OS.<02:06:48.719> It's<02:06:48.880> just<02:06:49.920> probably\n>> it is. It is red OS. It's just probably\n>> it is. It is red OS. It's just probably >> Yeah.\n>> Yeah.\n>> Yeah. >> So<02:06:51.679> my<02:06:52.000> question<02:06:52.239> is<02:06:53.280> how<02:06:53.440> do<02:06:53.599> you<02:06:53.760> annotate\n>> So my question is how do you annotate\n>> So my question is how do you annotate types?<02:06:55.440> Uh<02:06:55.760> say<02:06:55.920> that<02:06:56.079> you<02:06:56.239> have<02:06:56.320> a<02:06:56.560> project\ntypes? Uh say that you have a project\ntypes? Uh say that you have a project with<02:06:57.280> a<02:06:57.440> lot<02:06:57.599> of<02:06:57.679> textures<02:06:58.880> and<02:06:59.119> but<02:06:59.360> you<02:06:59.520> know\nwith a lot of textures and but you know\nwith a lot of textures and but you know that<02:07:00.480> your<02:07:00.639> own<02:07:00.880> type<02:07:01.599> like<02:07:01.840> can<02:07:02.000> you<02:07:02.159> save<02:07:02.400> it\nthat your own type like can you save it\nthat your own type like can you save it on<02:07:02.639> a<02:07:02.800> point<02:07:03.119> basis<02:07:03.599> so<02:07:03.920> that<02:07:04.159> you<02:07:04.320> can<02:07:04.480> always\non a point basis so that you can always\non a point basis so that you can always like<02:07:05.040> look<02:07:05.280> at<02:07:05.440> your<02:07:05.679> pictures<02:07:06.480> or<02:07:06.719> you<02:07:06.880> have\nlike look at your pictures or you have\nlike look at your pictures or you have to<02:07:07.440> always<02:07:07.840> like<02:07:08.159> enter<02:07:08.480> it<02:07:09.119> when<02:07:09.360> you<02:07:09.520> start\nto always like enter it when you start\nto always like enter it when you start having<02:07:10.079> the<02:07:10.159> B.\nhaving the B.\nhaving the B. >> Right.<02:07:11.440> So,<02:07:12.159> um,<02:07:13.360> for<02:07:13.599> some<02:07:13.760> reason,<02:07:14.079> you\n>> Right. So, um, for some reason, you\n>> Right. So, um, for some reason, you know,<02:07:14.320> you<02:07:14.480> asked<02:07:14.639> that<02:07:14.880> question<02:07:15.040> and<02:07:15.280> I\nknow, you asked that question and I\nknow, you asked that question and I thought<02:07:15.599> I<02:07:15.760> had<02:07:15.840> a<02:07:16.079> slide<02:07:16.320> about<02:07:16.480> it.<02:07:17.360> Maybe<02:07:17.599> I\nthought I had a slide about it. Maybe I\nthought I had a slide about it. Maybe I just<02:07:18.000> had<02:07:18.159> a<02:07:18.320> sentence<02:07:18.560> on<02:07:18.719> my<02:07:18.800> notes<02:07:19.040> that<02:07:19.119> I\njust had a sentence on my notes that I\njust had a sentence on my notes that I forgot<02:07:19.520> to<02:07:19.599> say,<02:07:19.840> but,<02:07:20.719> um,<02:07:21.199> even<02:07:21.440> though<02:07:21.599> I<02:07:21.760> I\nforgot to say, but, um, even though I I\nforgot to say, but, um, even though I I realized<02:07:22.320> I<02:07:22.480> was<02:07:22.639> reading,<02:07:23.440> but<02:07:24.159> uh,<02:07:24.320> but\nrealized I was reading, but uh, but\nrealized I was reading, but uh, but yeah,<02:07:24.639> I<02:07:24.800> guess<02:07:24.880> I<02:07:25.040> forgot<02:07:25.280> to<02:07:25.360> say<02:07:25.520> it<02:07:25.679> or<02:07:26.159> it\nyeah, I guess I forgot to say it or it\nyeah, I guess I forgot to say it or it maybe<02:07:26.880> I<02:07:27.199> misremembered<02:07:27.760> making<02:07:27.920> a<02:07:28.079> slide<02:07:28.320> for\nmaybe I misremembered making a slide for\nmaybe I misremembered making a slide for it.<02:07:28.719> But<02:07:29.520> point<02:07:29.760> being<02:07:30.560> um<02:07:31.040> yes<02:07:31.280> there<02:07:31.440> is<02:07:31.599> a\nit. But point being um yes there is a\nit. But point being um yes there is a way<02:07:31.840> to<02:07:31.920> annotate<02:07:32.400> that<02:07:32.719> types<02:07:33.199> should<02:07:33.440> be<02:07:33.679> ex\nway to annotate that types should be ex\nway to annotate that types should be ex expanded<02:07:35.520> in<02:07:35.760> some<02:07:36.000> particular<02:07:36.480> way<02:07:36.639> like\nexpanded in some particular way like\nexpanded in some particular way like when<02:07:37.119> and<02:07:37.360> the<02:07:37.599> way<02:07:37.679> that<02:07:37.920> works<02:07:38.239> basically<02:07:38.560> is\nwhen and the way that works basically is\nwhen and the way that works basically is because<02:07:39.760> so<02:07:40.000> what<02:07:40.159> you<02:07:40.320> would<02:07:40.400> enter<02:07:40.719> manually\nbecause so what you would enter manually\nbecause so what you would enter manually when<02:07:41.280> you<02:07:41.360> start<02:07:41.440> a<02:07:41.599> debugging<02:07:42.000> session<02:07:42.239> is\nwhen you start a debugging session is\nwhen you start a debugging session is like<02:07:42.560> say<02:07:42.639> you've<02:07:42.800> got<02:07:42.880> your<02:07:43.040> texture<02:07:43.440> type<02:07:44.560> um\nlike say you've got your texture type um\nlike say you've got your texture type um and<02:07:45.280> it's<02:07:45.599> or<02:07:45.840> it's<02:07:46.000> like<02:07:46.079> a<02:07:46.239> loaded<02:07:46.480> bit<02:07:46.719> map\nand it's or it's like a loaded bit map\nand it's or it's like a loaded bit map type<02:07:47.119> because<02:07:47.280> it's<02:07:47.360> all<02:07:47.520> CPU<02:07:47.840> memory\ntype because it's all CPU memory\ntype because it's all CPU memory obviously<02:07:48.560> you<02:07:48.719> need<02:07:48.800> to<02:07:48.960> do<02:07:49.040> other<02:07:49.199> stuff<02:07:49.360> for\nobviously you need to do other stuff for\nobviously you need to do other stuff for GPU<02:07:49.840> memory<02:07:50.079> but<02:07:50.239> let's<02:07:50.320> say<02:07:50.400> you've<02:07:50.560> got<02:07:50.639> a\nGPU memory but let's say you've got a\nGPU memory but let's say you've got a loaded<02:07:50.960> bit<02:07:51.199> map<02:07:51.440> or<02:07:51.599> decoded<02:07:52.000> bit<02:07:52.239> map<02:07:52.400> type\nloaded bit map or decoded bit map type\nloaded bit map or decoded bit map type or<02:07:52.800> something<02:07:52.960> like<02:07:53.040> that<02:07:53.679> you<02:07:53.840> have<02:07:53.920> an\nor something like that you have an\nor something like that you have an evaluation<02:07:54.480> of<02:07:54.639> it<02:07:55.280> in<02:07:55.440> order<02:07:55.599> to<02:07:55.840> start\nevaluation of it in order to start\nevaluation of it in order to start visualizing<02:07:56.480> it<02:07:56.639> as<02:07:56.719> a<02:07:56.880> bit<02:07:57.040> map<02:07:57.280> you<02:07:57.440> would\nvisualizing it as a bit map you would\nvisualizing it as a bit map you would say<02:07:57.920> Okay,<02:07:58.480> call<02:07:58.800> the<02:07:59.040> bitmap<02:07:59.520> visualizer\nsay Okay, call the bitmap visualizer\nsay Okay, call the bitmap visualizer with<02:08:00.480> like<02:08:00.880> you<02:08:01.040> know<02:08:01.119> your<02:08:01.599> loaded<02:08:01.920> or\nwith like you know your loaded or\nwith like you know your loaded or decoded<02:08:02.560> bitmap<02:08:03.199> data<02:08:03.599> and<02:08:03.840> then<02:08:04.000> maybe\ndecoded bitmap data and then maybe\ndecoded bitmap data and then maybe decoded<02:08:04.639> bitmap.width<02:08:05.360> and<02:08:05.520> then<02:08:05.920> height.<02:08:07.199> Um\ndecoded bitmap.width and then height. Um\ndecoded bitmap.width and then height. Um and<02:08:08.560> so<02:08:08.800> the<02:08:09.119> the<02:08:09.520> mechanism<02:08:10.000> I<02:08:10.239> have<02:08:10.400> in<02:08:10.560> the\nand so the the mechanism I have in the\nand so the the mechanism I have in the rad<02:08:10.880> debugger<02:08:11.360> to<02:08:11.520> support<02:08:11.840> that<02:08:12.320> associated\nrad debugger to support that associated\nrad debugger to support that associated with<02:08:12.880> type<02:08:13.119> info<02:08:13.760> is<02:08:14.000> just<02:08:14.239> a<02:08:14.880> the<02:08:15.119> visualizers\nwith type info is just a the visualizers\nwith type info is just a the visualizers to<02:08:15.920> the<02:08:16.079> user<02:08:16.639> facing<02:08:17.040> thing.<02:08:17.360> I<02:08:17.599> call<02:08:17.679> them\nto the user facing thing. I call them\nto the user facing thing. I call them lenses<02:08:18.239> in<02:08:18.400> the<02:08:18.480> code<02:08:18.639> but<02:08:18.880> to<02:08:19.040> the<02:08:19.119> users\nlenses in the code but to the users\nlenses in the code but to the users they're<02:08:19.679> just<02:08:19.840> called<02:08:20.000> views.<02:08:21.360> Um<02:08:22.000> and<02:08:22.239> the\nthey're just called views. Um and the\nthey're just called views. Um and the feature<02:08:22.639> in<02:08:22.719> the<02:08:22.800> radook<02:08:23.199> is<02:08:23.360> called<02:08:23.440> a<02:08:23.599> type\nfeature in the radook is called a type\nfeature in the radook is called a type view.<02:08:24.159> And<02:08:24.320> the<02:08:24.480> type<02:08:24.719> view<02:08:24.960> is<02:08:25.119> just\nview. And the type view is just\nview. And the type view is just basically<02:08:25.679> saying<02:08:26.719> here's<02:08:26.960> a<02:08:27.119> type\nbasically saying here's a type\nbasically saying here's a type expression<02:08:28.560> and<02:08:28.880> if<02:08:29.199> you<02:08:29.360> evaluate<02:08:29.920> something\nexpression and if you evaluate something\nexpression and if you evaluate something as<02:08:30.560> this<02:08:30.800> type,<02:08:31.440> I<02:08:31.679> want<02:08:31.840> you<02:08:32.000> to<02:08:32.159> actually\nas this type, I want you to actually\nas this type, I want you to actually evaluate<02:08:32.960> this<02:08:33.199> expression<02:08:33.920> instead.<02:08:35.280> And\nevaluate this expression instead. And\nevaluate this expression instead. And because<02:08:36.800> each<02:08:37.119> expression<02:08:38.159> can<02:08:39.040> um<02:08:40.079> can\nbecause each expression can um can\nbecause each expression can um can include<02:08:40.719> the<02:08:40.960> visualizer<02:08:42.159> uh<02:08:42.560> selection<02:08:42.960> and\ninclude the visualizer uh selection and\ninclude the visualizer uh selection and and<02:08:43.599> parameterizations,<02:08:44.639> you<02:08:44.800> can<02:08:44.880> say,\nand parameterizations, you can say,\nand parameterizations, you can say, okay,<02:08:45.280> I've<02:08:45.440> got<02:08:45.520> this<02:08:45.679> decoded<02:08:46.079> bitmap<02:08:46.560> type\nokay, I've got this decoded bitmap type\nokay, I've got this decoded bitmap type uh<02:08:48.079> visual.<02:08:48.560> Oh<02:08:48.719> yeah,<02:08:48.880> and<02:08:49.040> the<02:08:49.280> second<02:08:49.440> part\nuh visual. Oh yeah, and the second part\nuh visual. Oh yeah, and the second part of<02:08:49.679> it,<02:08:49.920> this<02:08:50.159> expression<02:08:50.480> can<02:08:50.719> refer<02:08:50.960> to<02:08:51.040> the\nof it, this expression can refer to the\nof it, this expression can refer to the original<02:08:51.599> expression.<02:08:52.320> So<02:08:52.719> basically<02:08:53.040> you\noriginal expression. So basically you\noriginal expression. So basically you say<02:08:53.679> decode<02:08:54.000> a<02:08:54.079> bit<02:08:54.320> map<02:08:54.639> is<02:08:54.880> my<02:08:55.040> type<02:08:55.360> and<02:08:55.599> the\nsay decode a bit map is my type and the\nsay decode a bit map is my type and the way<02:08:55.840> I<02:08:56.000> want<02:08:56.079> to<02:08:56.159> visualize<02:08:56.480> that<02:08:56.800> is<02:08:57.040> bit<02:08:57.360> map\nway I want to visualize that is bit map\nway I want to visualize that is bit map and<02:08:58.000> then<02:08:58.079> you<02:08:58.239> can<02:08:58.400> even<02:08:58.560> just<02:08:58.639> refer<02:08:58.880> to<02:08:58.960> the\nand then you can even just refer to the\nand then you can even just refer to the members<02:08:59.360> by<02:08:59.520> name.<02:08:59.679> So<02:08:59.760> you<02:08:59.840> can<02:08:59.920> say<02:09:00.079> data\nmembers by name. So you can say data\nmembers by name. So you can say data width<02:09:00.719> height<02:09:01.199> close<02:09:02.239> and<02:09:02.480> then<02:09:03.199> that<02:09:03.520> can\nwidth height close and then that can\nwidth height close and then that can either<02:09:03.840> be<02:09:04.000> saved<02:09:04.239> in<02:09:04.400> your<02:09:04.560> program.<02:09:05.599> Um<02:09:06.239> we\neither be saved in your program. Um we\neither be saved in your program. Um we have<02:09:06.480> a<02:09:06.639> header<02:09:06.960> library<02:09:07.280> where<02:09:07.440> you<02:09:07.599> just\nhave a header library where you just\nhave a header library where you just like<02:09:07.920> say<02:09:08.079> red<02:09:08.320> imageg<02:09:08.639> type<02:09:08.800> view<02:09:09.040> decode<02:09:09.280> a\nlike say red imageg type view decode a\nlike say red imageg type view decode a bit<02:09:09.679> map<02:09:10.079> bit<02:09:10.400> map<02:09:10.800> base<02:09:11.040> width<02:09:11.280> height.<02:09:12.159> Um<02:09:12.480> or\nbit map bit map base width height. Um or\nbit map bit map base width height. Um or it<02:09:12.800> can<02:09:12.880> be<02:09:12.960> in<02:09:13.119> the<02:09:13.199> debugger<02:09:13.679> config<02:09:14.560> and\nit can be in the debugger config and\nit can be in the debugger config and then<02:09:15.040> either<02:09:15.360> way<02:09:15.679> when<02:09:15.840> the<02:09:16.000> debugger<02:09:16.320> loads\nthen either way when the debugger loads\nthen either way when the debugger loads the<02:09:16.719> program<02:09:16.960> it'll<02:09:17.280> see<02:09:17.360> that<02:09:17.599> type<02:09:17.840> view<02:09:18.000> and\nthe program it'll see that type view and\nthe program it'll see that type view and it<02:09:18.320> will<02:09:18.480> apply<02:09:18.719> it<02:09:18.880> to<02:09:19.040> all<02:09:19.360> evaluations<02:09:19.920> of\nit will apply it to all evaluations of\nit will apply it to all evaluations of that<02:09:20.239> type.<02:09:20.639> So<02:09:20.800> then<02:09:21.040> even<02:09:21.199> if<02:09:21.360> you<02:09:21.520> like\nthat type. So then even if you like\nthat type. So then even if you like hover<02:09:22.000> it<02:09:22.400> in<02:09:22.719> your<02:09:22.880> source<02:09:23.119> code,<02:09:23.360> you'll<02:09:23.520> see\nhover it in your source code, you'll see\nhover it in your source code, you'll see the<02:09:23.760> bit<02:09:24.000> map\nthe bit map\nthe bit map >> and<02:09:26.079> and<02:09:26.239> it's<02:09:26.480> a<02:09:26.719> nice<02:09:26.880> example<02:09:27.119> of<02:09:27.280> how<02:09:27.520> you\n>> and and it's a nice example of how you\n>> and and it's a nice example of how you think<02:09:27.920> about<02:09:28.159> the<02:09:28.400> whole<02:09:28.560> pipeline<02:09:28.960> of<02:09:29.199> like\nthink about the whole pipeline of like\nthink about the whole pipeline of like the<02:09:29.840> idea<02:09:30.079> is<02:09:30.239> to<02:09:30.400> reduce<02:09:30.719> the<02:09:30.960> total<02:09:31.199> round\nthe idea is to reduce the total round\nthe idea is to reduce the total round trip<02:09:31.760> time.<02:09:32.000> So<02:09:32.159> if<02:09:32.320> I<02:09:32.480> have<02:09:32.560> to<02:09:32.719> reenter<02:09:33.280> my\ntrip time. So if I have to reenter my\ntrip time. So if I have to reenter my expressions<02:09:34.159> every<02:09:34.400> time<02:09:34.639> that<02:09:34.880> sucks<02:09:35.280> how<02:09:35.440> do\nexpressions every time that sucks how do\nexpressions every time that sucks how do I<02:09:35.599> make<02:09:35.760> the<02:09:36.000> remove<02:09:36.159> that<02:09:36.400> and<02:09:36.480> you<02:09:36.719> came<02:09:36.800> up\nI make the remove that and you came up\nI make the remove that and you came up with<02:09:37.119> that<02:09:37.280> header\nwith that header\nwith that header >> including<02:09:38.400> the<02:09:38.480> header<02:09:38.719> and<02:09:38.880> giving<02:09:39.119> having\n>> including the header and giving having\n>> including the header and giving having that<02:09:40.000> special<02:09:40.400> visualiz<02:09:41.280> visualizer<02:09:41.920> type\nthat special visualiz visualizer type\nthat special visualiz visualizer type info\ninfo\ninfo >> in<02:09:43.280> the<02:09:43.440> program<02:09:43.760> so<02:09:44.000> that<02:09:44.159> it's<02:09:44.639> there<02:09:44.880> when\n>> in the program so that it's there when\n>> in the program so that it's there when you<02:09:45.280> run<02:09:45.360> it.\nyou run it.\nyou run it. >> Yep.<02:09:45.760> And<02:09:45.920> it's<02:09:46.159> the<02:09:46.239> same<02:09:46.400> thing<02:09:46.480> as<02:09:46.800> uh<02:09:46.880> NATV\n>> Yep. And it's the same thing as uh NATV\n>> Yep. And it's the same thing as uh NATV viz<02:09:47.520> as<02:09:47.599> well.<02:09:47.840> Like<02:09:48.079> it's<02:09:48.239> it's<02:09:48.639> uh<02:09:48.800> sort<02:09:48.960> of\nviz as well. Like it's it's uh sort of\nviz as well. Like it's it's uh sort of the<02:09:49.679> extension<02:09:50.079> and<02:09:50.239> cleaned<02:09:50.480> up<02:09:50.639> version<02:09:50.800> of\nthe extension and cleaned up version of\nthe extension and cleaned up version of NAV<02:09:51.199> viz.\nNAV viz.\nNAV viz. >> Yeah.<02:09:51.760> Like<02:09:52.480> LVM<02:09:53.119> like<02:09:53.520> debug<02:09:54.000> LDB<02:09:54.639> etc.<02:09:54.880> Other\n>> Yeah. Like LVM like debug LDB etc. Other\n>> Yeah. Like LVM like debug LDB etc. Other debuggers<02:09:55.440> have<02:09:55.599> that<02:09:55.760> but<02:09:55.920> it's<02:09:56.159> not<02:09:56.400> in<02:09:56.719> your\ndebuggers have that but it's not in your\ndebuggers have that but it's not in your program<02:09:58.000> like\nprogram like\nprogram like >> Yeah.<02:09:59.119> It's<02:09:59.280> a<02:09:59.360> big<02:09:59.440> problem.\n>> Yeah. It's a big problem.\n>> Yeah. It's a big problem. >> It's<02:09:59.920> always<02:10:00.079> a<02:10:00.320> sidec<02:10:00.719> car<02:10:01.119> thing.\n>> It's always a sidec car thing.\n>> It's always a sidec car thing. >> Yep.\n>> Yep.\n>> Yep. >> All<02:10:03.280> right.<02:10:04.320> Any<02:10:04.560> more<02:10:04.800> questions?<02:10:06.079> There\n>> All right. Any more questions? There\n>> All right. Any more questions? There were<02:10:06.480> more<02:10:06.639> hands.<02:10:07.840> Guess<02:10:08.079> they<02:10:08.239> got<02:10:08.400> tired.\nwere more hands. Guess they got tired.\nwere more hands. Guess they got tired. >> Yeah.<02:10:10.480> This<02:10:10.639> is<02:10:10.800> sort<02:10:10.880> of<02:10:10.960> a<02:10:11.119> followup<02:10:11.440> to<02:10:11.599> the\n>> Yeah. This is sort of a followup to the\n>> Yeah. This is sort of a followup to the file<02:10:12.639> visualizer<02:10:13.119> kind<02:10:13.280> of<02:10:13.360> question,<02:10:13.520> but\nfile visualizer kind of question, but\nfile visualizer kind of question, but did<02:10:13.920> you<02:10:14.000> ever<02:10:14.239> consider<02:10:14.480> dumping<02:10:14.800> the<02:10:14.960> data\ndid you ever consider dumping the data\ndid you ever consider dumping the data to<02:10:15.360> file<02:10:15.520> in<02:10:15.679> an<02:10:15.840> efficient<02:10:16.079> manner<02:10:16.320> so<02:10:16.480> you\nto file in an efficient manner so you\nto file in an efficient manner so you can<02:10:16.719> use<02:10:16.880> existing<02:10:17.280> programs?\ncan use existing programs?\ncan use existing programs? >> Um,\n>> Um,\n>> Um, I<02:10:20.719> mean<02:10:21.760> it's<02:10:22.000> sort<02:10:22.239> of<02:10:22.320> like<02:10:23.119> uh<02:10:24.000> the<02:10:24.239> problem\nI mean it's sort of like uh the problem\nI mean it's sort of like uh the problem once<02:10:24.880> you're<02:10:25.199> stretching<02:10:25.599> across<02:10:25.920> the\nonce you're stretching across the\nonce you're stretching across the program<02:10:26.400> boundary<02:10:26.800> is<02:10:27.040> that<02:10:27.199> the<02:10:27.440> operating\nprogram boundary is that the operating\nprogram boundary is that the operating system<02:10:28.079> primitives<02:10:28.560> that<02:10:28.800> you<02:10:29.119> that<02:10:29.440> are\nsystem primitives that you that are\nsystem primitives that you that are available<02:10:30.400> for<02:10:31.520> program<02:10:31.920> integration<02:10:32.880> are\navailable for program integration are\navailable for program integration are kind<02:10:33.280> of<02:10:33.360> too<02:10:33.599> weak<02:10:34.000> for<02:10:34.239> what<02:10:34.400> you<02:10:34.560> really\nkind of too weak for what you really\nkind of too weak for what you really need.<02:10:34.960> And<02:10:35.119> this<02:10:35.280> is<02:10:35.440> why<02:10:35.679> people<02:10:35.920> want\nneed. And this is why people want\nneed. And this is why people want integrated<02:10:36.800> development<02:10:37.199> environments<02:10:37.599> at\nintegrated development environments at\nintegrated development environments at all<02:10:38.320> is<02:10:38.480> because<02:10:38.719> their<02:10:38.960> text<02:10:39.199> editor<02:10:39.440> and\nall is because their text editor and\nall is because their text editor and debugger<02:10:40.000> and<02:10:40.159> like<02:10:40.320> all<02:10:40.400> these<02:10:40.639> other<02:10:40.719> things\ndebugger and like all these other things\ndebugger and like all these other things they<02:10:41.040> want<02:10:41.119> in<02:10:41.280> their<02:10:41.360> IDE.<02:10:42.400> Um<02:10:43.040> they're\nthey want in their IDE. Um they're\nthey want in their IDE. Um they're really<02:10:43.840> like<02:10:45.040> they<02:10:45.280> could<02:10:45.440> be<02:10:45.599> separate\nreally like they could be separate\nreally like they could be separate programs<02:10:46.239> in<02:10:46.480> principle,<02:10:47.280> but<02:10:47.520> it<02:10:47.760> seems<02:10:47.920> like\nprograms in principle, but it seems like\nprograms in principle, but it seems like the<02:10:48.480> the<02:10:49.119> tools<02:10:49.440> that<02:10:49.599> the<02:10:49.760> operating<02:10:50.079> system\nthe the tools that the operating system\nthe the tools that the operating system provides<02:10:50.719> for<02:10:50.880> these<02:10:51.119> programs<02:10:51.440> to<02:10:51.760> connect\nprovides for these programs to connect\nprovides for these programs to connect with<02:10:52.239> each<02:10:52.480> other.<02:10:52.880> They<02:10:53.119> seem<02:10:53.280> a<02:10:53.440> little<02:10:53.520> bit\nwith each other. They seem a little bit\nwith each other. They seem a little bit too<02:10:53.840> weak<02:10:54.159> and<02:10:54.400> like<02:10:54.639> not<02:10:54.880> rich<02:10:55.199> enough<02:10:55.520> to\ntoo weak and like not rich enough to\ntoo weak and like not rich enough to really<02:10:56.079> provide<02:10:56.400> what<02:10:56.639> people<02:10:56.880> want.<02:10:57.520> And<02:10:57.679> so\nreally provide what people want. And so\nreally provide what people want. And so people<02:10:58.800> want<02:10:58.960> an<02:10:59.119> IDE<02:10:59.520> for<02:10:59.679> it.<02:11:00.079> It's<02:11:00.239> pretty\npeople want an IDE for it. It's pretty\npeople want an IDE for it. It's pretty much<02:11:00.560> the<02:11:00.719> same<02:11:00.880> thing<02:11:01.040> here.<02:11:01.360> It's<02:11:01.599> like<02:11:01.840> once\nmuch the same thing here. It's like once\nmuch the same thing here. It's like once you<02:11:02.560> dump<02:11:02.880> stuff<02:11:03.040> to<02:11:03.280> files,<02:11:03.760> it's<02:11:04.079> sort<02:11:04.239> of\nyou dump stuff to files, it's sort of\nyou dump stuff to files, it's sort of like<02:11:04.960> you've<02:11:05.199> introduced<02:11:05.599> a<02:11:05.840> cash<02:11:06.000> eviction\nlike you've introduced a cash eviction\nlike you've introduced a cash eviction problem.<02:11:06.800> It's<02:11:06.960> like<02:11:07.119> do<02:11:07.199> we<02:11:07.360> just<02:11:07.520> leave\nproblem. It's like do we just leave\nproblem. It's like do we just leave those<02:11:07.840> files<02:11:08.079> there<02:11:08.239> forever?<02:11:09.040> How<02:11:09.199> do<02:11:09.360> we\nthose files there forever? How do we\nthose files there forever? How do we open<02:11:09.760> the<02:11:09.920> other<02:11:10.159> program?<02:11:10.560> Is<02:11:10.719> it<02:11:10.880> different\nopen the other program? Is it different\nopen the other program? Is it different for<02:11:11.280> every<02:11:11.520> program?<02:11:11.920> Like<02:11:12.159> how<02:11:12.560> I've<02:11:12.880> I've\nfor every program? Like how I've I've\nfor every program? Like how I've I've got<02:11:13.199> to<02:11:13.280> start<02:11:13.520> calling<02:11:13.760> these<02:11:14.000> other\ngot to start calling these other\ngot to start calling these other programs<02:11:14.560> in<02:11:14.719> this<02:11:14.880> way.<02:11:15.520> Um<02:11:15.920> they<02:11:16.159> don't<02:11:16.239> live\nprograms in this way. Um they don't live\nprograms in this way. Um they don't live update<02:11:16.800> with<02:11:16.960> the<02:11:17.119> device<02:11:17.360> like<02:11:17.520> what<02:11:17.679> do<02:11:17.840> I\nupdate with the device like what do I\nupdate with the device like what do I have<02:11:18.000> to<02:11:18.320> re<02:11:18.719> serialize<02:11:19.199> to<02:11:19.360> disk<02:11:19.599> and<02:11:19.760> then\nhave to re serialize to disk and then\nhave to re serialize to disk and then it's<02:11:20.000> like<02:11:20.239> the<02:11:20.400> other<02:11:20.560> program<02:11:20.880> has<02:11:21.040> a<02:11:21.199> popup.\nit's like the other program has a popup.\nit's like the other program has a popup. It's<02:11:21.760> like<02:11:21.920> the<02:11:22.159> contents<02:11:22.480> of<02:11:22.639> this<02:11:22.800> file<02:11:23.119> have\nIt's like the contents of this file have\nIt's like the contents of this file have changed.<02:11:23.599> And<02:11:23.760> it's<02:11:23.920> like<02:11:24.079> ah<02:11:24.320> dude<02:11:24.560> like<02:11:24.800> this\nchanged. And it's like ah dude like this\nchanged. And it's like ah dude like this sucks.<02:11:25.280> Like<02:11:25.599> so<02:11:26.079> so<02:11:27.520> in<02:11:27.679> a<02:11:27.840> better<02:11:28.079> world<02:11:28.960> an\nsucks. Like so so in a better world an\nsucks. Like so so in a better world an operating<02:11:29.440> system<02:11:29.679> maybe<02:11:30.000> would<02:11:30.159> make<02:11:30.320> this\noperating system maybe would make this\noperating system maybe would make this all<02:11:30.639> work.<02:11:31.440> I<02:11:31.679> don't<02:11:31.840> think<02:11:31.920> they<02:11:32.079> do<02:11:32.320> right\nall work. I don't think they do right\nall work. I don't think they do right now<02:11:32.719> and<02:11:32.960> so<02:11:33.119> I<02:11:33.280> just<02:11:33.440> built<02:11:33.679> it<02:11:33.760> this<02:11:34.000> way.\nnow and so I just built it this way.\nnow and so I just built it this way. >> On<02:11:34.480> the<02:11:34.639> flip<02:11:34.880> side,<02:11:35.119> do<02:11:35.199> you<02:11:35.360> consider<02:11:35.679> having\n>> On the flip side, do you consider having\n>> On the flip side, do you consider having developers<02:11:36.480> create<02:11:36.719> plugins<02:11:37.119> or<02:11:37.360> like<02:11:37.520> new\ndevelopers create plugins or like new\ndevelopers create plugins or like new panels<02:11:38.079> or<02:11:38.320> visualizers<02:11:38.800> or<02:11:39.040> whatever?\npanels or visualizers or whatever?\npanels or visualizers or whatever? >> Yes.<02:11:40.480> Yes.<02:11:40.960> So<02:11:41.520> I<02:11:41.760> think<02:11:41.840> I<02:11:42.000> also<02:11:42.239> had<02:11:42.400> notes\n>> Yes. Yes. So I think I also had notes\n>> Yes. Yes. So I think I also had notes that<02:11:42.880> I<02:11:43.040> just<02:11:43.199> didn't<02:11:43.520> say<02:11:43.840> about<02:11:44.000> that.<02:11:44.400> But\nthat I just didn't say about that. But\nthat I just didn't say about that. But um\num\num yeah,<02:11:46.800> basically<02:11:47.199> what<02:11:47.440> you<02:11:47.599> want<02:11:47.840> is<02:11:48.000> the\nyeah, basically what you want is the\nyeah, basically what you want is the ability<02:11:48.480> to<02:11:48.719> say<02:11:48.880> like<02:11:49.599> uh<02:11:50.639> both<02:11:51.199> there's<02:11:51.440> an\nability to say like uh both there's an\nability to say like uh both there's an argument<02:11:51.920> to<02:11:52.079> say<02:11:52.239> like<02:11:52.639> you<02:11:52.800> want<02:11:52.880> to<02:11:52.960> write<02:11:53.119> a\nargument to say like you want to write a\nargument to say like you want to write a plugin<02:11:53.520> for<02:11:53.679> the<02:11:53.840> for<02:11:54.079> the<02:11:54.239> debugger<02:11:54.960> itself\nplugin for the for the debugger itself\nplugin for the for the debugger itself like<02:11:55.599> a<02:11:55.760> DL<02:11:56.159> or<02:11:56.400> something<02:11:57.760> uh<02:11:57.840> or<02:11:58.079> like<02:11:58.320> some\nlike a DL or something uh or like some\nlike a DL or something uh or like some kind<02:11:58.560> of<02:11:58.639> a<02:11:58.800> script<02:11:59.040> where<02:11:59.280> it's<02:11:59.440> like<02:11:59.679> I<02:11:59.920> just\nkind of a script where it's like I just\nkind of a script where it's like I just want<02:12:00.159> to<02:12:00.239> put<02:12:00.400> this<02:12:00.560> visualizer<02:12:00.960> code<02:12:01.119> into\nwant to put this visualizer code into\nwant to put this visualizer code into the<02:12:01.440> debugger<02:12:01.840> as<02:12:02.079> an<02:12:02.560> extra<02:12:02.960> one<02:12:03.440> in<02:12:03.679> addition\nthe debugger as an extra one in addition\nthe debugger as an extra one in addition to<02:12:04.000> the<02:12:04.159> built-in<02:12:04.480> ones.<02:12:05.760> Or<02:12:06.400> an<02:12:06.719> even<02:12:06.880> better\nto the built-in ones. Or an even better\nto the built-in ones. Or an even better option<02:12:07.360> in<02:12:07.599> many<02:12:07.760> cases<02:12:07.920> is<02:12:08.159> like<02:12:08.320> that<02:12:08.560> stuff\noption in many cases is like that stuff\noption in many cases is like that stuff should<02:12:08.880> be<02:12:08.960> in<02:12:09.119> the<02:12:09.199> program<02:12:09.520> like<02:12:09.679> next<02:12:09.840> to\nshould be in the program like next to\nshould be in the program like next to the<02:12:10.079> type<02:12:10.320> info.<02:12:10.560> So<02:12:10.719> there's<02:12:10.880> a<02:12:11.040> limited\nthe type info. So there's a limited\nthe type info. So there's a limited version<02:12:11.520> of<02:12:11.599> that<02:12:11.760> with<02:12:11.920> the<02:12:12.079> type<02:12:12.320> views\nversion of that with the type views\nversion of that with the type views because<02:12:12.800> you<02:12:13.040> can<02:12:13.119> sort<02:12:13.280> of<02:12:13.360> say<02:12:13.599> like<02:12:14.320> the<02:12:14.480> the\nbecause you can sort of say like the the\nbecause you can sort of say like the the expression<02:12:15.040> is<02:12:15.280> programmatic<02:12:16.000> really.<02:12:16.320> So\nexpression is programmatic really. So\nexpression is programmatic really. So it's<02:12:16.719> like<02:12:16.960> it<02:12:17.119> is<02:12:18.159> um\nit's like it is um\nit's like it is um I<02:12:20.400> don't<02:12:20.480> think<02:12:20.560> it's<02:12:20.800> turning<02:12:21.119> complete\nI don't think it's turning complete\nI don't think it's turning complete because<02:12:21.520> the<02:12:21.679> bite<02:12:22.000> code<02:12:22.159> can't<02:12:22.400> jump\nbecause the bite code can't jump\nbecause the bite code can't jump backwards.<02:12:23.280> But<02:12:23.360> it's<02:12:23.520> but<02:12:23.760> point<02:12:24.000> point\nbackwards. But it's but point point\nbackwards. But it's but point point being<02:12:24.400> it's<02:12:24.560> like<02:12:24.639> a<02:12:24.719> pro<02:12:24.960> a<02:12:25.040> little<02:12:25.199> mini\nbeing it's like a pro a little mini\nbeing it's like a pro a little mini program.<02:12:26.239> And<02:12:26.400> so<02:12:26.560> you<02:12:26.719> can<02:12:26.880> do<02:12:26.960> a<02:12:27.119> little<02:12:27.199> bit\nprogram. And so you can do a little bit\nprogram. And so you can do a little bit of<02:12:27.440> that<02:12:27.520> with<02:12:27.599> the<02:12:27.760> type<02:12:27.920> views<02:12:28.239> but<02:12:28.400> really\nof that with the type views but really\nof that with the type views but really at<02:12:28.719> the<02:12:28.880> limit<02:12:29.119> what<02:12:29.280> you'd<02:12:29.520> want<02:12:30.079> and<02:12:30.320> what<02:12:30.560> I\nat the limit what you'd want and what I\nat the limit what you'd want and what I hope<02:12:31.040> to<02:12:31.360> eventually<02:12:31.840> support<02:12:32.800> is<02:12:33.119> like<02:12:33.440> no\nhope to eventually support is like no\nhope to eventually support is like no like<02:12:34.239> here's<02:12:34.560> my<02:12:34.800> strct<02:12:35.440> and<02:12:35.679> it's<02:12:35.920> like<02:12:36.079> a\nlike here's my strct and it's like a\nlike here's my strct and it's like a complicated<02:12:36.880> entity<02:12:37.199> or<02:12:37.520> node<02:12:37.760> or<02:12:38.000> whatever.\ncomplicated entity or node or whatever.\ncomplicated entity or node or whatever. It's<02:12:38.639> like,<02:12:38.800> and<02:12:39.040> here's<02:12:39.360> the<02:12:39.520> debug\nIt's like, and here's the debug\nIt's like, and here's the debug visualizer<02:12:40.400> path<02:12:40.639> like<02:12:40.800> underneath<02:12:41.119> it.<02:12:41.280> And\nvisualizer path like underneath it. And\nvisualizer path like underneath it. And then<02:12:41.520> the<02:12:41.599> debugger<02:12:42.000> should<02:12:42.079> just<02:12:42.239> be<02:12:42.320> able<02:12:42.400> to\nthen the debugger should just be able to\nthen the debugger should just be able to call<02:12:42.719> that<02:12:42.880> and<02:12:43.119> then<02:12:43.280> fill<02:12:43.440> out<02:12:43.599> a<02:12:43.760> tab.<02:12:44.560> So\ncall that and then fill out a tab. So\ncall that and then fill out a tab. So that's<02:12:45.040> what<02:12:45.280> I<02:12:45.440> want<02:12:45.599> to<02:12:45.840> do.\nthat's what I want to do.\nthat's what I want to do. Yeah.\nYeah.\nYeah. >> All right.<02:12:49.119> I<02:12:49.520> think<02:12:49.679> we're<02:12:49.920> out<02:12:50.159> of<02:12:50.320> time.<02:12:51.199> So\n>> All right. I think we're out of time. So\n>> All right. I think we're out of time. So thank<02:12:52.320> you<02:12:52.560> Ryan<02:12:52.960> again.<02:12:53.199> Thank<02:12:53.360> you<02:12:53.679> much.\nthank you Ryan again. Thank you much.\nthank you Ryan again. Thank you much. Give<02:12:53.920> it<02:12:54.000> up<02:12:54.159> for<02:12:54.239> Ryan<02:12:54.560> once<02:12:54.800> more.\nGive it up for Ryan once more.\nGive it up for Ryan once more. >> Thanks<02:12:55.599> everyone.\n>> Thanks<02:12:59.199> man.<02:12:59.760> Appreciate<02:13:00.159> it.", + "fetched_at": "2026-06-29T15:02:04.930463+00:00" +} \ No newline at end of file diff --git a/docs/transcripts/rcJwvx2CTZY_ryan_fleury_raddbg_codebase_intro.json b/docs/transcripts/rcJwvx2CTZY_ryan_fleury_raddbg_codebase_intro.json new file mode 100644 index 00000000..505a1733 --- /dev/null +++ b/docs/transcripts/rcJwvx2CTZY_ryan_fleury_raddbg_codebase_intro.json @@ -0,0 +1,15022 @@ +{ + "video_id": "rcJwvx2CTZY", + "segments": [ + { + "start": 0.4, + "duration": 0.0, + "text": "For<00:00:00.520> everybody<00:00:00.960> who<00:00:01.120> is<00:00:01.240> joining,<00:00:02.000> we<00:00:02.200> are" + }, + { + "start": 2.31, + "duration": 0.0, + "text": "For everybody who is joining, we are" + }, + { + "start": 2.32, + "duration": 0.0, + "text": "For everybody who is joining, we are gathered<00:00:02.760> here<00:00:03.000> today<00:00:03.760> for<00:00:04.040> Ryan<00:00:04.800> to<00:00:04.960> show<00:00:05.200> us" + }, + { + "start": 5.71, + "duration": 0.0, + "text": "gathered here today for Ryan to show us" + }, + { + "start": 5.72, + "duration": 0.0, + "text": "gathered here today for Ryan to show us radare2<00:00:06.120> debugger<00:00:06.440> code<00:00:06.720> base." + }, + { + "start": 7.99, + "duration": 0.0, + "text": "radare2 debugger code base." + }, + { + "start": 8.0, + "duration": 0.0, + "text": "radare2 debugger code base. Hello<00:00:08.200> Ryan,<00:00:08.760> how<00:00:08.880> are<00:00:08.960> you<00:00:09.000> doing?" + }, + { + "start": 9.51, + "duration": 0.0, + "text": "Hello Ryan, how are you doing?" + }, + { + "start": 9.52, + "duration": 0.0, + "text": "Hello Ryan, how are you doing? >> Hello.<00:00:10.400> Good,<00:00:10.640> how<00:00:10.760> are<00:00:10.840> you?" + }, + { + "start": 11.67, + "duration": 0.0, + "text": ">> Hello. Good, how are you?" + }, + { + "start": 11.68, + "duration": 0.0, + "text": ">> Hello. Good, how are you? >> Great." + }, + { + "start": 12.87, + "duration": 0.0, + "text": ">> Great." + }, + { + "start": 12.88, + "duration": 0.0, + "text": ">> Great. And<00:00:13.720> after<00:00:13.960> this<00:00:14.160> a<00:00:14.200> little<00:00:14.400> bit<00:00:14.600> awkward" + }, + { + "start": 14.99, + "duration": 0.0, + "text": "And after this a little bit awkward" + }, + { + "start": 15.0, + "duration": 0.0, + "text": "And after this a little bit awkward introduction<00:00:15.920> interchange," + }, + { + "start": 17.19, + "duration": 0.0, + "text": "introduction interchange," + }, + { + "start": 17.2, + "duration": 0.0, + "text": "introduction interchange, uh<00:00:17.600> Ryan<00:00:18.600> will<00:00:18.840> first<00:00:19.280> start<00:00:19.760> with<00:00:19.960> showing<00:00:20.280> us" + }, + { + "start": 20.55, + "duration": 0.0, + "text": "uh Ryan will first start with showing us" + }, + { + "start": 20.56, + "duration": 0.0, + "text": "uh Ryan will first start with showing us how<00:00:20.880> radare2<00:00:21.200> debugger<00:00:21.520> works<00:00:22.000> in<00:00:22.200> general<00:00:22.960> in" + }, + { + "start": 23.19, + "duration": 0.0, + "text": "how radare2 debugger works in general in" + }, + { + "start": 23.2, + "duration": 0.0, + "text": "how radare2 debugger works in general in terms<00:00:23.440> of<00:00:23.640> what's<00:00:23.800> the<00:00:24.160> product<00:00:25.240> how<00:00:25.480> the" + }, + { + "start": 25.67, + "duration": 0.0, + "text": "terms of what's the product how the" + }, + { + "start": 25.68, + "duration": 0.0, + "text": "terms of what's the product how the users<00:00:26.280> could<00:00:26.640> use<00:00:27.000> radare2<00:00:27.320> debugger<00:00:28.040> and" + }, + { + "start": 28.15, + "duration": 0.0, + "text": "users could use radare2 debugger and" + }, + { + "start": 28.16, + "duration": 0.0, + "text": "users could use radare2 debugger and then<00:00:28.320> we're<00:00:28.400> going<00:00:28.520> to<00:00:28.600> dive<00:00:28.840> in<00:00:29.000> into<00:00:29.400> source" + }, + { + "start": 29.71, + "duration": 0.0, + "text": "then we're going to dive in into source" + }, + { + "start": 29.72, + "duration": 0.0, + "text": "then we're going to dive in into source code." + }, + { + "start": 30.19, + "duration": 0.0, + "text": "code." + }, + { + "start": 30.2, + "duration": 0.0, + "text": "code. >> So,<00:00:30.960> unfortunately<00:00:31.440> I<00:00:31.480> can't<00:00:31.720> show<00:00:32.240> what<00:00:32.400> it's" + }, + { + "start": 32.55, + "duration": 0.0, + "text": ">> So, unfortunately I can't show what it's" + }, + { + "start": 32.56, + "duration": 0.0, + "text": ">> So, unfortunately I can't show what it's like<00:00:32.759> to<00:00:32.960> get<00:00:33.360> the<00:00:33.440> debugger" + }, + { + "start": 35.11, + "duration": 0.0, + "text": "like to get the debugger" + }, + { + "start": 35.12, + "duration": 0.0, + "text": "like to get the debugger um<00:00:35.400> because<00:00:36.080> I<00:00:36.280> can<00:00:36.440> only<00:00:36.680> share<00:00:37.040> share<00:00:37.320> the" + }, + { + "start": 37.39, + "duration": 0.0, + "text": "um because I can only share share the" + }, + { + "start": 37.4, + "duration": 0.0, + "text": "um because I can only share share the debugger<00:00:37.720> itself,<00:00:38.080> but<00:00:38.200> I<00:00:38.240> mean<00:00:38.400> it's<00:00:38.520> very" + }, + { + "start": 38.75, + "duration": 0.0, + "text": "debugger itself, but I mean it's very" + }, + { + "start": 38.76, + "duration": 0.0, + "text": "debugger itself, but I mean it's very straightforward.<00:00:39.320> Like<00:00:39.480> you<00:00:39.600> go<00:00:39.800> to<00:00:39.960> the" + }, + { + "start": 40.15, + "duration": 0.0, + "text": "straightforward. Like you go to the" + }, + { + "start": 40.16, + "duration": 0.0, + "text": "straightforward. Like you go to the debugger<00:00:41.160> GitHub<00:00:41.480> page,<00:00:42.120> you<00:00:42.240> click<00:00:42.480> on<00:00:42.600> the" + }, + { + "start": 42.67, + "duration": 0.0, + "text": "debugger GitHub page, you click on the" + }, + { + "start": 42.68, + "duration": 0.0, + "text": "debugger GitHub page, you click on the releases<00:00:43.320> section,<00:00:44.080> and<00:00:44.200> then<00:00:44.280> you<00:00:44.480> get" + }, + { + "start": 44.87, + "duration": 0.0, + "text": "releases section, and then you get" + }, + { + "start": 44.88, + "duration": 0.0, + "text": "releases section, and then you get radare2<00:00:45.400> .exe,<00:00:46.200> and<00:00:46.280> that's<00:00:46.480> it.<00:00:46.640> And<00:00:46.720> then" + }, + { + "start": 46.79, + "duration": 0.0, + "text": "radare2 .exe, and that's it. And then" + }, + { + "start": 46.8, + "duration": 0.0, + "text": "radare2 .exe, and that's it. And then you<00:00:46.920> run<00:00:47.080> that.<00:00:47.520> And<00:00:47.600> then<00:00:47.720> this<00:00:47.880> is<00:00:48.000> what<00:00:48.120> will" + }, + { + "start": 48.19, + "duration": 0.0, + "text": "you run that. And then this is what will" + }, + { + "start": 48.2, + "duration": 0.0, + "text": "you run that. And then this is what will pop<00:00:48.400> up<00:00:48.760> or<00:00:48.840> something<00:00:49.120> like<00:00:49.280> this." + }, + { + "start": 50.91, + "duration": 0.0, + "text": "pop up or something like this." + }, + { + "start": 50.92, + "duration": 0.0, + "text": "pop up or something like this. Um" + }, + { + "start": 52.87, + "duration": 0.0, + "text": "Um" + }, + { + "start": 52.88, + "duration": 0.0, + "text": "Um so<00:00:53.055> [clears throat]" + }, + { + "start": 54.15, + "duration": 0.0, + "text": "so [clears throat]" + }, + { + "start": 54.16, + "duration": 0.0, + "text": "so [clears throat] anyways,<00:00:54.600> if<00:00:54.720> you<00:00:54.880> open<00:00:55.120> the<00:00:55.200> program<00:00:55.560> like" + }, + { + "start": 55.71, + "duration": 0.0, + "text": "anyways, if you open the program like" + }, + { + "start": 55.72, + "duration": 0.0, + "text": "anyways, if you open the program like this,<00:00:55.960> so<00:00:56.120> there's<00:00:56.400> there's<00:00:56.640> one<00:00:56.840> thing<00:00:57.000> you" + }, + { + "start": 57.11, + "duration": 0.0, + "text": "this, so there's there's one thing you" + }, + { + "start": 57.12, + "duration": 0.0, + "text": "this, so there's there's one thing you can<00:00:57.240> do<00:00:57.640> and<00:00:57.760> because<00:00:58.040> I<00:00:58.120> can't<00:00:58.760> because<00:00:59.000> I" + }, + { + "start": 59.03, + "duration": 0.0, + "text": "can do and because I can't because I" + }, + { + "start": 59.04, + "duration": 0.0, + "text": "can do and because I can't because I can't<00:00:59.360> share<00:00:59.720> my<00:01:00.560> my<00:01:00.720> screen,<00:01:01.000> I<00:01:01.040> can't<00:01:01.320> show" + }, + { + "start": 61.55, + "duration": 0.0, + "text": "can't share my my screen, I can't show" + }, + { + "start": 61.56, + "duration": 0.0, + "text": "can't share my my screen, I can't show what<00:01:01.680> the<00:01:01.760> command<00:01:02.120> line<00:01:02.760> usage<00:01:03.160> looks<00:01:03.320> like." + }, + { + "start": 64.15, + "duration": 0.0, + "text": "what the command line usage looks like." + }, + { + "start": 64.16, + "duration": 0.0, + "text": "what the command line usage looks like. But<00:01:04.280> basically<00:01:04.680> there's<00:01:04.879> one<00:01:05.080> thing<00:01:05.239> you<00:01:05.320> can" + }, + { + "start": 65.47, + "duration": 0.0, + "text": "But basically there's one thing you can" + }, + { + "start": 65.48, + "duration": 0.0, + "text": "But basically there's one thing you can do,<00:01:06.160> let<00:01:06.280> me<00:01:06.320> just<00:01:06.480> open<00:01:06.640> a<00:01:06.680> watch<00:01:06.960> window<00:01:07.200> and" + }, + { + "start": 67.27, + "duration": 0.0, + "text": "do, let me just open a watch window and" + }, + { + "start": 67.28, + "duration": 0.0, + "text": "do, let me just open a watch window and then<00:01:07.400> I<00:01:07.440> can<00:01:07.960> uh" + }, + { + "start": 68.51, + "duration": 0.0, + "text": "then I can uh" + }, + { + "start": 68.52, + "duration": 0.0, + "text": "then I can uh put<00:01:08.680> a<00:01:08.720> little<00:01:08.880> string<00:01:09.120> in<00:01:09.200> here.<00:01:09.400> So,<00:01:10.000> um" + }, + { + "start": 70.63, + "duration": 0.0, + "text": "put a little string in here. So, um" + }, + { + "start": 70.64, + "duration": 0.0, + "text": "put a little string in here. So, um actually<00:01:10.880> let<00:01:11.000> me<00:01:11.160> unload<00:01:11.600> a<00:01:11.640> bunch<00:01:11.840> of<00:01:11.920> debug" + }, + { + "start": 72.23, + "duration": 0.0, + "text": "actually let me unload a bunch of debug" + }, + { + "start": 72.24, + "duration": 0.0, + "text": "actually let me unload a bunch of debug info<00:01:12.920> that<00:01:13.000> I<00:01:13.040> don't<00:01:13.240> need<00:01:13.360> loaded<00:01:13.640> right<00:01:13.800> now." + }, + { + "start": 73.95, + "duration": 0.0, + "text": "info that I don't need loaded right now." + }, + { + "start": 73.96, + "duration": 0.0, + "text": "info that I don't need loaded right now. So," + }, + { + "start": 74.66, + "duration": 0.0, + "text": "So," + }, + { + "start": 74.67, + "duration": 0.0, + "text": "So, >> [clears throat]" + }, + { + "start": 75.71, + "duration": 0.0, + "text": ">> [clears throat]" + }, + { + "start": 75.72, + "duration": 0.0, + "text": ">> [clears throat] >> on<00:01:15.960> command<00:01:16.240> line<00:01:16.440> what<00:01:16.560> you<00:01:16.640> can<00:01:16.720> do<00:01:16.920> is<00:01:17.000> like" + }, + { + "start": 77.19, + "duration": 0.0, + "text": ">> on command line what you can do is like" + }, + { + "start": 77.2, + "duration": 0.0, + "text": ">> on command line what you can do is like you<00:01:17.440> you<00:01:17.520> can<00:01:17.640> run<00:01:18.480> radare2<00:01:19.160> and<00:01:19.280> then<00:01:19.920> um<00:01:20.360> so" + }, + { + "start": 80.51, + "duration": 0.0, + "text": "you you can run radare2 and then um so" + }, + { + "start": 80.52, + "duration": 0.0, + "text": "you you can run radare2 and then um so if<00:01:20.680> you're<00:01:20.800> running<00:01:21.120> a<00:01:21.200> program<00:01:21.760> that<00:01:21.920> you're" + }, + { + "start": 82.87, + "duration": 0.0, + "text": "if you're running a program that you're" + }, + { + "start": 82.88, + "duration": 0.0, + "text": "if you're running a program that you're that<00:01:23.000> you're<00:01:23.360> actively<00:01:23.720> developing,<00:01:24.200> you" + }, + { + "start": 84.31, + "duration": 0.0, + "text": "that you're actively developing, you" + }, + { + "start": 84.32, + "duration": 0.0, + "text": "that you're actively developing, you might<00:01:24.520> run<00:01:24.720> something<00:01:25.000> like<00:01:25.200> foo.exe." + }, + { + "start": 87.31, + "duration": 0.0, + "text": "might run something like foo.exe." + }, + { + "start": 87.32, + "duration": 0.0, + "text": "might run something like foo.exe. Um<00:01:28.040> and<00:01:28.160> then<00:01:28.280> you<00:01:28.360> might<00:01:28.600> say<00:01:28.800> like<00:01:29.080> {dash}<00:01:29.720> a" + }, + { + "start": 89.99, + "duration": 0.0, + "text": "Um and then you might say like {dash} a" + }, + { + "start": 90.0, + "duration": 0.0, + "text": "Um and then you might say like {dash} a {dash}<00:01:30.320> b<00:01:31.200> uh" + }, + { + "start": 91.75, + "duration": 0.0, + "text": "{dash} b uh" + }, + { + "start": 91.76, + "duration": 0.0, + "text": "{dash} b uh {dash}<00:01:32.600> some<00:01:33.000> other<00:01:33.360> option<00:01:34.480> equals" + }, + { + "start": 94.91, + "duration": 0.0, + "text": "{dash} some other option equals" + }, + { + "start": 94.92, + "duration": 0.0, + "text": "{dash} some other option equals whatever,<00:01:35.560> like<00:01:35.680> something<00:01:35.880> like<00:01:36.000> this." + }, + { + "start": 96.15, + "duration": 0.0, + "text": "whatever, like something like this." + }, + { + "start": 96.16, + "duration": 0.0, + "text": "whatever, like something like this. Whatever<00:01:36.360> your<00:01:36.440> command<00:01:36.720> line<00:01:36.880> arguments<00:01:37.240> are" + }, + { + "start": 97.35, + "duration": 0.0, + "text": "Whatever your command line arguments are" + }, + { + "start": 97.36, + "duration": 0.0, + "text": "Whatever your command line arguments are if<00:01:37.480> you<00:01:37.600> have<00:01:37.760> them." + }, + { + "start": 99.15, + "duration": 0.0, + "text": "if you have them." + }, + { + "start": 99.16, + "duration": 0.0, + "text": "if you have them. To<00:01:39.360> run<00:01:39.520> this<00:01:39.920> within<00:01:40.200> the<00:01:40.280> context<00:01:40.640> of<00:01:40.720> the" + }, + { + "start": 100.79, + "duration": 0.0, + "text": "To run this within the context of the" + }, + { + "start": 100.8, + "duration": 0.0, + "text": "To run this within the context of the debugger,<00:01:41.200> all<00:01:41.360> you<00:01:41.440> have<00:01:41.560> to<00:01:41.640> do<00:01:42.000> is<00:01:42.280> prefix" + }, + { + "start": 102.63, + "duration": 0.0, + "text": "debugger, all you have to do is prefix" + }, + { + "start": 102.64, + "duration": 0.0, + "text": "debugger, all you have to do is prefix that<00:01:42.760> with<00:01:42.920> radare2" + }, + { + "start": 103.83, + "duration": 0.0, + "text": "that with radare2" + }, + { + "start": 103.84, + "duration": 0.0, + "text": "that with radare2 as<00:01:43.960> long<00:01:44.160> as<00:01:44.280> you<00:01:44.320> can<00:01:44.480> access<00:01:45.360> this<00:01:45.600> in<00:01:45.720> your" + }, + { + "start": 105.83, + "duration": 0.0, + "text": "as long as you can access this in your" + }, + { + "start": 105.84, + "duration": 0.0, + "text": "as long as you can access this in your path.<00:01:46.120> Like<00:01:46.240> you<00:01:46.320> put<00:01:46.480> it,<00:01:46.920> you<00:01:47.000> know,<00:01:47.600> when" + }, + { + "start": 107.79, + "duration": 0.0, + "text": "path. Like you put it, you know, when" + }, + { + "start": 107.8, + "duration": 0.0, + "text": "path. Like you put it, you know, when you<00:01:48.080> get<00:01:48.280> the<00:01:48.360> executable,<00:01:48.840> you<00:01:48.920> put<00:01:49.080> it" + }, + { + "start": 109.15, + "duration": 0.0, + "text": "you get the executable, you put it" + }, + { + "start": 109.16, + "duration": 0.0, + "text": "you get the executable, you put it wherever<00:01:49.360> you<00:01:49.400> can<00:01:49.520> find<00:01:49.760> it<00:01:49.840> in<00:01:49.880> your<00:01:50.000> path<00:01:50.280> if" + }, + { + "start": 110.39, + "duration": 0.0, + "text": "wherever you can find it in your path if" + }, + { + "start": 110.4, + "duration": 0.0, + "text": "wherever you can find it in your path if you<00:01:50.480> want<00:01:50.600> to<00:01:50.680> run<00:01:50.760> it<00:01:50.840> from<00:01:50.960> command<00:01:51.280> line." + }, + { + "start": 112.39, + "duration": 0.0, + "text": "you want to run it from command line." + }, + { + "start": 112.4, + "duration": 0.0, + "text": "you want to run it from command line. Um" + }, + { + "start": 113.91, + "duration": 0.0, + "text": "Um" + }, + { + "start": 113.92, + "duration": 0.0, + "text": "Um and<00:01:54.040> then<00:01:54.120> if<00:01:54.240> you<00:01:54.400> open<00:01:54.920> if<00:01:55.000> If<00:01:55.080> run<00:01:55.280> this," + }, + { + "start": 116.67, + "duration": 0.0, + "text": "and then if you open if If run this," + }, + { + "start": 116.68, + "duration": 0.0, + "text": "and then if you open if If run this, it'll<00:01:56.920> open<00:01:57.160> the<00:01:57.240> debugger." + }, + { + "start": 118.39, + "duration": 0.0, + "text": "it'll open the debugger." + }, + { + "start": 118.4, + "duration": 0.0, + "text": "it'll open the debugger. And<00:01:58.720> what<00:01:58.840> it'll<00:01:59.040> do<00:01:59.240> is<00:01:59.360> it'll<00:01:59.520> pre-fill" + }, + { + "start": 121.23, + "duration": 0.0, + "text": "And what it'll do is it'll pre-fill" + }, + { + "start": 121.24, + "duration": 0.0, + "text": "And what it'll do is it'll pre-fill um" + }, + { + "start": 122.07, + "duration": 0.0, + "text": "um" + }, + { + "start": 122.08, + "duration": 0.0, + "text": "um it'll<00:02:02.280> create<00:02:02.520> a<00:02:02.560> target,<00:02:03.040> a<00:02:03.080> temporary" + }, + { + "start": 123.55, + "duration": 0.0, + "text": "it'll create a target, a temporary" + }, + { + "start": 123.56, + "duration": 0.0, + "text": "it'll create a target, a temporary target<00:02:03.880> for<00:02:04.360> for<00:02:04.680> the<00:02:05.240> executable<00:02:05.760> you<00:02:05.840> just" + }, + { + "start": 125.99, + "duration": 0.0, + "text": "target for for the executable you just" + }, + { + "start": 126.0, + "duration": 0.0, + "text": "target for for the executable you just passed." + }, + { + "start": 127.55, + "duration": 0.0, + "text": "passed." + }, + { + "start": 127.56, + "duration": 0.0, + "text": "passed. So,<00:02:07.720> targets<00:02:08.080> are<00:02:08.160> basically" + }, + { + "start": 129.469, + "duration": 0.0, + "text": "So, targets are basically" + }, + { + "start": 129.479, + "duration": 0.0, + "text": "So, targets are basically um<00:02:09.960> how<00:02:10.160> the<00:02:10.280> debugger<00:02:10.640> knows<00:02:11.760> uh<00:02:12.000> how<00:02:12.320> to" + }, + { + "start": 132.59, + "duration": 0.0, + "text": "um how the debugger knows uh how to" + }, + { + "start": 132.6, + "duration": 0.0, + "text": "um how the debugger knows uh how to launch<00:02:13.080> an<00:02:13.200> executable.<00:02:14.240> Um" + }, + { + "start": 134.91, + "duration": 0.0, + "text": "launch an executable. Um" + }, + { + "start": 134.92, + "duration": 0.0, + "text": "launch an executable. Um so,<00:02:15.160> I've<00:02:15.280> got<00:02:15.400> a<00:02:15.440> bunch<00:02:15.640> of<00:02:15.720> options<00:02:16.080> here." + }, + { + "start": 136.75, + "duration": 0.0, + "text": "so, I've got a bunch of options here." + }, + { + "start": 136.76, + "duration": 0.0, + "text": "so, I've got a bunch of options here. I've<00:02:16.880> got<00:02:17.080> this<00:02:17.360> for<00:02:17.480> example,<00:02:17.840> this<00:02:18.000> mule" + }, + { + "start": 138.31, + "duration": 0.0, + "text": "I've got this for example, this mule" + }, + { + "start": 138.32, + "duration": 0.0, + "text": "I've got this for example, this mule main.<00:02:18.640> This<00:02:18.800> is<00:02:18.959> what<00:02:19.280> something<00:02:19.560> we<00:02:19.640> use<00:02:19.800> for" + }, + { + "start": 139.91, + "duration": 0.0, + "text": "main. This is what something we use for" + }, + { + "start": 139.92, + "duration": 0.0, + "text": "main. This is what something we use for testing<00:02:20.240> in<00:02:20.360> the<00:02:20.400> debugger" + }, + { + "start": 141.43, + "duration": 0.0, + "text": "testing in the debugger" + }, + { + "start": 141.44, + "duration": 0.0, + "text": "testing in the debugger um<00:02:21.800> project.<00:02:22.959> And<00:02:23.320> you<00:02:23.400> can<00:02:23.520> see<00:02:23.600> it's<00:02:23.720> got<00:02:23.840> a" + }, + { + "start": 143.87, + "duration": 0.0, + "text": "um project. And you can see it's got a" + }, + { + "start": 143.88, + "duration": 0.0, + "text": "um project. And you can see it's got a bunch<00:02:24.040> of<00:02:24.120> options<00:02:24.480> here.<00:02:25.080> Um" + }, + { + "start": 146.11, + "duration": 0.0, + "text": "bunch of options here. Um" + }, + { + "start": 146.12, + "duration": 0.0, + "text": "bunch of options here. Um label<00:02:26.680> is<00:02:27.080> uh" + }, + { + "start": 147.63, + "duration": 0.0, + "text": "label is uh" + }, + { + "start": 147.64, + "duration": 0.0, + "text": "label is uh not<00:02:27.920> super<00:02:28.160> important.<00:02:28.440> It's<00:02:28.640> it's<00:02:29.360> um" + }, + { + "start": 150.07, + "duration": 0.0, + "text": "not super important. It's it's um" + }, + { + "start": 150.08, + "duration": 0.0, + "text": "not super important. It's it's um it's<00:02:30.200> just<00:02:30.320> something<00:02:30.520> you<00:02:30.600> can<00:02:30.720> tag<00:02:31.360> this" + }, + { + "start": 151.83, + "duration": 0.0, + "text": "it's just something you can tag this" + }, + { + "start": 151.84, + "duration": 0.0, + "text": "it's just something you can tag this target<00:02:32.200> with.<00:02:32.440> But" + }, + { + "start": 153.47, + "duration": 0.0, + "text": "target with. But" + }, + { + "start": 153.48, + "duration": 0.0, + "text": "target with. But um<00:02:34.000> you<00:02:34.120> supply<00:02:34.400> the<00:02:34.520> executable<00:02:35.000> path.<00:02:35.520> You" + }, + { + "start": 155.59, + "duration": 0.0, + "text": "um you supply the executable path. You" + }, + { + "start": 155.6, + "duration": 0.0, + "text": "um you supply the executable path. You can<00:02:35.720> put<00:02:35.840> in<00:02:36.000> arguments<00:02:36.480> here.<00:02:36.720> So,<00:02:36.800> you<00:02:36.840> can" + }, + { + "start": 156.949, + "duration": 0.0, + "text": "can put in arguments here. So, you can" + }, + { + "start": 156.959, + "duration": 0.0, + "text": "can put in arguments here. So, you can do<00:02:37.040> like<00:02:37.200> {dash}foo<00:02:37.680> {dash}bar<00:02:38.240> whatever," + }, + { + "start": 158.79, + "duration": 0.0, + "text": "do like {dash}foo {dash}bar whatever," + }, + { + "start": 158.8, + "duration": 0.0, + "text": "do like {dash}foo {dash}bar whatever, whatever<00:02:39.040> you<00:02:39.120> want<00:02:39.280> it<00:02:39.360> to<00:02:39.440> do.<00:02:39.959> And<00:02:40.040> the" + }, + { + "start": 160.11, + "duration": 0.0, + "text": "whatever you want it to do. And the" + }, + { + "start": 160.12, + "duration": 0.0, + "text": "whatever you want it to do. And the arguments<00:02:40.480> you<00:02:40.560> put<00:02:40.720> those<00:02:40.920> here." + }, + { + "start": 162.15, + "duration": 0.0, + "text": "arguments you put those here." + }, + { + "start": 162.16, + "duration": 0.0, + "text": "arguments you put those here. Whatever<00:02:42.480> working<00:02:42.840> directory<00:02:43.240> you<00:02:43.360> want<00:02:43.560> it" + }, + { + "start": 163.63, + "duration": 0.0, + "text": "Whatever working directory you want it" + }, + { + "start": 163.64, + "duration": 0.0, + "text": "Whatever working directory you want it to<00:02:43.760> start<00:02:44.120> the<00:02:44.240> executable<00:02:45.160> like<00:02:45.360> within<00:02:45.600> the" + }, + { + "start": 165.67, + "duration": 0.0, + "text": "to start the executable like within the" + }, + { + "start": 165.68, + "duration": 0.0, + "text": "to start the executable like within the context<00:02:46.160> of.<00:02:46.800> And<00:02:46.880> then<00:02:47.000> you<00:02:47.080> can<00:02:47.160> also" + }, + { + "start": 167.35, + "duration": 0.0, + "text": "context of. And then you can also" + }, + { + "start": 167.36, + "duration": 0.0, + "text": "context of. And then you can also specify<00:02:47.680> things<00:02:47.920> like<00:02:48.040> a<00:02:48.120> custom<00:02:48.520> entry" + }, + { + "start": 168.79, + "duration": 0.0, + "text": "specify things like a custom entry" + }, + { + "start": 168.8, + "duration": 0.0, + "text": "specify things like a custom entry point.<00:02:49.800> Um<00:02:50.560> a<00:02:50.680> file<00:02:51.040> path<00:02:51.360> for<00:02:51.480> standard<00:02:51.880> out," + }, + { + "start": 172.11, + "duration": 0.0, + "text": "point. Um a file path for standard out," + }, + { + "start": 172.12, + "duration": 0.0, + "text": "point. Um a file path for standard out, standard<00:02:52.640> error,<00:02:52.959> and<00:02:53.120> standard<00:02:53.520> in.<00:02:53.920> You<00:02:54.000> can" + }, + { + "start": 174.15, + "duration": 0.0, + "text": "standard error, and standard in. You can" + }, + { + "start": 174.16, + "duration": 0.0, + "text": "standard error, and standard in. You can put<00:02:54.320> file<00:02:54.520> paths<00:02:54.760> here<00:02:55.000> and<00:02:55.120> then<00:02:55.240> it'll<00:02:55.720> use" + }, + { + "start": 175.91, + "duration": 0.0, + "text": "put file paths here and then it'll use" + }, + { + "start": 175.92, + "duration": 0.0, + "text": "put file paths here and then it'll use those<00:02:56.200> instead<00:02:56.520> of<00:02:57.120> um" + }, + { + "start": 177.79, + "duration": 0.0, + "text": "those instead of um" + }, + { + "start": 177.8, + "duration": 0.0, + "text": "those instead of um instead<00:02:58.120> of<00:02:58.160> the<00:02:58.280> defaults.<00:02:59.280> You<00:02:59.360> can<00:02:59.480> add" + }, + { + "start": 179.59, + "duration": 0.0, + "text": "instead of the defaults. You can add" + }, + { + "start": 179.6, + "duration": 0.0, + "text": "instead of the defaults. You can add custom<00:02:59.920> environment<00:03:00.400> strings.<00:03:01.200> And<00:03:01.320> then<00:03:01.480> you" + }, + { + "start": 181.55, + "duration": 0.0, + "text": "custom environment strings. And then you" + }, + { + "start": 181.56, + "duration": 0.0, + "text": "custom environment strings. And then you can<00:03:01.680> also" + }, + { + "start": 182.87, + "duration": 0.0, + "text": "can also" + }, + { + "start": 182.88, + "duration": 0.0, + "text": "can also enable<00:03:03.200> or<00:03:03.280> disable<00:03:03.920> debugging<00:03:04.280> of<00:03:04.400> sub" + }, + { + "start": 184.63, + "duration": 0.0, + "text": "enable or disable debugging of sub" + }, + { + "start": 184.64, + "duration": 0.0, + "text": "enable or disable debugging of sub processes.<00:03:05.280> Meaning<00:03:05.519> if<00:03:05.680> this<00:03:05.959> executable" + }, + { + "start": 186.47, + "duration": 0.0, + "text": "processes. Meaning if this executable" + }, + { + "start": 186.48, + "duration": 0.0, + "text": "processes. Meaning if this executable launched<00:03:06.840> another<00:03:07.160> process,<00:03:08.120> would<00:03:08.280> the" + }, + { + "start": 188.35, + "duration": 0.0, + "text": "launched another process, would the" + }, + { + "start": 188.36, + "duration": 0.0, + "text": "launched another process, would the debugger<00:03:08.720> automatically<00:03:09.160> attach<00:03:09.480> to<00:03:09.640> it<00:03:09.840> or" + }, + { + "start": 189.949, + "duration": 0.0, + "text": "debugger automatically attach to it or" + }, + { + "start": 189.959, + "duration": 0.0, + "text": "debugger automatically attach to it or not?<00:03:10.800> Um<00:03:10.880> sometimes<00:03:11.280> you<00:03:11.320> want<00:03:11.480> one," + }, + { + "start": 191.67, + "duration": 0.0, + "text": "not? Um sometimes you want one," + }, + { + "start": 191.68, + "duration": 0.0, + "text": "not? Um sometimes you want one, sometimes<00:03:12.000> you<00:03:12.080> want<00:03:12.880> uh" + }, + { + "start": 193.47, + "duration": 0.0, + "text": "sometimes you want uh" + }, + { + "start": 193.48, + "duration": 0.0, + "text": "sometimes you want uh the<00:03:13.600> other.<00:03:14.200> So,<00:03:14.400> that's<00:03:14.640> why<00:03:14.959> it's<00:03:15.120> this<00:03:15.519> uh" + }, + { + "start": 195.59, + "duration": 0.0, + "text": "the other. So, that's why it's this uh" + }, + { + "start": 195.6, + "duration": 0.0, + "text": "the other. So, that's why it's this uh per<00:03:15.720> target<00:03:16.000> option<00:03:16.280> here." + }, + { + "start": 197.55, + "duration": 0.0, + "text": "per target option here." + }, + { + "start": 197.56, + "duration": 0.0, + "text": "per target option here. >> Hi<00:03:17.680> everyone.<00:03:18.440> Let<00:03:18.720> me<00:03:18.800> take<00:03:19.040> a<00:03:19.080> break<00:03:19.360> to" + }, + { + "start": 199.47, + "duration": 0.0, + "text": ">> Hi everyone. Let me take a break to" + }, + { + "start": 199.48, + "duration": 0.0, + "text": ">> Hi everyone. Let me take a break to thank<00:03:19.720> members<00:03:20.239> of<00:03:20.400> the<00:03:20.560> show<00:03:20.920> who<00:03:21.120> made<00:03:21.400> this" + }, + { + "start": 201.55, + "duration": 0.0, + "text": "thank members of the show who made this" + }, + { + "start": 201.56, + "duration": 0.0, + "text": "thank members of the show who made this conversation<00:03:22.280> possible.<00:03:23.239> Members<00:03:23.720> get" + }, + { + "start": 203.99, + "duration": 0.0, + "text": "conversation possible. Members get" + }, + { + "start": 204.0, + "duration": 0.0, + "text": "conversation possible. Members get earlier<00:03:24.360> access<00:03:24.760> to<00:03:24.880> videos<00:03:25.519> including" + }, + { + "start": 206.03, + "duration": 0.0, + "text": "earlier access to videos including" + }, + { + "start": 206.04, + "duration": 0.0, + "text": "earlier access to videos including longer<00:03:26.600> unedited<00:03:27.360> footage<00:03:27.880> from<00:03:28.160> live" + }, + { + "start": 208.39, + "duration": 0.0, + "text": "longer unedited footage from live" + }, + { + "start": 208.4, + "duration": 0.0, + "text": "longer unedited footage from live streams<00:03:29.120> as<00:03:29.400> well<00:03:29.600> as<00:03:29.760> they're<00:03:30.000> invited<00:03:30.760> to" + }, + { + "start": 210.87, + "duration": 0.0, + "text": "streams as well as they're invited to" + }, + { + "start": 210.88, + "duration": 0.0, + "text": "streams as well as they're invited to our<00:03:31.040> private<00:03:31.600> Discord<00:03:32.080> server.<00:03:32.880> If<00:03:33.080> you<00:03:33.239> want" + }, + { + "start": 213.47, + "duration": 0.0, + "text": "our private Discord server. If you want" + }, + { + "start": 213.48, + "duration": 0.0, + "text": "our private Discord server. If you want to<00:03:33.600> support<00:03:33.959> the<00:03:34.080> show,<00:03:34.400> there<00:03:34.600> is<00:03:34.800> no<00:03:35.040> better" + }, + { + "start": 215.39, + "duration": 0.0, + "text": "to support the show, there is no better" + }, + { + "start": 215.4, + "duration": 0.0, + "text": "to support the show, there is no better way<00:03:35.600> than<00:03:35.840> becoming<00:03:36.400> a<00:03:36.480> member<00:03:37.040> on<00:03:37.280> YouTube<00:03:37.800> or" + }, + { + "start": 217.99, + "duration": 0.0, + "text": "way than becoming a member on YouTube or" + }, + { + "start": 218.0, + "duration": 0.0, + "text": "way than becoming a member on YouTube or Patreon.<00:03:38.959> Thank<00:03:39.280> you<00:03:39.600> so<00:03:39.840> much." + }, + { + "start": 221.43, + "duration": 0.0, + "text": "Patreon. Thank you so much." + }, + { + "start": 221.44, + "duration": 0.0, + "text": "Patreon. Thank you so much. >> So,<00:03:41.480> anyways,<00:03:42.360> when<00:03:42.519> you<00:03:42.640> run<00:03:43.360> the<00:03:43.920> debugger" + }, + { + "start": 225.07, + "duration": 0.0, + "text": ">> So, anyways, when you run the debugger" + }, + { + "start": 225.08, + "duration": 0.0, + "text": ">> So, anyways, when you run the debugger with<00:03:45.280> that<00:03:45.440> command<00:03:45.760> line,<00:03:46.000> it'll<00:03:46.280> create<00:03:46.519> one" + }, + { + "start": 226.63, + "duration": 0.0, + "text": "with that command line, it'll create one" + }, + { + "start": 226.64, + "duration": 0.0, + "text": "with that command line, it'll create one of<00:03:46.720> these<00:03:47.120> just<00:03:47.360> for<00:03:47.600> you.<00:03:48.440> Um<00:03:48.519> it'll<00:03:48.640> be" + }, + { + "start": 228.75, + "duration": 0.0, + "text": "of these just for you. Um it'll be" + }, + { + "start": 228.76, + "duration": 0.0, + "text": "of these just for you. Um it'll be thrown<00:03:49.000> away<00:03:49.239> when<00:03:49.400> you<00:03:49.519> exit<00:03:49.800> the<00:03:49.880> debugger." + }, + { + "start": 230.229, + "duration": 0.0, + "text": "thrown away when you exit the debugger." + }, + { + "start": 230.239, + "duration": 0.0, + "text": "thrown away when you exit the debugger. So,<00:03:50.440> it<00:03:50.519> won't<00:03:51.160> uh<00:03:51.320> like<00:03:51.680> stick<00:03:51.880> around.<00:03:52.160> You" + }, + { + "start": 232.229, + "duration": 0.0, + "text": "So, it won't uh like stick around. You" + }, + { + "start": 232.239, + "duration": 0.0, + "text": "So, it won't uh like stick around. You can<00:03:52.360> run<00:03:52.960> the<00:03:53.040> debugger<00:03:53.360> that<00:03:53.520> way<00:03:53.680> every" + }, + { + "start": 233.87, + "duration": 0.0, + "text": "can run the debugger that way every" + }, + { + "start": 233.88, + "duration": 0.0, + "text": "can run the debugger that way every single<00:03:54.080> time<00:03:54.320> if<00:03:54.440> you<00:03:54.520> want<00:03:54.720> to." + }, + { + "start": 235.67, + "duration": 0.0, + "text": "single time if you want to." + }, + { + "start": 235.68, + "duration": 0.0, + "text": "single time if you want to. Um" + }, + { + "start": 236.83, + "duration": 0.0, + "text": "Um" + }, + { + "start": 236.84, + "duration": 0.0, + "text": "Um Or<00:03:57.040> you<00:03:57.120> can<00:03:57.280> create<00:03:57.480> a<00:03:57.520> target<00:03:57.840> within<00:03:58.080> the" + }, + { + "start": 238.11, + "duration": 0.0, + "text": "Or you can create a target within the" + }, + { + "start": 238.12, + "duration": 0.0, + "text": "Or you can create a target within the context<00:03:58.880> of<00:03:59.680> the<00:03:59.800> debugger's<00:04:00.240> UI.<00:04:00.560> So,<00:04:00.720> to<00:04:00.840> do" + }, + { + "start": 240.99, + "duration": 0.0, + "text": "context of the debugger's UI. So, to do" + }, + { + "start": 241.0, + "duration": 0.0, + "text": "context of the debugger's UI. So, to do that,<00:04:01.240> all<00:04:01.320> you<00:04:01.440> do<00:04:01.840> is<00:04:02.720> you<00:04:02.800> can<00:04:02.920> click<00:04:03.120> this" + }, + { + "start": 243.27, + "duration": 0.0, + "text": "that, all you do is you can click this" + }, + { + "start": 243.28, + "duration": 0.0, + "text": "that, all you do is you can click this add<00:04:03.520> target<00:04:03.840> thing.<00:04:04.160> Actually,<00:04:04.680> maybe<00:04:04.920> what<00:04:05.080> I" + }, + { + "start": 245.11, + "duration": 0.0, + "text": "add target thing. Actually, maybe what I" + }, + { + "start": 245.12, + "duration": 0.0, + "text": "add target thing. Actually, maybe what I should<00:04:05.280> do<00:04:05.560> is<00:04:05.720> show<00:04:05.920> how<00:04:06.040> the<00:04:06.160> UI<00:04:07.120> paneling" + }, + { + "start": 247.51, + "duration": 0.0, + "text": "should do is show how the UI paneling" + }, + { + "start": 247.52, + "duration": 0.0, + "text": "should do is show how the UI paneling works<00:04:07.760> first.<00:04:08.160> So,<00:04:08.320> like<00:04:09.160> um<00:04:09.560> cuz" + }, + { + "start": 250.47, + "duration": 0.0, + "text": "works first. So, like um cuz" + }, + { + "start": 250.48, + "duration": 0.0, + "text": "works first. So, like um cuz it<00:04:10.680> comes<00:04:11.000> like<00:04:11.160> preloaded<00:04:11.640> with<00:04:11.760> a<00:04:11.800> bunch<00:04:12.000> of" + }, + { + "start": 252.11, + "duration": 0.0, + "text": "it comes like preloaded with a bunch of" + }, + { + "start": 252.12, + "duration": 0.0, + "text": "it comes like preloaded with a bunch of default<00:04:12.520> layouts<00:04:12.920> or<00:04:13.000> three<00:04:13.320> default" + }, + { + "start": 253.67, + "duration": 0.0, + "text": "default layouts or three default" + }, + { + "start": 253.68, + "duration": 0.0, + "text": "default layouts or three default layouts.<00:04:14.560> And<00:04:14.680> I<00:04:14.760> can<00:04:14.880> show<00:04:15.080> people<00:04:15.400> how<00:04:15.680> to" + }, + { + "start": 256.789, + "duration": 0.0, + "text": "layouts. And I can show people how to" + }, + { + "start": 256.799, + "duration": 0.0, + "text": "layouts. And I can show people how to get<00:04:17.000> to<00:04:17.079> this<00:04:17.239> tab<00:04:17.560> if<00:04:17.640> they<00:04:17.720> don't<00:04:17.959> see<00:04:18.160> it<00:04:18.320> or" + }, + { + "start": 258.67, + "duration": 0.0, + "text": "get to this tab if they don't see it or" + }, + { + "start": 258.68, + "duration": 0.0, + "text": "get to this tab if they don't see it or or<00:04:18.799> have<00:04:19.000> it<00:04:19.079> or<00:04:19.160> something<00:04:19.400> like<00:04:19.519> that.<00:04:19.760> So," + }, + { + "start": 260.71, + "duration": 0.0, + "text": "or have it or something like that. So," + }, + { + "start": 260.72, + "duration": 0.0, + "text": "or have it or something like that. So, um<00:04:21.000> obviously<00:04:21.880> um" + }, + { + "start": 263.27, + "duration": 0.0, + "text": "um obviously um" + }, + { + "start": 263.28, + "duration": 0.0, + "text": "um obviously um uh<00:04:23.720> when<00:04:24.400> this<00:04:24.600> is<00:04:24.720> one<00:04:24.840> of<00:04:24.919> the<00:04:25.000> default" + }, + { + "start": 265.35, + "duration": 0.0, + "text": "uh when this is one of the default" + }, + { + "start": 265.36, + "duration": 0.0, + "text": "uh when this is one of the default layouts,<00:04:26.280> uh<00:04:26.680> and<00:04:26.840> I<00:04:26.919> pick<00:04:27.160> one<00:04:27.280> of<00:04:27.320> these" + }, + { + "start": 267.47, + "duration": 0.0, + "text": "layouts, uh and I pick one of these" + }, + { + "start": 267.48, + "duration": 0.0, + "text": "layouts, uh and I pick one of these depending<00:04:27.800> on<00:04:27.919> screen<00:04:28.240> size.<00:04:28.520> So,<00:04:29.080> the" + }, + { + "start": 269.19, + "duration": 0.0, + "text": "depending on screen size. So, the" + }, + { + "start": 269.2, + "duration": 0.0, + "text": "depending on screen size. So, the default<00:04:29.600> layout<00:04:29.840> is<00:04:29.960> like<00:04:30.160> this,<00:04:30.400> but<00:04:30.520> you<00:04:30.600> can" + }, + { + "start": 270.71, + "duration": 0.0, + "text": "default layout is like this, but you can" + }, + { + "start": 270.72, + "duration": 0.0, + "text": "default layout is like this, but you can see<00:04:30.840> it<00:04:30.960> doesn't<00:04:31.240> work<00:04:31.440> super<00:04:31.720> well<00:04:31.960> when<00:04:32.080> you" + }, + { + "start": 272.15, + "duration": 0.0, + "text": "see it doesn't work super well when you" + }, + { + "start": 272.16, + "duration": 0.0, + "text": "see it doesn't work super well when you have<00:04:32.320> like<00:04:32.480> a<00:04:32.560> larger<00:04:32.880> font<00:04:33.120> size.<00:04:33.360> Like,<00:04:33.480> if" + }, + { + "start": 273.55, + "duration": 0.0, + "text": "have like a larger font size. Like, if" + }, + { + "start": 273.56, + "duration": 0.0, + "text": "have like a larger font size. Like, if you're<00:04:33.680> on<00:04:33.760> a<00:04:33.800> super<00:04:34.080> high<00:04:34.240> DPI<00:04:35.360> monitor,<00:04:35.840> this" + }, + { + "start": 275.99, + "duration": 0.0, + "text": "you're on a super high DPI monitor, this" + }, + { + "start": 276.0, + "duration": 0.0, + "text": "you're on a super high DPI monitor, this is<00:04:36.080> just<00:04:36.320> a<00:04:36.360> little<00:04:36.560> bit<00:04:36.919> like<00:04:37.560> chaotic.<00:04:38.280> Um" + }, + { + "start": 278.83, + "duration": 0.0, + "text": "is just a little bit like chaotic. Um" + }, + { + "start": 278.84, + "duration": 0.0, + "text": "is just a little bit like chaotic. Um in<00:04:38.919> fact,<00:04:39.120> I<00:04:39.160> think<00:04:39.320> it<00:04:39.360> might<00:04:39.480> be<00:04:39.560> a<00:04:39.600> little" + }, + { + "start": 279.83, + "duration": 0.0, + "text": "in fact, I think it might be a little" + }, + { + "start": 279.84, + "duration": 0.0, + "text": "in fact, I think it might be a little bit<00:04:40.080> too<00:04:40.240> chaotic<00:04:40.680> anyways,<00:04:41.080> but<00:04:41.200> it's" + }, + { + "start": 281.47, + "duration": 0.0, + "text": "bit too chaotic anyways, but it's" + }, + { + "start": 281.48, + "duration": 0.0, + "text": "bit too chaotic anyways, but it's especially<00:04:41.840> chaotic<00:04:42.200> if<00:04:42.320> you<00:04:42.400> have<00:04:42.560> like<00:04:42.720> a" + }, + { + "start": 282.75, + "duration": 0.0, + "text": "especially chaotic if you have like a" + }, + { + "start": 282.76, + "duration": 0.0, + "text": "especially chaotic if you have like a smaller" + }, + { + "start": 284.23, + "duration": 0.0, + "text": "smaller" + }, + { + "start": 284.24, + "duration": 0.0, + "text": "smaller um<00:04:44.720> if<00:04:44.880> you<00:04:44.919> have<00:04:45.040> a<00:04:45.080> larger<00:04:45.320> font<00:04:45.560> size," + }, + { + "start": 285.75, + "duration": 0.0, + "text": "um if you have a larger font size," + }, + { + "start": 285.76, + "duration": 0.0, + "text": "um if you have a larger font size, basically,<00:04:46.440> um<00:04:46.840> on<00:04:47.080> a<00:04:47.400> higher<00:04:47.600> DPI<00:04:47.919> screen." + }, + { + "start": 288.23, + "duration": 0.0, + "text": "basically, um on a higher DPI screen." + }, + { + "start": 288.24, + "duration": 0.0, + "text": "basically, um on a higher DPI screen. So," + }, + { + "start": 289.59, + "duration": 0.0, + "text": "So," + }, + { + "start": 289.6, + "duration": 0.0, + "text": "So, um<00:04:49.960> many<00:04:50.160> times<00:04:50.400> it'll<00:04:50.560> pick<00:04:50.720> this<00:04:50.880> compact" + }, + { + "start": 291.43, + "duration": 0.0, + "text": "um many times it'll pick this compact" + }, + { + "start": 291.44, + "duration": 0.0, + "text": "um many times it'll pick this compact layout." + }, + { + "start": 292.59, + "duration": 0.0, + "text": "layout." + }, + { + "start": 292.6, + "duration": 0.0, + "text": "layout. This<00:04:52.840> still<00:04:53.040> has<00:04:53.200> a<00:04:53.280> lot<00:04:53.440> of<00:04:53.520> stuff<00:04:53.800> that<00:04:53.919> you" + }, + { + "start": 293.99, + "duration": 0.0, + "text": "This still has a lot of stuff that you" + }, + { + "start": 294.0, + "duration": 0.0, + "text": "This still has a lot of stuff that you might<00:04:54.120> just<00:04:54.280> not<00:04:54.440> care<00:04:54.640> about.<00:04:55.040> And<00:04:55.120> then" + }, + { + "start": 295.23, + "duration": 0.0, + "text": "might just not care about. And then" + }, + { + "start": 295.24, + "duration": 0.0, + "text": "might just not care about. And then there's<00:04:55.440> this<00:04:55.640> simple<00:04:55.960> panel<00:04:56.280> layout,<00:04:56.520> which" + }, + { + "start": 296.67, + "duration": 0.0, + "text": "there's this simple panel layout, which" + }, + { + "start": 296.68, + "duration": 0.0, + "text": "there's this simple panel layout, which is<00:04:56.800> literally<00:04:57.280> an<00:04:57.400> area<00:04:57.640> for<00:04:57.760> source<00:04:58.000> code<00:04:58.560> and" + }, + { + "start": 298.67, + "duration": 0.0, + "text": "is literally an area for source code and" + }, + { + "start": 298.68, + "duration": 0.0, + "text": "is literally an area for source code and an<00:04:58.760> area<00:04:59.080> for" + }, + { + "start": 300.15, + "duration": 0.0, + "text": "an area for" + }, + { + "start": 300.16, + "duration": 0.0, + "text": "an area for uh<00:05:00.360> a<00:05:00.440> watch<00:05:00.680> window.<00:05:01.040> Now," + }, + { + "start": 302.87, + "duration": 0.0, + "text": "uh a watch window. Now," + }, + { + "start": 302.88, + "duration": 0.0, + "text": "uh a watch window. Now, I<00:05:02.919> could<00:05:03.120> start<00:05:03.280> with<00:05:03.400> this.<00:05:04.080> Um<00:05:04.880> what<00:05:05.040> I" + }, + { + "start": 305.11, + "duration": 0.0, + "text": "I could start with this. Um what I" + }, + { + "start": 305.12, + "duration": 0.0, + "text": "I could start with this. Um what I should<00:05:05.400> say<00:05:05.560> first<00:05:05.880> is<00:05:05.960> that<00:05:06.200> no-<00:05:06.440> nothing" + }, + { + "start": 306.71, + "duration": 0.0, + "text": "should say first is that no- nothing" + }, + { + "start": 306.72, + "duration": 0.0, + "text": "should say first is that no- nothing about<00:05:06.880> these<00:05:07.000> panels<00:05:07.320> are<00:05:07.400> special,<00:05:08.040> so<00:05:08.240> I<00:05:08.280> can" + }, + { + "start": 308.51, + "duration": 0.0, + "text": "about these panels are special, so I can" + }, + { + "start": 308.52, + "duration": 0.0, + "text": "about these panels are special, so I can I<00:05:08.600> can<00:05:08.840> rearrange<00:05:09.360> these<00:05:09.600> however<00:05:09.880> I<00:05:09.960> want.<00:05:10.680> Um" + }, + { + "start": 311.19, + "duration": 0.0, + "text": "I can rearrange these however I want. Um" + }, + { + "start": 311.2, + "duration": 0.0, + "text": "I can rearrange these however I want. Um it's<00:05:11.360> just<00:05:11.880> I<00:05:11.919> can<00:05:12.000> put<00:05:12.120> them<00:05:12.200> both<00:05:12.360> on<00:05:12.440> the" + }, + { + "start": 312.51, + "duration": 0.0, + "text": "it's just I can put them both on the" + }, + { + "start": 312.52, + "duration": 0.0, + "text": "it's just I can put them both on the same<00:05:12.720> tab<00:05:12.960> if<00:05:13.080> I<00:05:13.120> want<00:05:13.400> to.<00:05:13.560> I<00:05:13.640> can<00:05:13.760> do<00:05:14.480> like" + }, + { + "start": 314.67, + "duration": 0.0, + "text": "same tab if I want to. I can do like" + }, + { + "start": 314.68, + "duration": 0.0, + "text": "same tab if I want to. I can do like whatever<00:05:14.919> kind<00:05:15.120> of<00:05:15.200> organization<00:05:15.760> I<00:05:15.840> want," + }, + { + "start": 316.51, + "duration": 0.0, + "text": "whatever kind of organization I want," + }, + { + "start": 316.52, + "duration": 0.0, + "text": "whatever kind of organization I want, that'll<00:05:16.800> just<00:05:17.240> be<00:05:17.400> fine.<00:05:18.240> Um" + }, + { + "start": 319.71, + "duration": 0.0, + "text": "that'll just be fine. Um" + }, + { + "start": 319.72, + "duration": 0.0, + "text": "that'll just be fine. Um So,<00:05:19.880> if<00:05:20.120> I<00:05:20.160> have<00:05:20.400> nothing," + }, + { + "start": 321.63, + "duration": 0.0, + "text": "So, if I have nothing," + }, + { + "start": 321.64, + "duration": 0.0, + "text": "So, if I have nothing, um<00:05:22.000> it'll<00:05:22.160> just<00:05:22.360> have<00:05:22.480> this<00:05:22.680> empty<00:05:22.960> panel" + }, + { + "start": 323.27, + "duration": 0.0, + "text": "um it'll just have this empty panel" + }, + { + "start": 323.28, + "duration": 0.0, + "text": "um it'll just have this empty panel here.<00:05:24.000> I<00:05:24.080> can<00:05:24.600> uh<00:05:24.680> I<00:05:24.760> can<00:05:24.880> click<00:05:25.080> this<00:05:25.240> plus<00:05:25.480> to" + }, + { + "start": 325.59, + "duration": 0.0, + "text": "here. I can uh I can click this plus to" + }, + { + "start": 325.6, + "duration": 0.0, + "text": "here. I can uh I can click this plus to add<00:05:25.720> a<00:05:25.760> new<00:05:25.919> tab.<00:05:26.600> I<00:05:26.640> can<00:05:26.760> add<00:05:26.880> a<00:05:26.919> watch<00:05:27.200> window." + }, + { + "start": 328.39, + "duration": 0.0, + "text": "add a new tab. I can add a watch window." + }, + { + "start": 328.4, + "duration": 0.0, + "text": "add a new tab. I can add a watch window. Um<00:05:28.560> and<00:05:28.680> then<00:05:28.760> if<00:05:28.880> I<00:05:28.919> want<00:05:29.120> to<00:05:29.160> look<00:05:29.280> at<00:05:29.360> my" + }, + { + "start": 329.43, + "duration": 0.0, + "text": "Um and then if I want to look at my" + }, + { + "start": 329.44, + "duration": 0.0, + "text": "Um and then if I want to look at my targets,<00:05:30.000> I<00:05:30.080> can<00:05:30.840> uh<00:05:30.960> I<00:05:31.000> can<00:05:31.160> search<00:05:31.600> by" + }, + { + "start": 331.71, + "duration": 0.0, + "text": "targets, I can uh I can search by" + }, + { + "start": 331.72, + "duration": 0.0, + "text": "targets, I can uh I can search by typing,<00:05:32.320> and<00:05:32.480> there's<00:05:32.680> just<00:05:32.840> a<00:05:32.880> targets<00:05:33.200> tab" + }, + { + "start": 333.39, + "duration": 0.0, + "text": "typing, and there's just a targets tab" + }, + { + "start": 333.4, + "duration": 0.0, + "text": "typing, and there's just a targets tab that<00:05:33.520> I<00:05:33.560> can<00:05:33.680> open<00:05:33.880> up,<00:05:33.960> and<00:05:34.080> there's<00:05:34.320> all<00:05:34.400> my" + }, + { + "start": 334.51, + "duration": 0.0, + "text": "that I can open up, and there's all my" + }, + { + "start": 334.52, + "duration": 0.0, + "text": "that I can open up, and there's all my targets." + }, + { + "start": 336.75, + "duration": 0.0, + "text": "targets." + }, + { + "start": 336.76, + "duration": 0.0, + "text": "targets. Um" + }, + { + "start": 338.07, + "duration": 0.0, + "text": "Um" + }, + { + "start": 338.08, + "duration": 0.0, + "text": "Um So,<00:05:38.200> anyways," + }, + { + "start": 339.39, + "duration": 0.0, + "text": "So, anyways," + }, + { + "start": 339.4, + "duration": 0.0, + "text": "So, anyways, we're<00:05:39.520> at<00:05:39.600> the<00:05:39.680> list<00:05:39.840> of<00:05:39.919> targets.<00:05:40.240> We<00:05:40.280> have" + }, + { + "start": 340.39, + "duration": 0.0, + "text": "we're at the list of targets. We have" + }, + { + "start": 340.4, + "duration": 0.0, + "text": "we're at the list of targets. We have all<00:05:40.520> these<00:05:40.760> executables<00:05:41.280> we<00:05:41.400> can<00:05:41.560> launch<00:05:41.840> and" + }, + { + "start": 341.95, + "duration": 0.0, + "text": "all these executables we can launch and" + }, + { + "start": 341.96, + "duration": 0.0, + "text": "all these executables we can launch and debug." + }, + { + "start": 344.07, + "duration": 0.0, + "text": "debug." + }, + { + "start": 344.08, + "duration": 0.0, + "text": "debug. Um<00:05:44.840> if<00:05:45.040> I<00:05:45.160> don't<00:05:45.640> have<00:05:46.400> the<00:05:46.520> one<00:05:46.720> I<00:05:46.800> want<00:05:47.120> to<00:05:47.400> run" + }, + { + "start": 347.63, + "duration": 0.0, + "text": "Um if I don't have the one I want to run" + }, + { + "start": 347.64, + "duration": 0.0, + "text": "Um if I don't have the one I want to run from<00:05:47.800> here,<00:05:48.360> I<00:05:48.440> can<00:05:48.600> click<00:05:48.800> add<00:05:49.000> target," + }, + { + "start": 349.75, + "duration": 0.0, + "text": "from here, I can click add target," + }, + { + "start": 349.76, + "duration": 0.0, + "text": "from here, I can click add target, brings<00:05:49.960> up<00:05:50.080> this<00:05:50.200> little<00:05:50.440> file,<00:05:51.600> um" + }, + { + "start": 352.51, + "duration": 0.0, + "text": "brings up this little file, um" + }, + { + "start": 352.52, + "duration": 0.0, + "text": "brings up this little file, um this<00:05:52.880> this<00:05:53.080> like<00:05:53.400> file<00:05:53.720> browser,<00:05:54.760> um" + }, + { + "start": 356.59, + "duration": 0.0, + "text": "this this like file browser, um" + }, + { + "start": 356.6, + "duration": 0.0, + "text": "this this like file browser, um and<00:05:56.720> I<00:05:56.760> don't<00:05:56.960> know.<00:05:57.080> I<00:05:57.120> mean,<00:05:57.280> I've<00:05:57.400> added<00:05:57.600> all" + }, + { + "start": 357.67, + "duration": 0.0, + "text": "and I don't know. I mean, I've added all" + }, + { + "start": 357.68, + "duration": 0.0, + "text": "and I don't know. I mean, I've added all the<00:05:57.800> executables<00:05:58.360> I<00:05:58.400> care<00:05:58.640> to<00:05:58.760> show,<00:05:59.120> but<00:05:59.880> I" + }, + { + "start": 359.99, + "duration": 0.0, + "text": "the executables I care to show, but I" + }, + { + "start": 360.0, + "duration": 0.0, + "text": "the executables I care to show, but I can<00:06:00.160> just<00:06:00.320> go<00:06:00.520> to<00:06:00.680> like" + }, + { + "start": 361.87, + "duration": 0.0, + "text": "can just go to like" + }, + { + "start": 361.88, + "duration": 0.0, + "text": "can just go to like like,<00:06:02.040> you<00:06:02.120> know,<00:06:02.240> you<00:06:02.320> can<00:06:02.440> just<00:06:02.600> type" + }, + { + "start": 363.75, + "duration": 0.0, + "text": "like, you know, you can just type" + }, + { + "start": 363.76, + "duration": 0.0, + "text": "like, you know, you can just type find<00:06:03.960> whatever<00:06:04.200> path<00:06:04.480> you<00:06:04.600> want,<00:06:05.200> um" + }, + { + "start": 365.91, + "duration": 0.0, + "text": "find whatever path you want, um" + }, + { + "start": 365.92, + "duration": 0.0, + "text": "find whatever path you want, um >> at<00:06:06.040> the<00:06:06.120> debugger<00:06:06.520> itself." + }, + { + "start": 368.27, + "duration": 0.0, + "text": ">> at the debugger itself." + }, + { + "start": 368.28, + "duration": 0.0, + "text": ">> at the debugger itself. >> I<00:06:08.560> I<00:06:08.640> already<00:06:08.880> have<00:06:09.040> that<00:06:09.200> one<00:06:09.560> right<00:06:09.760> here." + }, + { + "start": 370.31, + "duration": 0.0, + "text": ">> I I already have that one right here." + }, + { + "start": 370.32, + "duration": 0.0, + "text": ">> I I already have that one right here. This<00:06:10.480> is<00:06:10.600> the<00:06:10.680> This<00:06:10.840> is<00:06:10.920> the<00:06:10.960> one<00:06:11.080> I<00:06:11.120> use<00:06:11.320> for" + }, + { + "start": 371.67, + "duration": 0.0, + "text": "This is the This is the one I use for" + }, + { + "start": 371.68, + "duration": 0.0, + "text": "This is the This is the one I use for actually<00:06:12.080> working<00:06:12.360> on<00:06:12.440> the<00:06:12.480> debugger,<00:06:12.800> but" + }, + { + "start": 373.31, + "duration": 0.0, + "text": "actually working on the debugger, but" + }, + { + "start": 373.32, + "duration": 0.0, + "text": "actually working on the debugger, but yeah,<00:06:13.480> I<00:06:13.520> mean,<00:06:13.680> if<00:06:13.800> I<00:06:13.880> wanted<00:06:14.200> to<00:06:14.400> do<00:06:14.600> that," + }, + { + "start": 374.79, + "duration": 0.0, + "text": "yeah, I mean, if I wanted to do that," + }, + { + "start": 374.8, + "duration": 0.0, + "text": "yeah, I mean, if I wanted to do that, I'd<00:06:14.920> just<00:06:15.080> do<00:06:15.840> radare2.exe," + }, + { + "start": 377.43, + "duration": 0.0, + "text": "I'd just do radare2.exe," + }, + { + "start": 377.44, + "duration": 0.0, + "text": "I'd just do radare2.exe, opens<00:06:17.760> up<00:06:17.880> the<00:06:17.960> editor<00:06:18.320> for<00:06:18.520> it.<00:06:18.600> I<00:06:18.640> can<00:06:18.760> say" + }, + { + "start": 378.909, + "duration": 0.0, + "text": "opens up the editor for it. I can say" + }, + { + "start": 378.919, + "duration": 0.0, + "text": "opens up the editor for it. I can say like<00:06:19.200> dash<00:06:19.480> foo,<00:06:19.720> dash<00:06:20.000> bar,<00:06:20.960> um<00:06:21.040> whatever<00:06:21.280> I" + }, + { + "start": 381.35, + "duration": 0.0, + "text": "like dash foo, dash bar, um whatever I" + }, + { + "start": 381.36, + "duration": 0.0, + "text": "like dash foo, dash bar, um whatever I want<00:06:21.640> here,<00:06:22.360> um<00:06:22.640> and<00:06:22.760> then" + }, + { + "start": 384.07, + "duration": 0.0, + "text": "want here, um and then" + }, + { + "start": 384.08, + "duration": 0.0, + "text": "want here, um and then this<00:06:24.240> is<00:06:24.320> something<00:06:24.560> I<00:06:24.600> can<00:06:24.720> now<00:06:24.919> launch.<00:06:25.440> So," + }, + { + "start": 385.83, + "duration": 0.0, + "text": "this is something I can now launch. So," + }, + { + "start": 385.84, + "duration": 0.0, + "text": "this is something I can now launch. So, I'll<00:06:25.960> remove<00:06:26.240> it<00:06:26.360> cuz<00:06:26.560> I<00:06:26.640> already<00:06:26.880> have<00:06:27.080> one" + }, + { + "start": 387.23, + "duration": 0.0, + "text": "I'll remove it cuz I already have one" + }, + { + "start": 387.24, + "duration": 0.0, + "text": "I'll remove it cuz I already have one for<00:06:27.440> it." + }, + { + "start": 389.15, + "duration": 0.0, + "text": "for it." + }, + { + "start": 389.16, + "duration": 0.0, + "text": "for it. Um" + }, + { + "start": 390.19, + "duration": 0.0, + "text": "Um" + }, + { + "start": 390.2, + "duration": 0.0, + "text": "Um but<00:06:30.280> anyways,<00:06:30.640> I've<00:06:30.760> got<00:06:31.200> an<00:06:31.280> executable<00:06:31.760> that" + }, + { + "start": 391.87, + "duration": 0.0, + "text": "but anyways, I've got an executable that" + }, + { + "start": 391.88, + "duration": 0.0, + "text": "but anyways, I've got an executable that I<00:06:31.919> want<00:06:32.080> to<00:06:32.160> debug.<00:06:33.120> Um<00:06:33.640> I<00:06:33.919> can<00:06:34.280> either<00:06:34.720> run<00:06:35.000> it." + }, + { + "start": 395.55, + "duration": 0.0, + "text": "I want to debug. Um I can either run it." + }, + { + "start": 395.56, + "duration": 0.0, + "text": "I want to debug. Um I can either run it. Um<00:06:35.840> in<00:06:35.960> this<00:06:36.080> case,<00:06:36.240> it's<00:06:36.360> a<00:06:36.400> test<00:06:36.720> executable" + }, + { + "start": 397.19, + "duration": 0.0, + "text": "Um in this case, it's a test executable" + }, + { + "start": 397.2, + "duration": 0.0, + "text": "Um in this case, it's a test executable that<00:06:37.520> you<00:06:37.640> want<00:06:37.840> to<00:06:37.919> step<00:06:38.160> through,<00:06:38.480> so<00:06:38.640> I" + }, + { + "start": 398.71, + "duration": 0.0, + "text": "that you want to step through, so I" + }, + { + "start": 398.72, + "duration": 0.0, + "text": "that you want to step through, so I won't<00:06:39.080> I<00:06:39.120> won't<00:06:39.280> do<00:06:39.360> that.<00:06:40.080> Um<00:06:40.560> but<00:06:40.640> I<00:06:40.680> can<00:06:40.760> also" + }, + { + "start": 400.95, + "duration": 0.0, + "text": "won't I won't do that. Um but I can also" + }, + { + "start": 400.96, + "duration": 0.0, + "text": "won't I won't do that. Um but I can also step<00:06:41.240> into<00:06:41.480> it<00:06:41.600> using<00:06:41.960> either<00:06:42.160> step<00:06:42.400> over<00:06:42.600> step" + }, + { + "start": 403.31, + "duration": 0.0, + "text": "step into it using either step over step" + }, + { + "start": 403.32, + "duration": 0.0, + "text": "step into it using either step over step uh<00:06:43.440> into.<00:06:43.760> It<00:06:43.840> doesn't<00:06:44.120> matter<00:06:44.360> which" + }, + { + "start": 404.55, + "duration": 0.0, + "text": "uh into. It doesn't matter which" + }, + { + "start": 404.56, + "duration": 0.0, + "text": "uh into. It doesn't matter which command,<00:06:45.000> but<00:06:45.760> um" + }, + { + "start": 406.909, + "duration": 0.0, + "text": "command, but um" + }, + { + "start": 406.919, + "duration": 0.0, + "text": "command, but um so<00:06:47.000> I<00:06:47.040> can<00:06:47.160> run<00:06:47.360> either<00:06:47.560> one<00:06:47.680> of<00:06:47.760> these<00:06:47.919> to<00:06:48.000> get" + }, + { + "start": 408.11, + "duration": 0.0, + "text": "so I can run either one of these to get" + }, + { + "start": 408.12, + "duration": 0.0, + "text": "so I can run either one of these to get into<00:06:48.280> the<00:06:48.360> program.<00:06:48.960> Now,<00:06:49.720> another<00:06:50.080> thing<00:06:50.240> I" + }, + { + "start": 410.27, + "duration": 0.0, + "text": "into the program. Now, another thing I" + }, + { + "start": 410.28, + "duration": 0.0, + "text": "into the program. Now, another thing I should<00:06:50.440> mention<00:06:50.680> about<00:06:50.880> the<00:06:50.960> UI<00:06:51.320> before" + }, + { + "start": 412.11, + "duration": 0.0, + "text": "should mention about the UI before" + }, + { + "start": 412.12, + "duration": 0.0, + "text": "should mention about the UI before getting<00:06:52.360> into<00:06:52.480> the<00:06:52.600> actual<00:06:52.840> debugging," + }, + { + "start": 414.71, + "duration": 0.0, + "text": "getting into the actual debugging," + }, + { + "start": 414.72, + "duration": 0.0, + "text": "getting into the actual debugging, 100%<00:06:55.440> of<00:06:55.520> the<00:06:55.600> operations<00:06:56.160> I've<00:06:56.600> covered<00:06:56.919> so" + }, + { + "start": 417.07, + "duration": 0.0, + "text": "100% of the operations I've covered so" + }, + { + "start": 417.08, + "duration": 0.0, + "text": "100% of the operations I've covered so far<00:06:57.480> can<00:06:57.760> be<00:06:58.000> done<00:06:58.560> through<00:06:59.240> uh<00:06:59.680> generalized" + }, + { + "start": 420.39, + "duration": 0.0, + "text": "far can be done through uh generalized" + }, + { + "start": 420.4, + "duration": 0.0, + "text": "far can be done through uh generalized command<00:07:01.040> lister.<00:07:01.400> So,<00:07:01.600> basically,<00:07:02.120> if<00:07:02.240> you" + }, + { + "start": 422.31, + "duration": 0.0, + "text": "command lister. So, basically, if you" + }, + { + "start": 422.32, + "duration": 0.0, + "text": "command lister. So, basically, if you hit<00:07:02.560> the<00:07:02.680> help<00:07:03.440> menu<00:07:03.720> up<00:07:03.840> here,<00:07:04.520> it's<00:07:04.720> got<00:07:04.960> a" + }, + { + "start": 425.07, + "duration": 0.0, + "text": "hit the help menu up here, it's got a" + }, + { + "start": 425.08, + "duration": 0.0, + "text": "hit the help menu up here, it's got a search<00:07:05.320> for<00:07:05.440> commands<00:07:05.760> and<00:07:05.880> settings,<00:07:06.360> and" + }, + { + "start": 426.47, + "duration": 0.0, + "text": "search for commands and settings, and" + }, + { + "start": 426.48, + "duration": 0.0, + "text": "search for commands and settings, and you<00:07:06.560> can<00:07:06.640> see<00:07:06.800> you<00:07:06.919> can<00:07:07.160> you<00:07:07.280> can<00:07:08.000> trigger<00:07:08.240> this" + }, + { + "start": 428.43, + "duration": 0.0, + "text": "you can see you can you can trigger this" + }, + { + "start": 428.44, + "duration": 0.0, + "text": "you can see you can you can trigger this quickly<00:07:08.760> by<00:07:08.880> hitting<00:07:09.120> F1.<00:07:10.080> But<00:07:10.160> if<00:07:10.240> I<00:07:10.320> click" + }, + { + "start": 430.51, + "duration": 0.0, + "text": "quickly by hitting F1. But if I click" + }, + { + "start": 430.52, + "duration": 0.0, + "text": "quickly by hitting F1. But if I click that,<00:07:10.720> it<00:07:10.800> opens<00:07:11.160> up<00:07:11.480> this" + }, + { + "start": 432.43, + "duration": 0.0, + "text": "that, it opens up this" + }, + { + "start": 432.44, + "duration": 0.0, + "text": "that, it opens up this uh<00:07:12.880> lister<00:07:13.240> here,<00:07:13.520> and<00:07:13.600> this<00:07:13.720> shows<00:07:13.960> all<00:07:14.160> of" + }, + { + "start": 434.23, + "duration": 0.0, + "text": "uh lister here, and this shows all of" + }, + { + "start": 434.24, + "duration": 0.0, + "text": "uh lister here, and this shows all of the<00:07:14.360> commands<00:07:14.680> that<00:07:14.800> you<00:07:14.880> can<00:07:15.000> do<00:07:15.160> in<00:07:15.240> the" + }, + { + "start": 435.31, + "duration": 0.0, + "text": "the commands that you can do in the" + }, + { + "start": 435.32, + "duration": 0.0, + "text": "the commands that you can do in the debugger.<00:07:15.680> So,<00:07:15.800> I<00:07:15.840> can<00:07:16.000> say<00:07:16.200> like<00:07:17.040> a<00:07:17.200> launch" + }, + { + "start": 437.67, + "duration": 0.0, + "text": "debugger. So, I can say like a launch" + }, + { + "start": 437.68, + "duration": 0.0, + "text": "debugger. So, I can say like a launch and<00:07:17.919> step<00:07:18.200> into" + }, + { + "start": 439.27, + "duration": 0.0, + "text": "and step into" + }, + { + "start": 439.28, + "duration": 0.0, + "text": "and step into um<00:07:19.760> if<00:07:19.919> I<00:07:19.960> run<00:07:20.200> that,<00:07:20.560> it'll<00:07:20.720> ask<00:07:20.919> me<00:07:21.000> for<00:07:21.120> a" + }, + { + "start": 441.19, + "duration": 0.0, + "text": "um if I run that, it'll ask me for a" + }, + { + "start": 441.2, + "duration": 0.0, + "text": "um if I run that, it'll ask me for a target,<00:07:21.840> and<00:07:21.919> then<00:07:22.040> if<00:07:22.160> I<00:07:22.240> click<00:07:22.480> one," + }, + { + "start": 443.39, + "duration": 0.0, + "text": "target, and then if I click one," + }, + { + "start": 443.4, + "duration": 0.0, + "text": "target, and then if I click one, uh<00:07:23.480> it'll<00:07:24.360> step<00:07:24.680> into<00:07:24.919> that<00:07:25.280> target<00:07:25.600> that<00:07:25.720> I" + }, + { + "start": 445.95, + "duration": 0.0, + "text": "uh it'll step into that target that I" + }, + { + "start": 445.96, + "duration": 0.0, + "text": "uh it'll step into that target that I that<00:07:26.080> I<00:07:26.120> picked.<00:07:26.400> That's<00:07:27.080> uh<00:07:27.160> that's<00:07:27.760> a<00:07:27.840> slower" + }, + { + "start": 448.27, + "duration": 0.0, + "text": "that I picked. That's uh that's a slower" + }, + { + "start": 448.28, + "duration": 0.0, + "text": "that I picked. That's uh that's a slower path<00:07:28.600> for<00:07:28.760> just<00:07:28.960> like<00:07:29.160> if<00:07:29.320> I've<00:07:29.440> got<00:07:29.640> this" + }, + { + "start": 449.79, + "duration": 0.0, + "text": "path for just like if I've got this" + }, + { + "start": 449.8, + "duration": 0.0, + "text": "path for just like if I've got this target<00:07:30.120> selected,<00:07:30.880> and<00:07:30.960> if<00:07:31.080> I<00:07:31.120> hit<00:07:31.360> F10<00:07:32.000> or" + }, + { + "start": 452.15, + "duration": 0.0, + "text": "target selected, and if I hit F10 or" + }, + { + "start": 452.16, + "duration": 0.0, + "text": "target selected, and if I hit F10 or F11,<00:07:33.160> then<00:07:33.360> it'll<00:07:33.560> just<00:07:33.800> get<00:07:33.960> me<00:07:34.360> to<00:07:34.480> the<00:07:34.560> same" + }, + { + "start": 454.75, + "duration": 0.0, + "text": "F11, then it'll just get me to the same" + }, + { + "start": 454.76, + "duration": 0.0, + "text": "F11, then it'll just get me to the same spot.<00:07:34.960> So,<00:07:35.040> I've<00:07:35.160> stepped<00:07:35.520> into<00:07:35.760> the<00:07:35.840> program." + }, + { + "start": 457.31, + "duration": 0.0, + "text": "spot. So, I've stepped into the program." + }, + { + "start": 457.32, + "duration": 0.0, + "text": "spot. So, I've stepped into the program. Um<00:07:37.680> and<00:07:37.760> now<00:07:37.919> that<00:07:38.080> I'm<00:07:38.400> now<00:07:38.520> that<00:07:38.640> I'm<00:07:38.760> here," + }, + { + "start": 459.67, + "duration": 0.0, + "text": "Um and now that I'm now that I'm here," + }, + { + "start": 459.68, + "duration": 0.0, + "text": "Um and now that I'm now that I'm here, let<00:07:39.840> me<00:07:39.960> do" + }, + { + "start": 461.23, + "duration": 0.0, + "text": "let me do" + }, + { + "start": 461.24, + "duration": 0.0, + "text": "let me do um" + }, + { + "start": 462.55, + "duration": 0.0, + "text": "um" + }, + { + "start": 462.56, + "duration": 0.0, + "text": "um this<00:07:42.840> layout<00:07:43.120> here." + }, + { + "start": 463.735, + "duration": 0.0, + "text": "this layout here." + }, + { + "start": 463.745, + "duration": 0.0, + "text": "this layout here. >> [snorts]" + }, + { + "start": 464.31, + "duration": 0.0, + "text": ">> [snorts]" + }, + { + "start": 464.32, + "duration": 0.0, + "text": ">> [snorts] >> So,<00:07:44.840> uh<00:07:44.920> um" + }, + { + "start": 466.91, + "duration": 0.0, + "text": ">> So, uh um" + }, + { + "start": 466.92, + "duration": 0.0, + "text": ">> So, uh um So,<00:07:47.040> yeah,<00:07:47.200> I've<00:07:47.320> got<00:07:47.480> my<00:07:47.600> watch<00:07:47.800> window<00:07:48.120> and" + }, + { + "start": 468.27, + "duration": 0.0, + "text": "So, yeah, I've got my watch window and" + }, + { + "start": 468.28, + "duration": 0.0, + "text": "So, yeah, I've got my watch window and I've<00:07:48.400> got<00:07:48.680> my<00:07:49.080> source<00:07:49.400> view.<00:07:49.600> In<00:07:49.680> the<00:07:49.760> source" + }, + { + "start": 469.99, + "duration": 0.0, + "text": "I've got my source view. In the source" + }, + { + "start": 470.0, + "duration": 0.0, + "text": "I've got my source view. In the source view,<00:07:50.200> obviously,<00:07:50.520> I<00:07:50.560> can<00:07:50.720> see<00:07:50.920> where<00:07:51.200> my" + }, + { + "start": 471.35, + "duration": 0.0, + "text": "view, obviously, I can see where my" + }, + { + "start": 471.36, + "duration": 0.0, + "text": "view, obviously, I can see where my thread<00:07:51.680> happens<00:07:52.000> to<00:07:52.080> be." + }, + { + "start": 472.91, + "duration": 0.0, + "text": "thread happens to be." + }, + { + "start": 472.92, + "duration": 0.0, + "text": "thread happens to be. Um" + }, + { + "start": 473.95, + "duration": 0.0, + "text": "Um" + }, + { + "start": 473.96, + "duration": 0.0, + "text": "Um with<00:07:54.320> the<00:07:54.400> step<00:07:54.640> over<00:07:54.840> step<00:07:55.080> into<00:07:55.280> commands" + }, + { + "start": 475.87, + "duration": 0.0, + "text": "with the step over step into commands" + }, + { + "start": 475.88, + "duration": 0.0, + "text": "with the step over step into commands and<00:07:56.000> step<00:07:56.280> out,<00:07:56.600> these<00:07:56.840> are<00:07:56.960> three<00:07:57.560> super" + }, + { + "start": 477.83, + "duration": 0.0, + "text": "and step out, these are three super" + }, + { + "start": 477.84, + "duration": 0.0, + "text": "and step out, these are three super common<00:07:58.080> debugger<00:07:58.400> commands.<00:07:58.720> Step<00:07:58.920> over" + }, + { + "start": 479.07, + "duration": 0.0, + "text": "common debugger commands. Step over" + }, + { + "start": 479.08, + "duration": 0.0, + "text": "common debugger commands. Step over means<00:07:59.320> stepping<00:07:59.680> over<00:07:59.920> a<00:07:59.960> line<00:08:00.160> of<00:08:00.240> source" + }, + { + "start": 480.47, + "duration": 0.0, + "text": "means stepping over a line of source" + }, + { + "start": 480.48, + "duration": 0.0, + "text": "means stepping over a line of source code<00:08:00.760> even<00:08:00.960> if<00:08:01.080> that" + }, + { + "start": 482.07, + "duration": 0.0, + "text": "code even if that" + }, + { + "start": 482.08, + "duration": 0.0, + "text": "code even if that code<00:08:02.400> were<00:08:02.520> to<00:08:02.640> call<00:08:03.000> into<00:08:03.240> a<00:08:03.280> function," + }, + { + "start": 484.47, + "duration": 0.0, + "text": "code were to call into a function," + }, + { + "start": 484.48, + "duration": 0.0, + "text": "code were to call into a function, um<00:08:04.720> it<00:08:04.840> steps<00:08:05.120> over<00:08:05.360> it.<00:08:05.640> But,<00:08:05.760> if<00:08:05.840> I<00:08:05.920> want<00:08:06.080> to" + }, + { + "start": 486.19, + "duration": 0.0, + "text": "um it steps over it. But, if I want to" + }, + { + "start": 486.2, + "duration": 0.0, + "text": "um it steps over it. But, if I want to step<00:08:06.480> into<00:08:06.720> a<00:08:06.800> function<00:08:07.160> call,<00:08:07.440> I<00:08:07.480> hit<00:08:07.680> F11<00:08:08.240> or" + }, + { + "start": 488.95, + "duration": 0.0, + "text": "step into a function call, I hit F11 or" + }, + { + "start": 488.96, + "duration": 0.0, + "text": "step into a function call, I hit F11 or uh<00:08:09.040> run<00:08:09.560> otherwise<00:08:10.000> just<00:08:10.160> run<00:08:10.280> the<00:08:10.360> step<00:08:10.560> into" + }, + { + "start": 490.75, + "duration": 0.0, + "text": "uh run otherwise just run the step into" + }, + { + "start": 490.76, + "duration": 0.0, + "text": "uh run otherwise just run the step into command." + }, + { + "start": 491.99, + "duration": 0.0, + "text": "command." + }, + { + "start": 492.0, + "duration": 0.0, + "text": "command. Um<00:08:12.400> and<00:08:12.520> then<00:08:12.640> it'll<00:08:13.200> it'll<00:08:13.400> jump<00:08:13.680> into<00:08:13.880> a" + }, + { + "start": 493.909, + "duration": 0.0, + "text": "Um and then it'll it'll jump into a" + }, + { + "start": 493.919, + "duration": 0.0, + "text": "Um and then it'll it'll jump into a function<00:08:14.240> call<00:08:14.400> that<00:08:14.560> way.<00:08:15.360> Um<00:08:15.720> if<00:08:15.880> I<00:08:15.919> want<00:08:16.200> to" + }, + { + "start": 496.51, + "duration": 0.0, + "text": "function call that way. Um if I want to" + }, + { + "start": 496.52, + "duration": 0.0, + "text": "function call that way. Um if I want to get<00:08:16.720> out<00:08:16.840> of<00:08:16.919> a<00:08:16.960> function<00:08:17.280> call,<00:08:17.440> I<00:08:17.480> have<00:08:17.600> to" + }, + { + "start": 497.67, + "duration": 0.0, + "text": "get out of a function call, I have to" + }, + { + "start": 497.68, + "duration": 0.0, + "text": "get out of a function call, I have to run<00:08:17.840> step<00:08:18.160> out,<00:08:18.640> which<00:08:18.800> is<00:08:18.919> shift<00:08:19.200> F11." + }, + { + "start": 500.909, + "duration": 0.0, + "text": "run step out, which is shift F11." + }, + { + "start": 500.919, + "duration": 0.0, + "text": "run step out, which is shift F11. That'll<00:08:21.120> pop<00:08:21.320> me<00:08:21.400> back.<00:08:21.919> It<00:08:21.960> basically<00:08:22.240> runs" + }, + { + "start": 502.43, + "duration": 0.0, + "text": "That'll pop me back. It basically runs" + }, + { + "start": 502.44, + "duration": 0.0, + "text": "That'll pop me back. It basically runs to<00:08:22.520> the<00:08:22.600> end<00:08:22.680> of<00:08:22.760> the<00:08:22.800> function<00:08:23.200> until<00:08:23.440> the" + }, + { + "start": 503.51, + "duration": 0.0, + "text": "to the end of the function until the" + }, + { + "start": 503.52, + "duration": 0.0, + "text": "to the end of the function until the function<00:08:23.840> exits<00:08:24.200> and<00:08:24.280> then<00:08:24.440> it<00:08:24.560> and<00:08:24.680> then<00:08:24.760> it" + }, + { + "start": 505.23, + "duration": 0.0, + "text": "function exits and then it and then it" + }, + { + "start": 505.24, + "duration": 0.0, + "text": "function exits and then it and then it pops<00:08:25.520> out<00:08:25.640> and<00:08:26.000> and<00:08:26.160> ends<00:08:26.760> wherever<00:08:27.520> wherever" + }, + { + "start": 507.75, + "duration": 0.0, + "text": "pops out and and ends wherever wherever" + }, + { + "start": 507.76, + "duration": 0.0, + "text": "pops out and and ends wherever wherever the<00:08:27.840> return<00:08:28.120> point<00:08:28.360> is." + }, + { + "start": 509.63, + "duration": 0.0, + "text": "the return point is." + }, + { + "start": 509.64, + "duration": 0.0, + "text": "the return point is. Um" + }, + { + "start": 510.71, + "duration": 0.0, + "text": "Um" + }, + { + "start": 510.72, + "duration": 0.0, + "text": "Um so,<00:08:30.840> I<00:08:30.880> can<00:08:30.905> [clears throat]<00:08:31.000> click<00:08:31.160> and<00:08:31.240> drag" + }, + { + "start": 511.51, + "duration": 0.0, + "text": "so, I can [clears throat] click and drag" + }, + { + "start": 511.52, + "duration": 0.0, + "text": "so, I can [clears throat] click and drag a<00:08:31.560> thread<00:08:31.800> as<00:08:31.919> well.<00:08:32.080> I<00:08:32.159> just<00:08:32.320> did<00:08:32.479> that.<00:08:32.800> So," + }, + { + "start": 513.07, + "duration": 0.0, + "text": "a thread as well. I just did that. So," + }, + { + "start": 513.08, + "duration": 0.0, + "text": "a thread as well. I just did that. So, if<00:08:33.200> I<00:08:33.280> want<00:08:33.400> to<00:08:33.479> reposition<00:08:34.000> a<00:08:34.039> thread,<00:08:34.400> this" + }, + { + "start": 514.55, + "duration": 0.0, + "text": "if I want to reposition a thread, this" + }, + { + "start": 514.56, + "duration": 0.0, + "text": "if I want to reposition a thread, this doesn't<00:08:34.919> do<00:08:35.080> any<00:08:35.280> timeline<00:08:35.680> debugging<00:08:36.000> stuff" + }, + { + "start": 516.23, + "duration": 0.0, + "text": "doesn't do any timeline debugging stuff" + }, + { + "start": 516.24, + "duration": 0.0, + "text": "doesn't do any timeline debugging stuff right<00:08:36.400> now.<00:08:36.599> So,<00:08:37.479> um<00:08:38.240> or<00:08:38.440> well,<00:08:38.599> this<00:08:38.760> feature" + }, + { + "start": 519.07, + "duration": 0.0, + "text": "right now. So, um or well, this feature" + }, + { + "start": 519.08, + "duration": 0.0, + "text": "right now. So, um or well, this feature would<00:08:39.200> never<00:08:39.400> do<00:08:39.520> that." + }, + { + "start": 519.99, + "duration": 0.0, + "text": "would never do that." + }, + { + "start": 520.0, + "duration": 0.0, + "text": "would never do that. >> Wait,<00:08:40.159> wait,<00:08:40.280> wait,<00:08:40.400> wait,<00:08:40.520> wait.<00:08:40.800> What<00:08:41.320> Wait," + }, + { + "start": 521.51, + "duration": 0.0, + "text": ">> Wait, wait, wait, wait, wait. What Wait," + }, + { + "start": 521.52, + "duration": 0.0, + "text": ">> Wait, wait, wait, wait, wait. What Wait, what<00:08:41.719> you<00:08:41.840> can<00:08:42.039> do?<00:08:42.400> What<00:08:42.760> would<00:08:43.039> you<00:08:43.120> can<00:08:43.599> you" + }, + { + "start": 523.67, + "duration": 0.0, + "text": "what you can do? What would you can you" + }, + { + "start": 523.68, + "duration": 0.0, + "text": "what you can do? What would you can you can<00:08:43.880> drag<00:08:44.280> a<00:08:44.360> thread?" + }, + { + "start": 526.19, + "duration": 0.0, + "text": "can drag a thread?" + }, + { + "start": 526.2, + "duration": 0.0, + "text": "can drag a thread? >> Oh,<00:08:46.440> yeah.<00:08:46.680> So,<00:08:46.839> here<00:08:47.000> So,<00:08:47.120> here<00:08:47.600> here's<00:08:47.880> the" + }, + { + "start": 527.95, + "duration": 0.0, + "text": ">> Oh, yeah. So, here So, here here's the" + }, + { + "start": 527.96, + "duration": 0.0, + "text": ">> Oh, yeah. So, here So, here here's the position<00:08:48.320> of<00:08:48.440> my<00:08:48.600> main<00:08:48.880> thread.<00:08:49.160> You<00:08:49.240> can<00:08:49.360> see" + }, + { + "start": 529.47, + "duration": 0.0, + "text": "position of my main thread. You can see" + }, + { + "start": 529.48, + "duration": 0.0, + "text": "position of my main thread. You can see it's<00:08:49.880> it's<00:08:50.000> got<00:08:50.160> the<00:08:50.240> name<00:08:50.640> mule<00:08:50.920> main<00:08:51.160> thread." + }, + { + "start": 531.67, + "duration": 0.0, + "text": "it's it's got the name mule main thread." + }, + { + "start": 531.68, + "duration": 0.0, + "text": "it's it's got the name mule main thread. And<00:08:51.760> this<00:08:51.880> is<00:08:52.000> its<00:08:52.120> call<00:08:52.360> stack,<00:08:52.640> too,<00:08:52.800> when<00:08:52.920> I" + }, + { + "start": 532.95, + "duration": 0.0, + "text": "And this is its call stack, too, when I" + }, + { + "start": 532.96, + "duration": 0.0, + "text": "And this is its call stack, too, when I hover<00:08:53.240> it.<00:08:53.400> So,<00:08:53.520> you<00:08:53.600> can<00:08:53.720> see<00:08:54.560> mule<00:08:54.839> main,<00:08:55.440> win" + }, + { + "start": 535.67, + "duration": 0.0, + "text": "hover it. So, you can see mule main, win" + }, + { + "start": 535.68, + "duration": 0.0, + "text": "hover it. So, you can see mule main, win main,<00:08:56.480> um" + }, + { + "start": 536.91, + "duration": 0.0, + "text": "main, um" + }, + { + "start": 536.92, + "duration": 0.0, + "text": "main, um >> Yeah." + }, + { + "start": 537.47, + "duration": 0.0, + "text": ">> Yeah." + }, + { + "start": 537.48, + "duration": 0.0, + "text": ">> Yeah. >> Basically,<00:08:57.960> there's<00:08:58.120> the<00:08:58.200> full<00:08:58.360> call<00:08:58.520> stack." + }, + { + "start": 538.67, + "duration": 0.0, + "text": ">> Basically, there's the full call stack." + }, + { + "start": 538.68, + "duration": 0.0, + "text": ">> Basically, there's the full call stack. So,<00:08:58.720> you<00:08:58.800> have<00:08:58.880> a<00:08:58.920> couple<00:08:59.120> things<00:08:59.360> in<00:08:59.600> in<00:08:59.760> like" + }, + { + "start": 539.99, + "duration": 0.0, + "text": "So, you have a couple things in in like" + }, + { + "start": 540.0, + "duration": 0.0, + "text": "So, you have a couple things in in like the<00:09:00.440> from<00:09:01.000> the<00:09:01.120> kernel,<00:09:01.760> um<00:09:02.200> not<00:09:02.400> literally" + }, + { + "start": 542.71, + "duration": 0.0, + "text": "the from the kernel, um not literally" + }, + { + "start": 542.72, + "duration": 0.0, + "text": "the from the kernel, um not literally the<00:09:02.800> kernel,<00:09:03.040> but<00:09:03.520> the<00:09:03.640> user<00:09:03.880> space<00:09:04.120> of<00:09:04.200> the" + }, + { + "start": 544.27, + "duration": 0.0, + "text": "the kernel, but the user space of the" + }, + { + "start": 544.28, + "duration": 0.0, + "text": "the kernel, but the user space of the kernel.<00:09:05.200> And<00:09:05.280> then<00:09:05.440> you<00:09:05.520> have<00:09:05.800> s<00:09:06.000> e<00:09:06.080> r<00:09:06.160> t<00:09:06.360> common" + }, + { + "start": 546.71, + "duration": 0.0, + "text": "kernel. And then you have s e r t common" + }, + { + "start": 546.72, + "duration": 0.0, + "text": "kernel. And then you have s e r t common main,<00:09:07.360> s<00:09:07.560> e<00:09:07.839> a<00:09:08.400> s<00:09:08.640> e<00:09:08.839> h,<00:09:09.200> and<00:09:09.320> then<00:09:09.480> invoke<00:09:09.920> main," + }, + { + "start": 550.11, + "duration": 0.0, + "text": "main, s e a s e h, and then invoke main," + }, + { + "start": 550.12, + "duration": 0.0, + "text": "main, s e a s e h, and then invoke main, which<00:09:10.280> is<00:09:10.400> an<00:09:10.520> inline<00:09:11.000> function.<00:09:11.600> And<00:09:11.680> then" + }, + { + "start": 551.99, + "duration": 0.0, + "text": "which is an inline function. And then" + }, + { + "start": 552.0, + "duration": 0.0, + "text": "which is an inline function. And then you<00:09:12.120> have<00:09:12.280> win<00:09:12.480> main,<00:09:12.720> which<00:09:12.839> is<00:09:12.960> actually<00:09:13.240> in" + }, + { + "start": 553.31, + "duration": 0.0, + "text": "you have win main, which is actually in" + }, + { + "start": 553.32, + "duration": 0.0, + "text": "you have win main, which is actually in this<00:09:13.440> program.<00:09:13.760> And<00:09:13.839> then<00:09:13.960> you<00:09:14.000> have<00:09:14.160> mule" + }, + { + "start": 554.43, + "duration": 0.0, + "text": "this program. And then you have mule" + }, + { + "start": 554.44, + "duration": 0.0, + "text": "this program. And then you have mule main,<00:09:15.240> which<00:09:15.440> is<00:09:15.520> just<00:09:15.760> this<00:09:15.920> function<00:09:16.240> right" + }, + { + "start": 556.35, + "duration": 0.0, + "text": "main, which is just this function right" + }, + { + "start": 556.36, + "duration": 0.0, + "text": "main, which is just this function right here." + }, + { + "start": 557.15, + "duration": 0.0, + "text": "here." + }, + { + "start": 557.16, + "duration": 0.0, + "text": "here. So,<00:09:17.240> that's<00:09:17.440> the<00:09:17.520> call<00:09:17.720> stack.<00:09:17.960> This<00:09:18.120> is<00:09:18.200> the" + }, + { + "start": 558.31, + "duration": 0.0, + "text": "So, that's the call stack. This is the" + }, + { + "start": 558.32, + "duration": 0.0, + "text": "So, that's the call stack. This is the thread.<00:09:18.760> And<00:09:18.880> if<00:09:19.000> I<00:09:19.040> want<00:09:19.280> to<00:09:19.440> reposition<00:09:20.480> the" + }, + { + "start": 560.63, + "duration": 0.0, + "text": "thread. And if I want to reposition the" + }, + { + "start": 560.64, + "duration": 0.0, + "text": "thread. And if I want to reposition the instruction<00:09:21.080> pointer<00:09:21.360> of<00:09:21.440> the<00:09:21.520> thread,<00:09:22.160> cuz" + }, + { + "start": 562.31, + "duration": 0.0, + "text": "instruction pointer of the thread, cuz" + }, + { + "start": 562.32, + "duration": 0.0, + "text": "instruction pointer of the thread, cuz this<00:09:22.680> arrow<00:09:23.000> is<00:09:23.080> showing<00:09:23.520> what<00:09:23.680> instruction" + }, + { + "start": 564.11, + "duration": 0.0, + "text": "this arrow is showing what instruction" + }, + { + "start": 564.12, + "duration": 0.0, + "text": "this arrow is showing what instruction is<00:09:24.200> going<00:09:24.320> to<00:09:24.400> execute<00:09:24.760> next,<00:09:25.080> right?<00:09:25.560> Or<00:09:25.680> what" + }, + { + "start": 565.87, + "duration": 0.0, + "text": "is going to execute next, right? Or what" + }, + { + "start": 565.88, + "duration": 0.0, + "text": "is going to execute next, right? Or what code<00:09:26.080> is<00:09:26.160> going<00:09:26.280> to<00:09:26.360> execute<00:09:26.720> next.<00:09:27.440> If<00:09:27.560> I" + }, + { + "start": 567.63, + "duration": 0.0, + "text": "code is going to execute next. If I" + }, + { + "start": 567.64, + "duration": 0.0, + "text": "code is going to execute next. If I wanted<00:09:27.880> to<00:09:27.960> change<00:09:28.280> that,<00:09:28.560> I<00:09:28.720> just<00:09:29.200> I<00:09:29.280> can" + }, + { + "start": 569.43, + "duration": 0.0, + "text": "wanted to change that, I just I can" + }, + { + "start": 569.44, + "duration": 0.0, + "text": "wanted to change that, I just I can click<00:09:29.640> and<00:09:29.720> drag<00:09:30.040> the<00:09:30.120> thread." + }, + { + "start": 571.35, + "duration": 0.0, + "text": "click and drag the thread." + }, + { + "start": 571.36, + "duration": 0.0, + "text": "click and drag the thread. But,<00:09:31.480> then<00:09:31.640> you<00:09:31.720> will" + }, + { + "start": 571.95, + "duration": 0.0, + "text": "But, then you will" + }, + { + "start": 571.96, + "duration": 0.0, + "text": "But, then you will >> say,<00:09:32.160> \"Hey,<00:09:32.360> I<00:09:32.440> actually<00:09:32.880> skip<00:09:33.360> the<00:09:33.720> the<00:09:33.800> ones" + }, + { + "start": 574.03, + "duration": 0.0, + "text": ">> say, \"Hey, I actually skip the the ones" + }, + { + "start": 574.04, + "duration": 0.0, + "text": ">> say, \"Hey, I actually skip the the ones in<00:09:34.160> between?\"" + }, + { + "start": 575.75, + "duration": 0.0, + "text": "in between?\"" + }, + { + "start": 575.76, + "duration": 0.0, + "text": "in between?\" No,<00:09:35.960> so<00:09:36.120> it<00:09:36.160> just<00:09:36.440> changes<00:09:36.800> the<00:09:36.920> position<00:09:37.360> of" + }, + { + "start": 577.43, + "duration": 0.0, + "text": "No, so it just changes the position of" + }, + { + "start": 577.44, + "duration": 0.0, + "text": "No, so it just changes the position of the<00:09:37.560> thread's<00:09:37.960> instruction<00:09:38.440> pointer.<00:09:38.840> So,<00:09:39.480> um" + }, + { + "start": 579.79, + "duration": 0.0, + "text": "the thread's instruction pointer. So, um" + }, + { + "start": 579.8, + "duration": 0.0, + "text": "the thread's instruction pointer. So, um all<00:09:40.000> the<00:09:40.440> like<00:09:40.640> it's<00:09:40.760> not<00:09:40.920> changing<00:09:41.200> any" + }, + { + "start": 581.35, + "duration": 0.0, + "text": "all the like it's not changing any" + }, + { + "start": 581.36, + "duration": 0.0, + "text": "all the like it's not changing any memory<00:09:41.880> or<00:09:42.040> anything.<00:09:42.320> It's<00:09:42.760> only<00:09:43.040> changing" + }, + { + "start": 583.35, + "duration": 0.0, + "text": "memory or anything. It's only changing" + }, + { + "start": 583.36, + "duration": 0.0, + "text": "memory or anything. It's only changing the<00:09:43.440> instruction<00:09:43.840> pointer<00:09:44.080> register," + }, + { + "start": 584.75, + "duration": 0.0, + "text": "the instruction pointer register," + }, + { + "start": 584.76, + "duration": 0.0, + "text": "the instruction pointer register, actually,<00:09:45.680> of<00:09:45.800> the<00:09:45.880> thread." + }, + { + "start": 586.95, + "duration": 0.0, + "text": "actually, of the thread." + }, + { + "start": 586.96, + "duration": 0.0, + "text": "actually, of the thread. Um<00:09:47.160> so,<00:09:47.280> you<00:09:47.360> can<00:09:47.520> rerun<00:09:47.920> code<00:09:48.480> this<00:09:48.720> way.<00:09:49.320> Um" + }, + { + "start": 590.47, + "duration": 0.0, + "text": "Um so, you can rerun code this way. Um" + }, + { + "start": 590.48, + "duration": 0.0, + "text": "Um so, you can rerun code this way. Um if<00:09:50.680> you<00:09:50.800> have<00:09:51.000> pretty<00:09:51.200> deterministic<00:09:51.800> code," + }, + { + "start": 592.11, + "duration": 0.0, + "text": "if you have pretty deterministic code," + }, + { + "start": 592.12, + "duration": 0.0, + "text": "if you have pretty deterministic code, this<00:09:52.280> actually<00:09:52.560> gets<00:09:52.800> you<00:09:52.960> like,<00:09:53.720> you<00:09:53.800> know," + }, + { + "start": 593.91, + "duration": 0.0, + "text": "this actually gets you like, you know," + }, + { + "start": 593.92, + "duration": 0.0, + "text": "this actually gets you like, you know, pretty<00:09:54.200> close<00:09:54.560> to<00:09:54.720> the<00:09:54.920> full,<00:09:55.800> uh" + }, + { + "start": 596.39, + "duration": 0.0, + "text": "pretty close to the full, uh" + }, + { + "start": 596.4, + "duration": 0.0, + "text": "pretty close to the full, uh like<00:09:56.560> this<00:09:56.760> is<00:09:57.040> a<00:09:57.120> lot<00:09:57.440> like<00:09:57.680> timeline" + }, + { + "start": 597.99, + "duration": 0.0, + "text": "like this is a lot like timeline" + }, + { + "start": 598.0, + "duration": 0.0, + "text": "like this is a lot like timeline debugging<00:09:58.560> if<00:09:58.840> you<00:09:59.320> have<00:09:59.600> pretty" + }, + { + "start": 599.83, + "duration": 0.0, + "text": "debugging if you have pretty" + }, + { + "start": 599.84, + "duration": 0.0, + "text": "debugging if you have pretty deterministic<00:10:00.480> code,<00:10:01.280> where<00:10:01.440> time<00:10:01.760> travel<00:10:02.120> or" + }, + { + "start": 602.43, + "duration": 0.0, + "text": "deterministic code, where time travel or" + }, + { + "start": 602.44, + "duration": 0.0, + "text": "deterministic code, where time travel or I<00:10:02.480> shouldn't<00:10:02.680> say<00:10:02.760> timeline<00:10:03.120> debugging.<00:10:03.400> I" + }, + { + "start": 603.43, + "duration": 0.0, + "text": "I shouldn't say timeline debugging. I" + }, + { + "start": 603.44, + "duration": 0.0, + "text": "I shouldn't say timeline debugging. I should<00:10:03.600> say<00:10:03.720> time<00:10:04.120> travel<00:10:04.440> debugging." + }, + { + "start": 605.47, + "duration": 0.0, + "text": "should say time travel debugging." + }, + { + "start": 605.48, + "duration": 0.0, + "text": "should say time travel debugging. Um<00:10:06.240> which<00:10:06.400> are<00:10:06.520> different<00:10:06.840> things,<00:10:07.120> but" + }, + { + "start": 608.35, + "duration": 0.0, + "text": "Um which are different things, but" + }, + { + "start": 608.36, + "duration": 0.0, + "text": "Um which are different things, but So,<00:10:08.720> time<00:10:09.040> travel<00:10:09.280> debugging<00:10:09.600> people<00:10:10.040> will" + }, + { + "start": 610.11, + "duration": 0.0, + "text": "So, time travel debugging people will" + }, + { + "start": 610.12, + "duration": 0.0, + "text": "So, time travel debugging people will often<00:10:10.360> think<00:10:10.520> of<00:10:10.720> features<00:10:11.040> like<00:10:11.160> step" + }, + { + "start": 611.47, + "duration": 0.0, + "text": "often think of features like step" + }, + { + "start": 611.48, + "duration": 0.0, + "text": "often think of features like step backwards,<00:10:12.080> for<00:10:12.200> example.<00:10:12.640> Like,<00:10:13.120> you<00:10:13.200> know," + }, + { + "start": 613.27, + "duration": 0.0, + "text": "backwards, for example. Like, you know," + }, + { + "start": 613.28, + "duration": 0.0, + "text": "backwards, for example. Like, you know, if<00:10:13.400> you<00:10:13.480> step<00:10:13.720> forward,<00:10:14.640> you<00:10:14.720> might<00:10:14.840> also<00:10:15.040> want" + }, + { + "start": 615.19, + "duration": 0.0, + "text": "if you step forward, you might also want" + }, + { + "start": 615.2, + "duration": 0.0, + "text": "if you step forward, you might also want to<00:10:15.280> say<00:10:15.440> like,<00:10:15.640> \"Hey,<00:10:16.160> like<00:10:16.320> I<00:10:16.360> want<00:10:16.520> to<00:10:16.560> go" + }, + { + "start": 616.71, + "duration": 0.0, + "text": "to say like, \"Hey, like I want to go" + }, + { + "start": 616.72, + "duration": 0.0, + "text": "to say like, \"Hey, like I want to go back<00:10:17.040> to<00:10:17.120> this<00:10:17.560> to<00:10:17.680> the<00:10:17.760> point<00:10:18.000> in<00:10:18.080> time<00:10:18.480> in" + }, + { + "start": 618.63, + "duration": 0.0, + "text": "back to this to the point in time in" + }, + { + "start": 618.64, + "duration": 0.0, + "text": "back to this to the point in time in history<00:10:19.720> where<00:10:19.920> my<00:10:20.040> thread<00:10:20.320> was<00:10:20.440> here.\"<00:10:21.440> Um" + }, + { + "start": 622.47, + "duration": 0.0, + "text": "history where my thread was here.\" Um" + }, + { + "start": 622.48, + "duration": 0.0, + "text": "history where my thread was here.\" Um that<00:10:22.800> that<00:10:23.440> feature's<00:10:23.920> pretty<00:10:24.360> complicated" + }, + { + "start": 624.83, + "duration": 0.0, + "text": "that that feature's pretty complicated" + }, + { + "start": 624.84, + "duration": 0.0, + "text": "that that feature's pretty complicated and<00:10:24.920> not<00:10:25.160> supported<00:10:25.560> by<00:10:25.640> the<00:10:25.720> debugger<00:10:25.960> right" + }, + { + "start": 626.11, + "duration": 0.0, + "text": "and not supported by the debugger right" + }, + { + "start": 626.12, + "duration": 0.0, + "text": "and not supported by the debugger right now.<00:10:26.280> But,<00:10:26.440> you<00:10:26.520> can<00:10:26.640> rerun<00:10:27.040> code<00:10:27.240> by" + }, + { + "start": 627.35, + "duration": 0.0, + "text": "now. But, you can rerun code by" + }, + { + "start": 627.36, + "duration": 0.0, + "text": "now. But, you can rerun code by repositioning<00:10:27.960> your<00:10:28.080> thread.<00:10:28.440> Anyways," + }, + { + "start": 628.75, + "duration": 0.0, + "text": "repositioning your thread. Anyways," + }, + { + "start": 628.76, + "duration": 0.0, + "text": "repositioning your thread. Anyways, that's<00:10:28.880> kind<00:10:29.040> of<00:10:29.120> a<00:10:29.160> tangent.<00:10:29.960> We're<00:10:30.080> still" + }, + { + "start": 630.27, + "duration": 0.0, + "text": "that's kind of a tangent. We're still" + }, + { + "start": 630.28, + "duration": 0.0, + "text": "that's kind of a tangent. We're still not<00:10:30.560> We're<00:10:30.680> still<00:10:30.800> doing<00:10:31.080> basic<00:10:31.400> usage<00:10:31.720> stuff." + }, + { + "start": 631.95, + "duration": 0.0, + "text": "not We're still doing basic usage stuff." + }, + { + "start": 631.96, + "duration": 0.0, + "text": "not We're still doing basic usage stuff. So,<00:10:32.080> I<00:10:32.120> should<00:10:32.560> I<00:10:32.600> should<00:10:33.080> maybe<00:10:33.360> hold<00:10:33.600> off<00:10:33.760> on" + }, + { + "start": 633.87, + "duration": 0.0, + "text": "So, I should I should maybe hold off on" + }, + { + "start": 633.88, + "duration": 0.0, + "text": "So, I should I should maybe hold off on this<00:10:34.000> stuff,<00:10:34.200> but<00:10:34.760> Anyways,<00:10:35.120> so<00:10:35.200> I<00:10:35.240> can<00:10:35.400> step" + }, + { + "start": 635.59, + "duration": 0.0, + "text": "this stuff, but Anyways, so I can step" + }, + { + "start": 635.6, + "duration": 0.0, + "text": "this stuff, but Anyways, so I can step through<00:10:36.440> and<00:10:36.880> if<00:10:37.000> I<00:10:37.080> have<00:10:37.200> like<00:10:37.320> a<00:10:37.400> variable" + }, + { + "start": 638.11, + "duration": 0.0, + "text": "through and if I have like a variable" + }, + { + "start": 638.12, + "duration": 0.0, + "text": "through and if I have like a variable that's<00:10:38.400> in<00:10:38.560> my<00:10:38.680> code<00:10:39.160> and<00:10:39.280> I<00:10:39.320> want<00:10:39.480> to<00:10:39.560> see<00:10:39.800> what" + }, + { + "start": 639.91, + "duration": 0.0, + "text": "that's in my code and I want to see what" + }, + { + "start": 639.92, + "duration": 0.0, + "text": "that's in my code and I want to see what the<00:10:40.000> value<00:10:40.400> is,<00:10:40.600> I<00:10:40.680> can<00:10:40.839> just<00:10:41.040> hover<00:10:41.720> the<00:10:41.839> name" + }, + { + "start": 641.99, + "duration": 0.0, + "text": "the value is, I can just hover the name" + }, + { + "start": 642.0, + "duration": 0.0, + "text": "the value is, I can just hover the name of<00:10:42.040> that<00:10:42.160> variable<00:10:42.520> in<00:10:42.640> the<00:10:42.720> code.<00:10:43.680> Um" + }, + { + "start": 644.11, + "duration": 0.0, + "text": "of that variable in the code. Um" + }, + { + "start": 644.12, + "duration": 0.0, + "text": "of that variable in the code. Um actually,<00:10:44.360> let<00:10:44.480> me<00:10:45.000> um" + }, + { + "start": 646.39, + "duration": 0.0, + "text": "actually, let me um" + }, + { + "start": 646.4, + "duration": 0.0, + "text": "actually, let me um All<00:10:46.600> this<00:10:46.760> stuff<00:10:47.120> because<00:10:47.440> I<00:10:47.560> ran<00:10:47.800> this" + }, + { + "start": 647.91, + "duration": 0.0, + "text": "All this stuff because I ran this" + }, + { + "start": 647.92, + "duration": 0.0, + "text": "All this stuff because I ran this function<00:10:48.240> once<00:10:48.480> already,<00:10:48.800> all<00:10:48.960> this<00:10:49.280> all" + }, + { + "start": 649.39, + "duration": 0.0, + "text": "function once already, all this all" + }, + { + "start": 649.4, + "duration": 0.0, + "text": "function once already, all this all these<00:10:49.520> variables<00:10:49.920> are<00:10:49.960> going<00:10:50.200> to<00:10:50.280> be" + }, + { + "start": 650.43, + "duration": 0.0, + "text": "these variables are going to be" + }, + { + "start": 650.44, + "duration": 0.0, + "text": "these variables are going to be initialized<00:10:51.040> because<00:10:51.680> the<00:10:51.760> function<00:10:52.080> will" + }, + { + "start": 652.19, + "duration": 0.0, + "text": "initialized because the function will" + }, + { + "start": 652.2, + "duration": 0.0, + "text": "initialized because the function will have<00:10:52.360> run.<00:10:52.600> So,<00:10:52.720> what<00:10:52.839> I'll<00:10:52.960> do<00:10:53.680> is<00:10:53.800> I'm<00:10:53.880> going" + }, + { + "start": 653.99, + "duration": 0.0, + "text": "have run. So, what I'll do is I'm going" + }, + { + "start": 654.0, + "duration": 0.0, + "text": "have run. So, what I'll do is I'm going to<00:10:54.520> I'm<00:10:54.640> going<00:10:54.760> to<00:10:54.839> restart<00:10:55.200> the<00:10:55.280> program.<00:10:55.880> I'm" + }, + { + "start": 655.99, + "duration": 0.0, + "text": "to I'm going to restart the program. I'm" + }, + { + "start": 656.0, + "duration": 0.0, + "text": "to I'm going to restart the program. I'm going<00:10:56.120> to<00:10:56.160> put<00:10:56.320> a<00:10:56.360> breakpoint<00:10:56.920> right<00:10:57.080> here." + }, + { + "start": 657.27, + "duration": 0.0, + "text": "going to put a breakpoint right here." + }, + { + "start": 657.28, + "duration": 0.0, + "text": "going to put a breakpoint right here. So,<00:10:57.440> a<00:10:57.480> breakpoint<00:10:57.920> is<00:10:58.040> basically<00:10:58.360> saying<00:10:58.680> any" + }, + { + "start": 658.87, + "duration": 0.0, + "text": "So, a breakpoint is basically saying any" + }, + { + "start": 658.88, + "duration": 0.0, + "text": "So, a breakpoint is basically saying any thread<00:10:59.200> that<00:10:59.360> hits<00:10:59.600> this<00:10:59.800> spot<00:11:00.160> in<00:11:00.240> the<00:11:00.320> code," + }, + { + "start": 661.59, + "duration": 0.0, + "text": "thread that hits this spot in the code," + }, + { + "start": 661.6, + "duration": 0.0, + "text": "thread that hits this spot in the code, let's<00:11:01.760> just<00:11:01.920> stop<00:11:02.120> the<00:11:02.200> program,<00:11:02.640> right?" + }, + { + "start": 663.87, + "duration": 0.0, + "text": "let's just stop the program, right?" + }, + { + "start": 663.88, + "duration": 0.0, + "text": "let's just stop the program, right? And<00:11:04.480> uh<00:11:04.600> so,<00:11:05.200> the<00:11:05.280> debugger<00:11:05.600> will<00:11:05.760> pause<00:11:06.320> the" + }, + { + "start": 666.43, + "duration": 0.0, + "text": "And uh so, the debugger will pause the" + }, + { + "start": 666.44, + "duration": 0.0, + "text": "And uh so, the debugger will pause the entire<00:11:06.800> program<00:11:07.280> when<00:11:07.520> one<00:11:07.720> thread<00:11:07.960> hits<00:11:08.200> this" + }, + { + "start": 668.35, + "duration": 0.0, + "text": "entire program when one thread hits this" + }, + { + "start": 668.36, + "duration": 0.0, + "text": "entire program when one thread hits this position.<00:11:09.120> Now,<00:11:09.200> I'm<00:11:09.320> going<00:11:09.440> to<00:11:09.520> kill<00:11:09.800> the" + }, + { + "start": 669.87, + "duration": 0.0, + "text": "position. Now, I'm going to kill the" + }, + { + "start": 669.88, + "duration": 0.0, + "text": "position. Now, I'm going to kill the program<00:11:10.920> by<00:11:11.040> hitting<00:11:11.320> the<00:11:11.760> the<00:11:11.839> kill<00:11:12.120> all" + }, + { + "start": 672.75, + "duration": 0.0, + "text": "program by hitting the the kill all" + }, + { + "start": 672.76, + "duration": 0.0, + "text": "program by hitting the the kill all thing<00:11:13.000> up<00:11:13.120> here." + }, + { + "start": 674.03, + "duration": 0.0, + "text": "thing up here." + }, + { + "start": 674.04, + "duration": 0.0, + "text": "thing up here. Um<00:11:14.560> and<00:11:14.680> then<00:11:14.760> I'm<00:11:14.839> going<00:11:14.960> to<00:11:15.000> just<00:11:15.200> run<00:11:15.360> again." + }, + { + "start": 676.15, + "duration": 0.0, + "text": "Um and then I'm going to just run again." + }, + { + "start": 676.16, + "duration": 0.0, + "text": "Um and then I'm going to just run again. I<00:11:16.240> could<00:11:16.360> have<00:11:16.480> done<00:11:16.640> the<00:11:16.720> same<00:11:16.960> thing<00:11:17.160> by" + }, + { + "start": 677.27, + "duration": 0.0, + "text": "I could have done the same thing by" + }, + { + "start": 677.28, + "duration": 0.0, + "text": "I could have done the same thing by doing<00:11:17.680> restart.<00:11:18.520> Just<00:11:18.880> no<00:11:19.000> difference." + }, + { + "start": 680.35, + "duration": 0.0, + "text": "doing restart. Just no difference." + }, + { + "start": 680.36, + "duration": 0.0, + "text": "doing restart. Just no difference. Anyways,<00:11:20.680> once<00:11:20.880> I'm<00:11:21.000> here," + }, + { + "start": 682.23, + "duration": 0.0, + "text": "Anyways, once I'm here," + }, + { + "start": 682.24, + "duration": 0.0, + "text": "Anyways, once I'm here, if<00:11:22.400> I<00:11:22.480> have<00:11:22.640> one<00:11:22.800> of<00:11:22.880> these<00:11:23.000> variables<00:11:23.400> like" + }, + { + "start": 683.51, + "duration": 0.0, + "text": "if I have one of these variables like" + }, + { + "start": 683.52, + "duration": 0.0, + "text": "if I have one of these variables like this<00:11:23.680> basics<00:11:24.240> structure,<00:11:24.640> you<00:11:24.720> can<00:11:24.839> see<00:11:24.960> it's" + }, + { + "start": 685.07, + "duration": 0.0, + "text": "this basics structure, you can see it's" + }, + { + "start": 685.08, + "duration": 0.0, + "text": "this basics structure, you can see it's just<00:11:25.200> filled<00:11:25.400> with<00:11:25.560> garbage.<00:11:26.440> Um" + }, + { + "start": 687.23, + "duration": 0.0, + "text": "just filled with garbage. Um" + }, + { + "start": 687.24, + "duration": 0.0, + "text": "just filled with garbage. Um but<00:11:27.360> if<00:11:27.440> I<00:11:27.520> step<00:11:27.760> over<00:11:27.880> the<00:11:27.960> initialization," + }, + { + "start": 688.63, + "duration": 0.0, + "text": "but if I step over the initialization," + }, + { + "start": 688.64, + "duration": 0.0, + "text": "but if I step over the initialization, you'll<00:11:28.800> see<00:11:28.960> that<00:11:29.520> uh<00:11:29.800> the<00:11:29.839> debugger<00:11:30.160> will" + }, + { + "start": 690.23, + "duration": 0.0, + "text": "you'll see that uh the debugger will" + }, + { + "start": 690.24, + "duration": 0.0, + "text": "you'll see that uh the debugger will tell<00:11:30.400> me<00:11:30.520> what's<00:11:30.720> changed." + }, + { + "start": 692.87, + "duration": 0.0, + "text": "tell me what's changed." + }, + { + "start": 692.88, + "duration": 0.0, + "text": "tell me what's changed. And<00:11:33.080> I<00:11:33.120> can<00:11:33.280> see<00:11:34.160> that<00:11:34.360> see<00:11:34.480> the<00:11:34.560> new<00:11:34.680> values<00:11:35.040> of" + }, + { + "start": 695.11, + "duration": 0.0, + "text": "And I can see that see the new values of" + }, + { + "start": 695.12, + "duration": 0.0, + "text": "And I can see that see the new values of all<00:11:35.240> these<00:11:35.360> things<00:11:36.320> uh" + }, + { + "start": 696.95, + "duration": 0.0, + "text": "all these things uh" + }, + { + "start": 696.96, + "duration": 0.0, + "text": "all these things uh immediately." + }, + { + "start": 698.75, + "duration": 0.0, + "text": "immediately." + }, + { + "start": 698.76, + "duration": 0.0, + "text": "immediately. So,<00:11:39.080> I<00:11:39.160> can<00:11:39.280> do<00:11:39.400> that<00:11:39.600> with<00:11:39.760> pretty<00:11:39.960> much" + }, + { + "start": 700.11, + "duration": 0.0, + "text": "So, I can do that with pretty much" + }, + { + "start": 700.12, + "duration": 0.0, + "text": "So, I can do that with pretty much anything<00:11:40.440> in<00:11:41.000> in<00:11:41.160> here.<00:11:41.360> We<00:11:41.440> have<00:11:41.560> strings" + }, + { + "start": 702.03, + "duration": 0.0, + "text": "anything in in here. We have strings" + }, + { + "start": 702.04, + "duration": 0.0, + "text": "anything in in here. We have strings right<00:11:42.200> here.<00:11:43.000> We<00:11:43.080> have<00:11:43.240> longer<00:11:43.640> text.<00:11:44.760> Um<00:11:44.960> this" + }, + { + "start": 705.11, + "duration": 0.0, + "text": "right here. We have longer text. Um this" + }, + { + "start": 705.12, + "duration": 0.0, + "text": "right here. We have longer text. Um this is<00:11:45.240> a<00:11:45.280> wide<00:11:45.560> string,<00:11:45.800> so<00:11:45.960> each<00:11:46.200> character<00:11:46.680> is" + }, + { + "start": 707.03, + "duration": 0.0, + "text": "is a wide string, so each character is" + }, + { + "start": 707.04, + "duration": 0.0, + "text": "is a wide string, so each character is uh" + }, + { + "start": 707.87, + "duration": 0.0, + "text": "uh" + }, + { + "start": 707.88, + "duration": 0.0, + "text": "uh a<00:11:47.960> U16<00:11:48.560> instead<00:11:48.880> of<00:11:49.000> a<00:11:49.400> instead<00:11:49.640> of<00:11:49.840> just<00:11:50.080> one" + }, + { + "start": 710.23, + "duration": 0.0, + "text": "a U16 instead of a instead of just one" + }, + { + "start": 710.24, + "duration": 0.0, + "text": "a U16 instead of a instead of just one byte<00:11:50.600> like<00:11:50.760> the<00:11:51.000> it's<00:11:51.160> UTF-16<00:11:51.880> instead<00:11:52.080> of" + }, + { + "start": 712.15, + "duration": 0.0, + "text": "byte like the it's UTF-16 instead of" + }, + { + "start": 712.16, + "duration": 0.0, + "text": "byte like the it's UTF-16 instead of UTF-8.<00:11:53.200> Um<00:11:53.520> so,<00:11:53.640> we<00:11:53.680> can<00:11:53.800> visualize<00:11:54.160> that.<00:11:55.080> Um" + }, + { + "start": 715.99, + "duration": 0.0, + "text": "UTF-8. Um so, we can visualize that. Um" + }, + { + "start": 716.0, + "duration": 0.0, + "text": "UTF-8. Um so, we can visualize that. Um There's<00:11:56.120> a<00:11:56.160> bunch<00:11:56.360> of<00:11:56.440> like<00:11:56.840> evaluation<00:11:57.440> tests" + }, + { + "start": 717.67, + "duration": 0.0, + "text": "There's a bunch of like evaluation tests" + }, + { + "start": 717.68, + "duration": 0.0, + "text": "There's a bunch of like evaluation tests in<00:11:57.800> here.<00:11:58.040> I've<00:11:58.160> got<00:11:58.320> this<00:11:58.480> fixed<00:11:58.760> array<00:11:59.000> right" + }, + { + "start": 719.19, + "duration": 0.0, + "text": "in here. I've got this fixed array right" + }, + { + "start": 719.2, + "duration": 0.0, + "text": "in here. I've got this fixed array right here." + }, + { + "start": 721.43, + "duration": 0.0, + "text": "here." + }, + { + "start": 721.44, + "duration": 0.0, + "text": "here. Um" + }, + { + "start": 722.55, + "duration": 0.0, + "text": "Um" + }, + { + "start": 722.56, + "duration": 0.0, + "text": "Um and<00:12:02.720> then<00:12:03.240> count<00:12:03.560> member<00:12:03.840> like<00:12:04.040> the<00:12:04.160> it's<00:12:04.320> just" + }, + { + "start": 724.47, + "duration": 0.0, + "text": "and then count member like the it's just" + }, + { + "start": 724.48, + "duration": 0.0, + "text": "and then count member like the it's just this<00:12:04.600> structure.<00:12:05.400> The<00:12:05.440> other<00:12:05.560> thing<00:12:05.720> you<00:12:05.800> can" + }, + { + "start": 725.87, + "duration": 0.0, + "text": "this structure. The other thing you can" + }, + { + "start": 725.88, + "duration": 0.0, + "text": "this structure. The other thing you can do<00:12:05.960> is<00:12:06.040> evaluate<00:12:06.400> type<00:12:06.640> info.<00:12:06.960> So,<00:12:07.120> if<00:12:07.240> I<00:12:07.280> want" + }, + { + "start": 727.39, + "duration": 0.0, + "text": "do is evaluate type info. So, if I want" + }, + { + "start": 727.4, + "duration": 0.0, + "text": "do is evaluate type info. So, if I want to<00:12:07.480> look<00:12:07.600> at<00:12:07.840> what<00:12:08.040> this<00:12:08.200> type<00:12:08.480> is,<00:12:09.040> I<00:12:09.120> can<00:12:09.600> uh<00:12:10.000> I" + }, + { + "start": 730.47, + "duration": 0.0, + "text": "to look at what this type is, I can uh I" + }, + { + "start": 730.48, + "duration": 0.0, + "text": "to look at what this type is, I can uh I just<00:12:10.680> selected<00:12:11.080> this<00:12:11.200> text<00:12:11.480> and<00:12:11.560> hovered<00:12:11.840> the" + }, + { + "start": 732.03, + "duration": 0.0, + "text": "just selected this text and hovered the" + }, + { + "start": 732.04, + "duration": 0.0, + "text": "just selected this text and hovered the selected<00:12:12.320> text.<00:12:13.160> Uh<00:12:13.240> by<00:12:13.400> default,<00:12:13.760> if<00:12:13.840> you" + }, + { + "start": 733.95, + "duration": 0.0, + "text": "selected text. Uh by default, if you" + }, + { + "start": 733.96, + "duration": 0.0, + "text": "selected text. Uh by default, if you hover<00:12:14.160> types,<00:12:14.480> it<00:12:14.560> won't<00:12:14.760> show<00:12:14.920> it<00:12:15.000> cuz<00:12:15.120> it" + }, + { + "start": 735.19, + "duration": 0.0, + "text": "hover types, it won't show it cuz it" + }, + { + "start": 735.2, + "duration": 0.0, + "text": "hover types, it won't show it cuz it just<00:12:15.440> becomes<00:12:15.760> a<00:12:15.800> little<00:12:15.920> bit<00:12:16.040> too<00:12:16.160> noisy." + }, + { + "start": 736.51, + "duration": 0.0, + "text": "just becomes a little bit too noisy." + }, + { + "start": 736.52, + "duration": 0.0, + "text": "just becomes a little bit too noisy. But,<00:12:17.000> if<00:12:17.080> you<00:12:17.160> want<00:12:17.280> to<00:12:17.360> evaluate<00:12:17.760> type,<00:12:18.000> you" + }, + { + "start": 738.07, + "duration": 0.0, + "text": "But, if you want to evaluate type, you" + }, + { + "start": 738.08, + "duration": 0.0, + "text": "But, if you want to evaluate type, you can<00:12:18.520> you<00:12:18.600> can<00:12:18.920> select<00:12:19.240> the<00:12:19.320> text,<00:12:19.640> hover<00:12:19.880> it." + }, + { + "start": 741.11, + "duration": 0.0, + "text": "can you can select the text, hover it." + }, + { + "start": 741.12, + "duration": 0.0, + "text": "can you can select the text, hover it. And<00:12:21.240> then<00:12:21.360> here<00:12:21.520> you<00:12:21.640> can<00:12:21.760> see<00:12:21.880> the<00:12:22.000> type<00:12:22.200> info," + }, + { + "start": 742.47, + "duration": 0.0, + "text": "And then here you can see the type info," + }, + { + "start": 742.48, + "duration": 0.0, + "text": "And then here you can see the type info, right?<00:12:22.720> So,<00:12:22.800> you<00:12:22.920> can<00:12:23.040> see<00:12:23.200> like<00:12:24.040> um<00:12:24.800> these" + }, + { + "start": 744.99, + "duration": 0.0, + "text": "right? So, you can see like um these" + }, + { + "start": 745.0, + "duration": 0.0, + "text": "right? So, you can see like um these blue<00:12:25.240> lines,<00:12:25.600> by<00:12:25.680> the<00:12:25.760> way,<00:12:25.920> are<00:12:26.040> cache<00:12:26.360> line" + }, + { + "start": 746.51, + "duration": 0.0, + "text": "blue lines, by the way, are cache line" + }, + { + "start": 746.52, + "duration": 0.0, + "text": "blue lines, by the way, are cache line boundaries.<00:12:27.160> So,<00:12:27.240> you<00:12:27.320> can<00:12:27.440> see<00:12:27.600> like,<00:12:27.760> \"Hey," + }, + { + "start": 747.87, + "duration": 0.0, + "text": "boundaries. So, you can see like, \"Hey," + }, + { + "start": 747.88, + "duration": 0.0, + "text": "boundaries. So, you can see like, \"Hey, here's<00:12:28.120> my<00:12:28.280> array<00:12:28.560> of<00:12:28.720> pair<00:12:29.080> structures.<00:12:30.040> Each" + }, + { + "start": 750.23, + "duration": 0.0, + "text": "here's my array of pair structures. Each" + }, + { + "start": 750.24, + "duration": 0.0, + "text": "here's my array of pair structures. Each pair<00:12:30.400> structure<00:12:30.680> has<00:12:30.760> an<00:12:30.960> X<00:12:31.240> in<00:12:31.400> 32<00:12:31.840> and<00:12:31.920> a<00:12:31.960> Y" + }, + { + "start": 752.19, + "duration": 0.0, + "text": "pair structure has an X in 32 and a Y" + }, + { + "start": 752.2, + "duration": 0.0, + "text": "pair structure has an X in 32 and a Y float.\"<00:12:33.120> Um<00:12:33.280> and<00:12:33.360> it's<00:12:33.480> got<00:12:34.000> um<00:12:34.520> you<00:12:34.600> know,<00:12:35.040> 10" + }, + { + "start": 755.23, + "duration": 0.0, + "text": "float.\" Um and it's got um you know, 10" + }, + { + "start": 755.24, + "duration": 0.0, + "text": "float.\" Um and it's got um you know, 10 of<00:12:35.360> those<00:12:35.839> and<00:12:36.400> uh<00:12:36.560> right<00:12:36.760> here<00:12:36.920> is<00:12:37.000> another" + }, + { + "start": 757.23, + "duration": 0.0, + "text": "of those and uh right here is another" + }, + { + "start": 757.24, + "duration": 0.0, + "text": "of those and uh right here is another cache<00:12:37.480> line<00:12:37.640> boundary.<00:12:38.760> Um<00:12:39.160> and<00:12:39.280> then<00:12:39.400> we've" + }, + { + "start": 759.55, + "duration": 0.0, + "text": "cache line boundary. Um and then we've" + }, + { + "start": 759.56, + "duration": 0.0, + "text": "cache line boundary. Um and then we've got<00:12:39.680> the<00:12:39.800> in<00:12:39.920> 32<00:12:40.280> count<00:12:40.640> at<00:12:40.720> the<00:12:40.839> end,<00:12:41.040> right?" + }, + { + "start": 761.23, + "duration": 0.0, + "text": "got the in 32 count at the end, right?" + }, + { + "start": 761.24, + "duration": 0.0, + "text": "got the in 32 count at the end, right? So,<00:12:41.320> we<00:12:41.440> can<00:12:41.520> evaluate<00:12:41.839> type<00:12:42.040> info<00:12:42.240> that<00:12:42.400> way." + }, + { + "start": 763.47, + "duration": 0.0, + "text": "So, we can evaluate type info that way." + }, + { + "start": 763.48, + "duration": 0.0, + "text": "So, we can evaluate type info that way. Um" + }, + { + "start": 765.35, + "duration": 0.0, + "text": "Um" + }, + { + "start": 765.36, + "duration": 0.0, + "text": "Um and" + }, + { + "start": 766.51, + "duration": 0.0, + "text": "and" + }, + { + "start": 766.52, + "duration": 0.0, + "text": "and uh" + }, + { + "start": 768.07, + "duration": 0.0, + "text": "uh" + }, + { + "start": 768.08, + "duration": 0.0, + "text": "uh that's<00:12:48.320> like<00:12:48.640> that's<00:12:48.839> like<00:12:49.000> super<00:12:49.320> basic" + }, + { + "start": 770.15, + "duration": 0.0, + "text": "that's like that's like super basic" + }, + { + "start": 770.16, + "duration": 0.0, + "text": "that's like that's like super basic early<00:12:50.520> usage.<00:12:51.000> So," + }, + { + "start": 772.35, + "duration": 0.0, + "text": "early usage. So," + }, + { + "start": 772.36, + "duration": 0.0, + "text": "early usage. So, um<00:12:52.680> now<00:12:53.000> I<00:12:53.040> can<00:12:53.160> focus<00:12:53.440> on<00:12:53.520> the<00:12:53.600> watch<00:12:53.839> window." + }, + { + "start": 774.67, + "duration": 0.0, + "text": "um now I can focus on the watch window." + }, + { + "start": 774.68, + "duration": 0.0, + "text": "um now I can focus on the watch window. So,<00:12:54.760> if<00:12:54.880> I<00:12:54.920> wanted<00:12:55.240> to<00:12:55.480> like<00:12:55.680> hovering<00:12:56.040> is" + }, + { + "start": 776.15, + "duration": 0.0, + "text": "So, if I wanted to like hovering is" + }, + { + "start": 776.16, + "duration": 0.0, + "text": "So, if I wanted to like hovering is nice,<00:12:56.760> but<00:12:56.880> sometimes<00:12:57.280> you<00:12:57.400> want<00:12:57.560> to<00:12:57.680> like" + }, + { + "start": 777.95, + "duration": 0.0, + "text": "nice, but sometimes you want to like" + }, + { + "start": 777.96, + "duration": 0.0, + "text": "nice, but sometimes you want to like actually<00:12:58.240> just<00:12:58.440> have<00:12:58.600> some<00:12:58.760> expressions<00:12:59.240> in" + }, + { + "start": 779.31, + "duration": 0.0, + "text": "actually just have some expressions in" + }, + { + "start": 779.32, + "duration": 0.0, + "text": "actually just have some expressions in here.<00:13:00.000> Um" + }, + { + "start": 780.71, + "duration": 0.0, + "text": "here. Um" + }, + { + "start": 780.72, + "duration": 0.0, + "text": "here. Um so,<00:13:01.240> in<00:13:01.360> the<00:13:01.440> watch<00:13:01.600> window,<00:13:01.839> I<00:13:01.880> can<00:13:02.080> add<00:13:02.280> new" + }, + { + "start": 782.39, + "duration": 0.0, + "text": "so, in the watch window, I can add new" + }, + { + "start": 782.4, + "duration": 0.0, + "text": "so, in the watch window, I can add new expressions<00:13:03.160> uh<00:13:03.320> just<00:13:03.480> by<00:13:03.600> typing<00:13:04.080> in<00:13:04.200> this" + }, + { + "start": 784.39, + "duration": 0.0, + "text": "expressions uh just by typing in this" + }, + { + "start": 784.4, + "duration": 0.0, + "text": "expressions uh just by typing in this little<00:13:04.640> expression<00:13:05.040> slot.<00:13:05.600> I<00:13:05.680> can<00:13:05.839> hit<00:13:06.080> F2<00:13:06.480> to" + }, + { + "start": 786.55, + "duration": 0.0, + "text": "little expression slot. I can hit F2 to" + }, + { + "start": 786.56, + "duration": 0.0, + "text": "little expression slot. I can hit F2 to edit<00:13:06.800> it,<00:13:06.920> or<00:13:07.000> I<00:13:07.040> can<00:13:07.200> double<00:13:07.440> click,<00:13:07.760> or<00:13:07.800> I<00:13:07.880> can" + }, + { + "start": 787.95, + "duration": 0.0, + "text": "edit it, or I can double click, or I can" + }, + { + "start": 787.96, + "duration": 0.0, + "text": "edit it, or I can double click, or I can just<00:13:08.080> start<00:13:08.280> typing,<00:13:08.600> too.<00:13:08.800> So,<00:13:08.920> I<00:13:08.960> can<00:13:09.080> do<00:13:09.920> um" + }, + { + "start": 790.71, + "duration": 0.0, + "text": "just start typing, too. So, I can do um" + }, + { + "start": 790.72, + "duration": 0.0, + "text": "just start typing, too. So, I can do um if<00:13:10.839> I<00:13:10.880> want<00:13:11.040> to<00:13:11.080> evaluate<00:13:11.440> basic<00:13:11.800> structure," + }, + { + "start": 793.11, + "duration": 0.0, + "text": "if I want to evaluate basic structure," + }, + { + "start": 793.12, + "duration": 0.0, + "text": "if I want to evaluate basic structure, um" + }, + { + "start": 794.31, + "duration": 0.0, + "text": "um" + }, + { + "start": 794.32, + "duration": 0.0, + "text": "um this<00:13:14.600> is<00:13:14.760> just<00:13:15.400> uh<00:13:15.640> I<00:13:15.720> can<00:13:15.839> put<00:13:16.000> this<00:13:16.200> in<00:13:16.400> and<00:13:16.680> it" + }, + { + "start": 796.75, + "duration": 0.0, + "text": "this is just uh I can put this in and it" + }, + { + "start": 796.76, + "duration": 0.0, + "text": "this is just uh I can put this in and it expands<00:13:17.240> just<00:13:17.480> like<00:13:17.680> what<00:13:17.800> the<00:13:17.880> hover" + }, + { + "start": 798.11, + "duration": 0.0, + "text": "expands just like what the hover" + }, + { + "start": 798.12, + "duration": 0.0, + "text": "expands just like what the hover evaluation<00:13:18.680> would<00:13:18.760> have<00:13:18.880> done.<00:13:19.720> Um" + }, + { + "start": 801.39, + "duration": 0.0, + "text": "evaluation would have done. Um" + }, + { + "start": 801.4, + "duration": 0.0, + "text": "evaluation would have done. Um uh" + }, + { + "start": 802.71, + "duration": 0.0, + "text": "uh" + }, + { + "start": 802.72, + "duration": 0.0, + "text": "uh Let's<00:13:22.880> see<00:13:22.960> what<00:13:23.080> else.<00:13:23.480> I<00:13:23.560> can<00:13:23.680> put<00:13:23.839> string<00:13:24.160> in" + }, + { + "start": 804.27, + "duration": 0.0, + "text": "Let's see what else. I can put string in" + }, + { + "start": 804.28, + "duration": 0.0, + "text": "Let's see what else. I can put string in here.<00:13:24.839> I<00:13:24.880> can<00:13:25.000> put<00:13:25.200> longer<00:13:25.600> text<00:13:26.040> in<00:13:26.160> here.<00:13:27.040> Um" + }, + { + "start": 809.64, + "duration": 0.0, + "text": "Uh<00:13:29.920> what<00:13:30.080> else?<00:13:30.560> Let's<00:13:30.720> see." + }, + { + "start": 811.71, + "duration": 0.0, + "text": "Uh what else? Let's see." + }, + { + "start": 811.72, + "duration": 0.0, + "text": "Uh what else? Let's see. Um" + }, + { + "start": 812.99, + "duration": 0.0, + "text": "Um" + }, + { + "start": 813.0, + "duration": 0.0, + "text": "Um So<00:13:33.160> that's<00:13:33.360> like<00:13:33.840> that's<00:13:34.040> a<00:13:34.080> few<00:13:34.640> kinds<00:13:34.920> of" + }, + { + "start": 815.03, + "duration": 0.0, + "text": "So that's like that's a few kinds of" + }, + { + "start": 815.04, + "duration": 0.0, + "text": "So that's like that's a few kinds of evaluation<00:13:35.520> things.<00:13:35.800> Now<00:13:35.920> something<00:13:36.240> that's" + }, + { + "start": 816.43, + "duration": 0.0, + "text": "evaluation things. Now something that's" + }, + { + "start": 816.44, + "duration": 0.0, + "text": "evaluation things. Now something that's unique<00:13:36.680> about<00:13:36.880> the<00:13:36.960> rad<00:13:37.120> debugger<00:13:37.520> is<00:13:37.680> that" + }, + { + "start": 818.27, + "duration": 0.0, + "text": "unique about the rad debugger is that" + }, + { + "start": 818.28, + "duration": 0.0, + "text": "unique about the rad debugger is that all<00:13:38.440> those<00:13:38.720> UIs<00:13:39.040> I<00:13:39.120> showed<00:13:39.320> before<00:13:39.680> like" + }, + { + "start": 819.95, + "duration": 0.0, + "text": "all those UIs I showed before like" + }, + { + "start": 819.96, + "duration": 0.0, + "text": "all those UIs I showed before like targets,<00:13:41.200> there's<00:13:41.360> also<00:13:41.600> UIs<00:13:41.880> like" + }, + { + "start": 822.11, + "duration": 0.0, + "text": "targets, there's also UIs like" + }, + { + "start": 822.12, + "duration": 0.0, + "text": "targets, there's also UIs like breakpoints." + }, + { + "start": 823.75, + "duration": 0.0, + "text": "breakpoints." + }, + { + "start": 823.76, + "duration": 0.0, + "text": "breakpoints. Um<00:13:44.360> these<00:13:44.480> are<00:13:44.560> some<00:13:44.720> breakpoints<00:13:45.280> that<00:13:45.440> I" + }, + { + "start": 825.47, + "duration": 0.0, + "text": "Um these are some breakpoints that I" + }, + { + "start": 825.48, + "duration": 0.0, + "text": "Um these are some breakpoints that I have.<00:13:46.040> Step<00:13:46.280> like<00:13:46.400> here's<00:13:46.560> the<00:13:46.640> one<00:13:46.760> I<00:13:46.800> just" + }, + { + "start": 827.03, + "duration": 0.0, + "text": "have. Step like here's the one I just" + }, + { + "start": 827.04, + "duration": 0.0, + "text": "have. Step like here's the one I just set,<00:13:47.600> which<00:13:47.800> is<00:13:48.520> right<00:13:48.720> here." + }, + { + "start": 831.03, + "duration": 0.0, + "text": "set, which is right here." + }, + { + "start": 831.04, + "duration": 0.0, + "text": "set, which is right here. Um<00:13:51.960> all<00:13:52.200> of<00:13:52.280> these<00:13:52.520> UIs<00:13:53.080> are<00:13:53.280> actually<00:13:54.120> uh<00:13:54.560> all" + }, + { + "start": 834.83, + "duration": 0.0, + "text": "Um all of these UIs are actually uh all" + }, + { + "start": 834.84, + "duration": 0.0, + "text": "Um all of these UIs are actually uh all I<00:13:54.920> guess<00:13:55.120> I'll<00:13:55.200> just<00:13:55.400> spoil<00:13:55.760> it.<00:13:55.920> These<00:13:56.480> are" + }, + { + "start": 836.63, + "duration": 0.0, + "text": "I guess I'll just spoil it. These are" + }, + { + "start": 836.64, + "duration": 0.0, + "text": "I guess I'll just spoil it. These are all<00:13:56.800> watch<00:13:57.040> windows.<00:13:57.800> Um<00:13:58.480> so<00:13:59.200> so<00:13:59.400> basically" + }, + { + "start": 839.87, + "duration": 0.0, + "text": "all watch windows. Um so so basically" + }, + { + "start": 839.88, + "duration": 0.0, + "text": "all watch windows. Um so so basically like<00:14:00.040> if<00:14:00.160> you<00:14:00.240> didn't<00:14:00.400> want<00:14:00.520> to<00:14:00.600> use<00:14:00.720> these" + }, + { + "start": 840.87, + "duration": 0.0, + "text": "like if you didn't want to use these" + }, + { + "start": 840.88, + "duration": 0.0, + "text": "like if you didn't want to use these tabs<00:14:01.160> at<00:14:01.280> all," + }, + { + "start": 842.59, + "duration": 0.0, + "text": "tabs at all," + }, + { + "start": 842.6, + "duration": 0.0, + "text": "tabs at all, you<00:14:02.680> could<00:14:02.800> just<00:14:02.960> say,<00:14:03.120> \"Hey,<00:14:03.280> I<00:14:03.360> want<00:14:03.480> to<00:14:03.520> look" + }, + { + "start": 843.67, + "duration": 0.0, + "text": "you could just say, \"Hey, I want to look" + }, + { + "start": 843.68, + "duration": 0.0, + "text": "you could just say, \"Hey, I want to look at<00:14:03.800> all<00:14:03.920> the<00:14:04.000> targets" + }, + { + "start": 845.47, + "duration": 0.0, + "text": "at all the targets" + }, + { + "start": 845.48, + "duration": 0.0, + "text": "at all the targets in<00:14:05.600> my<00:14:05.720> watch<00:14:05.960> window.\"<00:14:06.240> And<00:14:06.360> if<00:14:06.440> I<00:14:06.480> expand" + }, + { + "start": 846.87, + "duration": 0.0, + "text": "in my watch window.\" And if I expand" + }, + { + "start": 846.88, + "duration": 0.0, + "text": "in my watch window.\" And if I expand that,<00:14:07.040> then<00:14:07.200> I<00:14:07.240> just<00:14:07.480> see<00:14:07.600> something<00:14:07.880> that" + }, + { + "start": 848.03, + "duration": 0.0, + "text": "that, then I just see something that" + }, + { + "start": 848.04, + "duration": 0.0, + "text": "that, then I just see something that looks<00:14:08.600> quite<00:14:08.880> a<00:14:08.920> lot<00:14:09.320> like<00:14:09.640> the<00:14:09.760> targets<00:14:10.200> tab," + }, + { + "start": 850.75, + "duration": 0.0, + "text": "looks quite a lot like the targets tab," + }, + { + "start": 850.76, + "duration": 0.0, + "text": "looks quite a lot like the targets tab, right?<00:14:11.760> I<00:14:11.800> can<00:14:11.920> just<00:14:12.040> start<00:14:12.160> evaluating" + }, + { + "start": 852.59, + "duration": 0.0, + "text": "right? I can just start evaluating" + }, + { + "start": 852.6, + "duration": 0.0, + "text": "right? I can just start evaluating things<00:14:12.800> like<00:14:12.920> that.<00:14:13.200> If<00:14:13.320> I'm<00:14:13.440> like,<00:14:13.560> \"Hey,<00:14:13.680> I" + }, + { + "start": 853.71, + "duration": 0.0, + "text": "things like that. If I'm like, \"Hey, I" + }, + { + "start": 853.72, + "duration": 0.0, + "text": "things like that. If I'm like, \"Hey, I want<00:14:13.840> to<00:14:13.920> see<00:14:14.000> all<00:14:14.080> my<00:14:14.200> breakpoints.\"" + }, + { + "start": 855.75, + "duration": 0.0, + "text": "want to see all my breakpoints.\"" + }, + { + "start": 855.76, + "duration": 0.0, + "text": "want to see all my breakpoints.\" Uh<00:14:15.960> that<00:14:16.080> can<00:14:16.200> also<00:14:16.440> just<00:14:16.600> be<00:14:16.720> in<00:14:16.840> here." + }, + { + "start": 858.31, + "duration": 0.0, + "text": "Uh that can also just be in here." + }, + { + "start": 858.32, + "duration": 0.0, + "text": "Uh that can also just be in here. Um" + }, + { + "start": 859.59, + "duration": 0.0, + "text": "Um" + }, + { + "start": 859.6, + "duration": 0.0, + "text": "Um And<00:14:19.760> so<00:14:19.880> I<00:14:19.960> don't<00:14:20.440> necessarily<00:14:20.920> need<00:14:21.160> these" + }, + { + "start": 861.31, + "duration": 0.0, + "text": "And so I don't necessarily need these" + }, + { + "start": 861.32, + "duration": 0.0, + "text": "And so I don't necessarily need these things.<00:14:21.720> And<00:14:21.880> let<00:14:22.160> you<00:14:22.240> know,<00:14:22.360> let's<00:14:22.520> say<00:14:22.640> for" + }, + { + "start": 862.79, + "duration": 0.0, + "text": "things. And let you know, let's say for" + }, + { + "start": 862.8, + "duration": 0.0, + "text": "things. And let you know, let's say for example<00:14:23.200> that<00:14:23.360> like<00:14:24.160> you<00:14:24.240> know,<00:14:24.400> I<00:14:24.480> don't<00:14:24.640> want" + }, + { + "start": 864.75, + "duration": 0.0, + "text": "example that like you know, I don't want" + }, + { + "start": 864.76, + "duration": 0.0, + "text": "example that like you know, I don't want to<00:14:24.880> hover<00:14:25.200> my<00:14:25.360> thread<00:14:25.720> instruction<00:14:26.120> pointer" + }, + { + "start": 866.39, + "duration": 0.0, + "text": "to hover my thread instruction pointer" + }, + { + "start": 866.4, + "duration": 0.0, + "text": "to hover my thread instruction pointer every<00:14:26.640> time<00:14:26.840> I<00:14:26.880> want<00:14:27.000> to<00:14:27.080> see<00:14:27.160> the<00:14:27.240> call<00:14:27.440> stack." + }, + { + "start": 868.67, + "duration": 0.0, + "text": "every time I want to see the call stack." + }, + { + "start": 868.68, + "duration": 0.0, + "text": "every time I want to see the call stack. Um" + }, + { + "start": 869.71, + "duration": 0.0, + "text": "Um" + }, + { + "start": 869.72, + "duration": 0.0, + "text": "Um well,<00:14:30.000> like<00:14:30.440> what<00:14:30.600> can<00:14:30.720> I<00:14:30.800> do<00:14:31.120> to<00:14:31.240> start" + }, + { + "start": 871.55, + "duration": 0.0, + "text": "well, like what can I do to start" + }, + { + "start": 871.56, + "duration": 0.0, + "text": "well, like what can I do to start inspecting<00:14:32.600> the<00:14:32.720> state<00:14:33.040> of<00:14:33.160> a<00:14:33.200> particular" + }, + { + "start": 873.67, + "duration": 0.0, + "text": "inspecting the state of a particular" + }, + { + "start": 873.68, + "duration": 0.0, + "text": "inspecting the state of a particular thread?<00:14:34.040> Well,<00:14:34.440> I<00:14:34.520> know<00:14:34.680> I'm<00:14:34.760> debugging<00:14:35.120> a" + }, + { + "start": 875.15, + "duration": 0.0, + "text": "thread? Well, I know I'm debugging a" + }, + { + "start": 875.16, + "duration": 0.0, + "text": "thread? Well, I know I'm debugging a process.<00:14:35.720> So<00:14:35.800> let<00:14:35.920> me<00:14:36.040> let<00:14:36.200> me<00:14:36.480> maybe<00:14:36.720> look<00:14:36.880> at" + }, + { + "start": 876.95, + "duration": 0.0, + "text": "process. So let me let me maybe look at" + }, + { + "start": 876.96, + "duration": 0.0, + "text": "process. So let me let me maybe look at all<00:14:37.040> the<00:14:37.120> processes<00:14:37.680> I<00:14:37.720> have.<00:14:38.200> Okay,<00:14:38.440> so" + }, + { + "start": 878.55, + "duration": 0.0, + "text": "all the processes I have. Okay, so" + }, + { + "start": 878.56, + "duration": 0.0, + "text": "all the processes I have. Okay, so there's<00:14:38.800> all<00:14:38.839> the<00:14:38.920> processes<00:14:39.400> that<00:14:39.480> I'm" + }, + { + "start": 879.55, + "duration": 0.0, + "text": "there's all the processes that I'm" + }, + { + "start": 879.56, + "duration": 0.0, + "text": "there's all the processes that I'm attached<00:14:39.920> to." + }, + { + "start": 880.829, + "duration": 0.0, + "text": "attached to." + }, + { + "start": 880.839, + "duration": 0.0, + "text": "attached to. Um<00:14:41.400> if<00:14:41.520> I<00:14:41.560> expand<00:14:41.960> that,<00:14:42.120> it's<00:14:42.240> like,<00:14:42.400> \"Oh," + }, + { + "start": 882.51, + "duration": 0.0, + "text": "Um if I expand that, it's like, \"Oh," + }, + { + "start": 882.52, + "duration": 0.0, + "text": "Um if I expand that, it's like, \"Oh, I've<00:14:42.640> got<00:14:42.880> the<00:14:43.240> I've<00:14:43.360> got<00:14:43.560> threads<00:14:43.920> that<00:14:44.080> are" + }, + { + "start": 884.39, + "duration": 0.0, + "text": "I've got the I've got threads that are" + }, + { + "start": 884.4, + "duration": 0.0, + "text": "I've got the I've got threads that are in<00:14:44.520> this<00:14:44.680> process.\"<00:14:45.360> Uh<00:14:45.480> we<00:14:45.600> have<00:14:45.720> three<00:14:46.040> of" + }, + { + "start": 886.11, + "duration": 0.0, + "text": "in this process.\" Uh we have three of" + }, + { + "start": 886.12, + "duration": 0.0, + "text": "in this process.\" Uh we have three of these.<00:14:46.360> These<00:14:46.520> are<00:14:46.600> just<00:14:46.800> spawned.<00:14:47.400> The<00:14:47.520> these" + }, + { + "start": 887.71, + "duration": 0.0, + "text": "these. These are just spawned. The these" + }, + { + "start": 887.72, + "duration": 0.0, + "text": "these. These are just spawned. The these are<00:14:47.839> not<00:14:48.360> um" + }, + { + "start": 889.75, + "duration": 0.0, + "text": "are not um" + }, + { + "start": 889.76, + "duration": 0.0, + "text": "are not um these<00:14:49.880> are<00:14:49.920> not<00:14:50.080> spawned<00:14:50.360> by<00:14:50.640> this<00:14:50.880> program." + }, + { + "start": 891.23, + "duration": 0.0, + "text": "these are not spawned by this program." + }, + { + "start": 891.24, + "duration": 0.0, + "text": "these are not spawned by this program. They're<00:14:51.320> spawned<00:14:51.640> by<00:14:51.760> the<00:14:52.480> by<00:14:52.720> the<00:14:52.880> operating" + }, + { + "start": 893.23, + "duration": 0.0, + "text": "They're spawned by the by the operating" + }, + { + "start": 893.24, + "duration": 0.0, + "text": "They're spawned by the by the operating system<00:14:53.880> uh<00:14:54.360> for<00:14:55.040> for<00:14:55.200> reasons<00:14:55.520> that<00:14:55.640> are<00:14:56.000> uh" + }, + { + "start": 896.15, + "duration": 0.0, + "text": "system uh for for reasons that are uh" + }, + { + "start": 896.16, + "duration": 0.0, + "text": "system uh for for reasons that are uh you<00:14:56.240> could<00:14:56.360> probably<00:14:56.720> find<00:14:56.960> out,<00:14:57.160> but<00:14:57.360> we" + }, + { + "start": 897.71, + "duration": 0.0, + "text": "you could probably find out, but we" + }, + { + "start": 897.72, + "duration": 0.0, + "text": "you could probably find out, but we don't<00:14:57.960> know." + }, + { + "start": 898.829, + "duration": 0.0, + "text": "don't know." + }, + { + "start": 898.839, + "duration": 0.0, + "text": "don't know. Um" + }, + { + "start": 900.23, + "duration": 0.0, + "text": "Um" + }, + { + "start": 900.24, + "duration": 0.0, + "text": "Um but<00:15:00.360> anyways,<00:15:00.680> here's<00:15:00.880> my<00:15:01.040> thread.<00:15:01.320> I<00:15:01.360> can" + }, + { + "start": 901.47, + "duration": 0.0, + "text": "but anyways, here's my thread. I can" + }, + { + "start": 901.48, + "duration": 0.0, + "text": "but anyways, here's my thread. I can expand<00:15:01.880> it<00:15:02.320> and<00:15:02.400> it's<00:15:02.520> like,<00:15:02.680> \"Oh,<00:15:03.080> there's<00:15:03.280> my" + }, + { + "start": 903.39, + "duration": 0.0, + "text": "expand it and it's like, \"Oh, there's my" + }, + { + "start": 903.4, + "duration": 0.0, + "text": "expand it and it's like, \"Oh, there's my call<00:15:03.560> stack.\"<00:15:04.160> That's<00:15:04.320> just<00:15:04.560> in<00:15:04.680> here<00:15:05.480> um" + }, + { + "start": 906.15, + "duration": 0.0, + "text": "call stack.\" That's just in here um" + }, + { + "start": 906.16, + "duration": 0.0, + "text": "call stack.\" That's just in here um inside<00:15:06.520> of<00:15:06.600> this<00:15:06.760> process<00:15:07.160> tree.<00:15:07.880> Now<00:15:08.000> if<00:15:08.160> I" + }, + { + "start": 908.19, + "duration": 0.0, + "text": "inside of this process tree. Now if I" + }, + { + "start": 908.2, + "duration": 0.0, + "text": "inside of this process tree. Now if I wanted<00:15:08.480> to<00:15:08.560> like" + }, + { + "start": 909.51, + "duration": 0.0, + "text": "wanted to like" + }, + { + "start": 909.52, + "duration": 0.0, + "text": "wanted to like not<00:15:09.800> bother<00:15:10.560> expanding<00:15:11.320> that<00:15:11.480> every<00:15:11.600> time,<00:15:11.839> I" + }, + { + "start": 911.87, + "duration": 0.0, + "text": "not bother expanding that every time, I" + }, + { + "start": 911.88, + "duration": 0.0, + "text": "not bother expanding that every time, I could<00:15:12.000> also<00:15:12.200> just<00:15:12.360> do<00:15:12.480> like,<00:15:12.960> \"Okay,<00:15:13.320> well," + }, + { + "start": 913.47, + "duration": 0.0, + "text": "could also just do like, \"Okay, well," + }, + { + "start": 913.48, + "duration": 0.0, + "text": "could also just do like, \"Okay, well, can<00:15:13.640> I<00:15:13.680> do<00:15:13.839> threads?\"<00:15:14.400> Or<00:15:14.839> maybe<00:15:15.000> I<00:15:15.040> can<00:15:15.120> do" + }, + { + "start": 915.23, + "duration": 0.0, + "text": "can I do threads?\" Or maybe I can do" + }, + { + "start": 915.24, + "duration": 0.0, + "text": "can I do threads?\" Or maybe I can do processes<00:15:16.520> at<00:15:16.720> zero<00:15:17.440> dot<00:15:17.680> threads<00:15:18.920> um<00:15:19.280> at" + }, + { + "start": 919.47, + "duration": 0.0, + "text": "processes at zero dot threads um at" + }, + { + "start": 919.48, + "duration": 0.0, + "text": "processes at zero dot threads um at zero.<00:15:20.400> And<00:15:20.520> hey,<00:15:20.680> there's<00:15:20.880> my<00:15:21.000> mule<00:15:21.240> main.<00:15:21.720> And" + }, + { + "start": 921.829, + "duration": 0.0, + "text": "zero. And hey, there's my mule main. And" + }, + { + "start": 921.839, + "duration": 0.0, + "text": "zero. And hey, there's my mule main. And then<00:15:22.000> like<00:15:22.200> let's<00:15:22.400> do<00:15:22.520> like<00:15:22.680> dot<00:15:22.960> call<00:15:23.240> stack." + }, + { + "start": 924.63, + "duration": 0.0, + "text": "then like let's do like dot call stack." + }, + { + "start": 924.64, + "duration": 0.0, + "text": "then like let's do like dot call stack. There<00:15:24.760> we<00:15:24.840> go." + }, + { + "start": 925.83, + "duration": 0.0, + "text": "There we go." + }, + { + "start": 925.84, + "duration": 0.0, + "text": "There we go. Um<00:15:26.680> now<00:15:26.800> I<00:15:26.880> can<00:15:27.000> just<00:15:27.120> evaluate<00:15:27.400> the<00:15:27.480> call" + }, + { + "start": 927.67, + "duration": 0.0, + "text": "Um now I can just evaluate the call" + }, + { + "start": 927.68, + "duration": 0.0, + "text": "Um now I can just evaluate the call stack.<00:15:28.360> There's<00:15:28.760> a<00:15:29.440> a<00:15:29.520> fast<00:15:29.760> path<00:15:30.000> I<00:15:30.040> can<00:15:30.160> do" + }, + { + "start": 930.27, + "duration": 0.0, + "text": "stack. There's a a fast path I can do" + }, + { + "start": 930.28, + "duration": 0.0, + "text": "stack. There's a a fast path I can do for<00:15:30.400> that<00:15:30.680> is<00:15:30.800> just<00:15:31.040> current<00:15:31.360> thread<00:15:31.920> dot<00:15:32.120> call" + }, + { + "start": 932.35, + "duration": 0.0, + "text": "for that is just current thread dot call" + }, + { + "start": 932.36, + "duration": 0.0, + "text": "for that is just current thread dot call stack<00:15:32.920> or<00:15:33.040> even<00:15:33.200> more<00:15:33.360> succinctly<00:15:34.400> call" + }, + { + "start": 934.59, + "duration": 0.0, + "text": "stack or even more succinctly call" + }, + { + "start": 934.6, + "duration": 0.0, + "text": "stack or even more succinctly call stack.<00:15:35.400> Um<00:15:35.800> which<00:15:36.040> is<00:15:36.560> All<00:15:36.720> of<00:15:36.800> these<00:15:36.960> things" + }, + { + "start": 937.19, + "duration": 0.0, + "text": "stack. Um which is All of these things" + }, + { + "start": 937.2, + "duration": 0.0, + "text": "stack. Um which is All of these things mean<00:15:37.360> the<00:15:37.440> same<00:15:37.640> thing." + }, + { + "start": 938.67, + "duration": 0.0, + "text": "mean the same thing." + }, + { + "start": 938.68, + "duration": 0.0, + "text": "mean the same thing. And<00:15:38.800> sure<00:15:39.000> enough,<00:15:39.320> if<00:15:39.480> I<00:15:39.560> open<00:15:39.840> up<00:15:40.320> a<00:15:40.400> call" + }, + { + "start": 940.59, + "duration": 0.0, + "text": "And sure enough, if I open up a call" + }, + { + "start": 940.6, + "duration": 0.0, + "text": "And sure enough, if I open up a call stack<00:15:40.920> tab,<00:15:41.160> which<00:15:41.320> is<00:15:41.560> this<00:15:41.720> is<00:15:41.800> just<00:15:42.000> a<00:15:42.040> fast" + }, + { + "start": 942.35, + "duration": 0.0, + "text": "stack tab, which is this is just a fast" + }, + { + "start": 942.36, + "duration": 0.0, + "text": "stack tab, which is this is just a fast path,<00:15:42.680> right?<00:15:42.880> So<00:15:42.960> this<00:15:43.120> is<00:15:43.240> like" + }, + { + "start": 944.15, + "duration": 0.0, + "text": "path, right? So this is like" + }, + { + "start": 944.16, + "duration": 0.0, + "text": "path, right? So this is like um<00:15:44.600> this<00:15:44.720> is<00:15:44.840> like<00:15:45.160> very<00:15:45.440> similar<00:15:45.680> to<00:15:45.760> what" + }, + { + "start": 945.91, + "duration": 0.0, + "text": "um this is like very similar to what" + }, + { + "start": 945.92, + "duration": 0.0, + "text": "um this is like very similar to what you'd<00:15:46.040> see<00:15:46.160> in<00:15:46.240> Visual<00:15:46.520> Studio,<00:15:46.920> for<00:15:47.040> example." + }, + { + "start": 948.27, + "duration": 0.0, + "text": "you'd see in Visual Studio, for example." + }, + { + "start": 948.28, + "duration": 0.0, + "text": "you'd see in Visual Studio, for example. Um" + }, + { + "start": 949.23, + "duration": 0.0, + "text": "Um" + }, + { + "start": 949.24, + "duration": 0.0, + "text": "Um you<00:15:49.280> can<00:15:49.400> see<00:15:49.520> your<00:15:49.640> call<00:15:49.800> stack<00:15:50.080> here.<00:15:50.560> If<00:15:50.800> I" + }, + { + "start": 950.87, + "duration": 0.0, + "text": "you can see your call stack here. If I" + }, + { + "start": 950.88, + "duration": 0.0, + "text": "you can see your call stack here. If I actually<00:15:51.400> uh<00:15:51.840> go<00:15:52.000> to<00:15:52.080> this<00:15:52.240> tab<00:15:52.520> and<00:15:52.640> open<00:15:52.840> up" + }, + { + "start": 952.95, + "duration": 0.0, + "text": "actually uh go to this tab and open up" + }, + { + "start": 952.96, + "duration": 0.0, + "text": "actually uh go to this tab and open up the<00:15:53.120> options<00:15:53.600> for<00:15:53.720> this<00:15:53.880> tab,<00:15:54.360> you'll<00:15:54.560> see" + }, + { + "start": 954.75, + "duration": 0.0, + "text": "the options for this tab, you'll see" + }, + { + "start": 954.76, + "duration": 0.0, + "text": "the options for this tab, you'll see that<00:15:54.920> the<00:15:55.040> expression<00:15:56.000> that's<00:15:56.200> used<00:15:56.480> to" + }, + { + "start": 956.59, + "duration": 0.0, + "text": "that the expression that's used to" + }, + { + "start": 956.6, + "duration": 0.0, + "text": "that the expression that's used to create<00:15:57.000> this<00:15:57.480> tab<00:15:57.760> info<00:15:58.720> is<00:15:59.080> query<00:15:59.680> colon<00:16:00.160> call" + }, + { + "start": 960.39, + "duration": 0.0, + "text": "create this tab info is query colon call" + }, + { + "start": 960.4, + "duration": 0.0, + "text": "create this tab info is query colon call stack.<00:16:01.080> Now<00:16:01.320> the<00:16:01.400> query<00:16:01.720> colon<00:16:02.000> thing<00:16:02.160> is<00:16:02.280> just" + }, + { + "start": 962.47, + "duration": 0.0, + "text": "stack. Now the query colon thing is just" + }, + { + "start": 962.48, + "duration": 0.0, + "text": "stack. Now the query colon thing is just a<00:16:02.520> disambiguator.<00:16:03.360> This<00:16:03.560> is<00:16:03.640> just<00:16:03.840> in<00:16:03.920> case<00:16:04.440> if" + }, + { + "start": 964.55, + "duration": 0.0, + "text": "a disambiguator. This is just in case if" + }, + { + "start": 964.56, + "duration": 0.0, + "text": "a disambiguator. This is just in case if you<00:16:04.640> have<00:16:04.800> a<00:16:04.840> local<00:16:05.080> variable<00:16:05.480> called<00:16:05.800> call" + }, + { + "start": 965.99, + "duration": 0.0, + "text": "you have a local variable called call" + }, + { + "start": 966.0, + "duration": 0.0, + "text": "you have a local variable called call stack,<00:16:06.760> this<00:16:07.040> is<00:16:07.320> basically<00:16:07.720> telling<00:16:07.960> the" + }, + { + "start": 968.03, + "duration": 0.0, + "text": "stack, this is basically telling the" + }, + { + "start": 968.04, + "duration": 0.0, + "text": "stack, this is basically telling the debugger's<00:16:08.400> evaluation<00:16:08.920> system,<00:16:09.640> \"Hey,<00:16:10.280> I'm" + }, + { + "start": 970.47, + "duration": 0.0, + "text": "debugger's evaluation system, \"Hey, I'm" + }, + { + "start": 970.48, + "duration": 0.0, + "text": "debugger's evaluation system, \"Hey, I'm just<00:16:10.720> doing<00:16:10.920> a<00:16:10.960> debugger<00:16:11.320> query.<00:16:11.800> I<00:16:11.920> don't" + }, + { + "start": 972.19, + "duration": 0.0, + "text": "just doing a debugger query. I don't" + }, + { + "start": 972.2, + "duration": 0.0, + "text": "just doing a debugger query. I don't want<00:16:12.360> you<00:16:12.440> to<00:16:12.600> resolve<00:16:13.000> this<00:16:13.200> as<00:16:13.320> a<00:16:13.360> local" + }, + { + "start": 973.59, + "duration": 0.0, + "text": "want you to resolve this as a local" + }, + { + "start": 973.6, + "duration": 0.0, + "text": "want you to resolve this as a local variable,<00:16:14.000> right?\"<00:16:14.200> So<00:16:14.360> just<00:16:14.960> unambiguously" + }, + { + "start": 975.63, + "duration": 0.0, + "text": "variable, right?\" So just unambiguously" + }, + { + "start": 975.64, + "duration": 0.0, + "text": "variable, right?\" So just unambiguously referring<00:16:16.000> to<00:16:16.280> the<00:16:16.800> to<00:16:16.920> the<00:16:17.000> current<00:16:17.320> thread's" + }, + { + "start": 977.63, + "duration": 0.0, + "text": "referring to the to the current thread's" + }, + { + "start": 977.64, + "duration": 0.0, + "text": "referring to the to the current thread's call<00:16:17.800> stack,<00:16:18.080> basically." + }, + { + "start": 979.59, + "duration": 0.0, + "text": "call stack, basically." + }, + { + "start": 979.6, + "duration": 0.0, + "text": "call stack, basically. So<00:16:19.680> anyway,<00:16:20.000> it's<00:16:20.080> like<00:16:20.360> that's<00:16:20.600> just<00:16:20.760> all<00:16:20.880> the" + }, + { + "start": 980.95, + "duration": 0.0, + "text": "So anyway, it's like that's just all the" + }, + { + "start": 980.96, + "duration": 0.0, + "text": "So anyway, it's like that's just all the call<00:16:21.200> stack<00:16:22.240> tab<00:16:22.600> is.<00:16:23.040> And<00:16:23.160> sure<00:16:23.320> enough,<00:16:23.520> if<00:16:23.680> I" + }, + { + "start": 983.75, + "duration": 0.0, + "text": "call stack tab is. And sure enough, if I" + }, + { + "start": 983.76, + "duration": 0.0, + "text": "call stack tab is. And sure enough, if I open<00:16:23.960> up<00:16:24.080> like<00:16:24.480> the<00:16:24.600> targets<00:16:25.000> view,<00:16:25.920> query" + }, + { + "start": 986.15, + "duration": 0.0, + "text": "open up like the targets view, query" + }, + { + "start": 986.16, + "duration": 0.0, + "text": "open up like the targets view, query targets," + }, + { + "start": 988.829, + "duration": 0.0, + "text": "targets," + }, + { + "start": 988.839, + "duration": 0.0, + "text": "targets, query<00:16:29.120> breakpoints," + }, + { + "start": 990.91, + "duration": 0.0, + "text": "query breakpoints," + }, + { + "start": 990.92, + "duration": 0.0, + "text": "query breakpoints, uh" + }, + { + "start": 992.63, + "duration": 0.0, + "text": "uh" + }, + { + "start": 992.64, + "duration": 0.0, + "text": "uh I<00:16:32.680> don't<00:16:32.800> know.<00:16:33.280> That's<00:16:33.640> like" + }, + { + "start": 994.23, + "duration": 0.0, + "text": "I don't know. That's like" + }, + { + "start": 994.24, + "duration": 0.0, + "text": "I don't know. That's like >> It's<00:16:34.440> good<00:16:34.720> because<00:16:35.040> like<00:16:35.360> already<00:16:35.800> people" + }, + { + "start": 996.23, + "duration": 0.0, + "text": ">> It's good because like already people" + }, + { + "start": 996.24, + "duration": 0.0, + "text": ">> It's good because like already people three<00:16:36.880> separate<00:16:37.280> people<00:16:37.720> at<00:16:37.839> the<00:16:37.960> same<00:16:38.360> time" + }, + { + "start": 998.95, + "duration": 0.0, + "text": "three separate people at the same time" + }, + { + "start": 998.96, + "duration": 0.0, + "text": "three separate people at the same time asked<00:16:39.320> like,<00:16:39.480> \"What<00:16:39.680> if<00:16:39.839> you<00:16:40.000> have<00:16:40.320> a<00:16:40.400> variable" + }, + { + "start": 1001.03, + "duration": 0.0, + "text": "asked like, \"What if you have a variable" + }, + { + "start": 1001.04, + "duration": 0.0, + "text": "asked like, \"What if you have a variable named<00:16:41.520> targets<00:16:42.160> or<00:16:42.440> breakpoints?\"" + }, + { + "start": 1003.11, + "duration": 0.0, + "text": "named targets or breakpoints?\"" + }, + { + "start": 1003.12, + "duration": 0.0, + "text": "named targets or breakpoints?\" >> Yes.<00:16:43.600> Yes.<00:16:43.880> Yes.<00:16:44.120> Yes.<00:16:44.440> Of<00:16:44.560> course.<00:16:44.920> Yeah." + }, + { + "start": 1005.95, + "duration": 0.0, + "text": ">> Yes. Yes. Yes. Yes. Of course. Yeah." + }, + { + "start": 1005.96, + "duration": 0.0, + "text": ">> Yes. Yes. Yes. Yes. Of course. Yeah. Um<00:16:46.360> so<00:16:46.560> that's<00:16:46.920> that's<00:16:47.560> uh<00:16:47.760> that's<00:16:48.000> like" + }, + { + "start": 1009.55, + "duration": 0.0, + "text": "Um so that's that's uh that's like" + }, + { + "start": 1009.56, + "duration": 0.0, + "text": "Um so that's that's uh that's like interesting<00:16:49.960> thing<00:16:50.480> number<00:16:50.720> one.<00:16:50.960> So<00:16:51.040> that's" + }, + { + "start": 1011.19, + "duration": 0.0, + "text": "interesting thing number one. So that's" + }, + { + "start": 1011.2, + "duration": 0.0, + "text": "interesting thing number one. So that's some<00:16:51.320> basic<00:16:51.640> usage<00:16:52.120> and<00:16:52.280> showing<00:16:53.040> kind<00:16:53.200> of<00:16:53.280> how" + }, + { + "start": 1013.43, + "duration": 0.0, + "text": "some basic usage and showing kind of how" + }, + { + "start": 1013.44, + "duration": 0.0, + "text": "some basic usage and showing kind of how all<00:16:53.560> these<00:16:53.760> views<00:16:54.040> are<00:16:54.160> really<00:16:54.400> just<00:16:54.640> all" + }, + { + "start": 1014.87, + "duration": 0.0, + "text": "all these views are really just all" + }, + { + "start": 1014.88, + "duration": 0.0, + "text": "all these views are really just all different<00:16:55.160> versions<00:16:55.480> of<00:16:55.560> the<00:16:55.640> same<00:16:55.880> thing.<00:16:56.640> So" + }, + { + "start": 1016.75, + "duration": 0.0, + "text": "different versions of the same thing. So" + }, + { + "start": 1016.76, + "duration": 0.0, + "text": "different versions of the same thing. So another<00:16:57.000> thing<00:16:57.200> that<00:16:57.320> we<00:16:57.440> can<00:16:57.560> do,<00:16:57.800> so<00:16:57.920> we<00:16:58.040> have" + }, + { + "start": 1018.75, + "duration": 0.0, + "text": "another thing that we can do, so we have" + }, + { + "start": 1018.76, + "duration": 0.0, + "text": "another thing that we can do, so we have I<00:16:58.839> showed<00:16:59.080> breakpoints<00:16:59.520> already.<00:16:59.880> What<00:17:00.000> I<00:17:00.080> can" + }, + { + "start": 1020.23, + "duration": 0.0, + "text": "I showed breakpoints already. What I can" + }, + { + "start": 1020.24, + "duration": 0.0, + "text": "I showed breakpoints already. What I can do<00:17:00.560> is<00:17:01.320> um" + }, + { + "start": 1021.91, + "duration": 0.0, + "text": "do is um" + }, + { + "start": 1021.92, + "duration": 0.0, + "text": "do is um I<00:17:01.960> can<00:17:02.080> also<00:17:02.240> show<00:17:02.400> some<00:17:02.720> better<00:17:03.160> of<00:17:03.520> uh" + }, + { + "start": 1024.27, + "duration": 0.0, + "text": "I can also show some better of uh" + }, + { + "start": 1024.28, + "duration": 0.0, + "text": "I can also show some better of uh visualization<00:17:04.959> stuff." + }, + { + "start": 1026.55, + "duration": 0.0, + "text": "visualization stuff." + }, + { + "start": 1026.56, + "duration": 0.0, + "text": "visualization stuff. So<00:17:06.640> if<00:17:06.760> I<00:17:06.839> go<00:17:07.000> to<00:17:07.079> like<00:17:07.600> longer<00:17:08.040> text,<00:17:08.560> for" + }, + { + "start": 1028.67, + "duration": 0.0, + "text": "So if I go to like longer text, for" + }, + { + "start": 1028.68, + "duration": 0.0, + "text": "So if I go to like longer text, for example,<00:17:09.079> that<00:17:09.240> variable<00:17:09.680> up<00:17:09.760> here<00:17:09.959> that's" + }, + { + "start": 1030.069, + "duration": 0.0, + "text": "example, that variable up here that's" + }, + { + "start": 1030.079, + "duration": 0.0, + "text": "example, that variable up here that's just<00:17:10.280> a<00:17:10.319> big<00:17:10.920> string.<00:17:11.560> If<00:17:11.680> you're<00:17:11.760> trying<00:17:11.959> to" + }, + { + "start": 1031.99, + "duration": 0.0, + "text": "just a big string. If you're trying to" + }, + { + "start": 1032.0, + "duration": 0.0, + "text": "just a big string. If you're trying to like<00:17:12.199> look<00:17:12.360> at<00:17:12.480> this<00:17:12.680> text<00:17:12.959> and<00:17:13.040> like<00:17:13.640> um<00:17:14.120> I<00:17:14.199> In" + }, + { + "start": 1034.309, + "duration": 0.0, + "text": "like look at this text and like um I In" + }, + { + "start": 1034.319, + "duration": 0.0, + "text": "like look at this text and like um I In this<00:17:14.480> case<00:17:14.640> it's<00:17:14.800> short<00:17:15.040> enough<00:17:15.240> that<00:17:15.360> you<00:17:15.400> can" + }, + { + "start": 1035.51, + "duration": 0.0, + "text": "this case it's short enough that you can" + }, + { + "start": 1035.52, + "duration": 0.0, + "text": "this case it's short enough that you can actually<00:17:15.760> see<00:17:15.959> it,<00:17:16.160> but<00:17:16.520> uh<00:17:16.640> just<00:17:16.880> when<00:17:17.040> I" + }, + { + "start": 1037.11, + "duration": 0.0, + "text": "actually see it, but uh just when I" + }, + { + "start": 1037.12, + "duration": 0.0, + "text": "actually see it, but uh just when I hover.<00:17:17.839> But<00:17:17.959> if,<00:17:18.319> you<00:17:18.400> know,<00:17:18.560> like<00:17:18.880> looking<00:17:19.199> at" + }, + { + "start": 1039.309, + "duration": 0.0, + "text": "hover. But if, you know, like looking at" + }, + { + "start": 1039.319, + "duration": 0.0, + "text": "hover. But if, you know, like looking at the<00:17:19.400> string<00:17:19.680> this<00:17:19.880> way<00:17:20.720> is<00:17:20.880> not<00:17:21.040> necessarily" + }, + { + "start": 1041.63, + "duration": 0.0, + "text": "the string this way is not necessarily" + }, + { + "start": 1041.64, + "duration": 0.0, + "text": "the string this way is not necessarily what<00:17:21.800> you<00:17:21.920> want,<00:17:22.160> especially<00:17:22.520> like<00:17:22.720> it<00:17:22.880> has" + }, + { + "start": 1043.069, + "duration": 0.0, + "text": "what you want, especially like it has" + }, + { + "start": 1043.079, + "duration": 0.0, + "text": "what you want, especially like it has some<00:17:23.240> new<00:17:23.400> line<00:17:23.640> characters<00:17:24.120> in<00:17:24.240> there.<00:17:24.520> Like" + }, + { + "start": 1044.67, + "duration": 0.0, + "text": "some new line characters in there. Like" + }, + { + "start": 1044.68, + "duration": 0.0, + "text": "some new line characters in there. Like maybe<00:17:24.920> I<00:17:24.959> don't<00:17:25.199> want<00:17:25.360> the<00:17:25.439> single<00:17:25.760> line<00:17:26.560> um" + }, + { + "start": 1046.87, + "duration": 0.0, + "text": "maybe I don't want the single line um" + }, + { + "start": 1046.88, + "duration": 0.0, + "text": "maybe I don't want the single line um visualization<00:17:27.520> here.<00:17:28.160> What<00:17:28.280> I<00:17:28.319> can<00:17:28.439> actually" + }, + { + "start": 1048.67, + "duration": 0.0, + "text": "visualization here. What I can actually" + }, + { + "start": 1048.68, + "duration": 0.0, + "text": "visualization here. What I can actually do<00:17:29.000> is<00:17:29.360> uh" + }, + { + "start": 1049.99, + "duration": 0.0, + "text": "do is uh" + }, + { + "start": 1050.0, + "duration": 0.0, + "text": "do is uh use<00:17:30.520> uh<00:17:30.760> a<00:17:30.840> view<00:17:31.480> as" + }, + { + "start": 1052.39, + "duration": 0.0, + "text": "use uh a view as" + }, + { + "start": 1052.4, + "duration": 0.0, + "text": "use uh a view as in<00:17:32.760> in<00:17:33.000> the<00:17:33.200> Rad<00:17:33.360> Debugger's<00:17:33.720> parlance." + }, + { + "start": 1055.11, + "duration": 0.0, + "text": "in in the Rad Debugger's parlance." + }, + { + "start": 1055.12, + "duration": 0.0, + "text": "in in the Rad Debugger's parlance. And<00:17:35.240> I<00:17:35.320> can<00:17:35.440> just<00:17:35.560> say,<00:17:35.720> \"Hey,<00:17:35.880> I<00:17:35.960> want<00:17:36.120> to" + }, + { + "start": 1056.19, + "duration": 0.0, + "text": "And I can just say, \"Hey, I want to" + }, + { + "start": 1056.2, + "duration": 0.0, + "text": "And I can just say, \"Hey, I want to visualize<00:17:36.560> this<00:17:36.680> as<00:17:36.840> text.\"" + }, + { + "start": 1058.19, + "duration": 0.0, + "text": "visualize this as text.\"" + }, + { + "start": 1058.2, + "duration": 0.0, + "text": "visualize this as text.\" Um<00:17:38.360> and<00:17:38.480> here<00:17:38.680> I<00:17:38.720> can<00:17:38.880> put<00:17:39.040> in<00:17:39.160> a<00:17:39.200> bunch<00:17:39.400> of" + }, + { + "start": 1059.43, + "duration": 0.0, + "text": "Um and here I can put in a bunch of" + }, + { + "start": 1059.44, + "duration": 0.0, + "text": "Um and here I can put in a bunch of different<00:17:39.680> parameters.<00:17:40.120> So,<00:17:40.200> the<00:17:40.280> first" + }, + { + "start": 1060.51, + "duration": 0.0, + "text": "different parameters. So, the first" + }, + { + "start": 1060.52, + "duration": 0.0, + "text": "different parameters. So, the first thing<00:17:40.640> is<00:17:40.760> just<00:17:40.920> the<00:17:41.000> expression<00:17:41.600> to<00:17:41.720> describe" + }, + { + "start": 1062.75, + "duration": 0.0, + "text": "thing is just the expression to describe" + }, + { + "start": 1062.76, + "duration": 0.0, + "text": "thing is just the expression to describe whatever<00:17:43.120> text<00:17:43.840> I<00:17:43.960> would<00:17:44.120> like<00:17:44.440> like<00:17:44.640> whatever" + }, + { + "start": 1064.95, + "duration": 0.0, + "text": "whatever text I would like like whatever" + }, + { + "start": 1064.96, + "duration": 0.0, + "text": "whatever text I would like like whatever expression<00:17:45.480> that<00:17:45.600> will<00:17:45.760> refer<00:17:46.120> me<00:17:46.320> to<00:17:46.480> the" + }, + { + "start": 1066.55, + "duration": 0.0, + "text": "expression that will refer me to the" + }, + { + "start": 1066.56, + "duration": 0.0, + "text": "expression that will refer me to the text<00:17:46.800> that<00:17:46.920> I<00:17:46.960> want<00:17:47.200> to<00:17:47.240> visualize.<00:17:47.760> Like<00:17:47.920> to" + }, + { + "start": 1068.03, + "duration": 0.0, + "text": "text that I want to visualize. Like to" + }, + { + "start": 1068.04, + "duration": 0.0, + "text": "text that I want to visualize. Like to the<00:17:48.120> data<00:17:48.400> that<00:17:48.520> I<00:17:48.560> want<00:17:48.680> to<00:17:48.760> visualize<00:17:49.040> as" + }, + { + "start": 1069.15, + "duration": 0.0, + "text": "the data that I want to visualize as" + }, + { + "start": 1069.16, + "duration": 0.0, + "text": "the data that I want to visualize as text.<00:17:49.960> I<00:17:50.000> put<00:17:50.200> that<00:17:50.360> here.<00:17:51.120> Um<00:17:51.320> I<00:17:51.360> can<00:17:51.480> also" + }, + { + "start": 1071.71, + "duration": 0.0, + "text": "text. I put that here. Um I can also" + }, + { + "start": 1071.72, + "duration": 0.0, + "text": "text. I put that here. Um I can also supply<00:17:52.040> like<00:17:52.240> a<00:17:52.320> language.<00:17:53.160> So,<00:17:54.080> I<00:17:54.160> mean,<00:17:54.400> I" + }, + { + "start": 1074.43, + "duration": 0.0, + "text": "supply like a language. So, I mean, I" + }, + { + "start": 1074.44, + "duration": 0.0, + "text": "supply like a language. So, I mean, I don't<00:17:54.600> know<00:17:54.720> why<00:17:54.920> I<00:17:54.960> would<00:17:55.080> do<00:17:55.240> that<00:17:55.400> for<00:17:55.520> this" + }, + { + "start": 1075.71, + "duration": 0.0, + "text": "don't know why I would do that for this" + }, + { + "start": 1075.72, + "duration": 0.0, + "text": "don't know why I would do that for this longer<00:17:56.000> text<00:17:56.280> thing.<00:17:56.520> So,<00:17:56.880> you<00:17:56.960> know,<00:17:57.200> but" + }, + { + "start": 1077.63, + "duration": 0.0, + "text": "longer text thing. So, you know, but" + }, + { + "start": 1077.64, + "duration": 0.0, + "text": "longer text thing. So, you know, but this<00:17:57.840> is<00:17:57.920> optional.<00:17:58.880> Um<00:17:59.360> which<00:17:59.520> it<00:17:59.600> doesn't" + }, + { + "start": 1079.83, + "duration": 0.0, + "text": "this is optional. Um which it doesn't" + }, + { + "start": 1079.84, + "duration": 0.0, + "text": "this is optional. Um which it doesn't say<00:17:59.960> it's<00:18:00.120> optional.<00:18:00.640> It<00:18:00.760> should,<00:18:01.000> but" + }, + { + "start": 1081.67, + "duration": 0.0, + "text": "say it's optional. It should, but" + }, + { + "start": 1081.68, + "duration": 0.0, + "text": "say it's optional. It should, but whatever.<00:18:02.200> And<00:18:02.280> then<00:18:02.360> I<00:18:02.400> can<00:18:02.520> also<00:18:02.960> determine" + }, + { + "start": 1083.31, + "duration": 0.0, + "text": "whatever. And then I can also determine" + }, + { + "start": 1083.32, + "duration": 0.0, + "text": "whatever. And then I can also determine whether<00:18:03.880> or<00:18:04.000> not<00:18:04.200> line<00:18:04.360> numbers<00:18:04.640> are<00:18:04.720> shown." + }, + { + "start": 1086.43, + "duration": 0.0, + "text": "whether or not line numbers are shown." + }, + { + "start": 1086.44, + "duration": 0.0, + "text": "whether or not line numbers are shown. But<00:18:06.560> okay,<00:18:06.760> like<00:18:06.960> let<00:18:07.080> me<00:18:07.160> just<00:18:07.600> let<00:18:07.680> me<00:18:07.760> just" + }, + { + "start": 1087.91, + "duration": 0.0, + "text": "But okay, like let me just let me just" + }, + { + "start": 1087.92, + "duration": 0.0, + "text": "But okay, like let me just let me just do<00:18:08.600> just<00:18:09.000> text<00:18:10.040> uh<00:18:10.200> the<00:18:10.320> text<00:18:10.600> view<00:18:10.920> of<00:18:11.120> this" + }, + { + "start": 1091.27, + "duration": 0.0, + "text": "do just text uh the text view of this" + }, + { + "start": 1091.28, + "duration": 0.0, + "text": "do just text uh the text view of this longer<00:18:11.600> text<00:18:11.840> expression.<00:18:12.560> If<00:18:12.680> I<00:18:12.720> expand" + }, + { + "start": 1093.11, + "duration": 0.0, + "text": "longer text expression. If I expand" + }, + { + "start": 1093.12, + "duration": 0.0, + "text": "longer text expression. If I expand this,<00:18:13.320> then<00:18:13.560> I<00:18:13.600> actually<00:18:13.920> get<00:18:14.800> uh<00:18:15.000> like<00:18:15.200> a" + }, + { + "start": 1095.23, + "duration": 0.0, + "text": "this, then I actually get uh like a" + }, + { + "start": 1095.24, + "duration": 0.0, + "text": "this, then I actually get uh like a multi-line<00:18:16.040> string<00:18:16.360> view<00:18:16.920> right<00:18:17.120> here." + }, + { + "start": 1098.43, + "duration": 0.0, + "text": "multi-line string view right here." + }, + { + "start": 1098.44, + "duration": 0.0, + "text": "multi-line string view right here. Um" + }, + { + "start": 1099.79, + "duration": 0.0, + "text": "Um" + }, + { + "start": 1099.8, + "duration": 0.0, + "text": "Um and<00:18:20.160> there's<00:18:20.320> actually<00:18:20.560> this<00:18:20.680> option<00:18:21.200> uh<00:18:21.400> to" + }, + { + "start": 1101.55, + "duration": 0.0, + "text": "and there's actually this option uh to" + }, + { + "start": 1101.56, + "duration": 0.0, + "text": "and there's actually this option uh to pull<00:18:21.800> this<00:18:21.960> out<00:18:22.080> as<00:18:22.200> a<00:18:22.240> new<00:18:22.400> tab.<00:18:22.640> So,<00:18:22.760> if<00:18:22.800> I" + }, + { + "start": 1102.87, + "duration": 0.0, + "text": "pull this out as a new tab. So, if I" + }, + { + "start": 1102.88, + "duration": 0.0, + "text": "pull this out as a new tab. So, if I click<00:18:23.080> and<00:18:23.160> drag<00:18:23.480> that,<00:18:23.880> I<00:18:23.960> can<00:18:24.160> create<00:18:24.520> a<00:18:24.600> tab" + }, + { + "start": 1105.47, + "duration": 0.0, + "text": "click and drag that, I can create a tab" + }, + { + "start": 1105.48, + "duration": 0.0, + "text": "click and drag that, I can create a tab uh<00:18:25.680> where<00:18:26.120> I<00:18:26.200> just<00:18:26.440> see,<00:18:26.760> \"Hey,<00:18:27.000> here's<00:18:27.520> here's" + }, + { + "start": 1107.79, + "duration": 0.0, + "text": "uh where I just see, \"Hey, here's here's" + }, + { + "start": 1107.8, + "duration": 0.0, + "text": "uh where I just see, \"Hey, here's here's the<00:18:27.880> text<00:18:28.240> data<00:18:29.040> visualized<00:18:29.480> as<00:18:29.600> text.\"<00:18:29.960> Now," + }, + { + "start": 1110.11, + "duration": 0.0, + "text": "the text data visualized as text.\" Now," + }, + { + "start": 1110.12, + "duration": 0.0, + "text": "the text data visualized as text.\" Now, you<00:18:30.240> may<00:18:30.360> be<00:18:30.520> wondering," + }, + { + "start": 1112.71, + "duration": 0.0, + "text": "you may be wondering," + }, + { + "start": 1112.72, + "duration": 0.0, + "text": "you may be wondering, \"Hey,<00:18:32.920> this<00:18:33.520> this<00:18:33.800> tab<00:18:34.360> UI<00:18:34.800> sure<00:18:35.120> looks<00:18:35.360> a<00:18:35.400> lot" + }, + { + "start": 1115.91, + "duration": 0.0, + "text": "\"Hey, this this tab UI sure looks a lot" + }, + { + "start": 1115.92, + "duration": 0.0, + "text": "\"Hey, this this tab UI sure looks a lot like<00:18:36.360> this<00:18:36.640> tab's<00:18:37.120> UI.\"<00:18:37.680> Like<00:18:37.960> if<00:18:38.120> we<00:18:38.240> look<00:18:38.440> at" + }, + { + "start": 1118.51, + "duration": 0.0, + "text": "like this tab's UI.\" Like if we look at" + }, + { + "start": 1118.52, + "duration": 0.0, + "text": "like this tab's UI.\" Like if we look at these<00:18:38.760> two<00:18:38.880> things<00:18:39.120> There's<00:18:39.280> a<00:18:39.320> couple<00:18:39.560> of" + }, + { + "start": 1119.63, + "duration": 0.0, + "text": "these two things There's a couple of" + }, + { + "start": 1119.64, + "duration": 0.0, + "text": "these two things There's a couple of differences.<00:18:40.040> Like<00:18:40.200> I<00:18:40.240> can't<00:18:40.520> seem<00:18:40.640> to<00:18:40.720> put" + }, + { + "start": 1120.87, + "duration": 0.0, + "text": "differences. Like I can't seem to put" + }, + { + "start": 1120.88, + "duration": 0.0, + "text": "differences. Like I can't seem to put breakpoints<00:18:41.440> here,<00:18:41.680> which<00:18:42.240> would<00:18:42.360> kind<00:18:42.520> of" + }, + { + "start": 1122.55, + "duration": 0.0, + "text": "breakpoints here, which would kind of" + }, + { + "start": 1122.56, + "duration": 0.0, + "text": "breakpoints here, which would kind of make<00:18:42.720> sense,<00:18:43.000> right?<00:18:43.160> Because<00:18:43.480> like<00:18:43.600> there's" + }, + { + "start": 1124.79, + "duration": 0.0, + "text": "make sense, right? Because like there's" + }, + { + "start": 1124.8, + "duration": 0.0, + "text": "make sense, right? Because like there's like<00:18:44.960> this<00:18:45.080> is<00:18:45.200> not<00:18:45.400> code.<00:18:45.840> Like<00:18:45.960> there's<00:18:46.160> no" + }, + { + "start": 1126.59, + "duration": 0.0, + "text": "like this is not code. Like there's no" + }, + { + "start": 1126.6, + "duration": 0.0, + "text": "like this is not code. Like there's no there's<00:18:46.720> no<00:18:47.080> This<00:18:47.240> was<00:18:47.360> not<00:18:47.480> compiled<00:18:47.960> to" + }, + { + "start": 1127.99, + "duration": 0.0, + "text": "there's no This was not compiled to" + }, + { + "start": 1128.0, + "duration": 0.0, + "text": "there's no This was not compiled to produce<00:18:48.240> instructions.<00:18:48.800> Like<00:18:48.920> none<00:18:49.040> of<00:18:49.120> that" + }, + { + "start": 1129.23, + "duration": 0.0, + "text": "produce instructions. Like none of that" + }, + { + "start": 1129.24, + "duration": 0.0, + "text": "produce instructions. Like none of that would<00:18:49.360> make<00:18:49.480> sense.<00:18:49.760> But,<00:18:50.600> um<00:18:50.920> we<00:18:51.000> have<00:18:51.160> line" + }, + { + "start": 1131.35, + "duration": 0.0, + "text": "would make sense. But, um we have line" + }, + { + "start": 1131.36, + "duration": 0.0, + "text": "would make sense. But, um we have line numbers.<00:18:51.800> We<00:18:51.840> have<00:18:52.000> line<00:18:52.200> numbers.<00:18:52.640> I<00:18:52.680> can" + }, + { + "start": 1132.79, + "duration": 0.0, + "text": "numbers. We have line numbers. I can" + }, + { + "start": 1132.8, + "duration": 0.0, + "text": "numbers. We have line numbers. I can click<00:18:53.000> and<00:18:53.080> drag.<00:18:53.680> I<00:18:53.760> can<00:18:54.320> uh<00:18:54.560> I<00:18:54.640> can<00:18:54.760> copy<00:18:55.080> and" + }, + { + "start": 1135.19, + "duration": 0.0, + "text": "click and drag. I can uh I can copy and" + }, + { + "start": 1135.2, + "duration": 0.0, + "text": "click and drag. I can uh I can copy and paste<00:18:55.560> like<00:18:55.760> what<00:18:56.000> ways<00:18:56.280> might<00:18:56.440> it<00:18:56.520> be" + }, + { + "start": 1136.63, + "duration": 0.0, + "text": "paste like what ways might it be" + }, + { + "start": 1136.64, + "duration": 0.0, + "text": "paste like what ways might it be rendered.<00:18:57.000> I<00:18:57.080> can<00:18:57.200> put<00:18:57.400> you<00:18:57.480> know,<00:18:57.560> put<00:18:57.720> that" + }, + { + "start": 1137.91, + "duration": 0.0, + "text": "rendered. I can put you know, put that" + }, + { + "start": 1137.92, + "duration": 0.0, + "text": "rendered. I can put you know, put that there,<00:18:58.080> whatever." + }, + { + "start": 1139.67, + "duration": 0.0, + "text": "there, whatever." + }, + { + "start": 1139.68, + "duration": 0.0, + "text": "there, whatever. And<00:19:00.000> the<00:19:00.120> short<00:19:00.480> story<00:19:00.840> is<00:19:00.960> that<00:19:01.080> these" + }, + { + "start": 1141.23, + "duration": 0.0, + "text": "And the short story is that these" + }, + { + "start": 1141.24, + "duration": 0.0, + "text": "And the short story is that these actually<00:19:01.520> are<00:19:01.600> the<00:19:01.720> same<00:19:01.960> UI." + }, + { + "start": 1143.55, + "duration": 0.0, + "text": "actually are the same UI." + }, + { + "start": 1143.56, + "duration": 0.0, + "text": "actually are the same UI. This<00:19:03.880> is<00:19:04.000> a<00:19:04.040> text<00:19:04.440> tab<00:19:04.960> um<00:19:05.200> and<00:19:05.360> this<00:19:05.520> is" + }, + { + "start": 1145.59, + "duration": 0.0, + "text": "This is a text tab um and this is" + }, + { + "start": 1145.6, + "duration": 0.0, + "text": "This is a text tab um and this is evaluating<00:19:06.120> longer<00:19:06.440> text,<00:19:06.880> which<00:19:07.200> should<00:19:07.400> be" + }, + { + "start": 1147.63, + "duration": 0.0, + "text": "evaluating longer text, which should be" + }, + { + "start": 1147.64, + "duration": 0.0, + "text": "evaluating longer text, which should be pretty<00:19:07.880> self-explanatory.<00:19:09.200> Um<00:19:09.400> and<00:19:09.480> then" + }, + { + "start": 1149.67, + "duration": 0.0, + "text": "pretty self-explanatory. Um and then" + }, + { + "start": 1149.68, + "duration": 0.0, + "text": "pretty self-explanatory. Um and then this<00:19:09.920> one" + }, + { + "start": 1151.03, + "duration": 0.0, + "text": "this one" + }, + { + "start": 1151.04, + "duration": 0.0, + "text": "this one um" + }, + { + "start": 1152.19, + "duration": 0.0, + "text": "um" + }, + { + "start": 1152.2, + "duration": 0.0, + "text": "um this<00:19:12.480> one<00:19:12.640> is<00:19:12.760> actually<00:19:13.520> evaluating<00:19:14.400> this" + }, + { + "start": 1154.63, + "duration": 0.0, + "text": "this one is actually evaluating this" + }, + { + "start": 1154.64, + "duration": 0.0, + "text": "this one is actually evaluating this expression,<00:19:15.360> which<00:19:15.520> is<00:19:15.720> file<00:19:16.120> colon" + }, + { + "start": 1157.35, + "duration": 0.0, + "text": "expression, which is file colon" + }, + { + "start": 1157.36, + "duration": 0.0, + "text": "expression, which is file colon uh<00:19:17.480> another<00:19:17.720> one<00:19:17.800> of<00:19:17.880> those<00:19:18.000> disambiguators," + }, + { + "start": 1158.99, + "duration": 0.0, + "text": "uh another one of those disambiguators," + }, + { + "start": 1159.0, + "duration": 0.0, + "text": "uh another one of those disambiguators, uh<00:19:19.160> C<00:19:19.760> devel<00:19:20.240> rad<00:19:20.440> bugger<00:19:20.680> source<00:19:21.000> mule<00:19:21.320> mule" + }, + { + "start": 1161.51, + "duration": 0.0, + "text": "uh C devel rad bugger source mule mule" + }, + { + "start": 1161.52, + "duration": 0.0, + "text": "uh C devel rad bugger source mule mule main.cpp.data." + }, + { + "start": 1164.19, + "duration": 0.0, + "text": "main.cpp.data." + }, + { + "start": 1164.2, + "duration": 0.0, + "text": "main.cpp.data. Um<00:19:24.360> and<00:19:24.440> you<00:19:24.520> can<00:19:24.600> see<00:19:24.720> some<00:19:24.880> of<00:19:24.920> the<00:19:25.000> members" + }, + { + "start": 1165.39, + "duration": 0.0, + "text": "Um and you can see some of the members" + }, + { + "start": 1165.4, + "duration": 0.0, + "text": "Um and you can see some of the members here<00:19:25.600> that<00:19:25.720> you<00:19:25.800> can<00:19:25.880> evaluate<00:19:26.480> for<00:19:26.640> any<00:19:26.800> file." + }, + { + "start": 1167.79, + "duration": 0.0, + "text": "here that you can evaluate for any file." + }, + { + "start": 1167.8, + "duration": 0.0, + "text": "here that you can evaluate for any file. But<00:19:27.880> anyways,<00:19:28.120> so<00:19:28.200> that's<00:19:28.400> just<00:19:28.520> evaluating" + }, + { + "start": 1168.99, + "duration": 0.0, + "text": "But anyways, so that's just evaluating" + }, + { + "start": 1169.0, + "duration": 0.0, + "text": "But anyways, so that's just evaluating the<00:19:29.080> file.<00:19:30.120> Um" + }, + { + "start": 1171.03, + "duration": 0.0, + "text": "the file. Um" + }, + { + "start": 1171.04, + "duration": 0.0, + "text": "the file. Um so<00:19:31.160> that's<00:19:31.480> kind<00:19:31.720> of<00:19:32.040> that's<00:19:32.200> kind<00:19:32.320> of" + }, + { + "start": 1172.35, + "duration": 0.0, + "text": "so that's kind of that's kind of" + }, + { + "start": 1172.36, + "duration": 0.0, + "text": "so that's kind of that's kind of interesting.<00:19:33.360> Um" + }, + { + "start": 1174.03, + "duration": 0.0, + "text": "interesting. Um" + }, + { + "start": 1174.04, + "duration": 0.0, + "text": "interesting. Um and<00:19:34.160> the<00:19:34.240> long<00:19:34.480> story<00:19:34.720> short<00:19:34.880> is<00:19:34.960> that<00:19:35.120> all" + }, + { + "start": 1175.23, + "duration": 0.0, + "text": "and the long story short is that all" + }, + { + "start": 1175.24, + "duration": 0.0, + "text": "and the long story short is that all these<00:19:35.440> visualizers<00:19:36.040> can<00:19:36.160> apply<00:19:36.560> to<00:19:36.800> both" + }, + { + "start": 1178.11, + "duration": 0.0, + "text": "these visualizers can apply to both" + }, + { + "start": 1178.12, + "duration": 0.0, + "text": "these visualizers can apply to both files,<00:19:38.520> they<00:19:38.600> can<00:19:38.720> apply<00:19:39.000> to<00:19:39.160> memory<00:19:39.520> from" + }, + { + "start": 1179.67, + "duration": 0.0, + "text": "files, they can apply to memory from" + }, + { + "start": 1179.68, + "duration": 0.0, + "text": "files, they can apply to memory from processes,<00:19:40.560> doesn't<00:19:40.840> matter." + }, + { + "start": 1181.91, + "duration": 0.0, + "text": "processes, doesn't matter." + }, + { + "start": 1181.92, + "duration": 0.0, + "text": "processes, doesn't matter. You<00:19:41.960> can<00:19:42.360> wherever<00:19:42.760> the<00:19:42.840> debugger<00:19:43.160> can<00:19:43.280> find" + }, + { + "start": 1183.51, + "duration": 0.0, + "text": "You can wherever the debugger can find" + }, + { + "start": 1183.52, + "duration": 0.0, + "text": "You can wherever the debugger can find data,<00:19:43.760> you<00:19:43.840> can<00:19:43.960> plug<00:19:44.160> them<00:19:44.320> into<00:19:44.480> these" + }, + { + "start": 1184.63, + "duration": 0.0, + "text": "data, you can plug them into these" + }, + { + "start": 1184.64, + "duration": 0.0, + "text": "data, you can plug them into these visualizers.<00:19:45.320> So,<00:19:45.760> to<00:19:45.880> demonstrate<00:19:46.360> that," + }, + { + "start": 1187.43, + "duration": 0.0, + "text": "visualizers. So, to demonstrate that," + }, + { + "start": 1187.44, + "duration": 0.0, + "text": "visualizers. So, to demonstrate that, let<00:19:47.520> me<00:19:47.600> show<00:19:47.720> another<00:19:48.240> debugger<00:19:48.520> visualizer." + }, + { + "start": 1189.03, + "duration": 0.0, + "text": "let me show another debugger visualizer." + }, + { + "start": 1189.04, + "duration": 0.0, + "text": "let me show another debugger visualizer. This<00:19:49.200> is<00:19:49.760> This<00:19:49.920> is<00:19:50.040> another<00:19:50.320> common<00:19:50.640> one.<00:19:50.880> So," + }, + { + "start": 1190.99, + "duration": 0.0, + "text": "This is This is another common one. So," + }, + { + "start": 1191.0, + "duration": 0.0, + "text": "This is This is another common one. So, if<00:19:51.120> we<00:19:51.240> have<00:19:52.040> basics,<00:19:52.760> this<00:19:53.080> structure," + }, + { + "start": 1194.39, + "duration": 0.0, + "text": "if we have basics, this structure," + }, + { + "start": 1194.4, + "duration": 0.0, + "text": "if we have basics, this structure, um" + }, + { + "start": 1195.51, + "duration": 0.0, + "text": "um" + }, + { + "start": 1195.52, + "duration": 0.0, + "text": "um let<00:19:55.560> me<00:19:55.680> open<00:19:55.840> up<00:19:55.960> the<00:19:56.040> memory<00:19:56.440> view,<00:19:56.840> which" + }, + { + "start": 1197.03, + "duration": 0.0, + "text": "let me open up the memory view, which" + }, + { + "start": 1197.04, + "duration": 0.0, + "text": "let me open up the memory view, which this<00:19:57.280> you'll<00:19:57.440> find<00:19:57.800> something<00:19:58.080> like<00:19:58.280> this<00:19:58.440> in" + }, + { + "start": 1198.51, + "duration": 0.0, + "text": "this you'll find something like this in" + }, + { + "start": 1198.52, + "duration": 0.0, + "text": "this you'll find something like this in Visual<00:19:58.760> Studio<00:19:59.320> and<00:19:59.560> in<00:19:59.680> lots<00:19:59.880> of<00:19:59.960> other" + }, + { + "start": 1200.11, + "duration": 0.0, + "text": "Visual Studio and in lots of other" + }, + { + "start": 1200.12, + "duration": 0.0, + "text": "Visual Studio and in lots of other debuggers." + }, + { + "start": 1201.79, + "duration": 0.0, + "text": "debuggers." + }, + { + "start": 1201.8, + "duration": 0.0, + "text": "debuggers. And<00:20:01.920> let<00:20:02.000> me<00:20:02.080> just<00:20:02.280> go<00:20:02.520> to<00:20:02.680> the<00:20:02.800> basics" + }, + { + "start": 1203.91, + "duration": 0.0, + "text": "And let me just go to the basics" + }, + { + "start": 1203.92, + "duration": 0.0, + "text": "And let me just go to the basics variable<00:20:04.320> here." + }, + { + "start": 1206.39, + "duration": 0.0, + "text": "variable here." + }, + { + "start": 1206.4, + "duration": 0.0, + "text": "variable here. Um<00:20:06.920> so,<00:20:07.080> here<00:20:07.400> is<00:20:07.560> where<00:20:08.160> uh<00:20:08.400> I<00:20:08.480> can<00:20:08.640> see<00:20:08.920> like" + }, + { + "start": 1209.51, + "duration": 0.0, + "text": "Um so, here is where uh I can see like" + }, + { + "start": 1209.52, + "duration": 0.0, + "text": "Um so, here is where uh I can see like uh<00:20:09.960> all<00:20:10.200> of<00:20:10.280> the<00:20:10.360> memory,<00:20:10.760> like<00:20:10.960> the<00:20:11.080> actual" + }, + { + "start": 1211.35, + "duration": 0.0, + "text": "uh all of the memory, like the actual" + }, + { + "start": 1211.36, + "duration": 0.0, + "text": "uh all of the memory, like the actual bytes" + }, + { + "start": 1212.63, + "duration": 0.0, + "text": "bytes" + }, + { + "start": 1212.64, + "duration": 0.0, + "text": "bytes that<00:20:12.720> are<00:20:12.840> used<00:20:13.160> to<00:20:13.400> to<00:20:13.880> encode<00:20:14.400> the<00:20:14.480> value<00:20:14.960> of" + }, + { + "start": 1215.07, + "duration": 0.0, + "text": "that are used to to encode the value of" + }, + { + "start": 1215.08, + "duration": 0.0, + "text": "that are used to to encode the value of this<00:20:15.240> basics<00:20:15.760> structure.<00:20:16.200> So,<00:20:16.320> we<00:20:16.400> can<00:20:16.520> see" + }, + { + "start": 1216.63, + "duration": 0.0, + "text": "this basics structure. So, we can see" + }, + { + "start": 1216.64, + "duration": 0.0, + "text": "this basics structure. So, we can see like<00:20:16.880> for<00:20:17.000> example,<00:20:17.880> um" + }, + { + "start": 1218.71, + "duration": 0.0, + "text": "like for example, um" + }, + { + "start": 1218.72, + "duration": 0.0, + "text": "like for example, um and<00:20:18.800> actually,<00:20:19.120> if<00:20:19.280> I" + }, + { + "start": 1220.03, + "duration": 0.0, + "text": "and actually, if I" + }, + { + "start": 1220.04, + "duration": 0.0, + "text": "and actually, if I uh" + }, + { + "start": 1221.11, + "duration": 0.0, + "text": "uh" + }, + { + "start": 1221.12, + "duration": 0.0, + "text": "uh you<00:20:21.200> can<00:20:21.320> see<00:20:21.480> that<00:20:21.680> there's<00:20:22.080> some" + }, + { + "start": 1222.31, + "duration": 0.0, + "text": "you can see that there's some" + }, + { + "start": 1222.32, + "duration": 0.0, + "text": "you can see that there's some visualization<00:20:22.840> features<00:20:23.080> in<00:20:23.160> the<00:20:23.200> debugger" + }, + { + "start": 1223.55, + "duration": 0.0, + "text": "visualization features in the debugger" + }, + { + "start": 1223.56, + "duration": 0.0, + "text": "visualization features in the debugger that<00:20:23.800> that<00:20:23.960> help<00:20:24.160> you<00:20:24.280> correlate<00:20:24.840> this<00:20:25.000> stuff." + }, + { + "start": 1225.19, + "duration": 0.0, + "text": "that that help you correlate this stuff." + }, + { + "start": 1225.2, + "duration": 0.0, + "text": "that that help you correlate this stuff. So,<00:20:25.320> if<00:20:25.400> I<00:20:25.480> hover<00:20:25.720> basics.a,<00:20:26.560> for<00:20:26.720> example," + }, + { + "start": 1227.51, + "duration": 0.0, + "text": "So, if I hover basics.a, for example," + }, + { + "start": 1227.52, + "duration": 0.0, + "text": "So, if I hover basics.a, for example, you<00:20:27.600> can<00:20:27.760> see<00:20:27.880> that<00:20:28.080> this<00:20:28.240> byte<00:20:28.440> gets" + }, + { + "start": 1228.63, + "duration": 0.0, + "text": "you can see that this byte gets" + }, + { + "start": 1228.64, + "duration": 0.0, + "text": "you can see that this byte gets highlighted.<00:20:29.160> And<00:20:29.280> vice<00:20:29.520> versa,<00:20:29.840> if<00:20:29.960> I<00:20:30.040> hover" + }, + { + "start": 1230.31, + "duration": 0.0, + "text": "highlighted. And vice versa, if I hover" + }, + { + "start": 1230.32, + "duration": 0.0, + "text": "highlighted. And vice versa, if I hover the<00:20:30.400> byte<00:20:30.640> here,<00:20:30.840> I<00:20:30.880> can<00:20:31.040> see" + }, + { + "start": 1232.07, + "duration": 0.0, + "text": "the byte here, I can see" + }, + { + "start": 1232.08, + "duration": 0.0, + "text": "the byte here, I can see the<00:20:32.120> member<00:20:32.520> that<00:20:32.920> that<00:20:33.120> byte<00:20:33.320> belong<00:20:33.640> that" + }, + { + "start": 1234.19, + "duration": 0.0, + "text": "the member that that byte belong that" + }, + { + "start": 1234.2, + "duration": 0.0, + "text": "the member that that byte belong that that<00:20:34.680> byte<00:20:34.960> falls<00:20:35.240> into<00:20:35.480> basically<00:20:35.960> in" + }, + { + "start": 1236.07, + "duration": 0.0, + "text": "that byte falls into basically in" + }, + { + "start": 1236.08, + "duration": 0.0, + "text": "that byte falls into basically in the<00:20:36.160> watch<00:20:36.400> window.<00:20:36.640> So,<00:20:37.400> um" + }, + { + "start": 1238.19, + "duration": 0.0, + "text": "the watch window. So, um" + }, + { + "start": 1238.2, + "duration": 0.0, + "text": "the watch window. So, um instead<00:20:38.440> of<00:20:38.520> doing<00:20:39.400> just<00:20:39.560> because<00:20:39.880> uh<00:20:40.240> I've" + }, + { + "start": 1240.35, + "duration": 0.0, + "text": "instead of doing just because uh I've" + }, + { + "start": 1240.36, + "duration": 0.0, + "text": "instead of doing just because uh I've got<00:20:40.480> my<00:20:40.600> font<00:20:40.840> size<00:20:41.080> turned<00:20:41.280> up<00:20:41.360> so<00:20:41.480> high,<00:20:41.600> let" + }, + { + "start": 1241.71, + "duration": 0.0, + "text": "got my font size turned up so high, let" + }, + { + "start": 1241.72, + "duration": 0.0, + "text": "got my font size turned up so high, let me<00:20:41.840> also<00:20:42.040> just<00:20:42.240> do<00:20:42.440> um" + }, + { + "start": 1244.15, + "duration": 0.0, + "text": "me also just do um" + }, + { + "start": 1244.16, + "duration": 0.0, + "text": "me also just do um let<00:20:44.240> me<00:20:44.320> just<00:20:44.720> do<00:20:44.960> two<00:20:45.160> panel,<00:20:45.640> one<00:20:45.800> with<00:20:45.920> the" + }, + { + "start": 1246.03, + "duration": 0.0, + "text": "let me just do two panel, one with the" + }, + { + "start": 1246.04, + "duration": 0.0, + "text": "let me just do two panel, one with the watch<00:20:46.280> window," + }, + { + "start": 1248.39, + "duration": 0.0, + "text": "watch window," + }, + { + "start": 1248.4, + "duration": 0.0, + "text": "watch window, and<00:20:48.560> one<00:20:48.720> with<00:20:49.080> the<00:20:49.480> memory<00:20:49.760> view." + }, + { + "start": 1251.27, + "duration": 0.0, + "text": "and one with the memory view." + }, + { + "start": 1251.28, + "duration": 0.0, + "text": "and one with the memory view. Um" + }, + { + "start": 1252.35, + "duration": 0.0, + "text": "Um" + }, + { + "start": 1252.36, + "duration": 0.0, + "text": "Um so,<00:20:52.560> like<00:20:52.720> here's<00:20:52.920> a<00:20:52.960> memory<00:20:53.280> view.<00:20:53.520> I<00:20:53.600> can<00:20:53.920> I" + }, + { + "start": 1253.99, + "duration": 0.0, + "text": "so, like here's a memory view. I can I" + }, + { + "start": 1254.0, + "duration": 0.0, + "text": "so, like here's a memory view. I can I can,<00:20:54.600> you<00:20:54.680> know,<00:20:54.840> hover<00:20:55.080> bytes.<00:20:55.640> Um<00:20:55.840> I<00:20:55.920> can" + }, + { + "start": 1256.03, + "duration": 0.0, + "text": "can, you know, hover bytes. Um I can" + }, + { + "start": 1256.04, + "duration": 0.0, + "text": "can, you know, hover bytes. Um I can even<00:20:56.280> mutate<00:20:56.680> bytes,<00:20:56.960> like<00:20:57.080> if<00:20:57.200> I<00:20:57.280> wanted<00:20:57.480> to" + }, + { + "start": 1257.55, + "duration": 0.0, + "text": "even mutate bytes, like if I wanted to" + }, + { + "start": 1257.56, + "duration": 0.0, + "text": "even mutate bytes, like if I wanted to do" + }, + { + "start": 1258.55, + "duration": 0.0, + "text": "do" + }, + { + "start": 1258.56, + "duration": 0.0, + "text": "do uh<00:20:58.760> I<00:20:58.880> wanted<00:20:59.120> to<00:20:59.240> change<00:20:59.520> this<00:20:59.800> to<00:21:00.040> to<00:21:00.200> a<00:21:00.240> zero" + }, + { + "start": 1260.63, + "duration": 0.0, + "text": "uh I wanted to change this to to a zero" + }, + { + "start": 1260.64, + "duration": 0.0, + "text": "uh I wanted to change this to to a zero byte,<00:21:01.240> um" + }, + { + "start": 1262.03, + "duration": 0.0, + "text": "byte, um" + }, + { + "start": 1262.04, + "duration": 0.0, + "text": "byte, um I<00:21:02.120> can<00:21:02.240> just<00:21:02.400> type<00:21:02.600> that<00:21:02.800> in<00:21:02.920> there.<00:21:03.760> Uh<00:21:04.160> we<00:21:04.240> can" + }, + { + "start": 1264.35, + "duration": 0.0, + "text": "I can just type that in there. Uh we can" + }, + { + "start": 1264.36, + "duration": 0.0, + "text": "I can just type that in there. Uh we can go<00:21:04.440> back<00:21:04.600> to<00:21:04.680> -1<00:21:05.120> if<00:21:05.240> I<00:21:05.280> do<00:21:05.400> an<00:21:05.480> FF.<00:21:06.400> Uh<00:21:06.520> here's" + }, + { + "start": 1266.99, + "duration": 0.0, + "text": "go back to -1 if I do an FF. Uh here's" + }, + { + "start": 1267.0, + "duration": 0.0, + "text": "go back to -1 if I do an FF. Uh here's 01,<00:21:07.480> I<00:21:07.520> can<00:21:07.640> do<00:21:07.760> like<00:21:07.920> 23,<00:21:08.960> which<00:21:09.480> uh<00:21:09.560> hex<00:21:09.840> 23" + }, + { + "start": 1270.19, + "duration": 0.0, + "text": "01, I can do like 23, which uh hex 23" + }, + { + "start": 1270.2, + "duration": 0.0, + "text": "01, I can do like 23, which uh hex 23 turns<00:21:10.440> into<00:21:10.600> 35,<00:21:11.320> which<00:21:11.600> happens<00:21:11.880> to<00:21:11.920> be<00:21:12.040> that" + }, + { + "start": 1272.23, + "duration": 0.0, + "text": "turns into 35, which happens to be that" + }, + { + "start": 1272.24, + "duration": 0.0, + "text": "turns into 35, which happens to be that character." + }, + { + "start": 1273.43, + "duration": 0.0, + "text": "character." + }, + { + "start": 1273.44, + "duration": 0.0, + "text": "character. Um" + }, + { + "start": 1274.87, + "duration": 0.0, + "text": "Um" + }, + { + "start": 1274.88, + "duration": 0.0, + "text": "Um So<00:21:15.000> yeah,<00:21:15.080> anyways,<00:21:15.400> here's<00:21:15.600> a<00:21:15.640> memory<00:21:15.920> view," + }, + { + "start": 1276.11, + "duration": 0.0, + "text": "So yeah, anyways, here's a memory view," + }, + { + "start": 1276.12, + "duration": 0.0, + "text": "So yeah, anyways, here's a memory view, right?" + }, + { + "start": 1277.59, + "duration": 0.0, + "text": "right?" + }, + { + "start": 1277.6, + "duration": 0.0, + "text": "right? And<00:21:17.760> I<00:21:17.800> can<00:21:17.920> dig<00:21:18.080> into<00:21:18.240> more<00:21:18.400> of<00:21:18.480> these" + }, + { + "start": 1278.63, + "duration": 0.0, + "text": "And I can dig into more of these" + }, + { + "start": 1278.64, + "duration": 0.0, + "text": "And I can dig into more of these features<00:21:19.600> if<00:21:20.200> you<00:21:20.280> know,<00:21:20.880> as<00:21:21.080> we<00:21:21.200> want<00:21:21.440> to." + }, + { + "start": 1282.19, + "duration": 0.0, + "text": "features if you know, as we want to." + }, + { + "start": 1282.2, + "duration": 0.0, + "text": "features if you know, as we want to. But<00:21:22.560> it's<00:21:22.720> like<00:21:22.960> I<00:21:23.040> just<00:21:23.240> told<00:21:23.480> you<00:21:23.560> that<00:21:23.760> I<00:21:23.800> can" + }, + { + "start": 1283.91, + "duration": 0.0, + "text": "But it's like I just told you that I can" + }, + { + "start": 1283.92, + "duration": 0.0, + "text": "But it's like I just told you that I can apply<00:21:24.240> these<00:21:24.440> visualizers<00:21:24.960> to<00:21:25.120> any" + }, + { + "start": 1285.35, + "duration": 0.0, + "text": "apply these visualizers to any" + }, + { + "start": 1285.36, + "duration": 0.0, + "text": "apply these visualizers to any expression,<00:21:26.120> right?<00:21:26.434> [clears throat]<00:21:26.800> In" + }, + { + "start": 1286.95, + "duration": 0.0, + "text": "expression, right? [clears throat] In" + }, + { + "start": 1286.96, + "duration": 0.0, + "text": "expression, right? [clears throat] In fact,<00:21:27.280> if<00:21:27.440> I<00:21:27.520> were<00:21:27.600> to<00:21:27.720> do<00:21:27.880> something<00:21:28.200> like" + }, + { + "start": 1288.59, + "duration": 0.0, + "text": "fact, if I were to do something like" + }, + { + "start": 1288.6, + "duration": 0.0, + "text": "fact, if I were to do something like memory<00:21:29.640> basics" + }, + { + "start": 1292.07, + "duration": 0.0, + "text": "memory basics" + }, + { + "start": 1292.08, + "duration": 0.0, + "text": "memory basics Um<00:21:32.720> sorry,<00:21:32.920> there's<00:21:33.080> tons<00:21:33.320> of<00:21:33.400> parameters" + }, + { + "start": 1293.75, + "duration": 0.0, + "text": "Um sorry, there's tons of parameters" + }, + { + "start": 1293.76, + "duration": 0.0, + "text": "Um sorry, there's tons of parameters here.<00:21:33.840> I<00:21:33.880> actually<00:21:34.160> fixed<00:21:34.480> this,<00:21:34.720> but<00:21:35.200> but<00:21:35.520> the" + }, + { + "start": 1295.99, + "duration": 0.0, + "text": "here. I actually fixed this, but but the" + }, + { + "start": 1296.0, + "duration": 0.0, + "text": "here. I actually fixed this, but but the stable<00:21:36.360> version<00:21:36.600> of<00:21:36.640> the<00:21:36.720> debugger<00:21:36.960> that<00:21:37.040> I'm" + }, + { + "start": 1297.15, + "duration": 0.0, + "text": "stable version of the debugger that I'm" + }, + { + "start": 1297.16, + "duration": 0.0, + "text": "stable version of the debugger that I'm using<00:21:37.560> doesn't<00:21:37.840> have<00:21:38.040> that<00:21:38.320> fixed,<00:21:38.680> but<00:21:38.880> this" + }, + { + "start": 1299.03, + "duration": 0.0, + "text": "using doesn't have that fixed, but this" + }, + { + "start": 1299.04, + "duration": 0.0, + "text": "using doesn't have that fixed, but this is<00:21:39.280> I<00:21:39.360> mean,<00:21:39.800> technically<00:21:40.200> these<00:21:40.400> are<00:21:40.520> all" + }, + { + "start": 1300.67, + "duration": 0.0, + "text": "is I mean, technically these are all" + }, + { + "start": 1300.68, + "duration": 0.0, + "text": "is I mean, technically these are all options,<00:21:41.080> but<00:21:41.200> it's<00:21:41.360> just<00:21:41.640> a<00:21:41.680> little<00:21:41.880> bit" + }, + { + "start": 1301.99, + "duration": 0.0, + "text": "options, but it's just a little bit" + }, + { + "start": 1302.0, + "duration": 0.0, + "text": "options, but it's just a little bit absurd<00:21:42.400> to<00:21:42.720> specify<00:21:43.080> this<00:21:43.240> in<00:21:43.320> the" + }, + { + "start": 1303.39, + "duration": 0.0, + "text": "absurd to specify this in the" + }, + { + "start": 1303.4, + "duration": 0.0, + "text": "absurd to specify this in the expression.<00:21:43.800> But<00:21:43.960> anyways," + }, + { + "start": 1304.91, + "duration": 0.0, + "text": "expression. But anyways," + }, + { + "start": 1304.92, + "duration": 0.0, + "text": "expression. But anyways, if<00:21:45.040> I<00:21:45.080> do<00:21:45.240> memory<00:21:45.520> of<00:21:45.640> basics,<00:21:46.080> you'll" + }, + { + "start": 1306.23, + "duration": 0.0, + "text": "if I do memory of basics, you'll" + }, + { + "start": 1306.24, + "duration": 0.0, + "text": "if I do memory of basics, you'll actually<00:21:46.520> see<00:21:47.480> that<00:21:47.800> um<00:21:48.120> I<00:21:48.200> get<00:21:48.320> a<00:21:48.360> memory<00:21:48.680> view" + }, + { + "start": 1308.91, + "duration": 0.0, + "text": "actually see that um I get a memory view" + }, + { + "start": 1308.92, + "duration": 0.0, + "text": "actually see that um I get a memory view and<00:21:49.040> it's<00:21:49.200> just<00:21:49.480> evaluating<00:21:50.000> the<00:21:50.120> address" + }, + { + "start": 1310.43, + "duration": 0.0, + "text": "and it's just evaluating the address" + }, + { + "start": 1310.44, + "duration": 0.0, + "text": "and it's just evaluating the address range<00:21:51.120> supplied<00:21:51.640> by<00:21:52.600> the<00:21:52.720> expression<00:21:53.400> basics." + }, + { + "start": 1314.19, + "duration": 0.0, + "text": "range supplied by the expression basics." + }, + { + "start": 1314.2, + "duration": 0.0, + "text": "range supplied by the expression basics. And<00:21:54.320> so<00:21:54.400> I<00:21:54.480> just<00:21:54.760> get<00:21:54.920> a<00:21:54.960> little<00:21:55.240> memory<00:21:55.480> view" + }, + { + "start": 1315.63, + "duration": 0.0, + "text": "And so I just get a little memory view" + }, + { + "start": 1315.64, + "duration": 0.0, + "text": "And so I just get a little memory view for<00:21:55.760> this.<00:21:56.400> In<00:21:56.480> the<00:21:56.560> case<00:21:56.720> when<00:21:56.840> you<00:21:56.880> don't" + }, + { + "start": 1317.03, + "duration": 0.0, + "text": "for this. In the case when you don't" + }, + { + "start": 1317.04, + "duration": 0.0, + "text": "for this. In the case when you don't have<00:21:57.200> any<00:21:57.360> expression,<00:21:57.880> it'll<00:21:58.120> prefer<00:21:58.680> to" + }, + { + "start": 1319.11, + "duration": 0.0, + "text": "have any expression, it'll prefer to" + }, + { + "start": 1319.12, + "duration": 0.0, + "text": "have any expression, it'll prefer to visualize<00:21:59.560> your<00:21:59.680> current<00:22:00.040> thread's<00:22:00.640> address" + }, + { + "start": 1320.99, + "duration": 0.0, + "text": "visualize your current thread's address" + }, + { + "start": 1321.0, + "duration": 0.0, + "text": "visualize your current thread's address space<00:22:01.360> or<00:22:01.480> your<00:22:01.600> current<00:22:01.920> thread's<00:22:02.280> process's" + }, + { + "start": 1322.79, + "duration": 0.0, + "text": "space or your current thread's process's" + }, + { + "start": 1322.8, + "duration": 0.0, + "text": "space or your current thread's process's address<00:22:03.120> space.<00:22:03.720> And<00:22:03.800> then<00:22:03.920> you<00:22:04.000> can<00:22:04.120> navigate" + }, + { + "start": 1324.55, + "duration": 0.0, + "text": "address space. And then you can navigate" + }, + { + "start": 1324.56, + "duration": 0.0, + "text": "address space. And then you can navigate to<00:22:04.800> basics<00:22:05.360> inside<00:22:05.760> of<00:22:05.840> that<00:22:06.000> address<00:22:06.240> space," + }, + { + "start": 1326.39, + "duration": 0.0, + "text": "to basics inside of that address space," + }, + { + "start": 1326.4, + "duration": 0.0, + "text": "to basics inside of that address space, but<00:22:06.520> you<00:22:06.600> can<00:22:06.680> also<00:22:06.840> just<00:22:07.000> get<00:22:07.160> one<00:22:07.440> that's" + }, + { + "start": 1327.75, + "duration": 0.0, + "text": "but you can also just get one that's" + }, + { + "start": 1327.76, + "duration": 0.0, + "text": "but you can also just get one that's narrowed<00:22:08.120> down<00:22:08.400> to<00:22:08.520> just<00:22:08.720> basics<00:22:09.480> um" + }, + { + "start": 1330.55, + "duration": 0.0, + "text": "narrowed down to just basics um" + }, + { + "start": 1330.56, + "duration": 0.0, + "text": "narrowed down to just basics um uh<00:22:11.000> like<00:22:11.200> this." + }, + { + "start": 1332.35, + "duration": 0.0, + "text": "uh like this." + }, + { + "start": 1332.36, + "duration": 0.0, + "text": "uh like this. So<00:22:12.560> anyways,<00:22:12.880> you<00:22:12.960> can<00:22:13.120> create<00:22:13.280> a<00:22:13.320> memory<00:22:13.600> view" + }, + { + "start": 1333.87, + "duration": 0.0, + "text": "So anyways, you can create a memory view" + }, + { + "start": 1333.88, + "duration": 0.0, + "text": "So anyways, you can create a memory view and<00:22:14.000> you<00:22:14.120> can<00:22:14.640> um<00:22:15.000> it<00:22:15.080> can<00:22:15.200> evaluate<00:22:15.640> any<00:22:16.240> any" + }, + { + "start": 1336.39, + "duration": 0.0, + "text": "and you can um it can evaluate any any" + }, + { + "start": 1336.4, + "duration": 0.0, + "text": "and you can um it can evaluate any any expression,<00:22:16.880> right?<00:22:17.520> So<00:22:17.760> what<00:22:17.960> we'll<00:22:18.080> do<00:22:18.760> is" + }, + { + "start": 1339.31, + "duration": 0.0, + "text": "expression, right? So what we'll do is" + }, + { + "start": 1339.32, + "duration": 0.0, + "text": "expression, right? So what we'll do is um<00:22:19.360> I'm<00:22:19.480> just<00:22:19.640> going<00:22:19.760> to<00:22:19.800> take<00:22:20.080> this" + }, + { + "start": 1340.43, + "duration": 0.0, + "text": "um I'm just going to take this" + }, + { + "start": 1340.44, + "duration": 0.0, + "text": "um I'm just going to take this expression<00:22:20.920> that<00:22:21.160> encodes<00:22:21.560> the<00:22:21.680> file" + }, + { + "start": 1343.75, + "duration": 0.0, + "text": "expression that encodes the file" + }, + { + "start": 1343.76, + "duration": 0.0, + "text": "expression that encodes the file uh<00:22:23.920> the<00:22:24.040> file<00:22:24.280> that's<00:22:24.480> viewing" + }, + { + "start": 1344.79, + "duration": 0.0, + "text": "uh the file that's viewing" + }, + { + "start": 1344.8, + "duration": 0.0, + "text": "uh the file that's viewing mule_main.cpp." + }, + { + "start": 1346.39, + "duration": 0.0, + "text": "mule_main.cpp." + }, + { + "start": 1346.4, + "duration": 0.0, + "text": "mule_main.cpp. And<00:22:26.520> I'm<00:22:26.600> just<00:22:26.760> going<00:22:26.880> to<00:22:26.920> create<00:22:27.080> a<00:22:27.120> new" + }, + { + "start": 1347.23, + "duration": 0.0, + "text": "And I'm just going to create a new" + }, + { + "start": 1347.24, + "duration": 0.0, + "text": "And I'm just going to create a new memory<00:22:27.520> tab<00:22:27.800> or<00:22:27.880> I<00:22:27.920> guess<00:22:28.080> I<00:22:28.400> I<00:22:28.440> can<00:22:28.560> just<00:22:28.720> use" + }, + { + "start": 1348.83, + "duration": 0.0, + "text": "memory tab or I guess I I can just use" + }, + { + "start": 1348.84, + "duration": 0.0, + "text": "memory tab or I guess I I can just use this<00:22:29.040> one." + }, + { + "start": 1350.03, + "duration": 0.0, + "text": "this one." + }, + { + "start": 1350.04, + "duration": 0.0, + "text": "this one. And<00:22:30.120> let<00:22:30.200> me<00:22:30.280> just<00:22:30.440> put<00:22:30.560> this<00:22:30.760> in" + }, + { + "start": 1351.67, + "duration": 0.0, + "text": "And let me just put this in" + }, + { + "start": 1351.68, + "duration": 0.0, + "text": "And let me just put this in um" + }, + { + "start": 1353.23, + "duration": 0.0, + "text": "um" + }, + { + "start": 1353.24, + "duration": 0.0, + "text": "um as<00:22:33.520> the<00:22:33.920> expression<00:22:34.320> that<00:22:34.440> this<00:22:34.600> memory<00:22:34.920> view" + }, + { + "start": 1355.07, + "duration": 0.0, + "text": "as the expression that this memory view" + }, + { + "start": 1355.08, + "duration": 0.0, + "text": "as the expression that this memory view is<00:22:35.200> evaluating." + }, + { + "start": 1356.59, + "duration": 0.0, + "text": "is evaluating." + }, + { + "start": 1356.6, + "duration": 0.0, + "text": "is evaluating. And<00:22:36.720> you<00:22:36.800> can<00:22:36.920> see<00:22:37.320> like<00:22:37.640> here's<00:22:37.960> the<00:22:38.040> byte" + }, + { + "start": 1358.35, + "duration": 0.0, + "text": "And you can see like here's the byte" + }, + { + "start": 1358.36, + "duration": 0.0, + "text": "And you can see like here's the byte representation<00:22:39.080> of<00:22:39.240> that<00:22:39.440> text<00:22:39.680> file.<00:22:40.120> So<00:22:40.760> um" + }, + { + "start": 1361.55, + "duration": 0.0, + "text": "representation of that text file. So um" + }, + { + "start": 1361.56, + "duration": 0.0, + "text": "representation of that text file. So um like<00:22:41.720> if<00:22:41.840> we<00:22:41.920> go<00:22:42.160> up<00:22:42.280> to<00:22:42.400> the<00:22:42.480> top<00:22:42.680> of<00:22:42.720> this<00:22:42.800> text" + }, + { + "start": 1362.95, + "duration": 0.0, + "text": "like if we go up to the top of this text" + }, + { + "start": 1362.96, + "duration": 0.0, + "text": "like if we go up to the top of this text file,<00:22:43.160> you<00:22:43.240> can<00:22:43.360> see" + }, + { + "start": 1364.43, + "duration": 0.0, + "text": "file, you can see" + }, + { + "start": 1364.44, + "duration": 0.0, + "text": "file, you can see //copyrights" + }, + { + "start": 1366.23, + "duration": 0.0, + "text": "//copyrights" + }, + { + "start": 1366.24, + "duration": 0.0, + "text": "//copyrights uh<00:22:46.680> (c)<00:22:47.680> Epic<00:22:48.000> Games<00:22:48.280> Tools<00:22:48.640> licensed<00:22:48.960> under" + }, + { + "start": 1369.11, + "duration": 0.0, + "text": "uh (c) Epic Games Tools licensed under" + }, + { + "start": 1369.12, + "duration": 0.0, + "text": "uh (c) Epic Games Tools licensed under the<00:22:49.240> MIT<00:22:49.600> license.<00:22:50.480> If<00:22:50.720> I<00:22:50.840> go<00:22:51.160> to<00:22:51.760> my<00:22:52.520> uh<00:22:52.600> memory" + }, + { + "start": 1372.83, + "duration": 0.0, + "text": "the MIT license. If I go to my uh memory" + }, + { + "start": 1372.84, + "duration": 0.0, + "text": "the MIT license. If I go to my uh memory view<00:22:53.040> here,<00:22:53.760> you<00:22:53.840> can<00:22:53.960> see<00:22:54.360> it's<00:22:54.520> just<00:22:54.720> like," + }, + { + "start": 1374.87, + "duration": 0.0, + "text": "view here, you can see it's just like," + }, + { + "start": 1374.88, + "duration": 0.0, + "text": "view here, you can see it's just like, \"Hey,<00:22:55.360> //copyright<00:22:56.760> (c)<00:22:57.400> Epic<00:22:57.760> Games<00:22:58.080> Tools.\"" + }, + { + "start": 1378.31, + "duration": 0.0, + "text": "\"Hey, //copyright (c) Epic Games Tools.\"" + }, + { + "start": 1378.32, + "duration": 0.0, + "text": "\"Hey, //copyright (c) Epic Games Tools.\" Like<00:22:58.560> it's<00:22:58.680> just<00:22:58.880> viewing<00:22:59.240> the<00:22:59.360> same<00:22:59.640> data<00:22:59.960> as" + }, + { + "start": 1380.19, + "duration": 0.0, + "text": "Like it's just viewing the same data as" + }, + { + "start": 1380.2, + "duration": 0.0, + "text": "Like it's just viewing the same data as text,<00:23:00.600> right?" + }, + { + "start": 1381.91, + "duration": 0.0, + "text": "text, right?" + }, + { + "start": 1381.92, + "duration": 0.0, + "text": "text, right? Or<00:23:02.080> sorry,<00:23:02.360> as<00:23:02.520> memory.<00:23:02.920> As<00:23:03.080> just<00:23:03.280> raw<00:23:03.920> bytes" + }, + { + "start": 1384.51, + "duration": 0.0, + "text": "Or sorry, as memory. As just raw bytes" + }, + { + "start": 1384.52, + "duration": 0.0, + "text": "Or sorry, as memory. As just raw bytes in<00:23:04.640> a<00:23:04.680> byte<00:23:04.920> grid." + }, + { + "start": 1385.99, + "duration": 0.0, + "text": "in a byte grid." + }, + { + "start": 1386.0, + "duration": 0.0, + "text": "in a byte grid. Um" + }, + { + "start": 1387.11, + "duration": 0.0, + "text": "Um" + }, + { + "start": 1387.12, + "duration": 0.0, + "text": "Um So,<00:23:08.080> um" + }, + { + "start": 1389.59, + "duration": 0.0, + "text": "So, um" + }, + { + "start": 1389.6, + "duration": 0.0, + "text": "So, um that's<00:23:09.880> like<00:23:10.040> something<00:23:10.360> you<00:23:10.440> can<00:23:10.560> do.<00:23:11.120> It's" + }, + { + "start": 1391.31, + "duration": 0.0, + "text": "that's like something you can do. It's" + }, + { + "start": 1391.32, + "duration": 0.0, + "text": "that's like something you can do. It's kind<00:23:11.440> of<00:23:11.520> cool." + }, + { + "start": 1392.47, + "duration": 0.0, + "text": "kind of cool." + }, + { + "start": 1392.48, + "duration": 0.0, + "text": "kind of cool. Uh<00:23:13.160> I<00:23:13.280> guess<00:23:13.800> I<00:23:13.840> don't<00:23:14.080> know<00:23:14.360> what<00:23:14.520> to<00:23:14.600> show" + }, + { + "start": 1394.75, + "duration": 0.0, + "text": "Uh I guess I don't know what to show" + }, + { + "start": 1394.76, + "duration": 0.0, + "text": "Uh I guess I don't know what to show next.<00:23:15.000> I<00:23:15.040> could<00:23:15.200> I<00:23:15.280> guess<00:23:15.480> I<00:23:15.560> could<00:23:15.720> show<00:23:15.880> some" + }, + { + "start": 1396.03, + "duration": 0.0, + "text": "next. I could I guess I could show some" + }, + { + "start": 1396.04, + "duration": 0.0, + "text": "next. I could I guess I could show some of<00:23:16.080> the<00:23:16.160> more<00:23:16.320> sophisticated<00:23:16.920> visualizers<00:23:17.520> as" + }, + { + "start": 1397.67, + "duration": 0.0, + "text": "of the more sophisticated visualizers as" + }, + { + "start": 1397.68, + "duration": 0.0, + "text": "of the more sophisticated visualizers as well." + }, + { + "start": 1398.87, + "duration": 0.0, + "text": "well." + }, + { + "start": 1398.88, + "duration": 0.0, + "text": "well. Like<00:23:19.760> uh" + }, + { + "start": 1400.71, + "duration": 0.0, + "text": "Like uh" + }, + { + "start": 1400.72, + "duration": 0.0, + "text": "Like uh um" + }, + { + "start": 1402.67, + "duration": 0.0, + "text": "um" + }, + { + "start": 1402.68, + "duration": 0.0, + "text": "um I<00:23:22.720> guess<00:23:22.920> we'll<00:23:23.040> go<00:23:23.200> down<00:23:23.520> to" + }, + { + "start": 1407.92, + "duration": 0.0, + "text": "fancy<00:23:28.200> vizzy<00:23:28.480> val<00:23:28.680> tests." + }, + { + "start": 1411.84, + "duration": 0.0, + "text": "Um" + }, + { + "start": 1414.4, + "duration": 0.0, + "text": "let's<00:23:34.720> do" + }, + { + "start": 1417.07, + "duration": 0.0, + "text": "let's do" + }, + { + "start": 1417.08, + "duration": 0.0, + "text": "let's do Okay,<00:23:37.280> so<00:23:37.360> these<00:23:37.520> are<00:23:37.600> kind<00:23:37.760> of<00:23:37.840> cool." + }, + { + "start": 1420.07, + "duration": 0.0, + "text": "Okay, so these are kind of cool." + }, + { + "start": 1420.08, + "duration": 0.0, + "text": "Okay, so these are kind of cool. If<00:23:40.160> we<00:23:40.280> have<00:23:41.120> like<00:23:41.240> a<00:23:41.320> float<00:23:41.680> here<00:23:42.160> that's<00:23:42.840> um" + }, + { + "start": 1424.19, + "duration": 0.0, + "text": "If we have like a float here that's um" + }, + { + "start": 1424.2, + "duration": 0.0, + "text": "If we have like a float here that's um you<00:23:44.240> know,<00:23:44.360> 500<00:23:45.080> and<00:23:45.200> let's<00:23:45.400> say<00:23:45.560> like<00:23:45.920> I<00:23:46.000> just" + }, + { + "start": 1426.23, + "duration": 0.0, + "text": "you know, 500 and let's say like I just" + }, + { + "start": 1426.24, + "duration": 0.0, + "text": "you know, 500 and let's say like I just happen<00:23:46.440> to<00:23:46.520> know<00:23:46.840> in<00:23:47.040> C,<00:23:47.360> we<00:23:47.480> don't<00:23:47.640> have<00:23:47.760> this" + }, + { + "start": 1427.91, + "duration": 0.0, + "text": "happen to know in C, we don't have this" + }, + { + "start": 1427.92, + "duration": 0.0, + "text": "happen to know in C, we don't have this in<00:23:48.040> type<00:23:48.280> info,<00:23:48.560> but<00:23:49.040> but<00:23:49.120> basically<00:23:49.440> like<00:23:50.200> um" + }, + { + "start": 1430.71, + "duration": 0.0, + "text": "in type info, but but basically like um" + }, + { + "start": 1430.72, + "duration": 0.0, + "text": "in type info, but but basically like um I've<00:23:50.840> got<00:23:50.960> a<00:23:51.000> float<00:23:51.320> here,<00:23:51.560> it's<00:23:51.920> set<00:23:52.120> to<00:23:52.200> 500," + }, + { + "start": 1432.99, + "duration": 0.0, + "text": "I've got a float here, it's set to 500," + }, + { + "start": 1433.0, + "duration": 0.0, + "text": "I've got a float here, it's set to 500, um<00:23:53.400> but<00:23:53.520> I<00:23:53.600> want<00:23:53.720> to<00:23:53.800> consider<00:23:54.080> this<00:23:54.200> thing<00:23:54.400> as" + }, + { + "start": 1434.51, + "duration": 0.0, + "text": "um but I want to consider this thing as" + }, + { + "start": 1434.52, + "duration": 0.0, + "text": "um but I want to consider this thing as between<00:23:54.920> the<00:23:55.040> range<00:23:55.360> of<00:23:55.640> like<00:23:55.880> I<00:23:56.080> I<00:23:56.120> want<00:23:56.240> to" + }, + { + "start": 1436.31, + "duration": 0.0, + "text": "between the range of like I I want to" + }, + { + "start": 1436.32, + "duration": 0.0, + "text": "between the range of like I I want to consider<00:23:56.560> this<00:23:56.680> thing<00:23:56.840> as<00:23:57.120> within<00:23:57.440> the<00:23:57.520> range" + }, + { + "start": 1437.79, + "duration": 0.0, + "text": "consider this thing as within the range" + }, + { + "start": 1437.8, + "duration": 0.0, + "text": "consider this thing as within the range of<00:23:57.920> 0<00:23:58.240> to<00:23:58.360> 1,000,<00:23:58.840> right?" + }, + { + "start": 1440.07, + "duration": 0.0, + "text": "of 0 to 1,000, right?" + }, + { + "start": 1440.08, + "duration": 0.0, + "text": "of 0 to 1,000, right? Um" + }, + { + "start": 1441.23, + "duration": 0.0, + "text": "Um" + }, + { + "start": 1441.24, + "duration": 0.0, + "text": "Um So,<00:24:01.360> you<00:24:01.440> can<00:24:01.560> actually<00:24:01.880> specify<00:24:02.280> this<00:24:02.440> to<00:24:02.520> the" + }, + { + "start": 1442.59, + "duration": 0.0, + "text": "So, you can actually specify this to the" + }, + { + "start": 1442.6, + "duration": 0.0, + "text": "So, you can actually specify this to the debugger<00:24:02.920> and<00:24:03.000> you<00:24:03.080> can<00:24:03.200> say<00:24:03.360> range<00:24:03.720> one<00:24:04.560> for" + }, + { + "start": 1444.75, + "duration": 0.0, + "text": "debugger and you can say range one for" + }, + { + "start": 1444.76, + "duration": 0.0, + "text": "debugger and you can say range one for one<00:24:05.400> for<00:24:05.600> one<00:24:06.040> one<00:24:06.200> dimension." + }, + { + "start": 1447.35, + "duration": 0.0, + "text": "one for one one dimension." + }, + { + "start": 1447.36, + "duration": 0.0, + "text": "one for one one dimension. And<00:24:07.400> I<00:24:07.440> can<00:24:07.560> say<00:24:07.720> slide<00:24:08.120> one<00:24:08.440> and<00:24:08.560> I<00:24:08.640> want<00:24:08.840> this" + }, + { + "start": 1448.95, + "duration": 0.0, + "text": "And I can say slide one and I want this" + }, + { + "start": 1448.96, + "duration": 0.0, + "text": "And I can say slide one and I want this to<00:24:09.040> be<00:24:09.120> zero<00:24:09.960> between<00:24:10.186> [clears throat]<00:24:10.320> zero" + }, + { + "start": 1450.51, + "duration": 0.0, + "text": "to be zero between [clears throat] zero" + }, + { + "start": 1450.52, + "duration": 0.0, + "text": "to be zero between [clears throat] zero and<00:24:10.600> 1,000,<00:24:11.040> so<00:24:11.120> it<00:24:11.200> should<00:24:11.320> be<00:24:11.400> right<00:24:11.600> in<00:24:11.640> the" + }, + { + "start": 1451.71, + "duration": 0.0, + "text": "and 1,000, so it should be right in the" + }, + { + "start": 1451.72, + "duration": 0.0, + "text": "and 1,000, so it should be right in the middle." + }, + { + "start": 1452.47, + "duration": 0.0, + "text": "middle." + }, + { + "start": 1452.48, + "duration": 0.0, + "text": "middle. >> Nice." + }, + { + "start": 1453.27, + "duration": 0.0, + "text": ">> Nice." + }, + { + "start": 1453.28, + "duration": 0.0, + "text": ">> Nice. >> And<00:24:13.360> sure<00:24:13.840> And<00:24:13.960> sure<00:24:14.120> enough" + }, + { + "start": 1455.23, + "duration": 0.0, + "text": ">> And sure And sure enough" + }, + { + "start": 1455.24, + "duration": 0.0, + "text": ">> And sure And sure enough you<00:24:15.280> get<00:24:15.440> this<00:24:16.000> and<00:24:16.480> if<00:24:16.680> I<00:24:16.920> change<00:24:17.240> the<00:24:17.320> value" + }, + { + "start": 1458.35, + "duration": 0.0, + "text": "you get this and if I change the value" + }, + { + "start": 1458.36, + "duration": 0.0, + "text": "you get this and if I change the value and<00:24:18.480> if<00:24:18.560> I<00:24:18.640> just<00:24:18.800> evaluate<00:24:19.200> the<00:24:19.280> float<00:24:19.600> itself," + }, + { + "start": 1459.95, + "duration": 0.0, + "text": "and if I just evaluate the float itself," + }, + { + "start": 1459.96, + "duration": 0.0, + "text": "and if I just evaluate the float itself, you'll<00:24:20.120> see<00:24:20.320> that<00:24:20.560> I'm<00:24:20.680> actually<00:24:20.960> changing" + }, + { + "start": 1461.43, + "duration": 0.0, + "text": "you'll see that I'm actually changing" + }, + { + "start": 1461.44, + "duration": 0.0, + "text": "you'll see that I'm actually changing the<00:24:21.520> memory<00:24:21.880> like<00:24:22.120> of<00:24:22.240> the<00:24:22.320> program<00:24:22.760> as<00:24:22.920> I<00:24:22.960> do" + }, + { + "start": 1463.11, + "duration": 0.0, + "text": "the memory like of the program as I do" + }, + { + "start": 1463.12, + "duration": 0.0, + "text": "the memory like of the program as I do this." + }, + { + "start": 1464.07, + "duration": 0.0, + "text": "this." + }, + { + "start": 1464.08, + "duration": 0.0, + "text": "this. Um" + }, + { + "start": 1467.48, + "duration": 0.0, + "text": "So," + }, + { + "start": 1468.47, + "duration": 0.0, + "text": "So," + }, + { + "start": 1468.48, + "duration": 0.0, + "text": "So, um" + }, + { + "start": 1469.43, + "duration": 0.0, + "text": "um" + }, + { + "start": 1469.44, + "duration": 0.0, + "text": "um and<00:24:29.520> then<00:24:29.680> it's<00:24:29.800> like<00:24:29.960> you<00:24:30.240> you<00:24:30.320> might<00:24:30.520> look<00:24:30.640> at" + }, + { + "start": 1470.71, + "duration": 0.0, + "text": "and then it's like you you might look at" + }, + { + "start": 1470.72, + "duration": 0.0, + "text": "and then it's like you you might look at this<00:24:30.840> and<00:24:30.920> you're<00:24:31.000> like,<00:24:31.120> \"Hey,<00:24:31.280> this<00:24:31.520> UI" + }, + { + "start": 1471.95, + "duration": 0.0, + "text": "this and you're like, \"Hey, this UI" + }, + { + "start": 1471.96, + "duration": 0.0, + "text": "this and you're like, \"Hey, this UI actually<00:24:32.280> looks<00:24:32.480> a<00:24:32.560> lot<00:24:32.920> like<00:24:33.120> if<00:24:33.280> I<00:24:33.360> hit<00:24:33.600> F1" + }, + { + "start": 1473.99, + "duration": 0.0, + "text": "actually looks a lot like if I hit F1" + }, + { + "start": 1474.0, + "duration": 0.0, + "text": "actually looks a lot like if I hit F1 and<00:24:34.120> type<00:24:34.360> font<00:24:34.720> size.\"<00:24:35.760> It's<00:24:35.920> so<00:24:36.080> strange" + }, + { + "start": 1476.55, + "duration": 0.0, + "text": "and type font size.\" It's so strange" + }, + { + "start": 1476.56, + "duration": 0.0, + "text": "and type font size.\" It's so strange because<00:24:36.800> I<00:24:36.880> actually<00:24:37.160> see<00:24:37.520> that<00:24:37.720> there's<00:24:37.920> all" + }, + { + "start": 1477.99, + "duration": 0.0, + "text": "because I actually see that there's all" + }, + { + "start": 1478.0, + "duration": 0.0, + "text": "because I actually see that there's all these<00:24:38.160> options<00:24:38.520> for<00:24:38.640> like<00:24:38.840> these<00:24:39.000> different" + }, + { + "start": 1479.23, + "duration": 0.0, + "text": "these options for like these different" + }, + { + "start": 1479.24, + "duration": 0.0, + "text": "these options for like these different kinds<00:24:39.480> of<00:24:39.560> like<00:24:39.720> sizes<00:24:40.280> and<00:24:40.400> font<00:24:40.640> sizes<00:24:41.000> and" + }, + { + "start": 1481.11, + "duration": 0.0, + "text": "kinds of like sizes and font sizes and" + }, + { + "start": 1481.12, + "duration": 0.0, + "text": "kinds of like sizes and font sizes and stuff<00:24:41.240> like<00:24:41.360> that.<00:24:41.800> It's<00:24:41.880> like,<00:24:42.320> \"That's" + }, + { + "start": 1482.47, + "duration": 0.0, + "text": "stuff like that. It's like, \"That's" + }, + { + "start": 1482.48, + "duration": 0.0, + "text": "stuff like that. It's like, \"That's pretty<00:24:42.640> interesting,<00:24:42.960> right?\"<00:24:43.080> It's<00:24:43.200> like," + }, + { + "start": 1483.35, + "duration": 0.0, + "text": "pretty interesting, right?\" It's like," + }, + { + "start": 1483.36, + "duration": 0.0, + "text": "pretty interesting, right?\" It's like, \"Yeah,<00:24:43.560> that's<00:24:43.960> evaluating<00:24:44.800> the<00:24:44.920> setting<00:24:45.440> of" + }, + { + "start": 1485.75, + "duration": 0.0, + "text": "\"Yeah, that's evaluating the setting of" + }, + { + "start": 1485.76, + "duration": 0.0, + "text": "\"Yeah, that's evaluating the setting of the<00:24:45.840> debugger.\"<00:24:46.320> Like<00:24:46.520> that's<00:24:47.000> So,<00:24:47.160> this<00:24:47.360> is" + }, + { + "start": 1487.51, + "duration": 0.0, + "text": "the debugger.\" Like that's So, this is" + }, + { + "start": 1487.52, + "duration": 0.0, + "text": "the debugger.\" Like that's So, this is literally<00:24:47.880> the<00:24:48.000> same<00:24:48.240> UI<00:24:48.840> as<00:24:49.080> this.<00:24:49.320> It's<00:24:49.440> not" + }, + { + "start": 1489.63, + "duration": 0.0, + "text": "literally the same UI as this. It's not" + }, + { + "start": 1489.64, + "duration": 0.0, + "text": "literally the same UI as this. It's not just<00:24:49.840> that<00:24:49.920> I'm<00:24:50.040> calling<00:24:50.320> the<00:24:50.400> same<00:24:50.600> helper" + }, + { + "start": 1490.87, + "duration": 0.0, + "text": "just that I'm calling the same helper" + }, + { + "start": 1490.88, + "duration": 0.0, + "text": "just that I'm calling the same helper function<00:24:51.240> in<00:24:51.320> two<00:24:51.480> places.<00:24:52.320> It's<00:24:52.600> literally" + }, + { + "start": 1492.99, + "duration": 0.0, + "text": "function in two places. It's literally" + }, + { + "start": 1493.0, + "duration": 0.0, + "text": "function in two places. It's literally the<00:24:53.120> same<00:24:53.360> path<00:24:54.080> uh<00:24:54.160> being<00:24:54.360> used<00:24:54.520> for<00:24:54.600> both." + }, + { + "start": 1494.99, + "duration": 0.0, + "text": "the same path uh being used for both." + }, + { + "start": 1495.0, + "duration": 0.0, + "text": "the same path uh being used for both. So,<00:24:55.680> that's<00:24:55.840> like<00:24:56.000> one<00:24:56.400> kind<00:24:56.600> of<00:24:57.040> fun<00:24:57.320> thing." + }, + { + "start": 1497.75, + "duration": 0.0, + "text": "So, that's like one kind of fun thing." + }, + { + "start": 1497.76, + "duration": 0.0, + "text": "So, that's like one kind of fun thing. It's<00:24:57.960> not<00:24:58.120> super<00:24:58.400> important<00:24:58.800> to<00:24:58.880> know<00:24:59.040> that," + }, + { + "start": 1499.27, + "duration": 0.0, + "text": "It's not super important to know that," + }, + { + "start": 1499.28, + "duration": 0.0, + "text": "It's not super important to know that, but<00:24:59.400> it's<00:24:59.560> just<00:24:59.720> like<00:24:59.880> a<00:24:59.960> cool<00:25:00.280> architectural" + }, + { + "start": 1500.87, + "duration": 0.0, + "text": "but it's just like a cool architectural" + }, + { + "start": 1500.88, + "duration": 0.0, + "text": "but it's just like a cool architectural aspect<00:25:01.280> of<00:25:01.640> the<00:25:01.720> debugger<00:25:02.120> is<00:25:02.280> that<00:25:02.720> I<00:25:02.840> found" + }, + { + "start": 1503.11, + "duration": 0.0, + "text": "aspect of the debugger is that I found" + }, + { + "start": 1503.12, + "duration": 0.0, + "text": "aspect of the debugger is that I found that<00:25:03.240> the<00:25:03.320> best<00:25:03.640> way<00:25:03.800> to<00:25:04.040> collapse<00:25:04.680> all<00:25:04.920> of" + }, + { + "start": 1504.99, + "duration": 0.0, + "text": "that the best way to collapse all of" + }, + { + "start": 1505.0, + "duration": 0.0, + "text": "that the best way to collapse all of this" + }, + { + "start": 1505.99, + "duration": 0.0, + "text": "this" + }, + { + "start": 1506.0, + "duration": 0.0, + "text": "this all<00:25:06.320> of<00:25:06.400> these<00:25:06.640> UIs<00:25:07.040> for<00:25:07.120> like<00:25:07.480> editing<00:25:07.800> the" + }, + { + "start": 1507.87, + "duration": 0.0, + "text": "all of these UIs for like editing the" + }, + { + "start": 1507.88, + "duration": 0.0, + "text": "all of these UIs for like editing the debugger<00:25:08.200> settings<00:25:08.760> and,<00:25:09.000> you<00:25:09.040> know,<00:25:09.200> tab" + }, + { + "start": 1509.55, + "duration": 0.0, + "text": "debugger settings and, you know, tab" + }, + { + "start": 1509.56, + "duration": 0.0, + "text": "debugger settings and, you know, tab settings<00:25:10.080> and<00:25:10.320> watch<00:25:10.600> window<00:25:10.800> stuff.<00:25:11.040> It's" + }, + { + "start": 1511.15, + "duration": 0.0, + "text": "settings and watch window stuff. It's" + }, + { + "start": 1511.16, + "duration": 0.0, + "text": "settings and watch window stuff. It's like" + }, + { + "start": 1512.27, + "duration": 0.0, + "text": "like" + }, + { + "start": 1512.28, + "duration": 0.0, + "text": "like I<00:25:12.840> I<00:25:12.920> found<00:25:13.080> that<00:25:13.200> the<00:25:13.240> best<00:25:13.480> way<00:25:13.640> to<00:25:13.760> actually" + }, + { + "start": 1513.99, + "duration": 0.0, + "text": "I I found that the best way to actually" + }, + { + "start": 1514.0, + "duration": 0.0, + "text": "I I found that the best way to actually collapse<00:25:14.360> all<00:25:14.480> of<00:25:14.560> it<00:25:14.640> down<00:25:14.880> was<00:25:15.120> to<00:25:15.240> make<00:25:15.520> the" + }, + { + "start": 1515.59, + "duration": 0.0, + "text": "collapse all of it down was to make the" + }, + { + "start": 1515.6, + "duration": 0.0, + "text": "collapse all of it down was to make the watch<00:25:15.800> window<00:25:16.040> super<00:25:16.280> super<00:25:16.520> powerful.<00:25:16.960> So," + }, + { + "start": 1518.19, + "duration": 0.0, + "text": "watch window super super powerful. So," + }, + { + "start": 1518.2, + "duration": 0.0, + "text": "watch window super super powerful. So, that's<00:25:18.560> what<00:25:18.720> ended<00:25:18.960> up<00:25:19.080> happening.<00:25:19.360> So," + }, + { + "start": 1519.47, + "duration": 0.0, + "text": "that's what ended up happening. So," + }, + { + "start": 1519.48, + "duration": 0.0, + "text": "that's what ended up happening. So, anyways,<00:25:20.160> we<00:25:20.240> have<00:25:20.360> sliders<00:25:20.840> here.<00:25:21.120> You<00:25:21.240> can" + }, + { + "start": 1521.31, + "duration": 0.0, + "text": "anyways, we have sliders here. You can" + }, + { + "start": 1521.32, + "duration": 0.0, + "text": "anyways, we have sliders here. You can do<00:25:21.440> this<00:25:21.640> with<00:25:21.920> integers<00:25:22.360> as<00:25:22.520> well.<00:25:22.760> So,<00:25:22.880> I" + }, + { + "start": 1522.91, + "duration": 0.0, + "text": "do this with integers as well. So, I" + }, + { + "start": 1522.92, + "duration": 0.0, + "text": "do this with integers as well. So, I could<00:25:23.040> do<00:25:23.160> range<00:25:23.480> one<00:25:24.160> uh<00:25:24.320> slide<00:25:24.680> three<00:25:25.000> is<00:25:25.040> an" + }, + { + "start": 1525.15, + "duration": 0.0, + "text": "could do range one uh slide three is an" + }, + { + "start": 1525.16, + "duration": 0.0, + "text": "could do range one uh slide three is an integer<00:25:25.560> and<00:25:25.680> I<00:25:25.720> can<00:25:25.840> say<00:25:26.000> this<00:25:26.200> is<00:25:26.320> also" + }, + { + "start": 1526.51, + "duration": 0.0, + "text": "integer and I can say this is also" + }, + { + "start": 1526.52, + "duration": 0.0, + "text": "integer and I can say this is also between<00:25:27.200> uh<00:25:27.280> this<00:25:27.480> is<00:25:27.560> between<00:25:27.880> zero<00:25:28.080> and<00:25:28.160> 100." + }, + { + "start": 1529.19, + "duration": 0.0, + "text": "between uh this is between zero and 100." + }, + { + "start": 1529.2, + "duration": 0.0, + "text": "between uh this is between zero and 100. Same<00:25:29.400> exact<00:25:29.680> thing<00:25:29.880> here,<00:25:30.360> right?<00:25:31.120> Um" + }, + { + "start": 1536.24, + "duration": 0.0, + "text": "So," + }, + { + "start": 1538.19, + "duration": 0.0, + "text": "So," + }, + { + "start": 1538.2, + "duration": 0.0, + "text": "So, uh<00:25:38.840> we<00:25:38.920> have<00:25:39.040> colors<00:25:40.120> um" + }, + { + "start": 1541.59, + "duration": 0.0, + "text": "uh we have colors um" + }, + { + "start": 1541.6, + "duration": 0.0, + "text": "uh we have colors um as<00:25:41.840> well.<00:25:42.120> So,<00:25:42.280> if<00:25:42.400> I've<00:25:42.560> got<00:25:42.920> um<00:25:43.440> example" + }, + { + "start": 1543.79, + "duration": 0.0, + "text": "as well. So, if I've got um example" + }, + { + "start": 1543.8, + "duration": 0.0, + "text": "as well. So, if I've got um example color<00:25:44.040> 4F32" + }, + { + "start": 1545.63, + "duration": 0.0, + "text": "color 4F32" + }, + { + "start": 1545.64, + "duration": 0.0, + "text": "color 4F32 um<00:25:46.400> which<00:25:46.640> I<00:25:46.720> think<00:25:47.080> I<00:25:47.120> think<00:25:47.320> some<00:25:47.520> of<00:25:47.600> these" + }, + { + "start": 1547.83, + "duration": 0.0, + "text": "um which I think I think some of these" + }, + { + "start": 1547.84, + "duration": 0.0, + "text": "um which I think I think some of these may<00:25:48.080> be<00:25:48.520> kind<00:25:48.720> of<00:25:48.840> work<00:25:49.040> in<00:25:49.120> progress.<00:25:49.600> So,<00:25:49.680> I" + }, + { + "start": 1549.71, + "duration": 0.0, + "text": "may be kind of work in progress. So, I" + }, + { + "start": 1549.72, + "duration": 0.0, + "text": "may be kind of work in progress. So, I don't<00:25:49.920> know<00:25:50.320> there<00:25:50.440> might<00:25:50.640> be<00:25:50.960> one<00:25:51.160> of<00:25:51.240> these" + }, + { + "start": 1551.47, + "duration": 0.0, + "text": "don't know there might be one of these" + }, + { + "start": 1551.48, + "duration": 0.0, + "text": "don't know there might be one of these that<00:25:51.640> doesn't<00:25:51.920> quite<00:25:52.200> work<00:25:52.400> yet,<00:25:52.560> but<00:25:52.720> let's" + }, + { + "start": 1552.87, + "duration": 0.0, + "text": "that doesn't quite work yet, but let's" + }, + { + "start": 1552.88, + "duration": 0.0, + "text": "that doesn't quite work yet, but let's try<00:25:53.840> let's<00:25:54.000> try<00:25:54.160> color<00:25:55.240> um<00:25:55.640> example<00:25:56.240> color" + }, + { + "start": 1556.59, + "duration": 0.0, + "text": "try let's try color um example color" + }, + { + "start": 1556.6, + "duration": 0.0, + "text": "try let's try color um example color U32.<00:25:57.920> Is<00:25:58.000> this<00:25:58.120> going<00:25:58.240> to<00:25:58.320> work?<00:25:58.760> Okay.<00:25:59.200> I" + }, + { + "start": 1559.27, + "duration": 0.0, + "text": "U32. Is this going to work? Okay. I" + }, + { + "start": 1559.28, + "duration": 0.0, + "text": "U32. Is this going to work? Okay. I don't<00:25:59.440> know<00:25:59.520> if<00:25:59.640> editing<00:26:00.040> will<00:26:00.160> work.<00:26:00.680> Okay," + }, + { + "start": 1560.83, + "duration": 0.0, + "text": "don't know if editing will work. Okay," + }, + { + "start": 1560.84, + "duration": 0.0, + "text": "don't know if editing will work. Okay, yeah,<00:26:01.040> editing<00:26:01.360> works.<00:26:01.560> So,<00:26:01.720> U32<00:26:02.280> seems<00:26:02.520> to<00:26:02.600> be" + }, + { + "start": 1562.71, + "duration": 0.0, + "text": "yeah, editing works. So, U32 seems to be" + }, + { + "start": 1562.72, + "duration": 0.0, + "text": "yeah, editing works. So, U32 seems to be the<00:26:02.960> one<00:26:03.200> that<00:26:03.360> I<00:26:03.840> I<00:26:03.920> think<00:26:04.120> the<00:26:04.240> four<00:26:04.480> float" + }, + { + "start": 1564.75, + "duration": 0.0, + "text": "the one that I I think the four float" + }, + { + "start": 1564.76, + "duration": 0.0, + "text": "the one that I I think the four float one<00:26:04.960> is<00:26:05.120> maybe" + }, + { + "start": 1566.43, + "duration": 0.0, + "text": "one is maybe" + }, + { + "start": 1566.44, + "duration": 0.0, + "text": "one is maybe there's<00:26:06.560> still<00:26:06.720> some<00:26:06.840> stuff<00:26:07.000> that's<00:26:07.160> in" + }, + { + "start": 1567.23, + "duration": 0.0, + "text": "there's still some stuff that's in" + }, + { + "start": 1567.24, + "duration": 0.0, + "text": "there's still some stuff that's in progress<00:26:07.680> here<00:26:07.840> with<00:26:08.160> with<00:26:08.400> some<00:26:08.520> of<00:26:08.600> these" + }, + { + "start": 1568.71, + "duration": 0.0, + "text": "progress here with with some of these" + }, + { + "start": 1568.72, + "duration": 0.0, + "text": "progress here with with some of these fancy<00:26:09.120> things.<00:26:09.400> Like<00:26:09.520> I<00:26:09.560> think<00:26:09.800> this<00:26:09.960> might" + }, + { + "start": 1570.47, + "duration": 0.0, + "text": "fancy things. Like I think this might" + }, + { + "start": 1570.48, + "duration": 0.0, + "text": "fancy things. Like I think this might work<00:26:10.920> for<00:26:11.080> the<00:26:11.200> visualization,<00:26:11.960> but<00:26:12.120> I<00:26:12.160> don't" + }, + { + "start": 1572.27, + "duration": 0.0, + "text": "work for the visualization, but I don't" + }, + { + "start": 1572.28, + "duration": 0.0, + "text": "work for the visualization, but I don't know<00:26:12.400> if<00:26:12.520> I<00:26:12.560> can<00:26:12.720> edit<00:26:13.000> it.<00:26:13.560> Yeah,<00:26:13.760> so<00:26:13.880> there's" + }, + { + "start": 1574.07, + "duration": 0.0, + "text": "know if I can edit it. Yeah, so there's" + }, + { + "start": 1574.08, + "duration": 0.0, + "text": "know if I can edit it. Yeah, so there's a<00:26:14.200> there's<00:26:14.320> a<00:26:14.360> couple<00:26:14.600> of<00:26:14.640> missing<00:26:14.920> features" + }, + { + "start": 1575.19, + "duration": 0.0, + "text": "a there's a couple of missing features" + }, + { + "start": 1575.2, + "duration": 0.0, + "text": "a there's a couple of missing features here,<00:26:15.360> but<00:26:16.000> in<00:26:16.080> the<00:26:16.120> case<00:26:16.320> of<00:26:16.400> the<00:26:16.480> U32" + }, + { + "start": 1578.07, + "duration": 0.0, + "text": "here, but in the case of the U32" + }, + { + "start": 1578.08, + "duration": 0.0, + "text": "here, but in the case of the U32 um<00:26:18.520> you<00:26:18.640> know,<00:26:18.760> we<00:26:18.880> can<00:26:19.040> edit<00:26:19.960> just<00:26:20.320> this<00:26:20.480> thing" + }, + { + "start": 1580.67, + "duration": 0.0, + "text": "um you know, we can edit just this thing" + }, + { + "start": 1580.68, + "duration": 0.0, + "text": "um you know, we can edit just this thing here.<00:26:21.120> We<00:26:21.200> can<00:26:21.320> change<00:26:21.800> whatever<00:26:22.000> the<00:26:22.080> color" + }, + { + "start": 1582.31, + "duration": 0.0, + "text": "here. We can change whatever the color" + }, + { + "start": 1582.32, + "duration": 0.0, + "text": "here. We can change whatever the color value<00:26:22.640> is.<00:26:23.480> Um<00:26:23.800> and<00:26:23.920> you<00:26:23.960> can<00:26:24.080> see<00:26:24.240> like<00:26:24.680> this" + }, + { + "start": 1584.91, + "duration": 0.0, + "text": "value is. Um and you can see like this" + }, + { + "start": 1584.92, + "duration": 0.0, + "text": "value is. Um and you can see like this U32<00:26:25.520> value<00:26:25.920> it's<00:26:26.080> being<00:26:26.640> uh<00:26:26.920> kind<00:26:27.080> of<00:26:27.600> peaked" + }, + { + "start": 1588.03, + "duration": 0.0, + "text": "U32 value it's being uh kind of peaked" + }, + { + "start": 1588.04, + "duration": 0.0, + "text": "U32 value it's being uh kind of peaked right<00:26:28.240> here<00:26:28.400> in<00:26:28.480> the<00:26:28.520> source<00:26:28.800> code.<00:26:29.720> Um<00:26:30.320> and" + }, + { + "start": 1590.63, + "duration": 0.0, + "text": "right here in the source code. Um and" + }, + { + "start": 1590.64, + "duration": 0.0, + "text": "right here in the source code. Um and you<00:26:30.720> can<00:26:30.840> see<00:26:30.960> it's<00:26:31.080> actually<00:26:31.360> changing<00:26:31.800> like" + }, + { + "start": 1591.99, + "duration": 0.0, + "text": "you can see it's actually changing like" + }, + { + "start": 1592.0, + "duration": 0.0, + "text": "you can see it's actually changing like as<00:26:32.200> I<00:26:32.280> just<00:26:32.440> drag<00:26:32.720> this<00:26:32.880> color<00:26:33.440> around.<00:26:34.160> Um" + }, + { + "start": 1595.39, + "duration": 0.0, + "text": "as I just drag this color around. Um" + }, + { + "start": 1595.4, + "duration": 0.0, + "text": "as I just drag this color around. Um So,<00:26:35.560> yeah." + }, + { + "start": 1597.31, + "duration": 0.0, + "text": "So, yeah." + }, + { + "start": 1597.32, + "duration": 0.0, + "text": "So, yeah. Um" + }, + { + "start": 1598.208, + "duration": 0.0, + "text": "Um" + }, + { + "start": 1598.218, + "duration": 0.0, + "text": "Um >> [sighs]" + }, + { + "start": 1598.95, + "duration": 0.0, + "text": ">> [sighs]" + }, + { + "start": 1598.96, + "duration": 0.0, + "text": ">> [sighs] >> uh<00:26:39.160> multi-line<00:26:39.720> text<00:26:40.080> I<00:26:40.120> already<00:26:40.360> showed" + }, + { + "start": 1600.67, + "duration": 0.0, + "text": ">> uh multi-line text I already showed" + }, + { + "start": 1600.68, + "duration": 0.0, + "text": ">> uh multi-line text I already showed this,<00:26:40.960> but<00:26:41.240> we<00:26:41.320> can<00:26:41.440> do<00:26:41.800> text<00:26:42.320> of<00:26:43.120> uh" + }, + { + "start": 1603.67, + "duration": 0.0, + "text": "this, but we can do text of uh" + }, + { + "start": 1603.68, + "duration": 0.0, + "text": "this, but we can do text of uh long<00:26:44.080> string." + }, + { + "start": 1605.75, + "duration": 0.0, + "text": "long string." + }, + { + "start": 1605.76, + "duration": 0.0, + "text": "long string. We<00:26:45.880> can<00:26:46.000> do<00:26:46.360> text<00:26:47.360> um" + }, + { + "start": 1608.43, + "duration": 0.0, + "text": "We can do text um" + }, + { + "start": 1608.44, + "duration": 0.0, + "text": "We can do text um text<00:26:48.880> of<00:26:49.040> code<00:26:49.360> string.<00:26:50.000> The<00:26:50.120> language<00:26:50.720> and<00:26:51.040> in" + }, + { + "start": 1611.11, + "duration": 0.0, + "text": "text of code string. The language and in" + }, + { + "start": 1611.12, + "duration": 0.0, + "text": "text of code string. The language and in this<00:26:51.280> case<00:26:51.520> it's<00:26:51.680> like<00:26:51.840> we<00:26:51.920> have<00:26:52.080> some<00:26:52.280> C" + }, + { + "start": 1612.51, + "duration": 0.0, + "text": "this case it's like we have some C" + }, + { + "start": 1612.52, + "duration": 0.0, + "text": "this case it's like we have some C source<00:26:52.800> code<00:26:53.000> so<00:26:53.080> maybe<00:26:53.280> I<00:26:53.320> just<00:26:53.480> want<00:26:53.600> to<00:26:53.680> say" + }, + { + "start": 1613.83, + "duration": 0.0, + "text": "source code so maybe I just want to say" + }, + { + "start": 1613.84, + "duration": 0.0, + "text": "source code so maybe I just want to say C<00:26:54.760> Uh" + }, + { + "start": 1615.75, + "duration": 0.0, + "text": "C Uh" + }, + { + "start": 1615.76, + "duration": 0.0, + "text": "C Uh or<00:26:55.920> sorry" + }, + { + "start": 1616.79, + "duration": 0.0, + "text": "or sorry" + }, + { + "start": 1616.8, + "duration": 0.0, + "text": "or sorry that<00:26:57.400> not<00:26:57.640> shown<00:26:57.800> in<00:26:57.840> the<00:26:57.920> docs<00:26:58.160> but<00:26:58.280> that" + }, + { + "start": 1618.43, + "duration": 0.0, + "text": "that not shown in the docs but that" + }, + { + "start": 1618.44, + "duration": 0.0, + "text": "that not shown in the docs but that needs<00:26:58.640> to<00:26:58.720> be<00:26:58.760> a<00:26:58.800> named<00:26:59.080> parameter.<00:26:59.400> So" + }, + { + "start": 1619.51, + "duration": 0.0, + "text": "needs to be a named parameter. So" + }, + { + "start": 1619.52, + "duration": 0.0, + "text": "needs to be a named parameter. So anyways,<00:27:00.280> code<00:27:00.520> strain<00:27:00.840> lang<00:27:01.120> C" + }, + { + "start": 1622.27, + "duration": 0.0, + "text": "anyways, code strain lang C" + }, + { + "start": 1622.28, + "duration": 0.0, + "text": "anyways, code strain lang C I'm<00:27:02.440> still<00:27:02.600> working<00:27:02.840> on<00:27:02.960> the<00:27:03.080> in<00:27:03.480> application" + }, + { + "start": 1623.91, + "duration": 0.0, + "text": "I'm still working on the in application" + }, + { + "start": 1623.92, + "duration": 0.0, + "text": "I'm still working on the in application docs<00:27:04.240> so<00:27:04.360> it's<00:27:04.480> a<00:27:04.520> little<00:27:04.720> bit<00:27:05.080> it's<00:27:05.200> a<00:27:05.240> little" + }, + { + "start": 1625.35, + "duration": 0.0, + "text": "docs so it's a little bit it's a little" + }, + { + "start": 1625.36, + "duration": 0.0, + "text": "docs so it's a little bit it's a little bit<00:27:05.480> like<00:27:05.640> of<00:27:05.720> a<00:27:05.760> secret<00:27:06.240> thing<00:27:06.480> but" + }, + { + "start": 1628.15, + "duration": 0.0, + "text": "bit like of a secret thing but" + }, + { + "start": 1628.16, + "duration": 0.0, + "text": "bit like of a secret thing but lang<00:27:08.440> equals<00:27:08.720> C<00:27:08.880> and<00:27:08.960> then<00:27:09.080> you<00:27:09.160> can<00:27:09.240> see<00:27:09.640> oh<00:27:09.880> I" + }, + { + "start": 1629.95, + "duration": 0.0, + "text": "lang equals C and then you can see oh I" + }, + { + "start": 1629.96, + "duration": 0.0, + "text": "lang equals C and then you can see oh I actually<00:27:10.240> see<00:27:10.400> my<00:27:10.600> C<00:27:10.800> source<00:27:11.040> code<00:27:11.240> here" + }, + { + "start": 1632.67, + "duration": 0.0, + "text": "actually see my C source code here" + }, + { + "start": 1632.68, + "duration": 0.0, + "text": "actually see my C source code here syntax<00:27:13.080> highlighted<00:27:13.560> and<00:27:13.640> everything<00:27:14.040> and" + }, + { + "start": 1634.35, + "duration": 0.0, + "text": "syntax highlighted and everything and" + }, + { + "start": 1634.36, + "duration": 0.0, + "text": "syntax highlighted and everything and show<00:27:14.560> showing<00:27:14.800> me<00:27:14.880> the<00:27:15.000> scopes<00:27:15.320> and<00:27:15.400> stuff" + }, + { + "start": 1635.59, + "duration": 0.0, + "text": "show showing me the scopes and stuff" + }, + { + "start": 1635.6, + "duration": 0.0, + "text": "show showing me the scopes and stuff like<00:27:15.720> that.<00:27:16.560> Um" + }, + { + "start": 1638.47, + "duration": 0.0, + "text": "like that. Um" + }, + { + "start": 1638.48, + "duration": 0.0, + "text": "like that. Um So<00:27:18.600> let's<00:27:18.760> see<00:27:18.880> what<00:27:19.000> else.<00:27:19.640> This<00:27:19.880> is<00:27:19.960> assembly" + }, + { + "start": 1640.51, + "duration": 0.0, + "text": "So let's see what else. This is assembly" + }, + { + "start": 1640.52, + "duration": 0.0, + "text": "So let's see what else. This is assembly of<00:27:20.640> course.<00:27:21.000> So<00:27:21.440> if<00:27:21.640> I<00:27:21.720> open<00:27:21.960> up<00:27:22.040> like<00:27:22.200> a" + }, + { + "start": 1642.23, + "duration": 0.0, + "text": "of course. So if I open up like a" + }, + { + "start": 1642.24, + "duration": 0.0, + "text": "of course. So if I open up like a disassembly<00:27:22.840> view" + }, + { + "start": 1643.83, + "duration": 0.0, + "text": "disassembly view" + }, + { + "start": 1643.84, + "duration": 0.0, + "text": "disassembly view um" + }, + { + "start": 1645.19, + "duration": 0.0, + "text": "um" + }, + { + "start": 1645.2, + "duration": 0.0, + "text": "um and<00:27:25.920> uh" + }, + { + "start": 1648.0, + "duration": 0.0, + "text": "I<00:27:28.200> want<00:27:28.360> to<00:27:28.400> see<00:27:28.520> like<00:27:28.720> where<00:27:28.880> my<00:27:29.000> thread<00:27:29.280> is" + }, + { + "start": 1649.71, + "duration": 0.0, + "text": "I want to see like where my thread is" + }, + { + "start": 1649.72, + "duration": 0.0, + "text": "I want to see like where my thread is with<00:27:29.920> respect<00:27:30.200> to<00:27:30.280> the<00:27:30.440> actual<00:27:30.880> machine<00:27:31.160> code" + }, + { + "start": 1651.31, + "duration": 0.0, + "text": "with respect to the actual machine code" + }, + { + "start": 1651.32, + "duration": 0.0, + "text": "with respect to the actual machine code instructions" + }, + { + "start": 1652.75, + "duration": 0.0, + "text": "instructions" + }, + { + "start": 1652.76, + "duration": 0.0, + "text": "instructions um<00:27:33.360> I<00:27:33.440> can<00:27:33.560> open<00:27:33.720> up<00:27:33.800> a<00:27:33.880> disassembly<00:27:34.320> view<00:27:34.520> that" + }, + { + "start": 1654.83, + "duration": 0.0, + "text": "um I can open up a disassembly view that" + }, + { + "start": 1654.84, + "duration": 0.0, + "text": "um I can open up a disassembly view that takes<00:27:35.040> the<00:27:35.160> actual<00:27:35.480> code<00:27:35.840> that's<00:27:36.080> in<00:27:36.200> the" + }, + { + "start": 1656.27, + "duration": 0.0, + "text": "takes the actual code that's in the" + }, + { + "start": 1656.28, + "duration": 0.0, + "text": "takes the actual code that's in the process<00:27:36.720> that<00:27:36.880> the<00:27:36.960> thread<00:27:37.240> is<00:27:37.360> stopped<00:27:37.720> on" + }, + { + "start": 1658.27, + "duration": 0.0, + "text": "process that the thread is stopped on" + }, + { + "start": 1658.28, + "duration": 0.0, + "text": "process that the thread is stopped on and<00:27:38.480> it<00:27:38.600> just<00:27:39.200> disassembles<00:27:39.840> it.<00:27:40.640> Um<00:27:41.440> meaning" + }, + { + "start": 1661.71, + "duration": 0.0, + "text": "and it just disassembles it. Um meaning" + }, + { + "start": 1661.72, + "duration": 0.0, + "text": "and it just disassembles it. Um meaning it<00:27:41.800> interprets<00:27:42.280> it<00:27:42.400> how<00:27:42.480> the<00:27:42.560> CPU<00:27:42.920> would" + }, + { + "start": 1663.03, + "duration": 0.0, + "text": "it interprets it how the CPU would" + }, + { + "start": 1663.04, + "duration": 0.0, + "text": "it interprets it how the CPU would interpret<00:27:43.360> it<00:27:43.480> to<00:27:43.560> find<00:27:43.800> out<00:27:43.920> what<00:27:44.080> the" + }, + { + "start": 1664.15, + "duration": 0.0, + "text": "interpret it to find out what the" + }, + { + "start": 1664.16, + "duration": 0.0, + "text": "interpret it to find out what the instructions<00:27:44.600> are,<00:27:44.880> what<00:27:45.000> are<00:27:45.040> the" + }, + { + "start": 1665.11, + "duration": 0.0, + "text": "instructions are, what are the" + }, + { + "start": 1665.12, + "duration": 0.0, + "text": "instructions are, what are the parameters<00:27:45.560> to<00:27:45.640> the<00:27:45.680> instructions,<00:27:46.200> like<00:27:46.320> all" + }, + { + "start": 1666.43, + "duration": 0.0, + "text": "parameters to the instructions, like all" + }, + { + "start": 1666.44, + "duration": 0.0, + "text": "parameters to the instructions, like all these<00:27:46.600> things." + }, + { + "start": 1667.87, + "duration": 0.0, + "text": "these things." + }, + { + "start": 1667.88, + "duration": 0.0, + "text": "these things. And<00:27:48.360> uh<00:27:48.480> you<00:27:48.560> can<00:27:48.680> see<00:27:48.840> it<00:27:48.960> corre-<00:27:49.280> it" + }, + { + "start": 1669.35, + "duration": 0.0, + "text": "And uh you can see it corre- it" + }, + { + "start": 1669.36, + "duration": 0.0, + "text": "And uh you can see it corre- it automatically<00:27:49.800> correlates<00:27:50.320> like<00:27:50.520> with" + }, + { + "start": 1671.31, + "duration": 0.0, + "text": "automatically correlates like with" + }, + { + "start": 1671.32, + "duration": 0.0, + "text": "automatically correlates like with source<00:27:51.600> code<00:27:51.880> like<00:27:52.040> you<00:27:52.160> can<00:27:52.280> see<00:27:52.600> like<00:27:52.800> which" + }, + { + "start": 1673.03, + "duration": 0.0, + "text": "source code like you can see like which" + }, + { + "start": 1673.04, + "duration": 0.0, + "text": "source code like you can see like which instructions<00:27:53.600> map<00:27:53.800> to<00:27:53.880> which<00:27:54.080> line<00:27:54.280> of<00:27:54.360> source" + }, + { + "start": 1674.59, + "duration": 0.0, + "text": "instructions map to which line of source" + }, + { + "start": 1674.6, + "duration": 0.0, + "text": "instructions map to which line of source code<00:27:54.800> and<00:27:54.920> so<00:27:55.120> on.<00:27:55.840> Um<00:27:55.960> and<00:27:56.080> then<00:27:56.200> as<00:27:56.400> I<00:27:56.440> step" + }, + { + "start": 1676.87, + "duration": 0.0, + "text": "code and so on. Um and then as I step" + }, + { + "start": 1676.88, + "duration": 0.0, + "text": "code and so on. Um and then as I step like<00:27:57.040> you'll<00:27:57.200> see<00:27:57.360> that<00:27:57.520> the<00:27:57.640> thread<00:27:58.280> like" + }, + { + "start": 1678.39, + "duration": 0.0, + "text": "like you'll see that the thread like" + }, + { + "start": 1678.4, + "duration": 0.0, + "text": "like you'll see that the thread like goes<00:27:58.640> through<00:27:59.280> um" + }, + { + "start": 1680.39, + "duration": 0.0, + "text": "goes through um" + }, + { + "start": 1680.4, + "duration": 0.0, + "text": "goes through um goes<00:28:00.640> through<00:28:00.760> the<00:28:00.840> code<00:28:01.080> here." + }, + { + "start": 1681.91, + "duration": 0.0, + "text": "goes through the code here." + }, + { + "start": 1681.92, + "duration": 0.0, + "text": "goes through the code here. Um" + }, + { + "start": 1682.83, + "duration": 0.0, + "text": "Um" + }, + { + "start": 1682.84, + "duration": 0.0, + "text": "Um this<00:28:03.080> is<00:28:03.200> also<00:28:03.440> just<00:28:03.640> a<00:28:03.680> visualizer,<00:28:04.400> right?" + }, + { + "start": 1684.59, + "duration": 0.0, + "text": "this is also just a visualizer, right?" + }, + { + "start": 1684.6, + "duration": 0.0, + "text": "this is also just a visualizer, right? So<00:28:04.720> I<00:28:04.760> could<00:28:04.920> just<00:28:05.320> do<00:28:05.760> like<00:28:06.280> disasm<00:28:06.960> and<00:28:07.080> I" + }, + { + "start": 1687.15, + "duration": 0.0, + "text": "So I could just do like disasm and I" + }, + { + "start": 1687.16, + "duration": 0.0, + "text": "So I could just do like disasm and I could<00:28:07.280> put<00:28:07.440> in<00:28:07.520> like<00:28:07.720> a<00:28:08.400> like<00:28:08.520> my<00:28:08.680> mule<00:28:08.920> main" + }, + { + "start": 1689.15, + "duration": 0.0, + "text": "could put in like a like my mule main" + }, + { + "start": 1689.16, + "duration": 0.0, + "text": "could put in like a like my mule main function" + }, + { + "start": 1690.63, + "duration": 0.0, + "text": "function" + }, + { + "start": 1690.64, + "duration": 0.0, + "text": "function and<00:28:11.320> if<00:28:11.480> I<00:28:12.160> go<00:28:12.360> to<00:28:12.520> mule<00:28:12.760> main<00:28:13.200> here" + }, + { + "start": 1695.15, + "duration": 0.0, + "text": "and if I go to mule main here" + }, + { + "start": 1695.16, + "duration": 0.0, + "text": "and if I go to mule main here uh<00:28:15.400> you<00:28:15.520> can<00:28:15.640> see<00:28:15.840> that" + }, + { + "start": 1696.91, + "duration": 0.0, + "text": "uh you can see that" + }, + { + "start": 1696.92, + "duration": 0.0, + "text": "uh you can see that uh<00:28:16.960> let<00:28:17.080> me<00:28:17.160> pull<00:28:17.320> this<00:28:17.440> out<00:28:17.560> as<00:28:17.680> its<00:28:17.800> own<00:28:17.960> tab." + }, + { + "start": 1698.15, + "duration": 0.0, + "text": "uh let me pull this out as its own tab." + }, + { + "start": 1698.16, + "duration": 0.0, + "text": "uh let me pull this out as its own tab. So<00:28:18.280> we're<00:28:18.360> just<00:28:18.600> viewing<00:28:18.840> the<00:28:18.920> disassembly<00:28:19.560> of" + }, + { + "start": 1699.87, + "duration": 0.0, + "text": "So we're just viewing the disassembly of" + }, + { + "start": 1699.88, + "duration": 0.0, + "text": "So we're just viewing the disassembly of mule<00:28:20.120> main" + }, + { + "start": 1701.03, + "duration": 0.0, + "text": "mule main" + }, + { + "start": 1701.04, + "duration": 0.0, + "text": "mule main and<00:28:21.680> we<00:28:21.840> can<00:28:22.000> see<00:28:22.200> like<00:28:22.720> that's<00:28:22.960> just<00:28:23.240> going<00:28:23.360> to" + }, + { + "start": 1703.47, + "duration": 0.0, + "text": "and we can see like that's just going to" + }, + { + "start": 1703.48, + "duration": 0.0, + "text": "and we can see like that's just going to do<00:28:23.720> exactly<00:28:24.120> what<00:28:24.200> I<00:28:24.240> told<00:28:24.480> it<00:28:24.600> to.<00:28:24.720> It's<00:28:24.880> like" + }, + { + "start": 1705.03, + "duration": 0.0, + "text": "do exactly what I told it to. It's like" + }, + { + "start": 1705.04, + "duration": 0.0, + "text": "do exactly what I told it to. It's like disassemble<00:28:25.560> mule<00:28:25.720> main<00:28:26.120> and<00:28:26.280> show<00:28:26.440> me<00:28:27.160> what" + }, + { + "start": 1707.27, + "duration": 0.0, + "text": "disassemble mule main and show me what" + }, + { + "start": 1707.28, + "duration": 0.0, + "text": "disassemble mule main and show me what it<00:28:27.360> looks<00:28:27.520> like<00:28:27.720> and<00:28:27.960> and" + }, + { + "start": 1709.11, + "duration": 0.0, + "text": "it looks like and and" + }, + { + "start": 1709.12, + "duration": 0.0, + "text": "it looks like and and here<00:28:29.320> it<00:28:29.400> is." + }, + { + "start": 1710.79, + "duration": 0.0, + "text": "here it is." + }, + { + "start": 1710.8, + "duration": 0.0, + "text": "here it is. Um" + }, + { + "start": 1712.63, + "duration": 0.0, + "text": "Um" + }, + { + "start": 1712.64, + "duration": 0.0, + "text": "Um so" + }, + { + "start": 1714.47, + "duration": 0.0, + "text": "so" + }, + { + "start": 1714.48, + "duration": 0.0, + "text": "so then<00:28:35.760> the<00:28:36.000> next<00:28:36.280> thing<00:28:36.480> I<00:28:36.640> should<00:28:36.880> probably" + }, + { + "start": 1717.23, + "duration": 0.0, + "text": "then the next thing I should probably" + }, + { + "start": 1717.24, + "duration": 0.0, + "text": "then the next thing I should probably show<00:28:37.680> is" + }, + { + "start": 1719.23, + "duration": 0.0, + "text": "show is" + }, + { + "start": 1719.24, + "duration": 0.0, + "text": "show is uh<00:28:39.320> we've<00:28:39.400> got<00:28:39.560> other<00:28:39.720> kinds<00:28:39.960> of<00:28:40.000> visualizers" + }, + { + "start": 1720.47, + "duration": 0.0, + "text": "uh we've got other kinds of visualizers" + }, + { + "start": 1720.48, + "duration": 0.0, + "text": "uh we've got other kinds of visualizers like<00:28:40.880> um<00:28:41.360> like<00:28:41.480> a<00:28:41.520> bit<00:28:41.680> map<00:28:41.880> visualizer<00:28:42.320> for" + }, + { + "start": 1722.43, + "duration": 0.0, + "text": "like um like a bit map visualizer for" + }, + { + "start": 1722.44, + "duration": 0.0, + "text": "like um like a bit map visualizer for example.<00:28:42.800> So<00:28:42.880> if<00:28:42.960> I've<00:28:43.080> got<00:28:43.200> a<00:28:43.240> bunch<00:28:43.440> of<00:28:43.480> data" + }, + { + "start": 1723.83, + "duration": 0.0, + "text": "example. So if I've got a bunch of data" + }, + { + "start": 1723.84, + "duration": 0.0, + "text": "example. So if I've got a bunch of data like<00:28:44.200> U32s<00:28:44.880> that<00:28:45.000> that<00:28:45.200> to<00:28:45.400> interpret<00:28:45.800> as" + }, + { + "start": 1725.91, + "duration": 0.0, + "text": "like U32s that that to interpret as" + }, + { + "start": 1725.92, + "duration": 0.0, + "text": "like U32s that that to interpret as pixels" + }, + { + "start": 1727.15, + "duration": 0.0, + "text": "pixels" + }, + { + "start": 1727.16, + "duration": 0.0, + "text": "pixels I<00:28:47.240> can<00:28:47.440> say,<00:28:47.680> \"Hey,<00:28:47.960> like<00:28:48.200> I<00:28:48.280> actually<00:28:48.560> have<00:28:48.680> a" + }, + { + "start": 1728.71, + "duration": 0.0, + "text": "I can say, \"Hey, like I actually have a" + }, + { + "start": 1728.72, + "duration": 0.0, + "text": "I can say, \"Hey, like I actually have a bitmap<00:28:49.480> and<00:28:49.800> my" + }, + { + "start": 1731.51, + "duration": 0.0, + "text": "bitmap and my" + }, + { + "start": 1731.52, + "duration": 0.0, + "text": "bitmap and my my<00:28:51.760> pixels<00:28:52.240> for<00:28:52.440> for<00:28:52.560> this<00:28:52.680> bitmap<00:28:53.520> is<00:28:53.640> just" + }, + { + "start": 1733.83, + "duration": 0.0, + "text": "my pixels for for this bitmap is just" + }, + { + "start": 1733.84, + "duration": 0.0, + "text": "my pixels for for this bitmap is just this<00:28:54.040> big<00:28:54.280> array<00:28:54.560> of<00:28:54.840> of<00:28:55.200> U32s<00:28:55.760> called<00:28:55.960> pixels." + }, + { + "start": 1736.87, + "duration": 0.0, + "text": "this big array of of U32s called pixels." + }, + { + "start": 1736.88, + "duration": 0.0, + "text": "this big array of of U32s called pixels. I<00:28:56.960> happen<00:28:57.200> to<00:28:57.320> know<00:28:57.520> that<00:28:57.680> the<00:28:57.760> dimensions<00:28:58.200> of" + }, + { + "start": 1738.31, + "duration": 0.0, + "text": "I happen to know that the dimensions of" + }, + { + "start": 1738.32, + "duration": 0.0, + "text": "I happen to know that the dimensions of this<00:28:58.480> thing<00:28:58.840> are<00:28:59.040> 18<00:28:59.320> by<00:28:59.480> 18,<00:28:59.920> but<00:29:00.040> you<00:29:00.120> can<00:29:00.240> put" + }, + { + "start": 1740.35, + "duration": 0.0, + "text": "this thing are 18 by 18, but you can put" + }, + { + "start": 1740.36, + "duration": 0.0, + "text": "this thing are 18 by 18, but you can put in<00:29:00.480> whatever<00:29:00.720> you<00:29:00.800> want<00:29:01.000> there.\"" + }, + { + "start": 1741.99, + "duration": 0.0, + "text": "in whatever you want there.\"" + }, + { + "start": 1742.0, + "duration": 0.0, + "text": "in whatever you want there.\" And<00:29:02.080> then<00:29:02.160> if<00:29:02.280> you<00:29:02.360> open<00:29:02.600> that,<00:29:03.320> you<00:29:03.440> get<00:29:03.560> a" + }, + { + "start": 1743.59, + "duration": 0.0, + "text": "And then if you open that, you get a" + }, + { + "start": 1743.6, + "duration": 0.0, + "text": "And then if you open that, you get a little<00:29:03.840> bitmap<00:29:04.160> visualizer." + }, + { + "start": 1746.03, + "duration": 0.0, + "text": "little bitmap visualizer." + }, + { + "start": 1746.04, + "duration": 0.0, + "text": "little bitmap visualizer. Um<00:29:06.760> and<00:29:07.040> you<00:29:07.160> can<00:29:07.720> just<00:29:07.920> like<00:29:08.080> everything,<00:29:08.400> you" + }, + { + "start": 1748.47, + "duration": 0.0, + "text": "Um and you can just like everything, you" + }, + { + "start": 1748.48, + "duration": 0.0, + "text": "Um and you can just like everything, you can<00:29:08.600> pull<00:29:08.760> it<00:29:08.880> out<00:29:09.120> as<00:29:09.240> its<00:29:09.400> own<00:29:09.520> tab.<00:29:10.160> An" + }, + { + "start": 1750.23, + "duration": 0.0, + "text": "can pull it out as its own tab. An" + }, + { + "start": 1750.24, + "duration": 0.0, + "text": "can pull it out as its own tab. An alternative<00:29:10.800> way<00:29:10.960> of<00:29:11.080> creating<00:29:11.400> this<00:29:11.520> tab" + }, + { + "start": 1751.75, + "duration": 0.0, + "text": "alternative way of creating this tab" + }, + { + "start": 1751.76, + "duration": 0.0, + "text": "alternative way of creating this tab would<00:29:11.840> have<00:29:11.960> been<00:29:12.640> just<00:29:12.840> create<00:29:13.040> a<00:29:13.080> bitmap<00:29:13.480> tab" + }, + { + "start": 1753.87, + "duration": 0.0, + "text": "would have been just create a bitmap tab" + }, + { + "start": 1753.88, + "duration": 0.0, + "text": "would have been just create a bitmap tab and<00:29:14.040> put<00:29:14.160> in<00:29:14.280> here<00:29:15.040> pixels<00:29:15.720> 18<00:29:16.120> by<00:29:16.320> 18.<00:29:16.960> These" + }, + { + "start": 1757.11, + "duration": 0.0, + "text": "and put in here pixels 18 by 18. These" + }, + { + "start": 1757.12, + "duration": 0.0, + "text": "and put in here pixels 18 by 18. These are<00:29:17.240> two<00:29:17.880> things<00:29:18.360> that<00:29:18.520> mean<00:29:18.680> exactly<00:29:19.120> the" + }, + { + "start": 1759.19, + "duration": 0.0, + "text": "are two things that mean exactly the" + }, + { + "start": 1759.2, + "duration": 0.0, + "text": "are two things that mean exactly the same<00:29:19.440> thing." + }, + { + "start": 1760.47, + "duration": 0.0, + "text": "same thing." + }, + { + "start": 1760.48, + "duration": 0.0, + "text": "same thing. So," + }, + { + "start": 1761.47, + "duration": 0.0, + "text": "So," + }, + { + "start": 1761.48, + "duration": 0.0, + "text": "So, um" + }, + { + "start": 1762.23, + "duration": 0.0, + "text": "um" + }, + { + "start": 1762.24, + "duration": 0.0, + "text": "um you<00:29:22.280> can<00:29:22.400> see<00:29:22.520> it's<00:29:22.640> just<00:29:22.800> like<00:29:23.000> initialized" + }, + { + "start": 1763.43, + "duration": 0.0, + "text": "you can see it's just like initialized" + }, + { + "start": 1763.44, + "duration": 0.0, + "text": "you can see it's just like initialized as<00:29:23.560> basically<00:29:23.920> just<00:29:24.080> garbage<00:29:24.400> right<00:29:24.560> now,<00:29:24.880> but" + }, + { + "start": 1764.99, + "duration": 0.0, + "text": "as basically just garbage right now, but" + }, + { + "start": 1765.0, + "duration": 0.0, + "text": "as basically just garbage right now, but as<00:29:25.200> I<00:29:25.280> step,<00:29:25.920> you<00:29:26.040> can<00:29:26.200> see<00:29:26.440> these<00:29:26.680> things" + }, + { + "start": 1767.31, + "duration": 0.0, + "text": "as I step, you can see these things" + }, + { + "start": 1767.32, + "duration": 0.0, + "text": "as I step, you can see these things start<00:29:27.600> to<00:29:28.120> start<00:29:28.320> to<00:29:28.800> see<00:29:28.920> these<00:29:29.040> pixels<00:29:29.320> start" + }, + { + "start": 1769.51, + "duration": 0.0, + "text": "start to start to see these pixels start" + }, + { + "start": 1769.52, + "duration": 0.0, + "text": "start to start to see these pixels start to<00:29:29.600> fill<00:29:29.840> out.<00:29:30.520> Um" + }, + { + "start": 1772.11, + "duration": 0.0, + "text": "to fill out. Um" + }, + { + "start": 1772.12, + "duration": 0.0, + "text": "to fill out. Um and<00:29:33.000> here's<00:29:33.320> a<00:29:33.360> loop<00:29:33.720> which<00:29:33.920> does<00:29:34.120> something" + }, + { + "start": 1774.35, + "duration": 0.0, + "text": "and here's a loop which does something" + }, + { + "start": 1774.36, + "duration": 0.0, + "text": "and here's a loop which does something to<00:29:34.440> all<00:29:34.520> the<00:29:34.600> pixels,<00:29:35.000> so<00:29:35.120> I<00:29:35.160> can<00:29:35.280> set<00:29:35.440> a" + }, + { + "start": 1775.47, + "duration": 0.0, + "text": "to all the pixels, so I can set a" + }, + { + "start": 1775.48, + "duration": 0.0, + "text": "to all the pixels, so I can set a breakpoint<00:29:35.880> here.<00:29:36.120> I'll<00:29:36.200> hit<00:29:36.320> F5,<00:29:36.840> run<00:29:37.000> to" + }, + { + "start": 1777.07, + "duration": 0.0, + "text": "breakpoint here. I'll hit F5, run to" + }, + { + "start": 1777.08, + "duration": 0.0, + "text": "breakpoint here. I'll hit F5, run to that<00:29:37.240> breakpoint.<00:29:37.960> It<00:29:38.160> like<00:29:38.440> shifted<00:29:38.840> all<00:29:38.960> the" + }, + { + "start": 1779.03, + "duration": 0.0, + "text": "that breakpoint. It like shifted all the" + }, + { + "start": 1779.04, + "duration": 0.0, + "text": "that breakpoint. It like shifted all the pixels<00:29:39.400> over.<00:29:40.360> Um" + }, + { + "start": 1781.15, + "duration": 0.0, + "text": "pixels over. Um" + }, + { + "start": 1781.16, + "duration": 0.0, + "text": "pixels over. Um uh<00:29:41.440> shifted<00:29:41.800> the<00:29:41.880> components<00:29:42.360> of<00:29:42.440> the<00:29:42.520> color" + }, + { + "start": 1782.95, + "duration": 0.0, + "text": "uh shifted the components of the color" + }, + { + "start": 1782.96, + "duration": 0.0, + "text": "uh shifted the components of the color of<00:29:43.160> of<00:29:43.240> the<00:29:43.320> pixel<00:29:43.600> colors<00:29:43.880> over.<00:29:44.640> Does<00:29:44.920> same" + }, + { + "start": 1785.11, + "duration": 0.0, + "text": "of of the pixel colors over. Does same" + }, + { + "start": 1785.12, + "duration": 0.0, + "text": "of of the pixel colors over. Does same thing<00:29:45.320> here<00:29:45.800> and<00:29:45.920> then<00:29:46.080> finally<00:29:46.440> does<00:29:46.640> it<00:29:46.720> once" + }, + { + "start": 1786.87, + "duration": 0.0, + "text": "thing here and then finally does it once" + }, + { + "start": 1786.88, + "duration": 0.0, + "text": "thing here and then finally does it once again<00:29:47.200> to<00:29:47.320> return<00:29:47.600> it<00:29:47.680> back<00:29:47.880> to<00:29:47.960> its<00:29:48.080> original" + }, + { + "start": 1788.39, + "duration": 0.0, + "text": "again to return it back to its original" + }, + { + "start": 1788.4, + "duration": 0.0, + "text": "again to return it back to its original values." + }, + { + "start": 1789.47, + "duration": 0.0, + "text": "values." + }, + { + "start": 1789.48, + "duration": 0.0, + "text": "values. Um" + }, + { + "start": 1790.83, + "duration": 0.0, + "text": "Um" + }, + { + "start": 1790.84, + "duration": 0.0, + "text": "Um So,<00:29:50.960> yeah.<00:29:51.520> Finally,<00:29:52.600> um" + }, + { + "start": 1794.055, + "duration": 0.0, + "text": "So, yeah. Finally, um" + }, + { + "start": 1794.065, + "duration": 0.0, + "text": "So, yeah. Finally, um >> [laughter]" + }, + { + "start": 1794.91, + "duration": 0.0, + "text": ">> [laughter]" + }, + { + "start": 1794.92, + "duration": 0.0, + "text": ">> [laughter] >> there's<00:29:55.040> this<00:29:55.240> one<00:29:55.560> which<00:29:55.800> is<00:29:56.000> a<00:29:56.080> bunch<00:29:56.320> you" + }, + { + "start": 1796.43, + "duration": 0.0, + "text": ">> there's this one which is a bunch you" + }, + { + "start": 1796.44, + "duration": 0.0, + "text": ">> there's this one which is a bunch you can<00:29:56.560> tell<00:29:57.040> I<00:29:57.080> I" + }, + { + "start": 1797.75, + "duration": 0.0, + "text": "can tell I I" + }, + { + "start": 1797.76, + "duration": 0.0, + "text": "can tell I I I<00:29:57.880> say<00:29:58.080> 3D<00:29:58.440> geometry.<00:29:59.080> I've<00:29:59.200> got<00:29:59.320> a<00:29:59.360> bunch<00:29:59.520> of" + }, + { + "start": 1799.55, + "duration": 0.0, + "text": "I say 3D geometry. I've got a bunch of" + }, + { + "start": 1799.56, + "duration": 0.0, + "text": "I say 3D geometry. I've got a bunch of vertex<00:29:59.920> data." + }, + { + "start": 1800.95, + "duration": 0.0, + "text": "vertex data." + }, + { + "start": 1800.96, + "duration": 0.0, + "text": "vertex data. Um<00:30:01.000> I've<00:30:01.120> got<00:30:01.680> some<00:30:01.880> index<00:30:02.200> data<00:30:03.080> and<00:30:03.960> uh" + }, + { + "start": 1804.67, + "duration": 0.0, + "text": "Um I've got some index data and uh" + }, + { + "start": 1804.68, + "duration": 0.0, + "text": "Um I've got some index data and uh if<00:30:04.800> I<00:30:04.880> So,<00:30:05.040> if<00:30:05.160> I<00:30:05.280> want<00:30:05.520> to<00:30:05.640> run<00:30:05.920> through<00:30:06.520> the" + }, + { + "start": 1807.55, + "duration": 0.0, + "text": "if I So, if I want to run through the" + }, + { + "start": 1807.56, + "duration": 0.0, + "text": "if I So, if I want to run through the the<00:30:07.680> initialization<00:30:08.360> of<00:30:08.440> those<00:30:08.560> big<00:30:08.760> tables" + }, + { + "start": 1809.43, + "duration": 0.0, + "text": "the initialization of those big tables" + }, + { + "start": 1809.44, + "duration": 0.0, + "text": "the initialization of those big tables and<00:30:09.720> this<00:30:09.840> is<00:30:09.920> a<00:30:09.960> pretty<00:30:10.160> complicated" + }, + { + "start": 1810.59, + "duration": 0.0, + "text": "and this is a pretty complicated" + }, + { + "start": 1810.6, + "duration": 0.0, + "text": "and this is a pretty complicated expression,<00:30:11.040> so<00:30:11.160> we've<00:30:11.280> got<00:30:11.840> this<00:30:12.040> geo<00:30:12.400> 3D" + }, + { + "start": 1813.07, + "duration": 0.0, + "text": "expression, so we've got this geo 3D" + }, + { + "start": 1813.08, + "duration": 0.0, + "text": "expression, so we've got this geo 3D view<00:30:13.640> which<00:30:13.760> is<00:30:13.840> applied<00:30:14.160> to<00:30:14.240> the<00:30:14.360> index" + }, + { + "start": 1814.63, + "duration": 0.0, + "text": "view which is applied to the index" + }, + { + "start": 1814.64, + "duration": 0.0, + "text": "view which is applied to the index buffer<00:30:15.160> and<00:30:15.280> then<00:30:15.400> you<00:30:15.440> have<00:30:15.560> a<00:30:15.600> vertex" + }, + { + "start": 1815.95, + "duration": 0.0, + "text": "buffer and then you have a vertex" + }, + { + "start": 1815.96, + "duration": 0.0, + "text": "buffer and then you have a vertex buffer." + }, + { + "start": 1817.15, + "duration": 0.0, + "text": "buffer." + }, + { + "start": 1817.16, + "duration": 0.0, + "text": "buffer. But<00:30:17.240> anyways," + }, + { + "start": 1818.55, + "duration": 0.0, + "text": "But anyways," + }, + { + "start": 1818.56, + "duration": 0.0, + "text": "But anyways, uh<00:30:18.640> then<00:30:18.880> you<00:30:19.000> get<00:30:19.200> this<00:30:19.560> and<00:30:19.680> that's<00:30:19.880> the" + }, + { + "start": 1819.95, + "duration": 0.0, + "text": "uh then you get this and that's the" + }, + { + "start": 1819.96, + "duration": 0.0, + "text": "uh then you get this and that's the actual" + }, + { + "start": 1821.11, + "duration": 0.0, + "text": "actual" + }, + { + "start": 1821.12, + "duration": 0.0, + "text": "actual um<00:30:21.680> that's<00:30:21.880> the<00:30:21.960> actual<00:30:22.640> like<00:30:22.840> geometry<00:30:23.280> data." + }, + { + "start": 1823.75, + "duration": 0.0, + "text": "um that's the actual like geometry data." + }, + { + "start": 1823.76, + "duration": 0.0, + "text": "um that's the actual like geometry data. So," + }, + { + "start": 1825.11, + "duration": 0.0, + "text": "So," + }, + { + "start": 1825.12, + "duration": 0.0, + "text": "So, um" + }, + { + "start": 1826.63, + "duration": 0.0, + "text": "um" + }, + { + "start": 1826.64, + "duration": 0.0, + "text": "um So,<00:30:26.720> yeah,<00:30:26.840> those<00:30:27.040> are<00:30:27.120> the<00:30:27.200> fancier" + }, + { + "start": 1827.59, + "duration": 0.0, + "text": "So, yeah, those are the fancier" + }, + { + "start": 1827.6, + "duration": 0.0, + "text": "So, yeah, those are the fancier visualizers.<00:30:28.440> Um<00:30:28.840> the<00:30:28.960> geometry<00:30:29.400> one<00:30:29.520> is" + }, + { + "start": 1829.63, + "duration": 0.0, + "text": "visualizers. Um the geometry one is" + }, + { + "start": 1829.64, + "duration": 0.0, + "text": "visualizers. Um the geometry one is still<00:30:30.120> like<00:30:30.360> all<00:30:30.520> of<00:30:30.600> these<00:30:30.760> are<00:30:30.880> pretty<00:30:31.080> much" + }, + { + "start": 1831.27, + "duration": 0.0, + "text": "still like all of these are pretty much" + }, + { + "start": 1831.28, + "duration": 0.0, + "text": "still like all of these are pretty much heavily<00:30:31.560> in<00:30:31.680> progress.<00:30:32.360> The<00:30:32.440> ones<00:30:32.640> that<00:30:32.800> are" + }, + { + "start": 1833.47, + "duration": 0.0, + "text": "heavily in progress. The ones that are" + }, + { + "start": 1833.48, + "duration": 0.0, + "text": "heavily in progress. The ones that are not<00:30:33.840> as<00:30:33.960> heavily<00:30:34.200> in<00:30:34.320> progress<00:30:34.680> are<00:30:34.760> the<00:30:34.840> ones" + }, + { + "start": 1835.03, + "duration": 0.0, + "text": "not as heavily in progress are the ones" + }, + { + "start": 1835.04, + "duration": 0.0, + "text": "not as heavily in progress are the ones that<00:30:35.160> are<00:30:35.280> like<00:30:35.480> super<00:30:35.800> super<00:30:36.080> common.<00:30:36.440> Like" + }, + { + "start": 1836.59, + "duration": 0.0, + "text": "that are like super super common. Like" + }, + { + "start": 1836.6, + "duration": 0.0, + "text": "that are like super super common. Like obviously<00:30:36.880> the<00:30:36.960> watch<00:30:37.160> window,<00:30:37.960> I<00:30:38.040> put<00:30:38.160> a<00:30:38.200> lot" + }, + { + "start": 1838.35, + "duration": 0.0, + "text": "obviously the watch window, I put a lot" + }, + { + "start": 1838.36, + "duration": 0.0, + "text": "obviously the watch window, I put a lot of<00:30:38.440> work<00:30:38.560> into<00:30:38.720> the<00:30:38.800> memory<00:30:39.120> view<00:30:39.360> cuz<00:30:39.480> these" + }, + { + "start": 1839.63, + "duration": 0.0, + "text": "of work into the memory view cuz these" + }, + { + "start": 1839.64, + "duration": 0.0, + "text": "of work into the memory view cuz these are<00:30:39.720> really<00:30:39.920> common<00:30:40.240> debugging<00:30:40.640> features" + }, + { + "start": 1840.95, + "duration": 0.0, + "text": "are really common debugging features" + }, + { + "start": 1840.96, + "duration": 0.0, + "text": "are really common debugging features that<00:30:41.080> people<00:30:41.280> expect,<00:30:41.760> but<00:30:41.960> obviously<00:30:42.360> long" + }, + { + "start": 1842.59, + "duration": 0.0, + "text": "that people expect, but obviously long" + }, + { + "start": 1842.6, + "duration": 0.0, + "text": "that people expect, but obviously long term<00:30:42.920> the<00:30:43.160> the<00:30:43.280> idea<00:30:43.560> is<00:30:43.720> like,<00:30:43.920> \"Hey,<00:30:44.080> this" + }, + { + "start": 1844.23, + "duration": 0.0, + "text": "term the the idea is like, \"Hey, this" + }, + { + "start": 1844.24, + "duration": 0.0, + "text": "term the the idea is like, \"Hey, this bitmap<00:30:44.480> visualizer<00:30:44.880> will<00:30:45.000> just<00:30:45.160> end<00:30:45.320> up<00:30:45.400> being" + }, + { + "start": 1846.19, + "duration": 0.0, + "text": "bitmap visualizer will just end up being" + }, + { + "start": 1846.2, + "duration": 0.0, + "text": "bitmap visualizer will just end up being like<00:30:46.640> having<00:30:46.920> all<00:30:47.000> the<00:30:47.080> things<00:30:47.320> that<00:30:47.440> you" + }, + { + "start": 1847.51, + "duration": 0.0, + "text": "like having all the things that you" + }, + { + "start": 1847.52, + "duration": 0.0, + "text": "like having all the things that you really<00:30:47.720> want<00:30:48.240> um<00:30:48.680> for<00:30:49.040> for<00:30:49.600> dealing<00:30:49.840> with" + }, + { + "start": 1849.95, + "duration": 0.0, + "text": "really want um for for dealing with" + }, + { + "start": 1849.96, + "duration": 0.0, + "text": "really want um for for dealing with bitmap<00:30:50.280> data.\"" + }, + { + "start": 1851.27, + "duration": 0.0, + "text": "bitmap data.\"" + }, + { + "start": 1851.28, + "duration": 0.0, + "text": "bitmap data.\" Um<00:30:51.400> and<00:30:51.520> then<00:30:51.640> in<00:30:51.680> the<00:30:51.760> future<00:30:52.000> we'll<00:30:52.120> have" + }, + { + "start": 1852.27, + "duration": 0.0, + "text": "Um and then in the future we'll have" + }, + { + "start": 1852.28, + "duration": 0.0, + "text": "Um and then in the future we'll have tons<00:30:52.520> of<00:30:52.600> other<00:30:52.760> kinds<00:30:53.040> of<00:30:53.120> visualizers<00:30:53.720> like," + }, + { + "start": 1854.11, + "duration": 0.0, + "text": "tons of other kinds of visualizers like," + }, + { + "start": 1854.12, + "duration": 0.0, + "text": "tons of other kinds of visualizers like, you<00:30:54.200> know,<00:30:54.320> for<00:30:54.440> sound<00:30:54.800> data<00:30:55.240> and<00:30:55.640> the<00:30:55.840> 3D" + }, + { + "start": 1856.11, + "duration": 0.0, + "text": "you know, for sound data and the 3D" + }, + { + "start": 1856.12, + "duration": 0.0, + "text": "you know, for sound data and the 3D geometry<00:30:56.480> one<00:30:56.640> will<00:30:56.800> become<00:30:57.040> a<00:30:57.080> lot<00:30:57.240> more" + }, + { + "start": 1857.35, + "duration": 0.0, + "text": "geometry one will become a lot more" + }, + { + "start": 1857.36, + "duration": 0.0, + "text": "geometry one will become a lot more sophisticated<00:30:58.120> and<00:30:58.480> and<00:30:58.760> 2D<00:30:59.040> plots<00:30:59.480> and<00:30:59.560> like" + }, + { + "start": 1859.71, + "duration": 0.0, + "text": "sophisticated and and 2D plots and like" + }, + { + "start": 1859.72, + "duration": 0.0, + "text": "sophisticated and and 2D plots and like all<00:30:59.800> these<00:30:59.960> kinds<00:31:00.160> of<00:31:00.240> things<00:31:00.440> are<00:31:00.520> on<00:31:00.640> the" + }, + { + "start": 1860.71, + "duration": 0.0, + "text": "all these kinds of things are on the" + }, + { + "start": 1860.72, + "duration": 0.0, + "text": "all these kinds of things are on the table." + }, + { + "start": 1861.75, + "duration": 0.0, + "text": "table." + }, + { + "start": 1861.76, + "duration": 0.0, + "text": "table. Um<00:31:02.280> that's<00:31:02.440> what<00:31:02.520> the<00:31:02.600> whole<00:31:02.800> architecture<00:31:03.320> is" + }, + { + "start": 1863.43, + "duration": 0.0, + "text": "Um that's what the whole architecture is" + }, + { + "start": 1863.44, + "duration": 0.0, + "text": "Um that's what the whole architecture is for.<00:31:04.200> Um" + }, + { + "start": 1864.47, + "duration": 0.0, + "text": "for. Um" + }, + { + "start": 1864.48, + "duration": 0.0, + "text": "for. Um >> So,<00:31:04.640> it's<00:31:04.840> like<00:31:05.520> Rad<00:31:05.760> Debugger<00:31:06.240> is<00:31:06.400> like<00:31:06.800> like" + }, + { + "start": 1867.03, + "duration": 0.0, + "text": ">> So, it's like Rad Debugger is like like" + }, + { + "start": 1867.04, + "duration": 0.0, + "text": ">> So, it's like Rad Debugger is like like a<00:31:07.080> mini<00:31:07.440> game<00:31:07.840> engine." + }, + { + "start": 1870.036, + "duration": 0.0, + "text": "a mini game engine." + }, + { + "start": 1870.046, + "duration": 0.0, + "text": "a mini game engine. >> [laughter]" + }, + { + "start": 1870.79, + "duration": 0.0, + "text": ">> [laughter]" + }, + { + "start": 1870.8, + "duration": 0.0, + "text": ">> [laughter] >> You<00:31:10.920> could<00:31:11.320> You<00:31:11.440> could<00:31:11.760> think<00:31:11.960> of<00:31:12.040> it<00:31:12.120> that" + }, + { + "start": 1872.31, + "duration": 0.0, + "text": ">> You could You could think of it that" + }, + { + "start": 1872.32, + "duration": 0.0, + "text": ">> You could You could think of it that way,<00:31:12.560> maybe.<00:31:12.960> I<00:31:13.040> mean,<00:31:13.520> you<00:31:13.640> know,<00:31:13.800> I<00:31:13.840> I<00:31:14.560> I" + }, + { + "start": 1874.63, + "duration": 0.0, + "text": "way, maybe. I mean, you know, I I I" + }, + { + "start": 1874.64, + "duration": 0.0, + "text": "way, maybe. I mean, you know, I I I wouldn't<00:31:14.800> be<00:31:14.920> so<00:31:15.040> presumptuous<00:31:15.600> as<00:31:15.760> to<00:31:15.840> say" + }, + { + "start": 1876.03, + "duration": 0.0, + "text": "wouldn't be so presumptuous as to say" + }, + { + "start": 1876.04, + "duration": 0.0, + "text": "wouldn't be so presumptuous as to say that<00:31:16.280> unlike<00:31:16.640> the<00:31:16.920> people<00:31:17.200> at<00:31:17.320> Anthropic,<00:31:17.840> but" + }, + { + "start": 1878.75, + "duration": 0.0, + "text": "that unlike the people at Anthropic, but" + }, + { + "start": 1878.76, + "duration": 0.0, + "text": "that unlike the people at Anthropic, but um<00:31:19.680> about<00:31:20.040> Claude.<00:31:20.600> Uh<00:31:20.840> but<00:31:21.760> it<00:31:21.960> is<00:31:22.120> a<00:31:22.160> lot<00:31:22.480> I" + }, + { + "start": 1882.55, + "duration": 0.0, + "text": "um about Claude. Uh but it is a lot I" + }, + { + "start": 1882.56, + "duration": 0.0, + "text": "um about Claude. Uh but it is a lot I would<00:31:22.720> say<00:31:22.880> it's<00:31:23.000> a<00:31:23.040> lot<00:31:23.280> closer<00:31:23.640> to<00:31:23.800> a<00:31:23.880> little" + }, + { + "start": 1884.07, + "duration": 0.0, + "text": "would say it's a lot closer to a little" + }, + { + "start": 1884.08, + "duration": 0.0, + "text": "would say it's a lot closer to a little game<00:31:24.320> engine<00:31:24.640> than<00:31:25.120> than<00:31:25.440> maybe<00:31:25.680> Claude<00:31:25.960> Code" + }, + { + "start": 1886.19, + "duration": 0.0, + "text": "game engine than than maybe Claude Code" + }, + { + "start": 1886.2, + "duration": 0.0, + "text": "game engine than than maybe Claude Code is,<00:31:26.360> but" + }, + { + "start": 1888.11, + "duration": 0.0, + "text": "is, but" + }, + { + "start": 1888.12, + "duration": 0.0, + "text": "is, but but<00:31:28.240> anyways," + }, + { + "start": 1889.27, + "duration": 0.0, + "text": "but anyways," + }, + { + "start": 1889.28, + "duration": 0.0, + "text": "but anyways, um" + }, + { + "start": 1889.99, + "duration": 0.0, + "text": "um" + }, + { + "start": 1890.0, + "duration": 0.0, + "text": "um so<00:31:30.520> uh<00:31:30.640> I<00:31:30.680> guess<00:31:30.920> one<00:31:31.120> other<00:31:31.320> thing<00:31:31.520> that<00:31:31.640> I" + }, + { + "start": 1891.67, + "duration": 0.0, + "text": "so uh I guess one other thing that I" + }, + { + "start": 1891.68, + "duration": 0.0, + "text": "so uh I guess one other thing that I should<00:31:32.040> point<00:31:32.320> out<00:31:32.600> is<00:31:33.080> um<00:31:33.280> some<00:31:33.440> of<00:31:33.520> these" + }, + { + "start": 1893.67, + "duration": 0.0, + "text": "should point out is um some of these" + }, + { + "start": 1893.68, + "duration": 0.0, + "text": "should point out is um some of these things<00:31:33.880> which<00:31:34.000> I'm<00:31:34.120> sure<00:31:34.400> people<00:31:34.680> in<00:31:34.760> the<00:31:34.800> chat" + }, + { + "start": 1895.03, + "duration": 0.0, + "text": "things which I'm sure people in the chat" + }, + { + "start": 1895.04, + "duration": 0.0, + "text": "things which I'm sure people in the chat have<00:31:35.160> probably<00:31:35.560> already<00:31:35.720> spotted,<00:31:36.160> which<00:31:36.280> is" + }, + { + "start": 1896.43, + "duration": 0.0, + "text": "have probably already spotted, which is" + }, + { + "start": 1896.44, + "duration": 0.0, + "text": "have probably already spotted, which is like<00:31:36.640> these<00:31:37.160> uh" + }, + { + "start": 1898.75, + "duration": 0.0, + "text": "like these uh" + }, + { + "start": 1898.76, + "duration": 0.0, + "text": "like these uh these<00:31:39.000> like<00:31:39.280> in-source<00:31:39.960> annotations<00:31:40.800> of<00:31:41.080> Rad" + }, + { + "start": 1901.31, + "duration": 0.0, + "text": "these like in-source annotations of Rad" + }, + { + "start": 1901.32, + "duration": 0.0, + "text": "these like in-source annotations of Rad Debugger<00:31:41.840> info.<00:31:42.520> So,<00:31:42.640> you<00:31:42.720> can<00:31:42.840> see<00:31:43.040> right" + }, + { + "start": 1903.31, + "duration": 0.0, + "text": "Debugger info. So, you can see right" + }, + { + "start": 1903.32, + "duration": 0.0, + "text": "Debugger info. So, you can see right here<00:31:43.520> I'm<00:31:43.640> saying<00:31:43.880> Rad<00:31:44.080> DBG<00:31:44.440> entry<00:31:44.760> point<00:31:45.400> mule" + }, + { + "start": 1905.59, + "duration": 0.0, + "text": "here I'm saying Rad DBG entry point mule" + }, + { + "start": 1905.6, + "duration": 0.0, + "text": "here I'm saying Rad DBG entry point mule main.<00:31:46.440> Um<00:31:46.960> and<00:31:47.040> you<00:31:47.120> might<00:31:47.240> be<00:31:47.360> wondering" + }, + { + "start": 1907.67, + "duration": 0.0, + "text": "main. Um and you might be wondering" + }, + { + "start": 1907.68, + "duration": 0.0, + "text": "main. Um and you might be wondering like," + }, + { + "start": 1908.59, + "duration": 0.0, + "text": "like," + }, + { + "start": 1908.6, + "duration": 0.0, + "text": "like, \"What<00:31:48.800> is<00:31:48.920> that<00:31:49.040> about?\"<00:31:49.760> Well,<00:31:49.920> you<00:31:49.960> can<00:31:50.080> see" + }, + { + "start": 1910.19, + "duration": 0.0, + "text": "\"What is that about?\" Well, you can see" + }, + { + "start": 1910.2, + "duration": 0.0, + "text": "\"What is that about?\" Well, you can see like<00:31:50.440> when<00:31:50.560> I'm<00:31:50.680> not<00:31:50.920> debugging<00:31:51.280> this" + }, + { + "start": 1911.39, + "duration": 0.0, + "text": "like when I'm not debugging this" + }, + { + "start": 1911.4, + "duration": 0.0, + "text": "like when I'm not debugging this program," + }, + { + "start": 1913.03, + "duration": 0.0, + "text": "program," + }, + { + "start": 1913.04, + "duration": 0.0, + "text": "program, so<00:31:53.240> you<00:31:53.360> can<00:31:53.480> see<00:31:53.600> I'm<00:31:53.760> I'm<00:31:53.880> debugging<00:31:54.320> this" + }, + { + "start": 1914.59, + "duration": 0.0, + "text": "so you can see I'm I'm debugging this" + }, + { + "start": 1914.6, + "duration": 0.0, + "text": "so you can see I'm I'm debugging this mule<00:31:54.840> main.exe," + }, + { + "start": 1916.59, + "duration": 0.0, + "text": "mule main.exe," + }, + { + "start": 1916.6, + "duration": 0.0, + "text": "mule main.exe, and<00:31:57.160> um<00:31:57.680> if<00:31:57.800> I<00:31:57.880> step<00:31:58.160> into<00:31:58.400> it,<00:31:59.080> you'll<00:31:59.240> see" + }, + { + "start": 1919.43, + "duration": 0.0, + "text": "and um if I step into it, you'll see" + }, + { + "start": 1919.44, + "duration": 0.0, + "text": "and um if I step into it, you'll see that<00:31:59.680> my<00:31:59.880> thread<00:32:00.320> first<00:32:00.720> stops.<00:32:01.200> It<00:32:01.320> says," + }, + { + "start": 1921.47, + "duration": 0.0, + "text": "that my thread first stops. It says," + }, + { + "start": 1921.48, + "duration": 0.0, + "text": "that my thread first stops. It says, \"Stopped<00:32:01.840> at<00:32:01.920> entry<00:32:02.160> point.\"<00:32:02.440> And<00:32:02.520> you<00:32:02.560> might" + }, + { + "start": 1922.71, + "duration": 0.0, + "text": "\"Stopped at entry point.\" And you might" + }, + { + "start": 1922.72, + "duration": 0.0, + "text": "\"Stopped at entry point.\" And you might see,<00:32:02.920> \"Hey,<00:32:03.120> mule<00:32:03.360> main.\"<00:32:03.600> It's<00:32:03.720> like<00:32:03.880> weird" + }, + { + "start": 1924.39, + "duration": 0.0, + "text": "see, \"Hey, mule main.\" It's like weird" + }, + { + "start": 1924.4, + "duration": 0.0, + "text": "see, \"Hey, mule main.\" It's like weird cuz<00:32:04.560> when<00:32:04.680> I<00:32:04.760> learned<00:32:05.000> how<00:32:05.080> to<00:32:05.160> write<00:32:05.400> C,<00:32:05.720> it" + }, + { + "start": 1925.83, + "duration": 0.0, + "text": "cuz when I learned how to write C, it" + }, + { + "start": 1925.84, + "duration": 0.0, + "text": "cuz when I learned how to write C, it had<00:32:06.000> to<00:32:06.040> be<00:32:06.240> int<00:32:06.520> main" + }, + { + "start": 1928.07, + "duration": 0.0, + "text": "had to be int main" + }, + { + "start": 1928.08, + "duration": 0.0, + "text": "had to be int main uh<00:32:08.480> or,<00:32:08.880> you<00:32:08.960> know,<00:32:09.080> if<00:32:09.160> you're<00:32:09.240> on<00:32:09.360> Windows," + }, + { + "start": 1929.75, + "duration": 0.0, + "text": "uh or, you know, if you're on Windows," + }, + { + "start": 1929.76, + "duration": 0.0, + "text": "uh or, you know, if you're on Windows, it's<00:32:09.880> like<00:32:10.240> it's<00:32:10.440> like<00:32:10.640> WinMain,<00:32:11.240> it's<00:32:11.360> like" + }, + { + "start": 1931.47, + "duration": 0.0, + "text": "it's like it's like WinMain, it's like" + }, + { + "start": 1931.48, + "duration": 0.0, + "text": "it's like it's like WinMain, it's like the<00:32:11.560> WinMain<00:32:11.880> function.<00:32:12.480> And<00:32:12.640> sure<00:32:12.800> enough," + }, + { + "start": 1933.07, + "duration": 0.0, + "text": "the WinMain function. And sure enough," + }, + { + "start": 1933.08, + "duration": 0.0, + "text": "the WinMain function. And sure enough, it's<00:32:13.200> like,<00:32:13.360> \"Hey,<00:32:13.600> if<00:32:13.800> I<00:32:13.960> look<00:32:14.160> at<00:32:14.200> my<00:32:14.320> call" + }, + { + "start": 1934.55, + "duration": 0.0, + "text": "it's like, \"Hey, if I look at my call" + }, + { + "start": 1934.56, + "duration": 0.0, + "text": "it's like, \"Hey, if I look at my call stack,<00:32:14.880> I<00:32:14.960> see<00:32:15.280> I<00:32:15.360> have<00:32:15.640> WinMain<00:32:16.000> right<00:32:16.160> here.\"" + }, + { + "start": 1936.79, + "duration": 0.0, + "text": "stack, I see I have WinMain right here.\"" + }, + { + "start": 1936.8, + "duration": 0.0, + "text": "stack, I see I have WinMain right here.\" And<00:32:16.920> that<00:32:17.040> is<00:32:17.160> a<00:32:17.240> function.<00:32:17.600> Hey,<00:32:17.760> that's<00:32:17.960> even" + }, + { + "start": 1938.15, + "duration": 0.0, + "text": "And that is a function. Hey, that's even" + }, + { + "start": 1938.16, + "duration": 0.0, + "text": "And that is a function. Hey, that's even in<00:32:18.240> the<00:32:18.280> same<00:32:18.480> source<00:32:18.760> file.<00:32:19.000> So,<00:32:19.160> shouldn't" + }, + { + "start": 1939.99, + "duration": 0.0, + "text": "in the same source file. So, shouldn't" + }, + { + "start": 1940.0, + "duration": 0.0, + "text": "in the same source file. So, shouldn't in<00:32:20.200> most<00:32:20.440> debuggers<00:32:20.880> if<00:32:21.000> you<00:32:21.120> ran<00:32:21.400> this,<00:32:21.680> you" + }, + { + "start": 1941.75, + "duration": 0.0, + "text": "in most debuggers if you ran this, you" + }, + { + "start": 1941.76, + "duration": 0.0, + "text": "in most debuggers if you ran this, you would<00:32:21.880> end<00:32:22.160> you<00:32:22.360> your<00:32:22.520> thread<00:32:22.760> would<00:32:22.880> end<00:32:23.040> up" + }, + { + "start": 1943.15, + "duration": 0.0, + "text": "would end you your thread would end up" + }, + { + "start": 1943.16, + "duration": 0.0, + "text": "would end you your thread would end up here,<00:32:23.600> right?" + }, + { + "start": 1945.35, + "duration": 0.0, + "text": "here, right?" + }, + { + "start": 1945.36, + "duration": 0.0, + "text": "here, right? And<00:32:25.520> so,<00:32:25.720> that<00:32:26.320> little<00:32:26.760> Rad<00:32:26.960> DBG<00:32:27.280> entry<00:32:27.560> point" + }, + { + "start": 1947.79, + "duration": 0.0, + "text": "And so, that little Rad DBG entry point" + }, + { + "start": 1947.8, + "duration": 0.0, + "text": "And so, that little Rad DBG entry point thing<00:32:28.080> is<00:32:28.240> actually<00:32:28.560> sticking<00:32:29.000> something" + }, + { + "start": 1949.31, + "duration": 0.0, + "text": "thing is actually sticking something" + }, + { + "start": 1949.32, + "duration": 0.0, + "text": "thing is actually sticking something into<00:32:29.520> the<00:32:29.600> executable<00:32:30.480> that<00:32:30.640> the<00:32:30.720> debugger" + }, + { + "start": 1951.99, + "duration": 0.0, + "text": "into the executable that the debugger" + }, + { + "start": 1952.0, + "duration": 0.0, + "text": "into the executable that the debugger um<00:32:32.440> that<00:32:32.560> the<00:32:32.640> debugger<00:32:33.000> reads.<00:32:33.800> And<00:32:33.920> so,<00:32:34.040> the" + }, + { + "start": 1954.07, + "duration": 0.0, + "text": "um that the debugger reads. And so, the" + }, + { + "start": 1954.08, + "duration": 0.0, + "text": "um that the debugger reads. And so, the debugger<00:32:34.480> knows,<00:32:34.920> \"Hey,<00:32:35.640> for<00:32:35.800> this<00:32:36.000> program," + }, + { + "start": 1956.51, + "duration": 0.0, + "text": "debugger knows, \"Hey, for this program," + }, + { + "start": 1956.52, + "duration": 0.0, + "text": "debugger knows, \"Hey, for this program, the<00:32:36.640> entry<00:32:36.840> point<00:32:37.120> symbol<00:32:37.480> is<00:32:37.640> not<00:32:37.840> just" + }, + { + "start": 1958.03, + "duration": 0.0, + "text": "the entry point symbol is not just" + }, + { + "start": 1958.04, + "duration": 0.0, + "text": "the entry point symbol is not just WinMain,<00:32:38.800> it's<00:32:38.960> actually<00:32:39.280> mule<00:32:39.560> main.<00:32:40.160> So," + }, + { + "start": 1960.31, + "duration": 0.0, + "text": "WinMain, it's actually mule main. So," + }, + { + "start": 1960.32, + "duration": 0.0, + "text": "WinMain, it's actually mule main. So, this<00:32:40.560> it<00:32:40.680> sticks<00:32:40.960> this<00:32:41.120> thing<00:32:41.360> into<00:32:41.640> the" + }, + { + "start": 1961.75, + "duration": 0.0, + "text": "this it sticks this thing into the" + }, + { + "start": 1961.76, + "duration": 0.0, + "text": "this it sticks this thing into the actual<00:32:42.080> executable.<00:32:42.920> In<00:32:43.000> fact,<00:32:43.280> I<00:32:43.320> wonder<00:32:43.600> if" + }, + { + "start": 1963.75, + "duration": 0.0, + "text": "actual executable. In fact, I wonder if" + }, + { + "start": 1963.76, + "duration": 0.0, + "text": "actual executable. In fact, I wonder if I<00:32:43.800> can<00:32:43.920> even<00:32:44.120> show<00:32:45.040> like<00:32:45.200> let's<00:32:45.400> do" + }, + { + "start": 1966.87, + "duration": 0.0, + "text": "I can even show like let's do" + }, + { + "start": 1966.88, + "duration": 0.0, + "text": "I can even show like let's do radbg<00:32:47.400> markup<00:32:48.040> to<00:32:48.200> I<00:32:48.240> don't<00:32:48.400> have<00:32:48.680> it." + }, + { + "start": 1969.75, + "duration": 0.0, + "text": "radbg markup to I don't have it." + }, + { + "start": 1969.76, + "duration": 0.0, + "text": "radbg markup to I don't have it. Uh<00:32:49.960> markup.h,<00:32:50.680> yeah." + }, + { + "start": 1971.75, + "duration": 0.0, + "text": "Uh markup.h, yeah." + }, + { + "start": 1971.76, + "duration": 0.0, + "text": "Uh markup.h, yeah. If<00:32:51.880> we<00:32:52.080> look<00:32:52.440> at<00:32:52.600> like<00:32:52.840> what<00:32:53.000> this<00:32:53.160> thing<00:32:53.320> would" + }, + { + "start": 1973.43, + "duration": 0.0, + "text": "If we look at like what this thing would" + }, + { + "start": 1973.44, + "duration": 0.0, + "text": "If we look at like what this thing would actually<00:32:53.720> be<00:32:53.920> like<00:32:54.280> uh<00:32:54.800> entry<00:32:55.120> point," + }, + { + "start": 1976.75, + "duration": 0.0, + "text": "actually be like uh entry point," + }, + { + "start": 1976.76, + "duration": 0.0, + "text": "actually be like uh entry point, you<00:32:56.800> can<00:32:56.920> see<00:32:57.080> what<00:32:57.280> this<00:32:57.440> macro<00:32:57.800> actually" + }, + { + "start": 1978.07, + "duration": 0.0, + "text": "you can see what this macro actually" + }, + { + "start": 1978.08, + "duration": 0.0, + "text": "you can see what this macro actually does<00:32:58.520> is<00:32:58.840> it<00:32:59.000> says<00:32:59.240> radbg<00:33:00.160> exec<00:33:00.520> data,<00:33:00.800> which<00:33:00.960> I" + }, + { + "start": 1981.03, + "duration": 0.0, + "text": "does is it says radbg exec data, which I" + }, + { + "start": 1981.04, + "duration": 0.0, + "text": "does is it says radbg exec data, which I can<00:33:01.120> explain<00:33:01.400> what<00:33:01.480> that<00:33:01.720> is.<00:33:02.240> And<00:33:02.360> then<00:33:02.440> it's" + }, + { + "start": 1982.55, + "duration": 0.0, + "text": "can explain what that is. And then it's" + }, + { + "start": 1982.56, + "duration": 0.0, + "text": "can explain what that is. And then it's a<00:33:02.640> character<00:33:03.720> a<00:33:03.800> character<00:33:04.240> array,<00:33:04.520> so" + }, + { + "start": 1984.67, + "duration": 0.0, + "text": "a character a character array, so" + }, + { + "start": 1984.68, + "duration": 0.0, + "text": "a character a character array, so generates<00:33:05.360> uh<00:33:05.720> a<00:33:05.800> name<00:33:06.120> here<00:33:06.640> using<00:33:06.920> this" + }, + { + "start": 1987.03, + "duration": 0.0, + "text": "generates uh a name here using this" + }, + { + "start": 1987.04, + "duration": 0.0, + "text": "generates uh a name here using this thing,<00:33:07.240> but<00:33:07.360> it's<00:33:07.440> a<00:33:07.520> character<00:33:07.920> array,<00:33:08.800> has" + }, + { + "start": 1988.99, + "duration": 0.0, + "text": "thing, but it's a character array, has" + }, + { + "start": 1989.0, + "duration": 0.0, + "text": "thing, but it's a character array, has some<00:33:09.200> ID,<00:33:09.960> and<00:33:10.080> then<00:33:10.200> it<00:33:10.320> sticks<00:33:10.640> in<00:33:11.360> entry" + }, + { + "start": 1991.67, + "duration": 0.0, + "text": "some ID, and then it sticks in entry" + }, + { + "start": 1991.68, + "duration": 0.0, + "text": "some ID, and then it sticks in entry point<00:33:12.000> colon<00:33:12.400> and<00:33:12.480> then<00:33:12.640> whatever<00:33:12.880> the" + }, + { + "start": 1992.99, + "duration": 0.0, + "text": "point colon and then whatever the" + }, + { + "start": 1993.0, + "duration": 0.0, + "text": "point colon and then whatever the arguments<00:33:13.400> were<00:33:13.840> as<00:33:14.040> a<00:33:14.080> string<00:33:14.360> literal." + }, + { + "start": 1995.71, + "duration": 0.0, + "text": "arguments were as a string literal." + }, + { + "start": 1995.72, + "duration": 0.0, + "text": "arguments were as a string literal. Uh<00:33:15.960> so,<00:33:16.680> that<00:33:16.920> actually<00:33:17.160> gets<00:33:17.320> baked<00:33:17.560> into" + }, + { + "start": 1998.03, + "duration": 0.0, + "text": "Uh so, that actually gets baked into" + }, + { + "start": 1998.04, + "duration": 0.0, + "text": "Uh so, that actually gets baked into this<00:33:18.320> radbg<00:33:18.840> exec<00:33:19.200> data<00:33:19.520> thing.<00:33:20.440> That" + }, + { + "start": 2000.59, + "duration": 0.0, + "text": "this radbg exec data thing. That" + }, + { + "start": 2000.6, + "duration": 0.0, + "text": "this radbg exec data thing. That actually<00:33:21.320> tells<00:33:22.160> this<00:33:22.640> uh<00:33:22.720> tells<00:33:22.920> the<00:33:23.000> C" + }, + { + "start": 2003.07, + "duration": 0.0, + "text": "actually tells this uh tells the C" + }, + { + "start": 2003.08, + "duration": 0.0, + "text": "actually tells this uh tells the C compiler<00:33:23.480> to<00:33:23.600> stick<00:33:23.800> this<00:33:23.960> into<00:33:24.200> a<00:33:24.240> custom" + }, + { + "start": 2004.59, + "duration": 0.0, + "text": "compiler to stick this into a custom" + }, + { + "start": 2004.6, + "duration": 0.0, + "text": "compiler to stick this into a custom expression." + }, + { + "start": 2006.03, + "duration": 0.0, + "text": "expression." + }, + { + "start": 2006.04, + "duration": 0.0, + "text": "expression. Uh<00:33:26.200> or<00:33:26.320> sorry,<00:33:26.560> not<00:33:26.760> not<00:33:26.880> expression,<00:33:27.400> a" + }, + { + "start": 2007.47, + "duration": 0.0, + "text": "Uh or sorry, not not expression, a" + }, + { + "start": 2007.48, + "duration": 0.0, + "text": "Uh or sorry, not not expression, a custom<00:33:27.800> section.<00:33:28.920> And<00:33:29.560> uh<00:33:29.760> we<00:33:29.880> can<00:33:30.000> see<00:33:30.480> that" + }, + { + "start": 2011.15, + "duration": 0.0, + "text": "custom section. And uh we can see that" + }, + { + "start": 2011.16, + "duration": 0.0, + "text": "custom section. And uh we can see that uh" + }, + { + "start": 2012.03, + "duration": 0.0, + "text": "uh" + }, + { + "start": 2012.04, + "duration": 0.0, + "text": "uh radbg<00:33:32.520> exec<00:33:32.920> data<00:33:33.560> is<00:33:33.720> right<00:33:33.880> here<00:33:34.040> specified" + }, + { + "start": 2014.55, + "duration": 0.0, + "text": "radbg exec data is right here specified" + }, + { + "start": 2014.56, + "duration": 0.0, + "text": "radbg exec data is right here specified as<00:33:35.000> we<00:33:35.080> have<00:33:35.840> uh<00:33:35.920> we<00:33:36.080> tell<00:33:36.400> basically<00:33:36.720> the" + }, + { + "start": 2016.79, + "duration": 0.0, + "text": "as we have uh we tell basically the" + }, + { + "start": 2016.8, + "duration": 0.0, + "text": "as we have uh we tell basically the compiler,<00:33:37.160> \"Hey,<00:33:37.280> I<00:33:37.320> need<00:33:37.480> a<00:33:37.520> section" + }, + { + "start": 2018.79, + "duration": 0.0, + "text": "compiler, \"Hey, I need a section" + }, + { + "start": 2018.8, + "duration": 0.0, + "text": "compiler, \"Hey, I need a section uh<00:33:39.000> .radbg<00:33:39.800> needs<00:33:40.000> to<00:33:40.080> be<00:33:40.200> readable<00:33:40.520> and" + }, + { + "start": 2020.59, + "duration": 0.0, + "text": "uh .radbg needs to be readable and" + }, + { + "start": 2020.6, + "duration": 0.0, + "text": "uh .radbg needs to be readable and writable.\"<00:33:41.440> And<00:33:41.560> then<00:33:42.120> radbg<00:33:42.560> exec<00:33:43.080> data<00:33:43.520> is" + }, + { + "start": 2023.67, + "duration": 0.0, + "text": "writable.\" And then radbg exec data is" + }, + { + "start": 2023.68, + "duration": 0.0, + "text": "writable.\" And then radbg exec data is just<00:33:43.840> a<00:33:43.880> declspec.<00:33:44.840> This<00:33:45.040> is<00:33:45.160> for<00:33:45.560> MSVC<00:33:45.960> and" + }, + { + "start": 2026.07, + "duration": 0.0, + "text": "just a declspec. This is for MSVC and" + }, + { + "start": 2026.08, + "duration": 0.0, + "text": "just a declspec. This is for MSVC and Clang<00:33:46.320> on<00:33:46.440> Windows,<00:33:46.840> but<00:33:46.960> you<00:33:47.040> can<00:33:47.120> do" + }, + { + "start": 2027.23, + "duration": 0.0, + "text": "Clang on Windows, but you can do" + }, + { + "start": 2027.24, + "duration": 0.0, + "text": "Clang on Windows, but you can do equivalent<00:33:47.640> things<00:33:47.880> on<00:33:48.200> on<00:33:48.480> the<00:33:48.560> other" + }, + { + "start": 2028.67, + "duration": 0.0, + "text": "equivalent things on on the other" + }, + { + "start": 2028.68, + "duration": 0.0, + "text": "equivalent things on on the other compilers.<00:33:49.640> Hey,<00:33:49.800> declspec,<00:33:50.360> make<00:33:50.520> sure<00:33:50.760> when" + }, + { + "start": 2030.87, + "duration": 0.0, + "text": "compilers. Hey, declspec, make sure when" + }, + { + "start": 2030.88, + "duration": 0.0, + "text": "compilers. Hey, declspec, make sure when you<00:33:51.000> allocate<00:33:51.360> this<00:33:51.480> global<00:33:51.720> variable<00:33:52.240> that" + }, + { + "start": 2032.39, + "duration": 0.0, + "text": "you allocate this global variable that" + }, + { + "start": 2032.4, + "duration": 0.0, + "text": "you allocate this global variable that you<00:33:52.480> put<00:33:52.640> it<00:33:52.760> inside<00:33:53.120> of<00:33:53.200> the<00:33:53.280> .radbg<00:33:54.000> section." + }, + { + "start": 2034.35, + "duration": 0.0, + "text": "you put it inside of the .radbg section." + }, + { + "start": 2034.36, + "duration": 0.0, + "text": "you put it inside of the .radbg section. That's<00:33:54.520> all<00:33:54.640> that<00:33:54.880> radbg<00:33:55.320> exec<00:33:55.680> data<00:33:55.960> is,<00:33:56.320> so" + }, + { + "start": 2036.47, + "duration": 0.0, + "text": "That's all that radbg exec data is, so" + }, + { + "start": 2036.48, + "duration": 0.0, + "text": "That's all that radbg exec data is, so it<00:33:56.600> sticks<00:33:56.880> that<00:33:57.120> info<00:33:57.560> into<00:33:57.800> the<00:33:57.880> executable." + }, + { + "start": 2038.87, + "duration": 0.0, + "text": "it sticks that info into the executable." + }, + { + "start": 2038.88, + "duration": 0.0, + "text": "it sticks that info into the executable. And<00:33:59.000> as<00:33:59.080> a<00:33:59.120> consequence," + }, + { + "start": 2040.67, + "duration": 0.0, + "text": "And as a consequence," + }, + { + "start": 2040.68, + "duration": 0.0, + "text": "And as a consequence, uh<00:34:00.840> the<00:34:00.920> debugger,<00:34:01.360> when<00:34:01.480> it<00:34:01.600> loads<00:34:01.800> your" + }, + { + "start": 2041.87, + "duration": 0.0, + "text": "uh the debugger, when it loads your" + }, + { + "start": 2041.88, + "duration": 0.0, + "text": "uh the debugger, when it loads your program,<00:34:02.240> can<00:34:02.400> know,<00:34:02.920> \"Hey,<00:34:03.200> the<00:34:03.280> entry<00:34:03.520> point" + }, + { + "start": 2043.71, + "duration": 0.0, + "text": "program, can know, \"Hey, the entry point" + }, + { + "start": 2043.72, + "duration": 0.0, + "text": "program, can know, \"Hey, the entry point is<00:34:03.800> actually<00:34:04.080> here.\"" + }, + { + "start": 2045.59, + "duration": 0.0, + "text": "is actually here.\"" + }, + { + "start": 2045.6, + "duration": 0.0, + "text": "is actually here.\" Um" + }, + { + "start": 2046.63, + "duration": 0.0, + "text": "Um" + }, + { + "start": 2046.64, + "duration": 0.0, + "text": "Um So,<00:34:06.960> there's<00:34:07.160> other<00:34:07.480> kinds<00:34:07.760> of<00:34:08.159> interop<00:34:08.639> that" + }, + { + "start": 2048.79, + "duration": 0.0, + "text": "So, there's other kinds of interop that" + }, + { + "start": 2048.8, + "duration": 0.0, + "text": "So, there's other kinds of interop that your<00:34:08.919> program<00:34:09.240> can<00:34:09.360> do<00:34:09.520> with<00:34:09.679> the<00:34:09.720> debugger." + }, + { + "start": 2050.03, + "duration": 0.0, + "text": "your program can do with the debugger." + }, + { + "start": 2050.04, + "duration": 0.0, + "text": "your program can do with the debugger. You<00:34:10.120> can<00:34:10.240> see<00:34:10.399> a<00:34:10.440> few<00:34:10.639> of<00:34:10.720> them<00:34:10.879> right<00:34:11.080> here.<00:34:11.960> Um" + }, + { + "start": 2052.11, + "duration": 0.0, + "text": "You can see a few of them right here. Um" + }, + { + "start": 2052.12, + "duration": 0.0, + "text": "You can see a few of them right here. Um so,<00:34:12.240> by<00:34:12.399> default,<00:34:12.840> your<00:34:12.960> threads<00:34:13.240> will<00:34:13.320> just" + }, + { + "start": 2053.47, + "duration": 0.0, + "text": "so, by default, your threads will just" + }, + { + "start": 2053.48, + "duration": 0.0, + "text": "so, by default, your threads will just be<00:34:13.560> colored<00:34:13.840> with<00:34:13.960> this<00:34:14.080> like<00:34:14.240> little<00:34:14.440> yellow" + }, + { + "start": 2054.75, + "duration": 0.0, + "text": "be colored with this like little yellow" + }, + { + "start": 2054.76, + "duration": 0.0, + "text": "be colored with this like little yellow color.<00:34:15.600> Um" + }, + { + "start": 2056.31, + "duration": 0.0, + "text": "color. Um" + }, + { + "start": 2056.32, + "duration": 0.0, + "text": "color. Um but<00:34:16.440> if<00:34:16.560> I<00:34:16.639> want<00:34:16.800> to<00:34:16.879> And<00:34:17.120> also,<00:34:17.480> it'll<00:34:17.679> just" + }, + { + "start": 2058.31, + "duration": 0.0, + "text": "but if I want to And also, it'll just" + }, + { + "start": 2058.32, + "duration": 0.0, + "text": "but if I want to And also, it'll just the<00:34:18.440> debugger<00:34:18.760> assumes<00:34:19.120> this<00:34:19.240> thing<00:34:19.399> is<00:34:19.520> the" + }, + { + "start": 2059.59, + "duration": 0.0, + "text": "the debugger assumes this thing is the" + }, + { + "start": 2059.6, + "duration": 0.0, + "text": "the debugger assumes this thing is the main<00:34:19.840> thread<00:34:20.159> cuz<00:34:20.320> it<00:34:20.480> I<00:34:20.560> mean,<00:34:20.720> it<00:34:20.800> is<00:34:20.919> the" + }, + { + "start": 2060.99, + "duration": 0.0, + "text": "main thread cuz it I mean, it is the" + }, + { + "start": 2061.0, + "duration": 0.0, + "text": "main thread cuz it I mean, it is the main<00:34:21.159> thread,<00:34:21.399> but<00:34:21.520> it'll<00:34:21.679> just<00:34:21.919> name<00:34:22.159> it<00:34:22.360> main" + }, + { + "start": 2062.59, + "duration": 0.0, + "text": "main thread, but it'll just name it main" + }, + { + "start": 2062.6, + "duration": 0.0, + "text": "main thread, but it'll just name it main thread.<00:34:23.320> But<00:34:23.399> if<00:34:23.480> you<00:34:23.560> wanted<00:34:23.760> to<00:34:23.840> have<00:34:23.919> a" + }, + { + "start": 2063.95, + "duration": 0.0, + "text": "thread. But if you wanted to have a" + }, + { + "start": 2063.96, + "duration": 0.0, + "text": "thread. But if you wanted to have a custom<00:34:24.280> name,<00:34:24.480> you<00:34:24.520> could<00:34:24.639> say,<00:34:24.800> \"Hey,<00:34:25.399> uh" + }, + { + "start": 2065.47, + "duration": 0.0, + "text": "custom name, you could say, \"Hey, uh" + }, + { + "start": 2065.48, + "duration": 0.0, + "text": "custom name, you could say, \"Hey, uh radbg<00:34:25.960> thread<00:34:26.240> name.\"" + }, + { + "start": 2067.31, + "duration": 0.0, + "text": "radbg thread name.\"" + }, + { + "start": 2067.32, + "duration": 0.0, + "text": "radbg thread name.\" Um<00:34:27.679> right<00:34:27.879> there,<00:34:28.080> and<00:34:28.320> and<00:34:28.560> that's<00:34:28.720> going<00:34:28.840> to" + }, + { + "start": 2068.909, + "duration": 0.0, + "text": "Um right there, and and that's going to" + }, + { + "start": 2068.919, + "duration": 0.0, + "text": "Um right there, and and that's going to be<00:34:29.000> mule<00:34:29.280> main<00:34:29.520> thread,<00:34:29.800> and<00:34:29.879> that<00:34:30.040> shows<00:34:30.280> up" + }, + { + "start": 2070.59, + "duration": 0.0, + "text": "be mule main thread, and that shows up" + }, + { + "start": 2070.6, + "duration": 0.0, + "text": "be mule main thread, and that shows up here.<00:34:30.960> And<00:34:31.080> then<00:34:31.159> if<00:34:31.280> I<00:34:31.360> want<00:34:31.560> to<00:34:31.679> color<00:34:32.000> this" + }, + { + "start": 2072.149, + "duration": 0.0, + "text": "here. And then if I want to color this" + }, + { + "start": 2072.159, + "duration": 0.0, + "text": "here. And then if I want to color this thread<00:34:32.399> a<00:34:32.440> specific<00:34:32.879> way,<00:34:33.120> I<00:34:33.200> can<00:34:33.480> I<00:34:33.560> can<00:34:33.720> do" + }, + { + "start": 2073.83, + "duration": 0.0, + "text": "thread a specific way, I can I can do" + }, + { + "start": 2073.84, + "duration": 0.0, + "text": "thread a specific way, I can I can do that<00:34:34.159> also<00:34:34.879> with<00:34:35.040> this<00:34:35.200> markup<00:34:35.560> stuff.<00:34:36.320> And<00:34:36.440> so" + }, + { + "start": 2076.669, + "duration": 0.0, + "text": "that also with this markup stuff. And so" + }, + { + "start": 2076.679, + "duration": 0.0, + "text": "that also with this markup stuff. And so when<00:34:36.800> I<00:34:36.840> step<00:34:37.080> over<00:34:37.200> that,<00:34:37.440> it'll<00:34:37.840> color<00:34:38.120> my" + }, + { + "start": 2078.23, + "duration": 0.0, + "text": "when I step over that, it'll color my" + }, + { + "start": 2078.24, + "duration": 0.0, + "text": "when I step over that, it'll color my thread." + }, + { + "start": 2079.79, + "duration": 0.0, + "text": "thread." + }, + { + "start": 2079.8, + "duration": 0.0, + "text": "thread. Um" + }, + { + "start": 2081.59, + "duration": 0.0, + "text": "Um" + }, + { + "start": 2081.6, + "duration": 0.0, + "text": "Um And<00:34:41.720> then<00:34:42.480> there's<00:34:42.679> other<00:34:42.840> stuff,<00:34:43.040> too.<00:34:43.280> So" + }, + { + "start": 2084.878, + "duration": 0.0, + "text": "And then there's other stuff, too. So" + }, + { + "start": 2084.888, + "duration": 0.0, + "text": "And then there's other stuff, too. So >> [clears throat]" + }, + { + "start": 2084.99, + "duration": 0.0, + "text": ">> [clears throat]" + }, + { + "start": 2085.0, + "duration": 0.0, + "text": ">> [clears throat] >> um" + }, + { + "start": 2087.509, + "duration": 0.0, + "text": ">> [snorts]" + }, + { + "start": 2087.59, + "duration": 0.0, + "text": ">> [snorts]" + }, + { + "start": 2087.6, + "duration": 0.0, + "text": ">> [snorts] >> For<00:34:47.760> example,<00:34:48.560> if<00:34:48.720> I<00:34:48.800> go<00:34:48.960> down<00:34:49.560> to" + }, + { + "start": 2090.75, + "duration": 0.0, + "text": ">> For example, if I go down to" + }, + { + "start": 2090.76, + "duration": 0.0, + "text": ">> For example, if I go down to uh" + }, + { + "start": 2091.669, + "duration": 0.0, + "text": "uh" + }, + { + "start": 2091.679, + "duration": 0.0, + "text": "uh Let<00:34:51.760> me<00:34:51.879> look<00:34:52.120> at" + }, + { + "start": 2093.51, + "duration": 0.0, + "text": "Let me look at" + }, + { + "start": 2093.52, + "duration": 0.0, + "text": "Let me look at where<00:34:53.760> what<00:34:53.960> example<00:34:54.360> am<00:34:54.440> I<00:34:54.480> looking<00:34:54.760> for?<00:34:55.360> Uh" + }, + { + "start": 2095.51, + "duration": 0.0, + "text": "where what example am I looking for? Uh" + }, + { + "start": 2095.52, + "duration": 0.0, + "text": "where what example am I looking for? Uh dynamic<00:34:56.000> array." + }, + { + "start": 2097.23, + "duration": 0.0, + "text": "dynamic array." + }, + { + "start": 2097.24, + "duration": 0.0, + "text": "dynamic array. So<00:34:57.320> dynamic<00:34:57.840> array,<00:34:58.160> if<00:34:58.320> we<00:34:58.440> look<00:34:58.680> at<00:34:58.840> what" + }, + { + "start": 2099.11, + "duration": 0.0, + "text": "So dynamic array, if we look at what" + }, + { + "start": 2099.12, + "duration": 0.0, + "text": "So dynamic array, if we look at what this<00:34:59.440> type<00:34:59.760> is,<00:35:00.000> this<00:35:00.160> is<00:35:00.280> a<00:35:00.320> structure." + }, + { + "start": 2101.63, + "duration": 0.0, + "text": "this type is, this is a structure." + }, + { + "start": 2101.64, + "duration": 0.0, + "text": "this type is, this is a structure. Right?<00:35:01.880> And<00:35:02.000> this<00:35:02.120> structure<00:35:02.480> has<00:35:02.640> a<00:35:02.720> pointer" + }, + { + "start": 2103.87, + "duration": 0.0, + "text": "Right? And this structure has a pointer" + }, + { + "start": 2103.88, + "duration": 0.0, + "text": "Right? And this structure has a pointer to<00:35:04.480> a<00:35:04.560> pair" + }, + { + "start": 2105.67, + "duration": 0.0, + "text": "to a pair" + }, + { + "start": 2105.68, + "duration": 0.0, + "text": "to a pair and<00:35:05.800> it<00:35:05.880> has<00:35:06.040> a<00:35:06.080> count." + }, + { + "start": 2107.07, + "duration": 0.0, + "text": "and it has a count." + }, + { + "start": 2107.08, + "duration": 0.0, + "text": "and it has a count. So<00:35:07.240> like<00:35:07.920> usual<00:35:08.280> C<00:35:08.400> programs,<00:35:09.160> you<00:35:09.240> know,<00:35:09.360> if" + }, + { + "start": 2109.47, + "duration": 0.0, + "text": "So like usual C programs, you know, if" + }, + { + "start": 2109.48, + "duration": 0.0, + "text": "So like usual C programs, you know, if you<00:35:09.680> if<00:35:09.840> you<00:35:09.920> want<00:35:10.040> to<00:35:10.120> have<00:35:10.200> a<00:35:10.240> slice<00:35:10.640> type," + }, + { + "start": 2110.91, + "duration": 0.0, + "text": "you if you want to have a slice type," + }, + { + "start": 2110.92, + "duration": 0.0, + "text": "you if you want to have a slice type, you<00:35:11.000> need<00:35:11.120> a<00:35:11.200> pointer<00:35:11.520> and<00:35:11.600> a<00:35:11.640> size<00:35:12.080> or<00:35:12.400> you" + }, + { + "start": 2112.47, + "duration": 0.0, + "text": "you need a pointer and a size or you" + }, + { + "start": 2112.48, + "duration": 0.0, + "text": "you need a pointer and a size or you know,<00:35:12.560> two<00:35:12.760> pointers<00:35:13.160> that<00:35:13.280> form<00:35:13.520> a<00:35:13.840> that<00:35:13.960> form" + }, + { + "start": 2114.11, + "duration": 0.0, + "text": "know, two pointers that form a that form" + }, + { + "start": 2114.12, + "duration": 0.0, + "text": "know, two pointers that form a that form a<00:35:14.200> range<00:35:14.520> in<00:35:14.640> memory<00:35:14.920> or<00:35:15.000> whatever." + }, + { + "start": 2116.23, + "duration": 0.0, + "text": "a range in memory or whatever." + }, + { + "start": 2116.24, + "duration": 0.0, + "text": "a range in memory or whatever. Um<00:35:16.800> and<00:35:16.880> this<00:35:17.040> is<00:35:17.120> just<00:35:17.440> how<00:35:17.680> you<00:35:17.840> encode<00:35:18.200> a" + }, + { + "start": 2118.23, + "duration": 0.0, + "text": "Um and this is just how you encode a" + }, + { + "start": 2118.24, + "duration": 0.0, + "text": "Um and this is just how you encode a dynamic<00:35:18.720> array<00:35:19.160> inside<00:35:19.600> of<00:35:19.760> like<00:35:19.960> the<00:35:20.080> regular" + }, + { + "start": 2120.95, + "duration": 0.0, + "text": "dynamic array inside of like the regular" + }, + { + "start": 2120.96, + "duration": 0.0, + "text": "dynamic array inside of like the regular kind<00:35:21.160> of<00:35:21.600> uh<00:35:21.720> bare-bones<00:35:22.520> C<00:35:23.120> type<00:35:23.320> system." + }, + { + "start": 2124.55, + "duration": 0.0, + "text": "kind of uh bare-bones C type system." + }, + { + "start": 2124.56, + "duration": 0.0, + "text": "kind of uh bare-bones C type system. And<00:35:24.640> then<00:35:24.760> generally<00:35:25.160> if<00:35:25.280> you<00:35:25.560> visualize<00:35:26.000> this" + }, + { + "start": 2126.15, + "duration": 0.0, + "text": "And then generally if you visualize this" + }, + { + "start": 2126.16, + "duration": 0.0, + "text": "And then generally if you visualize this in<00:35:26.280> a<00:35:26.320> debugger,<00:35:27.120> what<00:35:27.280> you'll<00:35:27.400> see<00:35:28.280> is<00:35:28.960> um" + }, + { + "start": 2129.95, + "duration": 0.0, + "text": "in a debugger, what you'll see is um" + }, + { + "start": 2129.96, + "duration": 0.0, + "text": "in a debugger, what you'll see is um I'll<00:35:30.160> have<00:35:30.280> to<00:35:30.360> use<00:35:30.520> this<00:35:30.720> raw<00:35:30.960> thing,<00:35:31.720> this" + }, + { + "start": 2131.95, + "duration": 0.0, + "text": "I'll have to use this raw thing, this" + }, + { + "start": 2131.96, + "duration": 0.0, + "text": "I'll have to use this raw thing, this raw<00:35:32.520> view,<00:35:32.800> which<00:35:32.960> basically<00:35:33.200> turns<00:35:33.480> off<00:35:33.680> all" + }, + { + "start": 2133.79, + "duration": 0.0, + "text": "raw view, which basically turns off all" + }, + { + "start": 2133.8, + "duration": 0.0, + "text": "raw view, which basically turns off all the<00:35:33.880> special<00:35:34.160> views,<00:35:34.680> which<00:35:34.840> I'll<00:35:35.040> get<00:35:35.200> to<00:35:35.320> in" + }, + { + "start": 2135.39, + "duration": 0.0, + "text": "the special views, which I'll get to in" + }, + { + "start": 2135.4, + "duration": 0.0, + "text": "the special views, which I'll get to in a<00:35:35.440> second.<00:35:35.760> But<00:35:36.200> this<00:35:36.360> is<00:35:36.480> what<00:35:36.600> you<00:35:36.680> would" + }, + { + "start": 2136.79, + "duration": 0.0, + "text": "a second. But this is what you would" + }, + { + "start": 2136.8, + "duration": 0.0, + "text": "a second. But this is what you would normally<00:35:37.160> see<00:35:37.400> when<00:35:37.560> you<00:35:37.680> visualize<00:35:38.120> this" + }, + { + "start": 2138.23, + "duration": 0.0, + "text": "normally see when you visualize this" + }, + { + "start": 2138.24, + "duration": 0.0, + "text": "normally see when you visualize this thing<00:35:38.400> in<00:35:38.480> a<00:35:38.520> debugger.<00:35:38.920> It's<00:35:39.040> like,<00:35:39.200> \"Hey," + }, + { + "start": 2139.39, + "duration": 0.0, + "text": "thing in a debugger. It's like, \"Hey," + }, + { + "start": 2139.4, + "duration": 0.0, + "text": "thing in a debugger. It's like, \"Hey, it's<00:35:39.600> a<00:35:39.640> struct<00:35:40.040> with<00:35:40.160> two<00:35:40.320> members.<00:35:40.680> One's<00:35:40.880> a" + }, + { + "start": 2140.91, + "duration": 0.0, + "text": "it's a struct with two members. One's a" + }, + { + "start": 2140.92, + "duration": 0.0, + "text": "it's a struct with two members. One's a pointer<00:35:41.360> to<00:35:41.960> some<00:35:42.240> number<00:35:42.560> of<00:35:42.680> pairs<00:35:42.960> we<00:35:43.040> don't" + }, + { + "start": 2143.23, + "duration": 0.0, + "text": "pointer to some number of pairs we don't" + }, + { + "start": 2143.24, + "duration": 0.0, + "text": "pointer to some number of pairs we don't know,<00:35:43.480> but<00:35:43.840> we<00:35:43.960> can<00:35:44.080> only<00:35:44.240> assume<00:35:44.600> one<00:35:44.920> really" + }, + { + "start": 2145.67, + "duration": 0.0, + "text": "know, but we can only assume one really" + }, + { + "start": 2145.68, + "duration": 0.0, + "text": "know, but we can only assume one really in<00:35:45.880> general.\"<00:35:46.880> And<00:35:46.920> then<00:35:47.040> this<00:35:47.200> integer" + }, + { + "start": 2147.63, + "duration": 0.0, + "text": "in general.\" And then this integer" + }, + { + "start": 2147.64, + "duration": 0.0, + "text": "in general.\" And then this integer called<00:35:47.920> count<00:35:48.320> with<00:35:48.880> with<00:35:49.120> a<00:35:49.240> size<00:35:50.000> or<00:35:50.440> with<00:35:50.600> a" + }, + { + "start": 2150.63, + "duration": 0.0, + "text": "called count with with a size or with a" + }, + { + "start": 2150.64, + "duration": 0.0, + "text": "called count with with a size or with a value<00:35:50.920> of<00:35:51.040> six." + }, + { + "start": 2152.15, + "duration": 0.0, + "text": "value of six." + }, + { + "start": 2152.16, + "duration": 0.0, + "text": "value of six. Um<00:35:52.360> but<00:35:52.520> obviously<00:35:53.000> what<00:35:53.120> this<00:35:53.280> is<00:35:53.400> encoding" + }, + { + "start": 2154.47, + "duration": 0.0, + "text": "Um but obviously what this is encoding" + }, + { + "start": 2154.48, + "duration": 0.0, + "text": "Um but obviously what this is encoding um<00:35:55.000> and<00:35:55.280> what<00:35:55.480> the<00:35:55.640> name<00:35:55.880> should<00:35:56.040> imply<00:35:56.360> is" + }, + { + "start": 2156.43, + "duration": 0.0, + "text": "um and what the name should imply is" + }, + { + "start": 2156.44, + "duration": 0.0, + "text": "um and what the name should imply is that,<00:35:56.600> \"Hey,<00:35:56.840> this<00:35:57.040> is<00:35:57.240> six<00:35:57.680> of<00:35:57.840> these<00:35:58.040> pairs" + }, + { + "start": 2158.63, + "duration": 0.0, + "text": "that, \"Hey, this is six of these pairs" + }, + { + "start": 2158.64, + "duration": 0.0, + "text": "that, \"Hey, this is six of these pairs that<00:35:58.840> we're<00:35:58.920> pointing<00:35:59.320> to.\"" + }, + { + "start": 2161.39, + "duration": 0.0, + "text": "that we're pointing to.\"" + }, + { + "start": 2161.4, + "duration": 0.0, + "text": "that we're pointing to.\" And<00:36:01.520> so<00:36:01.640> what<00:36:01.760> we<00:36:01.840> can<00:36:01.960> actually<00:36:02.240> do<00:36:02.680> is<00:36:03.160> um" + }, + { + "start": 2164.15, + "duration": 0.0, + "text": "And so what we can actually do is um" + }, + { + "start": 2164.16, + "duration": 0.0, + "text": "And so what we can actually do is um uh<00:36:04.320> if<00:36:04.440> we<00:36:04.560> go" + }, + { + "start": 2167.68, + "duration": 0.0, + "text": "look<00:36:08.080> at<00:36:08.200> more<00:36:08.400> of<00:36:08.480> the<00:36:08.560> markup<00:36:08.920> in<00:36:09.000> this<00:36:09.440> in" + }, + { + "start": 2169.55, + "duration": 0.0, + "text": "look at more of the markup in this in" + }, + { + "start": 2169.56, + "duration": 0.0, + "text": "look at more of the markup in this in this<00:36:10.080> um<00:36:10.400> file,<00:36:10.760> we<00:36:10.840> can<00:36:10.960> see,<00:36:11.560> \"Hey,<00:36:11.680> here's" + }, + { + "start": 2171.91, + "duration": 0.0, + "text": "this um file, we can see, \"Hey, here's" + }, + { + "start": 2171.92, + "duration": 0.0, + "text": "this um file, we can see, \"Hey, here's my<00:36:12.040> structure.<00:36:13.080> Uh<00:36:13.200> it's<00:36:13.360> dynamic<00:36:13.760> array," + }, + { + "start": 2174.23, + "duration": 0.0, + "text": "my structure. Uh it's dynamic array," + }, + { + "start": 2174.24, + "duration": 0.0, + "text": "my structure. Uh it's dynamic array, pair<00:36:14.480> pointer,<00:36:15.280> and<00:36:15.560> int.\"" + }, + { + "start": 2177.27, + "duration": 0.0, + "text": "pair pointer, and int.\"" + }, + { + "start": 2177.28, + "duration": 0.0, + "text": "pair pointer, and int.\" And<00:36:18.000> right<00:36:18.200> here<00:36:18.440> I<00:36:18.480> just<00:36:18.680> say,<00:36:18.840> \"Hey,<00:36:19.600> I<00:36:19.720> want" + }, + { + "start": 2179.91, + "duration": 0.0, + "text": "And right here I just say, \"Hey, I want" + }, + { + "start": 2179.92, + "duration": 0.0, + "text": "And right here I just say, \"Hey, I want to<00:36:20.000> form<00:36:20.280> a<00:36:20.320> special<00:36:20.680> kind<00:36:20.840> of<00:36:20.920> view<00:36:21.240> that's" + }, + { + "start": 2181.43, + "duration": 0.0, + "text": "to form a special kind of view that's" + }, + { + "start": 2181.44, + "duration": 0.0, + "text": "to form a special kind of view that's associated<00:36:22.160> with<00:36:22.280> this<00:36:22.480> type" + }, + { + "start": 2183.43, + "duration": 0.0, + "text": "associated with this type" + }, + { + "start": 2183.44, + "duration": 0.0, + "text": "associated with this type uh<00:36:23.520> for<00:36:24.000> for<00:36:24.160> the<00:36:24.280> Render<00:36:24.480> Debugger.\"<00:36:24.720> So<00:36:24.840> it's" + }, + { + "start": 2184.91, + "duration": 0.0, + "text": "uh for for the Render Debugger.\" So it's" + }, + { + "start": 2184.92, + "duration": 0.0, + "text": "uh for for the Render Debugger.\" So it's a<00:36:24.960> Render<00:36:25.160> Debugger<00:36:25.400> type<00:36:25.640> view.<00:36:26.360> I<00:36:26.480> put<00:36:26.680> in" + }, + { + "start": 2186.75, + "duration": 0.0, + "text": "a Render Debugger type view. I put in" + }, + { + "start": 2186.76, + "duration": 0.0, + "text": "a Render Debugger type view. I put in the<00:36:26.840> name<00:36:27.040> of<00:36:27.120> the<00:36:27.200> type,<00:36:27.720> and<00:36:27.800> then<00:36:27.920> I<00:36:28.000> put<00:36:28.280> in" + }, + { + "start": 2189.03, + "duration": 0.0, + "text": "the name of the type, and then I put in" + }, + { + "start": 2189.04, + "duration": 0.0, + "text": "the name of the type, and then I put in the<00:36:29.240> expression<00:36:29.880> that<00:36:30.000> I'd<00:36:30.120> like<00:36:30.320> to" + }, + { + "start": 2190.39, + "duration": 0.0, + "text": "the expression that I'd like to" + }, + { + "start": 2190.4, + "duration": 0.0, + "text": "the expression that I'd like to visualize<00:36:31.520> instances<00:36:32.040> of<00:36:32.120> this<00:36:32.280> type<00:36:32.520> as.<00:36:33.320> So," + }, + { + "start": 2193.43, + "duration": 0.0, + "text": "visualize instances of this type as. So," + }, + { + "start": 2193.44, + "duration": 0.0, + "text": "visualize instances of this type as. So, in<00:36:33.480> this<00:36:33.640> case,<00:36:33.920> and<00:36:34.120> this<00:36:34.280> dollar<00:36:34.560> sign<00:36:35.080> is" + }, + { + "start": 2195.23, + "duration": 0.0, + "text": "in this case, and this dollar sign is" + }, + { + "start": 2195.24, + "duration": 0.0, + "text": "in this case, and this dollar sign is just<00:36:35.480> used<00:36:35.880> to<00:36:36.120> refer<00:36:36.520> to" + }, + { + "start": 2197.59, + "duration": 0.0, + "text": "just used to refer to" + }, + { + "start": 2197.6, + "duration": 0.0, + "text": "just used to refer to um<00:36:37.720> whatever's<00:36:38.080> being<00:36:38.280> evaluated.<00:36:39.280> So,<00:36:39.600> any" + }, + { + "start": 2200.51, + "duration": 0.0, + "text": "um whatever's being evaluated. So, any" + }, + { + "start": 2200.52, + "duration": 0.0, + "text": "um whatever's being evaluated. So, any whatever<00:36:40.880> expression<00:36:41.280> it<00:36:41.360> evaluates<00:36:41.800> to<00:36:41.920> this" + }, + { + "start": 2202.07, + "duration": 0.0, + "text": "whatever expression it evaluates to this" + }, + { + "start": 2202.08, + "duration": 0.0, + "text": "whatever expression it evaluates to this type,<00:36:42.520> that's<00:36:42.720> what<00:36:42.880> this<00:36:43.040> dollar<00:36:43.320> sign" + }, + { + "start": 2203.55, + "duration": 0.0, + "text": "type, that's what this dollar sign" + }, + { + "start": 2203.56, + "duration": 0.0, + "text": "type, that's what this dollar sign represents.<00:36:44.360> And<00:36:44.520> the<00:36:44.640> only<00:36:44.840> thing<00:36:44.960> I'm<00:36:45.080> going" + }, + { + "start": 2205.19, + "duration": 0.0, + "text": "represents. And the only thing I'm going" + }, + { + "start": 2205.2, + "duration": 0.0, + "text": "represents. And the only thing I'm going to<00:36:45.280> do<00:36:45.560> when<00:36:45.720> we're<00:36:45.840> evaluating<00:36:46.400> this<00:36:46.560> kind<00:36:46.760> of" + }, + { + "start": 2206.87, + "duration": 0.0, + "text": "to do when we're evaluating this kind of" + }, + { + "start": 2206.88, + "duration": 0.0, + "text": "to do when we're evaluating this kind of thing<00:36:47.400> is<00:36:47.480> I'm<00:36:47.560> just<00:36:47.680> going<00:36:47.800> to<00:36:47.880> wrap<00:36:48.120> it<00:36:48.200> in" + }, + { + "start": 2208.27, + "duration": 0.0, + "text": "thing is I'm just going to wrap it in" + }, + { + "start": 2208.28, + "duration": 0.0, + "text": "thing is I'm just going to wrap it in this<00:36:48.440> view<00:36:49.040> called<00:36:49.320> slice." + }, + { + "start": 2211.27, + "duration": 0.0, + "text": "this view called slice." + }, + { + "start": 2211.28, + "duration": 0.0, + "text": "this view called slice. And<00:36:51.400> so,<00:36:51.520> what<00:36:51.680> we<00:36:51.840> do" + }, + { + "start": 2213.03, + "duration": 0.0, + "text": "And so, what we do" + }, + { + "start": 2213.04, + "duration": 0.0, + "text": "And so, what we do uh<00:36:53.320> what<00:36:53.440> we<00:36:53.560> see<00:36:53.800> when<00:36:53.960> we<00:36:54.080> actually<00:36:54.640> like" + }, + { + "start": 2214.91, + "duration": 0.0, + "text": "uh what we see when we actually like" + }, + { + "start": 2214.92, + "duration": 0.0, + "text": "uh what we see when we actually like plug<00:36:55.120> that<00:36:55.320> in<00:36:55.520> and<00:36:55.680> evaluate<00:36:56.080> just<00:36:56.320> dynamic," + }, + { + "start": 2216.83, + "duration": 0.0, + "text": "plug that in and evaluate just dynamic," + }, + { + "start": 2216.84, + "duration": 0.0, + "text": "plug that in and evaluate just dynamic, we<00:36:57.000> see<00:36:57.200> that<00:36:57.360> the<00:36:57.480> evaluation<00:36:58.000> type<00:36:58.160> is" + }, + { + "start": 2218.23, + "duration": 0.0, + "text": "we see that the evaluation type is" + }, + { + "start": 2218.24, + "duration": 0.0, + "text": "we see that the evaluation type is actually<00:36:58.560> slice<00:36:59.480> the<00:36:59.600> slice<00:36:59.960> view<00:37:00.760> applied<00:37:01.200> to" + }, + { + "start": 2221.75, + "duration": 0.0, + "text": "actually slice the slice view applied to" + }, + { + "start": 2221.76, + "duration": 0.0, + "text": "actually slice the slice view applied to a<00:37:01.840> dynamic<00:37:02.280> array<00:37:02.440> type." + }, + { + "start": 2223.83, + "duration": 0.0, + "text": "a dynamic array type." + }, + { + "start": 2223.84, + "duration": 0.0, + "text": "a dynamic array type. And<00:37:03.960> that<00:37:04.160> will<00:37:04.320> actually<00:37:04.640> expand<00:37:05.280> with<00:37:05.480> the" + }, + { + "start": 2225.59, + "duration": 0.0, + "text": "And that will actually expand with the" + }, + { + "start": 2225.6, + "duration": 0.0, + "text": "And that will actually expand with the exact<00:37:05.960> number<00:37:06.200> of<00:37:06.320> things<00:37:06.560> that<00:37:06.680> I<00:37:06.720> actually" + }, + { + "start": 2226.99, + "duration": 0.0, + "text": "exact number of things that I actually" + }, + { + "start": 2227.0, + "duration": 0.0, + "text": "exact number of things that I actually expect.<00:37:07.440> So,<00:37:07.560> this<00:37:07.760> is<00:37:07.880> like<00:37:08.080> just<00:37:08.800> hit" + }, + { + "start": 2228.91, + "duration": 0.0, + "text": "expect. So, this is like just hit" + }, + { + "start": 2228.92, + "duration": 0.0, + "text": "expect. So, this is like just hit saying,<00:37:09.200> \"Hey,<00:37:09.360> here's<00:37:09.600> a<00:37:09.640> structure.<00:37:10.000> It's" + }, + { + "start": 2230.07, + "duration": 0.0, + "text": "saying, \"Hey, here's a structure. It's" + }, + { + "start": 2230.08, + "duration": 0.0, + "text": "saying, \"Hey, here's a structure. It's got<00:37:10.200> a<00:37:10.240> pointer<00:37:10.520> and<00:37:10.600> a<00:37:10.640> count.<00:37:11.600> You<00:37:11.760> know<00:37:11.880> what" + }, + { + "start": 2231.99, + "duration": 0.0, + "text": "got a pointer and a count. You know what" + }, + { + "start": 2232.0, + "duration": 0.0, + "text": "got a pointer and a count. You know what to<00:37:12.080> do<00:37:12.200> with<00:37:12.360> this<00:37:13.080> if<00:37:13.280> I<00:37:13.360> tell<00:37:13.600> you<00:37:13.680> that<00:37:13.840> it's" + }, + { + "start": 2233.95, + "duration": 0.0, + "text": "to do with this if I tell you that it's" + }, + { + "start": 2233.96, + "duration": 0.0, + "text": "to do with this if I tell you that it's a<00:37:14.000> slice.\"<00:37:14.560> So,<00:37:15.000> the<00:37:15.120> debugger<00:37:15.440> does<00:37:15.680> know<00:37:15.800> how" + }, + { + "start": 2235.87, + "duration": 0.0, + "text": "a slice.\" So, the debugger does know how" + }, + { + "start": 2235.88, + "duration": 0.0, + "text": "a slice.\" So, the debugger does know how to<00:37:16.000> do<00:37:16.120> it<00:37:16.520> do<00:37:16.680> with<00:37:16.800> it,<00:37:16.960> and<00:37:17.040> then<00:37:17.160> this<00:37:17.280> write" + }, + { + "start": 2237.43, + "duration": 0.0, + "text": "to do it do with it, and then this write" + }, + { + "start": 2237.44, + "duration": 0.0, + "text": "to do it do with it, and then this write a<00:37:17.480> view<00:37:17.600> type<00:37:17.920> view<00:37:18.080> is<00:37:18.160> just<00:37:18.360> saying," + }, + { + "start": 2239.47, + "duration": 0.0, + "text": "a view type view is just saying," + }, + { + "start": 2239.48, + "duration": 0.0, + "text": "a view type view is just saying, \"If<00:37:19.600> you<00:37:19.720> have<00:37:19.960> this<00:37:20.120> type,<00:37:20.600> just<00:37:20.840> do<00:37:20.960> that" + }, + { + "start": 2241.15, + "duration": 0.0, + "text": "\"If you have this type, just do that" + }, + { + "start": 2241.16, + "duration": 0.0, + "text": "\"If you have this type, just do that automatically<00:37:21.680> for<00:37:21.880> me.\"<00:37:22.000> So,<00:37:22.080> you<00:37:22.120> don't" + }, + { + "start": 2242.27, + "duration": 0.0, + "text": "automatically for me.\" So, you don't" + }, + { + "start": 2242.28, + "duration": 0.0, + "text": "automatically for me.\" So, you don't have<00:37:22.400> to<00:37:22.480> do<00:37:23.080> slice" + }, + { + "start": 2244.31, + "duration": 0.0, + "text": "have to do slice" + }, + { + "start": 2244.32, + "duration": 0.0, + "text": "have to do slice at<00:37:24.840> uh<00:37:24.920> all<00:37:25.000> dynamic<00:37:25.640> every<00:37:25.800> single<00:37:26.040> time<00:37:26.240> you" + }, + { + "start": 2246.31, + "duration": 0.0, + "text": "at uh all dynamic every single time you" + }, + { + "start": 2246.32, + "duration": 0.0, + "text": "at uh all dynamic every single time you want<00:37:26.440> to<00:37:26.480> evaluate<00:37:26.880> something." + }, + { + "start": 2247.99, + "duration": 0.0, + "text": "want to evaluate something." + }, + { + "start": 2248.0, + "duration": 0.0, + "text": "want to evaluate something. Um" + }, + { + "start": 2249.47, + "duration": 0.0, + "text": "Um" + }, + { + "start": 2249.48, + "duration": 0.0, + "text": "Um And<00:37:29.600> you<00:37:29.640> can<00:37:29.760> see<00:37:29.960> you<00:37:30.080> do<00:37:30.200> it<00:37:30.240> with<00:37:30.360> templates" + }, + { + "start": 2250.75, + "duration": 0.0, + "text": "And you can see you do it with templates" + }, + { + "start": 2250.76, + "duration": 0.0, + "text": "And you can see you do it with templates as<00:37:30.880> well.<00:37:31.080> Like<00:37:31.280> I<00:37:31.320> have<00:37:31.400> a<00:37:31.440> templated<00:37:31.880> dynamic" + }, + { + "start": 2252.31, + "duration": 0.0, + "text": "as well. Like I have a templated dynamic" + }, + { + "start": 2252.32, + "duration": 0.0, + "text": "as well. Like I have a templated dynamic array.<00:37:33.120> Um<00:37:33.880> and<00:37:34.240> here<00:37:34.520> I<00:37:34.560> actually<00:37:34.800> put<00:37:34.960> in<00:37:35.040> the" + }, + { + "start": 2255.11, + "duration": 0.0, + "text": "array. Um and here I actually put in the" + }, + { + "start": 2255.12, + "duration": 0.0, + "text": "array. Um and here I actually put in the count.<00:37:35.720> So,<00:37:35.880> if<00:37:36.000> we<00:37:36.120> look<00:37:36.360> at<00:37:36.680> uh<00:37:37.000> let<00:37:37.080> me<00:37:37.200> look" + }, + { + "start": 2257.43, + "duration": 0.0, + "text": "count. So, if we look at uh let me look" + }, + { + "start": 2257.44, + "duration": 0.0, + "text": "count. So, if we look at uh let me look at<00:37:37.560> where<00:37:37.720> this<00:37:37.880> is<00:37:38.000> used." + }, + { + "start": 2259.71, + "duration": 0.0, + "text": "at where this is used." + }, + { + "start": 2259.72, + "duration": 0.0, + "text": "at where this is used. Uh<00:37:39.880> templated<00:37:40.280> dynamic,<00:37:40.800> so<00:37:40.920> we'll<00:37:41.040> do" + }, + { + "start": 2262.03, + "duration": 0.0, + "text": "Uh templated dynamic, so we'll do" + }, + { + "start": 2262.04, + "duration": 0.0, + "text": "Uh templated dynamic, so we'll do templated" + }, + { + "start": 2263.67, + "duration": 0.0, + "text": "templated" + }, + { + "start": 2263.68, + "duration": 0.0, + "text": "templated dynamic<00:37:44.120> here." + }, + { + "start": 2265.91, + "duration": 0.0, + "text": "dynamic here." + }, + { + "start": 2265.92, + "duration": 0.0, + "text": "dynamic here. And<00:37:45.960> we<00:37:46.040> can<00:37:46.160> see<00:37:46.320> we<00:37:46.440> get<00:37:47.160> uh<00:37:47.400> the<00:37:47.520> count" + }, + { + "start": 2267.95, + "duration": 0.0, + "text": "And we can see we get uh the count" + }, + { + "start": 2267.96, + "duration": 0.0, + "text": "And we can see we get uh the count visualized<00:37:48.360> here<00:37:48.520> and<00:37:48.600> then<00:37:48.800> array<00:37:49.360> of<00:37:49.600> the" + }, + { + "start": 2269.67, + "duration": 0.0, + "text": "visualized here and then array of the" + }, + { + "start": 2269.68, + "duration": 0.0, + "text": "visualized here and then array of the base<00:37:49.920> pointer<00:37:50.320> with<00:37:50.520> the<00:37:50.600> count" + }, + { + "start": 2272.19, + "duration": 0.0, + "text": "base pointer with the count" + }, + { + "start": 2272.2, + "duration": 0.0, + "text": "base pointer with the count right<00:37:52.360> here." + }, + { + "start": 2273.43, + "duration": 0.0, + "text": "right here." + }, + { + "start": 2273.44, + "duration": 0.0, + "text": "right here. Um" + }, + { + "start": 2274.87, + "duration": 0.0, + "text": "Um" + }, + { + "start": 2274.88, + "duration": 0.0, + "text": "Um And<00:37:55.000> that<00:37:55.120> actually<00:37:55.360> applies<00:37:55.640> for" + }, + { + "start": 2275.75, + "duration": 0.0, + "text": "And that actually applies for" + }, + { + "start": 2275.76, + "duration": 0.0, + "text": "And that actually applies for everything.<00:37:56.120> So,<00:37:56.360> if<00:37:56.560> I<00:37:56.600> go<00:37:56.720> back<00:37:56.920> to<00:37:57.000> that" + }, + { + "start": 2277.15, + "duration": 0.0, + "text": "everything. So, if I go back to that" + }, + { + "start": 2277.16, + "duration": 0.0, + "text": "everything. So, if I go back to that fancy<00:37:57.520> visualizer," + }, + { + "start": 2279.07, + "duration": 0.0, + "text": "fancy visualizer," + }, + { + "start": 2279.08, + "duration": 0.0, + "text": "fancy visualizer, uh" + }, + { + "start": 2279.99, + "duration": 0.0, + "text": "uh" + }, + { + "start": 2280.0, + "duration": 0.0, + "text": "uh eval<00:38:00.320> test,<00:38:01.080> um" + }, + { + "start": 2282.11, + "duration": 0.0, + "text": "eval test, um" + }, + { + "start": 2282.12, + "duration": 0.0, + "text": "eval test, um if<00:38:02.280> I<00:38:02.320> go<00:38:02.440> down<00:38:02.640> to<00:38:02.720> this<00:38:02.880> bitmap<00:38:03.280> type," + }, + { + "start": 2284.91, + "duration": 0.0, + "text": "if I go down to this bitmap type," + }, + { + "start": 2284.92, + "duration": 0.0, + "text": "if I go down to this bitmap type, you'll<00:38:05.120> see<00:38:05.280> that<00:38:05.600> it's<00:38:05.800> just<00:38:06.240> uh<00:38:06.640> this<00:38:06.840> is<00:38:06.960> a" + }, + { + "start": 2286.99, + "duration": 0.0, + "text": "you'll see that it's just uh this is a" + }, + { + "start": 2287.0, + "duration": 0.0, + "text": "you'll see that it's just uh this is a structure,<00:38:08.040> this<00:38:08.200> bitmap,<00:38:08.640> which<00:38:08.840> has<00:38:08.960> a<00:38:09.040> base" + }, + { + "start": 2289.23, + "duration": 0.0, + "text": "structure, this bitmap, which has a base" + }, + { + "start": 2289.24, + "duration": 0.0, + "text": "structure, this bitmap, which has a base pointer<00:38:09.600> and<00:38:09.720> a<00:38:09.760> width<00:38:09.960> and<00:38:10.040> a<00:38:10.080> height.<00:38:10.800> And" + }, + { + "start": 2290.91, + "duration": 0.0, + "text": "pointer and a width and a height. And" + }, + { + "start": 2290.92, + "duration": 0.0, + "text": "pointer and a width and a height. And there's<00:38:11.120> just<00:38:11.280> a<00:38:11.360> rule<00:38:11.600> somewhere<00:38:12.360> that<00:38:12.600> says" + }, + { + "start": 2293.95, + "duration": 0.0, + "text": "there's just a rule somewhere that says" + }, + { + "start": 2293.96, + "duration": 0.0, + "text": "there's just a rule somewhere that says um" + }, + { + "start": 2294.87, + "duration": 0.0, + "text": "um" + }, + { + "start": 2294.88, + "duration": 0.0, + "text": "um \"Hey,<00:38:15.640> if<00:38:15.800> you<00:38:15.920> have<00:38:16.080> a<00:38:16.120> type<00:38:16.560> if<00:38:16.680> you<00:38:16.760> have<00:38:16.840> an" + }, + { + "start": 2296.91, + "duration": 0.0, + "text": "\"Hey, if you have a type if you have an" + }, + { + "start": 2296.92, + "duration": 0.0, + "text": "\"Hey, if you have a type if you have an instance<00:38:17.240> of<00:38:17.320> type<00:38:17.520> bitmap,<00:38:18.440> visualize<00:38:18.920> this" + }, + { + "start": 2299.55, + "duration": 0.0, + "text": "instance of type bitmap, visualize this" + }, + { + "start": 2299.56, + "duration": 0.0, + "text": "instance of type bitmap, visualize this with<00:38:19.800> the<00:38:19.880> bitmap<00:38:20.240> view<00:38:20.920> applied<00:38:21.720> uh<00:38:21.800> the<00:38:21.840> base" + }, + { + "start": 2302.07, + "duration": 0.0, + "text": "with the bitmap view applied uh the base" + }, + { + "start": 2302.08, + "duration": 0.0, + "text": "with the bitmap view applied uh the base pointer<00:38:22.800> to<00:38:22.920> the<00:38:23.040> pixels<00:38:23.400> being<00:38:23.600> the<00:38:23.680> base<00:38:24.240> the" + }, + { + "start": 2304.31, + "duration": 0.0, + "text": "pointer to the pixels being the base the" + }, + { + "start": 2304.32, + "duration": 0.0, + "text": "pointer to the pixels being the base the base<00:38:24.520> member<00:38:24.880> and<00:38:25.000> then<00:38:25.120> the<00:38:25.240> width<00:38:25.400> and" + }, + { + "start": 2305.51, + "duration": 0.0, + "text": "base member and then the width and" + }, + { + "start": 2305.52, + "duration": 0.0, + "text": "base member and then the width and height<00:38:25.720> being<00:38:25.880> the<00:38:25.960> dimensions,<00:38:26.440> right?" + }, + { + "start": 2306.59, + "duration": 0.0, + "text": "height being the dimensions, right?" + }, + { + "start": 2306.6, + "duration": 0.0, + "text": "height being the dimensions, right? That's<00:38:26.800> all<00:38:27.520> That's<00:38:27.720> the<00:38:27.800> only<00:38:28.000> thing<00:38:28.200> that's" + }, + { + "start": 2308.39, + "duration": 0.0, + "text": "That's all That's the only thing that's" + }, + { + "start": 2308.4, + "duration": 0.0, + "text": "That's all That's the only thing that's in<00:38:28.520> there<00:38:28.920> and<00:38:29.320> and<00:38:29.800> that<00:38:29.920> gets<00:38:30.080> baked<00:38:30.320> into" + }, + { + "start": 2310.47, + "duration": 0.0, + "text": "in there and and that gets baked into" + }, + { + "start": 2310.48, + "duration": 0.0, + "text": "in there and and that gets baked into the<00:38:30.560> executable,<00:38:31.040> so<00:38:31.160> the<00:38:31.240> debugger<00:38:31.560> plugs<00:38:31.840> it" + }, + { + "start": 2311.91, + "duration": 0.0, + "text": "the executable, so the debugger plugs it" + }, + { + "start": 2311.92, + "duration": 0.0, + "text": "the executable, so the debugger plugs it into<00:38:32.160> its<00:38:32.600> evaluation<00:38:33.120> system." + }, + { + "start": 2314.43, + "duration": 0.0, + "text": "into its evaluation system." + }, + { + "start": 2314.44, + "duration": 0.0, + "text": "into its evaluation system. And<00:38:34.560> then<00:38:34.720> anytime<00:38:35.200> I<00:38:35.280> evaluate,<00:38:36.400> uh,<00:38:36.480> for" + }, + { + "start": 2316.59, + "duration": 0.0, + "text": "And then anytime I evaluate, uh, for" + }, + { + "start": 2316.6, + "duration": 0.0, + "text": "And then anytime I evaluate, uh, for example,<00:38:37.000> a<00:38:37.040> variable<00:38:37.400> called<00:38:37.640> foo<00:38:38.360> of<00:38:38.560> type" + }, + { + "start": 2318.79, + "duration": 0.0, + "text": "example, a variable called foo of type" + }, + { + "start": 2318.8, + "duration": 0.0, + "text": "example, a variable called foo of type of<00:38:38.880> it<00:38:39.000> map,<00:38:39.600> then<00:38:39.800> we<00:38:39.920> see<00:38:40.720> it's<00:38:40.920> just<00:38:41.320> the" + }, + { + "start": 2321.91, + "duration": 0.0, + "text": "of it map, then we see it's just the" + }, + { + "start": 2321.92, + "duration": 0.0, + "text": "of it map, then we see it's just the it's<00:38:42.080> just<00:38:42.240> the<00:38:42.280> bitmap<00:38:42.880> thing.<00:38:43.120> And<00:38:43.200> if<00:38:43.320> I" + }, + { + "start": 2323.39, + "duration": 0.0, + "text": "it's just the bitmap thing. And if I" + }, + { + "start": 2323.4, + "duration": 0.0, + "text": "it's just the bitmap thing. And if I want<00:38:43.600> to<00:38:43.680> get<00:38:43.800> back<00:38:43.960> to<00:38:44.040> the<00:38:44.160> original<00:38:44.600> view," + }, + { + "start": 2325.87, + "duration": 0.0, + "text": "want to get back to the original view," + }, + { + "start": 2325.88, + "duration": 0.0, + "text": "want to get back to the original view, then<00:38:46.000> I<00:38:46.080> just<00:38:46.240> do<00:38:46.400> raw.<00:38:46.960> It's<00:38:47.200> That's<00:38:47.440> what<00:38:47.520> the" + }, + { + "start": 2327.63, + "duration": 0.0, + "text": "then I just do raw. It's That's what the" + }, + { + "start": 2327.64, + "duration": 0.0, + "text": "then I just do raw. It's That's what the raw<00:38:47.840> thing<00:38:48.000> is<00:38:48.120> for,<00:38:48.360> right?<00:38:48.520> That's<00:38:49.080> That's" + }, + { + "start": 2329.27, + "duration": 0.0, + "text": "raw thing is for, right? That's That's" + }, + { + "start": 2329.28, + "duration": 0.0, + "text": "raw thing is for, right? That's That's me<00:38:49.400> saying,<00:38:49.640> \"Hey,<00:38:49.920> I<00:38:50.080> just<00:38:50.520> I<00:38:50.640> just<00:38:50.960> want<00:38:51.120> to" + }, + { + "start": 2331.43, + "duration": 0.0, + "text": "me saying, \"Hey, I just I just want to" + }, + { + "start": 2331.44, + "duration": 0.0, + "text": "me saying, \"Hey, I just I just want to look<00:38:51.640> at<00:38:51.720> this<00:38:51.880> how<00:38:52.000> the<00:38:52.080> debugger<00:38:52.400> would" + }, + { + "start": 2332.51, + "duration": 0.0, + "text": "look at this how the debugger would" + }, + { + "start": 2332.52, + "duration": 0.0, + "text": "look at this how the debugger would normally<00:38:52.920> look<00:38:53.160> at<00:38:53.240> it<00:38:53.320> without<00:38:53.560> any<00:38:53.720> of<00:38:53.800> the" + }, + { + "start": 2333.87, + "duration": 0.0, + "text": "normally look at it without any of the" + }, + { + "start": 2333.88, + "duration": 0.0, + "text": "normally look at it without any of the type<00:38:54.080> view<00:38:54.200> stuff.<00:38:54.440> Just<00:38:54.640> turn<00:38:54.800> it<00:38:54.920> all<00:38:55.080> off," + }, + { + "start": 2335.59, + "duration": 0.0, + "text": "type view stuff. Just turn it all off," + }, + { + "start": 2335.6, + "duration": 0.0, + "text": "type view stuff. Just turn it all off, get<00:38:55.720> a<00:38:55.760> base<00:38:55.960> pointer<00:38:56.320> with<00:38:56.520> and<00:38:56.640> height.\"" + }, + { + "start": 2337.59, + "duration": 0.0, + "text": "get a base pointer with and height.\"" + }, + { + "start": 2337.6, + "duration": 0.0, + "text": "get a base pointer with and height.\" Um," + }, + { + "start": 2338.67, + "duration": 0.0, + "text": "Um," + }, + { + "start": 2338.68, + "duration": 0.0, + "text": "Um, but<00:38:58.760> by<00:38:58.880> default,<00:38:59.280> obviously,<00:38:59.640> it's<00:38:59.800> more<00:39:00.200> if" + }, + { + "start": 2340.31, + "duration": 0.0, + "text": "but by default, obviously, it's more if" + }, + { + "start": 2340.32, + "duration": 0.0, + "text": "but by default, obviously, it's more if you<00:39:00.360> have<00:39:00.440> something<00:39:00.640> called<00:39:00.800> bitmap,<00:39:01.240> it" + }, + { + "start": 2341.27, + "duration": 0.0, + "text": "you have something called bitmap, it" + }, + { + "start": 2341.28, + "duration": 0.0, + "text": "you have something called bitmap, it might<00:39:01.400> be<00:39:01.480> convenient<00:39:01.880> to<00:39:01.960> look<00:39:02.120> at<00:39:02.200> it<00:39:02.320> as" + }, + { + "start": 2342.47, + "duration": 0.0, + "text": "might be convenient to look at it as" + }, + { + "start": 2342.48, + "duration": 0.0, + "text": "might be convenient to look at it as bitmap<00:39:02.840> by<00:39:02.920> default.<00:39:03.560> So," + }, + { + "start": 2346.32, + "duration": 0.0, + "text": "hopefully,<00:39:07.360> that<00:39:08.160> is<00:39:08.280> a<00:39:08.320> pretty<00:39:08.520> good" + }, + { + "start": 2348.67, + "duration": 0.0, + "text": "hopefully, that is a pretty good" + }, + { + "start": 2348.68, + "duration": 0.0, + "text": "hopefully, that is a pretty good overview.<00:39:09.400> Um,<00:39:10.160> there's<00:39:10.320> lots<00:39:10.480> of<00:39:10.560> other" + }, + { + "start": 2350.71, + "duration": 0.0, + "text": "overview. Um, there's lots of other" + }, + { + "start": 2350.72, + "duration": 0.0, + "text": "overview. Um, there's lots of other things<00:39:11.080> like<00:39:11.840> more<00:39:12.040> traditional<00:39:12.480> debugger" + }, + { + "start": 2352.83, + "duration": 0.0, + "text": "things like more traditional debugger" + }, + { + "start": 2352.84, + "duration": 0.0, + "text": "things like more traditional debugger things<00:39:13.080> like<00:39:13.240> I<00:39:13.280> can<00:39:13.600> I<00:39:13.680> can<00:39:13.800> debug<00:39:14.040> multiple" + }, + { + "start": 2354.35, + "duration": 0.0, + "text": "things like I can I can debug multiple" + }, + { + "start": 2354.36, + "duration": 0.0, + "text": "things like I can I can debug multiple processes<00:39:14.880> at<00:39:15.000> once.<00:39:16.000> Um,<00:39:16.520> there's" + }, + { + "start": 2356.71, + "duration": 0.0, + "text": "processes at once. Um, there's" + }, + { + "start": 2356.72, + "duration": 0.0, + "text": "processes at once. Um, there's conditional<00:39:17.120> breakpoints,<00:39:17.760> there's<00:39:18.120> address" + }, + { + "start": 2358.47, + "duration": 0.0, + "text": "conditional breakpoints, there's address" + }, + { + "start": 2358.48, + "duration": 0.0, + "text": "conditional breakpoints, there's address breakpoints,<00:39:19.040> there's,<00:39:19.560> uh,<00:39:19.680> data" + }, + { + "start": 2359.95, + "duration": 0.0, + "text": "breakpoints, there's, uh, data" + }, + { + "start": 2359.96, + "duration": 0.0, + "text": "breakpoints, there's, uh, data breakpoints<00:39:20.480> as<00:39:20.600> well.<00:39:21.480> Um,<00:39:21.920> so<00:39:22.000> I<00:39:22.080> can<00:39:22.200> cover" + }, + { + "start": 2362.47, + "duration": 0.0, + "text": "breakpoints as well. Um, so I can cover" + }, + { + "start": 2362.48, + "duration": 0.0, + "text": "breakpoints as well. Um, so I can cover any<00:39:22.640> of<00:39:22.720> those,<00:39:22.960> but<00:39:23.080> those<00:39:23.240> are<00:39:23.320> all<00:39:23.400> kind<00:39:23.560> of" + }, + { + "start": 2363.63, + "duration": 0.0, + "text": "any of those, but those are all kind of" + }, + { + "start": 2363.64, + "duration": 0.0, + "text": "any of those, but those are all kind of common<00:39:23.960> debugger<00:39:24.280> functionality.<00:39:25.480> Um," + }, + { + "start": 2366.55, + "duration": 0.0, + "text": "common debugger functionality. Um," + }, + { + "start": 2366.56, + "duration": 0.0, + "text": "common debugger functionality. Um, but,<00:39:26.920> uh,<00:39:27.080> hopefully,<00:39:27.360> that's<00:39:27.480> a<00:39:27.520> good" + }, + { + "start": 2367.67, + "duration": 0.0, + "text": "but, uh, hopefully, that's a good" + }, + { + "start": 2367.68, + "duration": 0.0, + "text": "but, uh, hopefully, that's a good overview." + }, + { + "start": 2368.67, + "duration": 0.0, + "text": "overview." + }, + { + "start": 2368.68, + "duration": 0.0, + "text": "overview. Um," + }, + { + "start": 2369.51, + "duration": 0.0, + "text": "Um," + }, + { + "start": 2369.52, + "duration": 0.0, + "text": "Um, >> Nice." + }, + { + "start": 2370.03, + "duration": 0.0, + "text": ">> Nice." + }, + { + "start": 2370.04, + "duration": 0.0, + "text": ">> Nice. >> Yeah." + }, + { + "start": 2371.63, + "duration": 0.0, + "text": ">> Yeah." + }, + { + "start": 2371.64, + "duration": 0.0, + "text": ">> Yeah. >> Uh,<00:39:32.120> there<00:39:32.520> there<00:39:32.680> were<00:39:32.760> a<00:39:32.840> couple<00:39:33.280> of<00:39:33.600> wows<00:39:34.200> in" + }, + { + "start": 2374.39, + "duration": 0.0, + "text": ">> Uh, there there were a couple of wows in" + }, + { + "start": 2374.4, + "duration": 0.0, + "text": ">> Uh, there there were a couple of wows in the<00:39:34.640> chat<00:39:35.040> in<00:39:35.160> the<00:39:35.280> meantime<00:39:36.160> when<00:39:36.360> you<00:39:36.440> were" + }, + { + "start": 2376.55, + "duration": 0.0, + "text": "the chat in the meantime when you were" + }, + { + "start": 2376.56, + "duration": 0.0, + "text": "the chat in the meantime when you were doing<00:39:36.920> the<00:39:37.280> everything<00:39:37.680> is<00:39:37.800> a<00:39:37.880> watch<00:39:38.120> window" + }, + { + "start": 2379.11, + "duration": 0.0, + "text": "doing the everything is a watch window" + }, + { + "start": 2379.12, + "duration": 0.0, + "text": "doing the everything is a watch window uh,<00:39:39.560> reveals." + }, + { + "start": 2380.75, + "duration": 0.0, + "text": "uh, reveals." + }, + { + "start": 2380.76, + "duration": 0.0, + "text": "uh, reveals. And<00:39:40.840> there<00:39:40.960> were<00:39:41.040> also<00:39:41.240> a<00:39:41.280> couple<00:39:41.600> of" + }, + { + "start": 2381.71, + "duration": 0.0, + "text": "And there were also a couple of" + }, + { + "start": 2381.72, + "duration": 0.0, + "text": "And there were also a couple of questions<00:39:42.480> like<00:39:42.800> how<00:39:43.320> rad<00:39:43.600> debugger<00:39:43.960> works" + }, + { + "start": 2384.31, + "duration": 0.0, + "text": "questions like how rad debugger works" + }, + { + "start": 2384.32, + "duration": 0.0, + "text": "questions like how rad debugger works with,<00:39:44.840> uh,<00:39:45.160> sources<00:39:45.640> that<00:39:45.760> only<00:39:46.000> have,<00:39:46.200> for" + }, + { + "start": 2386.31, + "duration": 0.0, + "text": "with, uh, sources that only have, for" + }, + { + "start": 2386.32, + "duration": 0.0, + "text": "with, uh, sources that only have, for example,<00:39:47.040> debug<00:39:47.360> information<00:39:48.000> or<00:39:48.200> don't<00:39:49.200> and" + }, + { + "start": 2389.43, + "duration": 0.0, + "text": "example, debug information or don't and" + }, + { + "start": 2389.44, + "duration": 0.0, + "text": "example, debug information or don't and how<00:39:49.560> does<00:39:49.800> it<00:39:49.920> interplay<00:39:50.440> with<00:39:50.640> like,<00:39:51.240> um," + }, + { + "start": 2391.59, + "duration": 0.0, + "text": "how does it interplay with like, um," + }, + { + "start": 2391.6, + "duration": 0.0, + "text": "how does it interplay with like, um, other<00:39:51.840> libraries<00:39:52.360> and<00:39:52.520> other<00:39:52.720> source<00:39:53.000> code?" + }, + { + "start": 2395.6, + "duration": 0.0, + "text": ">> Uh,<00:39:56.160> I<00:39:56.240> guess<00:39:56.440> I'm<00:39:56.560> not<00:39:56.880> 100%<00:39:57.400> sure<00:39:57.520> about<00:39:57.680> the" + }, + { + "start": 2397.75, + "duration": 0.0, + "text": ">> Uh, I guess I'm not 100% sure about the" + }, + { + "start": 2397.76, + "duration": 0.0, + "text": ">> Uh, I guess I'm not 100% sure about the question.<00:39:58.280> Like<00:39:58.440> if<00:39:58.560> you<00:39:58.640> don't<00:39:58.880> have<00:39:59.040> debug" + }, + { + "start": 2399.35, + "duration": 0.0, + "text": "question. Like if you don't have debug" + }, + { + "start": 2399.36, + "duration": 0.0, + "text": "question. Like if you don't have debug info,<00:40:00.040> then<00:40:00.560> what<00:40:00.880> The<00:40:01.040> only<00:40:01.200> thing<00:40:01.360> you<00:40:01.440> can" + }, + { + "start": 2401.55, + "duration": 0.0, + "text": "info, then what The only thing you can" + }, + { + "start": 2401.56, + "duration": 0.0, + "text": "info, then what The only thing you can really<00:40:01.760> do," + }, + { + "start": 2402.79, + "duration": 0.0, + "text": "really do," + }, + { + "start": 2402.8, + "duration": 0.0, + "text": "really do, um,<00:40:03.280> obviously,<00:40:03.600> there's<00:40:04.000> there<00:40:04.200> there's<00:40:04.520> a" + }, + { + "start": 2404.55, + "duration": 0.0, + "text": "um, obviously, there's there there's a" + }, + { + "start": 2404.56, + "duration": 0.0, + "text": "um, obviously, there's there there's a whole<00:40:04.800> family<00:40:05.280> of<00:40:05.440> reverse<00:40:05.760> engineering" + }, + { + "start": 2406.19, + "duration": 0.0, + "text": "whole family of reverse engineering" + }, + { + "start": 2406.2, + "duration": 0.0, + "text": "whole family of reverse engineering features<00:40:06.640> that<00:40:06.760> people<00:40:07.160> have<00:40:07.800> can<00:40:08.080> and<00:40:08.200> do<00:40:08.440> put" + }, + { + "start": 2408.59, + "duration": 0.0, + "text": "features that people have can and do put" + }, + { + "start": 2408.6, + "duration": 0.0, + "text": "features that people have can and do put into<00:40:08.800> their<00:40:08.920> debuggers.<00:40:09.960> Um,<00:40:10.320> the<00:40:10.400> rad" + }, + { + "start": 2410.55, + "duration": 0.0, + "text": "into their debuggers. Um, the rad" + }, + { + "start": 2410.56, + "duration": 0.0, + "text": "into their debuggers. Um, the rad debugger<00:40:10.800> is<00:40:10.920> more<00:40:11.480> more<00:40:11.760> focused<00:40:12.160> on<00:40:12.280> like" + }, + { + "start": 2412.51, + "duration": 0.0, + "text": "debugger is more more focused on like" + }, + { + "start": 2412.52, + "duration": 0.0, + "text": "debugger is more more focused on like the<00:40:12.600> cases<00:40:12.920> where<00:40:13.040> you<00:40:13.120> have<00:40:13.360> debug<00:40:13.640> info<00:40:13.960> cuz" + }, + { + "start": 2414.11, + "duration": 0.0, + "text": "the cases where you have debug info cuz" + }, + { + "start": 2414.12, + "duration": 0.0, + "text": "the cases where you have debug info cuz this<00:40:14.320> is,<00:40:14.520> you<00:40:14.600> know,<00:40:14.760> obviously,<00:40:15.040> it's<00:40:15.200> for" + }, + { + "start": 2415.35, + "duration": 0.0, + "text": "this is, you know, obviously, it's for" + }, + { + "start": 2415.36, + "duration": 0.0, + "text": "this is, you know, obviously, it's for game<00:40:15.600> developers.<00:40:16.320> Um,<00:40:16.640> as<00:40:16.800> a<00:40:16.960> first<00:40:18.040> as<00:40:18.200> kind" + }, + { + "start": 2418.39, + "duration": 0.0, + "text": "game developers. Um, as a first as kind" + }, + { + "start": 2418.4, + "duration": 0.0, + "text": "game developers. Um, as a first as kind of<00:40:18.440> like<00:40:18.640> the<00:40:19.160> intended<00:40:19.800> audience<00:40:20.240> or<00:40:20.440> just" + }, + { + "start": 2420.67, + "duration": 0.0, + "text": "of like the intended audience or just" + }, + { + "start": 2420.68, + "duration": 0.0, + "text": "of like the intended audience or just system<00:40:20.960> developers<00:40:21.440> working<00:40:21.720> on<00:40:21.840> system" + }, + { + "start": 2422.11, + "duration": 0.0, + "text": "system developers working on system" + }, + { + "start": 2422.12, + "duration": 0.0, + "text": "system developers working on system software.<00:40:23.200> And<00:40:23.400> so,<00:40:23.640> in<00:40:23.800> that<00:40:24.120> in<00:40:24.240> that" + }, + { + "start": 2424.39, + "duration": 0.0, + "text": "software. And so, in that in that" + }, + { + "start": 2424.4, + "duration": 0.0, + "text": "software. And so, in that in that context,<00:40:24.760> you<00:40:24.880> do<00:40:25.080> have<00:40:25.200> debug<00:40:25.480> info.<00:40:25.760> So,<00:40:25.920> we" + }, + { + "start": 2426.07, + "duration": 0.0, + "text": "context, you do have debug info. So, we" + }, + { + "start": 2426.08, + "duration": 0.0, + "text": "context, you do have debug info. So, we haven't<00:40:26.400> spent<00:40:26.600> a<00:40:26.640> lot<00:40:26.800> of<00:40:26.880> time<00:40:27.080> doing" + }, + { + "start": 2427.35, + "duration": 0.0, + "text": "haven't spent a lot of time doing" + }, + { + "start": 2427.36, + "duration": 0.0, + "text": "haven't spent a lot of time doing reverse<00:40:27.680> engineering<00:40:28.120> type<00:40:28.320> stuff<00:40:28.640> where<00:40:28.760> you" + }, + { + "start": 2428.95, + "duration": 0.0, + "text": "reverse engineering type stuff where you" + }, + { + "start": 2428.96, + "duration": 0.0, + "text": "reverse engineering type stuff where you cannot<00:40:29.320> be<00:40:29.520> guaranteed<00:40:30.000> to<00:40:30.080> have<00:40:30.280> debug<00:40:30.560> info." + }, + { + "start": 2431.59, + "duration": 0.0, + "text": "cannot be guaranteed to have debug info." + }, + { + "start": 2431.6, + "duration": 0.0, + "text": "cannot be guaranteed to have debug info. Um<00:40:32.200> you<00:40:32.320> can<00:40:32.440> still<00:40:32.600> debug,<00:40:33.240> but<00:40:33.400> it's<00:40:33.520> just" + }, + { + "start": 2433.67, + "duration": 0.0, + "text": "Um you can still debug, but it's just" + }, + { + "start": 2433.68, + "duration": 0.0, + "text": "Um you can still debug, but it's just going<00:40:33.800> to<00:40:33.880> be<00:40:34.040> hey,<00:40:34.280> you<00:40:34.360> have<00:40:34.520> disassembly," + }, + { + "start": 2435.39, + "duration": 0.0, + "text": "going to be hey, you have disassembly," + }, + { + "start": 2435.4, + "duration": 0.0, + "text": "going to be hey, you have disassembly, you<00:40:35.480> can<00:40:35.600> look<00:40:35.760> at<00:40:35.840> memory,<00:40:36.600> but<00:40:36.840> there's<00:40:37.040> no" + }, + { + "start": 2437.27, + "duration": 0.0, + "text": "you can look at memory, but there's no" + }, + { + "start": 2437.28, + "duration": 0.0, + "text": "you can look at memory, but there's no information<00:40:37.720> about<00:40:37.960> like<00:40:38.160> what<00:40:38.320> variables" + }, + { + "start": 2438.79, + "duration": 0.0, + "text": "information about like what variables" + }, + { + "start": 2438.8, + "duration": 0.0, + "text": "information about like what variables are<00:40:38.880> there<00:40:39.160> or<00:40:39.240> type<00:40:39.560> info<00:40:39.960> or<00:40:40.040> like<00:40:40.240> any<00:40:40.400> of" + }, + { + "start": 2440.47, + "duration": 0.0, + "text": "are there or type info or like any of" + }, + { + "start": 2440.48, + "duration": 0.0, + "text": "are there or type info or like any of that.<00:40:40.840> All<00:40:41.000> of<00:40:41.040> that's<00:40:41.240> not<00:40:41.440> in<00:40:41.560> there.<00:40:42.120> Um" + }, + { + "start": 2442.19, + "duration": 0.0, + "text": "that. All of that's not in there. Um" + }, + { + "start": 2442.2, + "duration": 0.0, + "text": "that. All of that's not in there. Um there's<00:40:42.360> no<00:40:42.480> line<00:40:42.760> info.<00:40:43.880> Um" + }, + { + "start": 2445.11, + "duration": 0.0, + "text": "there's no line info. Um" + }, + { + "start": 2445.12, + "duration": 0.0, + "text": "there's no line info. Um anything<00:40:45.440> like<00:40:45.600> that.<00:40:45.800> So,<00:40:46.080> if<00:40:46.200> you<00:40:46.280> don't" + }, + { + "start": 2446.43, + "duration": 0.0, + "text": "anything like that. So, if you don't" + }, + { + "start": 2446.44, + "duration": 0.0, + "text": "anything like that. So, if you don't have<00:40:46.560> debug<00:40:46.840> info,<00:40:47.160> it's<00:40:47.320> going<00:40:47.440> to<00:40:47.480> be<00:40:47.560> pretty" + }, + { + "start": 2447.83, + "duration": 0.0, + "text": "have debug info, it's going to be pretty" + }, + { + "start": 2447.84, + "duration": 0.0, + "text": "have debug info, it's going to be pretty bare-bones.<00:40:48.800> Uh<00:40:49.120> we<00:40:49.240> don't<00:40:49.400> have<00:40:49.520> a<00:40:49.560> whole<00:40:49.760> lot" + }, + { + "start": 2449.91, + "duration": 0.0, + "text": "bare-bones. Uh we don't have a whole lot" + }, + { + "start": 2449.92, + "duration": 0.0, + "text": "bare-bones. Uh we don't have a whole lot of<00:40:50.400> um" + }, + { + "start": 2451.43, + "duration": 0.0, + "text": "of um" + }, + { + "start": 2451.44, + "duration": 0.0, + "text": "of um whole<00:40:51.600> lot<00:40:51.800> of<00:40:51.960> like<00:40:52.320> reverse<00:40:52.600> engineering" + }, + { + "start": 2453.03, + "duration": 0.0, + "text": "whole lot of like reverse engineering" + }, + { + "start": 2453.04, + "duration": 0.0, + "text": "whole lot of like reverse engineering type<00:40:53.240> stuff." + }, + { + "start": 2454.27, + "duration": 0.0, + "text": "type stuff." + }, + { + "start": 2454.28, + "duration": 0.0, + "text": "type stuff. Um" + }, + { + "start": 2455.19, + "duration": 0.0, + "text": "Um" + }, + { + "start": 2455.2, + "duration": 0.0, + "text": "Um but<00:40:55.560> uh" + }, + { + "start": 2456.75, + "duration": 0.0, + "text": "but uh" + }, + { + "start": 2456.76, + "duration": 0.0, + "text": "but uh Uh<00:40:56.960> what<00:40:57.120> was<00:40:57.200> the<00:40:57.280> other<00:40:57.400> part<00:40:57.520> of<00:40:57.600> the" + }, + { + "start": 2457.63, + "duration": 0.0, + "text": "Uh what was the other part of the" + }, + { + "start": 2457.64, + "duration": 0.0, + "text": "Uh what was the other part of the question?<00:40:58.160> I<00:40:58.560> think<00:40:58.800> that<00:40:58.920> might<00:40:59.160> have" + }, + { + "start": 2459.27, + "duration": 0.0, + "text": "question? I think that might have" + }, + { + "start": 2459.28, + "duration": 0.0, + "text": "question? I think that might have covered<00:40:59.560> it,<00:40:59.640> but<00:40:59.840> if<00:41:00.000> not,<00:41:00.600> uh<00:41:00.880> let<00:41:01.000> me<00:41:01.080> know." + }, + { + "start": 2461.59, + "duration": 0.0, + "text": "covered it, but if not, uh let me know." + }, + { + "start": 2461.6, + "duration": 0.0, + "text": "covered it, but if not, uh let me know. >> I<00:41:01.680> think<00:41:01.960> that's<00:41:02.200> it.<00:41:02.600> The<00:41:03.240> that<00:41:03.440> was<00:41:03.600> the<00:41:04.040> like" + }, + { + "start": 2464.27, + "duration": 0.0, + "text": ">> I think that's it. The that was the like" + }, + { + "start": 2464.28, + "duration": 0.0, + "text": ">> I think that's it. The that was the like how<00:41:04.520> how<00:41:04.680> to<00:41:04.840> interface<00:41:05.320> with<00:41:05.520> other<00:41:05.760> things." + }, + { + "start": 2466.35, + "duration": 0.0, + "text": "how how to interface with other things." + }, + { + "start": 2466.36, + "duration": 0.0, + "text": "how how to interface with other things. I<00:41:06.520> also<00:41:06.880> put<00:41:07.080> it" + }, + { + "start": 2467.87, + "duration": 0.0, + "text": "I also put it" + }, + { + "start": 2467.88, + "duration": 0.0, + "text": "I also put it a<00:41:08.240> I<00:41:08.320> put<00:41:08.640> a<00:41:08.760> link<00:41:09.160> in<00:41:09.280> the<00:41:09.400> chat<00:41:10.160> regarding<00:41:10.600> the" + }, + { + "start": 2470.83, + "duration": 0.0, + "text": "a I put a link in the chat regarding the" + }, + { + "start": 2470.84, + "duration": 0.0, + "text": "a I put a link in the chat regarding the Q&A.<00:41:11.560> If<00:41:11.800> there's<00:41:12.120> something<00:41:12.440> that<00:41:12.640> we<00:41:12.760> missed" + }, + { + "start": 2473.75, + "duration": 0.0, + "text": "Q&A. If there's something that we missed" + }, + { + "start": 2473.76, + "duration": 0.0, + "text": "Q&A. If there's something that we missed uh<00:41:14.560> and<00:41:14.680> I<00:41:14.720> missed<00:41:15.000> through<00:41:15.120> during<00:41:15.360> the<00:41:15.480> chat," + }, + { + "start": 2475.95, + "duration": 0.0, + "text": "uh and I missed through during the chat," + }, + { + "start": 2475.96, + "duration": 0.0, + "text": "uh and I missed through during the chat, people<00:41:16.280> can<00:41:16.760> put<00:41:16.960> it<00:41:17.080> there." + }, + { + "start": 2478.23, + "duration": 0.0, + "text": "people can put it there." + }, + { + "start": 2478.24, + "duration": 0.0, + "text": "people can put it there. And" + }, + { + "start": 2478.99, + "duration": 0.0, + "text": "And" + }, + { + "start": 2479.0, + "duration": 0.0, + "text": "And >> Cool." + }, + { + "start": 2480.19, + "duration": 0.0, + "text": ">> Cool." + }, + { + "start": 2480.2, + "duration": 0.0, + "text": ">> Cool. >> Oh,<00:41:20.360> I<00:41:20.440> actually<00:41:20.760> missed<00:41:20.960> like<00:41:21.320> 50<00:41:22.240> messages" + }, + { + "start": 2482.71, + "duration": 0.0, + "text": ">> Oh, I actually missed like 50 messages" + }, + { + "start": 2482.72, + "duration": 0.0, + "text": ">> Oh, I actually missed like 50 messages now<00:41:22.880> because<00:41:23.240> my<00:41:23.840> my<00:41:24.000> YouTube<00:41:24.520> my<00:41:24.640> YouTube" + }, + { + "start": 2484.95, + "duration": 0.0, + "text": "now because my my YouTube my YouTube" + }, + { + "start": 2484.96, + "duration": 0.0, + "text": "now because my my YouTube my YouTube chat<00:41:25.200> was<00:41:25.360> frozen.<00:41:26.160> So," + }, + { + "start": 2487.35, + "duration": 0.0, + "text": "chat was frozen. So," + }, + { + "start": 2487.36, + "duration": 0.0, + "text": "chat was frozen. So, you<00:41:27.480> can<00:41:27.800> you<00:41:27.880> can<00:41:28.080> put<00:41:28.320> those<00:41:28.600> in<00:41:29.120> and" + }, + { + "start": 2490.15, + "duration": 0.0, + "text": "you can you can put those in and" + }, + { + "start": 2490.16, + "duration": 0.0, + "text": "you can you can put those in and uh<00:41:30.280> we<00:41:30.440> will<00:41:30.560> come<00:41:30.800> back<00:41:31.200> maybe<00:41:31.440> in<00:41:31.560> the<00:41:31.680> end." + }, + { + "start": 2492.51, + "duration": 0.0, + "text": "uh we will come back maybe in the end." + }, + { + "start": 2492.52, + "duration": 0.0, + "text": "uh we will come back maybe in the end. >> Um" + }, + { + "start": 2493.07, + "duration": 0.0, + "text": ">> Um" + }, + { + "start": 2493.08, + "duration": 0.0, + "text": ">> Um >> Cool." + }, + { + "start": 2494.258, + "duration": 0.0, + "text": ">> Cool." + }, + { + "start": 2494.268, + "duration": 0.0, + "text": ">> Cool. >> [snorts]" + }, + { + "start": 2494.27, + "duration": 0.0, + "text": ">> [snorts]" + }, + { + "start": 2494.28, + "duration": 0.0, + "text": ">> [snorts] >> Nice." + }, + { + "start": 2495.55, + "duration": 0.0, + "text": ">> Nice." + }, + { + "start": 2495.56, + "duration": 0.0, + "text": ">> Nice. Now," + }, + { + "start": 2496.35, + "duration": 0.0, + "text": "Now," + }, + { + "start": 2496.36, + "duration": 0.0, + "text": "Now, >> Yeah." + }, + { + "start": 2496.87, + "duration": 0.0, + "text": ">> Yeah." + }, + { + "start": 2496.88, + "duration": 0.0, + "text": ">> Yeah. >> is<00:41:37.080> this" + }, + { + "start": 2497.43, + "duration": 0.0, + "text": ">> is this" + }, + { + "start": 2497.44, + "duration": 0.0, + "text": ">> is this >> Oh,<00:41:37.520> I<00:41:37.560> guess<00:41:37.760> I<00:41:37.840> should" + }, + { + "start": 2498.47, + "duration": 0.0, + "text": ">> Oh, I guess I should" + }, + { + "start": 2498.48, + "duration": 0.0, + "text": ">> Oh, I guess I should >> Yeah." + }, + { + "start": 2499.15, + "duration": 0.0, + "text": ">> Yeah." + }, + { + "start": 2499.16, + "duration": 0.0, + "text": ">> Yeah. >> Well,<00:41:39.560> yes.<00:41:39.960> Okay,<00:41:40.200> so<00:41:40.400> one<00:41:40.640> more<00:41:40.840> thing<00:41:41.120> I" + }, + { + "start": 2501.19, + "duration": 0.0, + "text": ">> Well, yes. Okay, so one more thing I" + }, + { + "start": 2501.2, + "duration": 0.0, + "text": ">> Well, yes. Okay, so one more thing I should<00:41:41.400> probably<00:41:41.760> do<00:41:42.480> is<00:41:42.680> show<00:41:43.400> one<00:41:43.760> Maybe" + }, + { + "start": 2503.99, + "duration": 0.0, + "text": "should probably do is show one Maybe" + }, + { + "start": 2504.0, + "duration": 0.0, + "text": "should probably do is show one Maybe this<00:41:44.160> is<00:41:44.240> related<00:41:44.560> to<00:41:44.640> that<00:41:44.800> question,<00:41:45.160> but<00:41:45.480> um" + }, + { + "start": 2505.71, + "duration": 0.0, + "text": "this is related to that question, but um" + }, + { + "start": 2505.72, + "duration": 0.0, + "text": "this is related to that question, but um cross-language<00:41:46.480> support.<00:41:47.560> Um<00:41:48.360> so,<00:41:48.960> uh" + }, + { + "start": 2509.51, + "duration": 0.0, + "text": "cross-language support. Um so, uh" + }, + { + "start": 2509.52, + "duration": 0.0, + "text": "cross-language support. Um so, uh like<00:41:49.720> for<00:41:49.880> example,<00:41:50.240> if<00:41:50.320> I<00:41:50.400> wanted<00:41:50.600> to<00:41:50.680> debug" + }, + { + "start": 2511.15, + "duration": 0.0, + "text": "like for example, if I wanted to debug" + }, + { + "start": 2511.16, + "duration": 0.0, + "text": "like for example, if I wanted to debug like<00:41:51.440> JAI,<00:41:52.240> for<00:41:52.360> example,<00:41:53.400> um<00:41:54.280> this<00:41:54.440> uses<00:41:54.760> the" + }, + { + "start": 2514.87, + "duration": 0.0, + "text": "like JAI, for example, um this uses the" + }, + { + "start": 2514.88, + "duration": 0.0, + "text": "like JAI, for example, um this uses the same<00:41:55.240> type<00:41:55.520> of<00:41:55.600> debug<00:41:55.880> info<00:41:56.200> that<00:41:57.040> uh<00:41:57.440> like<00:41:57.720> C" + }, + { + "start": 2517.95, + "duration": 0.0, + "text": "same type of debug info that uh like C" + }, + { + "start": 2517.96, + "duration": 0.0, + "text": "same type of debug info that uh like C and<00:41:58.080> C++<00:41:58.520> do.<00:41:59.120> So,<00:41:59.440> the<00:41:59.880> the<00:41:59.960> JAI<00:42:00.280> compiler" + }, + { + "start": 2521.67, + "duration": 0.0, + "text": "and C++ do. So, the the JAI compiler" + }, + { + "start": 2521.68, + "duration": 0.0, + "text": "and C++ do. So, the the JAI compiler produces<00:42:02.520> uh<00:42:02.720> code<00:42:02.960> view<00:42:03.080> data,<00:42:03.440> which<00:42:03.920> um<00:42:04.280> I" + }, + { + "start": 2524.31, + "duration": 0.0, + "text": "produces uh code view data, which um I" + }, + { + "start": 2524.32, + "duration": 0.0, + "text": "produces uh code view data, which um I think<00:42:04.520> it<00:42:04.640> uses<00:42:05.160> the<00:42:05.280> MSVC<00:42:05.720> linker.<00:42:06.520> And<00:42:06.640> so," + }, + { + "start": 2526.75, + "duration": 0.0, + "text": "think it uses the MSVC linker. And so," + }, + { + "start": 2526.76, + "duration": 0.0, + "text": "think it uses the MSVC linker. And so, the<00:42:06.840> linker<00:42:07.160> will<00:42:07.400> stitch<00:42:07.680> those<00:42:07.880> together" + }, + { + "start": 2528.11, + "duration": 0.0, + "text": "the linker will stitch those together" + }, + { + "start": 2528.12, + "duration": 0.0, + "text": "the linker will stitch those together and<00:42:08.240> form<00:42:08.440> a<00:42:08.480> PDB,<00:42:09.000> which<00:42:09.200> the<00:42:09.280> debugger<00:42:09.600> knows" + }, + { + "start": 2529.75, + "duration": 0.0, + "text": "and form a PDB, which the debugger knows" + }, + { + "start": 2529.76, + "duration": 0.0, + "text": "and form a PDB, which the debugger knows how<00:42:09.840> to<00:42:09.920> work<00:42:10.120> with.<00:42:10.320> So,<00:42:11.080> if<00:42:11.200> I<00:42:11.240> have<00:42:11.360> a<00:42:11.400> JAI" + }, + { + "start": 2531.83, + "duration": 0.0, + "text": "how to work with. So, if I have a JAI" + }, + { + "start": 2531.84, + "duration": 0.0, + "text": "how to work with. So, if I have a JAI executable,<00:42:12.400> like<00:42:12.560> this<00:42:12.680> is<00:42:12.760> the<00:42:12.880> JAI" + }, + { + "start": 2533.31, + "duration": 0.0, + "text": "executable, like this is the JAI" + }, + { + "start": 2533.32, + "duration": 0.0, + "text": "executable, like this is the JAI Invaders,<00:42:14.200> um" + }, + { + "start": 2535.63, + "duration": 0.0, + "text": "Invaders, um" + }, + { + "start": 2535.64, + "duration": 0.0, + "text": "Invaders, um this<00:42:16.200> uh<00:42:16.320> this<00:42:16.480> also<00:42:16.680> just<00:42:16.920> works." + }, + { + "start": 2537.87, + "duration": 0.0, + "text": "this uh this also just works." + }, + { + "start": 2537.88, + "duration": 0.0, + "text": "this uh this also just works. Um<00:42:18.280> so,<00:42:18.640> here's<00:42:19.000> just<00:42:19.200> the<00:42:19.280> JAI<00:42:19.680> code,<00:42:20.080> and" + }, + { + "start": 2540.19, + "duration": 0.0, + "text": "Um so, here's just the JAI code, and" + }, + { + "start": 2540.2, + "duration": 0.0, + "text": "Um so, here's just the JAI code, and here's<00:42:20.840> me<00:42:21.040> stepping<00:42:21.360> through<00:42:21.600> it,<00:42:21.880> you<00:42:21.920> know," + }, + { + "start": 2542.27, + "duration": 0.0, + "text": "here's me stepping through it, you know," + }, + { + "start": 2542.28, + "duration": 0.0, + "text": "here's me stepping through it, you know, normal<00:42:22.560> stuff." + }, + { + "start": 2543.71, + "duration": 0.0, + "text": "normal stuff." + }, + { + "start": 2543.72, + "duration": 0.0, + "text": "normal stuff. And<00:42:23.840> those<00:42:24.000> type<00:42:24.280> views<00:42:24.560> come<00:42:24.720> in<00:42:24.840> handy<00:42:25.200> with" + }, + { + "start": 2545.67, + "duration": 0.0, + "text": "And those type views come in handy with" + }, + { + "start": 2545.68, + "duration": 0.0, + "text": "And those type views come in handy with uh<00:42:25.920> with<00:42:26.360> languages<00:42:26.800> like<00:42:27.000> JAI<00:42:27.640> because<00:42:28.240> um<00:42:28.840> if" + }, + { + "start": 2548.99, + "duration": 0.0, + "text": "uh with languages like JAI because um if" + }, + { + "start": 2549.0, + "duration": 0.0, + "text": "uh with languages like JAI because um if I<00:42:29.080> were<00:42:29.200> to<00:42:29.280> evaluate<00:42:29.760> strings<00:42:30.200> like<00:42:30.520> uh<00:42:30.600> we" + }, + { + "start": 2550.71, + "duration": 0.0, + "text": "I were to evaluate strings like uh we" + }, + { + "start": 2550.72, + "duration": 0.0, + "text": "I were to evaluate strings like uh we have<00:42:30.800> this<00:42:30.960> base<00:42:31.480> base<00:42:31.760> path<00:42:32.640> thing,<00:42:33.000> you<00:42:33.080> can" + }, + { + "start": 2553.19, + "duration": 0.0, + "text": "have this base base path thing, you can" + }, + { + "start": 2553.2, + "duration": 0.0, + "text": "have this base base path thing, you can see<00:42:33.360> it's<00:42:33.520> like<00:42:34.280> the<00:42:34.360> way<00:42:34.480> these<00:42:34.720> languages" + }, + { + "start": 2555.15, + "duration": 0.0, + "text": "see it's like the way these languages" + }, + { + "start": 2555.16, + "duration": 0.0, + "text": "see it's like the way these languages generate<00:42:35.760> these<00:42:36.560> uh<00:42:36.680> like" + }, + { + "start": 2557.43, + "duration": 0.0, + "text": "generate these uh like" + }, + { + "start": 2557.44, + "duration": 0.0, + "text": "generate these uh like string<00:42:37.720> variables,<00:42:38.040> like<00:42:38.160> generally<00:42:38.480> these" + }, + { + "start": 2558.59, + "duration": 0.0, + "text": "string variables, like generally these" + }, + { + "start": 2558.6, + "duration": 0.0, + "text": "string variables, like generally these languages<00:42:38.960> will<00:42:39.080> first-class<00:42:39.600> strings,<00:42:39.960> but" + }, + { + "start": 2560.63, + "duration": 0.0, + "text": "languages will first-class strings, but" + }, + { + "start": 2560.64, + "duration": 0.0, + "text": "languages will first-class strings, but because<00:42:40.880> they're<00:42:41.040> not<00:42:41.480> um<00:42:41.960> living<00:42:42.600> under<00:42:43.000> a" + }, + { + "start": 2563.07, + "duration": 0.0, + "text": "because they're not um living under a" + }, + { + "start": 2563.08, + "duration": 0.0, + "text": "because they're not um living under a rock,<00:42:43.360> they<00:42:43.480> know<00:42:43.640> to<00:42:43.760> make<00:42:43.960> them" + }, + { + "start": 2564.59, + "duration": 0.0, + "text": "rock, they know to make them" + }, + { + "start": 2564.6, + "duration": 0.0, + "text": "rock, they know to make them length-based<00:42:45.280> strings,<00:42:45.720> right?<00:42:45.920> So,<00:42:46.480> uh<00:42:46.600> JAI" + }, + { + "start": 2566.95, + "duration": 0.0, + "text": "length-based strings, right? So, uh JAI" + }, + { + "start": 2566.96, + "duration": 0.0, + "text": "length-based strings, right? So, uh JAI does<00:42:47.160> this.<00:42:47.360> It's<00:42:47.480> like<00:42:47.640> when<00:42:47.800> you<00:42:47.920> use<00:42:48.120> string" + }, + { + "start": 2568.35, + "duration": 0.0, + "text": "does this. It's like when you use string" + }, + { + "start": 2568.36, + "duration": 0.0, + "text": "does this. It's like when you use string literals,<00:42:48.760> it<00:42:48.840> just<00:42:49.040> returns<00:42:49.400> you<00:42:49.560> a<00:42:49.600> type<00:42:49.960> of" + }, + { + "start": 2570.19, + "duration": 0.0, + "text": "literals, it just returns you a type of" + }, + { + "start": 2570.2, + "duration": 0.0, + "text": "literals, it just returns you a type of this<00:42:50.600> string<00:42:50.920> structure.<00:42:51.880> And<00:42:51.960> that<00:42:52.080> has<00:42:52.200> a" + }, + { + "start": 2572.23, + "duration": 0.0, + "text": "this string structure. And that has a" + }, + { + "start": 2572.24, + "duration": 0.0, + "text": "this string structure. And that has a count<00:42:52.920> and<00:42:53.040> a<00:42:53.080> data,<00:42:53.720> which<00:42:53.920> means<00:42:54.480> we<00:42:54.600> can<00:42:54.720> do" + }, + { + "start": 2575.43, + "duration": 0.0, + "text": "count and a data, which means we can do" + }, + { + "start": 2575.44, + "duration": 0.0, + "text": "count and a data, which means we can do um" + }, + { + "start": 2576.35, + "duration": 0.0, + "text": "um" + }, + { + "start": 2576.36, + "duration": 0.0, + "text": "um uh<00:42:56.600> we<00:42:56.720> can<00:42:56.840> basically<00:42:57.240> do,<00:42:57.560> \"Hey,<00:42:57.840> array" + }, + { + "start": 2578.39, + "duration": 0.0, + "text": "uh we can basically do, \"Hey, array" + }, + { + "start": 2578.4, + "duration": 0.0, + "text": "uh we can basically do, \"Hey, array basepath.data.\"" + }, + { + "start": 2580.15, + "duration": 0.0, + "text": "basepath.data.\"" + }, + { + "start": 2580.16, + "duration": 0.0, + "text": "basepath.data.\" Um" + }, + { + "start": 2581.43, + "duration": 0.0, + "text": "Um" + }, + { + "start": 2581.44, + "duration": 0.0, + "text": "Um and<00:43:01.560> then<00:43:01.720> basepath.count" + }, + { + "start": 2583.27, + "duration": 0.0, + "text": "and then basepath.count" + }, + { + "start": 2583.28, + "duration": 0.0, + "text": "and then basepath.count if<00:43:03.400> we<00:43:03.520> want<00:43:03.720> to,<00:43:04.440> and<00:43:04.560> that'll<00:43:04.760> just<00:43:04.960> show<00:43:05.200> us" + }, + { + "start": 2585.43, + "duration": 0.0, + "text": "if we want to, and that'll just show us" + }, + { + "start": 2585.44, + "duration": 0.0, + "text": "if we want to, and that'll just show us just<00:43:05.640> the<00:43:05.720> string<00:43:05.960> literal<00:43:06.880> when<00:43:07.080> we<00:43:07.160> evaluate" + }, + { + "start": 2587.63, + "duration": 0.0, + "text": "just the string literal when we evaluate" + }, + { + "start": 2587.64, + "duration": 0.0, + "text": "just the string literal when we evaluate it<00:43:07.840> in<00:43:07.960> the<00:43:08.040> watch<00:43:08.240> window." + }, + { + "start": 2589.51, + "duration": 0.0, + "text": "it in the watch window." + }, + { + "start": 2589.52, + "duration": 0.0, + "text": "it in the watch window. And<00:43:09.680> then,<00:43:10.040> so<00:43:10.760> I<00:43:10.880> showed<00:43:11.200> how<00:43:11.320> to<00:43:11.440> embed<00:43:11.960> type" + }, + { + "start": 2592.19, + "duration": 0.0, + "text": "And then, so I showed how to embed type" + }, + { + "start": 2592.2, + "duration": 0.0, + "text": "And then, so I showed how to embed type views<00:43:12.480> into<00:43:12.760> the<00:43:12.960> executables<00:43:13.480> themselves," + }, + { + "start": 2594.03, + "duration": 0.0, + "text": "views into the executables themselves," + }, + { + "start": 2594.04, + "duration": 0.0, + "text": "views into the executables themselves, but<00:43:14.160> you<00:43:14.200> can<00:43:14.320> also<00:43:14.480> do<00:43:14.600> this<00:43:14.720> dynamically<00:43:15.240> in" + }, + { + "start": 2595.35, + "duration": 0.0, + "text": "but you can also do this dynamically in" + }, + { + "start": 2595.36, + "duration": 0.0, + "text": "but you can also do this dynamically in the<00:43:15.440> debugger<00:43:15.800> UI.<00:43:16.440> So,<00:43:16.560> if<00:43:16.680> I<00:43:16.760> did<00:43:17.200> uh<00:43:17.280> I<00:43:17.360> can" + }, + { + "start": 2597.47, + "duration": 0.0, + "text": "the debugger UI. So, if I did uh I can" + }, + { + "start": 2597.48, + "duration": 0.0, + "text": "the debugger UI. So, if I did uh I can open<00:43:17.640> up<00:43:17.720> the<00:43:17.800> type<00:43:18.040> views<00:43:18.280> tab," + }, + { + "start": 2599.47, + "duration": 0.0, + "text": "open up the type views tab," + }, + { + "start": 2599.48, + "duration": 0.0, + "text": "open up the type views tab, which<00:43:19.680> is<00:43:19.760> also<00:43:20.000> a<00:43:20.040> watch<00:43:20.240> window,<00:43:20.920> and<00:43:21.040> we<00:43:21.120> can" + }, + { + "start": 2601.23, + "duration": 0.0, + "text": "which is also a watch window, and we can" + }, + { + "start": 2601.24, + "duration": 0.0, + "text": "which is also a watch window, and we can say,<00:43:21.560> \"Hey,<00:43:21.800> like<00:43:22.000> this<00:43:22.240> string<00:43:22.920> type,<00:43:23.280> I<00:43:23.360> just" + }, + { + "start": 2603.63, + "duration": 0.0, + "text": "say, \"Hey, like this string type, I just" + }, + { + "start": 2603.64, + "duration": 0.0, + "text": "say, \"Hey, like this string type, I just always<00:43:24.000> want<00:43:24.120> to<00:43:24.200> do<00:43:24.440> array,<00:43:25.080> and<00:43:25.200> then<00:43:25.360> what" + }, + { + "start": 2605.47, + "duration": 0.0, + "text": "always want to do array, and then what" + }, + { + "start": 2605.48, + "duration": 0.0, + "text": "always want to do array, and then what is<00:43:25.680> the<00:43:25.920> what<00:43:26.040> is<00:43:26.120> the<00:43:26.200> member<00:43:26.480> called<00:43:26.760> here?\"" + }, + { + "start": 2607.51, + "duration": 0.0, + "text": "is the what is the member called here?\"" + }, + { + "start": 2607.52, + "duration": 0.0, + "text": "is the what is the member called here?\" It's<00:43:27.800> um" + }, + { + "start": 2608.55, + "duration": 0.0, + "text": "It's um" + }, + { + "start": 2608.56, + "duration": 0.0, + "text": "It's um >> Data<00:43:29.200> and<00:43:29.320> count." + }, + { + "start": 2610.35, + "duration": 0.0, + "text": ">> Data and count." + }, + { + "start": 2610.36, + "duration": 0.0, + "text": ">> Data and count. >> Data<00:43:30.640> and<00:43:30.760> count,<00:43:31.040> so<00:43:31.120> I<00:43:31.160> can<00:43:31.280> do,<00:43:31.440> \"Hey,<00:43:31.760> array" + }, + { + "start": 2612.19, + "duration": 0.0, + "text": ">> Data and count, so I can do, \"Hey, array" + }, + { + "start": 2612.2, + "duration": 0.0, + "text": ">> Data and count, so I can do, \"Hey, array data<00:43:32.760> count.\"" + }, + { + "start": 2615.07, + "duration": 0.0, + "text": "data count.\"" + }, + { + "start": 2615.08, + "duration": 0.0, + "text": "data count.\" And<00:43:35.280> so,<00:43:35.520> now<00:43:35.920> if<00:43:36.080> I<00:43:36.160> do,<00:43:36.480> \"Hey,<00:43:36.640> basepath," + }, + { + "start": 2617.39, + "duration": 0.0, + "text": "And so, now if I do, \"Hey, basepath," + }, + { + "start": 2617.4, + "duration": 0.0, + "text": "And so, now if I do, \"Hey, basepath, what<00:43:37.520> is<00:43:37.640> that?\"<00:43:38.080> It's<00:43:38.200> just<00:43:38.360> going<00:43:38.480> to<00:43:38.560> show" + }, + { + "start": 2618.75, + "duration": 0.0, + "text": "what is that?\" It's just going to show" + }, + { + "start": 2618.76, + "duration": 0.0, + "text": "what is that?\" It's just going to show me<00:43:38.960> the<00:43:39.080> string.<00:43:39.880> Um" + }, + { + "start": 2622.19, + "duration": 0.0, + "text": "me the string. Um" + }, + { + "start": 2622.2, + "duration": 0.0, + "text": "me the string. Um uh" + }, + { + "start": 2622.75, + "duration": 0.0, + "text": "uh" + }, + { + "start": 2622.76, + "duration": 0.0, + "text": "uh Same<00:43:43.000> thing<00:43:43.120> with<00:43:43.200> like<00:43:43.360> slices,<00:43:43.880> for" + }, + { + "start": 2623.99, + "duration": 0.0, + "text": "Same thing with like slices, for" + }, + { + "start": 2624.0, + "duration": 0.0, + "text": "Same thing with like slices, for example,<00:43:44.400> like<00:43:44.560> if<00:43:44.680> I<00:43:44.720> wanted<00:43:44.960> to<00:43:45.040> do,<00:43:45.200> \"Hey," + }, + { + "start": 2625.43, + "duration": 0.0, + "text": "example, like if I wanted to do, \"Hey," + }, + { + "start": 2625.44, + "duration": 0.0, + "text": "example, like if I wanted to do, \"Hey, like<00:43:45.680> let's<00:43:45.920> do<00:43:46.200> every<00:43:46.440> time<00:43:46.720> we<00:43:46.840> have<00:43:47.920> a<00:43:48.960> uh<00:43:49.320> a" + }, + { + "start": 2629.39, + "duration": 0.0, + "text": "like let's do every time we have a uh a" + }, + { + "start": 2629.4, + "duration": 0.0, + "text": "like let's do every time we have a uh a slice<00:43:49.880> type," + }, + { + "start": 2633.4, + "duration": 0.0, + "text": "um<00:43:54.080> now<00:43:54.200> I<00:43:54.240> don't<00:43:54.440> actually<00:43:54.680> know<00:43:54.840> what<00:43:54.920> the" + }, + { + "start": 2634.99, + "duration": 0.0, + "text": "um now I don't actually know what the" + }, + { + "start": 2635.0, + "duration": 0.0, + "text": "um now I don't actually know what the type<00:43:55.200> info<00:43:55.440> for<00:43:55.560> these<00:43:55.800> look<00:43:56.000> like,<00:43:56.200> so<00:43:56.720> I<00:43:56.800> feel" + }, + { + "start": 2637.11, + "duration": 0.0, + "text": "type info for these look like, so I feel" + }, + { + "start": 2637.12, + "duration": 0.0, + "text": "type info for these look like, so I feel >> Slice<00:43:57.520> slice<00:43:58.000> is<00:43:58.200> just<00:43:58.640> the<00:43:59.000> brackets<00:43:59.720> without" + }, + { + "start": 2640.07, + "duration": 0.0, + "text": ">> Slice slice is just the brackets without" + }, + { + "start": 2640.08, + "duration": 0.0, + "text": ">> Slice slice is just the brackets without anything,<00:44:00.720> and<00:44:00.880> if<00:44:01.000> you<00:44:01.120> put<00:44:01.320> in" + }, + { + "start": 2641.71, + "duration": 0.0, + "text": "anything, and if you put in" + }, + { + "start": 2641.72, + "duration": 0.0, + "text": "anything, and if you put in >> Oh,<00:44:01.840> you<00:44:02.040> thought<00:44:02.280> yeah,<00:44:02.480> you<00:44:02.600> thought<00:44:03.160> you" + }, + { + "start": 2643.19, + "duration": 0.0, + "text": ">> Oh, you thought yeah, you thought you" + }, + { + "start": 2643.2, + "duration": 0.0, + "text": ">> Oh, you thought yeah, you thought you thought<00:44:03.360> JAI,<00:44:03.880> yeah." + }, + { + "start": 2644.03, + "duration": 0.0, + "text": "thought JAI, yeah." + }, + { + "start": 2644.04, + "duration": 0.0, + "text": "thought JAI, yeah. >> It's<00:44:04.200> the<00:44:04.265> [laughter]<00:44:04.320> dynamic." + }, + { + "start": 2644.99, + "duration": 0.0, + "text": ">> It's the [laughter] dynamic." + }, + { + "start": 2645.0, + "duration": 0.0, + "text": ">> It's the [laughter] dynamic. >> Yeah,<00:44:05.120> but<00:44:05.320> is<00:44:05.440> dynamic,<00:44:05.920> actually.<00:44:06.200> Okay," + }, + { + "start": 2646.47, + "duration": 0.0, + "text": ">> Yeah, but is dynamic, actually. Okay," + }, + { + "start": 2646.48, + "duration": 0.0, + "text": ">> Yeah, but is dynamic, actually. Okay, yeah.<00:44:06.720> So,<00:44:07.120> if<00:44:07.240> I<00:44:07.320> did<00:44:07.560> this,<00:44:08.560> uh<00:44:08.640> I<00:44:08.680> don't<00:44:08.920> know" + }, + { + "start": 2649.03, + "duration": 0.0, + "text": "yeah. So, if I did this, uh I don't know" + }, + { + "start": 2649.04, + "duration": 0.0, + "text": "yeah. So, if I did this, uh I don't know if<00:44:09.160> this<00:44:09.400> is<00:44:09.560> a<00:44:09.640> good<00:44:09.760> example<00:44:10.240> in<00:44:10.320> this." + }, + { + "start": 2651.47, + "duration": 0.0, + "text": "if this is a good example in this." + }, + { + "start": 2651.48, + "duration": 0.0, + "text": "if this is a good example in this. Uh<00:44:11.960> oh,<00:44:12.120> like<00:44:12.400> invader<00:44:12.800> maps.<00:44:13.680> I<00:44:13.760> guess<00:44:13.920> that's" + }, + { + "start": 2654.07, + "duration": 0.0, + "text": "Uh oh, like invader maps. I guess that's" + }, + { + "start": 2654.08, + "duration": 0.0, + "text": "Uh oh, like invader maps. I guess that's a<00:44:14.120> dynamic<00:44:14.560> array.<00:44:14.720> So,<00:44:14.880> invader" + }, + { + "start": 2656.87, + "duration": 0.0, + "text": "a dynamic array. So, invader" + }, + { + "start": 2656.88, + "duration": 0.0, + "text": "a dynamic array. So, invader invader<00:44:17.200> maps.<00:44:17.480> Let<00:44:17.600> me<00:44:17.680> just<00:44:17.800> make<00:44:17.960> sure<00:44:18.080> that" + }, + { + "start": 2658.19, + "duration": 0.0, + "text": "invader maps. Let me just make sure that" + }, + { + "start": 2658.2, + "duration": 0.0, + "text": "invader maps. Let me just make sure that this<00:44:18.360> is<00:44:18.480> non-zero<00:44:19.120> at<00:44:19.240> some<00:44:19.440> point.<00:44:20.080> Um" + }, + { + "start": 2662.76, + "duration": 0.0, + "text": "Like<00:44:22.840> if<00:44:22.960> I<00:44:23.080> go<00:44:23.320> through<00:44:23.560> here," + }, + { + "start": 2664.71, + "duration": 0.0, + "text": "Like if I go through here," + }, + { + "start": 2664.72, + "duration": 0.0, + "text": "Like if I go through here, is<00:44:24.760> it<00:44:24.840> going<00:44:24.960> to<00:44:25.040> load<00:44:25.280> the<00:44:25.360> maps<00:44:25.680> at<00:44:25.760> some" + }, + { + "start": 2665.91, + "duration": 0.0, + "text": "is it going to load the maps at some" + }, + { + "start": 2665.92, + "duration": 0.0, + "text": "is it going to load the maps at some point?" + }, + { + "start": 2668.19, + "duration": 0.0, + "text": "point?" + }, + { + "start": 2668.2, + "duration": 0.0, + "text": "point? Oh,<00:44:28.400> yeah,<00:44:28.640> okay.<00:44:28.880> Invader<00:44:29.160> maps<00:44:29.440> count<00:44:29.760> for" + }, + { + "start": 2670.19, + "duration": 0.0, + "text": "Oh, yeah, okay. Invader maps count for" + }, + { + "start": 2670.2, + "duration": 0.0, + "text": "Oh, yeah, okay. Invader maps count for Okay,<00:44:30.400> so<00:44:30.520> we'll<00:44:30.640> do" + }, + { + "start": 2671.63, + "duration": 0.0, + "text": "Okay, so we'll do" + }, + { + "start": 2671.64, + "duration": 0.0, + "text": "Okay, so we'll do um" + }, + { + "start": 2672.87, + "duration": 0.0, + "text": "um" + }, + { + "start": 2672.88, + "duration": 0.0, + "text": "um data<00:44:33.160> and<00:44:33.280> count<00:44:33.680> is<00:44:34.040> all<00:44:34.160> we<00:44:34.280> need.<00:44:34.680> So,<00:44:34.800> we" + }, + { + "start": 2674.87, + "duration": 0.0, + "text": "data and count is all we need. So, we" + }, + { + "start": 2674.88, + "duration": 0.0, + "text": "data and count is all we need. So, we can<00:44:35.000> go<00:44:35.120> ahead<00:44:35.280> and<00:44:35.400> do,<00:44:35.640> \"Hey," + }, + { + "start": 2678.32, + "duration": 0.0, + "text": "um" + }, + { + "start": 2679.55, + "duration": 0.0, + "text": "um" + }, + { + "start": 2679.56, + "duration": 0.0, + "text": "um we'll<00:44:39.640> do<00:44:39.800> array" + }, + { + "start": 2680.99, + "duration": 0.0, + "text": "we'll do array" + }, + { + "start": 2681.0, + "duration": 0.0, + "text": "we'll do array data" + }, + { + "start": 2682.07, + "duration": 0.0, + "text": "data" + }, + { + "start": 2682.08, + "duration": 0.0, + "text": "data and<00:44:42.160> count." + }, + { + "start": 2683.55, + "duration": 0.0, + "text": "and count." + }, + { + "start": 2683.56, + "duration": 0.0, + "text": "and count. And<00:44:43.600> there<00:44:43.720> we<00:44:43.800> go." + }, + { + "start": 2685.51, + "duration": 0.0, + "text": "And there we go." + }, + { + "start": 2685.52, + "duration": 0.0, + "text": "And there we go. So,<00:44:45.600> now<00:44:45.760> we<00:44:45.840> just<00:44:46.040> get<00:44:46.160> the<00:44:46.240> array<00:44:46.440> view." + }, + { + "start": 2687.39, + "duration": 0.0, + "text": "So, now we just get the array view." + }, + { + "start": 2687.4, + "duration": 0.0, + "text": "So, now we just get the array view. Nice." + }, + { + "start": 2687.95, + "duration": 0.0, + "text": "Nice." + }, + { + "start": 2687.96, + "duration": 0.0, + "text": "Nice. >> So," + }, + { + "start": 2689.35, + "duration": 0.0, + "text": ">> So," + }, + { + "start": 2689.36, + "duration": 0.0, + "text": ">> So, Uh<00:44:49.640> so,<00:44:49.800> yeah.<00:44:50.320> That's<00:44:50.640> um" + }, + { + "start": 2692.03, + "duration": 0.0, + "text": "Uh so, yeah. That's um" + }, + { + "start": 2692.04, + "duration": 0.0, + "text": "Uh so, yeah. That's um You<00:44:52.080> can<00:44:52.200> see<00:44:52.360> unit<00:44:52.640> color." + }, + { + "start": 2694.03, + "duration": 0.0, + "text": "You can see unit color." + }, + { + "start": 2694.04, + "duration": 0.0, + "text": "You can see unit color. Uh<00:44:54.120> well,<00:44:54.440> I<00:44:54.520> don't<00:44:54.760> want<00:44:54.880> to<00:44:54.920> put<00:44:55.080> it<00:44:55.200> that" + }, + { + "start": 2695.43, + "duration": 0.0, + "text": "Uh well, I don't want to put it that" + }, + { + "start": 2695.44, + "duration": 0.0, + "text": "Uh well, I don't want to put it that onto<00:44:55.640> a<00:44:55.680> vector<00:44:55.960> four,<00:44:56.200> cuz<00:44:56.320> that's<00:44:56.520> a<00:44:56.600> general" + }, + { + "start": 2697.39, + "duration": 0.0, + "text": "onto a vector four, cuz that's a general" + }, + { + "start": 2697.4, + "duration": 0.0, + "text": "onto a vector four, cuz that's a general general<00:44:57.720> type.<00:44:58.000> But,<00:44:58.400> yeah,<00:44:58.600> anyways." + }, + { + "start": 2699.55, + "duration": 0.0, + "text": "general type. But, yeah, anyways." + }, + { + "start": 2699.56, + "duration": 0.0, + "text": "general type. But, yeah, anyways. Um" + }, + { + "start": 2700.11, + "duration": 0.0, + "text": "Um" + }, + { + "start": 2700.12, + "duration": 0.0, + "text": "Um So,<00:45:00.240> yeah,<00:45:00.320> that's<00:45:00.480> probably<00:45:00.680> a<00:45:00.720> good<00:45:00.840> place" + }, + { + "start": 2700.99, + "duration": 0.0, + "text": "So, yeah, that's probably a good place" + }, + { + "start": 2701.0, + "duration": 0.0, + "text": "So, yeah, that's probably a good place to<00:45:01.120> stop.<00:45:01.480> Um<00:45:01.680> I<00:45:01.760> guess<00:45:02.000> the<00:45:02.400> the" + }, + { + "start": 2704.67, + "duration": 0.0, + "text": "to stop. Um I guess the the" + }, + { + "start": 2704.68, + "duration": 0.0, + "text": "to stop. Um I guess the the I<00:45:04.720> can<00:45:04.840> also<00:45:05.040> do<00:45:05.200> Odin<00:45:05.720> as<00:45:05.880> well.<00:45:06.000> Since<00:45:06.200> I" + }, + { + "start": 2706.23, + "duration": 0.0, + "text": "I can also do Odin as well. Since I" + }, + { + "start": 2706.24, + "duration": 0.0, + "text": "I can also do Odin as well. Since I showed<00:45:06.440> Jai,<00:45:06.680> I<00:45:06.800> can<00:45:06.960> show<00:45:07.120> Odin." + }, + { + "start": 2708.15, + "duration": 0.0, + "text": "showed Jai, I can show Odin." + }, + { + "start": 2708.16, + "duration": 0.0, + "text": "showed Jai, I can show Odin. Here's<00:45:08.320> the<00:45:08.400> Odin<00:45:08.880> example<00:45:09.240> program." + }, + { + "start": 2710.47, + "duration": 0.0, + "text": "Here's the Odin example program." + }, + { + "start": 2710.48, + "duration": 0.0, + "text": "Here's the Odin example program. Um" + }, + { + "start": 2711.35, + "duration": 0.0, + "text": "Um" + }, + { + "start": 2711.36, + "duration": 0.0, + "text": "Um yeah.<00:45:11.680> Same<00:45:11.920> stuff.<00:45:12.840> Usual<00:45:13.520> debugging" + }, + { + "start": 2713.87, + "duration": 0.0, + "text": "yeah. Same stuff. Usual debugging" + }, + { + "start": 2713.88, + "duration": 0.0, + "text": "yeah. Same stuff. Usual debugging features<00:45:14.280> just<00:45:14.440> available" + }, + { + "start": 2715.59, + "duration": 0.0, + "text": "features just available" + }, + { + "start": 2715.6, + "duration": 0.0, + "text": "features just available for<00:45:15.680> all<00:45:15.760> these<00:45:15.920> languages.<00:45:16.360> So," + }, + { + "start": 2717.27, + "duration": 0.0, + "text": "for all these languages. So," + }, + { + "start": 2717.28, + "duration": 0.0, + "text": "for all these languages. So, >> Nice." + }, + { + "start": 2717.71, + "duration": 0.0, + "text": ">> Nice." + }, + { + "start": 2717.72, + "duration": 0.0, + "text": ">> Nice. >> Yeah." + }, + { + "start": 2719.71, + "duration": 0.0, + "text": ">> Yeah." + }, + { + "start": 2719.72, + "duration": 0.0, + "text": ">> Yeah. >> Nice." + }, + { + "start": 2721.87, + "duration": 0.0, + "text": ">> Nice." + }, + { + "start": 2721.88, + "duration": 0.0, + "text": ">> Nice. All<00:45:21.960> right." + }, + { + "start": 2723.35, + "duration": 0.0, + "text": "All right." + }, + { + "start": 2723.36, + "duration": 0.0, + "text": "All right. Then," + }, + { + "start": 2724.91, + "duration": 0.0, + "text": "Then," + }, + { + "start": 2724.92, + "duration": 0.0, + "text": "Then, we're<00:45:25.040> going<00:45:25.200> to<00:45:25.280> switch<00:45:25.600> to<00:45:25.720> source<00:45:26.120> code." + }, + { + "start": 2726.35, + "duration": 0.0, + "text": "we're going to switch to source code." + }, + { + "start": 2726.36, + "duration": 0.0, + "text": "we're going to switch to source code. Now,<00:45:26.640> do<00:45:26.760> you<00:45:26.880> want<00:45:27.160> a<00:45:27.240> little<00:45:27.400> bit<00:45:27.520> of<00:45:27.640> break?" + }, + { + "start": 2728.07, + "duration": 0.0, + "text": "Now, do you want a little bit of break?" + }, + { + "start": 2728.08, + "duration": 0.0, + "text": "Now, do you want a little bit of break? >> Sweet." + }, + { + "start": 2728.87, + "duration": 0.0, + "text": ">> Sweet." + }, + { + "start": 2728.88, + "duration": 0.0, + "text": ">> Sweet. >> Or" + }, + { + "start": 2729.51, + "duration": 0.0, + "text": ">> Or" + }, + { + "start": 2729.52, + "duration": 0.0, + "text": ">> Or >> Uh<00:45:30.000> I'm<00:45:30.200> okay<00:45:30.480> to<00:45:30.560> keep<00:45:30.720> going.<00:45:31.040> I<00:45:31.080> mean,<00:45:31.280> we" + }, + { + "start": 2731.35, + "duration": 0.0, + "text": ">> Uh I'm okay to keep going. I mean, we" + }, + { + "start": 2731.36, + "duration": 0.0, + "text": ">> Uh I'm okay to keep going. I mean, we can<00:45:31.480> take<00:45:31.640> a<00:45:31.680> break<00:45:31.840> if<00:45:31.960> you<00:45:32.080> if<00:45:32.200> that<00:45:32.360> helps." + }, + { + "start": 2733.07, + "duration": 0.0, + "text": "can take a break if you if that helps." + }, + { + "start": 2733.08, + "duration": 0.0, + "text": "can take a break if you if that helps. Um" + }, + { + "start": 2733.87, + "duration": 0.0, + "text": "Um" + }, + { + "start": 2733.88, + "duration": 0.0, + "text": "Um I<00:45:33.960> don't<00:45:34.160> need<00:45:34.320> it<00:45:34.520> necessarily." + }, + { + "start": 2735.75, + "duration": 0.0, + "text": "I don't need it necessarily." + }, + { + "start": 2735.76, + "duration": 0.0, + "text": "I don't need it necessarily. >> Uh" + }, + { + "start": 2736.47, + "duration": 0.0, + "text": ">> Uh" + }, + { + "start": 2736.48, + "duration": 0.0, + "text": ">> Uh if<00:45:36.720> you<00:45:37.280> can<00:45:37.480> keep<00:45:37.720> going,<00:45:38.000> then<00:45:38.160> let's<00:45:38.440> keep" + }, + { + "start": 2738.63, + "duration": 0.0, + "text": "if you can keep going, then let's keep" + }, + { + "start": 2738.64, + "duration": 0.0, + "text": "if you can keep going, then let's keep going." + }, + { + "start": 2739.67, + "duration": 0.0, + "text": "going." + }, + { + "start": 2739.68, + "duration": 0.0, + "text": "going. I'm<00:45:40.080> looking<00:45:40.480> taking<00:45:40.760> a<00:45:40.800> look<00:45:40.960> at<00:45:41.080> the<00:45:41.680> chat." + }, + { + "start": 2742.67, + "duration": 0.0, + "text": "I'm looking taking a look at the chat." + }, + { + "start": 2742.68, + "duration": 0.0, + "text": "I'm looking taking a look at the chat. My<00:45:43.320> idea<00:45:44.000> would<00:45:44.240> be<00:45:44.440> to<00:45:44.680> sort<00:45:44.920> of<00:45:45.160> do<00:45:45.920> first" + }, + { + "start": 2746.27, + "duration": 0.0, + "text": "My idea would be to sort of do first" + }, + { + "start": 2746.28, + "duration": 0.0, + "text": "My idea would be to sort of do first like<00:45:46.440> a<00:45:46.480> bit<00:45:46.640> of<00:45:46.760> a<00:45:46.840> high<00:45:47.040> level,<00:45:47.640> and<00:45:47.800> then" + }, + { + "start": 2747.99, + "duration": 0.0, + "text": "like a bit of a high level, and then" + }, + { + "start": 2748.0, + "duration": 0.0, + "text": "like a bit of a high level, and then we'll<00:45:48.120> pick<00:45:48.360> some<00:45:48.560> parts<00:45:48.920> where<00:45:49.080> we<00:45:49.200> can<00:45:49.320> dive" + }, + { + "start": 2749.55, + "duration": 0.0, + "text": "we'll pick some parts where we can dive" + }, + { + "start": 2749.56, + "duration": 0.0, + "text": "we'll pick some parts where we can dive into.<00:45:50.360> So," + }, + { + "start": 2750.91, + "duration": 0.0, + "text": "into. So," + }, + { + "start": 2750.92, + "duration": 0.0, + "text": "into. So, >> Okay,<00:45:51.120> sure." + }, + { + "start": 2751.51, + "duration": 0.0, + "text": ">> Okay, sure." + }, + { + "start": 2751.52, + "duration": 0.0, + "text": ">> Okay, sure. >> you<00:45:51.600> know.<00:45:52.160> I<00:45:52.280> think<00:45:52.520> the<00:45:52.640> first<00:45:53.720> uh<00:45:54.560> first" + }, + { + "start": 2755.07, + "duration": 0.0, + "text": ">> you know. I think the first uh first" + }, + { + "start": 2755.08, + "duration": 0.0, + "text": ">> you know. I think the first uh first part<00:45:55.640> could<00:45:55.920> be<00:45:56.240> a<00:45:56.360> little<00:45:56.520> bit<00:45:56.640> about<00:45:57.000> like" + }, + { + "start": 2757.19, + "duration": 0.0, + "text": "part could be a little bit about like" + }, + { + "start": 2757.2, + "duration": 0.0, + "text": "part could be a little bit about like high<00:45:57.360> level<00:45:57.760> structure,<00:45:58.880> what<00:45:59.120> is<00:45:59.280> where<00:45:59.640> in" + }, + { + "start": 2759.79, + "duration": 0.0, + "text": "high level structure, what is where in" + }, + { + "start": 2759.8, + "duration": 0.0, + "text": "high level structure, what is where in terms<00:46:00.080> of<00:46:00.720> source<00:46:01.120> code,<00:46:01.440> so<00:46:01.520> that<00:46:01.760> we<00:46:01.840> don't" + }, + { + "start": 2762.11, + "duration": 0.0, + "text": "terms of source code, so that we don't" + }, + { + "start": 2762.12, + "duration": 0.0, + "text": "terms of source code, so that we don't get<00:46:02.680> too<00:46:02.960> too<00:46:03.200> lost<00:46:04.160> immediately." + }, + { + "start": 2764.75, + "duration": 0.0, + "text": "get too too lost immediately." + }, + { + "start": 2764.76, + "duration": 0.0, + "text": "get too too lost immediately. >> Got<00:46:04.800> it." + }, + { + "start": 2765.79, + "duration": 0.0, + "text": ">> Got it." + }, + { + "start": 2765.8, + "duration": 0.0, + "text": ">> Got it. Okay." + }, + { + "start": 2767.11, + "duration": 0.0, + "text": "Okay." + }, + { + "start": 2767.12, + "duration": 0.0, + "text": "Okay. Um" + }, + { + "start": 2769.31, + "duration": 0.0, + "text": "Um" + }, + { + "start": 2769.32, + "duration": 0.0, + "text": "Um >> Oh,<00:46:10.080> there<00:46:10.240> was<00:46:10.480> there<00:46:10.640> was<00:46:10.840> one<00:46:11.160> there<00:46:11.320> was" + }, + { + "start": 2771.43, + "duration": 0.0, + "text": ">> Oh, there was there was one there was" + }, + { + "start": 2771.44, + "duration": 0.0, + "text": ">> Oh, there was there was one there was one<00:46:11.640> question<00:46:12.120> that<00:46:12.240> was<00:46:12.440> repeated<00:46:13.320> a<00:46:13.360> lot<00:46:13.640> of" + }, + { + "start": 2773.75, + "duration": 0.0, + "text": "one question that was repeated a lot of" + }, + { + "start": 2773.76, + "duration": 0.0, + "text": "one question that was repeated a lot of times<00:46:14.120> in<00:46:14.200> the<00:46:14.320> chat.<00:46:15.160> When<00:46:15.640> uh<00:46:15.920> the<00:46:16.080> debugger" + }, + { + "start": 2776.55, + "duration": 0.0, + "text": "times in the chat. When uh the debugger" + }, + { + "start": 2776.56, + "duration": 0.0, + "text": "times in the chat. When uh the debugger will<00:46:16.720> become<00:46:17.240> a<00:46:17.360> code<00:46:17.720> editor?" + }, + { + "start": 2779.841, + "duration": 0.0, + "text": "will become a code editor?" + }, + { + "start": 2779.851, + "duration": 0.0, + "text": "will become a code editor? >> [laughter]" + }, + { + "start": 2780.55, + "duration": 0.0, + "text": ">> [laughter]" + }, + { + "start": 2780.56, + "duration": 0.0, + "text": ">> [laughter] >> Uh<00:46:20.960> so,<00:46:21.640> that's<00:46:21.920> like<00:46:22.080> very<00:46:22.360> long<00:46:22.640> term.<00:46:23.320> If<00:46:23.480> we" + }, + { + "start": 2783.59, + "duration": 0.0, + "text": ">> Uh so, that's like very long term. If we" + }, + { + "start": 2783.6, + "duration": 0.0, + "text": ">> Uh so, that's like very long term. If we ever<00:46:23.760> decide<00:46:24.080> to<00:46:24.160> do<00:46:24.320> that,<00:46:24.640> it's<00:46:24.760> just<00:46:24.960> that" + }, + { + "start": 2785.35, + "duration": 0.0, + "text": "ever decide to do that, it's just that" + }, + { + "start": 2785.36, + "duration": 0.0, + "text": "ever decide to do that, it's just that there's<00:46:25.520> so<00:46:25.680> much<00:46:25.960> debugging<00:46:26.400> stuff<00:46:26.640> we<00:46:26.720> need" + }, + { + "start": 2786.87, + "duration": 0.0, + "text": "there's so much debugging stuff we need" + }, + { + "start": 2786.88, + "duration": 0.0, + "text": "there's so much debugging stuff we need to<00:46:26.960> do<00:46:27.120> first<00:46:27.560> that<00:46:28.040> we're<00:46:28.360> going<00:46:28.520> to<00:46:28.920> we're" + }, + { + "start": 2789.03, + "duration": 0.0, + "text": "to do first that we're going to we're" + }, + { + "start": 2789.04, + "duration": 0.0, + "text": "to do first that we're going to we're focusing<00:46:29.360> on<00:46:29.440> debugger<00:46:29.720> stuff<00:46:30.000> first<00:46:30.200> because" + }, + { + "start": 2790.47, + "duration": 0.0, + "text": "focusing on debugger stuff first because" + }, + { + "start": 2790.48, + "duration": 0.0, + "text": "focusing on debugger stuff first because it's<00:46:30.640> more<00:46:30.840> important.<00:46:31.680> Like<00:46:31.840> there<00:46:31.960> are" + }, + { + "start": 2792.03, + "duration": 0.0, + "text": "it's more important. Like there are" + }, + { + "start": 2792.04, + "duration": 0.0, + "text": "it's more important. Like there are plenty<00:46:32.320> of<00:46:32.400> editors<00:46:32.800> available<00:46:33.280> on<00:46:33.400> Linux," + }, + { + "start": 2793.79, + "duration": 0.0, + "text": "plenty of editors available on Linux," + }, + { + "start": 2793.8, + "duration": 0.0, + "text": "plenty of editors available on Linux, right?<00:46:34.080> But<00:46:34.280> there's<00:46:34.520> really<00:46:34.720> not<00:46:34.880> that<00:46:35.040> many" + }, + { + "start": 2795.19, + "duration": 0.0, + "text": "right? But there's really not that many" + }, + { + "start": 2795.2, + "duration": 0.0, + "text": "right? But there's really not that many graphical<00:46:35.880> like<00:46:36.120> good<00:46:36.360> graphical<00:46:36.720> editors<00:46:37.080> on" + }, + { + "start": 2797.19, + "duration": 0.0, + "text": "graphical like good graphical editors on" + }, + { + "start": 2797.2, + "duration": 0.0, + "text": "graphical like good graphical editors on Linux.<00:46:38.040> And<00:46:38.160> so,<00:46:38.280> the<00:46:38.400> debugger's<00:46:38.920> really<00:46:39.120> the" + }, + { + "start": 2799.23, + "duration": 0.0, + "text": "Linux. And so, the debugger's really the" + }, + { + "start": 2799.24, + "duration": 0.0, + "text": "Linux. And so, the debugger's really the high<00:46:39.440> value<00:46:39.760> thing<00:46:39.880> we<00:46:40.000> want<00:46:40.120> to<00:46:40.200> provide" + }, + { + "start": 2800.99, + "duration": 0.0, + "text": "high value thing we want to provide" + }, + { + "start": 2801.0, + "duration": 0.0, + "text": "high value thing we want to provide first.<00:46:41.480> I<00:46:41.560> think<00:46:41.800> someday<00:46:42.200> it'll<00:46:42.400> make<00:46:42.560> a" + }, + { + "start": 2802.63, + "duration": 0.0, + "text": "first. I think someday it'll make a" + }, + { + "start": 2802.64, + "duration": 0.0, + "text": "first. I think someday it'll make a whole<00:46:42.840> lot<00:46:43.000> of<00:46:43.080> sense<00:46:43.320> to<00:46:43.440> put<00:46:43.640> editing" + }, + { + "start": 2803.95, + "duration": 0.0, + "text": "whole lot of sense to put editing" + }, + { + "start": 2803.96, + "duration": 0.0, + "text": "whole lot of sense to put editing functionality<00:46:44.520> inside<00:46:44.960> because<00:46:45.560> it's<00:46:45.640> not" + }, + { + "start": 2805.83, + "duration": 0.0, + "text": "functionality inside because it's not" + }, + { + "start": 2805.84, + "duration": 0.0, + "text": "functionality inside because it's not even<00:46:46.360> it's<00:46:46.480> not<00:46:46.640> even<00:46:46.800> for<00:46:47.080> the<00:46:47.280> purposes<00:46:47.680> of" + }, + { + "start": 2807.75, + "duration": 0.0, + "text": "even it's not even for the purposes of" + }, + { + "start": 2807.76, + "duration": 0.0, + "text": "even it's not even for the purposes of being<00:46:47.960> a<00:46:48.000> code<00:46:48.200> editor.<00:46:49.000> It's<00:46:49.160> really<00:46:49.360> because" + }, + { + "start": 2809.83, + "duration": 0.0, + "text": "being a code editor. It's really because" + }, + { + "start": 2809.84, + "duration": 0.0, + "text": "being a code editor. It's really because with<00:46:50.120> multi-line<00:46:50.720> string<00:46:51.000> visualization,<00:46:51.960> so" + }, + { + "start": 2812.11, + "duration": 0.0, + "text": "with multi-line string visualization, so" + }, + { + "start": 2812.12, + "duration": 0.0, + "text": "with multi-line string visualization, so if<00:46:52.240> I,<00:46:52.360> you<00:46:52.480> know,<00:46:52.680> if<00:46:52.840> I<00:46:52.880> go<00:46:53.000> back<00:46:53.200> to<00:46:53.280> those" + }, + { + "start": 2813.43, + "duration": 0.0, + "text": "if I, you know, if I go back to those" + }, + { + "start": 2813.44, + "duration": 0.0, + "text": "if I, you know, if I go back to those examples<00:46:53.840> where<00:46:53.920> I<00:46:53.960> had<00:46:54.080> that<00:46:54.240> long<00:46:54.520> string" + }, + { + "start": 2814.83, + "duration": 0.0, + "text": "examples where I had that long string" + }, + { + "start": 2814.84, + "duration": 0.0, + "text": "examples where I had that long string that<00:46:55.000> I<00:46:55.040> showed<00:46:55.760> in<00:46:55.880> the<00:46:55.960> text<00:46:56.160> visualizer" + }, + { + "start": 2816.67, + "duration": 0.0, + "text": "that I showed in the text visualizer" + }, + { + "start": 2816.68, + "duration": 0.0, + "text": "that I showed in the text visualizer just<00:46:56.840> like<00:46:57.040> the<00:46:57.280> just<00:46:57.440> like<00:46:57.520> the<00:46:57.600> source<00:46:57.800> code." + }, + { + "start": 2819.03, + "duration": 0.0, + "text": "just like the just like the source code." + }, + { + "start": 2819.04, + "duration": 0.0, + "text": "just like the just like the source code. If<00:46:59.160> you're<00:46:59.320> working<00:46:59.640> with<00:46:59.760> a<00:46:59.800> lot<00:47:00.000> of<00:47:00.040> text" + }, + { + "start": 2820.47, + "duration": 0.0, + "text": "If you're working with a lot of text" + }, + { + "start": 2820.48, + "duration": 0.0, + "text": "If you're working with a lot of text data<00:47:01.280> and<00:47:01.400> you're<00:47:01.520> debugging,<00:47:01.960> like<00:47:02.080> we<00:47:02.200> can" + }, + { + "start": 2822.31, + "duration": 0.0, + "text": "data and you're debugging, like we can" + }, + { + "start": 2822.32, + "duration": 0.0, + "text": "data and you're debugging, like we can edit<00:47:02.520> things<00:47:02.720> in<00:47:02.800> the<00:47:02.840> memory<00:47:03.200> view,<00:47:03.680> we<00:47:03.800> can" + }, + { + "start": 2823.91, + "duration": 0.0, + "text": "edit things in the memory view, we can" + }, + { + "start": 2823.92, + "duration": 0.0, + "text": "edit things in the memory view, we can edit<00:47:04.200> the<00:47:04.320> colors,<00:47:04.840> we<00:47:04.960> can<00:47:05.080> edit<00:47:05.400> like<00:47:06.000> we<00:47:06.120> can" + }, + { + "start": 2826.23, + "duration": 0.0, + "text": "edit the colors, we can edit like we can" + }, + { + "start": 2826.24, + "duration": 0.0, + "text": "edit the colors, we can edit like we can edit<00:47:06.400> values<00:47:06.760> inside<00:47:06.960> the<00:47:07.040> watch<00:47:07.240> window." + }, + { + "start": 2827.83, + "duration": 0.0, + "text": "edit values inside the watch window." + }, + { + "start": 2827.84, + "duration": 0.0, + "text": "edit values inside the watch window. It's<00:47:08.000> like<00:47:08.200> really<00:47:08.440> all<00:47:08.560> these<00:47:08.720> visualizers" + }, + { + "start": 2829.27, + "duration": 0.0, + "text": "It's like really all these visualizers" + }, + { + "start": 2829.28, + "duration": 0.0, + "text": "It's like really all these visualizers should<00:47:09.480> also<00:47:09.680> have<00:47:09.840> editing<00:47:10.120> functionality" + }, + { + "start": 2830.79, + "duration": 0.0, + "text": "should also have editing functionality" + }, + { + "start": 2830.8, + "duration": 0.0, + "text": "should also have editing functionality at<00:47:10.960> the<00:47:11.080> limit.<00:47:11.440> So,<00:47:11.560> I<00:47:11.640> think<00:47:11.840> that<00:47:12.120> should" + }, + { + "start": 2832.31, + "duration": 0.0, + "text": "at the limit. So, I think that should" + }, + { + "start": 2832.32, + "duration": 0.0, + "text": "at the limit. So, I think that should apply<00:47:12.600> also<00:47:12.840> to<00:47:12.960> the<00:47:13.040> text<00:47:13.280> visualizer,<00:47:14.160> which" + }, + { + "start": 2834.39, + "duration": 0.0, + "text": "apply also to the text visualizer, which" + }, + { + "start": 2834.4, + "duration": 0.0, + "text": "apply also to the text visualizer, which means<00:47:14.800> it<00:47:14.960> necessarily<00:47:15.560> also<00:47:15.800> has<00:47:15.960> to<00:47:16.080> apply" + }, + { + "start": 2836.95, + "duration": 0.0, + "text": "means it necessarily also has to apply" + }, + { + "start": 2836.96, + "duration": 0.0, + "text": "means it necessarily also has to apply to<00:47:17.240> source<00:47:17.560> code<00:47:17.800> views,<00:47:18.480> right?<00:47:18.800> So,<00:47:19.080> it's" + }, + { + "start": 2839.43, + "duration": 0.0, + "text": "to source code views, right? So, it's" + }, + { + "start": 2839.44, + "duration": 0.0, + "text": "to source code views, right? So, it's it's<00:47:19.880> I<00:47:19.960> think<00:47:20.160> eventually<00:47:20.600> it'll<00:47:20.760> become" + }, + { + "start": 2841.03, + "duration": 0.0, + "text": "it's I think eventually it'll become" + }, + { + "start": 2841.04, + "duration": 0.0, + "text": "it's I think eventually it'll become that.<00:47:21.760> Um" + }, + { + "start": 2842.51, + "duration": 0.0, + "text": "that. Um" + }, + { + "start": 2842.52, + "duration": 0.0, + "text": "that. Um but<00:47:22.640> it's<00:47:22.760> just<00:47:22.920> not<00:47:23.360> the<00:47:23.440> high<00:47:23.680> priority" + }, + { + "start": 2844.27, + "duration": 0.0, + "text": "but it's just not the high priority" + }, + { + "start": 2844.28, + "duration": 0.0, + "text": "but it's just not the high priority right<00:47:24.440> now<00:47:24.560> cuz<00:47:24.760> obviously<00:47:25.040> we<00:47:25.120> have<00:47:25.240> the" + }, + { + "start": 2845.31, + "duration": 0.0, + "text": "right now cuz obviously we have the" + }, + { + "start": 2845.32, + "duration": 0.0, + "text": "right now cuz obviously we have the porting<00:47:25.720> stuff<00:47:25.960> to<00:47:26.040> do<00:47:26.240> before<00:47:26.440> we<00:47:26.520> get<00:47:26.640> to<00:47:26.760> all" + }, + { + "start": 2846.95, + "duration": 0.0, + "text": "porting stuff to do before we get to all" + }, + { + "start": 2846.96, + "duration": 0.0, + "text": "porting stuff to do before we get to all the<00:47:27.040> fancy<00:47:27.440> stuff.<00:47:27.800> We<00:47:27.880> have<00:47:28.000> porting<00:47:28.400> to<00:47:28.520> do" + }, + { + "start": 2849.11, + "duration": 0.0, + "text": "the fancy stuff. We have porting to do" + }, + { + "start": 2849.12, + "duration": 0.0, + "text": "the fancy stuff. We have porting to do both<00:47:29.320> to<00:47:29.560> Linux<00:47:29.920> but<00:47:30.040> also<00:47:30.400> to<00:47:30.600> from<00:47:30.800> x64<00:47:31.440> to" + }, + { + "start": 2851.59, + "duration": 0.0, + "text": "both to Linux but also to from x64 to" + }, + { + "start": 2851.6, + "duration": 0.0, + "text": "both to Linux but also to from x64 to arm,<00:47:32.520> um<00:47:32.880> and<00:47:32.960> then<00:47:33.080> probably<00:47:33.520> like<00:47:33.720> risk<00:47:34.000> five" + }, + { + "start": 2854.39, + "duration": 0.0, + "text": "arm, um and then probably like risk five" + }, + { + "start": 2854.4, + "duration": 0.0, + "text": "arm, um and then probably like risk five or<00:47:34.480> whatever,<00:47:34.960> and<00:47:35.080> then<00:47:35.360> like<00:47:35.840> we<00:47:35.920> just<00:47:36.080> want" + }, + { + "start": 2856.19, + "duration": 0.0, + "text": "or whatever, and then like we just want" + }, + { + "start": 2856.2, + "duration": 0.0, + "text": "or whatever, and then like we just want to<00:47:36.280> start<00:47:36.480> doing<00:47:36.720> all<00:47:36.840> the<00:47:37.080> we<00:47:37.200> want<00:47:37.320> to<00:47:37.400> cover" + }, + { + "start": 2857.63, + "duration": 0.0, + "text": "to start doing all the we want to cover" + }, + { + "start": 2857.64, + "duration": 0.0, + "text": "to start doing all the we want to cover those<00:47:37.880> bases<00:47:38.320> first<00:47:38.800> so<00:47:38.920> that<00:47:39.080> we<00:47:39.160> don't<00:47:39.480> get" + }, + { + "start": 2859.67, + "duration": 0.0, + "text": "those bases first so that we don't get" + }, + { + "start": 2859.68, + "duration": 0.0, + "text": "those bases first so that we don't get ahead<00:47:39.840> of<00:47:39.960> ourselves,<00:47:40.960> um<00:47:41.280> and<00:47:41.400> build<00:47:42.080> all" + }, + { + "start": 2862.23, + "duration": 0.0, + "text": "ahead of ourselves, um and build all" + }, + { + "start": 2862.24, + "duration": 0.0, + "text": "ahead of ourselves, um and build all those<00:47:42.440> kinds<00:47:42.680> of<00:47:42.760> crazy<00:47:43.040> features<00:47:43.400> on<00:47:43.520> a" + }, + { + "start": 2863.59, + "duration": 0.0, + "text": "those kinds of crazy features on a" + }, + { + "start": 2863.6, + "duration": 0.0, + "text": "those kinds of crazy features on a really<00:47:43.960> unstable<00:47:44.440> foundation.<00:47:44.960> So,<00:47:45.040> we<00:47:45.160> want" + }, + { + "start": 2865.27, + "duration": 0.0, + "text": "really unstable foundation. So, we want" + }, + { + "start": 2865.28, + "duration": 0.0, + "text": "really unstable foundation. So, we want to<00:47:45.360> make<00:47:45.440> sure<00:47:45.560> to<00:47:45.640> do<00:47:45.760> it<00:47:45.920> really<00:47:46.440> really<00:47:46.800> uh" + }, + { + "start": 2867.51, + "duration": 0.0, + "text": "to make sure to do it really really uh" + }, + { + "start": 2867.52, + "duration": 0.0, + "text": "to make sure to do it really really uh um" + }, + { + "start": 2868.91, + "duration": 0.0, + "text": "um" + }, + { + "start": 2868.92, + "duration": 0.0, + "text": "um really<00:47:49.120> appropriately,<00:47:50.080> I<00:47:50.160> guess<00:47:50.320> is<00:47:50.440> what<00:47:50.560> I" + }, + { + "start": 2870.59, + "duration": 0.0, + "text": "really appropriately, I guess is what I" + }, + { + "start": 2870.6, + "duration": 0.0, + "text": "really appropriately, I guess is what I would<00:47:50.720> say.<00:47:51.200> Um<00:47:51.520> so,<00:47:51.840> not<00:47:52.160> anytime<00:47:52.560> soon,<00:47:53.080> but" + }, + { + "start": 2873.43, + "duration": 0.0, + "text": "would say. Um so, not anytime soon, but" + }, + { + "start": 2873.44, + "duration": 0.0, + "text": "would say. Um so, not anytime soon, but there<00:47:53.600> are<00:47:53.800> a<00:47:53.840> lot<00:47:54.040> of<00:47:54.120> features<00:47:54.480> in<00:47:54.560> the<00:47:54.640> rad" + }, + { + "start": 2874.79, + "duration": 0.0, + "text": "there are a lot of features in the rad" + }, + { + "start": 2874.8, + "duration": 0.0, + "text": "there are a lot of features in the rad debugger<00:47:55.120> to<00:47:56.000> hook<00:47:56.200> up<00:47:56.360> to<00:47:56.480> an<00:47:56.600> editor," + }, + { + "start": 2877.95, + "duration": 0.0, + "text": "debugger to hook up to an editor," + }, + { + "start": 2877.96, + "duration": 0.0, + "text": "debugger to hook up to an editor, which<00:47:58.120> I<00:47:58.160> could<00:47:58.320> talk<00:47:58.480> about,<00:47:58.680> too,<00:47:58.840> but<00:47:59.640> um" + }, + { + "start": 2880.39, + "duration": 0.0, + "text": "which I could talk about, too, but um" + }, + { + "start": 2880.4, + "duration": 0.0, + "text": "which I could talk about, too, but um anyways." + }, + { + "start": 2881.368, + "duration": 0.0, + "text": "anyways." + }, + { + "start": 2881.378, + "duration": 0.0, + "text": "anyways. >> [music]" + }, + { + "start": 2893.823, + "duration": 0.0, + "text": "[music]" + }, + { + "start": 2899.718, + "duration": 0.0, + "text": "[music]" + } + ], + "plain": "For<00:00:00.520> everybody<00:00:00.960> who<00:00:01.120> is<00:00:01.240> joining,<00:00:02.000> we<00:00:02.200> are\nFor everybody who is joining, we are\nFor everybody who is joining, we are gathered<00:00:02.760> here<00:00:03.000> today<00:00:03.760> for<00:00:04.040> Ryan<00:00:04.800> to<00:00:04.960> show<00:00:05.200> us\ngathered here today for Ryan to show us\ngathered here today for Ryan to show us radare2<00:00:06.120> debugger<00:00:06.440> code<00:00:06.720> base.\nradare2 debugger code base.\nradare2 debugger code base. Hello<00:00:08.200> Ryan,<00:00:08.760> how<00:00:08.880> are<00:00:08.960> you<00:00:09.000> doing?\nHello Ryan, how are you doing?\nHello Ryan, how are you doing? >> Hello.<00:00:10.400> Good,<00:00:10.640> how<00:00:10.760> are<00:00:10.840> you?\n>> Hello. Good, how are you?\n>> Hello. Good, how are you? >> Great.\n>> Great.\n>> Great. And<00:00:13.720> after<00:00:13.960> this<00:00:14.160> a<00:00:14.200> little<00:00:14.400> bit<00:00:14.600> awkward\nAnd after this a little bit awkward\nAnd after this a little bit awkward introduction<00:00:15.920> interchange,\nintroduction interchange,\nintroduction interchange, uh<00:00:17.600> Ryan<00:00:18.600> will<00:00:18.840> first<00:00:19.280> start<00:00:19.760> with<00:00:19.960> showing<00:00:20.280> us\nuh Ryan will first start with showing us\nuh Ryan will first start with showing us how<00:00:20.880> radare2<00:00:21.200> debugger<00:00:21.520> works<00:00:22.000> in<00:00:22.200> general<00:00:22.960> in\nhow radare2 debugger works in general in\nhow radare2 debugger works in general in terms<00:00:23.440> of<00:00:23.640> what's<00:00:23.800> the<00:00:24.160> product<00:00:25.240> how<00:00:25.480> the\nterms of what's the product how the\nterms of what's the product how the users<00:00:26.280> could<00:00:26.640> use<00:00:27.000> radare2<00:00:27.320> debugger<00:00:28.040> and\nusers could use radare2 debugger and\nusers could use radare2 debugger and then<00:00:28.320> we're<00:00:28.400> going<00:00:28.520> to<00:00:28.600> dive<00:00:28.840> in<00:00:29.000> into<00:00:29.400> source\nthen we're going to dive in into source\nthen we're going to dive in into source code.\ncode.\ncode. >> So,<00:00:30.960> unfortunately<00:00:31.440> I<00:00:31.480> can't<00:00:31.720> show<00:00:32.240> what<00:00:32.400> it's\n>> So, unfortunately I can't show what it's\n>> So, unfortunately I can't show what it's like<00:00:32.759> to<00:00:32.960> get<00:00:33.360> the<00:00:33.440> debugger\nlike to get the debugger\nlike to get the debugger um<00:00:35.400> because<00:00:36.080> I<00:00:36.280> can<00:00:36.440> only<00:00:36.680> share<00:00:37.040> share<00:00:37.320> the\num because I can only share share the\num because I can only share share the debugger<00:00:37.720> itself,<00:00:38.080> but<00:00:38.200> I<00:00:38.240> mean<00:00:38.400> it's<00:00:38.520> very\ndebugger itself, but I mean it's very\ndebugger itself, but I mean it's very straightforward.<00:00:39.320> Like<00:00:39.480> you<00:00:39.600> go<00:00:39.800> to<00:00:39.960> the\nstraightforward. Like you go to the\nstraightforward. Like you go to the debugger<00:00:41.160> GitHub<00:00:41.480> page,<00:00:42.120> you<00:00:42.240> click<00:00:42.480> on<00:00:42.600> the\ndebugger GitHub page, you click on the\ndebugger GitHub page, you click on the releases<00:00:43.320> section,<00:00:44.080> and<00:00:44.200> then<00:00:44.280> you<00:00:44.480> get\nreleases section, and then you get\nreleases section, and then you get radare2<00:00:45.400> .exe,<00:00:46.200> and<00:00:46.280> that's<00:00:46.480> it.<00:00:46.640> And<00:00:46.720> then\nradare2 .exe, and that's it. And then\nradare2 .exe, and that's it. And then you<00:00:46.920> run<00:00:47.080> that.<00:00:47.520> And<00:00:47.600> then<00:00:47.720> this<00:00:47.880> is<00:00:48.000> what<00:00:48.120> will\nyou run that. And then this is what will\nyou run that. And then this is what will pop<00:00:48.400> up<00:00:48.760> or<00:00:48.840> something<00:00:49.120> like<00:00:49.280> this.\npop up or something like this.\npop up or something like this. Um\nUm\nUm so<00:00:53.055> [clears throat]\nso [clears throat]\nso [clears throat] anyways,<00:00:54.600> if<00:00:54.720> you<00:00:54.880> open<00:00:55.120> the<00:00:55.200> program<00:00:55.560> like\nanyways, if you open the program like\nanyways, if you open the program like this,<00:00:55.960> so<00:00:56.120> there's<00:00:56.400> there's<00:00:56.640> one<00:00:56.840> thing<00:00:57.000> you\nthis, so there's there's one thing you\nthis, so there's there's one thing you can<00:00:57.240> do<00:00:57.640> and<00:00:57.760> because<00:00:58.040> I<00:00:58.120> can't<00:00:58.760> because<00:00:59.000> I\ncan do and because I can't because I\ncan do and because I can't because I can't<00:00:59.360> share<00:00:59.720> my<00:01:00.560> my<00:01:00.720> screen,<00:01:01.000> I<00:01:01.040> can't<00:01:01.320> show\ncan't share my my screen, I can't show\ncan't share my my screen, I can't show what<00:01:01.680> the<00:01:01.760> command<00:01:02.120> line<00:01:02.760> usage<00:01:03.160> looks<00:01:03.320> like.\nwhat the command line usage looks like.\nwhat the command line usage looks like. But<00:01:04.280> basically<00:01:04.680> there's<00:01:04.879> one<00:01:05.080> thing<00:01:05.239> you<00:01:05.320> can\nBut basically there's one thing you can\nBut basically there's one thing you can do,<00:01:06.160> let<00:01:06.280> me<00:01:06.320> just<00:01:06.480> open<00:01:06.640> a<00:01:06.680> watch<00:01:06.960> window<00:01:07.200> and\ndo, let me just open a watch window and\ndo, let me just open a watch window and then<00:01:07.400> I<00:01:07.440> can<00:01:07.960> uh\nthen I can uh\nthen I can uh put<00:01:08.680> a<00:01:08.720> little<00:01:08.880> string<00:01:09.120> in<00:01:09.200> here.<00:01:09.400> So,<00:01:10.000> um\nput a little string in here. So, um\nput a little string in here. So, um actually<00:01:10.880> let<00:01:11.000> me<00:01:11.160> unload<00:01:11.600> a<00:01:11.640> bunch<00:01:11.840> of<00:01:11.920> debug\nactually let me unload a bunch of debug\nactually let me unload a bunch of debug info<00:01:12.920> that<00:01:13.000> I<00:01:13.040> don't<00:01:13.240> need<00:01:13.360> loaded<00:01:13.640> right<00:01:13.800> now.\ninfo that I don't need loaded right now.\ninfo that I don't need loaded right now. So,\nSo,\nSo, >> [clears throat]\n>> [clears throat]\n>> [clears throat] >> on<00:01:15.960> command<00:01:16.240> line<00:01:16.440> what<00:01:16.560> you<00:01:16.640> can<00:01:16.720> do<00:01:16.920> is<00:01:17.000> like\n>> on command line what you can do is like\n>> on command line what you can do is like you<00:01:17.440> you<00:01:17.520> can<00:01:17.640> run<00:01:18.480> radare2<00:01:19.160> and<00:01:19.280> then<00:01:19.920> um<00:01:20.360> so\nyou you can run radare2 and then um so\nyou you can run radare2 and then um so if<00:01:20.680> you're<00:01:20.800> running<00:01:21.120> a<00:01:21.200> program<00:01:21.760> that<00:01:21.920> you're\nif you're running a program that you're\nif you're running a program that you're that<00:01:23.000> you're<00:01:23.360> actively<00:01:23.720> developing,<00:01:24.200> you\nthat you're actively developing, you\nthat you're actively developing, you might<00:01:24.520> run<00:01:24.720> something<00:01:25.000> like<00:01:25.200> foo.exe.\nmight run something like foo.exe.\nmight run something like foo.exe. Um<00:01:28.040> and<00:01:28.160> then<00:01:28.280> you<00:01:28.360> might<00:01:28.600> say<00:01:28.800> like<00:01:29.080> {dash}<00:01:29.720> a\nUm and then you might say like {dash} a\nUm and then you might say like {dash} a {dash}<00:01:30.320> b<00:01:31.200> uh\n{dash} b uh\n{dash} b uh {dash}<00:01:32.600> some<00:01:33.000> other<00:01:33.360> option<00:01:34.480> equals\n{dash} some other option equals\n{dash} some other option equals whatever,<00:01:35.560> like<00:01:35.680> something<00:01:35.880> like<00:01:36.000> this.\nwhatever, like something like this.\nwhatever, like something like this. Whatever<00:01:36.360> your<00:01:36.440> command<00:01:36.720> line<00:01:36.880> arguments<00:01:37.240> are\nWhatever your command line arguments are\nWhatever your command line arguments are if<00:01:37.480> you<00:01:37.600> have<00:01:37.760> them.\nif you have them.\nif you have them. To<00:01:39.360> run<00:01:39.520> this<00:01:39.920> within<00:01:40.200> the<00:01:40.280> context<00:01:40.640> of<00:01:40.720> the\nTo run this within the context of the\nTo run this within the context of the debugger,<00:01:41.200> all<00:01:41.360> you<00:01:41.440> have<00:01:41.560> to<00:01:41.640> do<00:01:42.000> is<00:01:42.280> prefix\ndebugger, all you have to do is prefix\ndebugger, all you have to do is prefix that<00:01:42.760> with<00:01:42.920> radare2\nthat with radare2\nthat with radare2 as<00:01:43.960> long<00:01:44.160> as<00:01:44.280> you<00:01:44.320> can<00:01:44.480> access<00:01:45.360> this<00:01:45.600> in<00:01:45.720> your\nas long as you can access this in your\nas long as you can access this in your path.<00:01:46.120> Like<00:01:46.240> you<00:01:46.320> put<00:01:46.480> it,<00:01:46.920> you<00:01:47.000> know,<00:01:47.600> when\npath. Like you put it, you know, when\npath. Like you put it, you know, when you<00:01:48.080> get<00:01:48.280> the<00:01:48.360> executable,<00:01:48.840> you<00:01:48.920> put<00:01:49.080> it\nyou get the executable, you put it\nyou get the executable, you put it wherever<00:01:49.360> you<00:01:49.400> can<00:01:49.520> find<00:01:49.760> it<00:01:49.840> in<00:01:49.880> your<00:01:50.000> path<00:01:50.280> if\nwherever you can find it in your path if\nwherever you can find it in your path if you<00:01:50.480> want<00:01:50.600> to<00:01:50.680> run<00:01:50.760> it<00:01:50.840> from<00:01:50.960> command<00:01:51.280> line.\nyou want to run it from command line.\nyou want to run it from command line. Um\nUm\nUm and<00:01:54.040> then<00:01:54.120> if<00:01:54.240> you<00:01:54.400> open<00:01:54.920> if<00:01:55.000> If<00:01:55.080> run<00:01:55.280> this,\nand then if you open if If run this,\nand then if you open if If run this, it'll<00:01:56.920> open<00:01:57.160> the<00:01:57.240> debugger.\nit'll open the debugger.\nit'll open the debugger. And<00:01:58.720> what<00:01:58.840> it'll<00:01:59.040> do<00:01:59.240> is<00:01:59.360> it'll<00:01:59.520> pre-fill\nAnd what it'll do is it'll pre-fill\nAnd what it'll do is it'll pre-fill um\num\num it'll<00:02:02.280> create<00:02:02.520> a<00:02:02.560> target,<00:02:03.040> a<00:02:03.080> temporary\nit'll create a target, a temporary\nit'll create a target, a temporary target<00:02:03.880> for<00:02:04.360> for<00:02:04.680> the<00:02:05.240> executable<00:02:05.760> you<00:02:05.840> just\ntarget for for the executable you just\ntarget for for the executable you just passed.\npassed.\npassed. So,<00:02:07.720> targets<00:02:08.080> are<00:02:08.160> basically\nSo, targets are basically\nSo, targets are basically um<00:02:09.960> how<00:02:10.160> the<00:02:10.280> debugger<00:02:10.640> knows<00:02:11.760> uh<00:02:12.000> how<00:02:12.320> to\num how the debugger knows uh how to\num how the debugger knows uh how to launch<00:02:13.080> an<00:02:13.200> executable.<00:02:14.240> Um\nlaunch an executable. Um\nlaunch an executable. Um so,<00:02:15.160> I've<00:02:15.280> got<00:02:15.400> a<00:02:15.440> bunch<00:02:15.640> of<00:02:15.720> options<00:02:16.080> here.\nso, I've got a bunch of options here.\nso, I've got a bunch of options here. I've<00:02:16.880> got<00:02:17.080> this<00:02:17.360> for<00:02:17.480> example,<00:02:17.840> this<00:02:18.000> mule\nI've got this for example, this mule\nI've got this for example, this mule main.<00:02:18.640> This<00:02:18.800> is<00:02:18.959> what<00:02:19.280> something<00:02:19.560> we<00:02:19.640> use<00:02:19.800> for\nmain. This is what something we use for\nmain. This is what something we use for testing<00:02:20.240> in<00:02:20.360> the<00:02:20.400> debugger\ntesting in the debugger\ntesting in the debugger um<00:02:21.800> project.<00:02:22.959> And<00:02:23.320> you<00:02:23.400> can<00:02:23.520> see<00:02:23.600> it's<00:02:23.720> got<00:02:23.840> a\num project. And you can see it's got a\num project. And you can see it's got a bunch<00:02:24.040> of<00:02:24.120> options<00:02:24.480> here.<00:02:25.080> Um\nbunch of options here. Um\nbunch of options here. Um label<00:02:26.680> is<00:02:27.080> uh\nlabel is uh\nlabel is uh not<00:02:27.920> super<00:02:28.160> important.<00:02:28.440> It's<00:02:28.640> it's<00:02:29.360> um\nnot super important. It's it's um\nnot super important. It's it's um it's<00:02:30.200> just<00:02:30.320> something<00:02:30.520> you<00:02:30.600> can<00:02:30.720> tag<00:02:31.360> this\nit's just something you can tag this\nit's just something you can tag this target<00:02:32.200> with.<00:02:32.440> But\ntarget with. But\ntarget with. But um<00:02:34.000> you<00:02:34.120> supply<00:02:34.400> the<00:02:34.520> executable<00:02:35.000> path.<00:02:35.520> You\num you supply the executable path. You\num you supply the executable path. You can<00:02:35.720> put<00:02:35.840> in<00:02:36.000> arguments<00:02:36.480> here.<00:02:36.720> So,<00:02:36.800> you<00:02:36.840> can\ncan put in arguments here. So, you can\ncan put in arguments here. So, you can do<00:02:37.040> like<00:02:37.200> {dash}foo<00:02:37.680> {dash}bar<00:02:38.240> whatever,\ndo like {dash}foo {dash}bar whatever,\ndo like {dash}foo {dash}bar whatever, whatever<00:02:39.040> you<00:02:39.120> want<00:02:39.280> it<00:02:39.360> to<00:02:39.440> do.<00:02:39.959> And<00:02:40.040> the\nwhatever you want it to do. And the\nwhatever you want it to do. And the arguments<00:02:40.480> you<00:02:40.560> put<00:02:40.720> those<00:02:40.920> here.\narguments you put those here.\narguments you put those here. Whatever<00:02:42.480> working<00:02:42.840> directory<00:02:43.240> you<00:02:43.360> want<00:02:43.560> it\nWhatever working directory you want it\nWhatever working directory you want it to<00:02:43.760> start<00:02:44.120> the<00:02:44.240> executable<00:02:45.160> like<00:02:45.360> within<00:02:45.600> the\nto start the executable like within the\nto start the executable like within the context<00:02:46.160> of.<00:02:46.800> And<00:02:46.880> then<00:02:47.000> you<00:02:47.080> can<00:02:47.160> also\ncontext of. And then you can also\ncontext of. And then you can also specify<00:02:47.680> things<00:02:47.920> like<00:02:48.040> a<00:02:48.120> custom<00:02:48.520> entry\nspecify things like a custom entry\nspecify things like a custom entry point.<00:02:49.800> Um<00:02:50.560> a<00:02:50.680> file<00:02:51.040> path<00:02:51.360> for<00:02:51.480> standard<00:02:51.880> out,\npoint. Um a file path for standard out,\npoint. Um a file path for standard out, standard<00:02:52.640> error,<00:02:52.959> and<00:02:53.120> standard<00:02:53.520> in.<00:02:53.920> You<00:02:54.000> can\nstandard error, and standard in. You can\nstandard error, and standard in. You can put<00:02:54.320> file<00:02:54.520> paths<00:02:54.760> here<00:02:55.000> and<00:02:55.120> then<00:02:55.240> it'll<00:02:55.720> use\nput file paths here and then it'll use\nput file paths here and then it'll use those<00:02:56.200> instead<00:02:56.520> of<00:02:57.120> um\nthose instead of um\nthose instead of um instead<00:02:58.120> of<00:02:58.160> the<00:02:58.280> defaults.<00:02:59.280> You<00:02:59.360> can<00:02:59.480> add\ninstead of the defaults. You can add\ninstead of the defaults. You can add custom<00:02:59.920> environment<00:03:00.400> strings.<00:03:01.200> And<00:03:01.320> then<00:03:01.480> you\ncustom environment strings. And then you\ncustom environment strings. And then you can<00:03:01.680> also\ncan also\ncan also enable<00:03:03.200> or<00:03:03.280> disable<00:03:03.920> debugging<00:03:04.280> of<00:03:04.400> sub\nenable or disable debugging of sub\nenable or disable debugging of sub processes.<00:03:05.280> Meaning<00:03:05.519> if<00:03:05.680> this<00:03:05.959> executable\nprocesses. Meaning if this executable\nprocesses. Meaning if this executable launched<00:03:06.840> another<00:03:07.160> process,<00:03:08.120> would<00:03:08.280> the\nlaunched another process, would the\nlaunched another process, would the debugger<00:03:08.720> automatically<00:03:09.160> attach<00:03:09.480> to<00:03:09.640> it<00:03:09.840> or\ndebugger automatically attach to it or\ndebugger automatically attach to it or not?<00:03:10.800> Um<00:03:10.880> sometimes<00:03:11.280> you<00:03:11.320> want<00:03:11.480> one,\nnot? Um sometimes you want one,\nnot? Um sometimes you want one, sometimes<00:03:12.000> you<00:03:12.080> want<00:03:12.880> uh\nsometimes you want uh\nsometimes you want uh the<00:03:13.600> other.<00:03:14.200> So,<00:03:14.400> that's<00:03:14.640> why<00:03:14.959> it's<00:03:15.120> this<00:03:15.519> uh\nthe other. So, that's why it's this uh\nthe other. So, that's why it's this uh per<00:03:15.720> target<00:03:16.000> option<00:03:16.280> here.\nper target option here.\nper target option here. >> Hi<00:03:17.680> everyone.<00:03:18.440> Let<00:03:18.720> me<00:03:18.800> take<00:03:19.040> a<00:03:19.080> break<00:03:19.360> to\n>> Hi everyone. Let me take a break to\n>> Hi everyone. Let me take a break to thank<00:03:19.720> members<00:03:20.239> of<00:03:20.400> the<00:03:20.560> show<00:03:20.920> who<00:03:21.120> made<00:03:21.400> this\nthank members of the show who made this\nthank members of the show who made this conversation<00:03:22.280> possible.<00:03:23.239> Members<00:03:23.720> get\nconversation possible. Members get\nconversation possible. Members get earlier<00:03:24.360> access<00:03:24.760> to<00:03:24.880> videos<00:03:25.519> including\nearlier access to videos including\nearlier access to videos including longer<00:03:26.600> unedited<00:03:27.360> footage<00:03:27.880> from<00:03:28.160> live\nlonger unedited footage from live\nlonger unedited footage from live streams<00:03:29.120> as<00:03:29.400> well<00:03:29.600> as<00:03:29.760> they're<00:03:30.000> invited<00:03:30.760> to\nstreams as well as they're invited to\nstreams as well as they're invited to our<00:03:31.040> private<00:03:31.600> Discord<00:03:32.080> server.<00:03:32.880> If<00:03:33.080> you<00:03:33.239> want\nour private Discord server. If you want\nour private Discord server. If you want to<00:03:33.600> support<00:03:33.959> the<00:03:34.080> show,<00:03:34.400> there<00:03:34.600> is<00:03:34.800> no<00:03:35.040> better\nto support the show, there is no better\nto support the show, there is no better way<00:03:35.600> than<00:03:35.840> becoming<00:03:36.400> a<00:03:36.480> member<00:03:37.040> on<00:03:37.280> YouTube<00:03:37.800> or\nway than becoming a member on YouTube or\nway than becoming a member on YouTube or Patreon.<00:03:38.959> Thank<00:03:39.280> you<00:03:39.600> so<00:03:39.840> much.\nPatreon. Thank you so much.\nPatreon. Thank you so much. >> So,<00:03:41.480> anyways,<00:03:42.360> when<00:03:42.519> you<00:03:42.640> run<00:03:43.360> the<00:03:43.920> debugger\n>> So, anyways, when you run the debugger\n>> So, anyways, when you run the debugger with<00:03:45.280> that<00:03:45.440> command<00:03:45.760> line,<00:03:46.000> it'll<00:03:46.280> create<00:03:46.519> one\nwith that command line, it'll create one\nwith that command line, it'll create one of<00:03:46.720> these<00:03:47.120> just<00:03:47.360> for<00:03:47.600> you.<00:03:48.440> Um<00:03:48.519> it'll<00:03:48.640> be\nof these just for you. Um it'll be\nof these just for you. Um it'll be thrown<00:03:49.000> away<00:03:49.239> when<00:03:49.400> you<00:03:49.519> exit<00:03:49.800> the<00:03:49.880> debugger.\nthrown away when you exit the debugger.\nthrown away when you exit the debugger. So,<00:03:50.440> it<00:03:50.519> won't<00:03:51.160> uh<00:03:51.320> like<00:03:51.680> stick<00:03:51.880> around.<00:03:52.160> You\nSo, it won't uh like stick around. You\nSo, it won't uh like stick around. You can<00:03:52.360> run<00:03:52.960> the<00:03:53.040> debugger<00:03:53.360> that<00:03:53.520> way<00:03:53.680> every\ncan run the debugger that way every\ncan run the debugger that way every single<00:03:54.080> time<00:03:54.320> if<00:03:54.440> you<00:03:54.520> want<00:03:54.720> to.\nsingle time if you want to.\nsingle time if you want to. Um\nUm\nUm Or<00:03:57.040> you<00:03:57.120> can<00:03:57.280> create<00:03:57.480> a<00:03:57.520> target<00:03:57.840> within<00:03:58.080> the\nOr you can create a target within the\nOr you can create a target within the context<00:03:58.880> of<00:03:59.680> the<00:03:59.800> debugger's<00:04:00.240> UI.<00:04:00.560> So,<00:04:00.720> to<00:04:00.840> do\ncontext of the debugger's UI. So, to do\ncontext of the debugger's UI. So, to do that,<00:04:01.240> all<00:04:01.320> you<00:04:01.440> do<00:04:01.840> is<00:04:02.720> you<00:04:02.800> can<00:04:02.920> click<00:04:03.120> this\nthat, all you do is you can click this\nthat, all you do is you can click this add<00:04:03.520> target<00:04:03.840> thing.<00:04:04.160> Actually,<00:04:04.680> maybe<00:04:04.920> what<00:04:05.080> I\nadd target thing. Actually, maybe what I\nadd target thing. Actually, maybe what I should<00:04:05.280> do<00:04:05.560> is<00:04:05.720> show<00:04:05.920> how<00:04:06.040> the<00:04:06.160> UI<00:04:07.120> paneling\nshould do is show how the UI paneling\nshould do is show how the UI paneling works<00:04:07.760> first.<00:04:08.160> So,<00:04:08.320> like<00:04:09.160> um<00:04:09.560> cuz\nworks first. So, like um cuz\nworks first. So, like um cuz it<00:04:10.680> comes<00:04:11.000> like<00:04:11.160> preloaded<00:04:11.640> with<00:04:11.760> a<00:04:11.800> bunch<00:04:12.000> of\nit comes like preloaded with a bunch of\nit comes like preloaded with a bunch of default<00:04:12.520> layouts<00:04:12.920> or<00:04:13.000> three<00:04:13.320> default\ndefault layouts or three default\ndefault layouts or three default layouts.<00:04:14.560> And<00:04:14.680> I<00:04:14.760> can<00:04:14.880> show<00:04:15.080> people<00:04:15.400> how<00:04:15.680> to\nlayouts. And I can show people how to\nlayouts. And I can show people how to get<00:04:17.000> to<00:04:17.079> this<00:04:17.239> tab<00:04:17.560> if<00:04:17.640> they<00:04:17.720> don't<00:04:17.959> see<00:04:18.160> it<00:04:18.320> or\nget to this tab if they don't see it or\nget to this tab if they don't see it or or<00:04:18.799> have<00:04:19.000> it<00:04:19.079> or<00:04:19.160> something<00:04:19.400> like<00:04:19.519> that.<00:04:19.760> So,\nor have it or something like that. So,\nor have it or something like that. So, um<00:04:21.000> obviously<00:04:21.880> um\num obviously um\num obviously um uh<00:04:23.720> when<00:04:24.400> this<00:04:24.600> is<00:04:24.720> one<00:04:24.840> of<00:04:24.919> the<00:04:25.000> default\nuh when this is one of the default\nuh when this is one of the default layouts,<00:04:26.280> uh<00:04:26.680> and<00:04:26.840> I<00:04:26.919> pick<00:04:27.160> one<00:04:27.280> of<00:04:27.320> these\nlayouts, uh and I pick one of these\nlayouts, uh and I pick one of these depending<00:04:27.800> on<00:04:27.919> screen<00:04:28.240> size.<00:04:28.520> So,<00:04:29.080> the\ndepending on screen size. So, the\ndepending on screen size. So, the default<00:04:29.600> layout<00:04:29.840> is<00:04:29.960> like<00:04:30.160> this,<00:04:30.400> but<00:04:30.520> you<00:04:30.600> can\ndefault layout is like this, but you can\ndefault layout is like this, but you can see<00:04:30.840> it<00:04:30.960> doesn't<00:04:31.240> work<00:04:31.440> super<00:04:31.720> well<00:04:31.960> when<00:04:32.080> you\nsee it doesn't work super well when you\nsee it doesn't work super well when you have<00:04:32.320> like<00:04:32.480> a<00:04:32.560> larger<00:04:32.880> font<00:04:33.120> size.<00:04:33.360> Like,<00:04:33.480> if\nhave like a larger font size. Like, if\nhave like a larger font size. Like, if you're<00:04:33.680> on<00:04:33.760> a<00:04:33.800> super<00:04:34.080> high<00:04:34.240> DPI<00:04:35.360> monitor,<00:04:35.840> this\nyou're on a super high DPI monitor, this\nyou're on a super high DPI monitor, this is<00:04:36.080> just<00:04:36.320> a<00:04:36.360> little<00:04:36.560> bit<00:04:36.919> like<00:04:37.560> chaotic.<00:04:38.280> Um\nis just a little bit like chaotic. Um\nis just a little bit like chaotic. Um in<00:04:38.919> fact,<00:04:39.120> I<00:04:39.160> think<00:04:39.320> it<00:04:39.360> might<00:04:39.480> be<00:04:39.560> a<00:04:39.600> little\nin fact, I think it might be a little\nin fact, I think it might be a little bit<00:04:40.080> too<00:04:40.240> chaotic<00:04:40.680> anyways,<00:04:41.080> but<00:04:41.200> it's\nbit too chaotic anyways, but it's\nbit too chaotic anyways, but it's especially<00:04:41.840> chaotic<00:04:42.200> if<00:04:42.320> you<00:04:42.400> have<00:04:42.560> like<00:04:42.720> a\nespecially chaotic if you have like a\nespecially chaotic if you have like a smaller\nsmaller\nsmaller um<00:04:44.720> if<00:04:44.880> you<00:04:44.919> have<00:04:45.040> a<00:04:45.080> larger<00:04:45.320> font<00:04:45.560> size,\num if you have a larger font size,\num if you have a larger font size, basically,<00:04:46.440> um<00:04:46.840> on<00:04:47.080> a<00:04:47.400> higher<00:04:47.600> DPI<00:04:47.919> screen.\nbasically, um on a higher DPI screen.\nbasically, um on a higher DPI screen. So,\nSo,\nSo, um<00:04:49.960> many<00:04:50.160> times<00:04:50.400> it'll<00:04:50.560> pick<00:04:50.720> this<00:04:50.880> compact\num many times it'll pick this compact\num many times it'll pick this compact layout.\nlayout.\nlayout. This<00:04:52.840> still<00:04:53.040> has<00:04:53.200> a<00:04:53.280> lot<00:04:53.440> of<00:04:53.520> stuff<00:04:53.800> that<00:04:53.919> you\nThis still has a lot of stuff that you\nThis still has a lot of stuff that you might<00:04:54.120> just<00:04:54.280> not<00:04:54.440> care<00:04:54.640> about.<00:04:55.040> And<00:04:55.120> then\nmight just not care about. And then\nmight just not care about. And then there's<00:04:55.440> this<00:04:55.640> simple<00:04:55.960> panel<00:04:56.280> layout,<00:04:56.520> which\nthere's this simple panel layout, which\nthere's this simple panel layout, which is<00:04:56.800> literally<00:04:57.280> an<00:04:57.400> area<00:04:57.640> for<00:04:57.760> source<00:04:58.000> code<00:04:58.560> and\nis literally an area for source code and\nis literally an area for source code and an<00:04:58.760> area<00:04:59.080> for\nan area for\nan area for uh<00:05:00.360> a<00:05:00.440> watch<00:05:00.680> window.<00:05:01.040> Now,\nuh a watch window. Now,\nuh a watch window. Now, I<00:05:02.919> could<00:05:03.120> start<00:05:03.280> with<00:05:03.400> this.<00:05:04.080> Um<00:05:04.880> what<00:05:05.040> I\nI could start with this. Um what I\nI could start with this. Um what I should<00:05:05.400> say<00:05:05.560> first<00:05:05.880> is<00:05:05.960> that<00:05:06.200> no-<00:05:06.440> nothing\nshould say first is that no- nothing\nshould say first is that no- nothing about<00:05:06.880> these<00:05:07.000> panels<00:05:07.320> are<00:05:07.400> special,<00:05:08.040> so<00:05:08.240> I<00:05:08.280> can\nabout these panels are special, so I can\nabout these panels are special, so I can I<00:05:08.600> can<00:05:08.840> rearrange<00:05:09.360> these<00:05:09.600> however<00:05:09.880> I<00:05:09.960> want.<00:05:10.680> Um\nI can rearrange these however I want. Um\nI can rearrange these however I want. Um it's<00:05:11.360> just<00:05:11.880> I<00:05:11.919> can<00:05:12.000> put<00:05:12.120> them<00:05:12.200> both<00:05:12.360> on<00:05:12.440> the\nit's just I can put them both on the\nit's just I can put them both on the same<00:05:12.720> tab<00:05:12.960> if<00:05:13.080> I<00:05:13.120> want<00:05:13.400> to.<00:05:13.560> I<00:05:13.640> can<00:05:13.760> do<00:05:14.480> like\nsame tab if I want to. I can do like\nsame tab if I want to. I can do like whatever<00:05:14.919> kind<00:05:15.120> of<00:05:15.200> organization<00:05:15.760> I<00:05:15.840> want,\nwhatever kind of organization I want,\nwhatever kind of organization I want, that'll<00:05:16.800> just<00:05:17.240> be<00:05:17.400> fine.<00:05:18.240> Um\nthat'll just be fine. Um\nthat'll just be fine. Um So,<00:05:19.880> if<00:05:20.120> I<00:05:20.160> have<00:05:20.400> nothing,\nSo, if I have nothing,\nSo, if I have nothing, um<00:05:22.000> it'll<00:05:22.160> just<00:05:22.360> have<00:05:22.480> this<00:05:22.680> empty<00:05:22.960> panel\num it'll just have this empty panel\num it'll just have this empty panel here.<00:05:24.000> I<00:05:24.080> can<00:05:24.600> uh<00:05:24.680> I<00:05:24.760> can<00:05:24.880> click<00:05:25.080> this<00:05:25.240> plus<00:05:25.480> to\nhere. I can uh I can click this plus to\nhere. I can uh I can click this plus to add<00:05:25.720> a<00:05:25.760> new<00:05:25.919> tab.<00:05:26.600> I<00:05:26.640> can<00:05:26.760> add<00:05:26.880> a<00:05:26.919> watch<00:05:27.200> window.\nadd a new tab. I can add a watch window.\nadd a new tab. I can add a watch window. Um<00:05:28.560> and<00:05:28.680> then<00:05:28.760> if<00:05:28.880> I<00:05:28.919> want<00:05:29.120> to<00:05:29.160> look<00:05:29.280> at<00:05:29.360> my\nUm and then if I want to look at my\nUm and then if I want to look at my targets,<00:05:30.000> I<00:05:30.080> can<00:05:30.840> uh<00:05:30.960> I<00:05:31.000> can<00:05:31.160> search<00:05:31.600> by\ntargets, I can uh I can search by\ntargets, I can uh I can search by typing,<00:05:32.320> and<00:05:32.480> there's<00:05:32.680> just<00:05:32.840> a<00:05:32.880> targets<00:05:33.200> tab\ntyping, and there's just a targets tab\ntyping, and there's just a targets tab that<00:05:33.520> I<00:05:33.560> can<00:05:33.680> open<00:05:33.880> up,<00:05:33.960> and<00:05:34.080> there's<00:05:34.320> all<00:05:34.400> my\nthat I can open up, and there's all my\nthat I can open up, and there's all my targets.\ntargets.\ntargets. Um\nUm\nUm So,<00:05:38.200> anyways,\nSo, anyways,\nSo, anyways, we're<00:05:39.520> at<00:05:39.600> the<00:05:39.680> list<00:05:39.840> of<00:05:39.919> targets.<00:05:40.240> We<00:05:40.280> have\nwe're at the list of targets. We have\nwe're at the list of targets. We have all<00:05:40.520> these<00:05:40.760> executables<00:05:41.280> we<00:05:41.400> can<00:05:41.560> launch<00:05:41.840> and\nall these executables we can launch and\nall these executables we can launch and debug.\ndebug.\ndebug. Um<00:05:44.840> if<00:05:45.040> I<00:05:45.160> don't<00:05:45.640> have<00:05:46.400> the<00:05:46.520> one<00:05:46.720> I<00:05:46.800> want<00:05:47.120> to<00:05:47.400> run\nUm if I don't have the one I want to run\nUm if I don't have the one I want to run from<00:05:47.800> here,<00:05:48.360> I<00:05:48.440> can<00:05:48.600> click<00:05:48.800> add<00:05:49.000> target,\nfrom here, I can click add target,\nfrom here, I can click add target, brings<00:05:49.960> up<00:05:50.080> this<00:05:50.200> little<00:05:50.440> file,<00:05:51.600> um\nbrings up this little file, um\nbrings up this little file, um this<00:05:52.880> this<00:05:53.080> like<00:05:53.400> file<00:05:53.720> browser,<00:05:54.760> um\nthis this like file browser, um\nthis this like file browser, um and<00:05:56.720> I<00:05:56.760> don't<00:05:56.960> know.<00:05:57.080> I<00:05:57.120> mean,<00:05:57.280> I've<00:05:57.400> added<00:05:57.600> all\nand I don't know. I mean, I've added all\nand I don't know. I mean, I've added all the<00:05:57.800> executables<00:05:58.360> I<00:05:58.400> care<00:05:58.640> to<00:05:58.760> show,<00:05:59.120> but<00:05:59.880> I\nthe executables I care to show, but I\nthe executables I care to show, but I can<00:06:00.160> just<00:06:00.320> go<00:06:00.520> to<00:06:00.680> like\ncan just go to like\ncan just go to like like,<00:06:02.040> you<00:06:02.120> know,<00:06:02.240> you<00:06:02.320> can<00:06:02.440> just<00:06:02.600> type\nlike, you know, you can just type\nlike, you know, you can just type find<00:06:03.960> whatever<00:06:04.200> path<00:06:04.480> you<00:06:04.600> want,<00:06:05.200> um\nfind whatever path you want, um\nfind whatever path you want, um >> at<00:06:06.040> the<00:06:06.120> debugger<00:06:06.520> itself.\n>> at the debugger itself.\n>> at the debugger itself. >> I<00:06:08.560> I<00:06:08.640> already<00:06:08.880> have<00:06:09.040> that<00:06:09.200> one<00:06:09.560> right<00:06:09.760> here.\n>> I I already have that one right here.\n>> I I already have that one right here. This<00:06:10.480> is<00:06:10.600> the<00:06:10.680> This<00:06:10.840> is<00:06:10.920> the<00:06:10.960> one<00:06:11.080> I<00:06:11.120> use<00:06:11.320> for\nThis is the This is the one I use for\nThis is the This is the one I use for actually<00:06:12.080> working<00:06:12.360> on<00:06:12.440> the<00:06:12.480> debugger,<00:06:12.800> but\nactually working on the debugger, but\nactually working on the debugger, but yeah,<00:06:13.480> I<00:06:13.520> mean,<00:06:13.680> if<00:06:13.800> I<00:06:13.880> wanted<00:06:14.200> to<00:06:14.400> do<00:06:14.600> that,\nyeah, I mean, if I wanted to do that,\nyeah, I mean, if I wanted to do that, I'd<00:06:14.920> just<00:06:15.080> do<00:06:15.840> radare2.exe,\nI'd just do radare2.exe,\nI'd just do radare2.exe, opens<00:06:17.760> up<00:06:17.880> the<00:06:17.960> editor<00:06:18.320> for<00:06:18.520> it.<00:06:18.600> I<00:06:18.640> can<00:06:18.760> say\nopens up the editor for it. I can say\nopens up the editor for it. I can say like<00:06:19.200> dash<00:06:19.480> foo,<00:06:19.720> dash<00:06:20.000> bar,<00:06:20.960> um<00:06:21.040> whatever<00:06:21.280> I\nlike dash foo, dash bar, um whatever I\nlike dash foo, dash bar, um whatever I want<00:06:21.640> here,<00:06:22.360> um<00:06:22.640> and<00:06:22.760> then\nwant here, um and then\nwant here, um and then this<00:06:24.240> is<00:06:24.320> something<00:06:24.560> I<00:06:24.600> can<00:06:24.720> now<00:06:24.919> launch.<00:06:25.440> So,\nthis is something I can now launch. So,\nthis is something I can now launch. So, I'll<00:06:25.960> remove<00:06:26.240> it<00:06:26.360> cuz<00:06:26.560> I<00:06:26.640> already<00:06:26.880> have<00:06:27.080> one\nI'll remove it cuz I already have one\nI'll remove it cuz I already have one for<00:06:27.440> it.\nfor it.\nfor it. Um\nUm\nUm but<00:06:30.280> anyways,<00:06:30.640> I've<00:06:30.760> got<00:06:31.200> an<00:06:31.280> executable<00:06:31.760> that\nbut anyways, I've got an executable that\nbut anyways, I've got an executable that I<00:06:31.919> want<00:06:32.080> to<00:06:32.160> debug.<00:06:33.120> Um<00:06:33.640> I<00:06:33.919> can<00:06:34.280> either<00:06:34.720> run<00:06:35.000> it.\nI want to debug. Um I can either run it.\nI want to debug. Um I can either run it. Um<00:06:35.840> in<00:06:35.960> this<00:06:36.080> case,<00:06:36.240> it's<00:06:36.360> a<00:06:36.400> test<00:06:36.720> executable\nUm in this case, it's a test executable\nUm in this case, it's a test executable that<00:06:37.520> you<00:06:37.640> want<00:06:37.840> to<00:06:37.919> step<00:06:38.160> through,<00:06:38.480> so<00:06:38.640> I\nthat you want to step through, so I\nthat you want to step through, so I won't<00:06:39.080> I<00:06:39.120> won't<00:06:39.280> do<00:06:39.360> that.<00:06:40.080> Um<00:06:40.560> but<00:06:40.640> I<00:06:40.680> can<00:06:40.760> also\nwon't I won't do that. Um but I can also\nwon't I won't do that. Um but I can also step<00:06:41.240> into<00:06:41.480> it<00:06:41.600> using<00:06:41.960> either<00:06:42.160> step<00:06:42.400> over<00:06:42.600> step\nstep into it using either step over step\nstep into it using either step over step uh<00:06:43.440> into.<00:06:43.760> It<00:06:43.840> doesn't<00:06:44.120> matter<00:06:44.360> which\nuh into. It doesn't matter which\nuh into. It doesn't matter which command,<00:06:45.000> but<00:06:45.760> um\ncommand, but um\ncommand, but um so<00:06:47.000> I<00:06:47.040> can<00:06:47.160> run<00:06:47.360> either<00:06:47.560> one<00:06:47.680> of<00:06:47.760> these<00:06:47.919> to<00:06:48.000> get\nso I can run either one of these to get\nso I can run either one of these to get into<00:06:48.280> the<00:06:48.360> program.<00:06:48.960> Now,<00:06:49.720> another<00:06:50.080> thing<00:06:50.240> I\ninto the program. Now, another thing I\ninto the program. Now, another thing I should<00:06:50.440> mention<00:06:50.680> about<00:06:50.880> the<00:06:50.960> UI<00:06:51.320> before\nshould mention about the UI before\nshould mention about the UI before getting<00:06:52.360> into<00:06:52.480> the<00:06:52.600> actual<00:06:52.840> debugging,\ngetting into the actual debugging,\ngetting into the actual debugging, 100%<00:06:55.440> of<00:06:55.520> the<00:06:55.600> operations<00:06:56.160> I've<00:06:56.600> covered<00:06:56.919> so\n100% of the operations I've covered so\n100% of the operations I've covered so far<00:06:57.480> can<00:06:57.760> be<00:06:58.000> done<00:06:58.560> through<00:06:59.240> uh<00:06:59.680> generalized\nfar can be done through uh generalized\nfar can be done through uh generalized command<00:07:01.040> lister.<00:07:01.400> So,<00:07:01.600> basically,<00:07:02.120> if<00:07:02.240> you\ncommand lister. So, basically, if you\ncommand lister. So, basically, if you hit<00:07:02.560> the<00:07:02.680> help<00:07:03.440> menu<00:07:03.720> up<00:07:03.840> here,<00:07:04.520> it's<00:07:04.720> got<00:07:04.960> a\nhit the help menu up here, it's got a\nhit the help menu up here, it's got a search<00:07:05.320> for<00:07:05.440> commands<00:07:05.760> and<00:07:05.880> settings,<00:07:06.360> and\nsearch for commands and settings, and\nsearch for commands and settings, and you<00:07:06.560> can<00:07:06.640> see<00:07:06.800> you<00:07:06.919> can<00:07:07.160> you<00:07:07.280> can<00:07:08.000> trigger<00:07:08.240> this\nyou can see you can you can trigger this\nyou can see you can you can trigger this quickly<00:07:08.760> by<00:07:08.880> hitting<00:07:09.120> F1.<00:07:10.080> But<00:07:10.160> if<00:07:10.240> I<00:07:10.320> click\nquickly by hitting F1. But if I click\nquickly by hitting F1. But if I click that,<00:07:10.720> it<00:07:10.800> opens<00:07:11.160> up<00:07:11.480> this\nthat, it opens up this\nthat, it opens up this uh<00:07:12.880> lister<00:07:13.240> here,<00:07:13.520> and<00:07:13.600> this<00:07:13.720> shows<00:07:13.960> all<00:07:14.160> of\nuh lister here, and this shows all of\nuh lister here, and this shows all of the<00:07:14.360> commands<00:07:14.680> that<00:07:14.800> you<00:07:14.880> can<00:07:15.000> do<00:07:15.160> in<00:07:15.240> the\nthe commands that you can do in the\nthe commands that you can do in the debugger.<00:07:15.680> So,<00:07:15.800> I<00:07:15.840> can<00:07:16.000> say<00:07:16.200> like<00:07:17.040> a<00:07:17.200> launch\ndebugger. So, I can say like a launch\ndebugger. So, I can say like a launch and<00:07:17.919> step<00:07:18.200> into\nand step into\nand step into um<00:07:19.760> if<00:07:19.919> I<00:07:19.960> run<00:07:20.200> that,<00:07:20.560> it'll<00:07:20.720> ask<00:07:20.919> me<00:07:21.000> for<00:07:21.120> a\num if I run that, it'll ask me for a\num if I run that, it'll ask me for a target,<00:07:21.840> and<00:07:21.919> then<00:07:22.040> if<00:07:22.160> I<00:07:22.240> click<00:07:22.480> one,\ntarget, and then if I click one,\ntarget, and then if I click one, uh<00:07:23.480> it'll<00:07:24.360> step<00:07:24.680> into<00:07:24.919> that<00:07:25.280> target<00:07:25.600> that<00:07:25.720> I\nuh it'll step into that target that I\nuh it'll step into that target that I that<00:07:26.080> I<00:07:26.120> picked.<00:07:26.400> That's<00:07:27.080> uh<00:07:27.160> that's<00:07:27.760> a<00:07:27.840> slower\nthat I picked. That's uh that's a slower\nthat I picked. That's uh that's a slower path<00:07:28.600> for<00:07:28.760> just<00:07:28.960> like<00:07:29.160> if<00:07:29.320> I've<00:07:29.440> got<00:07:29.640> this\npath for just like if I've got this\npath for just like if I've got this target<00:07:30.120> selected,<00:07:30.880> and<00:07:30.960> if<00:07:31.080> I<00:07:31.120> hit<00:07:31.360> F10<00:07:32.000> or\ntarget selected, and if I hit F10 or\ntarget selected, and if I hit F10 or F11,<00:07:33.160> then<00:07:33.360> it'll<00:07:33.560> just<00:07:33.800> get<00:07:33.960> me<00:07:34.360> to<00:07:34.480> the<00:07:34.560> same\nF11, then it'll just get me to the same\nF11, then it'll just get me to the same spot.<00:07:34.960> So,<00:07:35.040> I've<00:07:35.160> stepped<00:07:35.520> into<00:07:35.760> the<00:07:35.840> program.\nspot. So, I've stepped into the program.\nspot. So, I've stepped into the program. Um<00:07:37.680> and<00:07:37.760> now<00:07:37.919> that<00:07:38.080> I'm<00:07:38.400> now<00:07:38.520> that<00:07:38.640> I'm<00:07:38.760> here,\nUm and now that I'm now that I'm here,\nUm and now that I'm now that I'm here, let<00:07:39.840> me<00:07:39.960> do\nlet me do\nlet me do um\num\num this<00:07:42.840> layout<00:07:43.120> here.\nthis layout here.\nthis layout here. >> [snorts]\n>> [snorts]\n>> [snorts] >> So,<00:07:44.840> uh<00:07:44.920> um\n>> So, uh um\n>> So, uh um So,<00:07:47.040> yeah,<00:07:47.200> I've<00:07:47.320> got<00:07:47.480> my<00:07:47.600> watch<00:07:47.800> window<00:07:48.120> and\nSo, yeah, I've got my watch window and\nSo, yeah, I've got my watch window and I've<00:07:48.400> got<00:07:48.680> my<00:07:49.080> source<00:07:49.400> view.<00:07:49.600> In<00:07:49.680> the<00:07:49.760> source\nI've got my source view. In the source\nI've got my source view. In the source view,<00:07:50.200> obviously,<00:07:50.520> I<00:07:50.560> can<00:07:50.720> see<00:07:50.920> where<00:07:51.200> my\nview, obviously, I can see where my\nview, obviously, I can see where my thread<00:07:51.680> happens<00:07:52.000> to<00:07:52.080> be.\nthread happens to be.\nthread happens to be. Um\nUm\nUm with<00:07:54.320> the<00:07:54.400> step<00:07:54.640> over<00:07:54.840> step<00:07:55.080> into<00:07:55.280> commands\nwith the step over step into commands\nwith the step over step into commands and<00:07:56.000> step<00:07:56.280> out,<00:07:56.600> these<00:07:56.840> are<00:07:56.960> three<00:07:57.560> super\nand step out, these are three super\nand step out, these are three super common<00:07:58.080> debugger<00:07:58.400> commands.<00:07:58.720> Step<00:07:58.920> over\ncommon debugger commands. Step over\ncommon debugger commands. Step over means<00:07:59.320> stepping<00:07:59.680> over<00:07:59.920> a<00:07:59.960> line<00:08:00.160> of<00:08:00.240> source\nmeans stepping over a line of source\nmeans stepping over a line of source code<00:08:00.760> even<00:08:00.960> if<00:08:01.080> that\ncode even if that\ncode even if that code<00:08:02.400> were<00:08:02.520> to<00:08:02.640> call<00:08:03.000> into<00:08:03.240> a<00:08:03.280> function,\ncode were to call into a function,\ncode were to call into a function, um<00:08:04.720> it<00:08:04.840> steps<00:08:05.120> over<00:08:05.360> it.<00:08:05.640> But,<00:08:05.760> if<00:08:05.840> I<00:08:05.920> want<00:08:06.080> to\num it steps over it. But, if I want to\num it steps over it. But, if I want to step<00:08:06.480> into<00:08:06.720> a<00:08:06.800> function<00:08:07.160> call,<00:08:07.440> I<00:08:07.480> hit<00:08:07.680> F11<00:08:08.240> or\nstep into a function call, I hit F11 or\nstep into a function call, I hit F11 or uh<00:08:09.040> run<00:08:09.560> otherwise<00:08:10.000> just<00:08:10.160> run<00:08:10.280> the<00:08:10.360> step<00:08:10.560> into\nuh run otherwise just run the step into\nuh run otherwise just run the step into command.\ncommand.\ncommand. Um<00:08:12.400> and<00:08:12.520> then<00:08:12.640> it'll<00:08:13.200> it'll<00:08:13.400> jump<00:08:13.680> into<00:08:13.880> a\nUm and then it'll it'll jump into a\nUm and then it'll it'll jump into a function<00:08:14.240> call<00:08:14.400> that<00:08:14.560> way.<00:08:15.360> Um<00:08:15.720> if<00:08:15.880> I<00:08:15.919> want<00:08:16.200> to\nfunction call that way. Um if I want to\nfunction call that way. Um if I want to get<00:08:16.720> out<00:08:16.840> of<00:08:16.919> a<00:08:16.960> function<00:08:17.280> call,<00:08:17.440> I<00:08:17.480> have<00:08:17.600> to\nget out of a function call, I have to\nget out of a function call, I have to run<00:08:17.840> step<00:08:18.160> out,<00:08:18.640> which<00:08:18.800> is<00:08:18.919> shift<00:08:19.200> F11.\nrun step out, which is shift F11.\nrun step out, which is shift F11. That'll<00:08:21.120> pop<00:08:21.320> me<00:08:21.400> back.<00:08:21.919> It<00:08:21.960> basically<00:08:22.240> runs\nThat'll pop me back. It basically runs\nThat'll pop me back. It basically runs to<00:08:22.520> the<00:08:22.600> end<00:08:22.680> of<00:08:22.760> the<00:08:22.800> function<00:08:23.200> until<00:08:23.440> the\nto the end of the function until the\nto the end of the function until the function<00:08:23.840> exits<00:08:24.200> and<00:08:24.280> then<00:08:24.440> it<00:08:24.560> and<00:08:24.680> then<00:08:24.760> it\nfunction exits and then it and then it\nfunction exits and then it and then it pops<00:08:25.520> out<00:08:25.640> and<00:08:26.000> and<00:08:26.160> ends<00:08:26.760> wherever<00:08:27.520> wherever\npops out and and ends wherever wherever\npops out and and ends wherever wherever the<00:08:27.840> return<00:08:28.120> point<00:08:28.360> is.\nthe return point is.\nthe return point is. Um\nUm\nUm so,<00:08:30.840> I<00:08:30.880> can<00:08:30.905> [clears throat]<00:08:31.000> click<00:08:31.160> and<00:08:31.240> drag\nso, I can [clears throat] click and drag\nso, I can [clears throat] click and drag a<00:08:31.560> thread<00:08:31.800> as<00:08:31.919> well.<00:08:32.080> I<00:08:32.159> just<00:08:32.320> did<00:08:32.479> that.<00:08:32.800> So,\na thread as well. I just did that. So,\na thread as well. I just did that. So, if<00:08:33.200> I<00:08:33.280> want<00:08:33.400> to<00:08:33.479> reposition<00:08:34.000> a<00:08:34.039> thread,<00:08:34.400> this\nif I want to reposition a thread, this\nif I want to reposition a thread, this doesn't<00:08:34.919> do<00:08:35.080> any<00:08:35.280> timeline<00:08:35.680> debugging<00:08:36.000> stuff\ndoesn't do any timeline debugging stuff\ndoesn't do any timeline debugging stuff right<00:08:36.400> now.<00:08:36.599> So,<00:08:37.479> um<00:08:38.240> or<00:08:38.440> well,<00:08:38.599> this<00:08:38.760> feature\nright now. So, um or well, this feature\nright now. So, um or well, this feature would<00:08:39.200> never<00:08:39.400> do<00:08:39.520> that.\nwould never do that.\nwould never do that. >> Wait,<00:08:40.159> wait,<00:08:40.280> wait,<00:08:40.400> wait,<00:08:40.520> wait.<00:08:40.800> What<00:08:41.320> Wait,\n>> Wait, wait, wait, wait, wait. What Wait,\n>> Wait, wait, wait, wait, wait. What Wait, what<00:08:41.719> you<00:08:41.840> can<00:08:42.039> do?<00:08:42.400> What<00:08:42.760> would<00:08:43.039> you<00:08:43.120> can<00:08:43.599> you\nwhat you can do? What would you can you\nwhat you can do? What would you can you can<00:08:43.880> drag<00:08:44.280> a<00:08:44.360> thread?\ncan drag a thread?\ncan drag a thread? >> Oh,<00:08:46.440> yeah.<00:08:46.680> So,<00:08:46.839> here<00:08:47.000> So,<00:08:47.120> here<00:08:47.600> here's<00:08:47.880> the\n>> Oh, yeah. So, here So, here here's the\n>> Oh, yeah. So, here So, here here's the position<00:08:48.320> of<00:08:48.440> my<00:08:48.600> main<00:08:48.880> thread.<00:08:49.160> You<00:08:49.240> can<00:08:49.360> see\nposition of my main thread. You can see\nposition of my main thread. You can see it's<00:08:49.880> it's<00:08:50.000> got<00:08:50.160> the<00:08:50.240> name<00:08:50.640> mule<00:08:50.920> main<00:08:51.160> thread.\nit's it's got the name mule main thread.\nit's it's got the name mule main thread. And<00:08:51.760> this<00:08:51.880> is<00:08:52.000> its<00:08:52.120> call<00:08:52.360> stack,<00:08:52.640> too,<00:08:52.800> when<00:08:52.920> I\nAnd this is its call stack, too, when I\nAnd this is its call stack, too, when I hover<00:08:53.240> it.<00:08:53.400> So,<00:08:53.520> you<00:08:53.600> can<00:08:53.720> see<00:08:54.560> mule<00:08:54.839> main,<00:08:55.440> win\nhover it. So, you can see mule main, win\nhover it. So, you can see mule main, win main,<00:08:56.480> um\nmain, um\nmain, um >> Yeah.\n>> Yeah.\n>> Yeah. >> Basically,<00:08:57.960> there's<00:08:58.120> the<00:08:58.200> full<00:08:58.360> call<00:08:58.520> stack.\n>> Basically, there's the full call stack.\n>> Basically, there's the full call stack. So,<00:08:58.720> you<00:08:58.800> have<00:08:58.880> a<00:08:58.920> couple<00:08:59.120> things<00:08:59.360> in<00:08:59.600> in<00:08:59.760> like\nSo, you have a couple things in in like\nSo, you have a couple things in in like the<00:09:00.440> from<00:09:01.000> the<00:09:01.120> kernel,<00:09:01.760> um<00:09:02.200> not<00:09:02.400> literally\nthe from the kernel, um not literally\nthe from the kernel, um not literally the<00:09:02.800> kernel,<00:09:03.040> but<00:09:03.520> the<00:09:03.640> user<00:09:03.880> space<00:09:04.120> of<00:09:04.200> the\nthe kernel, but the user space of the\nthe kernel, but the user space of the kernel.<00:09:05.200> And<00:09:05.280> then<00:09:05.440> you<00:09:05.520> have<00:09:05.800> s<00:09:06.000> e<00:09:06.080> r<00:09:06.160> t<00:09:06.360> common\nkernel. And then you have s e r t common\nkernel. And then you have s e r t common main,<00:09:07.360> s<00:09:07.560> e<00:09:07.839> a<00:09:08.400> s<00:09:08.640> e<00:09:08.839> h,<00:09:09.200> and<00:09:09.320> then<00:09:09.480> invoke<00:09:09.920> main,\nmain, s e a s e h, and then invoke main,\nmain, s e a s e h, and then invoke main, which<00:09:10.280> is<00:09:10.400> an<00:09:10.520> inline<00:09:11.000> function.<00:09:11.600> And<00:09:11.680> then\nwhich is an inline function. And then\nwhich is an inline function. And then you<00:09:12.120> have<00:09:12.280> win<00:09:12.480> main,<00:09:12.720> which<00:09:12.839> is<00:09:12.960> actually<00:09:13.240> in\nyou have win main, which is actually in\nyou have win main, which is actually in this<00:09:13.440> program.<00:09:13.760> And<00:09:13.839> then<00:09:13.960> you<00:09:14.000> have<00:09:14.160> mule\nthis program. And then you have mule\nthis program. And then you have mule main,<00:09:15.240> which<00:09:15.440> is<00:09:15.520> just<00:09:15.760> this<00:09:15.920> function<00:09:16.240> right\nmain, which is just this function right\nmain, which is just this function right here.\nhere.\nhere. So,<00:09:17.240> that's<00:09:17.440> the<00:09:17.520> call<00:09:17.720> stack.<00:09:17.960> This<00:09:18.120> is<00:09:18.200> the\nSo, that's the call stack. This is the\nSo, that's the call stack. This is the thread.<00:09:18.760> And<00:09:18.880> if<00:09:19.000> I<00:09:19.040> want<00:09:19.280> to<00:09:19.440> reposition<00:09:20.480> the\nthread. And if I want to reposition the\nthread. And if I want to reposition the instruction<00:09:21.080> pointer<00:09:21.360> of<00:09:21.440> the<00:09:21.520> thread,<00:09:22.160> cuz\ninstruction pointer of the thread, cuz\ninstruction pointer of the thread, cuz this<00:09:22.680> arrow<00:09:23.000> is<00:09:23.080> showing<00:09:23.520> what<00:09:23.680> instruction\nthis arrow is showing what instruction\nthis arrow is showing what instruction is<00:09:24.200> going<00:09:24.320> to<00:09:24.400> execute<00:09:24.760> next,<00:09:25.080> right?<00:09:25.560> Or<00:09:25.680> what\nis going to execute next, right? Or what\nis going to execute next, right? Or what code<00:09:26.080> is<00:09:26.160> going<00:09:26.280> to<00:09:26.360> execute<00:09:26.720> next.<00:09:27.440> If<00:09:27.560> I\ncode is going to execute next. If I\ncode is going to execute next. If I wanted<00:09:27.880> to<00:09:27.960> change<00:09:28.280> that,<00:09:28.560> I<00:09:28.720> just<00:09:29.200> I<00:09:29.280> can\nwanted to change that, I just I can\nwanted to change that, I just I can click<00:09:29.640> and<00:09:29.720> drag<00:09:30.040> the<00:09:30.120> thread.\nclick and drag the thread.\nclick and drag the thread. But,<00:09:31.480> then<00:09:31.640> you<00:09:31.720> will\nBut, then you will\nBut, then you will >> say,<00:09:32.160> \"Hey,<00:09:32.360> I<00:09:32.440> actually<00:09:32.880> skip<00:09:33.360> the<00:09:33.720> the<00:09:33.800> ones\n>> say, \"Hey, I actually skip the the ones\n>> say, \"Hey, I actually skip the the ones in<00:09:34.160> between?\"\nin between?\"\nin between?\" No,<00:09:35.960> so<00:09:36.120> it<00:09:36.160> just<00:09:36.440> changes<00:09:36.800> the<00:09:36.920> position<00:09:37.360> of\nNo, so it just changes the position of\nNo, so it just changes the position of the<00:09:37.560> thread's<00:09:37.960> instruction<00:09:38.440> pointer.<00:09:38.840> So,<00:09:39.480> um\nthe thread's instruction pointer. So, um\nthe thread's instruction pointer. So, um all<00:09:40.000> the<00:09:40.440> like<00:09:40.640> it's<00:09:40.760> not<00:09:40.920> changing<00:09:41.200> any\nall the like it's not changing any\nall the like it's not changing any memory<00:09:41.880> or<00:09:42.040> anything.<00:09:42.320> It's<00:09:42.760> only<00:09:43.040> changing\nmemory or anything. It's only changing\nmemory or anything. It's only changing the<00:09:43.440> instruction<00:09:43.840> pointer<00:09:44.080> register,\nthe instruction pointer register,\nthe instruction pointer register, actually,<00:09:45.680> of<00:09:45.800> the<00:09:45.880> thread.\nactually, of the thread.\nactually, of the thread. Um<00:09:47.160> so,<00:09:47.280> you<00:09:47.360> can<00:09:47.520> rerun<00:09:47.920> code<00:09:48.480> this<00:09:48.720> way.<00:09:49.320> Um\nUm so, you can rerun code this way. Um\nUm so, you can rerun code this way. Um if<00:09:50.680> you<00:09:50.800> have<00:09:51.000> pretty<00:09:51.200> deterministic<00:09:51.800> code,\nif you have pretty deterministic code,\nif you have pretty deterministic code, this<00:09:52.280> actually<00:09:52.560> gets<00:09:52.800> you<00:09:52.960> like,<00:09:53.720> you<00:09:53.800> know,\nthis actually gets you like, you know,\nthis actually gets you like, you know, pretty<00:09:54.200> close<00:09:54.560> to<00:09:54.720> the<00:09:54.920> full,<00:09:55.800> uh\npretty close to the full, uh\npretty close to the full, uh like<00:09:56.560> this<00:09:56.760> is<00:09:57.040> a<00:09:57.120> lot<00:09:57.440> like<00:09:57.680> timeline\nlike this is a lot like timeline\nlike this is a lot like timeline debugging<00:09:58.560> if<00:09:58.840> you<00:09:59.320> have<00:09:59.600> pretty\ndebugging if you have pretty\ndebugging if you have pretty deterministic<00:10:00.480> code,<00:10:01.280> where<00:10:01.440> time<00:10:01.760> travel<00:10:02.120> or\ndeterministic code, where time travel or\ndeterministic code, where time travel or I<00:10:02.480> shouldn't<00:10:02.680> say<00:10:02.760> timeline<00:10:03.120> debugging.<00:10:03.400> I\nI shouldn't say timeline debugging. I\nI shouldn't say timeline debugging. I should<00:10:03.600> say<00:10:03.720> time<00:10:04.120> travel<00:10:04.440> debugging.\nshould say time travel debugging.\nshould say time travel debugging. Um<00:10:06.240> which<00:10:06.400> are<00:10:06.520> different<00:10:06.840> things,<00:10:07.120> but\nUm which are different things, but\nUm which are different things, but So,<00:10:08.720> time<00:10:09.040> travel<00:10:09.280> debugging<00:10:09.600> people<00:10:10.040> will\nSo, time travel debugging people will\nSo, time travel debugging people will often<00:10:10.360> think<00:10:10.520> of<00:10:10.720> features<00:10:11.040> like<00:10:11.160> step\noften think of features like step\noften think of features like step backwards,<00:10:12.080> for<00:10:12.200> example.<00:10:12.640> Like,<00:10:13.120> you<00:10:13.200> know,\nbackwards, for example. Like, you know,\nbackwards, for example. Like, you know, if<00:10:13.400> you<00:10:13.480> step<00:10:13.720> forward,<00:10:14.640> you<00:10:14.720> might<00:10:14.840> also<00:10:15.040> want\nif you step forward, you might also want\nif you step forward, you might also want to<00:10:15.280> say<00:10:15.440> like,<00:10:15.640> \"Hey,<00:10:16.160> like<00:10:16.320> I<00:10:16.360> want<00:10:16.520> to<00:10:16.560> go\nto say like, \"Hey, like I want to go\nto say like, \"Hey, like I want to go back<00:10:17.040> to<00:10:17.120> this<00:10:17.560> to<00:10:17.680> the<00:10:17.760> point<00:10:18.000> in<00:10:18.080> time<00:10:18.480> in\nback to this to the point in time in\nback to this to the point in time in history<00:10:19.720> where<00:10:19.920> my<00:10:20.040> thread<00:10:20.320> was<00:10:20.440> here.\"<00:10:21.440> Um\nhistory where my thread was here.\" Um\nhistory where my thread was here.\" Um that<00:10:22.800> that<00:10:23.440> feature's<00:10:23.920> pretty<00:10:24.360> complicated\nthat that feature's pretty complicated\nthat that feature's pretty complicated and<00:10:24.920> not<00:10:25.160> supported<00:10:25.560> by<00:10:25.640> the<00:10:25.720> debugger<00:10:25.960> right\nand not supported by the debugger right\nand not supported by the debugger right now.<00:10:26.280> But,<00:10:26.440> you<00:10:26.520> can<00:10:26.640> rerun<00:10:27.040> code<00:10:27.240> by\nnow. But, you can rerun code by\nnow. But, you can rerun code by repositioning<00:10:27.960> your<00:10:28.080> thread.<00:10:28.440> Anyways,\nrepositioning your thread. Anyways,\nrepositioning your thread. Anyways, that's<00:10:28.880> kind<00:10:29.040> of<00:10:29.120> a<00:10:29.160> tangent.<00:10:29.960> We're<00:10:30.080> still\nthat's kind of a tangent. We're still\nthat's kind of a tangent. We're still not<00:10:30.560> We're<00:10:30.680> still<00:10:30.800> doing<00:10:31.080> basic<00:10:31.400> usage<00:10:31.720> stuff.\nnot We're still doing basic usage stuff.\nnot We're still doing basic usage stuff. So,<00:10:32.080> I<00:10:32.120> should<00:10:32.560> I<00:10:32.600> should<00:10:33.080> maybe<00:10:33.360> hold<00:10:33.600> off<00:10:33.760> on\nSo, I should I should maybe hold off on\nSo, I should I should maybe hold off on this<00:10:34.000> stuff,<00:10:34.200> but<00:10:34.760> Anyways,<00:10:35.120> so<00:10:35.200> I<00:10:35.240> can<00:10:35.400> step\nthis stuff, but Anyways, so I can step\nthis stuff, but Anyways, so I can step through<00:10:36.440> and<00:10:36.880> if<00:10:37.000> I<00:10:37.080> have<00:10:37.200> like<00:10:37.320> a<00:10:37.400> variable\nthrough and if I have like a variable\nthrough and if I have like a variable that's<00:10:38.400> in<00:10:38.560> my<00:10:38.680> code<00:10:39.160> and<00:10:39.280> I<00:10:39.320> want<00:10:39.480> to<00:10:39.560> see<00:10:39.800> what\nthat's in my code and I want to see what\nthat's in my code and I want to see what the<00:10:40.000> value<00:10:40.400> is,<00:10:40.600> I<00:10:40.680> can<00:10:40.839> just<00:10:41.040> hover<00:10:41.720> the<00:10:41.839> name\nthe value is, I can just hover the name\nthe value is, I can just hover the name of<00:10:42.040> that<00:10:42.160> variable<00:10:42.520> in<00:10:42.640> the<00:10:42.720> code.<00:10:43.680> Um\nof that variable in the code. Um\nof that variable in the code. Um actually,<00:10:44.360> let<00:10:44.480> me<00:10:45.000> um\nactually, let me um\nactually, let me um All<00:10:46.600> this<00:10:46.760> stuff<00:10:47.120> because<00:10:47.440> I<00:10:47.560> ran<00:10:47.800> this\nAll this stuff because I ran this\nAll this stuff because I ran this function<00:10:48.240> once<00:10:48.480> already,<00:10:48.800> all<00:10:48.960> this<00:10:49.280> all\nfunction once already, all this all\nfunction once already, all this all these<00:10:49.520> variables<00:10:49.920> are<00:10:49.960> going<00:10:50.200> to<00:10:50.280> be\nthese variables are going to be\nthese variables are going to be initialized<00:10:51.040> because<00:10:51.680> the<00:10:51.760> function<00:10:52.080> will\ninitialized because the function will\ninitialized because the function will have<00:10:52.360> run.<00:10:52.600> So,<00:10:52.720> what<00:10:52.839> I'll<00:10:52.960> do<00:10:53.680> is<00:10:53.800> I'm<00:10:53.880> going\nhave run. So, what I'll do is I'm going\nhave run. So, what I'll do is I'm going to<00:10:54.520> I'm<00:10:54.640> going<00:10:54.760> to<00:10:54.839> restart<00:10:55.200> the<00:10:55.280> program.<00:10:55.880> I'm\nto I'm going to restart the program. I'm\nto I'm going to restart the program. I'm going<00:10:56.120> to<00:10:56.160> put<00:10:56.320> a<00:10:56.360> breakpoint<00:10:56.920> right<00:10:57.080> here.\ngoing to put a breakpoint right here.\ngoing to put a breakpoint right here. So,<00:10:57.440> a<00:10:57.480> breakpoint<00:10:57.920> is<00:10:58.040> basically<00:10:58.360> saying<00:10:58.680> any\nSo, a breakpoint is basically saying any\nSo, a breakpoint is basically saying any thread<00:10:59.200> that<00:10:59.360> hits<00:10:59.600> this<00:10:59.800> spot<00:11:00.160> in<00:11:00.240> the<00:11:00.320> code,\nthread that hits this spot in the code,\nthread that hits this spot in the code, let's<00:11:01.760> just<00:11:01.920> stop<00:11:02.120> the<00:11:02.200> program,<00:11:02.640> right?\nlet's just stop the program, right?\nlet's just stop the program, right? And<00:11:04.480> uh<00:11:04.600> so,<00:11:05.200> the<00:11:05.280> debugger<00:11:05.600> will<00:11:05.760> pause<00:11:06.320> the\nAnd uh so, the debugger will pause the\nAnd uh so, the debugger will pause the entire<00:11:06.800> program<00:11:07.280> when<00:11:07.520> one<00:11:07.720> thread<00:11:07.960> hits<00:11:08.200> this\nentire program when one thread hits this\nentire program when one thread hits this position.<00:11:09.120> Now,<00:11:09.200> I'm<00:11:09.320> going<00:11:09.440> to<00:11:09.520> kill<00:11:09.800> the\nposition. Now, I'm going to kill the\nposition. Now, I'm going to kill the program<00:11:10.920> by<00:11:11.040> hitting<00:11:11.320> the<00:11:11.760> the<00:11:11.839> kill<00:11:12.120> all\nprogram by hitting the the kill all\nprogram by hitting the the kill all thing<00:11:13.000> up<00:11:13.120> here.\nthing up here.\nthing up here. Um<00:11:14.560> and<00:11:14.680> then<00:11:14.760> I'm<00:11:14.839> going<00:11:14.960> to<00:11:15.000> just<00:11:15.200> run<00:11:15.360> again.\nUm and then I'm going to just run again.\nUm and then I'm going to just run again. I<00:11:16.240> could<00:11:16.360> have<00:11:16.480> done<00:11:16.640> the<00:11:16.720> same<00:11:16.960> thing<00:11:17.160> by\nI could have done the same thing by\nI could have done the same thing by doing<00:11:17.680> restart.<00:11:18.520> Just<00:11:18.880> no<00:11:19.000> difference.\ndoing restart. Just no difference.\ndoing restart. Just no difference. Anyways,<00:11:20.680> once<00:11:20.880> I'm<00:11:21.000> here,\nAnyways, once I'm here,\nAnyways, once I'm here, if<00:11:22.400> I<00:11:22.480> have<00:11:22.640> one<00:11:22.800> of<00:11:22.880> these<00:11:23.000> variables<00:11:23.400> like\nif I have one of these variables like\nif I have one of these variables like this<00:11:23.680> basics<00:11:24.240> structure,<00:11:24.640> you<00:11:24.720> can<00:11:24.839> see<00:11:24.960> it's\nthis basics structure, you can see it's\nthis basics structure, you can see it's just<00:11:25.200> filled<00:11:25.400> with<00:11:25.560> garbage.<00:11:26.440> Um\njust filled with garbage. Um\njust filled with garbage. Um but<00:11:27.360> if<00:11:27.440> I<00:11:27.520> step<00:11:27.760> over<00:11:27.880> the<00:11:27.960> initialization,\nbut if I step over the initialization,\nbut if I step over the initialization, you'll<00:11:28.800> see<00:11:28.960> that<00:11:29.520> uh<00:11:29.800> the<00:11:29.839> debugger<00:11:30.160> will\nyou'll see that uh the debugger will\nyou'll see that uh the debugger will tell<00:11:30.400> me<00:11:30.520> what's<00:11:30.720> changed.\ntell me what's changed.\ntell me what's changed. And<00:11:33.080> I<00:11:33.120> can<00:11:33.280> see<00:11:34.160> that<00:11:34.360> see<00:11:34.480> the<00:11:34.560> new<00:11:34.680> values<00:11:35.040> of\nAnd I can see that see the new values of\nAnd I can see that see the new values of all<00:11:35.240> these<00:11:35.360> things<00:11:36.320> uh\nall these things uh\nall these things uh immediately.\nimmediately.\nimmediately. So,<00:11:39.080> I<00:11:39.160> can<00:11:39.280> do<00:11:39.400> that<00:11:39.600> with<00:11:39.760> pretty<00:11:39.960> much\nSo, I can do that with pretty much\nSo, I can do that with pretty much anything<00:11:40.440> in<00:11:41.000> in<00:11:41.160> here.<00:11:41.360> We<00:11:41.440> have<00:11:41.560> strings\nanything in in here. We have strings\nanything in in here. We have strings right<00:11:42.200> here.<00:11:43.000> We<00:11:43.080> have<00:11:43.240> longer<00:11:43.640> text.<00:11:44.760> Um<00:11:44.960> this\nright here. We have longer text. Um this\nright here. We have longer text. Um this is<00:11:45.240> a<00:11:45.280> wide<00:11:45.560> string,<00:11:45.800> so<00:11:45.960> each<00:11:46.200> character<00:11:46.680> is\nis a wide string, so each character is\nis a wide string, so each character is uh\nuh\nuh a<00:11:47.960> U16<00:11:48.560> instead<00:11:48.880> of<00:11:49.000> a<00:11:49.400> instead<00:11:49.640> of<00:11:49.840> just<00:11:50.080> one\na U16 instead of a instead of just one\na U16 instead of a instead of just one byte<00:11:50.600> like<00:11:50.760> the<00:11:51.000> it's<00:11:51.160> UTF-16<00:11:51.880> instead<00:11:52.080> of\nbyte like the it's UTF-16 instead of\nbyte like the it's UTF-16 instead of UTF-8.<00:11:53.200> Um<00:11:53.520> so,<00:11:53.640> we<00:11:53.680> can<00:11:53.800> visualize<00:11:54.160> that.<00:11:55.080> Um\nUTF-8. Um so, we can visualize that. Um\nUTF-8. Um so, we can visualize that. Um There's<00:11:56.120> a<00:11:56.160> bunch<00:11:56.360> of<00:11:56.440> like<00:11:56.840> evaluation<00:11:57.440> tests\nThere's a bunch of like evaluation tests\nThere's a bunch of like evaluation tests in<00:11:57.800> here.<00:11:58.040> I've<00:11:58.160> got<00:11:58.320> this<00:11:58.480> fixed<00:11:58.760> array<00:11:59.000> right\nin here. I've got this fixed array right\nin here. I've got this fixed array right here.\nhere.\nhere. Um\nUm\nUm and<00:12:02.720> then<00:12:03.240> count<00:12:03.560> member<00:12:03.840> like<00:12:04.040> the<00:12:04.160> it's<00:12:04.320> just\nand then count member like the it's just\nand then count member like the it's just this<00:12:04.600> structure.<00:12:05.400> The<00:12:05.440> other<00:12:05.560> thing<00:12:05.720> you<00:12:05.800> can\nthis structure. The other thing you can\nthis structure. The other thing you can do<00:12:05.960> is<00:12:06.040> evaluate<00:12:06.400> type<00:12:06.640> info.<00:12:06.960> So,<00:12:07.120> if<00:12:07.240> I<00:12:07.280> want\ndo is evaluate type info. So, if I want\ndo is evaluate type info. So, if I want to<00:12:07.480> look<00:12:07.600> at<00:12:07.840> what<00:12:08.040> this<00:12:08.200> type<00:12:08.480> is,<00:12:09.040> I<00:12:09.120> can<00:12:09.600> uh<00:12:10.000> I\nto look at what this type is, I can uh I\nto look at what this type is, I can uh I just<00:12:10.680> selected<00:12:11.080> this<00:12:11.200> text<00:12:11.480> and<00:12:11.560> hovered<00:12:11.840> the\njust selected this text and hovered the\njust selected this text and hovered the selected<00:12:12.320> text.<00:12:13.160> Uh<00:12:13.240> by<00:12:13.400> default,<00:12:13.760> if<00:12:13.840> you\nselected text. Uh by default, if you\nselected text. Uh by default, if you hover<00:12:14.160> types,<00:12:14.480> it<00:12:14.560> won't<00:12:14.760> show<00:12:14.920> it<00:12:15.000> cuz<00:12:15.120> it\nhover types, it won't show it cuz it\nhover types, it won't show it cuz it just<00:12:15.440> becomes<00:12:15.760> a<00:12:15.800> little<00:12:15.920> bit<00:12:16.040> too<00:12:16.160> noisy.\njust becomes a little bit too noisy.\njust becomes a little bit too noisy. But,<00:12:17.000> if<00:12:17.080> you<00:12:17.160> want<00:12:17.280> to<00:12:17.360> evaluate<00:12:17.760> type,<00:12:18.000> you\nBut, if you want to evaluate type, you\nBut, if you want to evaluate type, you can<00:12:18.520> you<00:12:18.600> can<00:12:18.920> select<00:12:19.240> the<00:12:19.320> text,<00:12:19.640> hover<00:12:19.880> it.\ncan you can select the text, hover it.\ncan you can select the text, hover it. And<00:12:21.240> then<00:12:21.360> here<00:12:21.520> you<00:12:21.640> can<00:12:21.760> see<00:12:21.880> the<00:12:22.000> type<00:12:22.200> info,\nAnd then here you can see the type info,\nAnd then here you can see the type info, right?<00:12:22.720> So,<00:12:22.800> you<00:12:22.920> can<00:12:23.040> see<00:12:23.200> like<00:12:24.040> um<00:12:24.800> these\nright? So, you can see like um these\nright? So, you can see like um these blue<00:12:25.240> lines,<00:12:25.600> by<00:12:25.680> the<00:12:25.760> way,<00:12:25.920> are<00:12:26.040> cache<00:12:26.360> line\nblue lines, by the way, are cache line\nblue lines, by the way, are cache line boundaries.<00:12:27.160> So,<00:12:27.240> you<00:12:27.320> can<00:12:27.440> see<00:12:27.600> like,<00:12:27.760> \"Hey,\nboundaries. So, you can see like, \"Hey,\nboundaries. So, you can see like, \"Hey, here's<00:12:28.120> my<00:12:28.280> array<00:12:28.560> of<00:12:28.720> pair<00:12:29.080> structures.<00:12:30.040> Each\nhere's my array of pair structures. Each\nhere's my array of pair structures. Each pair<00:12:30.400> structure<00:12:30.680> has<00:12:30.760> an<00:12:30.960> X<00:12:31.240> in<00:12:31.400> 32<00:12:31.840> and<00:12:31.920> a<00:12:31.960> Y\npair structure has an X in 32 and a Y\npair structure has an X in 32 and a Y float.\"<00:12:33.120> Um<00:12:33.280> and<00:12:33.360> it's<00:12:33.480> got<00:12:34.000> um<00:12:34.520> you<00:12:34.600> know,<00:12:35.040> 10\nfloat.\" Um and it's got um you know, 10\nfloat.\" Um and it's got um you know, 10 of<00:12:35.360> those<00:12:35.839> and<00:12:36.400> uh<00:12:36.560> right<00:12:36.760> here<00:12:36.920> is<00:12:37.000> another\nof those and uh right here is another\nof those and uh right here is another cache<00:12:37.480> line<00:12:37.640> boundary.<00:12:38.760> Um<00:12:39.160> and<00:12:39.280> then<00:12:39.400> we've\ncache line boundary. Um and then we've\ncache line boundary. Um and then we've got<00:12:39.680> the<00:12:39.800> in<00:12:39.920> 32<00:12:40.280> count<00:12:40.640> at<00:12:40.720> the<00:12:40.839> end,<00:12:41.040> right?\ngot the in 32 count at the end, right?\ngot the in 32 count at the end, right? So,<00:12:41.320> we<00:12:41.440> can<00:12:41.520> evaluate<00:12:41.839> type<00:12:42.040> info<00:12:42.240> that<00:12:42.400> way.\nSo, we can evaluate type info that way.\nSo, we can evaluate type info that way. Um\nUm\nUm and\nand\nand uh\nuh\nuh that's<00:12:48.320> like<00:12:48.640> that's<00:12:48.839> like<00:12:49.000> super<00:12:49.320> basic\nthat's like that's like super basic\nthat's like that's like super basic early<00:12:50.520> usage.<00:12:51.000> So,\nearly usage. So,\nearly usage. So, um<00:12:52.680> now<00:12:53.000> I<00:12:53.040> can<00:12:53.160> focus<00:12:53.440> on<00:12:53.520> the<00:12:53.600> watch<00:12:53.839> window.\num now I can focus on the watch window.\num now I can focus on the watch window. So,<00:12:54.760> if<00:12:54.880> I<00:12:54.920> wanted<00:12:55.240> to<00:12:55.480> like<00:12:55.680> hovering<00:12:56.040> is\nSo, if I wanted to like hovering is\nSo, if I wanted to like hovering is nice,<00:12:56.760> but<00:12:56.880> sometimes<00:12:57.280> you<00:12:57.400> want<00:12:57.560> to<00:12:57.680> like\nnice, but sometimes you want to like\nnice, but sometimes you want to like actually<00:12:58.240> just<00:12:58.440> have<00:12:58.600> some<00:12:58.760> expressions<00:12:59.240> in\nactually just have some expressions in\nactually just have some expressions in here.<00:13:00.000> Um\nhere. Um\nhere. Um so,<00:13:01.240> in<00:13:01.360> the<00:13:01.440> watch<00:13:01.600> window,<00:13:01.839> I<00:13:01.880> can<00:13:02.080> add<00:13:02.280> new\nso, in the watch window, I can add new\nso, in the watch window, I can add new expressions<00:13:03.160> uh<00:13:03.320> just<00:13:03.480> by<00:13:03.600> typing<00:13:04.080> in<00:13:04.200> this\nexpressions uh just by typing in this\nexpressions uh just by typing in this little<00:13:04.640> expression<00:13:05.040> slot.<00:13:05.600> I<00:13:05.680> can<00:13:05.839> hit<00:13:06.080> F2<00:13:06.480> to\nlittle expression slot. I can hit F2 to\nlittle expression slot. I can hit F2 to edit<00:13:06.800> it,<00:13:06.920> or<00:13:07.000> I<00:13:07.040> can<00:13:07.200> double<00:13:07.440> click,<00:13:07.760> or<00:13:07.800> I<00:13:07.880> can\nedit it, or I can double click, or I can\nedit it, or I can double click, or I can just<00:13:08.080> start<00:13:08.280> typing,<00:13:08.600> too.<00:13:08.800> So,<00:13:08.920> I<00:13:08.960> can<00:13:09.080> do<00:13:09.920> um\njust start typing, too. So, I can do um\njust start typing, too. So, I can do um if<00:13:10.839> I<00:13:10.880> want<00:13:11.040> to<00:13:11.080> evaluate<00:13:11.440> basic<00:13:11.800> structure,\nif I want to evaluate basic structure,\nif I want to evaluate basic structure, um\num\num this<00:13:14.600> is<00:13:14.760> just<00:13:15.400> uh<00:13:15.640> I<00:13:15.720> can<00:13:15.839> put<00:13:16.000> this<00:13:16.200> in<00:13:16.400> and<00:13:16.680> it\nthis is just uh I can put this in and it\nthis is just uh I can put this in and it expands<00:13:17.240> just<00:13:17.480> like<00:13:17.680> what<00:13:17.800> the<00:13:17.880> hover\nexpands just like what the hover\nexpands just like what the hover evaluation<00:13:18.680> would<00:13:18.760> have<00:13:18.880> done.<00:13:19.720> Um\nevaluation would have done. Um\nevaluation would have done. Um uh\nuh\nuh Let's<00:13:22.880> see<00:13:22.960> what<00:13:23.080> else.<00:13:23.480> I<00:13:23.560> can<00:13:23.680> put<00:13:23.839> string<00:13:24.160> in\nLet's see what else. I can put string in\nLet's see what else. I can put string in here.<00:13:24.839> I<00:13:24.880> can<00:13:25.000> put<00:13:25.200> longer<00:13:25.600> text<00:13:26.040> in<00:13:26.160> here.<00:13:27.040> Um\nUh<00:13:29.920> what<00:13:30.080> else?<00:13:30.560> Let's<00:13:30.720> see.\nUh what else? Let's see.\nUh what else? Let's see. Um\nUm\nUm So<00:13:33.160> that's<00:13:33.360> like<00:13:33.840> that's<00:13:34.040> a<00:13:34.080> few<00:13:34.640> kinds<00:13:34.920> of\nSo that's like that's a few kinds of\nSo that's like that's a few kinds of evaluation<00:13:35.520> things.<00:13:35.800> Now<00:13:35.920> something<00:13:36.240> that's\nevaluation things. Now something that's\nevaluation things. Now something that's unique<00:13:36.680> about<00:13:36.880> the<00:13:36.960> rad<00:13:37.120> debugger<00:13:37.520> is<00:13:37.680> that\nunique about the rad debugger is that\nunique about the rad debugger is that all<00:13:38.440> those<00:13:38.720> UIs<00:13:39.040> I<00:13:39.120> showed<00:13:39.320> before<00:13:39.680> like\nall those UIs I showed before like\nall those UIs I showed before like targets,<00:13:41.200> there's<00:13:41.360> also<00:13:41.600> UIs<00:13:41.880> like\ntargets, there's also UIs like\ntargets, there's also UIs like breakpoints.\nbreakpoints.\nbreakpoints. Um<00:13:44.360> these<00:13:44.480> are<00:13:44.560> some<00:13:44.720> breakpoints<00:13:45.280> that<00:13:45.440> I\nUm these are some breakpoints that I\nUm these are some breakpoints that I have.<00:13:46.040> Step<00:13:46.280> like<00:13:46.400> here's<00:13:46.560> the<00:13:46.640> one<00:13:46.760> I<00:13:46.800> just\nhave. Step like here's the one I just\nhave. Step like here's the one I just set,<00:13:47.600> which<00:13:47.800> is<00:13:48.520> right<00:13:48.720> here.\nset, which is right here.\nset, which is right here. Um<00:13:51.960> all<00:13:52.200> of<00:13:52.280> these<00:13:52.520> UIs<00:13:53.080> are<00:13:53.280> actually<00:13:54.120> uh<00:13:54.560> all\nUm all of these UIs are actually uh all\nUm all of these UIs are actually uh all I<00:13:54.920> guess<00:13:55.120> I'll<00:13:55.200> just<00:13:55.400> spoil<00:13:55.760> it.<00:13:55.920> These<00:13:56.480> are\nI guess I'll just spoil it. These are\nI guess I'll just spoil it. These are all<00:13:56.800> watch<00:13:57.040> windows.<00:13:57.800> Um<00:13:58.480> so<00:13:59.200> so<00:13:59.400> basically\nall watch windows. Um so so basically\nall watch windows. Um so so basically like<00:14:00.040> if<00:14:00.160> you<00:14:00.240> didn't<00:14:00.400> want<00:14:00.520> to<00:14:00.600> use<00:14:00.720> these\nlike if you didn't want to use these\nlike if you didn't want to use these tabs<00:14:01.160> at<00:14:01.280> all,\ntabs at all,\ntabs at all, you<00:14:02.680> could<00:14:02.800> just<00:14:02.960> say,<00:14:03.120> \"Hey,<00:14:03.280> I<00:14:03.360> want<00:14:03.480> to<00:14:03.520> look\nyou could just say, \"Hey, I want to look\nyou could just say, \"Hey, I want to look at<00:14:03.800> all<00:14:03.920> the<00:14:04.000> targets\nat all the targets\nat all the targets in<00:14:05.600> my<00:14:05.720> watch<00:14:05.960> window.\"<00:14:06.240> And<00:14:06.360> if<00:14:06.440> I<00:14:06.480> expand\nin my watch window.\" And if I expand\nin my watch window.\" And if I expand that,<00:14:07.040> then<00:14:07.200> I<00:14:07.240> just<00:14:07.480> see<00:14:07.600> something<00:14:07.880> that\nthat, then I just see something that\nthat, then I just see something that looks<00:14:08.600> quite<00:14:08.880> a<00:14:08.920> lot<00:14:09.320> like<00:14:09.640> the<00:14:09.760> targets<00:14:10.200> tab,\nlooks quite a lot like the targets tab,\nlooks quite a lot like the targets tab, right?<00:14:11.760> I<00:14:11.800> can<00:14:11.920> just<00:14:12.040> start<00:14:12.160> evaluating\nright? I can just start evaluating\nright? I can just start evaluating things<00:14:12.800> like<00:14:12.920> that.<00:14:13.200> If<00:14:13.320> I'm<00:14:13.440> like,<00:14:13.560> \"Hey,<00:14:13.680> I\nthings like that. If I'm like, \"Hey, I\nthings like that. If I'm like, \"Hey, I want<00:14:13.840> to<00:14:13.920> see<00:14:14.000> all<00:14:14.080> my<00:14:14.200> breakpoints.\"\nwant to see all my breakpoints.\"\nwant to see all my breakpoints.\" Uh<00:14:15.960> that<00:14:16.080> can<00:14:16.200> also<00:14:16.440> just<00:14:16.600> be<00:14:16.720> in<00:14:16.840> here.\nUh that can also just be in here.\nUh that can also just be in here. Um\nUm\nUm And<00:14:19.760> so<00:14:19.880> I<00:14:19.960> don't<00:14:20.440> necessarily<00:14:20.920> need<00:14:21.160> these\nAnd so I don't necessarily need these\nAnd so I don't necessarily need these things.<00:14:21.720> And<00:14:21.880> let<00:14:22.160> you<00:14:22.240> know,<00:14:22.360> let's<00:14:22.520> say<00:14:22.640> for\nthings. And let you know, let's say for\nthings. And let you know, let's say for example<00:14:23.200> that<00:14:23.360> like<00:14:24.160> you<00:14:24.240> know,<00:14:24.400> I<00:14:24.480> don't<00:14:24.640> want\nexample that like you know, I don't want\nexample that like you know, I don't want to<00:14:24.880> hover<00:14:25.200> my<00:14:25.360> thread<00:14:25.720> instruction<00:14:26.120> pointer\nto hover my thread instruction pointer\nto hover my thread instruction pointer every<00:14:26.640> time<00:14:26.840> I<00:14:26.880> want<00:14:27.000> to<00:14:27.080> see<00:14:27.160> the<00:14:27.240> call<00:14:27.440> stack.\nevery time I want to see the call stack.\nevery time I want to see the call stack. Um\nUm\nUm well,<00:14:30.000> like<00:14:30.440> what<00:14:30.600> can<00:14:30.720> I<00:14:30.800> do<00:14:31.120> to<00:14:31.240> start\nwell, like what can I do to start\nwell, like what can I do to start inspecting<00:14:32.600> the<00:14:32.720> state<00:14:33.040> of<00:14:33.160> a<00:14:33.200> particular\ninspecting the state of a particular\ninspecting the state of a particular thread?<00:14:34.040> Well,<00:14:34.440> I<00:14:34.520> know<00:14:34.680> I'm<00:14:34.760> debugging<00:14:35.120> a\nthread? Well, I know I'm debugging a\nthread? Well, I know I'm debugging a process.<00:14:35.720> So<00:14:35.800> let<00:14:35.920> me<00:14:36.040> let<00:14:36.200> me<00:14:36.480> maybe<00:14:36.720> look<00:14:36.880> at\nprocess. So let me let me maybe look at\nprocess. So let me let me maybe look at all<00:14:37.040> the<00:14:37.120> processes<00:14:37.680> I<00:14:37.720> have.<00:14:38.200> Okay,<00:14:38.440> so\nall the processes I have. Okay, so\nall the processes I have. Okay, so there's<00:14:38.800> all<00:14:38.839> the<00:14:38.920> processes<00:14:39.400> that<00:14:39.480> I'm\nthere's all the processes that I'm\nthere's all the processes that I'm attached<00:14:39.920> to.\nattached to.\nattached to. Um<00:14:41.400> if<00:14:41.520> I<00:14:41.560> expand<00:14:41.960> that,<00:14:42.120> it's<00:14:42.240> like,<00:14:42.400> \"Oh,\nUm if I expand that, it's like, \"Oh,\nUm if I expand that, it's like, \"Oh, I've<00:14:42.640> got<00:14:42.880> the<00:14:43.240> I've<00:14:43.360> got<00:14:43.560> threads<00:14:43.920> that<00:14:44.080> are\nI've got the I've got threads that are\nI've got the I've got threads that are in<00:14:44.520> this<00:14:44.680> process.\"<00:14:45.360> Uh<00:14:45.480> we<00:14:45.600> have<00:14:45.720> three<00:14:46.040> of\nin this process.\" Uh we have three of\nin this process.\" Uh we have three of these.<00:14:46.360> These<00:14:46.520> are<00:14:46.600> just<00:14:46.800> spawned.<00:14:47.400> The<00:14:47.520> these\nthese. These are just spawned. The these\nthese. These are just spawned. The these are<00:14:47.839> not<00:14:48.360> um\nare not um\nare not um these<00:14:49.880> are<00:14:49.920> not<00:14:50.080> spawned<00:14:50.360> by<00:14:50.640> this<00:14:50.880> program.\nthese are not spawned by this program.\nthese are not spawned by this program. They're<00:14:51.320> spawned<00:14:51.640> by<00:14:51.760> the<00:14:52.480> by<00:14:52.720> the<00:14:52.880> operating\nThey're spawned by the by the operating\nThey're spawned by the by the operating system<00:14:53.880> uh<00:14:54.360> for<00:14:55.040> for<00:14:55.200> reasons<00:14:55.520> that<00:14:55.640> are<00:14:56.000> uh\nsystem uh for for reasons that are uh\nsystem uh for for reasons that are uh you<00:14:56.240> could<00:14:56.360> probably<00:14:56.720> find<00:14:56.960> out,<00:14:57.160> but<00:14:57.360> we\nyou could probably find out, but we\nyou could probably find out, but we don't<00:14:57.960> know.\ndon't know.\ndon't know. Um\nUm\nUm but<00:15:00.360> anyways,<00:15:00.680> here's<00:15:00.880> my<00:15:01.040> thread.<00:15:01.320> I<00:15:01.360> can\nbut anyways, here's my thread. I can\nbut anyways, here's my thread. I can expand<00:15:01.880> it<00:15:02.320> and<00:15:02.400> it's<00:15:02.520> like,<00:15:02.680> \"Oh,<00:15:03.080> there's<00:15:03.280> my\nexpand it and it's like, \"Oh, there's my\nexpand it and it's like, \"Oh, there's my call<00:15:03.560> stack.\"<00:15:04.160> That's<00:15:04.320> just<00:15:04.560> in<00:15:04.680> here<00:15:05.480> um\ncall stack.\" That's just in here um\ncall stack.\" That's just in here um inside<00:15:06.520> of<00:15:06.600> this<00:15:06.760> process<00:15:07.160> tree.<00:15:07.880> Now<00:15:08.000> if<00:15:08.160> I\ninside of this process tree. Now if I\ninside of this process tree. Now if I wanted<00:15:08.480> to<00:15:08.560> like\nwanted to like\nwanted to like not<00:15:09.800> bother<00:15:10.560> expanding<00:15:11.320> that<00:15:11.480> every<00:15:11.600> time,<00:15:11.839> I\nnot bother expanding that every time, I\nnot bother expanding that every time, I could<00:15:12.000> also<00:15:12.200> just<00:15:12.360> do<00:15:12.480> like,<00:15:12.960> \"Okay,<00:15:13.320> well,\ncould also just do like, \"Okay, well,\ncould also just do like, \"Okay, well, can<00:15:13.640> I<00:15:13.680> do<00:15:13.839> threads?\"<00:15:14.400> Or<00:15:14.839> maybe<00:15:15.000> I<00:15:15.040> can<00:15:15.120> do\ncan I do threads?\" Or maybe I can do\ncan I do threads?\" Or maybe I can do processes<00:15:16.520> at<00:15:16.720> zero<00:15:17.440> dot<00:15:17.680> threads<00:15:18.920> um<00:15:19.280> at\nprocesses at zero dot threads um at\nprocesses at zero dot threads um at zero.<00:15:20.400> And<00:15:20.520> hey,<00:15:20.680> there's<00:15:20.880> my<00:15:21.000> mule<00:15:21.240> main.<00:15:21.720> And\nzero. And hey, there's my mule main. And\nzero. And hey, there's my mule main. And then<00:15:22.000> like<00:15:22.200> let's<00:15:22.400> do<00:15:22.520> like<00:15:22.680> dot<00:15:22.960> call<00:15:23.240> stack.\nthen like let's do like dot call stack.\nthen like let's do like dot call stack. There<00:15:24.760> we<00:15:24.840> go.\nThere we go.\nThere we go. Um<00:15:26.680> now<00:15:26.800> I<00:15:26.880> can<00:15:27.000> just<00:15:27.120> evaluate<00:15:27.400> the<00:15:27.480> call\nUm now I can just evaluate the call\nUm now I can just evaluate the call stack.<00:15:28.360> There's<00:15:28.760> a<00:15:29.440> a<00:15:29.520> fast<00:15:29.760> path<00:15:30.000> I<00:15:30.040> can<00:15:30.160> do\nstack. There's a a fast path I can do\nstack. There's a a fast path I can do for<00:15:30.400> that<00:15:30.680> is<00:15:30.800> just<00:15:31.040> current<00:15:31.360> thread<00:15:31.920> dot<00:15:32.120> call\nfor that is just current thread dot call\nfor that is just current thread dot call stack<00:15:32.920> or<00:15:33.040> even<00:15:33.200> more<00:15:33.360> succinctly<00:15:34.400> call\nstack or even more succinctly call\nstack or even more succinctly call stack.<00:15:35.400> Um<00:15:35.800> which<00:15:36.040> is<00:15:36.560> All<00:15:36.720> of<00:15:36.800> these<00:15:36.960> things\nstack. Um which is All of these things\nstack. Um which is All of these things mean<00:15:37.360> the<00:15:37.440> same<00:15:37.640> thing.\nmean the same thing.\nmean the same thing. And<00:15:38.800> sure<00:15:39.000> enough,<00:15:39.320> if<00:15:39.480> I<00:15:39.560> open<00:15:39.840> up<00:15:40.320> a<00:15:40.400> call\nAnd sure enough, if I open up a call\nAnd sure enough, if I open up a call stack<00:15:40.920> tab,<00:15:41.160> which<00:15:41.320> is<00:15:41.560> this<00:15:41.720> is<00:15:41.800> just<00:15:42.000> a<00:15:42.040> fast\nstack tab, which is this is just a fast\nstack tab, which is this is just a fast path,<00:15:42.680> right?<00:15:42.880> So<00:15:42.960> this<00:15:43.120> is<00:15:43.240> like\npath, right? So this is like\npath, right? So this is like um<00:15:44.600> this<00:15:44.720> is<00:15:44.840> like<00:15:45.160> very<00:15:45.440> similar<00:15:45.680> to<00:15:45.760> what\num this is like very similar to what\num this is like very similar to what you'd<00:15:46.040> see<00:15:46.160> in<00:15:46.240> Visual<00:15:46.520> Studio,<00:15:46.920> for<00:15:47.040> example.\nyou'd see in Visual Studio, for example.\nyou'd see in Visual Studio, for example. Um\nUm\nUm you<00:15:49.280> can<00:15:49.400> see<00:15:49.520> your<00:15:49.640> call<00:15:49.800> stack<00:15:50.080> here.<00:15:50.560> If<00:15:50.800> I\nyou can see your call stack here. If I\nyou can see your call stack here. If I actually<00:15:51.400> uh<00:15:51.840> go<00:15:52.000> to<00:15:52.080> this<00:15:52.240> tab<00:15:52.520> and<00:15:52.640> open<00:15:52.840> up\nactually uh go to this tab and open up\nactually uh go to this tab and open up the<00:15:53.120> options<00:15:53.600> for<00:15:53.720> this<00:15:53.880> tab,<00:15:54.360> you'll<00:15:54.560> see\nthe options for this tab, you'll see\nthe options for this tab, you'll see that<00:15:54.920> the<00:15:55.040> expression<00:15:56.000> that's<00:15:56.200> used<00:15:56.480> to\nthat the expression that's used to\nthat the expression that's used to create<00:15:57.000> this<00:15:57.480> tab<00:15:57.760> info<00:15:58.720> is<00:15:59.080> query<00:15:59.680> colon<00:16:00.160> call\ncreate this tab info is query colon call\ncreate this tab info is query colon call stack.<00:16:01.080> Now<00:16:01.320> the<00:16:01.400> query<00:16:01.720> colon<00:16:02.000> thing<00:16:02.160> is<00:16:02.280> just\nstack. Now the query colon thing is just\nstack. Now the query colon thing is just a<00:16:02.520> disambiguator.<00:16:03.360> This<00:16:03.560> is<00:16:03.640> just<00:16:03.840> in<00:16:03.920> case<00:16:04.440> if\na disambiguator. This is just in case if\na disambiguator. This is just in case if you<00:16:04.640> have<00:16:04.800> a<00:16:04.840> local<00:16:05.080> variable<00:16:05.480> called<00:16:05.800> call\nyou have a local variable called call\nyou have a local variable called call stack,<00:16:06.760> this<00:16:07.040> is<00:16:07.320> basically<00:16:07.720> telling<00:16:07.960> the\nstack, this is basically telling the\nstack, this is basically telling the debugger's<00:16:08.400> evaluation<00:16:08.920> system,<00:16:09.640> \"Hey,<00:16:10.280> I'm\ndebugger's evaluation system, \"Hey, I'm\ndebugger's evaluation system, \"Hey, I'm just<00:16:10.720> doing<00:16:10.920> a<00:16:10.960> debugger<00:16:11.320> query.<00:16:11.800> I<00:16:11.920> don't\njust doing a debugger query. I don't\njust doing a debugger query. I don't want<00:16:12.360> you<00:16:12.440> to<00:16:12.600> resolve<00:16:13.000> this<00:16:13.200> as<00:16:13.320> a<00:16:13.360> local\nwant you to resolve this as a local\nwant you to resolve this as a local variable,<00:16:14.000> right?\"<00:16:14.200> So<00:16:14.360> just<00:16:14.960> unambiguously\nvariable, right?\" So just unambiguously\nvariable, right?\" So just unambiguously referring<00:16:16.000> to<00:16:16.280> the<00:16:16.800> to<00:16:16.920> the<00:16:17.000> current<00:16:17.320> thread's\nreferring to the to the current thread's\nreferring to the to the current thread's call<00:16:17.800> stack,<00:16:18.080> basically.\ncall stack, basically.\ncall stack, basically. So<00:16:19.680> anyway,<00:16:20.000> it's<00:16:20.080> like<00:16:20.360> that's<00:16:20.600> just<00:16:20.760> all<00:16:20.880> the\nSo anyway, it's like that's just all the\nSo anyway, it's like that's just all the call<00:16:21.200> stack<00:16:22.240> tab<00:16:22.600> is.<00:16:23.040> And<00:16:23.160> sure<00:16:23.320> enough,<00:16:23.520> if<00:16:23.680> I\ncall stack tab is. And sure enough, if I\ncall stack tab is. And sure enough, if I open<00:16:23.960> up<00:16:24.080> like<00:16:24.480> the<00:16:24.600> targets<00:16:25.000> view,<00:16:25.920> query\nopen up like the targets view, query\nopen up like the targets view, query targets,\ntargets,\ntargets, query<00:16:29.120> breakpoints,\nquery breakpoints,\nquery breakpoints, uh\nuh\nuh I<00:16:32.680> don't<00:16:32.800> know.<00:16:33.280> That's<00:16:33.640> like\nI don't know. That's like\nI don't know. That's like >> It's<00:16:34.440> good<00:16:34.720> because<00:16:35.040> like<00:16:35.360> already<00:16:35.800> people\n>> It's good because like already people\n>> It's good because like already people three<00:16:36.880> separate<00:16:37.280> people<00:16:37.720> at<00:16:37.839> the<00:16:37.960> same<00:16:38.360> time\nthree separate people at the same time\nthree separate people at the same time asked<00:16:39.320> like,<00:16:39.480> \"What<00:16:39.680> if<00:16:39.839> you<00:16:40.000> have<00:16:40.320> a<00:16:40.400> variable\nasked like, \"What if you have a variable\nasked like, \"What if you have a variable named<00:16:41.520> targets<00:16:42.160> or<00:16:42.440> breakpoints?\"\nnamed targets or breakpoints?\"\nnamed targets or breakpoints?\" >> Yes.<00:16:43.600> Yes.<00:16:43.880> Yes.<00:16:44.120> Yes.<00:16:44.440> Of<00:16:44.560> course.<00:16:44.920> Yeah.\n>> Yes. Yes. Yes. Yes. Of course. Yeah.\n>> Yes. Yes. Yes. Yes. Of course. Yeah. Um<00:16:46.360> so<00:16:46.560> that's<00:16:46.920> that's<00:16:47.560> uh<00:16:47.760> that's<00:16:48.000> like\nUm so that's that's uh that's like\nUm so that's that's uh that's like interesting<00:16:49.960> thing<00:16:50.480> number<00:16:50.720> one.<00:16:50.960> So<00:16:51.040> that's\ninteresting thing number one. So that's\ninteresting thing number one. So that's some<00:16:51.320> basic<00:16:51.640> usage<00:16:52.120> and<00:16:52.280> showing<00:16:53.040> kind<00:16:53.200> of<00:16:53.280> how\nsome basic usage and showing kind of how\nsome basic usage and showing kind of how all<00:16:53.560> these<00:16:53.760> views<00:16:54.040> are<00:16:54.160> really<00:16:54.400> just<00:16:54.640> all\nall these views are really just all\nall these views are really just all different<00:16:55.160> versions<00:16:55.480> of<00:16:55.560> the<00:16:55.640> same<00:16:55.880> thing.<00:16:56.640> So\ndifferent versions of the same thing. So\ndifferent versions of the same thing. So another<00:16:57.000> thing<00:16:57.200> that<00:16:57.320> we<00:16:57.440> can<00:16:57.560> do,<00:16:57.800> so<00:16:57.920> we<00:16:58.040> have\nanother thing that we can do, so we have\nanother thing that we can do, so we have I<00:16:58.839> showed<00:16:59.080> breakpoints<00:16:59.520> already.<00:16:59.880> What<00:17:00.000> I<00:17:00.080> can\nI showed breakpoints already. What I can\nI showed breakpoints already. What I can do<00:17:00.560> is<00:17:01.320> um\ndo is um\ndo is um I<00:17:01.960> can<00:17:02.080> also<00:17:02.240> show<00:17:02.400> some<00:17:02.720> better<00:17:03.160> of<00:17:03.520> uh\nI can also show some better of uh\nI can also show some better of uh visualization<00:17:04.959> stuff.\nvisualization stuff.\nvisualization stuff. So<00:17:06.640> if<00:17:06.760> I<00:17:06.839> go<00:17:07.000> to<00:17:07.079> like<00:17:07.600> longer<00:17:08.040> text,<00:17:08.560> for\nSo if I go to like longer text, for\nSo if I go to like longer text, for example,<00:17:09.079> that<00:17:09.240> variable<00:17:09.680> up<00:17:09.760> here<00:17:09.959> that's\nexample, that variable up here that's\nexample, that variable up here that's just<00:17:10.280> a<00:17:10.319> big<00:17:10.920> string.<00:17:11.560> If<00:17:11.680> you're<00:17:11.760> trying<00:17:11.959> to\njust a big string. If you're trying to\njust a big string. If you're trying to like<00:17:12.199> look<00:17:12.360> at<00:17:12.480> this<00:17:12.680> text<00:17:12.959> and<00:17:13.040> like<00:17:13.640> um<00:17:14.120> I<00:17:14.199> In\nlike look at this text and like um I In\nlike look at this text and like um I In this<00:17:14.480> case<00:17:14.640> it's<00:17:14.800> short<00:17:15.040> enough<00:17:15.240> that<00:17:15.360> you<00:17:15.400> can\nthis case it's short enough that you can\nthis case it's short enough that you can actually<00:17:15.760> see<00:17:15.959> it,<00:17:16.160> but<00:17:16.520> uh<00:17:16.640> just<00:17:16.880> when<00:17:17.040> I\nactually see it, but uh just when I\nactually see it, but uh just when I hover.<00:17:17.839> But<00:17:17.959> if,<00:17:18.319> you<00:17:18.400> know,<00:17:18.560> like<00:17:18.880> looking<00:17:19.199> at\nhover. But if, you know, like looking at\nhover. But if, you know, like looking at the<00:17:19.400> string<00:17:19.680> this<00:17:19.880> way<00:17:20.720> is<00:17:20.880> not<00:17:21.040> necessarily\nthe string this way is not necessarily\nthe string this way is not necessarily what<00:17:21.800> you<00:17:21.920> want,<00:17:22.160> especially<00:17:22.520> like<00:17:22.720> it<00:17:22.880> has\nwhat you want, especially like it has\nwhat you want, especially like it has some<00:17:23.240> new<00:17:23.400> line<00:17:23.640> characters<00:17:24.120> in<00:17:24.240> there.<00:17:24.520> Like\nsome new line characters in there. Like\nsome new line characters in there. Like maybe<00:17:24.920> I<00:17:24.959> don't<00:17:25.199> want<00:17:25.360> the<00:17:25.439> single<00:17:25.760> line<00:17:26.560> um\nmaybe I don't want the single line um\nmaybe I don't want the single line um visualization<00:17:27.520> here.<00:17:28.160> What<00:17:28.280> I<00:17:28.319> can<00:17:28.439> actually\nvisualization here. What I can actually\nvisualization here. What I can actually do<00:17:29.000> is<00:17:29.360> uh\ndo is uh\ndo is uh use<00:17:30.520> uh<00:17:30.760> a<00:17:30.840> view<00:17:31.480> as\nuse uh a view as\nuse uh a view as in<00:17:32.760> in<00:17:33.000> the<00:17:33.200> Rad<00:17:33.360> Debugger's<00:17:33.720> parlance.\nin in the Rad Debugger's parlance.\nin in the Rad Debugger's parlance. And<00:17:35.240> I<00:17:35.320> can<00:17:35.440> just<00:17:35.560> say,<00:17:35.720> \"Hey,<00:17:35.880> I<00:17:35.960> want<00:17:36.120> to\nAnd I can just say, \"Hey, I want to\nAnd I can just say, \"Hey, I want to visualize<00:17:36.560> this<00:17:36.680> as<00:17:36.840> text.\"\nvisualize this as text.\"\nvisualize this as text.\" Um<00:17:38.360> and<00:17:38.480> here<00:17:38.680> I<00:17:38.720> can<00:17:38.880> put<00:17:39.040> in<00:17:39.160> a<00:17:39.200> bunch<00:17:39.400> of\nUm and here I can put in a bunch of\nUm and here I can put in a bunch of different<00:17:39.680> parameters.<00:17:40.120> So,<00:17:40.200> the<00:17:40.280> first\ndifferent parameters. So, the first\ndifferent parameters. So, the first thing<00:17:40.640> is<00:17:40.760> just<00:17:40.920> the<00:17:41.000> expression<00:17:41.600> to<00:17:41.720> describe\nthing is just the expression to describe\nthing is just the expression to describe whatever<00:17:43.120> text<00:17:43.840> I<00:17:43.960> would<00:17:44.120> like<00:17:44.440> like<00:17:44.640> whatever\nwhatever text I would like like whatever\nwhatever text I would like like whatever expression<00:17:45.480> that<00:17:45.600> will<00:17:45.760> refer<00:17:46.120> me<00:17:46.320> to<00:17:46.480> the\nexpression that will refer me to the\nexpression that will refer me to the text<00:17:46.800> that<00:17:46.920> I<00:17:46.960> want<00:17:47.200> to<00:17:47.240> visualize.<00:17:47.760> Like<00:17:47.920> to\ntext that I want to visualize. Like to\ntext that I want to visualize. Like to the<00:17:48.120> data<00:17:48.400> that<00:17:48.520> I<00:17:48.560> want<00:17:48.680> to<00:17:48.760> visualize<00:17:49.040> as\nthe data that I want to visualize as\nthe data that I want to visualize as text.<00:17:49.960> I<00:17:50.000> put<00:17:50.200> that<00:17:50.360> here.<00:17:51.120> Um<00:17:51.320> I<00:17:51.360> can<00:17:51.480> also\ntext. I put that here. Um I can also\ntext. I put that here. Um I can also supply<00:17:52.040> like<00:17:52.240> a<00:17:52.320> language.<00:17:53.160> So,<00:17:54.080> I<00:17:54.160> mean,<00:17:54.400> I\nsupply like a language. So, I mean, I\nsupply like a language. So, I mean, I don't<00:17:54.600> know<00:17:54.720> why<00:17:54.920> I<00:17:54.960> would<00:17:55.080> do<00:17:55.240> that<00:17:55.400> for<00:17:55.520> this\ndon't know why I would do that for this\ndon't know why I would do that for this longer<00:17:56.000> text<00:17:56.280> thing.<00:17:56.520> So,<00:17:56.880> you<00:17:56.960> know,<00:17:57.200> but\nlonger text thing. So, you know, but\nlonger text thing. So, you know, but this<00:17:57.840> is<00:17:57.920> optional.<00:17:58.880> Um<00:17:59.360> which<00:17:59.520> it<00:17:59.600> doesn't\nthis is optional. Um which it doesn't\nthis is optional. Um which it doesn't say<00:17:59.960> it's<00:18:00.120> optional.<00:18:00.640> It<00:18:00.760> should,<00:18:01.000> but\nsay it's optional. It should, but\nsay it's optional. It should, but whatever.<00:18:02.200> And<00:18:02.280> then<00:18:02.360> I<00:18:02.400> can<00:18:02.520> also<00:18:02.960> determine\nwhatever. And then I can also determine\nwhatever. And then I can also determine whether<00:18:03.880> or<00:18:04.000> not<00:18:04.200> line<00:18:04.360> numbers<00:18:04.640> are<00:18:04.720> shown.\nwhether or not line numbers are shown.\nwhether or not line numbers are shown. But<00:18:06.560> okay,<00:18:06.760> like<00:18:06.960> let<00:18:07.080> me<00:18:07.160> just<00:18:07.600> let<00:18:07.680> me<00:18:07.760> just\nBut okay, like let me just let me just\nBut okay, like let me just let me just do<00:18:08.600> just<00:18:09.000> text<00:18:10.040> uh<00:18:10.200> the<00:18:10.320> text<00:18:10.600> view<00:18:10.920> of<00:18:11.120> this\ndo just text uh the text view of this\ndo just text uh the text view of this longer<00:18:11.600> text<00:18:11.840> expression.<00:18:12.560> If<00:18:12.680> I<00:18:12.720> expand\nlonger text expression. If I expand\nlonger text expression. If I expand this,<00:18:13.320> then<00:18:13.560> I<00:18:13.600> actually<00:18:13.920> get<00:18:14.800> uh<00:18:15.000> like<00:18:15.200> a\nthis, then I actually get uh like a\nthis, then I actually get uh like a multi-line<00:18:16.040> string<00:18:16.360> view<00:18:16.920> right<00:18:17.120> here.\nmulti-line string view right here.\nmulti-line string view right here. Um\nUm\nUm and<00:18:20.160> there's<00:18:20.320> actually<00:18:20.560> this<00:18:20.680> option<00:18:21.200> uh<00:18:21.400> to\nand there's actually this option uh to\nand there's actually this option uh to pull<00:18:21.800> this<00:18:21.960> out<00:18:22.080> as<00:18:22.200> a<00:18:22.240> new<00:18:22.400> tab.<00:18:22.640> So,<00:18:22.760> if<00:18:22.800> I\npull this out as a new tab. So, if I\npull this out as a new tab. So, if I click<00:18:23.080> and<00:18:23.160> drag<00:18:23.480> that,<00:18:23.880> I<00:18:23.960> can<00:18:24.160> create<00:18:24.520> a<00:18:24.600> tab\nclick and drag that, I can create a tab\nclick and drag that, I can create a tab uh<00:18:25.680> where<00:18:26.120> I<00:18:26.200> just<00:18:26.440> see,<00:18:26.760> \"Hey,<00:18:27.000> here's<00:18:27.520> here's\nuh where I just see, \"Hey, here's here's\nuh where I just see, \"Hey, here's here's the<00:18:27.880> text<00:18:28.240> data<00:18:29.040> visualized<00:18:29.480> as<00:18:29.600> text.\"<00:18:29.960> Now,\nthe text data visualized as text.\" Now,\nthe text data visualized as text.\" Now, you<00:18:30.240> may<00:18:30.360> be<00:18:30.520> wondering,\nyou may be wondering,\nyou may be wondering, \"Hey,<00:18:32.920> this<00:18:33.520> this<00:18:33.800> tab<00:18:34.360> UI<00:18:34.800> sure<00:18:35.120> looks<00:18:35.360> a<00:18:35.400> lot\n\"Hey, this this tab UI sure looks a lot\n\"Hey, this this tab UI sure looks a lot like<00:18:36.360> this<00:18:36.640> tab's<00:18:37.120> UI.\"<00:18:37.680> Like<00:18:37.960> if<00:18:38.120> we<00:18:38.240> look<00:18:38.440> at\nlike this tab's UI.\" Like if we look at\nlike this tab's UI.\" Like if we look at these<00:18:38.760> two<00:18:38.880> things<00:18:39.120> There's<00:18:39.280> a<00:18:39.320> couple<00:18:39.560> of\nthese two things There's a couple of\nthese two things There's a couple of differences.<00:18:40.040> Like<00:18:40.200> I<00:18:40.240> can't<00:18:40.520> seem<00:18:40.640> to<00:18:40.720> put\ndifferences. Like I can't seem to put\ndifferences. Like I can't seem to put breakpoints<00:18:41.440> here,<00:18:41.680> which<00:18:42.240> would<00:18:42.360> kind<00:18:42.520> of\nbreakpoints here, which would kind of\nbreakpoints here, which would kind of make<00:18:42.720> sense,<00:18:43.000> right?<00:18:43.160> Because<00:18:43.480> like<00:18:43.600> there's\nmake sense, right? Because like there's\nmake sense, right? Because like there's like<00:18:44.960> this<00:18:45.080> is<00:18:45.200> not<00:18:45.400> code.<00:18:45.840> Like<00:18:45.960> there's<00:18:46.160> no\nlike this is not code. Like there's no\nlike this is not code. Like there's no there's<00:18:46.720> no<00:18:47.080> This<00:18:47.240> was<00:18:47.360> not<00:18:47.480> compiled<00:18:47.960> to\nthere's no This was not compiled to\nthere's no This was not compiled to produce<00:18:48.240> instructions.<00:18:48.800> Like<00:18:48.920> none<00:18:49.040> of<00:18:49.120> that\nproduce instructions. Like none of that\nproduce instructions. Like none of that would<00:18:49.360> make<00:18:49.480> sense.<00:18:49.760> But,<00:18:50.600> um<00:18:50.920> we<00:18:51.000> have<00:18:51.160> line\nwould make sense. But, um we have line\nwould make sense. But, um we have line numbers.<00:18:51.800> We<00:18:51.840> have<00:18:52.000> line<00:18:52.200> numbers.<00:18:52.640> I<00:18:52.680> can\nnumbers. We have line numbers. I can\nnumbers. We have line numbers. I can click<00:18:53.000> and<00:18:53.080> drag.<00:18:53.680> I<00:18:53.760> can<00:18:54.320> uh<00:18:54.560> I<00:18:54.640> can<00:18:54.760> copy<00:18:55.080> and\nclick and drag. I can uh I can copy and\nclick and drag. I can uh I can copy and paste<00:18:55.560> like<00:18:55.760> what<00:18:56.000> ways<00:18:56.280> might<00:18:56.440> it<00:18:56.520> be\npaste like what ways might it be\npaste like what ways might it be rendered.<00:18:57.000> I<00:18:57.080> can<00:18:57.200> put<00:18:57.400> you<00:18:57.480> know,<00:18:57.560> put<00:18:57.720> that\nrendered. I can put you know, put that\nrendered. I can put you know, put that there,<00:18:58.080> whatever.\nthere, whatever.\nthere, whatever. And<00:19:00.000> the<00:19:00.120> short<00:19:00.480> story<00:19:00.840> is<00:19:00.960> that<00:19:01.080> these\nAnd the short story is that these\nAnd the short story is that these actually<00:19:01.520> are<00:19:01.600> the<00:19:01.720> same<00:19:01.960> UI.\nactually are the same UI.\nactually are the same UI. This<00:19:03.880> is<00:19:04.000> a<00:19:04.040> text<00:19:04.440> tab<00:19:04.960> um<00:19:05.200> and<00:19:05.360> this<00:19:05.520> is\nThis is a text tab um and this is\nThis is a text tab um and this is evaluating<00:19:06.120> longer<00:19:06.440> text,<00:19:06.880> which<00:19:07.200> should<00:19:07.400> be\nevaluating longer text, which should be\nevaluating longer text, which should be pretty<00:19:07.880> self-explanatory.<00:19:09.200> Um<00:19:09.400> and<00:19:09.480> then\npretty self-explanatory. Um and then\npretty self-explanatory. Um and then this<00:19:09.920> one\nthis one\nthis one um\num\num this<00:19:12.480> one<00:19:12.640> is<00:19:12.760> actually<00:19:13.520> evaluating<00:19:14.400> this\nthis one is actually evaluating this\nthis one is actually evaluating this expression,<00:19:15.360> which<00:19:15.520> is<00:19:15.720> file<00:19:16.120> colon\nexpression, which is file colon\nexpression, which is file colon uh<00:19:17.480> another<00:19:17.720> one<00:19:17.800> of<00:19:17.880> those<00:19:18.000> disambiguators,\nuh another one of those disambiguators,\nuh another one of those disambiguators, uh<00:19:19.160> C<00:19:19.760> devel<00:19:20.240> rad<00:19:20.440> bugger<00:19:20.680> source<00:19:21.000> mule<00:19:21.320> mule\nuh C devel rad bugger source mule mule\nuh C devel rad bugger source mule mule main.cpp.data.\nmain.cpp.data.\nmain.cpp.data. Um<00:19:24.360> and<00:19:24.440> you<00:19:24.520> can<00:19:24.600> see<00:19:24.720> some<00:19:24.880> of<00:19:24.920> the<00:19:25.000> members\nUm and you can see some of the members\nUm and you can see some of the members here<00:19:25.600> that<00:19:25.720> you<00:19:25.800> can<00:19:25.880> evaluate<00:19:26.480> for<00:19:26.640> any<00:19:26.800> file.\nhere that you can evaluate for any file.\nhere that you can evaluate for any file. But<00:19:27.880> anyways,<00:19:28.120> so<00:19:28.200> that's<00:19:28.400> just<00:19:28.520> evaluating\nBut anyways, so that's just evaluating\nBut anyways, so that's just evaluating the<00:19:29.080> file.<00:19:30.120> Um\nthe file. Um\nthe file. Um so<00:19:31.160> that's<00:19:31.480> kind<00:19:31.720> of<00:19:32.040> that's<00:19:32.200> kind<00:19:32.320> of\nso that's kind of that's kind of\nso that's kind of that's kind of interesting.<00:19:33.360> Um\ninteresting. Um\ninteresting. Um and<00:19:34.160> the<00:19:34.240> long<00:19:34.480> story<00:19:34.720> short<00:19:34.880> is<00:19:34.960> that<00:19:35.120> all\nand the long story short is that all\nand the long story short is that all these<00:19:35.440> visualizers<00:19:36.040> can<00:19:36.160> apply<00:19:36.560> to<00:19:36.800> both\nthese visualizers can apply to both\nthese visualizers can apply to both files,<00:19:38.520> they<00:19:38.600> can<00:19:38.720> apply<00:19:39.000> to<00:19:39.160> memory<00:19:39.520> from\nfiles, they can apply to memory from\nfiles, they can apply to memory from processes,<00:19:40.560> doesn't<00:19:40.840> matter.\nprocesses, doesn't matter.\nprocesses, doesn't matter. You<00:19:41.960> can<00:19:42.360> wherever<00:19:42.760> the<00:19:42.840> debugger<00:19:43.160> can<00:19:43.280> find\nYou can wherever the debugger can find\nYou can wherever the debugger can find data,<00:19:43.760> you<00:19:43.840> can<00:19:43.960> plug<00:19:44.160> them<00:19:44.320> into<00:19:44.480> these\ndata, you can plug them into these\ndata, you can plug them into these visualizers.<00:19:45.320> So,<00:19:45.760> to<00:19:45.880> demonstrate<00:19:46.360> that,\nvisualizers. So, to demonstrate that,\nvisualizers. So, to demonstrate that, let<00:19:47.520> me<00:19:47.600> show<00:19:47.720> another<00:19:48.240> debugger<00:19:48.520> visualizer.\nlet me show another debugger visualizer.\nlet me show another debugger visualizer. This<00:19:49.200> is<00:19:49.760> This<00:19:49.920> is<00:19:50.040> another<00:19:50.320> common<00:19:50.640> one.<00:19:50.880> So,\nThis is This is another common one. So,\nThis is This is another common one. So, if<00:19:51.120> we<00:19:51.240> have<00:19:52.040> basics,<00:19:52.760> this<00:19:53.080> structure,\nif we have basics, this structure,\nif we have basics, this structure, um\num\num let<00:19:55.560> me<00:19:55.680> open<00:19:55.840> up<00:19:55.960> the<00:19:56.040> memory<00:19:56.440> view,<00:19:56.840> which\nlet me open up the memory view, which\nlet me open up the memory view, which this<00:19:57.280> you'll<00:19:57.440> find<00:19:57.800> something<00:19:58.080> like<00:19:58.280> this<00:19:58.440> in\nthis you'll find something like this in\nthis you'll find something like this in Visual<00:19:58.760> Studio<00:19:59.320> and<00:19:59.560> in<00:19:59.680> lots<00:19:59.880> of<00:19:59.960> other\nVisual Studio and in lots of other\nVisual Studio and in lots of other debuggers.\ndebuggers.\ndebuggers. And<00:20:01.920> let<00:20:02.000> me<00:20:02.080> just<00:20:02.280> go<00:20:02.520> to<00:20:02.680> the<00:20:02.800> basics\nAnd let me just go to the basics\nAnd let me just go to the basics variable<00:20:04.320> here.\nvariable here.\nvariable here. Um<00:20:06.920> so,<00:20:07.080> here<00:20:07.400> is<00:20:07.560> where<00:20:08.160> uh<00:20:08.400> I<00:20:08.480> can<00:20:08.640> see<00:20:08.920> like\nUm so, here is where uh I can see like\nUm so, here is where uh I can see like uh<00:20:09.960> all<00:20:10.200> of<00:20:10.280> the<00:20:10.360> memory,<00:20:10.760> like<00:20:10.960> the<00:20:11.080> actual\nuh all of the memory, like the actual\nuh all of the memory, like the actual bytes\nbytes\nbytes that<00:20:12.720> are<00:20:12.840> used<00:20:13.160> to<00:20:13.400> to<00:20:13.880> encode<00:20:14.400> the<00:20:14.480> value<00:20:14.960> of\nthat are used to to encode the value of\nthat are used to to encode the value of this<00:20:15.240> basics<00:20:15.760> structure.<00:20:16.200> So,<00:20:16.320> we<00:20:16.400> can<00:20:16.520> see\nthis basics structure. So, we can see\nthis basics structure. So, we can see like<00:20:16.880> for<00:20:17.000> example,<00:20:17.880> um\nlike for example, um\nlike for example, um and<00:20:18.800> actually,<00:20:19.120> if<00:20:19.280> I\nand actually, if I\nand actually, if I uh\nuh\nuh you<00:20:21.200> can<00:20:21.320> see<00:20:21.480> that<00:20:21.680> there's<00:20:22.080> some\nyou can see that there's some\nyou can see that there's some visualization<00:20:22.840> features<00:20:23.080> in<00:20:23.160> the<00:20:23.200> debugger\nvisualization features in the debugger\nvisualization features in the debugger that<00:20:23.800> that<00:20:23.960> help<00:20:24.160> you<00:20:24.280> correlate<00:20:24.840> this<00:20:25.000> stuff.\nthat that help you correlate this stuff.\nthat that help you correlate this stuff. So,<00:20:25.320> if<00:20:25.400> I<00:20:25.480> hover<00:20:25.720> basics.a,<00:20:26.560> for<00:20:26.720> example,\nSo, if I hover basics.a, for example,\nSo, if I hover basics.a, for example, you<00:20:27.600> can<00:20:27.760> see<00:20:27.880> that<00:20:28.080> this<00:20:28.240> byte<00:20:28.440> gets\nyou can see that this byte gets\nyou can see that this byte gets highlighted.<00:20:29.160> And<00:20:29.280> vice<00:20:29.520> versa,<00:20:29.840> if<00:20:29.960> I<00:20:30.040> hover\nhighlighted. And vice versa, if I hover\nhighlighted. And vice versa, if I hover the<00:20:30.400> byte<00:20:30.640> here,<00:20:30.840> I<00:20:30.880> can<00:20:31.040> see\nthe byte here, I can see\nthe byte here, I can see the<00:20:32.120> member<00:20:32.520> that<00:20:32.920> that<00:20:33.120> byte<00:20:33.320> belong<00:20:33.640> that\nthe member that that byte belong that\nthe member that that byte belong that that<00:20:34.680> byte<00:20:34.960> falls<00:20:35.240> into<00:20:35.480> basically<00:20:35.960> in\nthat byte falls into basically in\nthat byte falls into basically in the<00:20:36.160> watch<00:20:36.400> window.<00:20:36.640> So,<00:20:37.400> um\nthe watch window. So, um\nthe watch window. So, um instead<00:20:38.440> of<00:20:38.520> doing<00:20:39.400> just<00:20:39.560> because<00:20:39.880> uh<00:20:40.240> I've\ninstead of doing just because uh I've\ninstead of doing just because uh I've got<00:20:40.480> my<00:20:40.600> font<00:20:40.840> size<00:20:41.080> turned<00:20:41.280> up<00:20:41.360> so<00:20:41.480> high,<00:20:41.600> let\ngot my font size turned up so high, let\ngot my font size turned up so high, let me<00:20:41.840> also<00:20:42.040> just<00:20:42.240> do<00:20:42.440> um\nme also just do um\nme also just do um let<00:20:44.240> me<00:20:44.320> just<00:20:44.720> do<00:20:44.960> two<00:20:45.160> panel,<00:20:45.640> one<00:20:45.800> with<00:20:45.920> the\nlet me just do two panel, one with the\nlet me just do two panel, one with the watch<00:20:46.280> window,\nwatch window,\nwatch window, and<00:20:48.560> one<00:20:48.720> with<00:20:49.080> the<00:20:49.480> memory<00:20:49.760> view.\nand one with the memory view.\nand one with the memory view. Um\nUm\nUm so,<00:20:52.560> like<00:20:52.720> here's<00:20:52.920> a<00:20:52.960> memory<00:20:53.280> view.<00:20:53.520> I<00:20:53.600> can<00:20:53.920> I\nso, like here's a memory view. I can I\nso, like here's a memory view. I can I can,<00:20:54.600> you<00:20:54.680> know,<00:20:54.840> hover<00:20:55.080> bytes.<00:20:55.640> Um<00:20:55.840> I<00:20:55.920> can\ncan, you know, hover bytes. Um I can\ncan, you know, hover bytes. Um I can even<00:20:56.280> mutate<00:20:56.680> bytes,<00:20:56.960> like<00:20:57.080> if<00:20:57.200> I<00:20:57.280> wanted<00:20:57.480> to\neven mutate bytes, like if I wanted to\neven mutate bytes, like if I wanted to do\ndo\ndo uh<00:20:58.760> I<00:20:58.880> wanted<00:20:59.120> to<00:20:59.240> change<00:20:59.520> this<00:20:59.800> to<00:21:00.040> to<00:21:00.200> a<00:21:00.240> zero\nuh I wanted to change this to to a zero\nuh I wanted to change this to to a zero byte,<00:21:01.240> um\nbyte, um\nbyte, um I<00:21:02.120> can<00:21:02.240> just<00:21:02.400> type<00:21:02.600> that<00:21:02.800> in<00:21:02.920> there.<00:21:03.760> Uh<00:21:04.160> we<00:21:04.240> can\nI can just type that in there. Uh we can\nI can just type that in there. Uh we can go<00:21:04.440> back<00:21:04.600> to<00:21:04.680> -1<00:21:05.120> if<00:21:05.240> I<00:21:05.280> do<00:21:05.400> an<00:21:05.480> FF.<00:21:06.400> Uh<00:21:06.520> here's\ngo back to -1 if I do an FF. Uh here's\ngo back to -1 if I do an FF. Uh here's 01,<00:21:07.480> I<00:21:07.520> can<00:21:07.640> do<00:21:07.760> like<00:21:07.920> 23,<00:21:08.960> which<00:21:09.480> uh<00:21:09.560> hex<00:21:09.840> 23\n01, I can do like 23, which uh hex 23\n01, I can do like 23, which uh hex 23 turns<00:21:10.440> into<00:21:10.600> 35,<00:21:11.320> which<00:21:11.600> happens<00:21:11.880> to<00:21:11.920> be<00:21:12.040> that\nturns into 35, which happens to be that\nturns into 35, which happens to be that character.\ncharacter.\ncharacter. Um\nUm\nUm So<00:21:15.000> yeah,<00:21:15.080> anyways,<00:21:15.400> here's<00:21:15.600> a<00:21:15.640> memory<00:21:15.920> view,\nSo yeah, anyways, here's a memory view,\nSo yeah, anyways, here's a memory view, right?\nright?\nright? And<00:21:17.760> I<00:21:17.800> can<00:21:17.920> dig<00:21:18.080> into<00:21:18.240> more<00:21:18.400> of<00:21:18.480> these\nAnd I can dig into more of these\nAnd I can dig into more of these features<00:21:19.600> if<00:21:20.200> you<00:21:20.280> know,<00:21:20.880> as<00:21:21.080> we<00:21:21.200> want<00:21:21.440> to.\nfeatures if you know, as we want to.\nfeatures if you know, as we want to. But<00:21:22.560> it's<00:21:22.720> like<00:21:22.960> I<00:21:23.040> just<00:21:23.240> told<00:21:23.480> you<00:21:23.560> that<00:21:23.760> I<00:21:23.800> can\nBut it's like I just told you that I can\nBut it's like I just told you that I can apply<00:21:24.240> these<00:21:24.440> visualizers<00:21:24.960> to<00:21:25.120> any\napply these visualizers to any\napply these visualizers to any expression,<00:21:26.120> right?<00:21:26.434> [clears throat]<00:21:26.800> In\nexpression, right? [clears throat] In\nexpression, right? [clears throat] In fact,<00:21:27.280> if<00:21:27.440> I<00:21:27.520> were<00:21:27.600> to<00:21:27.720> do<00:21:27.880> something<00:21:28.200> like\nfact, if I were to do something like\nfact, if I were to do something like memory<00:21:29.640> basics\nmemory basics\nmemory basics Um<00:21:32.720> sorry,<00:21:32.920> there's<00:21:33.080> tons<00:21:33.320> of<00:21:33.400> parameters\nUm sorry, there's tons of parameters\nUm sorry, there's tons of parameters here.<00:21:33.840> I<00:21:33.880> actually<00:21:34.160> fixed<00:21:34.480> this,<00:21:34.720> but<00:21:35.200> but<00:21:35.520> the\nhere. I actually fixed this, but but the\nhere. I actually fixed this, but but the stable<00:21:36.360> version<00:21:36.600> of<00:21:36.640> the<00:21:36.720> debugger<00:21:36.960> that<00:21:37.040> I'm\nstable version of the debugger that I'm\nstable version of the debugger that I'm using<00:21:37.560> doesn't<00:21:37.840> have<00:21:38.040> that<00:21:38.320> fixed,<00:21:38.680> but<00:21:38.880> this\nusing doesn't have that fixed, but this\nusing doesn't have that fixed, but this is<00:21:39.280> I<00:21:39.360> mean,<00:21:39.800> technically<00:21:40.200> these<00:21:40.400> are<00:21:40.520> all\nis I mean, technically these are all\nis I mean, technically these are all options,<00:21:41.080> but<00:21:41.200> it's<00:21:41.360> just<00:21:41.640> a<00:21:41.680> little<00:21:41.880> bit\noptions, but it's just a little bit\noptions, but it's just a little bit absurd<00:21:42.400> to<00:21:42.720> specify<00:21:43.080> this<00:21:43.240> in<00:21:43.320> the\nabsurd to specify this in the\nabsurd to specify this in the expression.<00:21:43.800> But<00:21:43.960> anyways,\nexpression. But anyways,\nexpression. But anyways, if<00:21:45.040> I<00:21:45.080> do<00:21:45.240> memory<00:21:45.520> of<00:21:45.640> basics,<00:21:46.080> you'll\nif I do memory of basics, you'll\nif I do memory of basics, you'll actually<00:21:46.520> see<00:21:47.480> that<00:21:47.800> um<00:21:48.120> I<00:21:48.200> get<00:21:48.320> a<00:21:48.360> memory<00:21:48.680> view\nactually see that um I get a memory view\nactually see that um I get a memory view and<00:21:49.040> it's<00:21:49.200> just<00:21:49.480> evaluating<00:21:50.000> the<00:21:50.120> address\nand it's just evaluating the address\nand it's just evaluating the address range<00:21:51.120> supplied<00:21:51.640> by<00:21:52.600> the<00:21:52.720> expression<00:21:53.400> basics.\nrange supplied by the expression basics.\nrange supplied by the expression basics. And<00:21:54.320> so<00:21:54.400> I<00:21:54.480> just<00:21:54.760> get<00:21:54.920> a<00:21:54.960> little<00:21:55.240> memory<00:21:55.480> view\nAnd so I just get a little memory view\nAnd so I just get a little memory view for<00:21:55.760> this.<00:21:56.400> In<00:21:56.480> the<00:21:56.560> case<00:21:56.720> when<00:21:56.840> you<00:21:56.880> don't\nfor this. In the case when you don't\nfor this. In the case when you don't have<00:21:57.200> any<00:21:57.360> expression,<00:21:57.880> it'll<00:21:58.120> prefer<00:21:58.680> to\nhave any expression, it'll prefer to\nhave any expression, it'll prefer to visualize<00:21:59.560> your<00:21:59.680> current<00:22:00.040> thread's<00:22:00.640> address\nvisualize your current thread's address\nvisualize your current thread's address space<00:22:01.360> or<00:22:01.480> your<00:22:01.600> current<00:22:01.920> thread's<00:22:02.280> process's\nspace or your current thread's process's\nspace or your current thread's process's address<00:22:03.120> space.<00:22:03.720> And<00:22:03.800> then<00:22:03.920> you<00:22:04.000> can<00:22:04.120> navigate\naddress space. And then you can navigate\naddress space. And then you can navigate to<00:22:04.800> basics<00:22:05.360> inside<00:22:05.760> of<00:22:05.840> that<00:22:06.000> address<00:22:06.240> space,\nto basics inside of that address space,\nto basics inside of that address space, but<00:22:06.520> you<00:22:06.600> can<00:22:06.680> also<00:22:06.840> just<00:22:07.000> get<00:22:07.160> one<00:22:07.440> that's\nbut you can also just get one that's\nbut you can also just get one that's narrowed<00:22:08.120> down<00:22:08.400> to<00:22:08.520> just<00:22:08.720> basics<00:22:09.480> um\nnarrowed down to just basics um\nnarrowed down to just basics um uh<00:22:11.000> like<00:22:11.200> this.\nuh like this.\nuh like this. So<00:22:12.560> anyways,<00:22:12.880> you<00:22:12.960> can<00:22:13.120> create<00:22:13.280> a<00:22:13.320> memory<00:22:13.600> view\nSo anyways, you can create a memory view\nSo anyways, you can create a memory view and<00:22:14.000> you<00:22:14.120> can<00:22:14.640> um<00:22:15.000> it<00:22:15.080> can<00:22:15.200> evaluate<00:22:15.640> any<00:22:16.240> any\nand you can um it can evaluate any any\nand you can um it can evaluate any any expression,<00:22:16.880> right?<00:22:17.520> So<00:22:17.760> what<00:22:17.960> we'll<00:22:18.080> do<00:22:18.760> is\nexpression, right? So what we'll do is\nexpression, right? So what we'll do is um<00:22:19.360> I'm<00:22:19.480> just<00:22:19.640> going<00:22:19.760> to<00:22:19.800> take<00:22:20.080> this\num I'm just going to take this\num I'm just going to take this expression<00:22:20.920> that<00:22:21.160> encodes<00:22:21.560> the<00:22:21.680> file\nexpression that encodes the file\nexpression that encodes the file uh<00:22:23.920> the<00:22:24.040> file<00:22:24.280> that's<00:22:24.480> viewing\nuh the file that's viewing\nuh the file that's viewing mule_main.cpp.\nmule_main.cpp.\nmule_main.cpp. And<00:22:26.520> I'm<00:22:26.600> just<00:22:26.760> going<00:22:26.880> to<00:22:26.920> create<00:22:27.080> a<00:22:27.120> new\nAnd I'm just going to create a new\nAnd I'm just going to create a new memory<00:22:27.520> tab<00:22:27.800> or<00:22:27.880> I<00:22:27.920> guess<00:22:28.080> I<00:22:28.400> I<00:22:28.440> can<00:22:28.560> just<00:22:28.720> use\nmemory tab or I guess I I can just use\nmemory tab or I guess I I can just use this<00:22:29.040> one.\nthis one.\nthis one. And<00:22:30.120> let<00:22:30.200> me<00:22:30.280> just<00:22:30.440> put<00:22:30.560> this<00:22:30.760> in\nAnd let me just put this in\nAnd let me just put this in um\num\num as<00:22:33.520> the<00:22:33.920> expression<00:22:34.320> that<00:22:34.440> this<00:22:34.600> memory<00:22:34.920> view\nas the expression that this memory view\nas the expression that this memory view is<00:22:35.200> evaluating.\nis evaluating.\nis evaluating. And<00:22:36.720> you<00:22:36.800> can<00:22:36.920> see<00:22:37.320> like<00:22:37.640> here's<00:22:37.960> the<00:22:38.040> byte\nAnd you can see like here's the byte\nAnd you can see like here's the byte representation<00:22:39.080> of<00:22:39.240> that<00:22:39.440> text<00:22:39.680> file.<00:22:40.120> So<00:22:40.760> um\nrepresentation of that text file. So um\nrepresentation of that text file. So um like<00:22:41.720> if<00:22:41.840> we<00:22:41.920> go<00:22:42.160> up<00:22:42.280> to<00:22:42.400> the<00:22:42.480> top<00:22:42.680> of<00:22:42.720> this<00:22:42.800> text\nlike if we go up to the top of this text\nlike if we go up to the top of this text file,<00:22:43.160> you<00:22:43.240> can<00:22:43.360> see\nfile, you can see\nfile, you can see //copyrights\n//copyrights\n//copyrights uh<00:22:46.680> (c)<00:22:47.680> Epic<00:22:48.000> Games<00:22:48.280> Tools<00:22:48.640> licensed<00:22:48.960> under\nuh (c) Epic Games Tools licensed under\nuh (c) Epic Games Tools licensed under the<00:22:49.240> MIT<00:22:49.600> license.<00:22:50.480> If<00:22:50.720> I<00:22:50.840> go<00:22:51.160> to<00:22:51.760> my<00:22:52.520> uh<00:22:52.600> memory\nthe MIT license. If I go to my uh memory\nthe MIT license. If I go to my uh memory view<00:22:53.040> here,<00:22:53.760> you<00:22:53.840> can<00:22:53.960> see<00:22:54.360> it's<00:22:54.520> just<00:22:54.720> like,\nview here, you can see it's just like,\nview here, you can see it's just like, \"Hey,<00:22:55.360> //copyright<00:22:56.760> (c)<00:22:57.400> Epic<00:22:57.760> Games<00:22:58.080> Tools.\"\n\"Hey, //copyright (c) Epic Games Tools.\"\n\"Hey, //copyright (c) Epic Games Tools.\" Like<00:22:58.560> it's<00:22:58.680> just<00:22:58.880> viewing<00:22:59.240> the<00:22:59.360> same<00:22:59.640> data<00:22:59.960> as\nLike it's just viewing the same data as\nLike it's just viewing the same data as text,<00:23:00.600> right?\ntext, right?\ntext, right? Or<00:23:02.080> sorry,<00:23:02.360> as<00:23:02.520> memory.<00:23:02.920> As<00:23:03.080> just<00:23:03.280> raw<00:23:03.920> bytes\nOr sorry, as memory. As just raw bytes\nOr sorry, as memory. As just raw bytes in<00:23:04.640> a<00:23:04.680> byte<00:23:04.920> grid.\nin a byte grid.\nin a byte grid. Um\nUm\nUm So,<00:23:08.080> um\nSo, um\nSo, um that's<00:23:09.880> like<00:23:10.040> something<00:23:10.360> you<00:23:10.440> can<00:23:10.560> do.<00:23:11.120> It's\nthat's like something you can do. It's\nthat's like something you can do. It's kind<00:23:11.440> of<00:23:11.520> cool.\nkind of cool.\nkind of cool. Uh<00:23:13.160> I<00:23:13.280> guess<00:23:13.800> I<00:23:13.840> don't<00:23:14.080> know<00:23:14.360> what<00:23:14.520> to<00:23:14.600> show\nUh I guess I don't know what to show\nUh I guess I don't know what to show next.<00:23:15.000> I<00:23:15.040> could<00:23:15.200> I<00:23:15.280> guess<00:23:15.480> I<00:23:15.560> could<00:23:15.720> show<00:23:15.880> some\nnext. I could I guess I could show some\nnext. I could I guess I could show some of<00:23:16.080> the<00:23:16.160> more<00:23:16.320> sophisticated<00:23:16.920> visualizers<00:23:17.520> as\nof the more sophisticated visualizers as\nof the more sophisticated visualizers as well.\nwell.\nwell. Like<00:23:19.760> uh\nLike uh\nLike uh um\num\num I<00:23:22.720> guess<00:23:22.920> we'll<00:23:23.040> go<00:23:23.200> down<00:23:23.520> to\nfancy<00:23:28.200> vizzy<00:23:28.480> val<00:23:28.680> tests.\nUm\nlet's<00:23:34.720> do\nlet's do\nlet's do Okay,<00:23:37.280> so<00:23:37.360> these<00:23:37.520> are<00:23:37.600> kind<00:23:37.760> of<00:23:37.840> cool.\nOkay, so these are kind of cool.\nOkay, so these are kind of cool. If<00:23:40.160> we<00:23:40.280> have<00:23:41.120> like<00:23:41.240> a<00:23:41.320> float<00:23:41.680> here<00:23:42.160> that's<00:23:42.840> um\nIf we have like a float here that's um\nIf we have like a float here that's um you<00:23:44.240> know,<00:23:44.360> 500<00:23:45.080> and<00:23:45.200> let's<00:23:45.400> say<00:23:45.560> like<00:23:45.920> I<00:23:46.000> just\nyou know, 500 and let's say like I just\nyou know, 500 and let's say like I just happen<00:23:46.440> to<00:23:46.520> know<00:23:46.840> in<00:23:47.040> C,<00:23:47.360> we<00:23:47.480> don't<00:23:47.640> have<00:23:47.760> this\nhappen to know in C, we don't have this\nhappen to know in C, we don't have this in<00:23:48.040> type<00:23:48.280> info,<00:23:48.560> but<00:23:49.040> but<00:23:49.120> basically<00:23:49.440> like<00:23:50.200> um\nin type info, but but basically like um\nin type info, but but basically like um I've<00:23:50.840> got<00:23:50.960> a<00:23:51.000> float<00:23:51.320> here,<00:23:51.560> it's<00:23:51.920> set<00:23:52.120> to<00:23:52.200> 500,\nI've got a float here, it's set to 500,\nI've got a float here, it's set to 500, um<00:23:53.400> but<00:23:53.520> I<00:23:53.600> want<00:23:53.720> to<00:23:53.800> consider<00:23:54.080> this<00:23:54.200> thing<00:23:54.400> as\num but I want to consider this thing as\num but I want to consider this thing as between<00:23:54.920> the<00:23:55.040> range<00:23:55.360> of<00:23:55.640> like<00:23:55.880> I<00:23:56.080> I<00:23:56.120> want<00:23:56.240> to\nbetween the range of like I I want to\nbetween the range of like I I want to consider<00:23:56.560> this<00:23:56.680> thing<00:23:56.840> as<00:23:57.120> within<00:23:57.440> the<00:23:57.520> range\nconsider this thing as within the range\nconsider this thing as within the range of<00:23:57.920> 0<00:23:58.240> to<00:23:58.360> 1,000,<00:23:58.840> right?\nof 0 to 1,000, right?\nof 0 to 1,000, right? Um\nUm\nUm So,<00:24:01.360> you<00:24:01.440> can<00:24:01.560> actually<00:24:01.880> specify<00:24:02.280> this<00:24:02.440> to<00:24:02.520> the\nSo, you can actually specify this to the\nSo, you can actually specify this to the debugger<00:24:02.920> and<00:24:03.000> you<00:24:03.080> can<00:24:03.200> say<00:24:03.360> range<00:24:03.720> one<00:24:04.560> for\ndebugger and you can say range one for\ndebugger and you can say range one for one<00:24:05.400> for<00:24:05.600> one<00:24:06.040> one<00:24:06.200> dimension.\none for one one dimension.\none for one one dimension. And<00:24:07.400> I<00:24:07.440> can<00:24:07.560> say<00:24:07.720> slide<00:24:08.120> one<00:24:08.440> and<00:24:08.560> I<00:24:08.640> want<00:24:08.840> this\nAnd I can say slide one and I want this\nAnd I can say slide one and I want this to<00:24:09.040> be<00:24:09.120> zero<00:24:09.960> between<00:24:10.186> [clears throat]<00:24:10.320> zero\nto be zero between [clears throat] zero\nto be zero between [clears throat] zero and<00:24:10.600> 1,000,<00:24:11.040> so<00:24:11.120> it<00:24:11.200> should<00:24:11.320> be<00:24:11.400> right<00:24:11.600> in<00:24:11.640> the\nand 1,000, so it should be right in the\nand 1,000, so it should be right in the middle.\nmiddle.\nmiddle. >> Nice.\n>> Nice.\n>> Nice. >> And<00:24:13.360> sure<00:24:13.840> And<00:24:13.960> sure<00:24:14.120> enough\n>> And sure And sure enough\n>> And sure And sure enough you<00:24:15.280> get<00:24:15.440> this<00:24:16.000> and<00:24:16.480> if<00:24:16.680> I<00:24:16.920> change<00:24:17.240> the<00:24:17.320> value\nyou get this and if I change the value\nyou get this and if I change the value and<00:24:18.480> if<00:24:18.560> I<00:24:18.640> just<00:24:18.800> evaluate<00:24:19.200> the<00:24:19.280> float<00:24:19.600> itself,\nand if I just evaluate the float itself,\nand if I just evaluate the float itself, you'll<00:24:20.120> see<00:24:20.320> that<00:24:20.560> I'm<00:24:20.680> actually<00:24:20.960> changing\nyou'll see that I'm actually changing\nyou'll see that I'm actually changing the<00:24:21.520> memory<00:24:21.880> like<00:24:22.120> of<00:24:22.240> the<00:24:22.320> program<00:24:22.760> as<00:24:22.920> I<00:24:22.960> do\nthe memory like of the program as I do\nthe memory like of the program as I do this.\nthis.\nthis. Um\nSo,\nSo,\nSo, um\num\num and<00:24:29.520> then<00:24:29.680> it's<00:24:29.800> like<00:24:29.960> you<00:24:30.240> you<00:24:30.320> might<00:24:30.520> look<00:24:30.640> at\nand then it's like you you might look at\nand then it's like you you might look at this<00:24:30.840> and<00:24:30.920> you're<00:24:31.000> like,<00:24:31.120> \"Hey,<00:24:31.280> this<00:24:31.520> UI\nthis and you're like, \"Hey, this UI\nthis and you're like, \"Hey, this UI actually<00:24:32.280> looks<00:24:32.480> a<00:24:32.560> lot<00:24:32.920> like<00:24:33.120> if<00:24:33.280> I<00:24:33.360> hit<00:24:33.600> F1\nactually looks a lot like if I hit F1\nactually looks a lot like if I hit F1 and<00:24:34.120> type<00:24:34.360> font<00:24:34.720> size.\"<00:24:35.760> It's<00:24:35.920> so<00:24:36.080> strange\nand type font size.\" It's so strange\nand type font size.\" It's so strange because<00:24:36.800> I<00:24:36.880> actually<00:24:37.160> see<00:24:37.520> that<00:24:37.720> there's<00:24:37.920> all\nbecause I actually see that there's all\nbecause I actually see that there's all these<00:24:38.160> options<00:24:38.520> for<00:24:38.640> like<00:24:38.840> these<00:24:39.000> different\nthese options for like these different\nthese options for like these different kinds<00:24:39.480> of<00:24:39.560> like<00:24:39.720> sizes<00:24:40.280> and<00:24:40.400> font<00:24:40.640> sizes<00:24:41.000> and\nkinds of like sizes and font sizes and\nkinds of like sizes and font sizes and stuff<00:24:41.240> like<00:24:41.360> that.<00:24:41.800> It's<00:24:41.880> like,<00:24:42.320> \"That's\nstuff like that. It's like, \"That's\nstuff like that. It's like, \"That's pretty<00:24:42.640> interesting,<00:24:42.960> right?\"<00:24:43.080> It's<00:24:43.200> like,\npretty interesting, right?\" It's like,\npretty interesting, right?\" It's like, \"Yeah,<00:24:43.560> that's<00:24:43.960> evaluating<00:24:44.800> the<00:24:44.920> setting<00:24:45.440> of\n\"Yeah, that's evaluating the setting of\n\"Yeah, that's evaluating the setting of the<00:24:45.840> debugger.\"<00:24:46.320> Like<00:24:46.520> that's<00:24:47.000> So,<00:24:47.160> this<00:24:47.360> is\nthe debugger.\" Like that's So, this is\nthe debugger.\" Like that's So, this is literally<00:24:47.880> the<00:24:48.000> same<00:24:48.240> UI<00:24:48.840> as<00:24:49.080> this.<00:24:49.320> It's<00:24:49.440> not\nliterally the same UI as this. It's not\nliterally the same UI as this. It's not just<00:24:49.840> that<00:24:49.920> I'm<00:24:50.040> calling<00:24:50.320> the<00:24:50.400> same<00:24:50.600> helper\njust that I'm calling the same helper\njust that I'm calling the same helper function<00:24:51.240> in<00:24:51.320> two<00:24:51.480> places.<00:24:52.320> It's<00:24:52.600> literally\nfunction in two places. It's literally\nfunction in two places. It's literally the<00:24:53.120> same<00:24:53.360> path<00:24:54.080> uh<00:24:54.160> being<00:24:54.360> used<00:24:54.520> for<00:24:54.600> both.\nthe same path uh being used for both.\nthe same path uh being used for both. So,<00:24:55.680> that's<00:24:55.840> like<00:24:56.000> one<00:24:56.400> kind<00:24:56.600> of<00:24:57.040> fun<00:24:57.320> thing.\nSo, that's like one kind of fun thing.\nSo, that's like one kind of fun thing. It's<00:24:57.960> not<00:24:58.120> super<00:24:58.400> important<00:24:58.800> to<00:24:58.880> know<00:24:59.040> that,\nIt's not super important to know that,\nIt's not super important to know that, but<00:24:59.400> it's<00:24:59.560> just<00:24:59.720> like<00:24:59.880> a<00:24:59.960> cool<00:25:00.280> architectural\nbut it's just like a cool architectural\nbut it's just like a cool architectural aspect<00:25:01.280> of<00:25:01.640> the<00:25:01.720> debugger<00:25:02.120> is<00:25:02.280> that<00:25:02.720> I<00:25:02.840> found\naspect of the debugger is that I found\naspect of the debugger is that I found that<00:25:03.240> the<00:25:03.320> best<00:25:03.640> way<00:25:03.800> to<00:25:04.040> collapse<00:25:04.680> all<00:25:04.920> of\nthat the best way to collapse all of\nthat the best way to collapse all of this\nthis\nthis all<00:25:06.320> of<00:25:06.400> these<00:25:06.640> UIs<00:25:07.040> for<00:25:07.120> like<00:25:07.480> editing<00:25:07.800> the\nall of these UIs for like editing the\nall of these UIs for like editing the debugger<00:25:08.200> settings<00:25:08.760> and,<00:25:09.000> you<00:25:09.040> know,<00:25:09.200> tab\ndebugger settings and, you know, tab\ndebugger settings and, you know, tab settings<00:25:10.080> and<00:25:10.320> watch<00:25:10.600> window<00:25:10.800> stuff.<00:25:11.040> It's\nsettings and watch window stuff. It's\nsettings and watch window stuff. It's like\nlike\nlike I<00:25:12.840> I<00:25:12.920> found<00:25:13.080> that<00:25:13.200> the<00:25:13.240> best<00:25:13.480> way<00:25:13.640> to<00:25:13.760> actually\nI I found that the best way to actually\nI I found that the best way to actually collapse<00:25:14.360> all<00:25:14.480> of<00:25:14.560> it<00:25:14.640> down<00:25:14.880> was<00:25:15.120> to<00:25:15.240> make<00:25:15.520> the\ncollapse all of it down was to make the\ncollapse all of it down was to make the watch<00:25:15.800> window<00:25:16.040> super<00:25:16.280> super<00:25:16.520> powerful.<00:25:16.960> So,\nwatch window super super powerful. So,\nwatch window super super powerful. So, that's<00:25:18.560> what<00:25:18.720> ended<00:25:18.960> up<00:25:19.080> happening.<00:25:19.360> So,\nthat's what ended up happening. So,\nthat's what ended up happening. So, anyways,<00:25:20.160> we<00:25:20.240> have<00:25:20.360> sliders<00:25:20.840> here.<00:25:21.120> You<00:25:21.240> can\nanyways, we have sliders here. You can\nanyways, we have sliders here. You can do<00:25:21.440> this<00:25:21.640> with<00:25:21.920> integers<00:25:22.360> as<00:25:22.520> well.<00:25:22.760> So,<00:25:22.880> I\ndo this with integers as well. So, I\ndo this with integers as well. So, I could<00:25:23.040> do<00:25:23.160> range<00:25:23.480> one<00:25:24.160> uh<00:25:24.320> slide<00:25:24.680> three<00:25:25.000> is<00:25:25.040> an\ncould do range one uh slide three is an\ncould do range one uh slide three is an integer<00:25:25.560> and<00:25:25.680> I<00:25:25.720> can<00:25:25.840> say<00:25:26.000> this<00:25:26.200> is<00:25:26.320> also\ninteger and I can say this is also\ninteger and I can say this is also between<00:25:27.200> uh<00:25:27.280> this<00:25:27.480> is<00:25:27.560> between<00:25:27.880> zero<00:25:28.080> and<00:25:28.160> 100.\nbetween uh this is between zero and 100.\nbetween uh this is between zero and 100. Same<00:25:29.400> exact<00:25:29.680> thing<00:25:29.880> here,<00:25:30.360> right?<00:25:31.120> Um\nSo,\nSo,\nSo, uh<00:25:38.840> we<00:25:38.920> have<00:25:39.040> colors<00:25:40.120> um\nuh we have colors um\nuh we have colors um as<00:25:41.840> well.<00:25:42.120> So,<00:25:42.280> if<00:25:42.400> I've<00:25:42.560> got<00:25:42.920> um<00:25:43.440> example\nas well. So, if I've got um example\nas well. So, if I've got um example color<00:25:44.040> 4F32\ncolor 4F32\ncolor 4F32 um<00:25:46.400> which<00:25:46.640> I<00:25:46.720> think<00:25:47.080> I<00:25:47.120> think<00:25:47.320> some<00:25:47.520> of<00:25:47.600> these\num which I think I think some of these\num which I think I think some of these may<00:25:48.080> be<00:25:48.520> kind<00:25:48.720> of<00:25:48.840> work<00:25:49.040> in<00:25:49.120> progress.<00:25:49.600> So,<00:25:49.680> I\nmay be kind of work in progress. So, I\nmay be kind of work in progress. So, I don't<00:25:49.920> know<00:25:50.320> there<00:25:50.440> might<00:25:50.640> be<00:25:50.960> one<00:25:51.160> of<00:25:51.240> these\ndon't know there might be one of these\ndon't know there might be one of these that<00:25:51.640> doesn't<00:25:51.920> quite<00:25:52.200> work<00:25:52.400> yet,<00:25:52.560> but<00:25:52.720> let's\nthat doesn't quite work yet, but let's\nthat doesn't quite work yet, but let's try<00:25:53.840> let's<00:25:54.000> try<00:25:54.160> color<00:25:55.240> um<00:25:55.640> example<00:25:56.240> color\ntry let's try color um example color\ntry let's try color um example color U32.<00:25:57.920> Is<00:25:58.000> this<00:25:58.120> going<00:25:58.240> to<00:25:58.320> work?<00:25:58.760> Okay.<00:25:59.200> I\nU32. Is this going to work? Okay. I\nU32. Is this going to work? Okay. I don't<00:25:59.440> know<00:25:59.520> if<00:25:59.640> editing<00:26:00.040> will<00:26:00.160> work.<00:26:00.680> Okay,\ndon't know if editing will work. Okay,\ndon't know if editing will work. Okay, yeah,<00:26:01.040> editing<00:26:01.360> works.<00:26:01.560> So,<00:26:01.720> U32<00:26:02.280> seems<00:26:02.520> to<00:26:02.600> be\nyeah, editing works. So, U32 seems to be\nyeah, editing works. So, U32 seems to be the<00:26:02.960> one<00:26:03.200> that<00:26:03.360> I<00:26:03.840> I<00:26:03.920> think<00:26:04.120> the<00:26:04.240> four<00:26:04.480> float\nthe one that I I think the four float\nthe one that I I think the four float one<00:26:04.960> is<00:26:05.120> maybe\none is maybe\none is maybe there's<00:26:06.560> still<00:26:06.720> some<00:26:06.840> stuff<00:26:07.000> that's<00:26:07.160> in\nthere's still some stuff that's in\nthere's still some stuff that's in progress<00:26:07.680> here<00:26:07.840> with<00:26:08.160> with<00:26:08.400> some<00:26:08.520> of<00:26:08.600> these\nprogress here with with some of these\nprogress here with with some of these fancy<00:26:09.120> things.<00:26:09.400> Like<00:26:09.520> I<00:26:09.560> think<00:26:09.800> this<00:26:09.960> might\nfancy things. Like I think this might\nfancy things. Like I think this might work<00:26:10.920> for<00:26:11.080> the<00:26:11.200> visualization,<00:26:11.960> but<00:26:12.120> I<00:26:12.160> don't\nwork for the visualization, but I don't\nwork for the visualization, but I don't know<00:26:12.400> if<00:26:12.520> I<00:26:12.560> can<00:26:12.720> edit<00:26:13.000> it.<00:26:13.560> Yeah,<00:26:13.760> so<00:26:13.880> there's\nknow if I can edit it. Yeah, so there's\nknow if I can edit it. Yeah, so there's a<00:26:14.200> there's<00:26:14.320> a<00:26:14.360> couple<00:26:14.600> of<00:26:14.640> missing<00:26:14.920> features\na there's a couple of missing features\na there's a couple of missing features here,<00:26:15.360> but<00:26:16.000> in<00:26:16.080> the<00:26:16.120> case<00:26:16.320> of<00:26:16.400> the<00:26:16.480> U32\nhere, but in the case of the U32\nhere, but in the case of the U32 um<00:26:18.520> you<00:26:18.640> know,<00:26:18.760> we<00:26:18.880> can<00:26:19.040> edit<00:26:19.960> just<00:26:20.320> this<00:26:20.480> thing\num you know, we can edit just this thing\num you know, we can edit just this thing here.<00:26:21.120> We<00:26:21.200> can<00:26:21.320> change<00:26:21.800> whatever<00:26:22.000> the<00:26:22.080> color\nhere. We can change whatever the color\nhere. We can change whatever the color value<00:26:22.640> is.<00:26:23.480> Um<00:26:23.800> and<00:26:23.920> you<00:26:23.960> can<00:26:24.080> see<00:26:24.240> like<00:26:24.680> this\nvalue is. Um and you can see like this\nvalue is. Um and you can see like this U32<00:26:25.520> value<00:26:25.920> it's<00:26:26.080> being<00:26:26.640> uh<00:26:26.920> kind<00:26:27.080> of<00:26:27.600> peaked\nU32 value it's being uh kind of peaked\nU32 value it's being uh kind of peaked right<00:26:28.240> here<00:26:28.400> in<00:26:28.480> the<00:26:28.520> source<00:26:28.800> code.<00:26:29.720> Um<00:26:30.320> and\nright here in the source code. Um and\nright here in the source code. Um and you<00:26:30.720> can<00:26:30.840> see<00:26:30.960> it's<00:26:31.080> actually<00:26:31.360> changing<00:26:31.800> like\nyou can see it's actually changing like\nyou can see it's actually changing like as<00:26:32.200> I<00:26:32.280> just<00:26:32.440> drag<00:26:32.720> this<00:26:32.880> color<00:26:33.440> around.<00:26:34.160> Um\nas I just drag this color around. Um\nas I just drag this color around. Um So,<00:26:35.560> yeah.\nSo, yeah.\nSo, yeah. Um\nUm\nUm >> [sighs]\n>> [sighs]\n>> [sighs] >> uh<00:26:39.160> multi-line<00:26:39.720> text<00:26:40.080> I<00:26:40.120> already<00:26:40.360> showed\n>> uh multi-line text I already showed\n>> uh multi-line text I already showed this,<00:26:40.960> but<00:26:41.240> we<00:26:41.320> can<00:26:41.440> do<00:26:41.800> text<00:26:42.320> of<00:26:43.120> uh\nthis, but we can do text of uh\nthis, but we can do text of uh long<00:26:44.080> string.\nlong string.\nlong string. We<00:26:45.880> can<00:26:46.000> do<00:26:46.360> text<00:26:47.360> um\nWe can do text um\nWe can do text um text<00:26:48.880> of<00:26:49.040> code<00:26:49.360> string.<00:26:50.000> The<00:26:50.120> language<00:26:50.720> and<00:26:51.040> in\ntext of code string. The language and in\ntext of code string. The language and in this<00:26:51.280> case<00:26:51.520> it's<00:26:51.680> like<00:26:51.840> we<00:26:51.920> have<00:26:52.080> some<00:26:52.280> C\nthis case it's like we have some C\nthis case it's like we have some C source<00:26:52.800> code<00:26:53.000> so<00:26:53.080> maybe<00:26:53.280> I<00:26:53.320> just<00:26:53.480> want<00:26:53.600> to<00:26:53.680> say\nsource code so maybe I just want to say\nsource code so maybe I just want to say C<00:26:54.760> Uh\nC Uh\nC Uh or<00:26:55.920> sorry\nor sorry\nor sorry that<00:26:57.400> not<00:26:57.640> shown<00:26:57.800> in<00:26:57.840> the<00:26:57.920> docs<00:26:58.160> but<00:26:58.280> that\nthat not shown in the docs but that\nthat not shown in the docs but that needs<00:26:58.640> to<00:26:58.720> be<00:26:58.760> a<00:26:58.800> named<00:26:59.080> parameter.<00:26:59.400> So\nneeds to be a named parameter. So\nneeds to be a named parameter. So anyways,<00:27:00.280> code<00:27:00.520> strain<00:27:00.840> lang<00:27:01.120> C\nanyways, code strain lang C\nanyways, code strain lang C I'm<00:27:02.440> still<00:27:02.600> working<00:27:02.840> on<00:27:02.960> the<00:27:03.080> in<00:27:03.480> application\nI'm still working on the in application\nI'm still working on the in application docs<00:27:04.240> so<00:27:04.360> it's<00:27:04.480> a<00:27:04.520> little<00:27:04.720> bit<00:27:05.080> it's<00:27:05.200> a<00:27:05.240> little\ndocs so it's a little bit it's a little\ndocs so it's a little bit it's a little bit<00:27:05.480> like<00:27:05.640> of<00:27:05.720> a<00:27:05.760> secret<00:27:06.240> thing<00:27:06.480> but\nbit like of a secret thing but\nbit like of a secret thing but lang<00:27:08.440> equals<00:27:08.720> C<00:27:08.880> and<00:27:08.960> then<00:27:09.080> you<00:27:09.160> can<00:27:09.240> see<00:27:09.640> oh<00:27:09.880> I\nlang equals C and then you can see oh I\nlang equals C and then you can see oh I actually<00:27:10.240> see<00:27:10.400> my<00:27:10.600> C<00:27:10.800> source<00:27:11.040> code<00:27:11.240> here\nactually see my C source code here\nactually see my C source code here syntax<00:27:13.080> highlighted<00:27:13.560> and<00:27:13.640> everything<00:27:14.040> and\nsyntax highlighted and everything and\nsyntax highlighted and everything and show<00:27:14.560> showing<00:27:14.800> me<00:27:14.880> the<00:27:15.000> scopes<00:27:15.320> and<00:27:15.400> stuff\nshow showing me the scopes and stuff\nshow showing me the scopes and stuff like<00:27:15.720> that.<00:27:16.560> Um\nlike that. Um\nlike that. Um So<00:27:18.600> let's<00:27:18.760> see<00:27:18.880> what<00:27:19.000> else.<00:27:19.640> This<00:27:19.880> is<00:27:19.960> assembly\nSo let's see what else. This is assembly\nSo let's see what else. This is assembly of<00:27:20.640> course.<00:27:21.000> So<00:27:21.440> if<00:27:21.640> I<00:27:21.720> open<00:27:21.960> up<00:27:22.040> like<00:27:22.200> a\nof course. So if I open up like a\nof course. So if I open up like a disassembly<00:27:22.840> view\ndisassembly view\ndisassembly view um\num\num and<00:27:25.920> uh\nI<00:27:28.200> want<00:27:28.360> to<00:27:28.400> see<00:27:28.520> like<00:27:28.720> where<00:27:28.880> my<00:27:29.000> thread<00:27:29.280> is\nI want to see like where my thread is\nI want to see like where my thread is with<00:27:29.920> respect<00:27:30.200> to<00:27:30.280> the<00:27:30.440> actual<00:27:30.880> machine<00:27:31.160> code\nwith respect to the actual machine code\nwith respect to the actual machine code instructions\ninstructions\ninstructions um<00:27:33.360> I<00:27:33.440> can<00:27:33.560> open<00:27:33.720> up<00:27:33.800> a<00:27:33.880> disassembly<00:27:34.320> view<00:27:34.520> that\num I can open up a disassembly view that\num I can open up a disassembly view that takes<00:27:35.040> the<00:27:35.160> actual<00:27:35.480> code<00:27:35.840> that's<00:27:36.080> in<00:27:36.200> the\ntakes the actual code that's in the\ntakes the actual code that's in the process<00:27:36.720> that<00:27:36.880> the<00:27:36.960> thread<00:27:37.240> is<00:27:37.360> stopped<00:27:37.720> on\nprocess that the thread is stopped on\nprocess that the thread is stopped on and<00:27:38.480> it<00:27:38.600> just<00:27:39.200> disassembles<00:27:39.840> it.<00:27:40.640> Um<00:27:41.440> meaning\nand it just disassembles it. Um meaning\nand it just disassembles it. Um meaning it<00:27:41.800> interprets<00:27:42.280> it<00:27:42.400> how<00:27:42.480> the<00:27:42.560> CPU<00:27:42.920> would\nit interprets it how the CPU would\nit interprets it how the CPU would interpret<00:27:43.360> it<00:27:43.480> to<00:27:43.560> find<00:27:43.800> out<00:27:43.920> what<00:27:44.080> the\ninterpret it to find out what the\ninterpret it to find out what the instructions<00:27:44.600> are,<00:27:44.880> what<00:27:45.000> are<00:27:45.040> the\ninstructions are, what are the\ninstructions are, what are the parameters<00:27:45.560> to<00:27:45.640> the<00:27:45.680> instructions,<00:27:46.200> like<00:27:46.320> all\nparameters to the instructions, like all\nparameters to the instructions, like all these<00:27:46.600> things.\nthese things.\nthese things. And<00:27:48.360> uh<00:27:48.480> you<00:27:48.560> can<00:27:48.680> see<00:27:48.840> it<00:27:48.960> corre-<00:27:49.280> it\nAnd uh you can see it corre- it\nAnd uh you can see it corre- it automatically<00:27:49.800> correlates<00:27:50.320> like<00:27:50.520> with\nautomatically correlates like with\nautomatically correlates like with source<00:27:51.600> code<00:27:51.880> like<00:27:52.040> you<00:27:52.160> can<00:27:52.280> see<00:27:52.600> like<00:27:52.800> which\nsource code like you can see like which\nsource code like you can see like which instructions<00:27:53.600> map<00:27:53.800> to<00:27:53.880> which<00:27:54.080> line<00:27:54.280> of<00:27:54.360> source\ninstructions map to which line of source\ninstructions map to which line of source code<00:27:54.800> and<00:27:54.920> so<00:27:55.120> on.<00:27:55.840> Um<00:27:55.960> and<00:27:56.080> then<00:27:56.200> as<00:27:56.400> I<00:27:56.440> step\ncode and so on. Um and then as I step\ncode and so on. Um and then as I step like<00:27:57.040> you'll<00:27:57.200> see<00:27:57.360> that<00:27:57.520> the<00:27:57.640> thread<00:27:58.280> like\nlike you'll see that the thread like\nlike you'll see that the thread like goes<00:27:58.640> through<00:27:59.280> um\ngoes through um\ngoes through um goes<00:28:00.640> through<00:28:00.760> the<00:28:00.840> code<00:28:01.080> here.\ngoes through the code here.\ngoes through the code here. Um\nUm\nUm this<00:28:03.080> is<00:28:03.200> also<00:28:03.440> just<00:28:03.640> a<00:28:03.680> visualizer,<00:28:04.400> right?\nthis is also just a visualizer, right?\nthis is also just a visualizer, right? So<00:28:04.720> I<00:28:04.760> could<00:28:04.920> just<00:28:05.320> do<00:28:05.760> like<00:28:06.280> disasm<00:28:06.960> and<00:28:07.080> I\nSo I could just do like disasm and I\nSo I could just do like disasm and I could<00:28:07.280> put<00:28:07.440> in<00:28:07.520> like<00:28:07.720> a<00:28:08.400> like<00:28:08.520> my<00:28:08.680> mule<00:28:08.920> main\ncould put in like a like my mule main\ncould put in like a like my mule main function\nfunction\nfunction and<00:28:11.320> if<00:28:11.480> I<00:28:12.160> go<00:28:12.360> to<00:28:12.520> mule<00:28:12.760> main<00:28:13.200> here\nand if I go to mule main here\nand if I go to mule main here uh<00:28:15.400> you<00:28:15.520> can<00:28:15.640> see<00:28:15.840> that\nuh you can see that\nuh you can see that uh<00:28:16.960> let<00:28:17.080> me<00:28:17.160> pull<00:28:17.320> this<00:28:17.440> out<00:28:17.560> as<00:28:17.680> its<00:28:17.800> own<00:28:17.960> tab.\nuh let me pull this out as its own tab.\nuh let me pull this out as its own tab. So<00:28:18.280> we're<00:28:18.360> just<00:28:18.600> viewing<00:28:18.840> the<00:28:18.920> disassembly<00:28:19.560> of\nSo we're just viewing the disassembly of\nSo we're just viewing the disassembly of mule<00:28:20.120> main\nmule main\nmule main and<00:28:21.680> we<00:28:21.840> can<00:28:22.000> see<00:28:22.200> like<00:28:22.720> that's<00:28:22.960> just<00:28:23.240> going<00:28:23.360> to\nand we can see like that's just going to\nand we can see like that's just going to do<00:28:23.720> exactly<00:28:24.120> what<00:28:24.200> I<00:28:24.240> told<00:28:24.480> it<00:28:24.600> to.<00:28:24.720> It's<00:28:24.880> like\ndo exactly what I told it to. It's like\ndo exactly what I told it to. It's like disassemble<00:28:25.560> mule<00:28:25.720> main<00:28:26.120> and<00:28:26.280> show<00:28:26.440> me<00:28:27.160> what\ndisassemble mule main and show me what\ndisassemble mule main and show me what it<00:28:27.360> looks<00:28:27.520> like<00:28:27.720> and<00:28:27.960> and\nit looks like and and\nit looks like and and here<00:28:29.320> it<00:28:29.400> is.\nhere it is.\nhere it is. Um\nUm\nUm so\nso\nso then<00:28:35.760> the<00:28:36.000> next<00:28:36.280> thing<00:28:36.480> I<00:28:36.640> should<00:28:36.880> probably\nthen the next thing I should probably\nthen the next thing I should probably show<00:28:37.680> is\nshow is\nshow is uh<00:28:39.320> we've<00:28:39.400> got<00:28:39.560> other<00:28:39.720> kinds<00:28:39.960> of<00:28:40.000> visualizers\nuh we've got other kinds of visualizers\nuh we've got other kinds of visualizers like<00:28:40.880> um<00:28:41.360> like<00:28:41.480> a<00:28:41.520> bit<00:28:41.680> map<00:28:41.880> visualizer<00:28:42.320> for\nlike um like a bit map visualizer for\nlike um like a bit map visualizer for example.<00:28:42.800> So<00:28:42.880> if<00:28:42.960> I've<00:28:43.080> got<00:28:43.200> a<00:28:43.240> bunch<00:28:43.440> of<00:28:43.480> data\nexample. So if I've got a bunch of data\nexample. So if I've got a bunch of data like<00:28:44.200> U32s<00:28:44.880> that<00:28:45.000> that<00:28:45.200> to<00:28:45.400> interpret<00:28:45.800> as\nlike U32s that that to interpret as\nlike U32s that that to interpret as pixels\npixels\npixels I<00:28:47.240> can<00:28:47.440> say,<00:28:47.680> \"Hey,<00:28:47.960> like<00:28:48.200> I<00:28:48.280> actually<00:28:48.560> have<00:28:48.680> a\nI can say, \"Hey, like I actually have a\nI can say, \"Hey, like I actually have a bitmap<00:28:49.480> and<00:28:49.800> my\nbitmap and my\nbitmap and my my<00:28:51.760> pixels<00:28:52.240> for<00:28:52.440> for<00:28:52.560> this<00:28:52.680> bitmap<00:28:53.520> is<00:28:53.640> just\nmy pixels for for this bitmap is just\nmy pixels for for this bitmap is just this<00:28:54.040> big<00:28:54.280> array<00:28:54.560> of<00:28:54.840> of<00:28:55.200> U32s<00:28:55.760> called<00:28:55.960> pixels.\nthis big array of of U32s called pixels.\nthis big array of of U32s called pixels. I<00:28:56.960> happen<00:28:57.200> to<00:28:57.320> know<00:28:57.520> that<00:28:57.680> the<00:28:57.760> dimensions<00:28:58.200> of\nI happen to know that the dimensions of\nI happen to know that the dimensions of this<00:28:58.480> thing<00:28:58.840> are<00:28:59.040> 18<00:28:59.320> by<00:28:59.480> 18,<00:28:59.920> but<00:29:00.040> you<00:29:00.120> can<00:29:00.240> put\nthis thing are 18 by 18, but you can put\nthis thing are 18 by 18, but you can put in<00:29:00.480> whatever<00:29:00.720> you<00:29:00.800> want<00:29:01.000> there.\"\nin whatever you want there.\"\nin whatever you want there.\" And<00:29:02.080> then<00:29:02.160> if<00:29:02.280> you<00:29:02.360> open<00:29:02.600> that,<00:29:03.320> you<00:29:03.440> get<00:29:03.560> a\nAnd then if you open that, you get a\nAnd then if you open that, you get a little<00:29:03.840> bitmap<00:29:04.160> visualizer.\nlittle bitmap visualizer.\nlittle bitmap visualizer. Um<00:29:06.760> and<00:29:07.040> you<00:29:07.160> can<00:29:07.720> just<00:29:07.920> like<00:29:08.080> everything,<00:29:08.400> you\nUm and you can just like everything, you\nUm and you can just like everything, you can<00:29:08.600> pull<00:29:08.760> it<00:29:08.880> out<00:29:09.120> as<00:29:09.240> its<00:29:09.400> own<00:29:09.520> tab.<00:29:10.160> An\ncan pull it out as its own tab. An\ncan pull it out as its own tab. An alternative<00:29:10.800> way<00:29:10.960> of<00:29:11.080> creating<00:29:11.400> this<00:29:11.520> tab\nalternative way of creating this tab\nalternative way of creating this tab would<00:29:11.840> have<00:29:11.960> been<00:29:12.640> just<00:29:12.840> create<00:29:13.040> a<00:29:13.080> bitmap<00:29:13.480> tab\nwould have been just create a bitmap tab\nwould have been just create a bitmap tab and<00:29:14.040> put<00:29:14.160> in<00:29:14.280> here<00:29:15.040> pixels<00:29:15.720> 18<00:29:16.120> by<00:29:16.320> 18.<00:29:16.960> These\nand put in here pixels 18 by 18. These\nand put in here pixels 18 by 18. These are<00:29:17.240> two<00:29:17.880> things<00:29:18.360> that<00:29:18.520> mean<00:29:18.680> exactly<00:29:19.120> the\nare two things that mean exactly the\nare two things that mean exactly the same<00:29:19.440> thing.\nsame thing.\nsame thing. So,\nSo,\nSo, um\num\num you<00:29:22.280> can<00:29:22.400> see<00:29:22.520> it's<00:29:22.640> just<00:29:22.800> like<00:29:23.000> initialized\nyou can see it's just like initialized\nyou can see it's just like initialized as<00:29:23.560> basically<00:29:23.920> just<00:29:24.080> garbage<00:29:24.400> right<00:29:24.560> now,<00:29:24.880> but\nas basically just garbage right now, but\nas basically just garbage right now, but as<00:29:25.200> I<00:29:25.280> step,<00:29:25.920> you<00:29:26.040> can<00:29:26.200> see<00:29:26.440> these<00:29:26.680> things\nas I step, you can see these things\nas I step, you can see these things start<00:29:27.600> to<00:29:28.120> start<00:29:28.320> to<00:29:28.800> see<00:29:28.920> these<00:29:29.040> pixels<00:29:29.320> start\nstart to start to see these pixels start\nstart to start to see these pixels start to<00:29:29.600> fill<00:29:29.840> out.<00:29:30.520> Um\nto fill out. Um\nto fill out. Um and<00:29:33.000> here's<00:29:33.320> a<00:29:33.360> loop<00:29:33.720> which<00:29:33.920> does<00:29:34.120> something\nand here's a loop which does something\nand here's a loop which does something to<00:29:34.440> all<00:29:34.520> the<00:29:34.600> pixels,<00:29:35.000> so<00:29:35.120> I<00:29:35.160> can<00:29:35.280> set<00:29:35.440> a\nto all the pixels, so I can set a\nto all the pixels, so I can set a breakpoint<00:29:35.880> here.<00:29:36.120> I'll<00:29:36.200> hit<00:29:36.320> F5,<00:29:36.840> run<00:29:37.000> to\nbreakpoint here. I'll hit F5, run to\nbreakpoint here. I'll hit F5, run to that<00:29:37.240> breakpoint.<00:29:37.960> It<00:29:38.160> like<00:29:38.440> shifted<00:29:38.840> all<00:29:38.960> the\nthat breakpoint. It like shifted all the\nthat breakpoint. It like shifted all the pixels<00:29:39.400> over.<00:29:40.360> Um\npixels over. Um\npixels over. Um uh<00:29:41.440> shifted<00:29:41.800> the<00:29:41.880> components<00:29:42.360> of<00:29:42.440> the<00:29:42.520> color\nuh shifted the components of the color\nuh shifted the components of the color of<00:29:43.160> of<00:29:43.240> the<00:29:43.320> pixel<00:29:43.600> colors<00:29:43.880> over.<00:29:44.640> Does<00:29:44.920> same\nof of the pixel colors over. Does same\nof of the pixel colors over. Does same thing<00:29:45.320> here<00:29:45.800> and<00:29:45.920> then<00:29:46.080> finally<00:29:46.440> does<00:29:46.640> it<00:29:46.720> once\nthing here and then finally does it once\nthing here and then finally does it once again<00:29:47.200> to<00:29:47.320> return<00:29:47.600> it<00:29:47.680> back<00:29:47.880> to<00:29:47.960> its<00:29:48.080> original\nagain to return it back to its original\nagain to return it back to its original values.\nvalues.\nvalues. Um\nUm\nUm So,<00:29:50.960> yeah.<00:29:51.520> Finally,<00:29:52.600> um\nSo, yeah. Finally, um\nSo, yeah. Finally, um >> [laughter]\n>> [laughter]\n>> [laughter] >> there's<00:29:55.040> this<00:29:55.240> one<00:29:55.560> which<00:29:55.800> is<00:29:56.000> a<00:29:56.080> bunch<00:29:56.320> you\n>> there's this one which is a bunch you\n>> there's this one which is a bunch you can<00:29:56.560> tell<00:29:57.040> I<00:29:57.080> I\ncan tell I I\ncan tell I I I<00:29:57.880> say<00:29:58.080> 3D<00:29:58.440> geometry.<00:29:59.080> I've<00:29:59.200> got<00:29:59.320> a<00:29:59.360> bunch<00:29:59.520> of\nI say 3D geometry. I've got a bunch of\nI say 3D geometry. I've got a bunch of vertex<00:29:59.920> data.\nvertex data.\nvertex data. Um<00:30:01.000> I've<00:30:01.120> got<00:30:01.680> some<00:30:01.880> index<00:30:02.200> data<00:30:03.080> and<00:30:03.960> uh\nUm I've got some index data and uh\nUm I've got some index data and uh if<00:30:04.800> I<00:30:04.880> So,<00:30:05.040> if<00:30:05.160> I<00:30:05.280> want<00:30:05.520> to<00:30:05.640> run<00:30:05.920> through<00:30:06.520> the\nif I So, if I want to run through the\nif I So, if I want to run through the the<00:30:07.680> initialization<00:30:08.360> of<00:30:08.440> those<00:30:08.560> big<00:30:08.760> tables\nthe initialization of those big tables\nthe initialization of those big tables and<00:30:09.720> this<00:30:09.840> is<00:30:09.920> a<00:30:09.960> pretty<00:30:10.160> complicated\nand this is a pretty complicated\nand this is a pretty complicated expression,<00:30:11.040> so<00:30:11.160> we've<00:30:11.280> got<00:30:11.840> this<00:30:12.040> geo<00:30:12.400> 3D\nexpression, so we've got this geo 3D\nexpression, so we've got this geo 3D view<00:30:13.640> which<00:30:13.760> is<00:30:13.840> applied<00:30:14.160> to<00:30:14.240> the<00:30:14.360> index\nview which is applied to the index\nview which is applied to the index buffer<00:30:15.160> and<00:30:15.280> then<00:30:15.400> you<00:30:15.440> have<00:30:15.560> a<00:30:15.600> vertex\nbuffer and then you have a vertex\nbuffer and then you have a vertex buffer.\nbuffer.\nbuffer. But<00:30:17.240> anyways,\nBut anyways,\nBut anyways, uh<00:30:18.640> then<00:30:18.880> you<00:30:19.000> get<00:30:19.200> this<00:30:19.560> and<00:30:19.680> that's<00:30:19.880> the\nuh then you get this and that's the\nuh then you get this and that's the actual\nactual\nactual um<00:30:21.680> that's<00:30:21.880> the<00:30:21.960> actual<00:30:22.640> like<00:30:22.840> geometry<00:30:23.280> data.\num that's the actual like geometry data.\num that's the actual like geometry data. So,\nSo,\nSo, um\num\num So,<00:30:26.720> yeah,<00:30:26.840> those<00:30:27.040> are<00:30:27.120> the<00:30:27.200> fancier\nSo, yeah, those are the fancier\nSo, yeah, those are the fancier visualizers.<00:30:28.440> Um<00:30:28.840> the<00:30:28.960> geometry<00:30:29.400> one<00:30:29.520> is\nvisualizers. Um the geometry one is\nvisualizers. Um the geometry one is still<00:30:30.120> like<00:30:30.360> all<00:30:30.520> of<00:30:30.600> these<00:30:30.760> are<00:30:30.880> pretty<00:30:31.080> much\nstill like all of these are pretty much\nstill like all of these are pretty much heavily<00:30:31.560> in<00:30:31.680> progress.<00:30:32.360> The<00:30:32.440> ones<00:30:32.640> that<00:30:32.800> are\nheavily in progress. The ones that are\nheavily in progress. The ones that are not<00:30:33.840> as<00:30:33.960> heavily<00:30:34.200> in<00:30:34.320> progress<00:30:34.680> are<00:30:34.760> the<00:30:34.840> ones\nnot as heavily in progress are the ones\nnot as heavily in progress are the ones that<00:30:35.160> are<00:30:35.280> like<00:30:35.480> super<00:30:35.800> super<00:30:36.080> common.<00:30:36.440> Like\nthat are like super super common. Like\nthat are like super super common. Like obviously<00:30:36.880> the<00:30:36.960> watch<00:30:37.160> window,<00:30:37.960> I<00:30:38.040> put<00:30:38.160> a<00:30:38.200> lot\nobviously the watch window, I put a lot\nobviously the watch window, I put a lot of<00:30:38.440> work<00:30:38.560> into<00:30:38.720> the<00:30:38.800> memory<00:30:39.120> view<00:30:39.360> cuz<00:30:39.480> these\nof work into the memory view cuz these\nof work into the memory view cuz these are<00:30:39.720> really<00:30:39.920> common<00:30:40.240> debugging<00:30:40.640> features\nare really common debugging features\nare really common debugging features that<00:30:41.080> people<00:30:41.280> expect,<00:30:41.760> but<00:30:41.960> obviously<00:30:42.360> long\nthat people expect, but obviously long\nthat people expect, but obviously long term<00:30:42.920> the<00:30:43.160> the<00:30:43.280> idea<00:30:43.560> is<00:30:43.720> like,<00:30:43.920> \"Hey,<00:30:44.080> this\nterm the the idea is like, \"Hey, this\nterm the the idea is like, \"Hey, this bitmap<00:30:44.480> visualizer<00:30:44.880> will<00:30:45.000> just<00:30:45.160> end<00:30:45.320> up<00:30:45.400> being\nbitmap visualizer will just end up being\nbitmap visualizer will just end up being like<00:30:46.640> having<00:30:46.920> all<00:30:47.000> the<00:30:47.080> things<00:30:47.320> that<00:30:47.440> you\nlike having all the things that you\nlike having all the things that you really<00:30:47.720> want<00:30:48.240> um<00:30:48.680> for<00:30:49.040> for<00:30:49.600> dealing<00:30:49.840> with\nreally want um for for dealing with\nreally want um for for dealing with bitmap<00:30:50.280> data.\"\nbitmap data.\"\nbitmap data.\" Um<00:30:51.400> and<00:30:51.520> then<00:30:51.640> in<00:30:51.680> the<00:30:51.760> future<00:30:52.000> we'll<00:30:52.120> have\nUm and then in the future we'll have\nUm and then in the future we'll have tons<00:30:52.520> of<00:30:52.600> other<00:30:52.760> kinds<00:30:53.040> of<00:30:53.120> visualizers<00:30:53.720> like,\ntons of other kinds of visualizers like,\ntons of other kinds of visualizers like, you<00:30:54.200> know,<00:30:54.320> for<00:30:54.440> sound<00:30:54.800> data<00:30:55.240> and<00:30:55.640> the<00:30:55.840> 3D\nyou know, for sound data and the 3D\nyou know, for sound data and the 3D geometry<00:30:56.480> one<00:30:56.640> will<00:30:56.800> become<00:30:57.040> a<00:30:57.080> lot<00:30:57.240> more\ngeometry one will become a lot more\ngeometry one will become a lot more sophisticated<00:30:58.120> and<00:30:58.480> and<00:30:58.760> 2D<00:30:59.040> plots<00:30:59.480> and<00:30:59.560> like\nsophisticated and and 2D plots and like\nsophisticated and and 2D plots and like all<00:30:59.800> these<00:30:59.960> kinds<00:31:00.160> of<00:31:00.240> things<00:31:00.440> are<00:31:00.520> on<00:31:00.640> the\nall these kinds of things are on the\nall these kinds of things are on the table.\ntable.\ntable. Um<00:31:02.280> that's<00:31:02.440> what<00:31:02.520> the<00:31:02.600> whole<00:31:02.800> architecture<00:31:03.320> is\nUm that's what the whole architecture is\nUm that's what the whole architecture is for.<00:31:04.200> Um\nfor. Um\nfor. Um >> So,<00:31:04.640> it's<00:31:04.840> like<00:31:05.520> Rad<00:31:05.760> Debugger<00:31:06.240> is<00:31:06.400> like<00:31:06.800> like\n>> So, it's like Rad Debugger is like like\n>> So, it's like Rad Debugger is like like a<00:31:07.080> mini<00:31:07.440> game<00:31:07.840> engine.\na mini game engine.\na mini game engine. >> [laughter]\n>> [laughter]\n>> [laughter] >> You<00:31:10.920> could<00:31:11.320> You<00:31:11.440> could<00:31:11.760> think<00:31:11.960> of<00:31:12.040> it<00:31:12.120> that\n>> You could You could think of it that\n>> You could You could think of it that way,<00:31:12.560> maybe.<00:31:12.960> I<00:31:13.040> mean,<00:31:13.520> you<00:31:13.640> know,<00:31:13.800> I<00:31:13.840> I<00:31:14.560> I\nway, maybe. I mean, you know, I I I\nway, maybe. I mean, you know, I I I wouldn't<00:31:14.800> be<00:31:14.920> so<00:31:15.040> presumptuous<00:31:15.600> as<00:31:15.760> to<00:31:15.840> say\nwouldn't be so presumptuous as to say\nwouldn't be so presumptuous as to say that<00:31:16.280> unlike<00:31:16.640> the<00:31:16.920> people<00:31:17.200> at<00:31:17.320> Anthropic,<00:31:17.840> but\nthat unlike the people at Anthropic, but\nthat unlike the people at Anthropic, but um<00:31:19.680> about<00:31:20.040> Claude.<00:31:20.600> Uh<00:31:20.840> but<00:31:21.760> it<00:31:21.960> is<00:31:22.120> a<00:31:22.160> lot<00:31:22.480> I\num about Claude. Uh but it is a lot I\num about Claude. Uh but it is a lot I would<00:31:22.720> say<00:31:22.880> it's<00:31:23.000> a<00:31:23.040> lot<00:31:23.280> closer<00:31:23.640> to<00:31:23.800> a<00:31:23.880> little\nwould say it's a lot closer to a little\nwould say it's a lot closer to a little game<00:31:24.320> engine<00:31:24.640> than<00:31:25.120> than<00:31:25.440> maybe<00:31:25.680> Claude<00:31:25.960> Code\ngame engine than than maybe Claude Code\ngame engine than than maybe Claude Code is,<00:31:26.360> but\nis, but\nis, but but<00:31:28.240> anyways,\nbut anyways,\nbut anyways, um\num\num so<00:31:30.520> uh<00:31:30.640> I<00:31:30.680> guess<00:31:30.920> one<00:31:31.120> other<00:31:31.320> thing<00:31:31.520> that<00:31:31.640> I\nso uh I guess one other thing that I\nso uh I guess one other thing that I should<00:31:32.040> point<00:31:32.320> out<00:31:32.600> is<00:31:33.080> um<00:31:33.280> some<00:31:33.440> of<00:31:33.520> these\nshould point out is um some of these\nshould point out is um some of these things<00:31:33.880> which<00:31:34.000> I'm<00:31:34.120> sure<00:31:34.400> people<00:31:34.680> in<00:31:34.760> the<00:31:34.800> chat\nthings which I'm sure people in the chat\nthings which I'm sure people in the chat have<00:31:35.160> probably<00:31:35.560> already<00:31:35.720> spotted,<00:31:36.160> which<00:31:36.280> is\nhave probably already spotted, which is\nhave probably already spotted, which is like<00:31:36.640> these<00:31:37.160> uh\nlike these uh\nlike these uh these<00:31:39.000> like<00:31:39.280> in-source<00:31:39.960> annotations<00:31:40.800> of<00:31:41.080> Rad\nthese like in-source annotations of Rad\nthese like in-source annotations of Rad Debugger<00:31:41.840> info.<00:31:42.520> So,<00:31:42.640> you<00:31:42.720> can<00:31:42.840> see<00:31:43.040> right\nDebugger info. So, you can see right\nDebugger info. So, you can see right here<00:31:43.520> I'm<00:31:43.640> saying<00:31:43.880> Rad<00:31:44.080> DBG<00:31:44.440> entry<00:31:44.760> point<00:31:45.400> mule\nhere I'm saying Rad DBG entry point mule\nhere I'm saying Rad DBG entry point mule main.<00:31:46.440> Um<00:31:46.960> and<00:31:47.040> you<00:31:47.120> might<00:31:47.240> be<00:31:47.360> wondering\nmain. Um and you might be wondering\nmain. Um and you might be wondering like,\nlike,\nlike, \"What<00:31:48.800> is<00:31:48.920> that<00:31:49.040> about?\"<00:31:49.760> Well,<00:31:49.920> you<00:31:49.960> can<00:31:50.080> see\n\"What is that about?\" Well, you can see\n\"What is that about?\" Well, you can see like<00:31:50.440> when<00:31:50.560> I'm<00:31:50.680> not<00:31:50.920> debugging<00:31:51.280> this\nlike when I'm not debugging this\nlike when I'm not debugging this program,\nprogram,\nprogram, so<00:31:53.240> you<00:31:53.360> can<00:31:53.480> see<00:31:53.600> I'm<00:31:53.760> I'm<00:31:53.880> debugging<00:31:54.320> this\nso you can see I'm I'm debugging this\nso you can see I'm I'm debugging this mule<00:31:54.840> main.exe,\nmule main.exe,\nmule main.exe, and<00:31:57.160> um<00:31:57.680> if<00:31:57.800> I<00:31:57.880> step<00:31:58.160> into<00:31:58.400> it,<00:31:59.080> you'll<00:31:59.240> see\nand um if I step into it, you'll see\nand um if I step into it, you'll see that<00:31:59.680> my<00:31:59.880> thread<00:32:00.320> first<00:32:00.720> stops.<00:32:01.200> It<00:32:01.320> says,\nthat my thread first stops. It says,\nthat my thread first stops. It says, \"Stopped<00:32:01.840> at<00:32:01.920> entry<00:32:02.160> point.\"<00:32:02.440> And<00:32:02.520> you<00:32:02.560> might\n\"Stopped at entry point.\" And you might\n\"Stopped at entry point.\" And you might see,<00:32:02.920> \"Hey,<00:32:03.120> mule<00:32:03.360> main.\"<00:32:03.600> It's<00:32:03.720> like<00:32:03.880> weird\nsee, \"Hey, mule main.\" It's like weird\nsee, \"Hey, mule main.\" It's like weird cuz<00:32:04.560> when<00:32:04.680> I<00:32:04.760> learned<00:32:05.000> how<00:32:05.080> to<00:32:05.160> write<00:32:05.400> C,<00:32:05.720> it\ncuz when I learned how to write C, it\ncuz when I learned how to write C, it had<00:32:06.000> to<00:32:06.040> be<00:32:06.240> int<00:32:06.520> main\nhad to be int main\nhad to be int main uh<00:32:08.480> or,<00:32:08.880> you<00:32:08.960> know,<00:32:09.080> if<00:32:09.160> you're<00:32:09.240> on<00:32:09.360> Windows,\nuh or, you know, if you're on Windows,\nuh or, you know, if you're on Windows, it's<00:32:09.880> like<00:32:10.240> it's<00:32:10.440> like<00:32:10.640> WinMain,<00:32:11.240> it's<00:32:11.360> like\nit's like it's like WinMain, it's like\nit's like it's like WinMain, it's like the<00:32:11.560> WinMain<00:32:11.880> function.<00:32:12.480> And<00:32:12.640> sure<00:32:12.800> enough,\nthe WinMain function. And sure enough,\nthe WinMain function. And sure enough, it's<00:32:13.200> like,<00:32:13.360> \"Hey,<00:32:13.600> if<00:32:13.800> I<00:32:13.960> look<00:32:14.160> at<00:32:14.200> my<00:32:14.320> call\nit's like, \"Hey, if I look at my call\nit's like, \"Hey, if I look at my call stack,<00:32:14.880> I<00:32:14.960> see<00:32:15.280> I<00:32:15.360> have<00:32:15.640> WinMain<00:32:16.000> right<00:32:16.160> here.\"\nstack, I see I have WinMain right here.\"\nstack, I see I have WinMain right here.\" And<00:32:16.920> that<00:32:17.040> is<00:32:17.160> a<00:32:17.240> function.<00:32:17.600> Hey,<00:32:17.760> that's<00:32:17.960> even\nAnd that is a function. Hey, that's even\nAnd that is a function. Hey, that's even in<00:32:18.240> the<00:32:18.280> same<00:32:18.480> source<00:32:18.760> file.<00:32:19.000> So,<00:32:19.160> shouldn't\nin the same source file. So, shouldn't\nin the same source file. So, shouldn't in<00:32:20.200> most<00:32:20.440> debuggers<00:32:20.880> if<00:32:21.000> you<00:32:21.120> ran<00:32:21.400> this,<00:32:21.680> you\nin most debuggers if you ran this, you\nin most debuggers if you ran this, you would<00:32:21.880> end<00:32:22.160> you<00:32:22.360> your<00:32:22.520> thread<00:32:22.760> would<00:32:22.880> end<00:32:23.040> up\nwould end you your thread would end up\nwould end you your thread would end up here,<00:32:23.600> right?\nhere, right?\nhere, right? And<00:32:25.520> so,<00:32:25.720> that<00:32:26.320> little<00:32:26.760> Rad<00:32:26.960> DBG<00:32:27.280> entry<00:32:27.560> point\nAnd so, that little Rad DBG entry point\nAnd so, that little Rad DBG entry point thing<00:32:28.080> is<00:32:28.240> actually<00:32:28.560> sticking<00:32:29.000> something\nthing is actually sticking something\nthing is actually sticking something into<00:32:29.520> the<00:32:29.600> executable<00:32:30.480> that<00:32:30.640> the<00:32:30.720> debugger\ninto the executable that the debugger\ninto the executable that the debugger um<00:32:32.440> that<00:32:32.560> the<00:32:32.640> debugger<00:32:33.000> reads.<00:32:33.800> And<00:32:33.920> so,<00:32:34.040> the\num that the debugger reads. And so, the\num that the debugger reads. And so, the debugger<00:32:34.480> knows,<00:32:34.920> \"Hey,<00:32:35.640> for<00:32:35.800> this<00:32:36.000> program,\ndebugger knows, \"Hey, for this program,\ndebugger knows, \"Hey, for this program, the<00:32:36.640> entry<00:32:36.840> point<00:32:37.120> symbol<00:32:37.480> is<00:32:37.640> not<00:32:37.840> just\nthe entry point symbol is not just\nthe entry point symbol is not just WinMain,<00:32:38.800> it's<00:32:38.960> actually<00:32:39.280> mule<00:32:39.560> main.<00:32:40.160> So,\nWinMain, it's actually mule main. So,\nWinMain, it's actually mule main. So, this<00:32:40.560> it<00:32:40.680> sticks<00:32:40.960> this<00:32:41.120> thing<00:32:41.360> into<00:32:41.640> the\nthis it sticks this thing into the\nthis it sticks this thing into the actual<00:32:42.080> executable.<00:32:42.920> In<00:32:43.000> fact,<00:32:43.280> I<00:32:43.320> wonder<00:32:43.600> if\nactual executable. In fact, I wonder if\nactual executable. In fact, I wonder if I<00:32:43.800> can<00:32:43.920> even<00:32:44.120> show<00:32:45.040> like<00:32:45.200> let's<00:32:45.400> do\nI can even show like let's do\nI can even show like let's do radbg<00:32:47.400> markup<00:32:48.040> to<00:32:48.200> I<00:32:48.240> don't<00:32:48.400> have<00:32:48.680> it.\nradbg markup to I don't have it.\nradbg markup to I don't have it. Uh<00:32:49.960> markup.h,<00:32:50.680> yeah.\nUh markup.h, yeah.\nUh markup.h, yeah. If<00:32:51.880> we<00:32:52.080> look<00:32:52.440> at<00:32:52.600> like<00:32:52.840> what<00:32:53.000> this<00:32:53.160> thing<00:32:53.320> would\nIf we look at like what this thing would\nIf we look at like what this thing would actually<00:32:53.720> be<00:32:53.920> like<00:32:54.280> uh<00:32:54.800> entry<00:32:55.120> point,\nactually be like uh entry point,\nactually be like uh entry point, you<00:32:56.800> can<00:32:56.920> see<00:32:57.080> what<00:32:57.280> this<00:32:57.440> macro<00:32:57.800> actually\nyou can see what this macro actually\nyou can see what this macro actually does<00:32:58.520> is<00:32:58.840> it<00:32:59.000> says<00:32:59.240> radbg<00:33:00.160> exec<00:33:00.520> data,<00:33:00.800> which<00:33:00.960> I\ndoes is it says radbg exec data, which I\ndoes is it says radbg exec data, which I can<00:33:01.120> explain<00:33:01.400> what<00:33:01.480> that<00:33:01.720> is.<00:33:02.240> And<00:33:02.360> then<00:33:02.440> it's\ncan explain what that is. And then it's\ncan explain what that is. And then it's a<00:33:02.640> character<00:33:03.720> a<00:33:03.800> character<00:33:04.240> array,<00:33:04.520> so\na character a character array, so\na character a character array, so generates<00:33:05.360> uh<00:33:05.720> a<00:33:05.800> name<00:33:06.120> here<00:33:06.640> using<00:33:06.920> this\ngenerates uh a name here using this\ngenerates uh a name here using this thing,<00:33:07.240> but<00:33:07.360> it's<00:33:07.440> a<00:33:07.520> character<00:33:07.920> array,<00:33:08.800> has\nthing, but it's a character array, has\nthing, but it's a character array, has some<00:33:09.200> ID,<00:33:09.960> and<00:33:10.080> then<00:33:10.200> it<00:33:10.320> sticks<00:33:10.640> in<00:33:11.360> entry\nsome ID, and then it sticks in entry\nsome ID, and then it sticks in entry point<00:33:12.000> colon<00:33:12.400> and<00:33:12.480> then<00:33:12.640> whatever<00:33:12.880> the\npoint colon and then whatever the\npoint colon and then whatever the arguments<00:33:13.400> were<00:33:13.840> as<00:33:14.040> a<00:33:14.080> string<00:33:14.360> literal.\narguments were as a string literal.\narguments were as a string literal. Uh<00:33:15.960> so,<00:33:16.680> that<00:33:16.920> actually<00:33:17.160> gets<00:33:17.320> baked<00:33:17.560> into\nUh so, that actually gets baked into\nUh so, that actually gets baked into this<00:33:18.320> radbg<00:33:18.840> exec<00:33:19.200> data<00:33:19.520> thing.<00:33:20.440> That\nthis radbg exec data thing. That\nthis radbg exec data thing. That actually<00:33:21.320> tells<00:33:22.160> this<00:33:22.640> uh<00:33:22.720> tells<00:33:22.920> the<00:33:23.000> C\nactually tells this uh tells the C\nactually tells this uh tells the C compiler<00:33:23.480> to<00:33:23.600> stick<00:33:23.800> this<00:33:23.960> into<00:33:24.200> a<00:33:24.240> custom\ncompiler to stick this into a custom\ncompiler to stick this into a custom expression.\nexpression.\nexpression. Uh<00:33:26.200> or<00:33:26.320> sorry,<00:33:26.560> not<00:33:26.760> not<00:33:26.880> expression,<00:33:27.400> a\nUh or sorry, not not expression, a\nUh or sorry, not not expression, a custom<00:33:27.800> section.<00:33:28.920> And<00:33:29.560> uh<00:33:29.760> we<00:33:29.880> can<00:33:30.000> see<00:33:30.480> that\ncustom section. And uh we can see that\ncustom section. And uh we can see that uh\nuh\nuh radbg<00:33:32.520> exec<00:33:32.920> data<00:33:33.560> is<00:33:33.720> right<00:33:33.880> here<00:33:34.040> specified\nradbg exec data is right here specified\nradbg exec data is right here specified as<00:33:35.000> we<00:33:35.080> have<00:33:35.840> uh<00:33:35.920> we<00:33:36.080> tell<00:33:36.400> basically<00:33:36.720> the\nas we have uh we tell basically the\nas we have uh we tell basically the compiler,<00:33:37.160> \"Hey,<00:33:37.280> I<00:33:37.320> need<00:33:37.480> a<00:33:37.520> section\ncompiler, \"Hey, I need a section\ncompiler, \"Hey, I need a section uh<00:33:39.000> .radbg<00:33:39.800> needs<00:33:40.000> to<00:33:40.080> be<00:33:40.200> readable<00:33:40.520> and\nuh .radbg needs to be readable and\nuh .radbg needs to be readable and writable.\"<00:33:41.440> And<00:33:41.560> then<00:33:42.120> radbg<00:33:42.560> exec<00:33:43.080> data<00:33:43.520> is\nwritable.\" And then radbg exec data is\nwritable.\" And then radbg exec data is just<00:33:43.840> a<00:33:43.880> declspec.<00:33:44.840> This<00:33:45.040> is<00:33:45.160> for<00:33:45.560> MSVC<00:33:45.960> and\njust a declspec. This is for MSVC and\njust a declspec. This is for MSVC and Clang<00:33:46.320> on<00:33:46.440> Windows,<00:33:46.840> but<00:33:46.960> you<00:33:47.040> can<00:33:47.120> do\nClang on Windows, but you can do\nClang on Windows, but you can do equivalent<00:33:47.640> things<00:33:47.880> on<00:33:48.200> on<00:33:48.480> the<00:33:48.560> other\nequivalent things on on the other\nequivalent things on on the other compilers.<00:33:49.640> Hey,<00:33:49.800> declspec,<00:33:50.360> make<00:33:50.520> sure<00:33:50.760> when\ncompilers. Hey, declspec, make sure when\ncompilers. Hey, declspec, make sure when you<00:33:51.000> allocate<00:33:51.360> this<00:33:51.480> global<00:33:51.720> variable<00:33:52.240> that\nyou allocate this global variable that\nyou allocate this global variable that you<00:33:52.480> put<00:33:52.640> it<00:33:52.760> inside<00:33:53.120> of<00:33:53.200> the<00:33:53.280> .radbg<00:33:54.000> section.\nyou put it inside of the .radbg section.\nyou put it inside of the .radbg section. That's<00:33:54.520> all<00:33:54.640> that<00:33:54.880> radbg<00:33:55.320> exec<00:33:55.680> data<00:33:55.960> is,<00:33:56.320> so\nThat's all that radbg exec data is, so\nThat's all that radbg exec data is, so it<00:33:56.600> sticks<00:33:56.880> that<00:33:57.120> info<00:33:57.560> into<00:33:57.800> the<00:33:57.880> executable.\nit sticks that info into the executable.\nit sticks that info into the executable. And<00:33:59.000> as<00:33:59.080> a<00:33:59.120> consequence,\nAnd as a consequence,\nAnd as a consequence, uh<00:34:00.840> the<00:34:00.920> debugger,<00:34:01.360> when<00:34:01.480> it<00:34:01.600> loads<00:34:01.800> your\nuh the debugger, when it loads your\nuh the debugger, when it loads your program,<00:34:02.240> can<00:34:02.400> know,<00:34:02.920> \"Hey,<00:34:03.200> the<00:34:03.280> entry<00:34:03.520> point\nprogram, can know, \"Hey, the entry point\nprogram, can know, \"Hey, the entry point is<00:34:03.800> actually<00:34:04.080> here.\"\nis actually here.\"\nis actually here.\" Um\nUm\nUm So,<00:34:06.960> there's<00:34:07.160> other<00:34:07.480> kinds<00:34:07.760> of<00:34:08.159> interop<00:34:08.639> that\nSo, there's other kinds of interop that\nSo, there's other kinds of interop that your<00:34:08.919> program<00:34:09.240> can<00:34:09.360> do<00:34:09.520> with<00:34:09.679> the<00:34:09.720> debugger.\nyour program can do with the debugger.\nyour program can do with the debugger. You<00:34:10.120> can<00:34:10.240> see<00:34:10.399> a<00:34:10.440> few<00:34:10.639> of<00:34:10.720> them<00:34:10.879> right<00:34:11.080> here.<00:34:11.960> Um\nYou can see a few of them right here. Um\nYou can see a few of them right here. Um so,<00:34:12.240> by<00:34:12.399> default,<00:34:12.840> your<00:34:12.960> threads<00:34:13.240> will<00:34:13.320> just\nso, by default, your threads will just\nso, by default, your threads will just be<00:34:13.560> colored<00:34:13.840> with<00:34:13.960> this<00:34:14.080> like<00:34:14.240> little<00:34:14.440> yellow\nbe colored with this like little yellow\nbe colored with this like little yellow color.<00:34:15.600> Um\ncolor. Um\ncolor. Um but<00:34:16.440> if<00:34:16.560> I<00:34:16.639> want<00:34:16.800> to<00:34:16.879> And<00:34:17.120> also,<00:34:17.480> it'll<00:34:17.679> just\nbut if I want to And also, it'll just\nbut if I want to And also, it'll just the<00:34:18.440> debugger<00:34:18.760> assumes<00:34:19.120> this<00:34:19.240> thing<00:34:19.399> is<00:34:19.520> the\nthe debugger assumes this thing is the\nthe debugger assumes this thing is the main<00:34:19.840> thread<00:34:20.159> cuz<00:34:20.320> it<00:34:20.480> I<00:34:20.560> mean,<00:34:20.720> it<00:34:20.800> is<00:34:20.919> the\nmain thread cuz it I mean, it is the\nmain thread cuz it I mean, it is the main<00:34:21.159> thread,<00:34:21.399> but<00:34:21.520> it'll<00:34:21.679> just<00:34:21.919> name<00:34:22.159> it<00:34:22.360> main\nmain thread, but it'll just name it main\nmain thread, but it'll just name it main thread.<00:34:23.320> But<00:34:23.399> if<00:34:23.480> you<00:34:23.560> wanted<00:34:23.760> to<00:34:23.840> have<00:34:23.919> a\nthread. But if you wanted to have a\nthread. But if you wanted to have a custom<00:34:24.280> name,<00:34:24.480> you<00:34:24.520> could<00:34:24.639> say,<00:34:24.800> \"Hey,<00:34:25.399> uh\ncustom name, you could say, \"Hey, uh\ncustom name, you could say, \"Hey, uh radbg<00:34:25.960> thread<00:34:26.240> name.\"\nradbg thread name.\"\nradbg thread name.\" Um<00:34:27.679> right<00:34:27.879> there,<00:34:28.080> and<00:34:28.320> and<00:34:28.560> that's<00:34:28.720> going<00:34:28.840> to\nUm right there, and and that's going to\nUm right there, and and that's going to be<00:34:29.000> mule<00:34:29.280> main<00:34:29.520> thread,<00:34:29.800> and<00:34:29.879> that<00:34:30.040> shows<00:34:30.280> up\nbe mule main thread, and that shows up\nbe mule main thread, and that shows up here.<00:34:30.960> And<00:34:31.080> then<00:34:31.159> if<00:34:31.280> I<00:34:31.360> want<00:34:31.560> to<00:34:31.679> color<00:34:32.000> this\nhere. And then if I want to color this\nhere. And then if I want to color this thread<00:34:32.399> a<00:34:32.440> specific<00:34:32.879> way,<00:34:33.120> I<00:34:33.200> can<00:34:33.480> I<00:34:33.560> can<00:34:33.720> do\nthread a specific way, I can I can do\nthread a specific way, I can I can do that<00:34:34.159> also<00:34:34.879> with<00:34:35.040> this<00:34:35.200> markup<00:34:35.560> stuff.<00:34:36.320> And<00:34:36.440> so\nthat also with this markup stuff. And so\nthat also with this markup stuff. And so when<00:34:36.800> I<00:34:36.840> step<00:34:37.080> over<00:34:37.200> that,<00:34:37.440> it'll<00:34:37.840> color<00:34:38.120> my\nwhen I step over that, it'll color my\nwhen I step over that, it'll color my thread.\nthread.\nthread. Um\nUm\nUm And<00:34:41.720> then<00:34:42.480> there's<00:34:42.679> other<00:34:42.840> stuff,<00:34:43.040> too.<00:34:43.280> So\nAnd then there's other stuff, too. So\nAnd then there's other stuff, too. So >> [clears throat]\n>> [clears throat]\n>> [clears throat] >> um\n>> [snorts]\n>> [snorts]\n>> [snorts] >> For<00:34:47.760> example,<00:34:48.560> if<00:34:48.720> I<00:34:48.800> go<00:34:48.960> down<00:34:49.560> to\n>> For example, if I go down to\n>> For example, if I go down to uh\nuh\nuh Let<00:34:51.760> me<00:34:51.879> look<00:34:52.120> at\nLet me look at\nLet me look at where<00:34:53.760> what<00:34:53.960> example<00:34:54.360> am<00:34:54.440> I<00:34:54.480> looking<00:34:54.760> for?<00:34:55.360> Uh\nwhere what example am I looking for? Uh\nwhere what example am I looking for? Uh dynamic<00:34:56.000> array.\ndynamic array.\ndynamic array. So<00:34:57.320> dynamic<00:34:57.840> array,<00:34:58.160> if<00:34:58.320> we<00:34:58.440> look<00:34:58.680> at<00:34:58.840> what\nSo dynamic array, if we look at what\nSo dynamic array, if we look at what this<00:34:59.440> type<00:34:59.760> is,<00:35:00.000> this<00:35:00.160> is<00:35:00.280> a<00:35:00.320> structure.\nthis type is, this is a structure.\nthis type is, this is a structure. Right?<00:35:01.880> And<00:35:02.000> this<00:35:02.120> structure<00:35:02.480> has<00:35:02.640> a<00:35:02.720> pointer\nRight? And this structure has a pointer\nRight? And this structure has a pointer to<00:35:04.480> a<00:35:04.560> pair\nto a pair\nto a pair and<00:35:05.800> it<00:35:05.880> has<00:35:06.040> a<00:35:06.080> count.\nand it has a count.\nand it has a count. So<00:35:07.240> like<00:35:07.920> usual<00:35:08.280> C<00:35:08.400> programs,<00:35:09.160> you<00:35:09.240> know,<00:35:09.360> if\nSo like usual C programs, you know, if\nSo like usual C programs, you know, if you<00:35:09.680> if<00:35:09.840> you<00:35:09.920> want<00:35:10.040> to<00:35:10.120> have<00:35:10.200> a<00:35:10.240> slice<00:35:10.640> type,\nyou if you want to have a slice type,\nyou if you want to have a slice type, you<00:35:11.000> need<00:35:11.120> a<00:35:11.200> pointer<00:35:11.520> and<00:35:11.600> a<00:35:11.640> size<00:35:12.080> or<00:35:12.400> you\nyou need a pointer and a size or you\nyou need a pointer and a size or you know,<00:35:12.560> two<00:35:12.760> pointers<00:35:13.160> that<00:35:13.280> form<00:35:13.520> a<00:35:13.840> that<00:35:13.960> form\nknow, two pointers that form a that form\nknow, two pointers that form a that form a<00:35:14.200> range<00:35:14.520> in<00:35:14.640> memory<00:35:14.920> or<00:35:15.000> whatever.\na range in memory or whatever.\na range in memory or whatever. Um<00:35:16.800> and<00:35:16.880> this<00:35:17.040> is<00:35:17.120> just<00:35:17.440> how<00:35:17.680> you<00:35:17.840> encode<00:35:18.200> a\nUm and this is just how you encode a\nUm and this is just how you encode a dynamic<00:35:18.720> array<00:35:19.160> inside<00:35:19.600> of<00:35:19.760> like<00:35:19.960> the<00:35:20.080> regular\ndynamic array inside of like the regular\ndynamic array inside of like the regular kind<00:35:21.160> of<00:35:21.600> uh<00:35:21.720> bare-bones<00:35:22.520> C<00:35:23.120> type<00:35:23.320> system.\nkind of uh bare-bones C type system.\nkind of uh bare-bones C type system. And<00:35:24.640> then<00:35:24.760> generally<00:35:25.160> if<00:35:25.280> you<00:35:25.560> visualize<00:35:26.000> this\nAnd then generally if you visualize this\nAnd then generally if you visualize this in<00:35:26.280> a<00:35:26.320> debugger,<00:35:27.120> what<00:35:27.280> you'll<00:35:27.400> see<00:35:28.280> is<00:35:28.960> um\nin a debugger, what you'll see is um\nin a debugger, what you'll see is um I'll<00:35:30.160> have<00:35:30.280> to<00:35:30.360> use<00:35:30.520> this<00:35:30.720> raw<00:35:30.960> thing,<00:35:31.720> this\nI'll have to use this raw thing, this\nI'll have to use this raw thing, this raw<00:35:32.520> view,<00:35:32.800> which<00:35:32.960> basically<00:35:33.200> turns<00:35:33.480> off<00:35:33.680> all\nraw view, which basically turns off all\nraw view, which basically turns off all the<00:35:33.880> special<00:35:34.160> views,<00:35:34.680> which<00:35:34.840> I'll<00:35:35.040> get<00:35:35.200> to<00:35:35.320> in\nthe special views, which I'll get to in\nthe special views, which I'll get to in a<00:35:35.440> second.<00:35:35.760> But<00:35:36.200> this<00:35:36.360> is<00:35:36.480> what<00:35:36.600> you<00:35:36.680> would\na second. But this is what you would\na second. But this is what you would normally<00:35:37.160> see<00:35:37.400> when<00:35:37.560> you<00:35:37.680> visualize<00:35:38.120> this\nnormally see when you visualize this\nnormally see when you visualize this thing<00:35:38.400> in<00:35:38.480> a<00:35:38.520> debugger.<00:35:38.920> It's<00:35:39.040> like,<00:35:39.200> \"Hey,\nthing in a debugger. It's like, \"Hey,\nthing in a debugger. It's like, \"Hey, it's<00:35:39.600> a<00:35:39.640> struct<00:35:40.040> with<00:35:40.160> two<00:35:40.320> members.<00:35:40.680> One's<00:35:40.880> a\nit's a struct with two members. One's a\nit's a struct with two members. One's a pointer<00:35:41.360> to<00:35:41.960> some<00:35:42.240> number<00:35:42.560> of<00:35:42.680> pairs<00:35:42.960> we<00:35:43.040> don't\npointer to some number of pairs we don't\npointer to some number of pairs we don't know,<00:35:43.480> but<00:35:43.840> we<00:35:43.960> can<00:35:44.080> only<00:35:44.240> assume<00:35:44.600> one<00:35:44.920> really\nknow, but we can only assume one really\nknow, but we can only assume one really in<00:35:45.880> general.\"<00:35:46.880> And<00:35:46.920> then<00:35:47.040> this<00:35:47.200> integer\nin general.\" And then this integer\nin general.\" And then this integer called<00:35:47.920> count<00:35:48.320> with<00:35:48.880> with<00:35:49.120> a<00:35:49.240> size<00:35:50.000> or<00:35:50.440> with<00:35:50.600> a\ncalled count with with a size or with a\ncalled count with with a size or with a value<00:35:50.920> of<00:35:51.040> six.\nvalue of six.\nvalue of six. Um<00:35:52.360> but<00:35:52.520> obviously<00:35:53.000> what<00:35:53.120> this<00:35:53.280> is<00:35:53.400> encoding\nUm but obviously what this is encoding\nUm but obviously what this is encoding um<00:35:55.000> and<00:35:55.280> what<00:35:55.480> the<00:35:55.640> name<00:35:55.880> should<00:35:56.040> imply<00:35:56.360> is\num and what the name should imply is\num and what the name should imply is that,<00:35:56.600> \"Hey,<00:35:56.840> this<00:35:57.040> is<00:35:57.240> six<00:35:57.680> of<00:35:57.840> these<00:35:58.040> pairs\nthat, \"Hey, this is six of these pairs\nthat, \"Hey, this is six of these pairs that<00:35:58.840> we're<00:35:58.920> pointing<00:35:59.320> to.\"\nthat we're pointing to.\"\nthat we're pointing to.\" And<00:36:01.520> so<00:36:01.640> what<00:36:01.760> we<00:36:01.840> can<00:36:01.960> actually<00:36:02.240> do<00:36:02.680> is<00:36:03.160> um\nAnd so what we can actually do is um\nAnd so what we can actually do is um uh<00:36:04.320> if<00:36:04.440> we<00:36:04.560> go\nlook<00:36:08.080> at<00:36:08.200> more<00:36:08.400> of<00:36:08.480> the<00:36:08.560> markup<00:36:08.920> in<00:36:09.000> this<00:36:09.440> in\nlook at more of the markup in this in\nlook at more of the markup in this in this<00:36:10.080> um<00:36:10.400> file,<00:36:10.760> we<00:36:10.840> can<00:36:10.960> see,<00:36:11.560> \"Hey,<00:36:11.680> here's\nthis um file, we can see, \"Hey, here's\nthis um file, we can see, \"Hey, here's my<00:36:12.040> structure.<00:36:13.080> Uh<00:36:13.200> it's<00:36:13.360> dynamic<00:36:13.760> array,\nmy structure. Uh it's dynamic array,\nmy structure. Uh it's dynamic array, pair<00:36:14.480> pointer,<00:36:15.280> and<00:36:15.560> int.\"\npair pointer, and int.\"\npair pointer, and int.\" And<00:36:18.000> right<00:36:18.200> here<00:36:18.440> I<00:36:18.480> just<00:36:18.680> say,<00:36:18.840> \"Hey,<00:36:19.600> I<00:36:19.720> want\nAnd right here I just say, \"Hey, I want\nAnd right here I just say, \"Hey, I want to<00:36:20.000> form<00:36:20.280> a<00:36:20.320> special<00:36:20.680> kind<00:36:20.840> of<00:36:20.920> view<00:36:21.240> that's\nto form a special kind of view that's\nto form a special kind of view that's associated<00:36:22.160> with<00:36:22.280> this<00:36:22.480> type\nassociated with this type\nassociated with this type uh<00:36:23.520> for<00:36:24.000> for<00:36:24.160> the<00:36:24.280> Render<00:36:24.480> Debugger.\"<00:36:24.720> So<00:36:24.840> it's\nuh for for the Render Debugger.\" So it's\nuh for for the Render Debugger.\" So it's a<00:36:24.960> Render<00:36:25.160> Debugger<00:36:25.400> type<00:36:25.640> view.<00:36:26.360> I<00:36:26.480> put<00:36:26.680> in\na Render Debugger type view. I put in\na Render Debugger type view. I put in the<00:36:26.840> name<00:36:27.040> of<00:36:27.120> the<00:36:27.200> type,<00:36:27.720> and<00:36:27.800> then<00:36:27.920> I<00:36:28.000> put<00:36:28.280> in\nthe name of the type, and then I put in\nthe name of the type, and then I put in the<00:36:29.240> expression<00:36:29.880> that<00:36:30.000> I'd<00:36:30.120> like<00:36:30.320> to\nthe expression that I'd like to\nthe expression that I'd like to visualize<00:36:31.520> instances<00:36:32.040> of<00:36:32.120> this<00:36:32.280> type<00:36:32.520> as.<00:36:33.320> So,\nvisualize instances of this type as. So,\nvisualize instances of this type as. So, in<00:36:33.480> this<00:36:33.640> case,<00:36:33.920> and<00:36:34.120> this<00:36:34.280> dollar<00:36:34.560> sign<00:36:35.080> is\nin this case, and this dollar sign is\nin this case, and this dollar sign is just<00:36:35.480> used<00:36:35.880> to<00:36:36.120> refer<00:36:36.520> to\njust used to refer to\njust used to refer to um<00:36:37.720> whatever's<00:36:38.080> being<00:36:38.280> evaluated.<00:36:39.280> So,<00:36:39.600> any\num whatever's being evaluated. So, any\num whatever's being evaluated. So, any whatever<00:36:40.880> expression<00:36:41.280> it<00:36:41.360> evaluates<00:36:41.800> to<00:36:41.920> this\nwhatever expression it evaluates to this\nwhatever expression it evaluates to this type,<00:36:42.520> that's<00:36:42.720> what<00:36:42.880> this<00:36:43.040> dollar<00:36:43.320> sign\ntype, that's what this dollar sign\ntype, that's what this dollar sign represents.<00:36:44.360> And<00:36:44.520> the<00:36:44.640> only<00:36:44.840> thing<00:36:44.960> I'm<00:36:45.080> going\nrepresents. And the only thing I'm going\nrepresents. And the only thing I'm going to<00:36:45.280> do<00:36:45.560> when<00:36:45.720> we're<00:36:45.840> evaluating<00:36:46.400> this<00:36:46.560> kind<00:36:46.760> of\nto do when we're evaluating this kind of\nto do when we're evaluating this kind of thing<00:36:47.400> is<00:36:47.480> I'm<00:36:47.560> just<00:36:47.680> going<00:36:47.800> to<00:36:47.880> wrap<00:36:48.120> it<00:36:48.200> in\nthing is I'm just going to wrap it in\nthing is I'm just going to wrap it in this<00:36:48.440> view<00:36:49.040> called<00:36:49.320> slice.\nthis view called slice.\nthis view called slice. And<00:36:51.400> so,<00:36:51.520> what<00:36:51.680> we<00:36:51.840> do\nAnd so, what we do\nAnd so, what we do uh<00:36:53.320> what<00:36:53.440> we<00:36:53.560> see<00:36:53.800> when<00:36:53.960> we<00:36:54.080> actually<00:36:54.640> like\nuh what we see when we actually like\nuh what we see when we actually like plug<00:36:55.120> that<00:36:55.320> in<00:36:55.520> and<00:36:55.680> evaluate<00:36:56.080> just<00:36:56.320> dynamic,\nplug that in and evaluate just dynamic,\nplug that in and evaluate just dynamic, we<00:36:57.000> see<00:36:57.200> that<00:36:57.360> the<00:36:57.480> evaluation<00:36:58.000> type<00:36:58.160> is\nwe see that the evaluation type is\nwe see that the evaluation type is actually<00:36:58.560> slice<00:36:59.480> the<00:36:59.600> slice<00:36:59.960> view<00:37:00.760> applied<00:37:01.200> to\nactually slice the slice view applied to\nactually slice the slice view applied to a<00:37:01.840> dynamic<00:37:02.280> array<00:37:02.440> type.\na dynamic array type.\na dynamic array type. And<00:37:03.960> that<00:37:04.160> will<00:37:04.320> actually<00:37:04.640> expand<00:37:05.280> with<00:37:05.480> the\nAnd that will actually expand with the\nAnd that will actually expand with the exact<00:37:05.960> number<00:37:06.200> of<00:37:06.320> things<00:37:06.560> that<00:37:06.680> I<00:37:06.720> actually\nexact number of things that I actually\nexact number of things that I actually expect.<00:37:07.440> So,<00:37:07.560> this<00:37:07.760> is<00:37:07.880> like<00:37:08.080> just<00:37:08.800> hit\nexpect. So, this is like just hit\nexpect. So, this is like just hit saying,<00:37:09.200> \"Hey,<00:37:09.360> here's<00:37:09.600> a<00:37:09.640> structure.<00:37:10.000> It's\nsaying, \"Hey, here's a structure. It's\nsaying, \"Hey, here's a structure. It's got<00:37:10.200> a<00:37:10.240> pointer<00:37:10.520> and<00:37:10.600> a<00:37:10.640> count.<00:37:11.600> You<00:37:11.760> know<00:37:11.880> what\ngot a pointer and a count. You know what\ngot a pointer and a count. You know what to<00:37:12.080> do<00:37:12.200> with<00:37:12.360> this<00:37:13.080> if<00:37:13.280> I<00:37:13.360> tell<00:37:13.600> you<00:37:13.680> that<00:37:13.840> it's\nto do with this if I tell you that it's\nto do with this if I tell you that it's a<00:37:14.000> slice.\"<00:37:14.560> So,<00:37:15.000> the<00:37:15.120> debugger<00:37:15.440> does<00:37:15.680> know<00:37:15.800> how\na slice.\" So, the debugger does know how\na slice.\" So, the debugger does know how to<00:37:16.000> do<00:37:16.120> it<00:37:16.520> do<00:37:16.680> with<00:37:16.800> it,<00:37:16.960> and<00:37:17.040> then<00:37:17.160> this<00:37:17.280> write\nto do it do with it, and then this write\nto do it do with it, and then this write a<00:37:17.480> view<00:37:17.600> type<00:37:17.920> view<00:37:18.080> is<00:37:18.160> just<00:37:18.360> saying,\na view type view is just saying,\na view type view is just saying, \"If<00:37:19.600> you<00:37:19.720> have<00:37:19.960> this<00:37:20.120> type,<00:37:20.600> just<00:37:20.840> do<00:37:20.960> that\n\"If you have this type, just do that\n\"If you have this type, just do that automatically<00:37:21.680> for<00:37:21.880> me.\"<00:37:22.000> So,<00:37:22.080> you<00:37:22.120> don't\nautomatically for me.\" So, you don't\nautomatically for me.\" So, you don't have<00:37:22.400> to<00:37:22.480> do<00:37:23.080> slice\nhave to do slice\nhave to do slice at<00:37:24.840> uh<00:37:24.920> all<00:37:25.000> dynamic<00:37:25.640> every<00:37:25.800> single<00:37:26.040> time<00:37:26.240> you\nat uh all dynamic every single time you\nat uh all dynamic every single time you want<00:37:26.440> to<00:37:26.480> evaluate<00:37:26.880> something.\nwant to evaluate something.\nwant to evaluate something. Um\nUm\nUm And<00:37:29.600> you<00:37:29.640> can<00:37:29.760> see<00:37:29.960> you<00:37:30.080> do<00:37:30.200> it<00:37:30.240> with<00:37:30.360> templates\nAnd you can see you do it with templates\nAnd you can see you do it with templates as<00:37:30.880> well.<00:37:31.080> Like<00:37:31.280> I<00:37:31.320> have<00:37:31.400> a<00:37:31.440> templated<00:37:31.880> dynamic\nas well. Like I have a templated dynamic\nas well. Like I have a templated dynamic array.<00:37:33.120> Um<00:37:33.880> and<00:37:34.240> here<00:37:34.520> I<00:37:34.560> actually<00:37:34.800> put<00:37:34.960> in<00:37:35.040> the\narray. Um and here I actually put in the\narray. Um and here I actually put in the count.<00:37:35.720> So,<00:37:35.880> if<00:37:36.000> we<00:37:36.120> look<00:37:36.360> at<00:37:36.680> uh<00:37:37.000> let<00:37:37.080> me<00:37:37.200> look\ncount. So, if we look at uh let me look\ncount. So, if we look at uh let me look at<00:37:37.560> where<00:37:37.720> this<00:37:37.880> is<00:37:38.000> used.\nat where this is used.\nat where this is used. Uh<00:37:39.880> templated<00:37:40.280> dynamic,<00:37:40.800> so<00:37:40.920> we'll<00:37:41.040> do\nUh templated dynamic, so we'll do\nUh templated dynamic, so we'll do templated\ntemplated\ntemplated dynamic<00:37:44.120> here.\ndynamic here.\ndynamic here. And<00:37:45.960> we<00:37:46.040> can<00:37:46.160> see<00:37:46.320> we<00:37:46.440> get<00:37:47.160> uh<00:37:47.400> the<00:37:47.520> count\nAnd we can see we get uh the count\nAnd we can see we get uh the count visualized<00:37:48.360> here<00:37:48.520> and<00:37:48.600> then<00:37:48.800> array<00:37:49.360> of<00:37:49.600> the\nvisualized here and then array of the\nvisualized here and then array of the base<00:37:49.920> pointer<00:37:50.320> with<00:37:50.520> the<00:37:50.600> count\nbase pointer with the count\nbase pointer with the count right<00:37:52.360> here.\nright here.\nright here. Um\nUm\nUm And<00:37:55.000> that<00:37:55.120> actually<00:37:55.360> applies<00:37:55.640> for\nAnd that actually applies for\nAnd that actually applies for everything.<00:37:56.120> So,<00:37:56.360> if<00:37:56.560> I<00:37:56.600> go<00:37:56.720> back<00:37:56.920> to<00:37:57.000> that\neverything. So, if I go back to that\neverything. So, if I go back to that fancy<00:37:57.520> visualizer,\nfancy visualizer,\nfancy visualizer, uh\nuh\nuh eval<00:38:00.320> test,<00:38:01.080> um\neval test, um\neval test, um if<00:38:02.280> I<00:38:02.320> go<00:38:02.440> down<00:38:02.640> to<00:38:02.720> this<00:38:02.880> bitmap<00:38:03.280> type,\nif I go down to this bitmap type,\nif I go down to this bitmap type, you'll<00:38:05.120> see<00:38:05.280> that<00:38:05.600> it's<00:38:05.800> just<00:38:06.240> uh<00:38:06.640> this<00:38:06.840> is<00:38:06.960> a\nyou'll see that it's just uh this is a\nyou'll see that it's just uh this is a structure,<00:38:08.040> this<00:38:08.200> bitmap,<00:38:08.640> which<00:38:08.840> has<00:38:08.960> a<00:38:09.040> base\nstructure, this bitmap, which has a base\nstructure, this bitmap, which has a base pointer<00:38:09.600> and<00:38:09.720> a<00:38:09.760> width<00:38:09.960> and<00:38:10.040> a<00:38:10.080> height.<00:38:10.800> And\npointer and a width and a height. And\npointer and a width and a height. And there's<00:38:11.120> just<00:38:11.280> a<00:38:11.360> rule<00:38:11.600> somewhere<00:38:12.360> that<00:38:12.600> says\nthere's just a rule somewhere that says\nthere's just a rule somewhere that says um\num\num \"Hey,<00:38:15.640> if<00:38:15.800> you<00:38:15.920> have<00:38:16.080> a<00:38:16.120> type<00:38:16.560> if<00:38:16.680> you<00:38:16.760> have<00:38:16.840> an\n\"Hey, if you have a type if you have an\n\"Hey, if you have a type if you have an instance<00:38:17.240> of<00:38:17.320> type<00:38:17.520> bitmap,<00:38:18.440> visualize<00:38:18.920> this\ninstance of type bitmap, visualize this\ninstance of type bitmap, visualize this with<00:38:19.800> the<00:38:19.880> bitmap<00:38:20.240> view<00:38:20.920> applied<00:38:21.720> uh<00:38:21.800> the<00:38:21.840> base\nwith the bitmap view applied uh the base\nwith the bitmap view applied uh the base pointer<00:38:22.800> to<00:38:22.920> the<00:38:23.040> pixels<00:38:23.400> being<00:38:23.600> the<00:38:23.680> base<00:38:24.240> the\npointer to the pixels being the base the\npointer to the pixels being the base the base<00:38:24.520> member<00:38:24.880> and<00:38:25.000> then<00:38:25.120> the<00:38:25.240> width<00:38:25.400> and\nbase member and then the width and\nbase member and then the width and height<00:38:25.720> being<00:38:25.880> the<00:38:25.960> dimensions,<00:38:26.440> right?\nheight being the dimensions, right?\nheight being the dimensions, right? That's<00:38:26.800> all<00:38:27.520> That's<00:38:27.720> the<00:38:27.800> only<00:38:28.000> thing<00:38:28.200> that's\nThat's all That's the only thing that's\nThat's all That's the only thing that's in<00:38:28.520> there<00:38:28.920> and<00:38:29.320> and<00:38:29.800> that<00:38:29.920> gets<00:38:30.080> baked<00:38:30.320> into\nin there and and that gets baked into\nin there and and that gets baked into the<00:38:30.560> executable,<00:38:31.040> so<00:38:31.160> the<00:38:31.240> debugger<00:38:31.560> plugs<00:38:31.840> it\nthe executable, so the debugger plugs it\nthe executable, so the debugger plugs it into<00:38:32.160> its<00:38:32.600> evaluation<00:38:33.120> system.\ninto its evaluation system.\ninto its evaluation system. And<00:38:34.560> then<00:38:34.720> anytime<00:38:35.200> I<00:38:35.280> evaluate,<00:38:36.400> uh,<00:38:36.480> for\nAnd then anytime I evaluate, uh, for\nAnd then anytime I evaluate, uh, for example,<00:38:37.000> a<00:38:37.040> variable<00:38:37.400> called<00:38:37.640> foo<00:38:38.360> of<00:38:38.560> type\nexample, a variable called foo of type\nexample, a variable called foo of type of<00:38:38.880> it<00:38:39.000> map,<00:38:39.600> then<00:38:39.800> we<00:38:39.920> see<00:38:40.720> it's<00:38:40.920> just<00:38:41.320> the\nof it map, then we see it's just the\nof it map, then we see it's just the it's<00:38:42.080> just<00:38:42.240> the<00:38:42.280> bitmap<00:38:42.880> thing.<00:38:43.120> And<00:38:43.200> if<00:38:43.320> I\nit's just the bitmap thing. And if I\nit's just the bitmap thing. And if I want<00:38:43.600> to<00:38:43.680> get<00:38:43.800> back<00:38:43.960> to<00:38:44.040> the<00:38:44.160> original<00:38:44.600> view,\nwant to get back to the original view,\nwant to get back to the original view, then<00:38:46.000> I<00:38:46.080> just<00:38:46.240> do<00:38:46.400> raw.<00:38:46.960> It's<00:38:47.200> That's<00:38:47.440> what<00:38:47.520> the\nthen I just do raw. It's That's what the\nthen I just do raw. It's That's what the raw<00:38:47.840> thing<00:38:48.000> is<00:38:48.120> for,<00:38:48.360> right?<00:38:48.520> That's<00:38:49.080> That's\nraw thing is for, right? That's That's\nraw thing is for, right? That's That's me<00:38:49.400> saying,<00:38:49.640> \"Hey,<00:38:49.920> I<00:38:50.080> just<00:38:50.520> I<00:38:50.640> just<00:38:50.960> want<00:38:51.120> to\nme saying, \"Hey, I just I just want to\nme saying, \"Hey, I just I just want to look<00:38:51.640> at<00:38:51.720> this<00:38:51.880> how<00:38:52.000> the<00:38:52.080> debugger<00:38:52.400> would\nlook at this how the debugger would\nlook at this how the debugger would normally<00:38:52.920> look<00:38:53.160> at<00:38:53.240> it<00:38:53.320> without<00:38:53.560> any<00:38:53.720> of<00:38:53.800> the\nnormally look at it without any of the\nnormally look at it without any of the type<00:38:54.080> view<00:38:54.200> stuff.<00:38:54.440> Just<00:38:54.640> turn<00:38:54.800> it<00:38:54.920> all<00:38:55.080> off,\ntype view stuff. Just turn it all off,\ntype view stuff. Just turn it all off, get<00:38:55.720> a<00:38:55.760> base<00:38:55.960> pointer<00:38:56.320> with<00:38:56.520> and<00:38:56.640> height.\"\nget a base pointer with and height.\"\nget a base pointer with and height.\" Um,\nUm,\nUm, but<00:38:58.760> by<00:38:58.880> default,<00:38:59.280> obviously,<00:38:59.640> it's<00:38:59.800> more<00:39:00.200> if\nbut by default, obviously, it's more if\nbut by default, obviously, it's more if you<00:39:00.360> have<00:39:00.440> something<00:39:00.640> called<00:39:00.800> bitmap,<00:39:01.240> it\nyou have something called bitmap, it\nyou have something called bitmap, it might<00:39:01.400> be<00:39:01.480> convenient<00:39:01.880> to<00:39:01.960> look<00:39:02.120> at<00:39:02.200> it<00:39:02.320> as\nmight be convenient to look at it as\nmight be convenient to look at it as bitmap<00:39:02.840> by<00:39:02.920> default.<00:39:03.560> So,\nhopefully,<00:39:07.360> that<00:39:08.160> is<00:39:08.280> a<00:39:08.320> pretty<00:39:08.520> good\nhopefully, that is a pretty good\nhopefully, that is a pretty good overview.<00:39:09.400> Um,<00:39:10.160> there's<00:39:10.320> lots<00:39:10.480> of<00:39:10.560> other\noverview. Um, there's lots of other\noverview. Um, there's lots of other things<00:39:11.080> like<00:39:11.840> more<00:39:12.040> traditional<00:39:12.480> debugger\nthings like more traditional debugger\nthings like more traditional debugger things<00:39:13.080> like<00:39:13.240> I<00:39:13.280> can<00:39:13.600> I<00:39:13.680> can<00:39:13.800> debug<00:39:14.040> multiple\nthings like I can I can debug multiple\nthings like I can I can debug multiple processes<00:39:14.880> at<00:39:15.000> once.<00:39:16.000> Um,<00:39:16.520> there's\nprocesses at once. Um, there's\nprocesses at once. Um, there's conditional<00:39:17.120> breakpoints,<00:39:17.760> there's<00:39:18.120> address\nconditional breakpoints, there's address\nconditional breakpoints, there's address breakpoints,<00:39:19.040> there's,<00:39:19.560> uh,<00:39:19.680> data\nbreakpoints, there's, uh, data\nbreakpoints, there's, uh, data breakpoints<00:39:20.480> as<00:39:20.600> well.<00:39:21.480> Um,<00:39:21.920> so<00:39:22.000> I<00:39:22.080> can<00:39:22.200> cover\nbreakpoints as well. Um, so I can cover\nbreakpoints as well. Um, so I can cover any<00:39:22.640> of<00:39:22.720> those,<00:39:22.960> but<00:39:23.080> those<00:39:23.240> are<00:39:23.320> all<00:39:23.400> kind<00:39:23.560> of\nany of those, but those are all kind of\nany of those, but those are all kind of common<00:39:23.960> debugger<00:39:24.280> functionality.<00:39:25.480> Um,\ncommon debugger functionality. Um,\ncommon debugger functionality. Um, but,<00:39:26.920> uh,<00:39:27.080> hopefully,<00:39:27.360> that's<00:39:27.480> a<00:39:27.520> good\nbut, uh, hopefully, that's a good\nbut, uh, hopefully, that's a good overview.\noverview.\noverview. Um,\nUm,\nUm, >> Nice.\n>> Nice.\n>> Nice. >> Yeah.\n>> Yeah.\n>> Yeah. >> Uh,<00:39:32.120> there<00:39:32.520> there<00:39:32.680> were<00:39:32.760> a<00:39:32.840> couple<00:39:33.280> of<00:39:33.600> wows<00:39:34.200> in\n>> Uh, there there were a couple of wows in\n>> Uh, there there were a couple of wows in the<00:39:34.640> chat<00:39:35.040> in<00:39:35.160> the<00:39:35.280> meantime<00:39:36.160> when<00:39:36.360> you<00:39:36.440> were\nthe chat in the meantime when you were\nthe chat in the meantime when you were doing<00:39:36.920> the<00:39:37.280> everything<00:39:37.680> is<00:39:37.800> a<00:39:37.880> watch<00:39:38.120> window\ndoing the everything is a watch window\ndoing the everything is a watch window uh,<00:39:39.560> reveals.\nuh, reveals.\nuh, reveals. And<00:39:40.840> there<00:39:40.960> were<00:39:41.040> also<00:39:41.240> a<00:39:41.280> couple<00:39:41.600> of\nAnd there were also a couple of\nAnd there were also a couple of questions<00:39:42.480> like<00:39:42.800> how<00:39:43.320> rad<00:39:43.600> debugger<00:39:43.960> works\nquestions like how rad debugger works\nquestions like how rad debugger works with,<00:39:44.840> uh,<00:39:45.160> sources<00:39:45.640> that<00:39:45.760> only<00:39:46.000> have,<00:39:46.200> for\nwith, uh, sources that only have, for\nwith, uh, sources that only have, for example,<00:39:47.040> debug<00:39:47.360> information<00:39:48.000> or<00:39:48.200> don't<00:39:49.200> and\nexample, debug information or don't and\nexample, debug information or don't and how<00:39:49.560> does<00:39:49.800> it<00:39:49.920> interplay<00:39:50.440> with<00:39:50.640> like,<00:39:51.240> um,\nhow does it interplay with like, um,\nhow does it interplay with like, um, other<00:39:51.840> libraries<00:39:52.360> and<00:39:52.520> other<00:39:52.720> source<00:39:53.000> code?\n>> Uh,<00:39:56.160> I<00:39:56.240> guess<00:39:56.440> I'm<00:39:56.560> not<00:39:56.880> 100%<00:39:57.400> sure<00:39:57.520> about<00:39:57.680> the\n>> Uh, I guess I'm not 100% sure about the\n>> Uh, I guess I'm not 100% sure about the question.<00:39:58.280> Like<00:39:58.440> if<00:39:58.560> you<00:39:58.640> don't<00:39:58.880> have<00:39:59.040> debug\nquestion. Like if you don't have debug\nquestion. Like if you don't have debug info,<00:40:00.040> then<00:40:00.560> what<00:40:00.880> The<00:40:01.040> only<00:40:01.200> thing<00:40:01.360> you<00:40:01.440> can\ninfo, then what The only thing you can\ninfo, then what The only thing you can really<00:40:01.760> do,\nreally do,\nreally do, um,<00:40:03.280> obviously,<00:40:03.600> there's<00:40:04.000> there<00:40:04.200> there's<00:40:04.520> a\num, obviously, there's there there's a\num, obviously, there's there there's a whole<00:40:04.800> family<00:40:05.280> of<00:40:05.440> reverse<00:40:05.760> engineering\nwhole family of reverse engineering\nwhole family of reverse engineering features<00:40:06.640> that<00:40:06.760> people<00:40:07.160> have<00:40:07.800> can<00:40:08.080> and<00:40:08.200> do<00:40:08.440> put\nfeatures that people have can and do put\nfeatures that people have can and do put into<00:40:08.800> their<00:40:08.920> debuggers.<00:40:09.960> Um,<00:40:10.320> the<00:40:10.400> rad\ninto their debuggers. Um, the rad\ninto their debuggers. Um, the rad debugger<00:40:10.800> is<00:40:10.920> more<00:40:11.480> more<00:40:11.760> focused<00:40:12.160> on<00:40:12.280> like\ndebugger is more more focused on like\ndebugger is more more focused on like the<00:40:12.600> cases<00:40:12.920> where<00:40:13.040> you<00:40:13.120> have<00:40:13.360> debug<00:40:13.640> info<00:40:13.960> cuz\nthe cases where you have debug info cuz\nthe cases where you have debug info cuz this<00:40:14.320> is,<00:40:14.520> you<00:40:14.600> know,<00:40:14.760> obviously,<00:40:15.040> it's<00:40:15.200> for\nthis is, you know, obviously, it's for\nthis is, you know, obviously, it's for game<00:40:15.600> developers.<00:40:16.320> Um,<00:40:16.640> as<00:40:16.800> a<00:40:16.960> first<00:40:18.040> as<00:40:18.200> kind\ngame developers. Um, as a first as kind\ngame developers. Um, as a first as kind of<00:40:18.440> like<00:40:18.640> the<00:40:19.160> intended<00:40:19.800> audience<00:40:20.240> or<00:40:20.440> just\nof like the intended audience or just\nof like the intended audience or just system<00:40:20.960> developers<00:40:21.440> working<00:40:21.720> on<00:40:21.840> system\nsystem developers working on system\nsystem developers working on system software.<00:40:23.200> And<00:40:23.400> so,<00:40:23.640> in<00:40:23.800> that<00:40:24.120> in<00:40:24.240> that\nsoftware. And so, in that in that\nsoftware. And so, in that in that context,<00:40:24.760> you<00:40:24.880> do<00:40:25.080> have<00:40:25.200> debug<00:40:25.480> info.<00:40:25.760> So,<00:40:25.920> we\ncontext, you do have debug info. So, we\ncontext, you do have debug info. So, we haven't<00:40:26.400> spent<00:40:26.600> a<00:40:26.640> lot<00:40:26.800> of<00:40:26.880> time<00:40:27.080> doing\nhaven't spent a lot of time doing\nhaven't spent a lot of time doing reverse<00:40:27.680> engineering<00:40:28.120> type<00:40:28.320> stuff<00:40:28.640> where<00:40:28.760> you\nreverse engineering type stuff where you\nreverse engineering type stuff where you cannot<00:40:29.320> be<00:40:29.520> guaranteed<00:40:30.000> to<00:40:30.080> have<00:40:30.280> debug<00:40:30.560> info.\ncannot be guaranteed to have debug info.\ncannot be guaranteed to have debug info. Um<00:40:32.200> you<00:40:32.320> can<00:40:32.440> still<00:40:32.600> debug,<00:40:33.240> but<00:40:33.400> it's<00:40:33.520> just\nUm you can still debug, but it's just\nUm you can still debug, but it's just going<00:40:33.800> to<00:40:33.880> be<00:40:34.040> hey,<00:40:34.280> you<00:40:34.360> have<00:40:34.520> disassembly,\ngoing to be hey, you have disassembly,\ngoing to be hey, you have disassembly, you<00:40:35.480> can<00:40:35.600> look<00:40:35.760> at<00:40:35.840> memory,<00:40:36.600> but<00:40:36.840> there's<00:40:37.040> no\nyou can look at memory, but there's no\nyou can look at memory, but there's no information<00:40:37.720> about<00:40:37.960> like<00:40:38.160> what<00:40:38.320> variables\ninformation about like what variables\ninformation about like what variables are<00:40:38.880> there<00:40:39.160> or<00:40:39.240> type<00:40:39.560> info<00:40:39.960> or<00:40:40.040> like<00:40:40.240> any<00:40:40.400> of\nare there or type info or like any of\nare there or type info or like any of that.<00:40:40.840> All<00:40:41.000> of<00:40:41.040> that's<00:40:41.240> not<00:40:41.440> in<00:40:41.560> there.<00:40:42.120> Um\nthat. All of that's not in there. Um\nthat. All of that's not in there. Um there's<00:40:42.360> no<00:40:42.480> line<00:40:42.760> info.<00:40:43.880> Um\nthere's no line info. Um\nthere's no line info. Um anything<00:40:45.440> like<00:40:45.600> that.<00:40:45.800> So,<00:40:46.080> if<00:40:46.200> you<00:40:46.280> don't\nanything like that. So, if you don't\nanything like that. So, if you don't have<00:40:46.560> debug<00:40:46.840> info,<00:40:47.160> it's<00:40:47.320> going<00:40:47.440> to<00:40:47.480> be<00:40:47.560> pretty\nhave debug info, it's going to be pretty\nhave debug info, it's going to be pretty bare-bones.<00:40:48.800> Uh<00:40:49.120> we<00:40:49.240> don't<00:40:49.400> have<00:40:49.520> a<00:40:49.560> whole<00:40:49.760> lot\nbare-bones. Uh we don't have a whole lot\nbare-bones. Uh we don't have a whole lot of<00:40:50.400> um\nof um\nof um whole<00:40:51.600> lot<00:40:51.800> of<00:40:51.960> like<00:40:52.320> reverse<00:40:52.600> engineering\nwhole lot of like reverse engineering\nwhole lot of like reverse engineering type<00:40:53.240> stuff.\ntype stuff.\ntype stuff. Um\nUm\nUm but<00:40:55.560> uh\nbut uh\nbut uh Uh<00:40:56.960> what<00:40:57.120> was<00:40:57.200> the<00:40:57.280> other<00:40:57.400> part<00:40:57.520> of<00:40:57.600> the\nUh what was the other part of the\nUh what was the other part of the question?<00:40:58.160> I<00:40:58.560> think<00:40:58.800> that<00:40:58.920> might<00:40:59.160> have\nquestion? I think that might have\nquestion? I think that might have covered<00:40:59.560> it,<00:40:59.640> but<00:40:59.840> if<00:41:00.000> not,<00:41:00.600> uh<00:41:00.880> let<00:41:01.000> me<00:41:01.080> know.\ncovered it, but if not, uh let me know.\ncovered it, but if not, uh let me know. >> I<00:41:01.680> think<00:41:01.960> that's<00:41:02.200> it.<00:41:02.600> The<00:41:03.240> that<00:41:03.440> was<00:41:03.600> the<00:41:04.040> like\n>> I think that's it. The that was the like\n>> I think that's it. The that was the like how<00:41:04.520> how<00:41:04.680> to<00:41:04.840> interface<00:41:05.320> with<00:41:05.520> other<00:41:05.760> things.\nhow how to interface with other things.\nhow how to interface with other things. I<00:41:06.520> also<00:41:06.880> put<00:41:07.080> it\nI also put it\nI also put it a<00:41:08.240> I<00:41:08.320> put<00:41:08.640> a<00:41:08.760> link<00:41:09.160> in<00:41:09.280> the<00:41:09.400> chat<00:41:10.160> regarding<00:41:10.600> the\na I put a link in the chat regarding the\na I put a link in the chat regarding the Q&A.<00:41:11.560> If<00:41:11.800> there's<00:41:12.120> something<00:41:12.440> that<00:41:12.640> we<00:41:12.760> missed\nQ&A. If there's something that we missed\nQ&A. If there's something that we missed uh<00:41:14.560> and<00:41:14.680> I<00:41:14.720> missed<00:41:15.000> through<00:41:15.120> during<00:41:15.360> the<00:41:15.480> chat,\nuh and I missed through during the chat,\nuh and I missed through during the chat, people<00:41:16.280> can<00:41:16.760> put<00:41:16.960> it<00:41:17.080> there.\npeople can put it there.\npeople can put it there. And\nAnd\nAnd >> Cool.\n>> Cool.\n>> Cool. >> Oh,<00:41:20.360> I<00:41:20.440> actually<00:41:20.760> missed<00:41:20.960> like<00:41:21.320> 50<00:41:22.240> messages\n>> Oh, I actually missed like 50 messages\n>> Oh, I actually missed like 50 messages now<00:41:22.880> because<00:41:23.240> my<00:41:23.840> my<00:41:24.000> YouTube<00:41:24.520> my<00:41:24.640> YouTube\nnow because my my YouTube my YouTube\nnow because my my YouTube my YouTube chat<00:41:25.200> was<00:41:25.360> frozen.<00:41:26.160> So,\nchat was frozen. So,\nchat was frozen. So, you<00:41:27.480> can<00:41:27.800> you<00:41:27.880> can<00:41:28.080> put<00:41:28.320> those<00:41:28.600> in<00:41:29.120> and\nyou can you can put those in and\nyou can you can put those in and uh<00:41:30.280> we<00:41:30.440> will<00:41:30.560> come<00:41:30.800> back<00:41:31.200> maybe<00:41:31.440> in<00:41:31.560> the<00:41:31.680> end.\nuh we will come back maybe in the end.\nuh we will come back maybe in the end. >> Um\n>> Um\n>> Um >> Cool.\n>> Cool.\n>> Cool. >> [snorts]\n>> [snorts]\n>> [snorts] >> Nice.\n>> Nice.\n>> Nice. Now,\nNow,\nNow, >> Yeah.\n>> Yeah.\n>> Yeah. >> is<00:41:37.080> this\n>> is this\n>> is this >> Oh,<00:41:37.520> I<00:41:37.560> guess<00:41:37.760> I<00:41:37.840> should\n>> Oh, I guess I should\n>> Oh, I guess I should >> Yeah.\n>> Yeah.\n>> Yeah. >> Well,<00:41:39.560> yes.<00:41:39.960> Okay,<00:41:40.200> so<00:41:40.400> one<00:41:40.640> more<00:41:40.840> thing<00:41:41.120> I\n>> Well, yes. Okay, so one more thing I\n>> Well, yes. Okay, so one more thing I should<00:41:41.400> probably<00:41:41.760> do<00:41:42.480> is<00:41:42.680> show<00:41:43.400> one<00:41:43.760> Maybe\nshould probably do is show one Maybe\nshould probably do is show one Maybe this<00:41:44.160> is<00:41:44.240> related<00:41:44.560> to<00:41:44.640> that<00:41:44.800> question,<00:41:45.160> but<00:41:45.480> um\nthis is related to that question, but um\nthis is related to that question, but um cross-language<00:41:46.480> support.<00:41:47.560> Um<00:41:48.360> so,<00:41:48.960> uh\ncross-language support. Um so, uh\ncross-language support. Um so, uh like<00:41:49.720> for<00:41:49.880> example,<00:41:50.240> if<00:41:50.320> I<00:41:50.400> wanted<00:41:50.600> to<00:41:50.680> debug\nlike for example, if I wanted to debug\nlike for example, if I wanted to debug like<00:41:51.440> JAI,<00:41:52.240> for<00:41:52.360> example,<00:41:53.400> um<00:41:54.280> this<00:41:54.440> uses<00:41:54.760> the\nlike JAI, for example, um this uses the\nlike JAI, for example, um this uses the same<00:41:55.240> type<00:41:55.520> of<00:41:55.600> debug<00:41:55.880> info<00:41:56.200> that<00:41:57.040> uh<00:41:57.440> like<00:41:57.720> C\nsame type of debug info that uh like C\nsame type of debug info that uh like C and<00:41:58.080> C++<00:41:58.520> do.<00:41:59.120> So,<00:41:59.440> the<00:41:59.880> the<00:41:59.960> JAI<00:42:00.280> compiler\nand C++ do. So, the the JAI compiler\nand C++ do. So, the the JAI compiler produces<00:42:02.520> uh<00:42:02.720> code<00:42:02.960> view<00:42:03.080> data,<00:42:03.440> which<00:42:03.920> um<00:42:04.280> I\nproduces uh code view data, which um I\nproduces uh code view data, which um I think<00:42:04.520> it<00:42:04.640> uses<00:42:05.160> the<00:42:05.280> MSVC<00:42:05.720> linker.<00:42:06.520> And<00:42:06.640> so,\nthink it uses the MSVC linker. And so,\nthink it uses the MSVC linker. And so, the<00:42:06.840> linker<00:42:07.160> will<00:42:07.400> stitch<00:42:07.680> those<00:42:07.880> together\nthe linker will stitch those together\nthe linker will stitch those together and<00:42:08.240> form<00:42:08.440> a<00:42:08.480> PDB,<00:42:09.000> which<00:42:09.200> the<00:42:09.280> debugger<00:42:09.600> knows\nand form a PDB, which the debugger knows\nand form a PDB, which the debugger knows how<00:42:09.840> to<00:42:09.920> work<00:42:10.120> with.<00:42:10.320> So,<00:42:11.080> if<00:42:11.200> I<00:42:11.240> have<00:42:11.360> a<00:42:11.400> JAI\nhow to work with. So, if I have a JAI\nhow to work with. So, if I have a JAI executable,<00:42:12.400> like<00:42:12.560> this<00:42:12.680> is<00:42:12.760> the<00:42:12.880> JAI\nexecutable, like this is the JAI\nexecutable, like this is the JAI Invaders,<00:42:14.200> um\nInvaders, um\nInvaders, um this<00:42:16.200> uh<00:42:16.320> this<00:42:16.480> also<00:42:16.680> just<00:42:16.920> works.\nthis uh this also just works.\nthis uh this also just works. Um<00:42:18.280> so,<00:42:18.640> here's<00:42:19.000> just<00:42:19.200> the<00:42:19.280> JAI<00:42:19.680> code,<00:42:20.080> and\nUm so, here's just the JAI code, and\nUm so, here's just the JAI code, and here's<00:42:20.840> me<00:42:21.040> stepping<00:42:21.360> through<00:42:21.600> it,<00:42:21.880> you<00:42:21.920> know,\nhere's me stepping through it, you know,\nhere's me stepping through it, you know, normal<00:42:22.560> stuff.\nnormal stuff.\nnormal stuff. And<00:42:23.840> those<00:42:24.000> type<00:42:24.280> views<00:42:24.560> come<00:42:24.720> in<00:42:24.840> handy<00:42:25.200> with\nAnd those type views come in handy with\nAnd those type views come in handy with uh<00:42:25.920> with<00:42:26.360> languages<00:42:26.800> like<00:42:27.000> JAI<00:42:27.640> because<00:42:28.240> um<00:42:28.840> if\nuh with languages like JAI because um if\nuh with languages like JAI because um if I<00:42:29.080> were<00:42:29.200> to<00:42:29.280> evaluate<00:42:29.760> strings<00:42:30.200> like<00:42:30.520> uh<00:42:30.600> we\nI were to evaluate strings like uh we\nI were to evaluate strings like uh we have<00:42:30.800> this<00:42:30.960> base<00:42:31.480> base<00:42:31.760> path<00:42:32.640> thing,<00:42:33.000> you<00:42:33.080> can\nhave this base base path thing, you can\nhave this base base path thing, you can see<00:42:33.360> it's<00:42:33.520> like<00:42:34.280> the<00:42:34.360> way<00:42:34.480> these<00:42:34.720> languages\nsee it's like the way these languages\nsee it's like the way these languages generate<00:42:35.760> these<00:42:36.560> uh<00:42:36.680> like\ngenerate these uh like\ngenerate these uh like string<00:42:37.720> variables,<00:42:38.040> like<00:42:38.160> generally<00:42:38.480> these\nstring variables, like generally these\nstring variables, like generally these languages<00:42:38.960> will<00:42:39.080> first-class<00:42:39.600> strings,<00:42:39.960> but\nlanguages will first-class strings, but\nlanguages will first-class strings, but because<00:42:40.880> they're<00:42:41.040> not<00:42:41.480> um<00:42:41.960> living<00:42:42.600> under<00:42:43.000> a\nbecause they're not um living under a\nbecause they're not um living under a rock,<00:42:43.360> they<00:42:43.480> know<00:42:43.640> to<00:42:43.760> make<00:42:43.960> them\nrock, they know to make them\nrock, they know to make them length-based<00:42:45.280> strings,<00:42:45.720> right?<00:42:45.920> So,<00:42:46.480> uh<00:42:46.600> JAI\nlength-based strings, right? So, uh JAI\nlength-based strings, right? So, uh JAI does<00:42:47.160> this.<00:42:47.360> It's<00:42:47.480> like<00:42:47.640> when<00:42:47.800> you<00:42:47.920> use<00:42:48.120> string\ndoes this. It's like when you use string\ndoes this. It's like when you use string literals,<00:42:48.760> it<00:42:48.840> just<00:42:49.040> returns<00:42:49.400> you<00:42:49.560> a<00:42:49.600> type<00:42:49.960> of\nliterals, it just returns you a type of\nliterals, it just returns you a type of this<00:42:50.600> string<00:42:50.920> structure.<00:42:51.880> And<00:42:51.960> that<00:42:52.080> has<00:42:52.200> a\nthis string structure. And that has a\nthis string structure. And that has a count<00:42:52.920> and<00:42:53.040> a<00:42:53.080> data,<00:42:53.720> which<00:42:53.920> means<00:42:54.480> we<00:42:54.600> can<00:42:54.720> do\ncount and a data, which means we can do\ncount and a data, which means we can do um\num\num uh<00:42:56.600> we<00:42:56.720> can<00:42:56.840> basically<00:42:57.240> do,<00:42:57.560> \"Hey,<00:42:57.840> array\nuh we can basically do, \"Hey, array\nuh we can basically do, \"Hey, array basepath.data.\"\nbasepath.data.\"\nbasepath.data.\" Um\nUm\nUm and<00:43:01.560> then<00:43:01.720> basepath.count\nand then basepath.count\nand then basepath.count if<00:43:03.400> we<00:43:03.520> want<00:43:03.720> to,<00:43:04.440> and<00:43:04.560> that'll<00:43:04.760> just<00:43:04.960> show<00:43:05.200> us\nif we want to, and that'll just show us\nif we want to, and that'll just show us just<00:43:05.640> the<00:43:05.720> string<00:43:05.960> literal<00:43:06.880> when<00:43:07.080> we<00:43:07.160> evaluate\njust the string literal when we evaluate\njust the string literal when we evaluate it<00:43:07.840> in<00:43:07.960> the<00:43:08.040> watch<00:43:08.240> window.\nit in the watch window.\nit in the watch window. And<00:43:09.680> then,<00:43:10.040> so<00:43:10.760> I<00:43:10.880> showed<00:43:11.200> how<00:43:11.320> to<00:43:11.440> embed<00:43:11.960> type\nAnd then, so I showed how to embed type\nAnd then, so I showed how to embed type views<00:43:12.480> into<00:43:12.760> the<00:43:12.960> executables<00:43:13.480> themselves,\nviews into the executables themselves,\nviews into the executables themselves, but<00:43:14.160> you<00:43:14.200> can<00:43:14.320> also<00:43:14.480> do<00:43:14.600> this<00:43:14.720> dynamically<00:43:15.240> in\nbut you can also do this dynamically in\nbut you can also do this dynamically in the<00:43:15.440> debugger<00:43:15.800> UI.<00:43:16.440> So,<00:43:16.560> if<00:43:16.680> I<00:43:16.760> did<00:43:17.200> uh<00:43:17.280> I<00:43:17.360> can\nthe debugger UI. So, if I did uh I can\nthe debugger UI. So, if I did uh I can open<00:43:17.640> up<00:43:17.720> the<00:43:17.800> type<00:43:18.040> views<00:43:18.280> tab,\nopen up the type views tab,\nopen up the type views tab, which<00:43:19.680> is<00:43:19.760> also<00:43:20.000> a<00:43:20.040> watch<00:43:20.240> window,<00:43:20.920> and<00:43:21.040> we<00:43:21.120> can\nwhich is also a watch window, and we can\nwhich is also a watch window, and we can say,<00:43:21.560> \"Hey,<00:43:21.800> like<00:43:22.000> this<00:43:22.240> string<00:43:22.920> type,<00:43:23.280> I<00:43:23.360> just\nsay, \"Hey, like this string type, I just\nsay, \"Hey, like this string type, I just always<00:43:24.000> want<00:43:24.120> to<00:43:24.200> do<00:43:24.440> array,<00:43:25.080> and<00:43:25.200> then<00:43:25.360> what\nalways want to do array, and then what\nalways want to do array, and then what is<00:43:25.680> the<00:43:25.920> what<00:43:26.040> is<00:43:26.120> the<00:43:26.200> member<00:43:26.480> called<00:43:26.760> here?\"\nis the what is the member called here?\"\nis the what is the member called here?\" It's<00:43:27.800> um\nIt's um\nIt's um >> Data<00:43:29.200> and<00:43:29.320> count.\n>> Data and count.\n>> Data and count. >> Data<00:43:30.640> and<00:43:30.760> count,<00:43:31.040> so<00:43:31.120> I<00:43:31.160> can<00:43:31.280> do,<00:43:31.440> \"Hey,<00:43:31.760> array\n>> Data and count, so I can do, \"Hey, array\n>> Data and count, so I can do, \"Hey, array data<00:43:32.760> count.\"\ndata count.\"\ndata count.\" And<00:43:35.280> so,<00:43:35.520> now<00:43:35.920> if<00:43:36.080> I<00:43:36.160> do,<00:43:36.480> \"Hey,<00:43:36.640> basepath,\nAnd so, now if I do, \"Hey, basepath,\nAnd so, now if I do, \"Hey, basepath, what<00:43:37.520> is<00:43:37.640> that?\"<00:43:38.080> It's<00:43:38.200> just<00:43:38.360> going<00:43:38.480> to<00:43:38.560> show\nwhat is that?\" It's just going to show\nwhat is that?\" It's just going to show me<00:43:38.960> the<00:43:39.080> string.<00:43:39.880> Um\nme the string. Um\nme the string. Um uh\nuh\nuh Same<00:43:43.000> thing<00:43:43.120> with<00:43:43.200> like<00:43:43.360> slices,<00:43:43.880> for\nSame thing with like slices, for\nSame thing with like slices, for example,<00:43:44.400> like<00:43:44.560> if<00:43:44.680> I<00:43:44.720> wanted<00:43:44.960> to<00:43:45.040> do,<00:43:45.200> \"Hey,\nexample, like if I wanted to do, \"Hey,\nexample, like if I wanted to do, \"Hey, like<00:43:45.680> let's<00:43:45.920> do<00:43:46.200> every<00:43:46.440> time<00:43:46.720> we<00:43:46.840> have<00:43:47.920> a<00:43:48.960> uh<00:43:49.320> a\nlike let's do every time we have a uh a\nlike let's do every time we have a uh a slice<00:43:49.880> type,\num<00:43:54.080> now<00:43:54.200> I<00:43:54.240> don't<00:43:54.440> actually<00:43:54.680> know<00:43:54.840> what<00:43:54.920> the\num now I don't actually know what the\num now I don't actually know what the type<00:43:55.200> info<00:43:55.440> for<00:43:55.560> these<00:43:55.800> look<00:43:56.000> like,<00:43:56.200> so<00:43:56.720> I<00:43:56.800> feel\ntype info for these look like, so I feel\ntype info for these look like, so I feel >> Slice<00:43:57.520> slice<00:43:58.000> is<00:43:58.200> just<00:43:58.640> the<00:43:59.000> brackets<00:43:59.720> without\n>> Slice slice is just the brackets without\n>> Slice slice is just the brackets without anything,<00:44:00.720> and<00:44:00.880> if<00:44:01.000> you<00:44:01.120> put<00:44:01.320> in\nanything, and if you put in\nanything, and if you put in >> Oh,<00:44:01.840> you<00:44:02.040> thought<00:44:02.280> yeah,<00:44:02.480> you<00:44:02.600> thought<00:44:03.160> you\n>> Oh, you thought yeah, you thought you\n>> Oh, you thought yeah, you thought you thought<00:44:03.360> JAI,<00:44:03.880> yeah.\nthought JAI, yeah.\nthought JAI, yeah. >> It's<00:44:04.200> the<00:44:04.265> [laughter]<00:44:04.320> dynamic.\n>> It's the [laughter] dynamic.\n>> It's the [laughter] dynamic. >> Yeah,<00:44:05.120> but<00:44:05.320> is<00:44:05.440> dynamic,<00:44:05.920> actually.<00:44:06.200> Okay,\n>> Yeah, but is dynamic, actually. Okay,\n>> Yeah, but is dynamic, actually. Okay, yeah.<00:44:06.720> So,<00:44:07.120> if<00:44:07.240> I<00:44:07.320> did<00:44:07.560> this,<00:44:08.560> uh<00:44:08.640> I<00:44:08.680> don't<00:44:08.920> know\nyeah. So, if I did this, uh I don't know\nyeah. So, if I did this, uh I don't know if<00:44:09.160> this<00:44:09.400> is<00:44:09.560> a<00:44:09.640> good<00:44:09.760> example<00:44:10.240> in<00:44:10.320> this.\nif this is a good example in this.\nif this is a good example in this. Uh<00:44:11.960> oh,<00:44:12.120> like<00:44:12.400> invader<00:44:12.800> maps.<00:44:13.680> I<00:44:13.760> guess<00:44:13.920> that's\nUh oh, like invader maps. I guess that's\nUh oh, like invader maps. I guess that's a<00:44:14.120> dynamic<00:44:14.560> array.<00:44:14.720> So,<00:44:14.880> invader\na dynamic array. So, invader\na dynamic array. So, invader invader<00:44:17.200> maps.<00:44:17.480> Let<00:44:17.600> me<00:44:17.680> just<00:44:17.800> make<00:44:17.960> sure<00:44:18.080> that\ninvader maps. Let me just make sure that\ninvader maps. Let me just make sure that this<00:44:18.360> is<00:44:18.480> non-zero<00:44:19.120> at<00:44:19.240> some<00:44:19.440> point.<00:44:20.080> Um\nLike<00:44:22.840> if<00:44:22.960> I<00:44:23.080> go<00:44:23.320> through<00:44:23.560> here,\nLike if I go through here,\nLike if I go through here, is<00:44:24.760> it<00:44:24.840> going<00:44:24.960> to<00:44:25.040> load<00:44:25.280> the<00:44:25.360> maps<00:44:25.680> at<00:44:25.760> some\nis it going to load the maps at some\nis it going to load the maps at some point?\npoint?\npoint? Oh,<00:44:28.400> yeah,<00:44:28.640> okay.<00:44:28.880> Invader<00:44:29.160> maps<00:44:29.440> count<00:44:29.760> for\nOh, yeah, okay. Invader maps count for\nOh, yeah, okay. Invader maps count for Okay,<00:44:30.400> so<00:44:30.520> we'll<00:44:30.640> do\nOkay, so we'll do\nOkay, so we'll do um\num\num data<00:44:33.160> and<00:44:33.280> count<00:44:33.680> is<00:44:34.040> all<00:44:34.160> we<00:44:34.280> need.<00:44:34.680> So,<00:44:34.800> we\ndata and count is all we need. So, we\ndata and count is all we need. So, we can<00:44:35.000> go<00:44:35.120> ahead<00:44:35.280> and<00:44:35.400> do,<00:44:35.640> \"Hey,\num\num\num we'll<00:44:39.640> do<00:44:39.800> array\nwe'll do array\nwe'll do array data\ndata\ndata and<00:44:42.160> count.\nand count.\nand count. And<00:44:43.600> there<00:44:43.720> we<00:44:43.800> go.\nAnd there we go.\nAnd there we go. So,<00:44:45.600> now<00:44:45.760> we<00:44:45.840> just<00:44:46.040> get<00:44:46.160> the<00:44:46.240> array<00:44:46.440> view.\nSo, now we just get the array view.\nSo, now we just get the array view. Nice.\nNice.\nNice. >> So,\n>> So,\n>> So, Uh<00:44:49.640> so,<00:44:49.800> yeah.<00:44:50.320> That's<00:44:50.640> um\nUh so, yeah. That's um\nUh so, yeah. That's um You<00:44:52.080> can<00:44:52.200> see<00:44:52.360> unit<00:44:52.640> color.\nYou can see unit color.\nYou can see unit color. Uh<00:44:54.120> well,<00:44:54.440> I<00:44:54.520> don't<00:44:54.760> want<00:44:54.880> to<00:44:54.920> put<00:44:55.080> it<00:44:55.200> that\nUh well, I don't want to put it that\nUh well, I don't want to put it that onto<00:44:55.640> a<00:44:55.680> vector<00:44:55.960> four,<00:44:56.200> cuz<00:44:56.320> that's<00:44:56.520> a<00:44:56.600> general\nonto a vector four, cuz that's a general\nonto a vector four, cuz that's a general general<00:44:57.720> type.<00:44:58.000> But,<00:44:58.400> yeah,<00:44:58.600> anyways.\ngeneral type. But, yeah, anyways.\ngeneral type. But, yeah, anyways. Um\nUm\nUm So,<00:45:00.240> yeah,<00:45:00.320> that's<00:45:00.480> probably<00:45:00.680> a<00:45:00.720> good<00:45:00.840> place\nSo, yeah, that's probably a good place\nSo, yeah, that's probably a good place to<00:45:01.120> stop.<00:45:01.480> Um<00:45:01.680> I<00:45:01.760> guess<00:45:02.000> the<00:45:02.400> the\nto stop. Um I guess the the\nto stop. Um I guess the the I<00:45:04.720> can<00:45:04.840> also<00:45:05.040> do<00:45:05.200> Odin<00:45:05.720> as<00:45:05.880> well.<00:45:06.000> Since<00:45:06.200> I\nI can also do Odin as well. Since I\nI can also do Odin as well. Since I showed<00:45:06.440> Jai,<00:45:06.680> I<00:45:06.800> can<00:45:06.960> show<00:45:07.120> Odin.\nshowed Jai, I can show Odin.\nshowed Jai, I can show Odin. Here's<00:45:08.320> the<00:45:08.400> Odin<00:45:08.880> example<00:45:09.240> program.\nHere's the Odin example program.\nHere's the Odin example program. Um\nUm\nUm yeah.<00:45:11.680> Same<00:45:11.920> stuff.<00:45:12.840> Usual<00:45:13.520> debugging\nyeah. Same stuff. Usual debugging\nyeah. Same stuff. Usual debugging features<00:45:14.280> just<00:45:14.440> available\nfeatures just available\nfeatures just available for<00:45:15.680> all<00:45:15.760> these<00:45:15.920> languages.<00:45:16.360> So,\nfor all these languages. So,\nfor all these languages. So, >> Nice.\n>> Nice.\n>> Nice. >> Yeah.\n>> Yeah.\n>> Yeah. >> Nice.\n>> Nice.\n>> Nice. All<00:45:21.960> right.\nAll right.\nAll right. Then,\nThen,\nThen, we're<00:45:25.040> going<00:45:25.200> to<00:45:25.280> switch<00:45:25.600> to<00:45:25.720> source<00:45:26.120> code.\nwe're going to switch to source code.\nwe're going to switch to source code. Now,<00:45:26.640> do<00:45:26.760> you<00:45:26.880> want<00:45:27.160> a<00:45:27.240> little<00:45:27.400> bit<00:45:27.520> of<00:45:27.640> break?\nNow, do you want a little bit of break?\nNow, do you want a little bit of break? >> Sweet.\n>> Sweet.\n>> Sweet. >> Or\n>> Or\n>> Or >> Uh<00:45:30.000> I'm<00:45:30.200> okay<00:45:30.480> to<00:45:30.560> keep<00:45:30.720> going.<00:45:31.040> I<00:45:31.080> mean,<00:45:31.280> we\n>> Uh I'm okay to keep going. I mean, we\n>> Uh I'm okay to keep going. I mean, we can<00:45:31.480> take<00:45:31.640> a<00:45:31.680> break<00:45:31.840> if<00:45:31.960> you<00:45:32.080> if<00:45:32.200> that<00:45:32.360> helps.\ncan take a break if you if that helps.\ncan take a break if you if that helps. Um\nUm\nUm I<00:45:33.960> don't<00:45:34.160> need<00:45:34.320> it<00:45:34.520> necessarily.\nI don't need it necessarily.\nI don't need it necessarily. >> Uh\n>> Uh\n>> Uh if<00:45:36.720> you<00:45:37.280> can<00:45:37.480> keep<00:45:37.720> going,<00:45:38.000> then<00:45:38.160> let's<00:45:38.440> keep\nif you can keep going, then let's keep\nif you can keep going, then let's keep going.\ngoing.\ngoing. I'm<00:45:40.080> looking<00:45:40.480> taking<00:45:40.760> a<00:45:40.800> look<00:45:40.960> at<00:45:41.080> the<00:45:41.680> chat.\nI'm looking taking a look at the chat.\nI'm looking taking a look at the chat. My<00:45:43.320> idea<00:45:44.000> would<00:45:44.240> be<00:45:44.440> to<00:45:44.680> sort<00:45:44.920> of<00:45:45.160> do<00:45:45.920> first\nMy idea would be to sort of do first\nMy idea would be to sort of do first like<00:45:46.440> a<00:45:46.480> bit<00:45:46.640> of<00:45:46.760> a<00:45:46.840> high<00:45:47.040> level,<00:45:47.640> and<00:45:47.800> then\nlike a bit of a high level, and then\nlike a bit of a high level, and then we'll<00:45:48.120> pick<00:45:48.360> some<00:45:48.560> parts<00:45:48.920> where<00:45:49.080> we<00:45:49.200> can<00:45:49.320> dive\nwe'll pick some parts where we can dive\nwe'll pick some parts where we can dive into.<00:45:50.360> So,\ninto. So,\ninto. So, >> Okay,<00:45:51.120> sure.\n>> Okay, sure.\n>> Okay, sure. >> you<00:45:51.600> know.<00:45:52.160> I<00:45:52.280> think<00:45:52.520> the<00:45:52.640> first<00:45:53.720> uh<00:45:54.560> first\n>> you know. I think the first uh first\n>> you know. I think the first uh first part<00:45:55.640> could<00:45:55.920> be<00:45:56.240> a<00:45:56.360> little<00:45:56.520> bit<00:45:56.640> about<00:45:57.000> like\npart could be a little bit about like\npart could be a little bit about like high<00:45:57.360> level<00:45:57.760> structure,<00:45:58.880> what<00:45:59.120> is<00:45:59.280> where<00:45:59.640> in\nhigh level structure, what is where in\nhigh level structure, what is where in terms<00:46:00.080> of<00:46:00.720> source<00:46:01.120> code,<00:46:01.440> so<00:46:01.520> that<00:46:01.760> we<00:46:01.840> don't\nterms of source code, so that we don't\nterms of source code, so that we don't get<00:46:02.680> too<00:46:02.960> too<00:46:03.200> lost<00:46:04.160> immediately.\nget too too lost immediately.\nget too too lost immediately. >> Got<00:46:04.800> it.\n>> Got it.\n>> Got it. Okay.\nOkay.\nOkay. Um\nUm\nUm >> Oh,<00:46:10.080> there<00:46:10.240> was<00:46:10.480> there<00:46:10.640> was<00:46:10.840> one<00:46:11.160> there<00:46:11.320> was\n>> Oh, there was there was one there was\n>> Oh, there was there was one there was one<00:46:11.640> question<00:46:12.120> that<00:46:12.240> was<00:46:12.440> repeated<00:46:13.320> a<00:46:13.360> lot<00:46:13.640> of\none question that was repeated a lot of\none question that was repeated a lot of times<00:46:14.120> in<00:46:14.200> the<00:46:14.320> chat.<00:46:15.160> When<00:46:15.640> uh<00:46:15.920> the<00:46:16.080> debugger\ntimes in the chat. When uh the debugger\ntimes in the chat. When uh the debugger will<00:46:16.720> become<00:46:17.240> a<00:46:17.360> code<00:46:17.720> editor?\nwill become a code editor?\nwill become a code editor? >> [laughter]\n>> [laughter]\n>> [laughter] >> Uh<00:46:20.960> so,<00:46:21.640> that's<00:46:21.920> like<00:46:22.080> very<00:46:22.360> long<00:46:22.640> term.<00:46:23.320> If<00:46:23.480> we\n>> Uh so, that's like very long term. If we\n>> Uh so, that's like very long term. If we ever<00:46:23.760> decide<00:46:24.080> to<00:46:24.160> do<00:46:24.320> that,<00:46:24.640> it's<00:46:24.760> just<00:46:24.960> that\never decide to do that, it's just that\never decide to do that, it's just that there's<00:46:25.520> so<00:46:25.680> much<00:46:25.960> debugging<00:46:26.400> stuff<00:46:26.640> we<00:46:26.720> need\nthere's so much debugging stuff we need\nthere's so much debugging stuff we need to<00:46:26.960> do<00:46:27.120> first<00:46:27.560> that<00:46:28.040> we're<00:46:28.360> going<00:46:28.520> to<00:46:28.920> we're\nto do first that we're going to we're\nto do first that we're going to we're focusing<00:46:29.360> on<00:46:29.440> debugger<00:46:29.720> stuff<00:46:30.000> first<00:46:30.200> because\nfocusing on debugger stuff first because\nfocusing on debugger stuff first because it's<00:46:30.640> more<00:46:30.840> important.<00:46:31.680> Like<00:46:31.840> there<00:46:31.960> are\nit's more important. Like there are\nit's more important. Like there are plenty<00:46:32.320> of<00:46:32.400> editors<00:46:32.800> available<00:46:33.280> on<00:46:33.400> Linux,\nplenty of editors available on Linux,\nplenty of editors available on Linux, right?<00:46:34.080> But<00:46:34.280> there's<00:46:34.520> really<00:46:34.720> not<00:46:34.880> that<00:46:35.040> many\nright? But there's really not that many\nright? But there's really not that many graphical<00:46:35.880> like<00:46:36.120> good<00:46:36.360> graphical<00:46:36.720> editors<00:46:37.080> on\ngraphical like good graphical editors on\ngraphical like good graphical editors on Linux.<00:46:38.040> And<00:46:38.160> so,<00:46:38.280> the<00:46:38.400> debugger's<00:46:38.920> really<00:46:39.120> the\nLinux. And so, the debugger's really the\nLinux. And so, the debugger's really the high<00:46:39.440> value<00:46:39.760> thing<00:46:39.880> we<00:46:40.000> want<00:46:40.120> to<00:46:40.200> provide\nhigh value thing we want to provide\nhigh value thing we want to provide first.<00:46:41.480> I<00:46:41.560> think<00:46:41.800> someday<00:46:42.200> it'll<00:46:42.400> make<00:46:42.560> a\nfirst. I think someday it'll make a\nfirst. I think someday it'll make a whole<00:46:42.840> lot<00:46:43.000> of<00:46:43.080> sense<00:46:43.320> to<00:46:43.440> put<00:46:43.640> editing\nwhole lot of sense to put editing\nwhole lot of sense to put editing functionality<00:46:44.520> inside<00:46:44.960> because<00:46:45.560> it's<00:46:45.640> not\nfunctionality inside because it's not\nfunctionality inside because it's not even<00:46:46.360> it's<00:46:46.480> not<00:46:46.640> even<00:46:46.800> for<00:46:47.080> the<00:46:47.280> purposes<00:46:47.680> of\neven it's not even for the purposes of\neven it's not even for the purposes of being<00:46:47.960> a<00:46:48.000> code<00:46:48.200> editor.<00:46:49.000> It's<00:46:49.160> really<00:46:49.360> because\nbeing a code editor. It's really because\nbeing a code editor. It's really because with<00:46:50.120> multi-line<00:46:50.720> string<00:46:51.000> visualization,<00:46:51.960> so\nwith multi-line string visualization, so\nwith multi-line string visualization, so if<00:46:52.240> I,<00:46:52.360> you<00:46:52.480> know,<00:46:52.680> if<00:46:52.840> I<00:46:52.880> go<00:46:53.000> back<00:46:53.200> to<00:46:53.280> those\nif I, you know, if I go back to those\nif I, you know, if I go back to those examples<00:46:53.840> where<00:46:53.920> I<00:46:53.960> had<00:46:54.080> that<00:46:54.240> long<00:46:54.520> string\nexamples where I had that long string\nexamples where I had that long string that<00:46:55.000> I<00:46:55.040> showed<00:46:55.760> in<00:46:55.880> the<00:46:55.960> text<00:46:56.160> visualizer\nthat I showed in the text visualizer\nthat I showed in the text visualizer just<00:46:56.840> like<00:46:57.040> the<00:46:57.280> just<00:46:57.440> like<00:46:57.520> the<00:46:57.600> source<00:46:57.800> code.\njust like the just like the source code.\njust like the just like the source code. If<00:46:59.160> you're<00:46:59.320> working<00:46:59.640> with<00:46:59.760> a<00:46:59.800> lot<00:47:00.000> of<00:47:00.040> text\nIf you're working with a lot of text\nIf you're working with a lot of text data<00:47:01.280> and<00:47:01.400> you're<00:47:01.520> debugging,<00:47:01.960> like<00:47:02.080> we<00:47:02.200> can\ndata and you're debugging, like we can\ndata and you're debugging, like we can edit<00:47:02.520> things<00:47:02.720> in<00:47:02.800> the<00:47:02.840> memory<00:47:03.200> view,<00:47:03.680> we<00:47:03.800> can\nedit things in the memory view, we can\nedit things in the memory view, we can edit<00:47:04.200> the<00:47:04.320> colors,<00:47:04.840> we<00:47:04.960> can<00:47:05.080> edit<00:47:05.400> like<00:47:06.000> we<00:47:06.120> can\nedit the colors, we can edit like we can\nedit the colors, we can edit like we can edit<00:47:06.400> values<00:47:06.760> inside<00:47:06.960> the<00:47:07.040> watch<00:47:07.240> window.\nedit values inside the watch window.\nedit values inside the watch window. It's<00:47:08.000> like<00:47:08.200> really<00:47:08.440> all<00:47:08.560> these<00:47:08.720> visualizers\nIt's like really all these visualizers\nIt's like really all these visualizers should<00:47:09.480> also<00:47:09.680> have<00:47:09.840> editing<00:47:10.120> functionality\nshould also have editing functionality\nshould also have editing functionality at<00:47:10.960> the<00:47:11.080> limit.<00:47:11.440> So,<00:47:11.560> I<00:47:11.640> think<00:47:11.840> that<00:47:12.120> should\nat the limit. So, I think that should\nat the limit. So, I think that should apply<00:47:12.600> also<00:47:12.840> to<00:47:12.960> the<00:47:13.040> text<00:47:13.280> visualizer,<00:47:14.160> which\napply also to the text visualizer, which\napply also to the text visualizer, which means<00:47:14.800> it<00:47:14.960> necessarily<00:47:15.560> also<00:47:15.800> has<00:47:15.960> to<00:47:16.080> apply\nmeans it necessarily also has to apply\nmeans it necessarily also has to apply to<00:47:17.240> source<00:47:17.560> code<00:47:17.800> views,<00:47:18.480> right?<00:47:18.800> So,<00:47:19.080> it's\nto source code views, right? So, it's\nto source code views, right? So, it's it's<00:47:19.880> I<00:47:19.960> think<00:47:20.160> eventually<00:47:20.600> it'll<00:47:20.760> become\nit's I think eventually it'll become\nit's I think eventually it'll become that.<00:47:21.760> Um\nthat. Um\nthat. Um but<00:47:22.640> it's<00:47:22.760> just<00:47:22.920> not<00:47:23.360> the<00:47:23.440> high<00:47:23.680> priority\nbut it's just not the high priority\nbut it's just not the high priority right<00:47:24.440> now<00:47:24.560> cuz<00:47:24.760> obviously<00:47:25.040> we<00:47:25.120> have<00:47:25.240> the\nright now cuz obviously we have the\nright now cuz obviously we have the porting<00:47:25.720> stuff<00:47:25.960> to<00:47:26.040> do<00:47:26.240> before<00:47:26.440> we<00:47:26.520> get<00:47:26.640> to<00:47:26.760> all\nporting stuff to do before we get to all\nporting stuff to do before we get to all the<00:47:27.040> fancy<00:47:27.440> stuff.<00:47:27.800> We<00:47:27.880> have<00:47:28.000> porting<00:47:28.400> to<00:47:28.520> do\nthe fancy stuff. We have porting to do\nthe fancy stuff. We have porting to do both<00:47:29.320> to<00:47:29.560> Linux<00:47:29.920> but<00:47:30.040> also<00:47:30.400> to<00:47:30.600> from<00:47:30.800> x64<00:47:31.440> to\nboth to Linux but also to from x64 to\nboth to Linux but also to from x64 to arm,<00:47:32.520> um<00:47:32.880> and<00:47:32.960> then<00:47:33.080> probably<00:47:33.520> like<00:47:33.720> risk<00:47:34.000> five\narm, um and then probably like risk five\narm, um and then probably like risk five or<00:47:34.480> whatever,<00:47:34.960> and<00:47:35.080> then<00:47:35.360> like<00:47:35.840> we<00:47:35.920> just<00:47:36.080> want\nor whatever, and then like we just want\nor whatever, and then like we just want to<00:47:36.280> start<00:47:36.480> doing<00:47:36.720> all<00:47:36.840> the<00:47:37.080> we<00:47:37.200> want<00:47:37.320> to<00:47:37.400> cover\nto start doing all the we want to cover\nto start doing all the we want to cover those<00:47:37.880> bases<00:47:38.320> first<00:47:38.800> so<00:47:38.920> that<00:47:39.080> we<00:47:39.160> don't<00:47:39.480> get\nthose bases first so that we don't get\nthose bases first so that we don't get ahead<00:47:39.840> of<00:47:39.960> ourselves,<00:47:40.960> um<00:47:41.280> and<00:47:41.400> build<00:47:42.080> all\nahead of ourselves, um and build all\nahead of ourselves, um and build all those<00:47:42.440> kinds<00:47:42.680> of<00:47:42.760> crazy<00:47:43.040> features<00:47:43.400> on<00:47:43.520> a\nthose kinds of crazy features on a\nthose kinds of crazy features on a really<00:47:43.960> unstable<00:47:44.440> foundation.<00:47:44.960> So,<00:47:45.040> we<00:47:45.160> want\nreally unstable foundation. So, we want\nreally unstable foundation. So, we want to<00:47:45.360> make<00:47:45.440> sure<00:47:45.560> to<00:47:45.640> do<00:47:45.760> it<00:47:45.920> really<00:47:46.440> really<00:47:46.800> uh\nto make sure to do it really really uh\nto make sure to do it really really uh um\num\num really<00:47:49.120> appropriately,<00:47:50.080> I<00:47:50.160> guess<00:47:50.320> is<00:47:50.440> what<00:47:50.560> I\nreally appropriately, I guess is what I\nreally appropriately, I guess is what I would<00:47:50.720> say.<00:47:51.200> Um<00:47:51.520> so,<00:47:51.840> not<00:47:52.160> anytime<00:47:52.560> soon,<00:47:53.080> but\nwould say. Um so, not anytime soon, but\nwould say. Um so, not anytime soon, but there<00:47:53.600> are<00:47:53.800> a<00:47:53.840> lot<00:47:54.040> of<00:47:54.120> features<00:47:54.480> in<00:47:54.560> the<00:47:54.640> rad\nthere are a lot of features in the rad\nthere are a lot of features in the rad debugger<00:47:55.120> to<00:47:56.000> hook<00:47:56.200> up<00:47:56.360> to<00:47:56.480> an<00:47:56.600> editor,\ndebugger to hook up to an editor,\ndebugger to hook up to an editor, which<00:47:58.120> I<00:47:58.160> could<00:47:58.320> talk<00:47:58.480> about,<00:47:58.680> too,<00:47:58.840> but<00:47:59.640> um\nwhich I could talk about, too, but um\nwhich I could talk about, too, but um anyways.\nanyways.\nanyways. >> [music]\n[music]\n[music]", + "fetched_at": "2026-06-29T15:02:02.515849+00:00" +} \ No newline at end of file