summaryrefslogtreecommitdiffstats
path: root/2024/captions/emacsconf-2024-casual--reimagining-the-emacs-user-experience-with-casual-suite--charles-choi--answers.vtt
blob: 7c6db8c8e9677051c758b6ebcf4a853c7e19ca70 (plain) (blame)
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
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
WEBVTT

NOTE Opening

00:00:00.000 --> 00:00:05.239
Leo? I'm doing well as well and I'm so happy to have seen your

00:00:05.240 --> 00:00:10.719
talk because the interaction with Emacs is always

00:00:10.720 --> 00:00:13.719
something that I find very interesting, and stuff like

00:00:13.720 --> 00:00:18.839
Transient, stuff like Hydra before, I think they really

00:00:18.840 --> 00:00:22.119
improve the user experience of users, and I'm really glad

00:00:22.120 --> 00:00:24.479
that I've seen you talk. Perhaps just starting with the

00:00:24.480 --> 00:00:27.639
first question, do you have anything else that you'd like to

00:00:27.640 --> 00:00:30.719
add on your talk? Because we are pretty stringent with the

00:00:30.720 --> 00:00:33.199
amount of time that we give for talks, but is there anything

00:00:33.200 --> 00:00:35.639
that you would have liked to mention to people that you

00:00:35.640 --> 00:00:42.719
weren't able to fit into the talk? I think probably one of the

00:00:42.720 --> 00:00:46.599
design considerations I've done is that many of the

00:00:46.600 --> 00:00:49.359
commands that I've exposed through my casual interfaces

00:00:49.360 --> 00:00:56.399
have been in Emacs. They've been in there forever, but very

00:00:56.400 --> 00:01:00.439
few people uh, myself included really know that they're

00:01:00.440 --> 00:01:05.999
there, uh, because they're just not discoverable through,

00:01:06.000 --> 00:01:09.559
uh, basically the existing mechanisms, you know, prior to

00:01:09.560 --> 00:01:13.479
transient and which key to, to even know that those, those

00:01:13.480 --> 00:01:19.399
functions are there. Yeah. So I think I'm going to start

00:01:19.400 --> 00:01:21.519
asking you questions whilst people start writing them in a

00:01:21.520 --> 00:01:25.759
pad. But yeah, I also think that discoverability is a very

00:01:25.760 --> 00:01:29.559
huge point that having stuff like the stuff that you've

00:01:29.560 --> 00:01:32.679
showed today actually allows. One example that I'd like to

00:01:32.680 --> 00:01:35.759
give that many people tend to forget, and you've already

00:01:35.760 --> 00:01:39.559
mentioned it in your presentation, is that I've learned so

00:01:39.560 --> 00:01:43.479
much about using git in general thanks to Magit, for the

00:01:43.480 --> 00:01:46.719
reason that it shows you so many options that you might not be

00:01:46.720 --> 00:01:50.799
aware of. For instance, I like to really think about when

00:01:50.800 --> 00:01:54.519
you think about logging in git, Magit allows you to

00:01:54.520 --> 00:01:58.119
discover so many of the finer options, like I only want to

00:01:58.120 --> 00:02:01.519
see the first commit since the merge, or I only want to

00:02:01.520 --> 00:02:05.999
consider this subsection of commits going from master or

00:02:06.000 --> 00:02:08.999
main to the point of your branch. So many things like this

00:02:09.000 --> 00:02:11.759
that you get to discover thanks to Transient. So do you have

00:02:11.760 --> 00:02:16.879
any similar experience on your end? Oh yeah, far too

00:02:16.880 --> 00:02:22.359
many, particularly with EditKit,

00:02:22.360 --> 00:02:28.279
having access to these commands,

00:02:28.280 --> 00:02:31.771
particularly with different granularity on

00:02:31.772 --> 00:02:34.773
S-expressions, sentences, words...

00:02:34.774 --> 00:02:37.395
Probably the most surprising thing I found

00:02:37.396 --> 00:02:43.021
was just how how compelling the

00:02:43.022 --> 00:02:49.054
S-expression would be as a unit of text for working with.

00:02:49.055 --> 00:02:53.988
I found that in most contexts, or in many places,

00:02:53.989 --> 00:03:02.719
it did what I wanted. I found that to be very surprising.

