summaryrefslogblamecommitdiffstats
path: root/2024/captions/emacsconf-2024-pgmacs--pgmacs-browsing-and-editing-postgresql-databases-from-emacs--eric-marsden--answers.vtt
blob: c361ae621b499cbc051f449f43113bd726594807 (plain) (tree)
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
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873








































































































































































































































































































































































































































































































































































































































































































































































































































































































                                                                                                                                                                            
WEBVTT

00:00:00.000 --> 00:00:10.839
And I believe we are live. Hi, Eric, how are you doing? Very

00:00:10.840 --> 00:00:15.599
well, thanks. It's a pleasure to have you as one of our

00:00:15.600 --> 00:00:19.639
speakers but it's also very nice to see you present about

00:00:19.640 --> 00:00:24.239
pgmacs because I found your talk to be very didactic and very

00:00:24.240 --> 00:00:26.479
visual. So thank you for taking the time to do a very nice

00:00:26.480 --> 00:00:31.079
presentation. I wanted to give the opportunity as I do with

00:00:31.080 --> 00:00:36.279
other speakers to maybe talk about some stuff that you could

00:00:36.280 --> 00:00:39.279
not include into the talk because of the format. So is there

00:00:39.280 --> 00:00:41.319
anything you'd like to share with the viewers that you

00:00:41.320 --> 00:00:45.439
weren't able to include?

00:00:45.440 --> 00:00:50.719
Oh, I think I gave most of the most of the relevant

00:00:50.720 --> 00:00:54.759
information. This is a fairly young application. I've been

00:00:54.760 --> 00:00:58.159
developing this since roughly the beginning of the year. So

00:00:58.160 --> 00:01:02.879
there are probably some rough edges that people will run

00:01:02.880 --> 00:01:07.479
into if they use Postgres differently from what I do. Or they

00:01:07.480 --> 00:01:10.919
hear maybe conflicts with some other Emacs packages that

00:01:10.920 --> 00:01:14.959
people use that I don't use. So I would really welcome people

00:01:14.960 --> 00:01:19.359
trying it out and sending out bug reports if they do

00:01:19.360 --> 00:01:23.479
encounter some. Yeah, I mean, it's usually... Go on,

00:01:23.480 --> 00:01:29.079
please. Yeah, that would certainly help to make sure it's

00:01:29.080 --> 00:01:31.599
nice and robust. And of course, if you're letting this loose

00:01:31.600 --> 00:01:35.959
on some production database that you might have, you want

00:01:35.960 --> 00:01:41.239
this to be quite robust, obviously. Yeah, indeed. Because

00:01:41.240 --> 00:01:43.879
usually, you know, when you start publishing packages like

00:01:43.880 --> 00:01:46.599
this, that's when you realize that it has bad interaction

00:01:46.600 --> 00:01:49.759
with other modes in the Emacs of other persons. But

00:01:49.760 --> 00:01:52.039
especially when you're dealing with databases, you also

00:01:52.040 --> 00:01:54.639
realize that the domain space of what you're trying to do

00:01:54.640 --> 00:01:58.999
with your mode also is hugely dependent on what people have

00:01:59.000 --> 00:02:03.839
in their database, which schema they have. So, indeed, if

00:02:03.840 --> 00:02:05.839
you have been interested, and I think plenty of people have

00:02:05.840 --> 00:02:09.039
been interested by what you've presented, part of the

00:02:09.040 --> 00:02:11.679
reason a software becomes great is that you've got plenty of

00:02:11.680 --> 00:02:14.759
people making bug reports and making sure that all the

00:02:14.760 --> 00:02:18.799
faults have been ironed out. So, you know what your task is. I

00:02:18.800 --> 00:02:21.319
will also ask you, particularly right now, people

00:02:21.320 --> 00:02:24.519
currently viewing, to add your questions on the pad as

00:02:24.520 --> 00:02:27.639
usual, because you've had plenty of nice reactions, but I'm

00:02:27.640 --> 00:02:30.799
sure you have plenty of questions as well. So Eric, what I'll

