WEBVTT 00:00:03.540 --> 00:00:03.939 [Speaker 0]: I would invite all on the, 00:00:04.600 --> 00:00:04.960 who are currently watching, 00:00:06.819 --> 00:00:07.200 who have questions, put them into the pad 00:00:08.940 --> 00:00:09.440 that I can ask them. I'm kind of monitoring 00:00:16.320 --> 00:00:16.720 the IRC concurrently. So the first question 00:00:18.640 --> 00:00:18.800 that we have on the pad is concerning why you 00:00:19.600 --> 00:00:20.100 have switched from OCaml. 00:00:22.420 --> 00:00:22.800 Maybe the person has missed it in the talk, 00:00:23.480 --> 00:00:23.980 if you've mentioned it. 00:00:25.080 --> 00:00:25.320 Why have you switched from OCaml to, 00:00:25.920 --> 00:00:26.180 in this case, I guess, 00:00:26.180 --> 00:00:26.680 Rust? 00:00:30.960 --> 00:00:31.080 [Speaker 1]: Yeah, I mentioned like with writing a 00:00:34.280 --> 00:00:34.440 language server that I wrote mine for my 00:00:36.900 --> 00:00:37.120 company in OCaml But I wouldn't recommend it 00:00:38.960 --> 00:00:39.220 just in general unless like you're doing 00:00:41.720 --> 00:00:42.040 something specific with OCaml And the reason 00:00:44.180 --> 00:00:44.340 for that and I recommended Rust or like 00:00:45.780 --> 00:00:46.100 TypeScript is like OCaml is great. 00:00:49.080 --> 00:00:49.360 It's very performant but it's cross 00:00:50.739 --> 00:00:51.100 compilation story is not great. 00:00:54.100 --> 00:00:54.340 It's like really hard to cross compile like 00:00:55.840 --> 00:00:56.320 from 1 platform to another. 00:00:58.120 --> 00:00:58.540 And then like the ecosystem and its standard 00:01:00.380 --> 00:01:00.880 library is also not great. 00:01:03.460 --> 00:01:03.640 And like Rust, its cross compilation is 00:01:05.820 --> 00:01:06.320 great. Its ecosystem is great. 00:01:08.720 --> 00:01:09.060 OCaml is great if you need to use it, 00:01:10.880 --> 00:01:11.380 but it's just it's not ideal. 00:01:14.220 --> 00:01:14.340 And there's just also no good examples of a 00:01:15.240 --> 00:01:15.740 language server in OCaml. 00:01:19.119 --> 00:01:19.619 There's the official like OCaml language 00:01:22.920 --> 00:01:23.420 server, But they use a ton of super advanced 00:01:27.380 --> 00:01:27.540 language features, like module functors and a 00:01:28.440 --> 00:01:28.700 bunch of other random stuff. 00:01:29.479 --> 00:01:29.979 So it's not really readable. 00:01:31.860 --> 00:01:32.300 But Rust, there's Rust analyzer, 00:01:33.340 --> 00:01:33.780 which is readable. In TypeScript, 00:01:34.860 --> 00:01:35.360 there's like a million different ones. 00:01:39.340 --> 00:01:39.660 So it's less of a, not OCaml is like, 00:01:40.920 --> 00:01:41.280 it's not that OCaml isn't great. 00:01:43.320 --> 00:01:43.440 It's more of a, these other languages would 00:01:44.160 --> 00:01:44.660 probably just be easier. 00:01:45.280 --> 00:01:45.780 So. 00:01:48.619 --> 00:01:48.920 [Speaker 0]: I guess since the integration to, 00:01:50.820 --> 00:01:51.000 for example, like NeoVim or some other 00:01:53.320 --> 00:01:53.460 editors are just revenue fine because of the 00:01:56.920 --> 00:01:57.420 [Speaker 1]: Sorry, can you say that again? 00:01:58.580 --> 00:01:59.080 [Speaker 0]: LSP, I guess. The LSP, 00:02:01.979 --> 00:02:02.100 so it's a standard LSP specification that 00:02:03.080 --> 00:02:03.400 you're using. So you can also, 00:02:04.920 --> 00:02:05.340 for instance, use it and other editors, 00:02:06.660 --> 00:02:07.160 like for instance, new them or so. 00:02:08.680 --> 00:02:08.940 [Speaker 1]: Yeah. Yeah. You can use it. 00:02:11.680 --> 00:02:11.920 It's most, most editors nowadays support it. 00:02:13.280 --> 00:02:13.780 Like obviously Emacs, NeoVim, 00:02:16.420 --> 00:02:16.840 Sublime, VS code, Intel, 00:02:17.700 --> 00:02:18.200 all the IntelliJ ones. 00:02:21.560 --> 00:02:21.960 So yeah, that's, that's the fun part. 00:02:23.440 --> 00:02:23.760 You don't have to write 10 different 00:02:26.500 --> 00:02:27.000 languages to get a bunch of editor support. 00:02:30.200 --> 00:02:30.300 [Speaker 0]: Also experience writing it. 00:02:33.820 --> 00:02:34.040 So I didn't have really time to hear into 00:02:36.300 --> 00:02:36.560 your talk. So I'm sorry if I ask you 00:02:38.100 --> 00:02:38.600 questions that you have already said. 00:02:41.400 --> 00:02:41.900 How was the experience of writing an LSP? 00:02:44.340 --> 00:02:44.480 So have you any knowledge beforehand or do 00:02:45.600 --> 00:02:46.100 you just read it all on yourself? 00:02:49.200 --> 00:02:49.700 [Speaker 1]: Yeah, there's not a ton of documentation, 00:02:53.440 --> 00:02:53.940 which is what motivated me to do this talk. 00:02:56.380 --> 00:02:56.580 Basically, I just looked at the 00:02:58.820 --> 00:02:58.980 specification, and I knew Rust Analyzer was 00:03:00.240 --> 00:03:00.740 cool. And so I looked at Rust Analyzer, 00:03:01.600 --> 00:03:02.100 and I looked at PyRite. 00:03:04.200 --> 00:03:04.700 And I just went from there. 00:03:07.920 --> 00:03:08.420 I found out about all this because I already 00:03:10.240 --> 00:03:10.440 using Emacs, I already knew about it. 00:03:12.160 --> 00:03:12.660 I was like, this is going to be easier than 00:03:15.020 --> 00:03:15.480 something else. So yeah, 00:03:17.720 --> 00:03:18.220 there's the experience is fine. 00:03:21.060 --> 00:03:21.300 It's just a lot of wiring stuff up. 00:03:24.100 --> 00:03:24.320 It's not a lot of like hard thinking until 00:03:26.200 --> 00:03:26.700 you get to like performance heavy stuff. 00:03:27.740 --> 00:03:28.080 Like, so for some graph, 00:03:30.760 --> 00:03:31.260 like we're doing a ton of like code parsing 00:03:32.980 --> 00:03:33.480 and like analyzing. And so that's, 00:03:35.760 --> 00:03:36.260 it takes up like a ton of processing power. 00:03:37.280 --> 00:03:37.600 So like for stuff like that, 00:03:39.620 --> 00:03:39.840 like now you have to think about caching and 00:03:43.980 --> 00:03:44.380 like ordering things. So that part's hard, 00:03:47.180 --> 00:03:47.420 but that's more of a, like very much 00:03:48.640 --> 00:03:49.140 application specific thing. 00:03:58.320 --> 00:03:58.620 [Speaker 0]: Right. Anything in the IRC chat. 00:04:01.840 --> 00:04:02.340 I think not. It's nothing I can see. 00:04:13.380 --> 00:04:13.520 No questions, that's kind of odd to be 00:04:17.440 --> 00:04:17.860 honest. I cannot really ask questions 00:04:18.680 --> 00:04:19.180 concerning LSP specific. 00:04:22.400 --> 00:04:22.900 [Speaker 1]: Yeah, no worries. 00:04:31.460 --> 00:04:31.960 [Speaker 0]: Good question, what could be asked? 00:04:35.740 --> 00:04:36.140 Let's call, let's ask something very 00:04:38.260 --> 00:04:38.680 unspecific concerning the Emacs usage. 00:04:39.340 --> 00:04:39.760 And when have you started? 00:04:41.580 --> 00:04:41.780 How did you came through it and stuff like 00:04:41.780 --> 00:04:42.280 this? 00:04:46.560 --> 00:04:46.960 [Speaker 1]: Yeah. I like and when I was in high school, 00:04:48.480 --> 00:04:48.980 me and my friends just were like, 00:04:51.820 --> 00:04:52.320 got obsessed with Linux for whatever reason. 00:04:53.940 --> 00:04:54.140 And then like we traveled down like the, 00:04:55.560 --> 00:04:56.060 like the free software, 00:04:57.700 --> 00:04:57.940 like we just thought that was like very 00:05:00.040 --> 00:05:00.160 entertaining and like interesting to read 00:05:01.200 --> 00:05:01.700 about all the free software stuff. 00:05:03.120 --> 00:05:03.480 They were like, yeah, that's cool. 00:05:04.540 --> 00:05:05.040 And so we all started using Linux. 00:05:06.960 --> 00:05:07.200 And I'm like, well, if I'm using free 00:05:08.300 --> 00:05:08.740 software, I'm going to use Emacs. 00:05:12.280 --> 00:05:12.440 And so I started using Emacs just to try it 00:05:13.940 --> 00:05:14.440 out. And then I kind of got, 00:05:16.880 --> 00:05:17.380 I feel like, Stockholm syndrome into it. 00:05:18.720 --> 00:05:19.220 And now I've realized like, 00:05:21.860 --> 00:05:22.360 I don't know, now that I've done the like 00:05:23.880 --> 00:05:24.340 actual work to get into Emacs, 00:05:26.280 --> 00:05:26.480 it's just, there's so much more I can do with 00:05:30.300 --> 00:05:30.800 it. But yeah, it was somewhat unintentional. 00:05:36.100 --> 00:05:36.420 [Speaker 0]: I probably have the same course I've started 00:05:37.780 --> 00:05:38.280 like 2 years ago using Emacs. 00:05:42.720 --> 00:05:42.940 And also just, oh, there's at first some cool 00:05:45.020 --> 00:05:45.340 people on YouTube, so systems crafters and 00:05:46.300 --> 00:05:46.800 people like this. And also, 00:05:49.440 --> 00:05:49.740 ah, VS Code, I used a lot of VS Code 00:05:53.560 --> 00:05:53.860 beforehand and then VS Codium because open 00:05:55.640 --> 00:05:55.860 source and then oh are there any other 00:05:58.020 --> 00:05:58.180 alternatives and I came to like Neovim and 00:06:01.160 --> 00:06:01.440 Emacs and often switching around but I stick 00:06:03.220 --> 00:06:03.720 to Emacs at some point to be honest. 00:06:07.180 --> 00:06:07.540 [Speaker 1]: Yeah, I think Emacs also just looks really 00:06:08.500 --> 00:06:09.000 cool. I will say that. 00:06:14.240 --> 00:06:14.640 And also just like I like Vim. 00:06:16.960 --> 00:06:17.240 Vim is cool but like being able to like write 00:06:19.240 --> 00:06:19.540 lists and like modify your editor on the fly 00:06:20.920 --> 00:06:21.420 is just like very appealing to me. 00:06:23.860 --> 00:06:24.140 I don't know, Emacs was tough at first 00:06:25.520 --> 00:06:25.680 because like all the like default key 00:06:28.380 --> 00:06:28.440 bindings are just kind of like and then and 00:06:29.860 --> 00:06:30.040 then I read somewhere someone was like yeah 00:06:33.220 --> 00:06:33.460 well Richard Stallman uses evil mode so it's 00:06:36.220 --> 00:06:36.460 okay. I was like alright I can that's like 00:06:38.000 --> 00:06:38.200 blessing enough for me Like I'm just gonna 00:06:39.520 --> 00:06:39.720 switch to evil mode. And I was like, 00:06:42.160 --> 00:06:42.360 this is way, way better as far as key 00:06:42.920 --> 00:06:43.420 bindings go. 00:06:46.720 --> 00:06:47.020 [Speaker 0]: Kind of relates. So I switched for, 00:06:49.900 --> 00:06:50.040 I think, half a year to the default key 00:06:51.300 --> 00:06:51.800 bindings from Vim beforehand. 00:06:54.960 --> 00:06:55.240 I switched back to Evil and now I'm losing 00:06:56.100 --> 00:06:56.600 some kind of hybrid styles. 00:07:01.000 --> 00:07:01.120 It's kind of weird. But we have a question on 00:07:03.260 --> 00:07:03.700 the pad. So what are the corner cases, 00:07:05.380 --> 00:07:05.880 limitations, and other issues you encountered 00:07:08.860 --> 00:07:09.020 in implementing an LSP server with client in 00:07:09.940 --> 00:07:10.440 Emacs that were surprising? 00:07:13.680 --> 00:07:13.860 [Speaker 1]: Yeah, I would say the corner cases and 00:07:15.280 --> 00:07:15.780 limitations are definitely like, 00:07:16.960 --> 00:07:17.220 once again, they're going to be very 00:07:18.960 --> 00:07:19.160 application specific, but it's usually just 00:07:22.420 --> 00:07:22.680 the performance part. So like I was saying 00:07:24.680 --> 00:07:24.900 before, right, in general if you're doing 00:07:26.120 --> 00:07:26.620 language tooling, you're gonna be doing 00:07:29.760 --> 00:07:30.080 either parsing or interpreting or something 00:07:31.560 --> 00:07:31.880 like that, which is very just like 00:07:34.740 --> 00:07:35.080 computationally heavy and so if you're trying 00:07:36.900 --> 00:07:37.060 to like do that stuff while someone is 00:07:38.520 --> 00:07:39.000 editing a file right like every keystrokes 00:07:42.660 --> 00:07:42.840 every like 1 to 2 seconds if they have a fast 00:07:44.240 --> 00:07:44.540 computer that's great but a lot of people 00:07:46.400 --> 00:07:46.560 don't have like that fast of a computer that 00:07:49.480 --> 00:07:49.740 they can go and like do compilation every 00:07:51.680 --> 00:07:52.180 single keystroke. So like, 00:07:54.080 --> 00:07:54.580 I would say, I would say the like limitation 00:07:56.920 --> 00:07:57.080 is just how fast your computer is and how 00:07:59.140 --> 00:07:59.340 good you are at like implementing caching for 00:08:01.020 --> 00:08:01.520 like whatever you're doing. 00:08:04.080 --> 00:08:04.280 That's also just the main issues I've run 00:08:08.080 --> 00:08:08.580 into is just it's a constant uphill battle. 00:08:12.120 --> 00:08:12.560 People will somehow find larger and larger 00:08:14.580 --> 00:08:15.080 files. You'll end up with files that are like 00:08:17.320 --> 00:08:17.680 thousands, like tens of thousands of lines 00:08:18.700 --> 00:08:18.940 long and you think yeah, 00:08:21.340 --> 00:08:21.840 surely no 1 would expect like instantaneous 00:08:25.440 --> 00:08:25.640 response for like like editing a file that 00:08:26.820 --> 00:08:27.040 has like tens of thousands of lines, 00:08:30.000 --> 00:08:30.180 but then they do. As far as corner cases go, 00:08:31.960 --> 00:08:32.459 I would say the corner case is like, 00:08:37.760 --> 00:08:37.919 just in general is actually distributing the 00:08:41.039 --> 00:08:41.200 language server. Cause like writing the 00:08:42.340 --> 00:08:42.840 language server is fine. 00:08:44.540 --> 00:08:44.900 Like wiring everything up is fine. 00:08:47.180 --> 00:08:47.300 But then like, once you actually have to go 00:08:47.960 --> 00:08:48.120 and distribute it, well, 00:08:49.200 --> 00:08:49.700 now you're distributing in a binary. 00:08:51.660 --> 00:08:52.160 Like I was saying before with OCaml, 00:08:53.940 --> 00:08:54.440 doesn't have great cross compilation. 00:08:58.840 --> 00:08:59.340 So for some graph for our language server, 00:09:01.560 --> 00:09:02.060 we target Linux and Mac OS, 00:09:03.840 --> 00:09:04.340 and we have a ton of people who use Windows, 00:09:06.960 --> 00:09:07.440 but compiling OCaml for Windows is basically 00:09:10.080 --> 00:09:10.440 impossible. So our corner case there, 00:09:11.980 --> 00:09:12.480 the way we solved it was now we're 00:09:14.160 --> 00:09:14.660 transpiling OCaml to JavaScript, 00:09:17.080 --> 00:09:17.560 which is a huge can of worms. 00:09:18.840 --> 00:09:19.040 Like it's a lot of fun. 00:09:19.400 --> 00:09:19.900 It's very interesting, 00:09:22.860 --> 00:09:23.360 but like it's not ideal. 00:09:24.340 --> 00:09:24.720 And so that's what I was saying before. 00:09:26.360 --> 00:09:26.580 I recommend like Rust or TypeScript because 00:09:29.580 --> 00:09:29.820 those are way more portable and a lot easier 00:09:31.280 --> 00:09:31.780 to install. And you don't have to worry about 00:09:33.600 --> 00:09:34.100 any of that weird packaging stuff. 00:09:37.600 --> 00:09:38.080 So yeah, I would say that's like the main 00:09:40.260 --> 00:09:40.760 corner case and the main limitation is just 00:09:41.720 --> 00:09:42.220 speed and caching. 00:09:47.160 --> 00:09:47.640 [Speaker 0]: You mentioned this obscure large file so 00:09:49.000 --> 00:09:49.160 someone doesn't want to refactor or 00:09:51.760 --> 00:09:52.200 something. How did you start? 00:09:54.480 --> 00:09:54.620 So did you have any way to still be 00:09:56.320 --> 00:09:56.580 relatively performant when they have big 00:09:58.020 --> 00:09:58.520 files or is it just not supported? 00:09:58.920 --> 00:09:59.420 I don't care. 00:10:03.140 --> 00:10:03.640 [Speaker 1]: Yeah, no, we, so we support larger files now 00:10:05.460 --> 00:10:05.960 And the way we ended up doing that, 00:10:11.480 --> 00:10:11.980 so SemGrep is like you write this generic 00:10:14.540 --> 00:10:14.900 pattern. You kind of write the language, 00:10:17.160 --> 00:10:17.320 but then there's these other symbols and 00:10:18.760 --> 00:10:19.160 stuff that are included in that, 00:10:19.760 --> 00:10:20.260 this like meta language. 00:10:22.420 --> 00:10:22.580 And so what happens is, 00:10:23.600 --> 00:10:24.100 is most languages get, 00:10:27.720 --> 00:10:27.900 they get parsed and then into a syntax tree, 00:10:29.180 --> 00:10:29.600 right? Like whatever the language is syntax 00:10:30.620 --> 00:10:31.120 tree is, and then they get, 00:10:33.800 --> 00:10:34.000 the syntax tree gets converted into this, 00:10:35.860 --> 00:10:36.360 like, we call it like an abstract syntax 00:10:38.080 --> 00:10:38.300 tree, which is like abstract from like any, 00:10:39.860 --> 00:10:40.360 like languages specific syntax tree. 00:10:41.940 --> 00:10:42.380 And so then we can cache that, 00:10:44.480 --> 00:10:44.760 which is really good because like if someone 00:10:47.700 --> 00:10:47.920 types something like we don't have to go 00:10:50.280 --> 00:10:50.440 through and do like the full parsing and like 00:10:51.560 --> 00:10:51.760 converting, we only have to do it 00:10:54.960 --> 00:10:55.200 incrementally. And so that's, 00:10:56.100 --> 00:10:56.420 that's how we dealt with that. 00:10:58.140 --> 00:10:58.640 Or the other option is that we just, 00:11:00.720 --> 00:11:01.180 we just cache whatever the previous results 00:11:03.460 --> 00:11:03.960 are, and then run it asynchronously, 00:11:04.960 --> 00:11:05.460 and they might get it delayed. 00:11:08.200 --> 00:11:08.700 But we've ended up doing more AST caching, 00:11:09.880 --> 00:11:10.380 which is fun and cool. 00:11:15.600 --> 00:11:15.900 [Speaker 0]: Sounds good. So we have here a question from 00:11:18.240 --> 00:11:18.540 Blaine. If Eaglet is a subset of LSP mode, 00:11:21.680 --> 00:11:21.840 can EGLOT conflict with LSP mode if both are 00:11:23.400 --> 00:11:23.900 present in your initial .el 00:11:24.280 --> 00:11:24.780 file? 00:11:27.740 --> 00:11:28.240 [Speaker 1]: Yeah, so I haven't played around with EGLOT 00:11:30.580 --> 00:11:30.960 mode a ton, so I'm not 100% sure. 00:11:33.920 --> 00:11:34.420 I think all of the key bindings and commands, 00:11:36.320 --> 00:11:36.820 if you just install it out of the box, 00:11:39.020 --> 00:11:39.520 I Think they're different. 00:11:41.440 --> 00:11:41.840 So I don't think there's like any like 00:11:44.760 --> 00:11:45.040 overlap as far as that stuff goes but you 00:11:47.520 --> 00:11:47.900 will have the overlap of like you entered, 00:11:49.780 --> 00:11:49.960 like you started a major mode for like some 00:11:51.500 --> 00:11:51.720 language, like they'll both probably start 00:11:53.040 --> 00:11:53.540 the language server and provide diagnostics 00:11:55.320 --> 00:11:55.580 and everything. And so then now you're 00:11:58.180 --> 00:11:58.320 getting like, you're just like doubling the 00:11:59.340 --> 00:11:59.680 work your computer is doing. 00:12:00.480 --> 00:12:00.980 So there's that conflict. 00:12:04.160 --> 00:12:04.360 But if you prefer EGLOT mode or LSP mode for 00:12:05.200 --> 00:12:05.700 like 1 language or framework, 00:12:09.060 --> 00:12:09.440 like 1 major mode and LSP mode for the other, 00:12:10.600 --> 00:12:11.100 I think you should be fine. 00:12:14.680 --> 00:12:14.860 [Speaker 0]: All right. Just to let you know, 00:12:20.460 --> 00:12:20.640 we have like 1 minute on the stream and then 00:12:22.540 --> 00:12:23.040 we'll switch back and to the pre-recorded 00:12:24.000 --> 00:12:24.500 stuff I guess. 00:12:27.440 --> 00:12:27.740 [Speaker 2]: Yeah yeah yeah let's hi sorry for the rude 00:12:29.440 --> 00:12:29.620 interruption but I'm just doing a little bit 00:12:31.700 --> 00:12:32.060 of time keeping so thank you so much Austin 00:12:34.340 --> 00:12:34.540 sadly I wasn't able to follow the Q&A because 00:12:36.280 --> 00:12:36.780 I was in the other track answering questions. 00:12:39.960 --> 00:12:40.360 If, Austin, you want to stay and answer some 00:12:41.580 --> 00:12:42.080 more questions, feel free to do so. 00:12:45.920 --> 00:12:46.220 People tend to start talking as soon as we go 00:12:48.400 --> 00:12:48.740 off air, And I wouldn't be surprised with LSP 00:12:49.540 --> 00:12:50.040 that people would do the same. 00:12:52.800 --> 00:12:53.040 We're gonna move on for this track. 00:12:54.840 --> 00:12:55.040 We're gonna move on in 20 seconds to the next 00:12:56.920 --> 00:12:57.420 1. So Floey, thank you for hosting. 00:12:58.680 --> 00:12:59.180 Austin, thank you for all your answers. 00:13:01.460 --> 00:13:01.960 And We'll see you in a bit. 00:13:04.740 --> 00:13:05.140 [Speaker 1]: Cool. Thanks. See you. 00:13:06.700 --> 00:13:07.200 [Speaker 0]: Thanks for the Q&A. 00:13:10.120 --> 00:13:10.440 [Speaker 2]: All right. All right. You are now off air. 00:13:11.400 --> 00:13:11.720 Thank you so much, Austin. 00:13:13.100 --> 00:13:13.200 I'm going to go back running in the 00:13:13.940 --> 00:13:14.100 background. And thank you, 00:13:14.700 --> 00:13:15.200 Flowey, for everything. 00:13:20.900 --> 00:13:21.400 [Speaker 0]: And thanks. Yeah. Have a nice, 00:13:23.160 --> 00:13:23.660 probably a nice day at your work. 00:13:24.140 --> 00:13:24.240 [Speaker 1]: Yeah, no worries. Yeah. 00:13:26.380 --> 00:13:26.680 Yeah, it's still it's like lunchtime for me. 00:13:28.100 --> 00:13:28.600 [Speaker 0]: So okay, here, it's like, 00:13:34.380 --> 00:13:34.700 09:00. 9pm. Thanks for the talk. 00:13:36.300 --> 00:13:36.600 Sorry for the inconvenience was not having 00:13:37.540 --> 00:13:38.040 any, any questions, really. 00:13:39.000 --> 00:13:39.380 [Speaker 1]: So yeah. Oh yeah, no worries. 00:13:41.100 --> 00:13:41.280 It's like, there's like no documentation on 00:13:42.940 --> 00:13:43.380 any of this stuff. So I didn't really expect 00:13:43.380 --> 00:13:43.880 any. 00:13:47.220 --> 00:13:47.560 [Speaker 0]: Yeah, I was kind of interested when I jumped 00:13:51.000 --> 00:13:51.140 into NeoVim. I write it 1 or 2 things on my 00:13:53.140 --> 00:13:53.320 own, but never really got really deep into 00:13:54.520 --> 00:13:54.960 it. And you're gonna see with like compiler 00:13:55.920 --> 00:13:56.140 design and stuff like this, 00:13:57.400 --> 00:13:57.900 but not really specific. 00:13:58.320 --> 00:13:58.820 So I was 00:14:00.860 --> 00:14:01.240 [Speaker 1]: kind of- Yeah, that's the hard part. 00:14:02.440 --> 00:14:02.880 It's like, it's, LSP is cool, 00:14:05.020 --> 00:14:05.200 but then you have to like deal with all the 00:14:06.760 --> 00:14:07.200 like compiler stuff and programming language 00:14:07.200 --> 00:14:07.700 theory. 00:14:10.600 --> 00:14:10.800 [Speaker 0]: So yeah. So it's, it shouldn't be too 00:14:13.280 --> 00:14:13.660 complicated. I had not really a question, 00:14:14.700 --> 00:14:15.140 so, but it worked out fine. 00:14:16.500 --> 00:14:17.000 Thanks for the Q and A. 00:14:18.560 --> 00:14:19.060 And if I have any questions to Oak Hamill, 00:14:20.640 --> 00:14:21.140 Elderspeak will get an email from you. 00:14:21.560 --> 00:14:22.060 [Speaker 1]: Oh yeah, definitely. 00:14:23.500 --> 00:14:24.000 [Speaker 0]: Dan?