00:03:02.720 --> 00:03:06.159
So unless you've got anything else to add, I think we can just

00:03:06.160 --> 00:03:10.639
jump into questions. Okay, certainly. I'll be reading them

00:03:10.640 --> 00:03:13.599
for you so that it's easier for you. So the first question is,

NOTE Q: I wonder whether casual can only be used with the packages you

00:03:13.600 --> 00:03:17.599
I wonder whether casual can only be used with the packages

00:03:17.600 --> 00:03:19.599
you mentioned or whether it can be used with whatever

00:03:19.600 --> 00:03:25.399
packages you like. I think it's really the latter. I'm not

00:03:25.400 --> 00:03:29.879
quite sure what the... What the question was really

00:03:29.880 --> 00:03:35.039
pointing at, you know, is the question asking for why I chose

00:03:35.040 --> 00:03:41.679
the packages or the different modes that I did? Or is it, are

00:03:41.680 --> 00:03:45.519
they looking at it from a developer perspective of, can we

00:03:45.520 --> 00:03:50.399
integrate casual with other packages? I mean, since we've

00:03:50.400 --> 00:03:52.839
got a little bit of time ahead of us, feel free to answer both

00:03:52.840 --> 00:03:59.279
questions. Um, I think the answer is, uh. Well, for the 1st,

00:03:59.280 --> 00:04:05.599
1, I've, I've generally tried to stick with using. The modes

00:04:05.600 --> 00:04:11.039
that are already packaged in, um, and so there was a. A big

00:04:11.040 --> 00:04:16.759
refactoring of it where. Initially, I made separate repos

00:04:16.760 --> 00:04:20.879
for the different modes that I supported. And then through a

00:04:20.880 --> 00:04:24.959
discussion, which I won't go into here, that got changed

00:04:24.960 --> 00:04:30.239
where I consolidated all of the different transient menus

00:04:30.240 --> 00:04:35.039
for modes that are built in for behavior that's built into

00:04:35.040 --> 00:04:39.199
the Emacs. I put that into a single package called casual.

00:04:39.200 --> 00:04:44.799
And then integrations with other third party packages that

00:04:44.800 --> 00:04:49.879
are not built in were given the same standalone repo here. In

00:04:49.880 --> 00:04:55.719
terms of folks wanting to integrate that, it's the beauty of

00:04:55.720 --> 00:05:01.159
open source. They can get the repo and uh, and basically

00:05:01.160 --> 00:05:05.199
study that the code base, uh, actually, if they even install

00:05:05.200 --> 00:05:08.599
it through, uh, you know, the package manager in this case,

00:05:08.600 --> 00:05:12.679
uh, coming from the Melbourne distribution, um, they can

00:05:12.680 --> 00:05:17.919
inspect that code and, and, um, make modifications or even.

00:05:17.920 --> 00:05:21.519
uh, you know, integrate that with their other packages and,

00:05:21.520 --> 00:05:25.279
uh, do that to their heart's content. Um, I think one of the

00:05:25.280 --> 00:05:29.639
things that I need to, or at least, uh, you know, that I, I, I

00:05:29.640 --> 00:05:32.519
planned on sort of elaborating further on in the

00:05:32.520 --> 00:05:36.399
documentation is, is that transient already has built in

00:05:36.400 --> 00:05:41.279
mechanisms for modifying an existing transient. So you can

00:05:41.280 --> 00:05:47.279
add commands or, uh, re redefine the bindings. And so. That

00:05:47.280 --> 00:05:51.959
mechanism is available for users if they're not happy with

00:05:51.960 --> 00:05:57.159
those bindings or they want to add their own commands to a

00:05:57.160 --> 00:06:01.959
menu. Yeah, and people are... I'm personally familiar with

00:06:01.960 --> 00:06:05.119
this, again, with Magit, because sometimes, even though

00:06:05.120 --> 00:06:07.479
you have a lot of discoverability for functions that you may

00:06:07.480 --> 00:06:10.359
not know, sometimes you also happen to realize that

00:06:10.360 --> 00:06:13.999
something is missing in the list of available options. I'm

00:06:14.000 --> 00:06:16.919
not sure if Casual actually supports something similar to

00:06:16.920 --> 00:06:21.559
Magit, which is levels of options being displayed.

00:06:21.560 --> 00:06:24.039
Actually, I'm not sure if it's transient native or if it's

