summaryrefslogtreecommitdiffstats
path: root/2023/captions/emacsconf-2023-lspocaml--writing-a-language-server-in-ocaml-for-emacs-fun-and-profit--austin-theriault--answers.vtt
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--2023/captions/emacsconf-2023-lspocaml--writing-a-language-server-in-ocaml-for-emacs-fun-and-profit--austin-theriault--answers.vtt1019
1 files changed, 1019 insertions, 0 deletions
diff --git a/2023/captions/emacsconf-2023-lspocaml--writing-a-language-server-in-ocaml-for-emacs-fun-and-profit--austin-theriault--answers.vtt b/2023/captions/emacsconf-2023-lspocaml--writing-a-language-server-in-ocaml-for-emacs-fun-and-profit--austin-theriault--answers.vtt
new file mode 100644
index 00000000..277f3dd1
--- /dev/null
+++ b/2023/captions/emacsconf-2023-lspocaml--writing-a-language-server-in-ocaml-for-emacs-fun-and-profit--austin-theriault--answers.vtt
@@ -0,0 +1,1019 @@
+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?