1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
|
WEBVTT
NOTE Q: Do you have any suggestions for interactive debugging of Julia code in Emacs?
00:00.089 --> 00:00.829
... answer to that. I, I think the infrastructure for an
00:01.509 --> 00:14.192
ecosystem in Julia in general is as mature as other
00:01.509 --> 00:14.192
languages, and even debugger infiltrator themselves are
00:01.509 --> 00:14.192
not particularly well developed. And so I don't think
00:15.853 --> 00:19.214
there's much we can do about that right now. I think that it's
00:21.570 --> 00:28.057
unfortunate that most of the development for these type of
00:21.570 --> 00:28.057
tools is tightly linked to VS code. But even there, I don't
00:29.218 --> 00:36.225
think that there's much done in terms of interactive
00:29.218 --> 00:36.225
debugging. So I, yeah, I think this has to be worked on mostly
00:36.866 --> 00:43.213
on the Julia side first. And then probably Emacs can get
00:43.820 --> 00:48.303
something out of that. I know that there's development in
00:49.183 --> 00:57.728
debugger.jl itself for future releases to make it at least
00:49.183 --> 00:57.728
faster and more stable. But yeah, I think we're not there as
00:58.809 --> 01:03.852
Julia community itself. So let alone Emacs, integration
01:04.192 --> 01:07.234
with Emacs. The way I personally debug is mostly using,
01:08.286 --> 01:15.508
well, debugger and infiltrator with Julia REPL mode in
NOTE Q: Can you call out something that Julia has that Emacs does not, and which could benefit Emacs?
01:08.286 --> 01:15.508
Emacs. The second question, can you call out something that
01:18.009 --> 01:24.891
Julia has that Emacs does not and which could benefit Emacs?
01:26.852 --> 01:27.852
Nothing stands out to me except the usual multi-threading
01:28.848 --> 01:32.552
and things like this. I don't necessarily see something
01:33.432 --> 01:46.783
that Julia has going on that DMX doesn't have, but I see some
01:33.432 --> 01:46.783
differences and approaches that I think are important,
01:33.432 --> 01:46.783
like the community. I think Julia is a very active and tight
01:47.384 --> 01:50.266
community. Julia uses Slack and is very, very active. I
01:54.093 --> 01:57.736
think he might say something like that, but it's maybe more
01:54.093 --> 01:57.736
on Reddit, IRC. JuliaCon is big and brings together lots and
01:59.078 --> 02:02.381
lots of people. And I think the sense of community is really
02:03.221 --> 02:05.263
powerful. It's very easy to essentially meet people that
02:06.364 --> 02:16.834
are interested in what we're building and interested in
02:06.364 --> 02:16.834
what we're doing and interested in Julian, our, you know,
02:06.364 --> 02:16.834
hacker spirit. I think Emacs is a very strong community.
02:21.228 --> 02:26.151
We're here on a Saturday talking about Emacs, which again
02:21.228 --> 02:26.151
proves that we are doing this. But I'd like to emphasize that
02:27.192 --> 02:35.696
the community is a really important aspect in Julia that I
02:27.192 --> 02:35.696
think we should double down on our side. The next question is
NOTE Q: Is there a way to use lisp syntax with Julia, like hy for python or lisp flavoured erlang?
02:36.797 --> 02:44.841
about Lisp syntax with Julia, like what we can do in Python.
02:48.038 --> 02:53.180
I don't think that's, I don't, I am not aware of any package
02:48.038 --> 02:53.180
that does that. I would bet that there's something there. I
02:56.722 --> 02:58.063
think that that's possible. Indeed, there used to be a Lisp
02:59.243 --> 03:07.027
interpreter in Julia itself until the latest release. The
03:07.647 --> 03:12.229
syntax parsing was done with a Lisp, it was called TemtoList
03:07.647 --> 03:12.229
indeed. I think this got rid, get rid of this for our more
03:16.124 --> 03:23.489
Julia-based solution that is faster and with better code
03:16.124 --> 03:23.489
provenance. I think that it should be possible to use the
03:25.430 --> 03:35.437
metaprogramming features in Julia to change the structure
03:25.430 --> 03:35.437
of your syntax to be a Lispy syntax. I do want to emphasize
03:36.238 --> 00:03:44.664
that Julia is heavily inspired by Lisp, so I wouldn't be
03:36.238 --> 03:44.664
surprised if if something like this were possible.
03:49.309 --> 00:03:51.167
I have tried Julia Snail.
NOTE Q: Have you tried the Julia Snail package for Emacs? It tries to be like SLY/SLIME for Common Lisp.
00:03:51.168 --> 00:03:51.070
So the next question is about Julia
03:51.270 --> 03:52.712
Snail. I found Julia REPL to be a little bit easier to set up
03:53.312 --> 03:58.436
and use. So I just settled on that. I should maybe revisit
04:00.918 --> 04:03.480
that. In particular, I use the Julia REPL with the vterm
04:03.720 --> 04:11.406
backend, which essentially makes a companion REPL to my
04:03.720 --> 04:11.406
scripts. And that works for me. I do think that the tooling
04:15.638 --> 04:16.518
uh, could be improved. I think there is definitely much room
04:17.399 --> 04:22.040
and I would like to see improvement in that area. Um, and, uh,
NOTE Q: Is there a data inspector for a Julia REPL available that you can use in Emacs?
04:22.940 --> 04:28.322
so we have data inspector for Julia REPL.
04:32.043 --> 04:34.784
I don't think so. I don't, is there any data inspector
04:34.804 --> 04:39.826
in for, for the Julia REPL that we can use in Emacs?
04:43.223 --> 00:04:43.489
I'm not sure. I don't think so.
00:04:44.840 --> 00:04:47.839
I think the way I look at data is
00:04:47.840 --> 00:04:50.519
essentially ignoring Emacs when encoded. It's just using the
00:04:50.520 --> 00:04:54.759
REPL. And again, with Julia REPL. So I'm not aware of any
00:04:54.760 --> 00:04:57.720
specialized tool And again, maybe this is, again, a good
04:58.652 --> 05:05.595
moment to emphasize that tooling, the Julia community
04:58.652 --> 05:05.595
clusters around VS Code. And there is tools like the, pretty
05:06.315 --> 05:11.578
much all the work with VS Code, unfortunately. And while
05:12.578 --> 05:21.242
there's a very, very decent Julia mode and Julia repo mode
05:12.578 --> 05:21.242
and Julia snail, there's definitely, definitely room for
05:12.578 --> 05:21.242
improvement.
NOTE Q: Have you tried literate programming Julia (using Org babel or some other means) in Emacs?
05:24.443 --> 05:28.145
Next, we have a question about literate programming in
05:24.443 --> 05:28.145
Julia. I haven't done much of it with Org Babel or
05:29.505 --> 05:32.906
anything else. I haven't done much of it. I can say that Julia
05:35.827 --> 05:46.070
has developed a new iteration of notebooks called Pluto.
05:46.090 --> 05:48.471
Here I'm thinking about Jupyter notebooks. The Pluto
05:51.021 --> 06:02.988
notebooks for Julia try to remove a bunch of the pain points
05:51.021 --> 06:02.988
that Jupyter notebooks have, meaning you cannot easily
05:51.021 --> 06:02.988
commit them to Git or things like this.
06:06.450 --> 06:09.152
I haven't used them, but I know some people are very fond of
06:06.450 --> 06:09.152
them. And so I think that that's what some of the Julia
06:09.872 --> 06:15.195
community would use for notebooks. And I think they can
06:15.315 --> 06:19.298
interact with Emacs with no problem. And that would be a form
06:20.974 --> 06:23.035
of later programming. But if you can do it in Python, you can
06:24.015 --> 06:27.696
do it in Julia. I think there is no reason. And actually, you
06:30.617 --> 06:38.719
can take advantage of all this just-in-time or
06:30.617 --> 06:38.719
just-out-of-time compilation by keeping the same
06:30.617 --> 06:38.719
session. So I think it will be definitely a nice use case. So
06:44.681 --> 06:47.222
these are the questions that I see here. I'm going to scroll
06:48.561 --> 06:54.486
through the comments and see if there's something that I
06:48.561 --> 06:54.486
should say about comments. I'm excited people want to learn
06:56.228 --> 06:57.669
Julia. I have to say that if I want to do GPU computing
06:58.990 --> 07:06.757
nowadays, I find it much easier to do it with Julia than with
06:58.990 --> 07:06.757
CUDA. So I encourage people to look into that. And I do,
07:11.758 --> 07:26.807
again, I would like to share what makes me excited about
07:11.758 --> 07:26.807
Emacs, about this being open, being collaborative, being
07:11.758 --> 07:26.807
respectable with documentation is something that I find in
07:11.758 --> 07:26.807
Julia. So I think people that are excited about the same
07:27.367 --> 07:35.192
features will find a little bit of joy in working with Julia.
07:38.214 --> 07:39.675
I think I addressed what I have here. I don't know if there's
07:40.189 --> 07:43.532
anything else that I should add.
07:51.718 --> 07:54.000
It took me a minute to unmute there.
00:07:54.040 --> 00:07:58.399
No, I think that was awesome. And thank you so much.
00:07:58.400 --> 00:08:00.399
I guess I thought it would
00:08:00.400 --> 00:08:06.559
collapse that shared area on BBB, my mistake, on the stream,
00:08:06.560 --> 00:08:12.399
or I would have left it open. But in any case, no, I thought
00:08:12.400 --> 00:08:15.079
that was great. You did a great job of responding to all the
00:08:15.080 --> 00:08:17.879
questions and comments. And thank you again so much for your
00:08:17.880 --> 00:08:20.920
talk and getting us all excited to learn Julia. Thank you.
08:24.094 --> 08:25.275
Enjoy EmacsConf. And again, thanks so much for attending,
08:25.335 --> 08:30.220
for being EmacsConf. Thank you.
|