00:06:24.040 --> 00:06:27.439
just something that Magit adds over this. No, transient

00:06:27.440 --> 00:06:30.599
supports levels. I've decided

00:06:30.600 --> 00:06:36.799
in large part, I've tried to avoid that just to avoid the

00:06:36.800 --> 00:06:43.119
added complexity of trying to define those levels. Yeah, I

00:06:43.120 --> 00:06:47.479
was going to say that perhaps it doesn't gel very well with

00:06:47.480 --> 00:06:49.839
the notion of casualness that you seem to be introducing the

00:06:49.840 --> 00:06:52.439
package. On one end, you've got something that is supposed

00:06:52.440 --> 00:06:56.639
to be very casual, very easy to use, and on the other end, you

00:06:56.640 --> 00:06:59.599
add levels for stuff that is fairly advanced. So advanced

00:06:59.600 --> 00:07:05.759
versus casual, kind of makes sense that you check this over.

00:07:05.760 --> 00:07:09.359
Alright, moving to the second question which is related to

00:07:09.360 --> 00:07:10.853
the previous one.

NOTE Q: Are there any patterns emerging, such that it would seem possible to 1) systematize 2) automate(?) the mapping of mode commands to keyboard-driven menus? Possibly even have an auto casual wrapper for an uncovered mode?

00:07:10.854 --> 00:07:13.159
Are there any patterns emerging such that

00:07:13.160 --> 00:07:15.639
it would be impossible, sorry, such that it would be

00:07:15.640 --> 00:07:19.719
possible to once systematize and to automate the mapping of

00:07:19.720 --> 00:07:23.519
mode commands to keyboard-driven menus, possibly even

00:07:23.520 --> 00:07:26.559
have an auto-casual wrapper for an uncovered mode? Does it

00:07:26.560 --> 00:07:35.519
make sense to you? Yes, and I've gotten these comments from a

00:07:35.520 --> 00:07:42.799
number of different folks who really want to see some sort

00:07:42.800 --> 00:07:49.639
of design rule to, or basically, what is it? Some sort of

00:07:49.640 --> 00:07:54.679
design system to be able to generate the UI.

00:07:54.680 --> 00:08:01.399
Conceptually, I think it's doable, but on the flip side, it

00:08:01.400 --> 00:08:05.319
just requires so much coordination that it makes it really

00:08:05.320 --> 00:08:11.199
untenable. In this case, I have very strong opinions. I

00:08:11.200 --> 00:08:15.719
think we're better off trying to handcraft the user

00:08:15.720 --> 00:08:20.759
interface to get basically the best user experience. To try

00:08:20.760 --> 00:08:26.399
to emulate that with a design system, good luck, but I'm not

00:08:26.400 --> 00:08:31.519
I'm not interested in working on that. Right, yeah. I think

00:08:31.520 --> 00:08:34.119
if I try to think a little more about this, it feels like

00:08:34.120 --> 00:08:36.559
there's a notion of intention that is very important when

00:08:36.560 --> 00:08:41.479
you are designing UI and UX. And to have this intention, it

00:08:41.480 --> 00:08:45.319
feels like you cannot just base yourself of a design idea to

00:08:45.320 --> 00:08:48.799
organize the options. You cannot just work off a pattern. I

00:08:48.800 --> 00:08:53.599
think you need to have the trace of human understanding in

00:08:53.600 --> 00:08:56.679
order to have a UX that really works. And judging by the

00:08:56.680 --> 00:08:58.999
option that you've picked in the demos that you've showed

00:08:59.000 --> 00:09:04.039
today, I don't think it'd be particularly easy to organize

00:09:04.040 --> 00:09:07.959
them in a UX just casually for any mode. I think you need some

00:09:07.960 --> 00:09:14.159
human introspection to understand this, if that makes

00:09:14.160 --> 00:09:14.679
sense.

00:09:14.680 --> 00:09:17.279
Moving to the next question, which is related to something

00:09:17.280 --> 00:09:19.605
we discussed about with Magit.

NOTE Q: Does Casual have a log where you can see what commands were invoked?

00:09:19.606 --> 00:09:21.079
Does Casual have a log where

00:09:21.080 --> 00:09:23.759
you can see what commands were invoked? This is always