00:02:30.800 --> 00:02:33.759
be doing, I'll be reading you the questions so that it's a

00:02:33.760 --> 00:02:37.439
little more didactic. Starting with the first one. This is

NOTE Q: Do you know if PGmacs works with TRAMP?

00:02:37.440 --> 00:02:41.079
brilliant, thank you. Do you know if pgmacs works with TRAMP?

00:02:41.080 --> 00:02:44.119
I often use TRAMP multi-hop to access databases both

00:02:44.120 --> 00:02:46.959
remotely when accessing via bastion server and locally

00:02:46.960 --> 00:02:49.639
when using OCI containers. I believe you've already

00:02:49.640 --> 00:02:53.079
answered but if you could just perhaps read your answer as

00:02:53.080 --> 00:02:58.799
well for everyone to benefit from it. Yep, sure, that's my

00:02:58.800 --> 00:03:02.319
comment indeed. So I haven't currently implemented any

00:03:02.320 --> 00:03:07.559
TRAMP support. I'm not sure that TRAMP is really useful for

00:03:07.560 --> 00:03:11.439
this type of situation, because as I understand it, TRAMP is

00:03:11.440 --> 00:03:17.159
establishing SSH connections itself to remote servers.

00:03:17.160 --> 00:03:22.519
pgmacs is doing the same thing, so it doesn't currently have

00:03:22.520 --> 00:03:27.399
any support for hooking in with the TRAMP support. Right.

00:03:27.400 --> 00:03:31.439
Pardon me if I missed the presentation. Oh, go on, please. I

00:03:31.440 --> 00:03:34.359
guess you could set up an SSH tunnel. It does work with an SSH

00:03:34.360 --> 00:03:39.919
tunnel, obviously, but there's no support for hooking into

00:03:39.920 --> 00:03:43.799
an SSH tunnel that TRAMP might be able to create. I'm not sure

00:03:43.800 --> 00:03:46.959
TRAMP actually uses SSH tunnels rather than direct

00:03:46.960 --> 00:03:51.439
commands, but anyway. Yeah, I think that might be useful.

00:03:51.440 --> 00:03:54.759
Yeah, I don't know either. I don't have the answer whether

00:03:54.760 --> 00:03:59.039
TRAMP actually can create tunnels like this. I'm usually

00:03:59.040 --> 00:04:02.039
used to TRAMP connecting to an endpoint, be it a directory or

00:04:02.040 --> 00:04:06.239
a file, and the tunnel is just you accessing the file. But

00:04:06.240 --> 00:04:08.959
usually, if you're trying to access a remote Postgres

00:04:08.960 --> 00:04:12.039
database, you would probably manage the port forwarding in

00:04:12.040 --> 00:04:15.199
a separate terminal just to be able to make sure that

00:04:15.200 --> 00:04:17.759
everything maps correctly to your machine, and then you

00:04:17.760 --> 00:04:21.959
would launch pgmacs with the forward port information.

00:04:21.960 --> 00:04:25.519
That's, I assume, how you would do it anyway. But yeah, I

00:04:25.520 --> 00:04:29.119
mean, if you could specify what you mean by TRAMP support and

00:04:29.120 --> 00:04:31.839
if you have something specific in mind, I'm talking to the

00:04:31.840 --> 00:04:35.119
questioner, feel free to specify and we'll see if you can

00:04:35.120 --> 00:04:38.239
answer it. But in the meantime, moving to the next question.

NOTE Q: How did you come up with this brilliant idea?

00:04:38.240 --> 00:04:41.999
Great work, I'm impressed. How did you come up with this

00:04:42.000 --> 00:04:49.079
brilliant idea, I assume, to create pgmacs? Well, thanks for

00:04:49.080 --> 00:04:52.839
the compliment. It's a lot of fun developing something

00:04:52.840 --> 00:04:57.799
which is, as I said, such a small amount of code and which

00:04:57.800 --> 00:05:02.359
provides quite a bit of useful functionality. In