00:09:23.760 --> 00:09:27.479
available via M-x view-lossage or via the command-log-mode,

00:09:27.480 --> 00:09:30.993
but I'm wondering if it can do for Emacs command what

00:09:30.994 --> 00:09:34.479
magit-process-buffer does for learning Git commands. And for

00:09:34.480 --> 00:09:37.439
everyone who's currently in Emacs, whenever you're

00:09:37.440 --> 00:09:40.639
running a command in Magit, it's always printing the exact

00:09:40.640 --> 00:09:44.799
command that was run in a shell, inside this $

00:09:44.800 --> 00:09:47.399
menu. So does Casual actually provide something similar,

00:09:47.400 --> 00:09:52.599
Charles? I don't know. In general, because I'm building off

00:09:52.600 --> 00:09:55.199
of transient, it would have to be a mechanism that's

00:09:55.200 --> 00:10:01.519
available through transient. And You know, I would let

00:10:01.520 --> 00:10:06.799
Jonas speak more on that capability, because to be honest, I

00:10:06.800 --> 00:10:14.879
mean, even to my knowledge of transient is not that deep,

00:10:14.880 --> 00:10:16.839
actually.

00:10:16.840 --> 00:10:21.399
Well, it's funny that you say this because even though you

00:10:21.400 --> 00:10:23.759
say your knowledge might not be that big, you still managed

00:10:23.760 --> 00:10:27.239
to develop a whole suite of tools on top of it. So as far as

00:10:27.240 --> 00:10:29.599
people who do not know transient a whole lot, you're doing a

00:10:29.600 --> 00:10:33.159
pretty damn good job. Let me tell you that much. Thank you.

00:10:33.160 --> 00:10:37.719
Yeah, I think sort of what I bring to the table is, you know,

00:10:37.720 --> 00:10:41.919
quite a considerable career in software development on

00:10:41.920 --> 00:10:47.879
other software ecosystems. And as of late, I've spent

00:10:47.880 --> 00:10:52.439
basically the past decade working on iOS apps. Right. I

00:10:52.440 --> 00:10:55.199
think it's refreshing to be able to go back to something that

00:10:55.200 --> 00:10:56.839
looks like Emacs after iOS.

00:10:56.840 --> 00:11:03.879
Well, that's perhaps another longer conversation there.

00:11:03.880 --> 00:11:08.599
Speaking of longer conversation, we have only about 10

00:11:08.600 --> 00:11:11.599
minutes left until we need to move on to the next talk. But

00:11:11.600 --> 00:11:13.759
thank you everyone for all the questions you're asking. I'm

00:11:13.760 --> 00:11:17.239
not saying this because we finished, but it's good to see so

00:11:17.240 --> 00:11:19.919
many people writing in the chat and asking questions. It

00:11:19.920 --> 00:11:23.079
always shows that you're interested and that's always

00:11:23.080 --> 00:11:26.079
lovely to us. And you've mentioned Jonas. Obviously, we're

00:11:26.080 --> 00:11:29.359
talking about Jonas Bernoulli, i.e. Tarsius, the

00:11:29.360 --> 00:11:33.439
maintainer of transient. And what Charles just mentioned

00:11:33.440 --> 00:11:37.559
about having a transient tooling to print the lossage,

00:11:37.560 --> 00:11:43.039
basically, of which sex were run by which command, feels

00:11:43.040 --> 00:11:44.839
like this is something that would be interesting. So,

00:11:44.840 --> 00:11:50.239
perhaps, I'm not sure if Tarsius is still on the chat

00:11:50.240 --> 00:11:52.639
currently, but he was definitely around earlier today, so

00:11:52.640 --> 00:11:55.839
we'll make sure that the ID lands on his lap later on. All

00:11:55.840 --> 00:12:00.203
right, moving to the next question.

NOTE Q: Is there a setting to close menu after executing command?

00:12:00.204 --> 00:12:00.919
Is there a setting to

00:12:00.920 --> 00:12:07.479
close menu after executing a command? By default, it will.

00:12:07.480 --> 00:12:10.879
There's a slot that you can define in a transient

00:12:10.880 --> 00:12:17.199
prefix called :transient. And if you set that to true,

00:12:17.200 --> 00:12:20.639
then it will persist the menu after executing the command.

00:12:20.640 --> 00:12:26.159
But by default, it will actually dismiss the menu. This

00:12:26.160 --> 00:12:29.359
feels... Did you actually get to play with Hydra before

00:12:29.360 --> 00:12:36.279
playing with transients? To be honest, no. Yeah, I kind of

00:12:36.280 --> 00:12:41.719
slept on Hydra or at least, you know, I really wasn't all that

00:12:41.720 --> 00:12:44.639
ambitious with working with different packages until

00:12:44.640 --> 00:12:48.639
about like, a little less than 2 years ago or so.

00:12:48.640 --> 00:12:57.639
And then the other part was also, um. You know, not not really

00:12:57.640 --> 00:13:01.999
a technical. Start a comparison because I really don't want

00:13:02.000 --> 00:13:05.759
to upset folks here, but, uh. But more along the lines of just

00:13:05.760 --> 00:13:09.559
going with the notion that transient was being built in or

00:13:09.560 --> 00:13:15.279
packaged as a built in package for Emacs. I went with using

00:13:15.280 --> 00:13:20.679
that for my implementation. Cool. And I don't think there's

00:13:20.680 --> 00:13:23.199
anything controversial with what you're saying right now

00:13:23.200 --> 00:13:28.839
because, you know, we had earlier today, Euro Rechenko, the

00:13:28.840 --> 00:13:32.439
new maintainer of Augment, mentioning that he'd like to

00:13:32.440 --> 00:13:34.319
have a better integration with Transient because

00:13:34.320 --> 00:13:39.159
Transient is, it looks like it's here to stay for a long time

00:13:39.160 --> 00:13:42.879
and might even land in core at some point. So, it definitely

00:13:42.880 --> 00:13:49.519
feels comparing Hydra because for me, most of my UI needs in

00:13:49.520 --> 00:13:54.439
Emacs prior to Transient were done via Hydra because it was a

00:13:54.440 --> 00:13:57.799
very convenient tooling. For people who do not know, Hydra

00:13:57.800 --> 00:14:02.919
is written by AboAbo. who's also authored packages like

00:14:02.920 --> 00:14:08.639
Lispy, an interactive Lisp mode, also for Ivy, which you

00:14:08.640 --> 00:14:14.239
might know as the counterpart of Helm, maybe five years ago.

00:14:14.240 --> 00:14:17.959
So all those packages, they were very innovative for the

00:14:17.960 --> 00:14:21.199
time and it's cool to see that some of the ideas which were

00:14:21.200 --> 00:14:28.039
introduced by IV and Helm and all this are then taken by tools

00:14:28.040 --> 00:14:30.279
like Transient and done perhaps with a little more

00:14:30.280 --> 00:14:33.639
hindsight now that people have experienced a little more of

00:14:33.640 --> 00:14:38.359
it. Okay, we have still a little bit of time. Moving on to the

00:14:38.360 --> 00:14:40.281
next question.

NOTE Q: What modes are you working on at the moment for casual / are excited to explore?

00:14:40.282 --> 00:14:41.919
What modes are you working on at the moment

00:14:41.920 --> 00:14:44.159
for Casual or are you excited to explore?

00:14:44.160 --> 00:14:53.999
Well, so I just recently published one for calendar. And so I

00:14:54.000 --> 00:14:56.839
think the calendar interface has a lot of really

00:14:56.840 --> 00:15:00.479
interesting behavior, particularly its support for

00:15:00.480 --> 00:15:07.479
non-Gregorian events, which is, you know, for folks who'd

00:15:07.480 --> 00:15:13.079
like, in my case, looking at the lunar calendar, it's great

00:15:13.080 --> 00:15:17.799
to have tooling to be able to not have to leave Emacs to figure

00:15:17.800 --> 00:15:19.759
out when a lunar date is.

00:15:19.760 --> 00:15:29.599
Then, I think, you know, for the most part, My work on casual

00:15:29.600 --> 00:15:34.959
was really kind of my summer of code for Emacs here. And so in

00:15:34.960 --> 00:15:41.519
many ways, the velocity of casual development is going to

00:15:41.520 --> 00:15:48.919
slow down where I've got a big bulk of the modes that I really

00:15:48.920 --> 00:15:57.519
wanted to take care of. Um, I think one experimental thing

00:15:57.520 --> 00:16:00.999
that I think is very unbaked, but I would, you know, if folks