00:05:02.360 --> 00:05:06.839
particular, if you compare it with existing Terminal mode

00:05:06.840 --> 00:05:12.799
applications for manipulating Postgres data, they are

00:05:12.800 --> 00:05:19.279
not as extensible as Emacs is naturally. So I actually got

00:05:19.280 --> 00:05:23.439
the idea for developing this when I first tested out the

00:05:23.440 --> 00:05:27.439
SQLite mode, which is available in Emacs 29.1.

00:05:27.440 --> 00:05:31.879
And I thought, well, that's really quite impressive. And it

00:05:31.880 --> 00:05:37.359
allows you to delete rows and insert content and so on. And I

00:05:37.360 --> 00:05:42.359
was thinking, yeah, Emacs is a, is a useful environment to do

00:05:42.360 --> 00:05:50.079
that. And since several years ago, when I was doing my PhD, so

00:05:50.080 --> 00:05:53.999
to avoid doing my PhD, I was developing Emacs, I was

00:05:54.000 --> 00:05:58.399
developing stuff in Emacs Lisp and one of the libraries I

00:05:58.400 --> 00:06:02.959
developed was an interface to Postgres over the network. So

00:06:02.960 --> 00:06:08.039
that's the library called pg.el, which is used by pgmacs to

00:06:08.040 --> 00:06:14.239
access Postgres and to do all the parsing of data which

00:06:14.240 --> 00:06:19.279
arrives in Postgres formats into the Emacs Lisp into the

00:06:19.280 --> 00:06:22.999
Emacs corresponding versions. So, for example, integers

00:06:23.000 --> 00:06:25.399
are passed as Emacs integers, floating point numbers as

00:06:25.400 --> 00:06:30.839
floating point numbers, and so on. Right, yeah. I mean, it's

00:06:30.840 --> 00:06:34.439
pretty needed, obviously, when you have such a tooling like

00:06:34.440 --> 00:06:37.359
this, to make sure that the type conversion works properly,

00:06:37.360 --> 00:06:39.879
because the types that you have in Postgres do not

00:06:39.880 --> 00:06:43.879
necessarily map over to what we have in Emacs. Like, I'm

00:06:43.880 --> 00:06:49.239
interested, how would you handle g's and b columns in pgmacs?

00:06:49.240 --> 00:06:55.039
JSON is mapped to an edis dict, a dictionary.

00:06:55.040 --> 00:07:03.759
It depends on the top level object type for your JSON column.

00:07:03.760 --> 00:07:07.599
If it's an array, it's mapped to an Emacs Lisp array. If it's a

00:07:07.600 --> 00:07:12.639
dict, which is most common, it's mapped to an Emacs Lisp

00:07:12.640 --> 00:07:17.679
dictionary. All right, well it makes perfect sense. So I can

00:07:17.680 --> 00:07:21.839
break in with a question. Thanks, I just helped myself to the

00:07:21.840 --> 00:07:26.159
BBB privilege of kind of running around backstage, being a

00:07:26.160 --> 00:07:31.679
helper backstage. So thanks for your awesome talk, Eric. I

00:07:31.680 --> 00:07:36.719
super appreciated it. You know, I noticed that you that

00:07:36.720 --> 00:07:43.159
you're on a slightly older version of Emacs that I deal with

00:07:43.160 --> 00:07:49.519
in helping with producing the Windows binaries I run into

00:07:49.520 --> 00:07:53.839
and with some other stuff I do. I'm dealing with that

00:07:53.840 --> 00:07:56.919
friction of sometimes I've got some work of my own that

00:07:56.920 --> 00:07:59.719
applies against a specific version of Emacs and it's a bunch

00:07:59.720 --> 00:08:02.519
of work to think about moving it forward. Just curious if you

00:08:02.520 --> 00:08:06.479
started thinking about that or if you routine, if that's a

00:08:06.480 --> 00:08:09.919
routine that you haven't done or there's something maybe

00:08:09.920 --> 00:08:14.599
specifically going on with, you know, with trunk