00:16:01.000 --> 00:16:06.879
are interested, uh, maybe looking at it is, uh, taking a look

00:16:06.880 --> 00:16:13.079
at edebug and trying to make that an easier thing to do. Um,

00:16:13.080 --> 00:16:18.359
that is ambitious. Uh, yeah, so maybe too ambitious.

00:16:18.360 --> 00:16:23.713
Uh, other things are like really scary projects.

00:16:23.714 --> 00:16:25.195
And so, not to say that

00:16:25.196 --> 00:16:28.319
I really have a desire to do it, but another

00:16:28.320 --> 00:16:33.239
one would be ediff. Right. Okay. Relitigating it's

00:16:33.240 --> 00:16:43.639
interface, um, to have a transient menu. I say

00:16:43.640 --> 00:16:47.919
these things, but I'm also scared of those things. Yeah, I

00:16:47.920 --> 00:16:50.719
mean, I think it's a lovely way to tackle the project,

00:16:50.720 --> 00:16:55.479
really, because you are fully aware that edebug and ediffs

00:16:55.480 --> 00:16:59.399
are mastodons when it comes to Emacs. They work very well. If

00:16:59.400 --> 00:17:02.639
you've ever tried to do a conflict resolution in Magit and

00:17:02.640 --> 00:17:07.199
you've pressed e, that usually opens ediff for you. If you

00:17:07.200 --> 00:17:09.959
happen to know how it works, it's amazing, but if you do not know

00:17:09.960 --> 00:17:13.719
it works, the interface is a little... It's a lot to take in

00:17:13.720 --> 00:17:20.879
at the moment. You have to know a, b, w... I can, and I

00:17:20.880 --> 00:17:24.439
can never remember which one is the lower and which one is the

00:17:24.440 --> 00:17:27.359
upper. Like, it constantly goes in different directions. I

00:17:27.360 --> 00:17:29.719
can never remember which is the commit I'm trying to merge,

00:17:29.720 --> 00:17:32.759
which is the commit I'm currently being on. It has nothing to

00:17:32.760 --> 00:17:36.839
do with Magit. It's merely Git and the way they conceive

00:17:36.840 --> 00:17:39.719
this. And probably, there might be a very nice way to

00:17:39.720 --> 00:17:42.079
remember it, but I still haven't found it after 10 years as a

00:17:42.080 --> 00:17:44.919
software developer. So, I guess I need to dig a little

00:17:44.920 --> 00:17:48.519
deeper. But what I find lovely about the approach is that for

00:17:48.520 --> 00:17:52.599
you, working on the interface to those tools is actually

00:17:52.600 --> 00:17:55.159
something that allows you to discover how they work, but

00:17:55.160 --> 00:17:59.119
also how to make it more easy for people to understand how

00:17:59.120 --> 00:18:02.039
those tools work. So you're doing the work of

00:18:02.040 --> 00:18:05.399
understanding, of digesting a lot of the commands, so that

00:18:05.400 --> 00:18:08.599
people do not have to go through the same pain as you have. So I

00:18:08.600 --> 00:18:14.279
find this a very noble endeavor in a way.

NOTE Getting older

00:18:14.280 --> 00:18:18.559
In so many ways, as perhaps I've mentioned

00:18:18.560 --> 00:18:23.639
in my talk, I'm getting older. I can't remember all

00:18:23.640 --> 00:18:28.759
these damn commands and my hand dexterity is failing. I

00:18:28.760 --> 00:18:33.199
mean, there's so many. Like multiple keystroke

00:18:33.200 --> 00:18:37.479
bindings, which I absolutely loathe. At most,

00:18:37.480 --> 00:18:40.799
like I can, I can only physically handle like, two

00:18:40.800 --> 00:18:47.799
characters, three maybe, at a time. So maybe

00:18:47.800 --> 00:18:51.239
that's just me, and others may

00:18:51.240 --> 00:18:55.999
feel differently, but at the same time,

00:18:56.000 --> 00:19:01.519
the work that I've invested here is has been very personal

00:19:01.520 --> 00:19:06.239
for me because I just don't want to work that hard, and I want to

00:19:06.240 --> 00:19:11.159
keep using Emacs. Yeah, and that's again a very good

00:19:11.160 --> 00:19:13.719
endeavor, I think, to have. And there's one last thing that