00:08:14.600 --> 00:08:20.599
development that looks intimidating to deal with. Thanks

00:08:20.600 --> 00:08:24.959
for the comment. I'm not sure I'm using a really old version

00:08:24.960 --> 00:08:29.239
for Windows. I don't really develop often on Windows, but I I

00:08:29.240 --> 00:08:32.639
occasionally check that it works, and I took a screenshot

00:08:32.640 --> 00:08:34.799
that I included in the slides here, but I think I'm using

00:08:34.800 --> 00:08:40.559
29.4, the current version on Windows. I thought I saw 29.1,

00:08:40.560 --> 00:08:48.839
so that's probably my, I probably missed it when it went by.

00:08:48.840 --> 00:08:54.879
My bad. No, no, I use it via the choco package updater so that

00:08:54.880 --> 00:08:58.479
updates the Emacs version quite easily on Windows. So

00:08:58.480 --> 00:09:03.079
thanks for your work on maintaining Windows binaries. I

00:09:03.080 --> 00:09:07.519
realize that was- I sit downstream at the end of a lot of other

00:09:07.520 --> 00:09:11.399
people's hard work and then just focus on trying to QA well

00:09:11.400 --> 00:09:15.559
and help catch problems early. It's really fun. But of

00:09:15.560 --> 00:09:16.399
course, my pleasure.

00:09:16.400 --> 00:09:21.799
Coming back to the previous question, so the the

00:09:21.800 --> 00:09:26.919
questionnaire actually provided a little more context. So

NOTE TRAMP continued

00:09:26.920 --> 00:09:30.599
with docker.el, kubel, etc, it's often possible to, for

00:09:30.600 --> 00:09:33.919
example, select a container pod or whatever that is hosted

00:09:33.920 --> 00:09:36.639
on the machine you've connected to via TRAMP, such as

00:09:36.640 --> 00:09:41.799
Podman, colon image colon path and trigger a terminal shell

00:09:41.800 --> 00:09:44.959
as well as pull forward on other similar things. It'd be nice

00:09:44.960 --> 00:09:47.679
to be able to use this tool in a similar way since it would open

00:09:47.680 --> 00:09:49.919
up the ability to use it with complex connection

00:09:49.920 --> 00:09:53.679
configuration. Doing SSH tunnel manually is of course

00:09:53.680 --> 00:09:56.879
totally fine in practice and if it is actually the case

00:09:56.880 --> 00:10:01.319
personally when I need to remote into a kubernetes machine I

00:10:01.320 --> 00:10:05.239
use POSIX script that I use on most of my machines but I don't

00:10:05.240 --> 00:10:08.599
do it inside Emacs. But yeah, if such a thing is possible via

00:10:08.600 --> 00:10:11.039
TRAMP, it definitely feels like it would be possible to do

00:10:11.040 --> 00:10:14.919
something similar in pgmacs. So perhaps that's a path of

00:10:14.920 --> 00:10:19.559
investigation for you that has opened up. Yeah, thanks for

00:10:19.560 --> 00:10:22.759
these comments. I'll look into that indeed if people have

00:10:22.760 --> 00:10:26.159
some shortcuts registered in TRAMP. So not for a terminal,

00:10:26.160 --> 00:10:29.599
because pgmacs won't work through a terminal, but through a

00:10:29.600 --> 00:10:33.439
port forward, then that would be convenient. I'll see how

00:10:33.440 --> 00:10:38.639
easy that is to set up. Yeah, I'm pretty sure the way it works

00:10:38.640 --> 00:10:41.279
is that it starts some processes in the background in Emacs

00:10:41.280 --> 00:10:45.359
just to either maintain the port forward or to maybe remap

00:10:45.360 --> 00:10:49.239
some kubecon things or whatever. So with pgmacs,

00:10:49.240 --> 00:10:51.879
considering complex pipelines to get to the end

00:10:51.880 --> 00:10:54.679
destination, it feels like it would be possible to do

00:10:54.680 --> 00:10:57.439
something. But perhaps it's not the responsibility of