00:19:13.720 --> 00:19:16.039
I'd like to mention, because you've mentioned this project

00:19:16.040 --> 00:19:19.879
of yours, Casual, being some kind of summer of code, with the

00:19:19.880 --> 00:19:22.399
implication that you've worked a whole lot of it during the

00:19:22.400 --> 00:19:26.919
summer or during this period. and perhaps investment will

00:19:26.920 --> 00:19:31.119
die down a little bit now. But I think it's completely fine to

00:19:31.120 --> 00:19:33.879
have moments when you feel particularly excited and you do a

00:19:33.880 --> 00:19:36.959
lot of work, and sometimes it dies down a little bit.

00:19:36.960 --> 00:19:41.439
Personally, I've been... Four years ago, I was working a lot

00:19:41.440 --> 00:19:44.679
on Org Roam and I had my Summer of Code on Org Roam. And that was

00:19:44.680 --> 00:19:47.159
great. I was able to do a lot of things, to get a lot of things

00:19:47.160 --> 00:19:50.559
out of my head. But eventually, you know, you have to go make

00:19:50.560 --> 00:19:53.279
some money to survive or you have to take care of family and

00:19:53.280 --> 00:19:56.399
stuff like this. So, life tends to get in the way of your

00:19:56.400 --> 00:20:00.519
hobbies, especially when, you know, it's so... It's

00:20:00.520 --> 00:20:03.239
hobbies that involve so much of your time to get things

00:20:03.240 --> 00:20:07.879
right, like programming does. But, you know, we appreciate

00:20:07.880 --> 00:20:09.799
all the work you've done, Charles, and the fact that you've

00:20:09.800 --> 00:20:12.679
put it out there for people to enjoy. It's already a victory.

00:20:12.680 --> 00:20:14.999
You don't need to feel compelled to keep working on it

00:20:15.000 --> 00:20:18.159
because ultimately, as you said, the beauty of open source

00:20:18.160 --> 00:20:21.759
is that people can just send PRs and get the project going

00:20:21.760 --> 00:20:28.519
again. Yeah. I mean, and if anything, you know, folks have

00:20:28.520 --> 00:20:33.319
expressed to me that, you know, in many ways, a lot of this

00:20:33.320 --> 00:20:37.959
stuff should be, you know, sort of folded in the core. And,

00:20:37.960 --> 00:20:45.159
you know, I would love to see at least the ideals of, or at

00:20:45.160 --> 00:20:49.319
least an openness into thinking, rethinking the interface

00:20:49.320 --> 00:20:54.119
for Emacs. So, you know, it doesn't have to be, basically

00:20:54.120 --> 00:20:59.119
work the way it worked for basically the last half of the 20th

00:20:59.120 --> 00:21:03.519
century here. Yeah, Emacs is flexible enough to have

00:21:03.520 --> 00:21:10.279
different approaches and, you know, transient is one

00:21:10.280 --> 00:21:17.759
approach, but at the same time, you know, the ability to

00:21:17.760 --> 00:21:22.559
reimagine the user interface for, you know, the computing

00:21:22.560 --> 00:21:28.159
needs, you know, for basically users needs today, whether

00:21:28.160 --> 00:21:33.119
you write or code or anything of that nature, I think is an

00:21:33.120 --> 00:21:39.039
exciting and great thing. Yeah, well, thank you so much for

00:21:39.040 --> 00:21:41.639
this conclusion. So I'm a little sorry, because sadly, we

00:21:41.640 --> 00:21:45.919
needed to move the stream to the next talk. So we've lost

00:21:45.920 --> 00:21:49.639
about 20 seconds of what you said. But don't worry, whatever

00:21:49.640 --> 00:21:51.999
you've said will be available on the website. I didn't want

00:21:52.000 --> 00:21:55.759
to interrupt, sadly, because I didn't want to be rude. But I

00:21:55.760 --> 00:21:58.679
think we did a great job answering the questions. So thank

00:21:58.680 --> 00:22:01.199
you so much for taking the time. I'll need to get going,

00:22:01.200 --> 00:22:02.759
because we might have a problem with the next talk. So thank

00:22:02.760 --> 00:22:05.919
you so much, Charles. Certainly. Take care. Thank you.

00:22:05.920 --> 00:22:12.120
Appreciate it. Bye.