00:10:57.440 --> 00:11:00.199
pgmacs, perhaps it's the responsibility of another,

00:11:00.200 --> 00:11:03.639
perhaps something that would target TRAMP more so than

00:11:03.640 --> 00:11:08.399
pgmacs. But it's nice to see again how the beauty of Emacs

00:11:08.400 --> 00:11:12.119
is that everything is Elisp at the end, and the way they

00:11:12.120 --> 00:11:16.079
interact, you might want to question yourself whether this

00:11:16.080 --> 00:11:18.919
belongs more to pgmacs or more to TRAMP, but at the end of the

00:11:18.920 --> 00:11:22.439
day, both applications will be able to benefit from the

00:11:22.440 --> 00:11:24.759
functions of the other. So that's the beauty of the

00:11:24.760 --> 00:11:29.159
philosophy right here. I do see... Absolutely, I agree.

00:11:29.160 --> 00:11:32.279
Sorry, before we move to different questions, an

00:11:32.280 --> 00:11:36.759
additional point. I should point out that to warn people

00:11:36.760 --> 00:11:41.159
that probably running over an SSH tunnel is going to be a bit

00:11:41.160 --> 00:11:46.839
slow. I mostly use it on my own machine via a local Unix

00:11:46.840 --> 00:11:50.439
connection. And for some reason that I haven't understood,

00:11:50.440 --> 00:11:55.119
pgmacs is quite a bit slower when it's even connecting to the

00:11:55.120 --> 00:12:00.359
same database on the local machine, but via Emacs' network

00:12:00.360 --> 00:12:05.039
support instead of via the Unix socket support. There is

00:12:05.040 --> 00:12:11.639
like a factor 10 difference in throughput and in latency. I

00:12:11.640 --> 00:12:15.839
don't really understand why currently, because it's using

00:12:15.840 --> 00:12:21.919
exactly the same Emacs Lisp level primitives. And when you

00:12:21.920 --> 00:12:24.799
do this using other libraries like libpq, which is the

00:12:24.800 --> 00:12:30.639
Postgres standard official library for connecting to

00:12:30.640 --> 00:12:34.319
Postgres, there's not such a performance difference. So

00:12:34.320 --> 00:12:39.759
there's probably something that is not working perfectly

00:12:39.760 --> 00:12:43.879
in the Emacs network support. I'll have to see whether I can

00:12:43.880 --> 00:12:48.679
investigate how to improve that performance. Yeah, I'm

00:12:48.680 --> 00:12:52.999
going to say it sounds like a great bug to have because it

00:12:53.000 --> 00:12:57.319
feels like it will allow you to dig deeper into Emacs to

00:12:57.320 --> 00:12:59.679
understand what is going on here. Because as you said,

00:12:59.680 --> 00:13:01.519
normally it's supposed to work exactly the same,

00:13:01.520 --> 00:13:04.319
especially if it's still in your local machine, but it

00:13:04.320 --> 00:13:07.919
doesn't. Personally, that's the kind of bug that I really

00:13:07.920 --> 00:13:11.199
like and that I'd like to spend more time investigating. So

00:13:11.200 --> 00:13:14.759
perhaps you might think otherwise, but I wish you luck on the

00:13:14.760 --> 00:13:18.599
debugging with this particular matter. All right, moving

00:13:18.600 --> 00:13:21.519
to the last question that we have and then we'll probably go

00:13:21.520 --> 00:13:22.965
on a little bit of a break.

NOTE Q: Is sqlite-mode also capable of all of this functionality (table relations, etc)? If not, will it be possible to abstract out this functionality from pgmacs somehow?

00:13:22.966 --> 00:13:25.399
Question. Is SQLite mode also

00:13:25.400 --> 00:13:28.439
capable of all of this functionality, table relations,

00:13:28.440 --> 00:13:31.559
etc.? If not, would it be possible to abstract out this

00:13:31.560 --> 00:13:33.279
functionality from pgmacs somehow?

00:13:33.280 --> 00:13:41.319
So I'm not very familiar with SQLite because I don't really

00:13:41.320 --> 00:13:46.439
use it very much myself. I'm not sure I can answer that

00:13:46.440 --> 00:13:53.079
question. Sorry about that. I think it is probably a bit more

00:13:53.080 --> 00:13:56.639
basic because SQLite itself is quite a bit more basic in

00:13:56.640 --> 00:14:01.639
terms of the types of indexes it's able to support and the

00:14:01.640 --> 00:14:09.199
types of constraints it's able to support. Is it relevant to

00:14:09.200 --> 00:14:13.799
create an abstract API for connecting to databases? I think

00:14:13.800 --> 00:14:19.639
there is already actually a library that abstracts out from

00:14:19.640 --> 00:14:25.439
SQLite and Postgres. Postgres, when you connect to it via a

00:14:25.440 --> 00:14:29.159
PSQL subsystem,

00:14:29.160 --> 00:14:38.439
it might be worthwhile doing that, but there are often a few

00:14:38.440 --> 00:14:42.279
minor differences in SQL syntax and so on between

00:14:42.280 --> 00:14:45.879
databases. So it might be difficult to have something that

00:14:45.880 --> 00:14:53.159
really works with generic queries in an effective way. All

00:14:53.160 --> 00:14:58.239
these SQL dialects are a little bit different,

00:14:58.240 --> 00:15:02.319
unfortunately. So there was another question about I was

00:15:02.320 --> 00:15:06.510
just going to read out the next question.

NOTE Q: Would it be possible to move it into Emacs tree? Are the maintainers interested in it?

00:15:06.511 --> 00:15:07.519
So have you thought

00:15:07.520 --> 00:15:12.559
about integrating your work into the Emacs tree? Do you know

00:15:12.560 --> 00:15:17.599
if people are interested? This was a question from the past.

00:15:17.600 --> 00:15:24.639
Yeah, I think it's probably a bit young to do so, so far.

00:15:24.640 --> 00:15:30.119
I'm updating it quite regularly. Maybe once it's more

00:15:30.120 --> 00:15:35.399
stabilized, I wouldn't necessarily object to this. I have

00:15:35.400 --> 00:15:38.559
some sort of philosophical objections to giving away my

00:15:38.560 --> 00:15:42.519
copyright, so I'm not sure that will actually be possible.

00:15:42.520 --> 00:15:48.079
Oh, that'd be interesting. I'd love to get you on maybe a

00:15:48.080 --> 00:15:51.639
panel talk about that sometime. Something I'd think about.

00:15:51.640 --> 00:15:55.999
Well, from a very simple point of view, I think that the

00:15:56.000 --> 00:16:01.159
copyright and the system works well with the existing

00:16:01.160 --> 00:16:05.319
license and without a license transfer, so I don't feel that

00:16:05.320 --> 00:16:07.766
the, sorry, without a copyright transfer,

00:16:07.767 --> 00:16:14.679
I don't feel that the copyright transfer is really a necessary step for

00:16:14.680 --> 00:16:21.639
taking things away from maintainers. It feels like asking

00:16:21.640 --> 00:16:26.559
the maintainers to give up on some of their copyright...

00:16:26.560 --> 00:16:29.999
Indeed. Yeah, I see where that's a little beyond our scope,

00:16:30.000 --> 00:16:33.519
but it's a fascinating topic and I appreciate your sharing

00:16:33.520 --> 00:16:36.959
your views there. I mean, that sounds like a whole topic of

00:16:36.960 --> 00:16:41.599
its own, frankly.

00:16:41.600 --> 00:16:47.039
Yeah. Corwin, do you want to fill the last question? Sure. So

00:16:47.040 --> 00:16:52.039
the question was, I almost missed this one, so glad I didn't.

00:16:52.040 --> 00:16:53.849
This may have been answered already.

NOTE Q: What do you use for the in-buffer tables? Vtable?

00:16:53.850 --> 00:16:55.159
What do you use for

00:16:55.160 --> 00:17:00.039
in-buffer tables? Do you use vtable? Yep. Thanks for the

00:17:00.040 --> 00:17:04.599
question. It is indeed vtable. However, it's not really

00:17:04.600 --> 00:17:10.919
vtable. It's a fork that I made, which is called pgmix table.

00:17:10.920 --> 00:17:17.199
because Vtable doesn't have exactly the right

00:17:17.200 --> 00:17:22.119
functionality in particular for recoloring rows when you

00:17:22.120 --> 00:17:28.239
add a row. So I've currently forked this. I'm thinking about

00:17:28.240 --> 00:17:36.359
giving those back as patches to Vtable, plausibly.

00:17:36.360 --> 00:17:40.719
I know that there is some ongoing work also on vTable in the

00:17:40.720 --> 00:17:45.839
core. So I'll have to look at what is plausible to feed back

00:17:45.840 --> 00:17:46.719
into the main version.

00:17:46.720 --> 00:17:55.199
All right, great. I think we are nearing the end of the Q&A. We

00:17:55.200 --> 00:17:59.079
are due to move to the next talk in about three minutes now. I

00:17:59.080 --> 00:18:02.719
can fill 30 seconds or a minute of that with I guess one more

00:18:02.720 --> 00:18:05.079
maybe back and forth and I'll try to be quicker this time.

00:18:05.080 --> 00:18:08.879
First of all, thanks for your kind remarks. But my question

00:18:08.880 --> 00:18:11.839
wasn't really about Windows so much, it was just how I'm

00:18:11.840 --> 00:18:16.639
relating... So have you, let me put it more simply, have you

NOTE Integrating with Emacs 30?

00:18:16.640 --> 00:18:20.639
started looking at integrating with Emacs 30 or with the

00:18:20.640 --> 00:18:24.679
master branch at all? Do you have any sense of how much work

00:18:24.680 --> 00:18:27.079
it's going to be for you to carry things forward there? I've

00:18:27.080 --> 00:18:31.039
tested it with the pre-release, yes. I mean, just a very

00:18:31.040 --> 00:18:35.079
basic testing and everything works perfectly. There's

00:18:35.080 --> 00:18:39.799
really no... There was no difference that I have noticed

00:18:39.800 --> 00:18:46.279
between 29.4 and the 30 pre-release on the aspects that I use

00:18:46.280 --> 00:18:48.959
at least in Emacs. Neato.

00:18:48.960 --> 00:18:56.439
That was it, Leo. Thanks for letting me back in for one more

00:18:56.440 --> 00:18:58.799
bite at the apple there. And I appreciate everybody tuning

00:18:58.800 --> 00:19:03.479
in and participating in the Q&A and this awesome talk.

00:19:03.480 --> 00:19:06.879
Thanks for your questions. That was great. Yeah, and thank

00:19:06.880 --> 00:19:10.319
you for answering them and for the presentation as well. So

00:19:10.320 --> 00:19:14.199
we'll be moving in about two minutes to the next talk, which

00:19:14.200 --> 00:19:20.159
is pre-recorded as well. Well, we didn't really give you the

00:19:20.160 --> 00:19:29.399
chance, Eric, to have the last word. So do you have any last

00:19:29.400 --> 00:19:29.799
word?

00:19:29.800 --> 00:19:34.479
please try it out, try out pgmacs and send some feedback

00:19:34.480 --> 00:19:39.279
that'll help improve it over time. Sure, great. Well, thank

00:19:39.280 --> 00:19:41.559
you so much, Eric, for taking the time to come to the

00:19:41.560 --> 00:19:45.999
conference, and we'll see you soon. Thank you. Bye,

00:19:46.000 --> 00:19:50.279
everyone. Bye. And we'll be live with the next talk in about 1

00:19:50.280 --> 00:19:53.119
minute 30. So we'll take a little bit of a breather, go make

00:19:53.120 --> 00:19:56.599
some coffee, go take a bio break. We'll be back soon. See you

00:19:56.600 --> 00:20:01.880
in a bit.