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
|
<!-- Automatically generated by emacsconf-publish-after-page -->
<div class="transcript transcript-mainVideo"><a name="casual-mainVideo-transcript"></a><h1>Transcript</h1>
<div class="transcript-heading">[[!template new="1" text="""introduction""" start="00:00:00.000" video="mainVideo-casual" id="subtitle"]]</div>[[!template text="""Hello, my name is Charles Choi and welcome to my talk:""" start="00:00:00.000" video="mainVideo-casual" id="subtitle"]]
[[!template text=""""Reimagining the Emacs user experience with Casual Suite."""" start="00:00:05.080" video="mainVideo-casual" id="subtitle"]]
[[!template text="""Casual Suite is a set of opinionated user interfaces to""" start="00:00:11.360" video="mainVideo-casual" id="subtitle"]]
[[!template text="""different modes offered in Emacs. Before I get into""" start="00:00:14.920" video="mainVideo-casual" id="subtitle"]]
[[!template text="""describing Casual in detail, let's first talk about the""" start="00:00:18.400" video="mainVideo-casual" id="subtitle"]]
[[!template text="""existing Emacs user experience. To make Emacs go, people""" start="00:00:22.200" video="mainVideo-casual" id="subtitle"]]
[[!template text="""can either invoke commands by name with""" start="00:00:27.040" video="mainVideo-casual" id="subtitle"]]
[[!template text="""execute-extended-command,""" start="00:00:31.080" video="mainVideo-casual" id="subtitle"]]
[[!template text="""run a command directly with a pre-assigned""" start="00:00:34.082" video="mainVideo-casual" id="subtitle"]]
[[!template text="""key binding, finally, use a mouse menu if it's available.""" start="00:00:36.404" video="mainVideo-casual" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Recall vs recognition""" start="00:00:43.800" video="mainVideo-casual" id="subtitle"]]</div>[[!template text="""From human-computer interface research, there is a""" start="00:00:43.800" video="mainVideo-casual" id="subtitle"]]
[[!template text="""concept of recall versus recognition in user interface""" start="00:00:46.720" video="mainVideo-casual" id="subtitle"]]
[[!template text="""design. Let's show their distinction by example. A common""" start="00:00:50.800" video="mainVideo-casual" id="subtitle"]]
[[!template text="""recall interface is password entry. Absent any historical""" start="00:00:56.600" video="mainVideo-casual" id="subtitle"]]
[[!template text="""affordances, a user must directly remember information to""" start="00:01:00.840" video="mainVideo-casual" id="subtitle"]]
[[!template text="""succeed with this interface. In contrast, menus offer""" start="00:01:04.640" video="mainVideo-casual" id="subtitle"]]
[[!template text="""immediate visual cues on what commands are available. This""" start="00:01:09.840" video="mainVideo-casual" id="subtitle"]]
[[!template text="""allows a user to recognize familiar behavior to support""" start="00:01:13.440" video="mainVideo-casual" id="subtitle"]]
[[!template text="""successful selection of it. From user interface research,""" start="00:01:16.840" video="mainVideo-casual" id="subtitle"]]
[[!template text="""the key finding is this. Interfaces emphasizing""" start="00:01:21.880" video="mainVideo-casual" id="subtitle"]]
[[!template text="""recognition are much easier to use than those relying on""" start="00:01:26.120" video="mainVideo-casual" id="subtitle"]]
[[!template text="""recall. In this light, we see that the Emacs user experience""" start="00:01:30.000" video="mainVideo-casual" id="subtitle"]]
[[!template text="""leans too much towards recall. Completion in history can""" start="00:01:35.800" video="mainVideo-casual" id="subtitle"]]
[[!template text="""help tip the scales towards recognition, but only by a""" start="00:01:41.280" video="mainVideo-casual" id="subtitle"]]
[[!template text="""little bit.""" start="00:01:44.480" video="mainVideo-casual" id="subtitle"]]
[[!template text="""This reliance on recall is discouraging to users both new""" start="00:01:47.960" video="mainVideo-casual" id="subtitle"]]
[[!template text="""and old, and that's a shame because Emacs has so many useful""" start="00:01:52.400" video="mainVideo-casual" id="subtitle"]]
[[!template text="""commands. But the kicker is that most of them are""" start="00:01:56.840" video="mainVideo-casual" id="subtitle"]]
[[!template text="""infrequently used. You can't recall them all. At least I""" start="00:02:00.760" video="mainVideo-casual" id="subtitle"]]
[[!template text="""can't. So, a conundrum. While I've been using Emacs since""" start="00:02:05.240" video="mainVideo-casual" id="subtitle"]]
[[!template text="""the early 90s, truthfully, it's been only in this past""" start="00:02:11.240" video="mainVideo-casual" id="subtitle"]]
[[!template text="""decade that I've leveled up in using it. Org Mode, Magit,""" start="00:02:15.160" video="mainVideo-casual" id="subtitle"]]
[[!template text="""Eglot, Avy, and many other packages have transformed how I""" start="00:02:19.680" video="mainVideo-casual" id="subtitle"]]
[[!template text="""use it. I can only deal with so much cognitive load and""" start="00:02:23.200" video="mainVideo-casual" id="subtitle"]]
[[!template text="""physically straining key bindings. So, what to do about it?""" start="00:02:28.640" video="mainVideo-casual" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Emacs with keyboard-driven menus""" start="00:02:34.800" video="mainVideo-casual" id="subtitle"]]</div>[[!template text="""Let's bring back an old ideal.""" start="00:02:34.800" video="mainVideo-casual" id="subtitle"]]
[[!template text="""Keyboard-driven menus have been around since TTY video""" start="00:02:36.160" video="mainVideo-casual" id="subtitle"]]
[[!template text="""terminals with mainframes. If you're old enough to recall""" start="00:02:42.360" video="mainVideo-casual" id="subtitle"]]
[[!template text="""working with such interfaces, these terms will seem""" start="00:02:47.360" video="mainVideo-casual" id="subtitle"]]
[[!template text="""familiar. They all worked with the limitations of""" start="00:02:50.080" video="mainVideo-casual" id="subtitle"]]
[[!template text="""text-based video displays.""" start="00:02:53.240" video="mainVideo-casual" id="subtitle"]]
[[!template text="""With keyboard-driven menus, if a command exists but nobody""" start="00:02:57.640" video="mainVideo-casual" id="subtitle"]]
[[!template text="""can find it, it's not really useful. A well-designed menu""" start="00:03:01.600" video="mainVideo-casual" id="subtitle"]]
[[!template text="""can make a command discoverable. If the command is""" start="00:03:05.520" video="mainVideo-casual" id="subtitle"]]
[[!template text="""infrequently used, making it recognizable helps a lot. And""" start="00:03:09.720" video="mainVideo-casual" id="subtitle"]]
[[!template text="""for working primarily with text, having keyboard-only""" start="00:03:15.200" video="mainVideo-casual" id="subtitle"]]
[[!template text="""interactions encourages flow. Given the above, the next""" start="00:03:18.680" video="mainVideo-casual" id="subtitle"]]
[[!template text="""steps seem natural:""" start="00:03:24.120" video="mainVideo-casual" id="subtitle"]]
[[!template text="""augment Emacs with keyboard-driven menus. This is not""" start="00:03:28.480" video="mainVideo-casual" id="subtitle"]]
[[!template text="""saying that I want to obsolete name commands, keybindings,""" start="00:03:32.760" video="mainVideo-casual" id="subtitle"]]
[[!template text="""and mouse menus. They all can happily coexist. Emacs is""" start="00:03:36.640" video="mainVideo-casual" id="subtitle"]]
[[!template text="""large. It can contain multitudes.""" start="00:03:41.080" video="mainVideo-casual" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Transient""" start="00:03:43.400" video="mainVideo-casual" id="subtitle"]]</div>[[!template text="""Conveniently, Emacs has a built-in library for building""" start="00:03:43.400" video="mainVideo-casual" id="subtitle"]]
[[!template text="""such menus. It's called Transient, and it's been around""" start="00:03:49.880" video="mainVideo-casual" id="subtitle"]]
[[!template text="""since Emacs 28. Developed primarily by Jonas Bernoulli as a""" start="00:03:53.840" video="mainVideo-casual" id="subtitle"]]
[[!template text="""UI toolkit for Magit, Transient has an essential feature""" start="00:03:59.320" video="mainVideo-casual" id="subtitle"]]
[[!template text="""for building great keyboard-driven interfaces.""" start="00:04:03.200" video="mainVideo-casual" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""A Transient menu can be pinned""" start="00:04:08.200" video="mainVideo-casual" id="subtitle"]]</div>[[!template text="""A transient menu can be pinned and their state updated as""" start="00:04:08.200" video="mainVideo-casual" id="subtitle"]]
[[!template text="""commands are issued from them. This lets us build""" start="00:04:11.920" video="mainVideo-casual" id="subtitle"]]
[[!template text="""interfaces that reflect internal state changes made by""" start="00:04:15.240" video="mainVideo-casual" id="subtitle"]]
[[!template text="""commands issued from the user. This is great because many""" start="00:04:18.400" video="mainVideo-casual" id="subtitle"]]
[[!template text="""modes have stateful behavior, and guess what? Emacs has a lot""" start="00:04:21.920" video="mainVideo-casual" id="subtitle"]]
[[!template text="""of modes.""" start="00:04:26.600" video="mainVideo-casual" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Modes are apps, really""" start="00:04:29.303" video="mainVideo-casual" id="subtitle"]]</div>[[!template text="""If you think about it, Emacs modes are akin to the""" start="00:04:29.303" video="mainVideo-casual" id="subtitle"]]
[[!template text="""ecosystem of apps that we see today, but with far less""" start="00:04:32.000" video="mainVideo-casual" id="subtitle"]]
[[!template text="""structure and packaging. A mode, like an app, focuses on""" start="00:04:35.080" video="mainVideo-casual" id="subtitle"]]
[[!template text="""delivering specific behavior to the user. There are many""" start="00:04:39.320" video="mainVideo-casual" id="subtitle"]]
[[!template text="""built-in modes in Emacs, and these modes are complex with""" start="00:04:42.960" video="mainVideo-casual" id="subtitle"]]
[[!template text="""dozens, if not hundreds, of commands. Calc itself has over""" start="00:04:46.000" video="mainVideo-casual" id="subtitle"]]
[[!template text="""1,000 of them. It's frustrating to know that these commands""" start="00:04:50.680" video="mainVideo-casual" id="subtitle"]]
[[!template text="""are there, but I really can't access them via recall.""" start="00:04:54.880" video="mainVideo-casual" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Transient all the modes!""" start="00:04:59.527" video="mainVideo-casual" id="subtitle"]]</div>[[!template text="""So I decided to do something about it, and that was to transient""" start="00:04:59.527" video="mainVideo-casual" id="subtitle"]]
[[!template text="""all the modes, or at least the most major ones. This past""" start="00:05:05.080" video="mainVideo-casual" id="subtitle"]]
[[!template text="""summer, I had the time and resources to start building""" start="00:05:10.000" video="mainVideo-casual" id="subtitle"]]
[[!template text="""Transient interfaces for modes that I wanted to more""" start="00:05:12.680" video="mainVideo-casual" id="subtitle"]]
[[!template text="""elegantly use. I decided to call this work Casual. Given its""" start="00:05:15.800" video="mainVideo-casual" id="subtitle"]]
[[!template text="""definition, it seemed like a good fit for the vibe that I""" start="00:05:22.320" video="mainVideo-casual" id="subtitle"]]
[[!template text="""wanted these interfaces to embody.""" start="00:05:25.520" video="mainVideo-casual" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Casual design principles""" start="00:05:28.040" video="mainVideo-casual" id="subtitle"]]</div>[[!template text="""Design principles that I embraced up front were""" start="00:05:28.040" video="mainVideo-casual" id="subtitle"]]
[[!template text="""handcrafted information architecture and layout. This is""" start="00:05:35.000" video="mainVideo-casual" id="subtitle"]]
[[!template text="""largely an exercise in mapping a mode's command set to a""" start="00:05:38.240" video="mainVideo-casual" id="subtitle"]]
[[!template text="""hierarchical menu structure. I wanted these menus to make""" start="00:05:41.800" video="mainVideo-casual" id="subtitle"]]
[[!template text="""sense to most people. Ideally, users would not have to read""" start="00:05:47.120" video="mainVideo-casual" id="subtitle"]]
[[!template text="""documentation to get at the command that they wanted. Early""" start="00:05:50.720" video="mainVideo-casual" id="subtitle"]]
[[!template text="""on, I quickly learned that it was impossible to maintain the""" start="00:05:55.840" video="mainVideo-casual" id="subtitle"]]
[[!template text="""existing default key bindings when mapping them over to a""" start="00:05:59.360" video="mainVideo-casual" id="subtitle"]]
[[!template text="""hierarchical menu. Also, some bindings I just flat out""" start="00:06:02.480" video="mainVideo-casual" id="subtitle"]]
[[!template text="""disagreed with. I resolved to be friendly, but not""" start="00:06:06.760" video="mainVideo-casual" id="subtitle"]]
[[!template text="""beholden to them. In all of the above, I've gone out of my way""" start="00:06:10.200" video="mainVideo-casual" id="subtitle"]]
[[!template text="""to make clear that my design decisions are opinionated.""" start="00:06:14.920" video="mainVideo-casual" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Casual design conventions""" start="00:06:17.960" video="mainVideo-casual" id="subtitle"]]</div>[[!template text="""Using casual.""" start="00:06:17.960" video="mainVideo-casual" id="subtitle"]]
[[!template text="""To reinforce habit, a common key binding is used per mode to""" start="00:06:21.720" video="mainVideo-casual" id="subtitle"]]
[[!template text="""raise a main menu. This key binding is left to user""" start="00:06:30.040" video="mainVideo-casual" id="subtitle"]]
[[!template text="""preference. For me, that binding is C-o.""" start="00:06:33.800" video="mainVideo-casual" id="subtitle"]]
[[!template text="""Command bindings are mnemonic when possible.""" start="00:06:36.720" video="mainVideo-casual" id="subtitle"]]
[[!template text="""Mode-specific settings are given their own menu. Since""" start="00:06:44.640" video="mainVideo-casual" id="subtitle"]]
[[!template text="""transient menus can be pinned, we can support repeat or""" start="00:06:49.560" video="mainVideo-casual" id="subtitle"]]
[[!template text="""stateful behavior in a mode.""" start="00:06:53.320" video="mainVideo-casual" id="subtitle"]]
[[!template text="""As of this writing, there are 11 modes supported by Casual,""" start="00:06:58.480" video="mainVideo-casual" id="subtitle"]]
[[!template text="""with several more on the way.""" start="00:07:02.320" video="mainVideo-casual" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Casual Dired""" start="00:07:04.366" video="mainVideo-casual" id="subtitle"]]</div>[[!template text="""Let's look at the Casual menu""" start="00:07:04.366" video="mainVideo-casual" id="subtitle"]]
[[!template text="""for Dired to highlight the design conventions previously""" start="00:07:05.720" video="mainVideo-casual" id="subtitle"]]
[[!template text="""mentioned.""" start="00:07:12.480" video="mainVideo-casual" id="subtitle"]]
[[!template text="""In a Dired Emacs window, the user can invoke their preferred""" start="00:07:13.560" video="mainVideo-casual" id="subtitle"]]
[[!template text="""key binding to call a top-level Casual main menu. This main""" start="00:07:17.720" video="mainVideo-casual" id="subtitle"]]
[[!template text="""menu is displayed at the bottom of the Emacs frame. Zooming""" start="00:07:22.280" video="mainVideo-casual" id="subtitle"]]
[[!template text="""into this menu, we see the commands offered in it""" start="00:07:27.920" video="mainVideo-casual" id="subtitle"]]
[[!template text="""categorized into different sections. Each command has a""" start="00:07:30.840" video="mainVideo-casual" id="subtitle"]]
[[!template text="""key binding, usually a single character shown before its""" start="00:07:34.560" video="mainVideo-casual" id="subtitle"]]
[[!template text="""label. The File section holds commands that act upon the""" start="00:07:38.040" video="mainVideo-casual" id="subtitle"]]
[[!template text="""currently selected item or marked items. The Directory""" start="00:07:42.600" video="mainVideo-casual" id="subtitle"]]
[[!template text="""section holds commands that affect the current directory""" start="00:07:47.560" video="mainVideo-casual" id="subtitle"]]
[[!template text="""or its subdirs within it. The Mark section has marking""" start="00:07:50.320" video="mainVideo-casual" id="subtitle"]]
[[!template text="""commands that allow for aggregate operations. The""" start="00:07:55.600" video="mainVideo-casual" id="subtitle"]]
[[!template text="""Navigation section shows commands that move the point in a""" start="00:08:00.280" video="mainVideo-casual" id="subtitle"]]
[[!template text="""direct buffer. The quick section provides access to""" start="00:08:03.400" video="mainVideo-casual" id="subtitle"]]
[[!template text="""bookmark and buffer list commands. Search and replace""" start="00:08:09.560" video="mainVideo-casual" id="subtitle"]]
[[!template text="""commands are grouped in the search section. New directory""" start="00:08:14.520" video="mainVideo-casual" id="subtitle"]]
[[!template text="""and file creation are given their own section. Finally, at""" start="00:08:19.120" video="mainVideo-casual" id="subtitle"]]
[[!template text="""the bottom of the menu are commands dedicated to Casual menu""" start="00:08:24.080" video="mainVideo-casual" id="subtitle"]]
[[!template text="""navigation.""" start="00:08:27.600" video="mainVideo-casual" id="subtitle"]]
[[!template text="""Casual is conformant to Transient conventions where the""" start="00:08:28.440" video="mainVideo-casual" id="subtitle"]]
[[!template text="""key binding C-g for dismiss one and C-q to dismiss all""" start="00:08:34.080" video="mainVideo-casual" id="subtitle"]]
[[!template text="""menus are honored. Another transient convention is to""" start="00:08:39.480" video="mainVideo-casual" id="subtitle"]]
[[!template text="""reserve the key binding q to quit the current mode. For most""" start="00:08:43.640" video="mainVideo-casual" id="subtitle"]]
[[!template text="""main menus, casual uses the , key binding to invoke a""" start="00:08:49.520" video="mainVideo-casual" id="subtitle"]]
[[!template text="""mode-specific settings menu. Casual also adopts the""" start="00:08:53.960" video="mainVideo-casual" id="subtitle"]]
[[!template text="""common UI convention of using ... >""" start="00:08:59.000" video="mainVideo-casual" id="subtitle"]]
[[!template text="""symbols to denote required input and submenus""" start="00:09:02.040" video="mainVideo-casual" id="subtitle"]]
[[!template text="""respectively.""" start="00:09:05.880" video="mainVideo-casual" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Casual EditKit""" start="00:09:06.640" video="mainVideo-casual" id="subtitle"]]</div>[[!template text="""Some commands are more global or non-mode specific in""" start="00:09:06.640" video="mainVideo-casual" id="subtitle"]]
[[!template text="""nature. A great deal of these commands relate to editing,""" start="00:09:13.920" video="mainVideo-casual" id="subtitle"]]
[[!template text="""which I find to be a prime motivation for using Emacs. Let's""" start="00:09:18.040" video="mainVideo-casual" id="subtitle"]]
[[!template text="""examine one such menu that supports this.""" start="00:09:23.240" video="mainVideo-casual" id="subtitle"]]
[[!template text="""The main menu for Casual EditKit is designed to provide easy""" start="00:09:25.560" video="mainVideo-casual" id="subtitle"]]
[[!template text="""access to editing and editing-related commands. Like the""" start="00:09:31.600" video="mainVideo-casual" id="subtitle"]]
[[!template text="""previous Dired menu, it organizes commands into different""" start="00:09:36.280" video="mainVideo-casual" id="subtitle"]]
[[!template text="""sections.""" start="00:09:39.960" video="mainVideo-casual" id="subtitle"]]
[[!template text="""Commands related to file and buffer operations are in the""" start="00:09:40.680" video="mainVideo-casual" id="subtitle"]]
[[!template text="""File section. Commands for editing text are in the Edit""" start="00:09:46.000" video="mainVideo-casual" id="subtitle"]]
[[!template text="""section. S- or balanced expression commands are given a""" start="00:09:50.520" video="mainVideo-casual" id="subtitle"]]
[[!template text="""dedicated section for their own. More often than not, in""" start="00:09:55.600" video="mainVideo-casual" id="subtitle"]]
[[!template text="""many modes, I find them to do what I want.""" start="00:09:59.440" video="mainVideo-casual" id="subtitle"]]
[[!template text="""The tools section provides access to common tools.""" start="00:10:02.160" video="mainVideo-casual" id="subtitle"]]
[[!template text="""Bookmarks I consider to be an essential feature. If you""" start="00:10:08.880" video="mainVideo-casual" id="subtitle"]]
[[!template text="""haven't used them, it's never too late to start. Emacs""" start="00:10:13.720" video="mainVideo-casual" id="subtitle"]]
[[!template text="""window management commands are given this section.""" start="00:10:18.440" video="mainVideo-casual" id="subtitle"]]
[[!template text="""Commands for search and replace, macros, and projects can""" start="00:10:20.800" video="mainVideo-casual" id="subtitle"]]
[[!template text="""be accessed from here. Finally, the menu navigation""" start="00:10:25.800" video="mainVideo-casual" id="subtitle"]]
[[!template text="""section. Note that register commands can be accessed from""" start="00:10:32.200" video="mainVideo-casual" id="subtitle"]]
[[!template text="""here.""" start="00:10:35.720" video="mainVideo-casual" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""EditKit demo""" start="00:10:36.200" video="mainVideo-casual" id="subtitle"]]</div>[[!template text="""Okay, enough screenshots. Let's look at Casual in action""" start="00:10:36.200" video="mainVideo-casual" id="subtitle"]]
[[!template text="""with a demo of the EditKit menus. Let's start our demo of""" start="00:10:42.440" video="mainVideo-casual" id="subtitle"]]
[[!template text="""casual-editkit with raising the menu, which is bound to""" start="00:10:48.440" video="mainVideo-casual" id="subtitle"]]
[[!template text="""C-o. You'll see the menu pop up here. In""" start="00:10:54.440" video="mainVideo-casual" id="subtitle"]]
[[!template text="""particular, we want to look at the edit operation. We'll""" start="00:10:58.920" video="mainVideo-casual" id="subtitle"]]
[[!template text="""press e and we'll see a number of menu items that allow you to""" start="00:11:02.520" video="mainVideo-casual" id="subtitle"]]
[[!template text="""make editing transformations to the text, be it marking,""" start="00:11:08.680" video="mainVideo-casual" id="subtitle"]]
[[!template text="""copying, killing, transposing, transforming, moving, or""" start="00:11:16.240" video="mainVideo-casual" id="subtitle"]]
[[!template text="""deleting the text. You'll see also that there is a submenu""" start="00:11:20.240" video="mainVideo-casual" id="subtitle"]]
[[!template text="""for rectangle operations. Let's first...""" start="00:11:24.280" video="mainVideo-casual" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Marking and moving""" start="00:11:31.997" video="mainVideo-casual" id="subtitle"]]</div>[[!template text="""Let's actually dig through and look at what's in the Mark submenu.""" start="00:11:31.997" video="mainVideo-casual" id="subtitle"]]
[[!template text="""You'll see that there are increments of text in which you can""" start="00:11:37.407" video="mainVideo-casual" id="subtitle"]]
[[!template text="""mark. You can mark a word, a sentence, a paragraph, and""" start="00:11:42.040" video="mainVideo-casual" id="subtitle"]]
[[!template text="""balanced expression. If we go back, you'll see a similar""" start="00:11:45.240" video="mainVideo-casual" id="subtitle"]]
[[!template text="""pattern for copying as well as killing. Transposing.""" start="00:11:49.560" video="mainVideo-casual" id="subtitle"]]
[[!template text="""Let's go and try to move a sentence. We have the point there at""" start="00:11:57.340" video="mainVideo-casual" id="subtitle"]]
[[!template text="""hello there. We'll move that sentence around. If we""" start="00:12:02.880" video="mainVideo-casual" id="subtitle"]]
[[!template text="""press s, we can move it backward or forward. In this case,""" start="00:12:07.120" video="mainVideo-casual" id="subtitle"]]
[[!template text="""let's move it forward. We'll press f. You'll see hello""" start="00:12:12.120" video="mainVideo-casual" id="subtitle"]]
[[!template text="""there move up a sentence. Then we can also press b to move""" start="00:12:16.280" video="mainVideo-casual" id="subtitle"]]
[[!template text="""it back. Then press RET to dismiss. Also, if we wanted""" start="00:12:21.640" video="mainVideo-casual" id="subtitle"]]
[[!template text="""to, we can... In this menu particularly, you'll see that we""" start="00:12:29.880" video="mainVideo-casual" id="subtitle"]]
[[!template text="""also have cursor navigation, so we can move the point there.""" start="00:12:35.200" video="mainVideo-casual" id="subtitle"]]
[[!template text="""That's not in all the menus, but in a good part number of the""" start="00:12:38.840" video="mainVideo-casual" id="subtitle"]]
[[!template text="""menus in Casual Edit Kit, you'll see that here. Let's press""" start="00:12:43.040" video="mainVideo-casual" id="subtitle"]]
[[!template text="""RET to dismiss that.""" start="00:12:47.920" video="mainVideo-casual" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Rectangles""" start="00:12:53.140" video="mainVideo-casual" id="subtitle"]]</div>[[!template text="""Let's actually look at some rectangle operations here.""" start="00:12:53.140" video="mainVideo-casual" id="subtitle"]]
[[!template text="""In this case, we have a list with""" start="00:12:58.644" video="mainVideo-casual" id="subtitle"]]
[[!template text="""items x, y, and z. Let's say we wanted to prefix each item""" start="00:13:01.760" video="mainVideo-casual" id="subtitle"]]
[[!template text="""here with a string. We'll say we want to put in there""" start="00:13:08.520" video="mainVideo-casual" id="subtitle"]]
[[!template text="""hello. One way of doing that is to make a rectangle. So""" start="00:13:14.240" video="mainVideo-casual" id="subtitle"]]
[[!template text="""if we go into our rectangle menu, first off, what we need to do""" start="00:13:21.160" video="mainVideo-casual" id="subtitle"]]
[[!template text="""is define that rectangle region. We'll press m to mark""" start="00:13:25.720" video="mainVideo-casual" id="subtitle"]]
[[!template text="""where the point is right there. Then we can use our cursor""" start="00:13:31.200" video="mainVideo-casual" id="subtitle"]]
[[!template text="""operation to move the point to define the rectangle. In this""" start="00:13:35.440" video="mainVideo-casual" id="subtitle"]]
[[!template text="""case, it's right at the start there. We can use the string""" start="00:13:39.560" video="mainVideo-casual" id="subtitle"]]
[[!template text="""insert command, i, to insert hello, colon, and then we'll""" start="00:13:43.840" video="mainVideo-casual" id="subtitle"]]
[[!template text="""put a space there to make it look a little nicer. Sure""" start="00:13:49.680" video="mainVideo-casual" id="subtitle"]]
[[!template text="""enough, that's in there.""" start="00:13:54.800" video="mainVideo-casual" id="subtitle"]]
[[!template text="""We can have access to a number of rectangle commands here.""" start="00:13:58.120" video="mainVideo-casual" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Numbering""" start="00:14:04.976" video="mainVideo-casual" id="subtitle"]]</div>[[!template text="""If we wanted to, let's say, number, we can go through that same""" start="00:14:04.976" video="mainVideo-casual" id="subtitle"]]
[[!template text="""operation here, define a region, a rectangle region that""" start="00:14:11.600" video="mainVideo-casual" id="subtitle"]]
[[!template text="""is, and press n. You'll see that it has incremented a""" start="00:14:16.720" video="mainVideo-casual" id="subtitle"]]
[[!template text="""number for each item in that rectangle region. We can also""" start="00:14:22.680" video="mainVideo-casual" id="subtitle"]]
[[!template text="""tap u to undo these operations""" start="00:14:28.640" video="mainVideo-casual" id="subtitle"]]
[[!template text="""and leave that at that.""" start="00:14:32.469" video="mainVideo-casual" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Sorting""" start="00:14:36.600" video="mainVideo-casual" id="subtitle"]]</div>[[!template text="""Sorting. If we select a region here, And we go back. You'll""" start="00:14:36.600" video="mainVideo-casual" id="subtitle"]]
[[!template text="""see that the sort submenu is now enabled. Sorting won't work""" start="00:14:47.240" video="mainVideo-casual" id="subtitle"]]
[[!template text="""unless you have a region started. That's one of the nice""" start="00:14:52.400" video="mainVideo-casual" id="subtitle"]]
[[!template text="""things about transient is that it allows you to visually""" start="00:14:56.240" video="mainVideo-casual" id="subtitle"]]
[[!template text="""enable or disable command items with regards to whatever""" start="00:15:01.680" video="mainVideo-casual" id="subtitle"]]
[[!template text="""the current state or context is here. In this case is""" start="00:15:09.080" video="mainVideo-casual" id="subtitle"]]
[[!template text="""whether or not you have a region highlighted. Let's say we""" start="00:15:12.560" video="mainVideo-casual" id="subtitle"]]
[[!template text="""want to sort these two columns of numbers and so there's a""" start="00:15:17.360" video="mainVideo-casual" id="subtitle"]]
[[!template text="""command called n here which is numeric fields. Let's choose that""" start="00:15:22.880" video="mainVideo-casual" id="subtitle"]]
[[!template text="""here. Sure enough we get that. But there's a nice twist""" start="00:15:29.760" video="mainVideo-casual" id="subtitle"]]
[[!template text="""there. Let's say we wanted to sort on the second column.""" start="00:15:35.920" video="mainVideo-casual" id="subtitle"]]
[[!template text="""Let's move our point back up to here and we'll mark that.""" start="00:15:39.680" video="mainVideo-casual" id="subtitle"]]
[[!template text="""Since everything is in a continuous line, we can sort of""" start="00:15:48.920" video="mainVideo-casual" id="subtitle"]]
[[!template text="""pretend that this region is actually a paragraph""" start="00:15:52.800" video="mainVideo-casual" id="subtitle"]]
[[!template text="""and mark that.""" start="00:15:55.949" video="mainVideo-casual" id="subtitle"]]
[[!template text="""We'll go and select our sorting routine. But now we need to""" start="00:15:59.360" video="mainVideo-casual" id="subtitle"]]
[[!template text="""figure out how to make numeric fields sort on the second""" start="00:16:07.000" video="mainVideo-casual" id="subtitle"]]
[[!template text="""column. In transient, if we press a ?, that""" start="00:16:11.320" video="mainVideo-casual" id="subtitle"]]
[[!template text="""gives us basically a intermediate help section where, if we""" start="00:16:16.360" video="mainVideo-casual" id="subtitle"]]
[[!template text="""press a key binding, it will tell us or load the docstring for""" start="00:16:21.440" video="mainVideo-casual" id="subtitle"]]
[[!template text="""the command that's there. That command in this case is""" start="00:16:27.280" video="mainVideo-casual" id="subtitle"]]
[[!template text="""sort-numeric-fields. It requires an argument. That""" start="00:16:33.040" video="mainVideo-casual" id="subtitle"]]
[[!template text="""argument can be passed using the prefix argument,""" start="00:16:40.040" video="mainVideo-casual" id="subtitle"]]
[[!template text="""C-u. Press q. Let's do that. In this case, we""" start="00:16:44.080" video="mainVideo-casual" id="subtitle"]]
[[!template text="""want to check or use the value 2 and press n. Sure enough,""" start="00:16:52.120" video="mainVideo-casual" id="subtitle"]]
[[!template text="""that region is sorted with respect to the second column.""" start="00:16:58.680" video="mainVideo-casual" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Casual has transformed my user experience with Emacs""" start="00:17:04.340" video="mainVideo-casual" id="subtitle"]]</div>[[!template text="""Before Casual, so many powerful Emacs commands were not""" start="00:17:04.340" video="mainVideo-casual" id="subtitle"]]
[[!template text="""available to me because they were too hard to recall or I""" start="00:17:12.160" video="mainVideo-casual" id="subtitle"]]
[[!template text="""could not discover them. Making Casual has changed that,""" start="00:17:15.560" video="mainVideo-casual" id="subtitle"]]
[[!template text="""letting me reimagine more positively my user experience""" start="00:17:19.880" video="mainVideo-casual" id="subtitle"]]
[[!template text="""with Emacs. If you're interested in any of what I've shown""" start="00:17:24.360" video="mainVideo-casual" id="subtitle"]]
[[!template text="""today, I invite you to try out Casual.""" start="00:17:29.200" video="mainVideo-casual" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Thanks and acknowledgements""" start="00:17:34.451" video="mainVideo-casual" id="subtitle"]]</div>[[!template text="""Before I leave, my thanks and acknowledgments""" start="00:17:34.451" video="mainVideo-casual" id="subtitle"]]
[[!template text="""go out to the following people.""" start="00:17:37.033" video="mainVideo-casual" id="subtitle"]]
[[!template text="""First, to Jonas Bernoulli for making Transient and Magit.""" start="00:17:38.680" video="mainVideo-casual" id="subtitle"]]
[[!template text="""Casual would not be possible without your work. Next, to""" start="00:17:43.400" video="mainVideo-casual" id="subtitle"]]
[[!template text="""Psionic-k for writing Transient Showcase. It showed me how I""" start="00:17:49.320" video="mainVideo-casual" id="subtitle"]]
[[!template text="""could build casual. To all the casual users and their""" start="00:17:54.400" video="mainVideo-casual" id="subtitle"]]
[[!template text="""support, I am genuinely appreciative. Finally, to Jon""" start="00:17:59.440" video="mainVideo-casual" id="subtitle"]]
[[!template text="""Snader for writing the kind posts on Casual on the Irreal""" start="00:18:05.320" video="mainVideo-casual" id="subtitle"]]
[[!template text="""website. Thank you.""" start="00:18:08.760" video="mainVideo-casual" id="subtitle"]]
[[!template text="""Casual can be found on MELPA,""" start="00:18:10.520" video="mainVideo-casual" id="subtitle"]]
[[!template text="""and its repository is hosted on GitHub.""" start="00:18:15.798" video="mainVideo-casual" id="subtitle"]]
</div>
Captioner: sachac
<div class="transcript transcript-qanda"><a name="casual-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1>
<div class="transcript-heading">[[!template new="1" text="""Opening""" start="00:00:00.000" video="qanda-casual" id="subtitle"]]</div>[[!template text="""Leo? I'm doing well as well and I'm so happy to have seen your""" start="00:00:00.000" video="qanda-casual" id="subtitle"]]
[[!template text="""talk because the interaction with Emacs is always""" start="00:00:05.240" video="qanda-casual" id="subtitle"]]
[[!template text="""something that I find very interesting, and stuff like""" start="00:00:10.720" video="qanda-casual" id="subtitle"]]
[[!template text="""Transient, stuff like Hydra before, I think they really""" start="00:00:13.720" video="qanda-casual" id="subtitle"]]
[[!template text="""improve the user experience of users, and I'm really glad""" start="00:00:18.840" video="qanda-casual" id="subtitle"]]
[[!template text="""that I've seen you talk. Perhaps just starting with the""" start="00:00:22.120" video="qanda-casual" id="subtitle"]]
[[!template text="""first question, do you have anything else that you'd like to""" start="00:00:24.480" video="qanda-casual" id="subtitle"]]
[[!template text="""add on your talk? Because we are pretty stringent with the""" start="00:00:27.640" video="qanda-casual" id="subtitle"]]
[[!template text="""amount of time that we give for talks, but is there anything""" start="00:00:30.720" video="qanda-casual" id="subtitle"]]
[[!template text="""that you would have liked to mention to people that you""" start="00:00:33.200" video="qanda-casual" id="subtitle"]]
[[!template text="""weren't able to fit into the talk? I think probably one of the""" start="00:00:35.640" video="qanda-casual" id="subtitle"]]
[[!template text="""design considerations I've done is that many of the""" start="00:00:42.720" video="qanda-casual" id="subtitle"]]
[[!template text="""commands that I've exposed through my casual interfaces""" start="00:00:46.600" video="qanda-casual" id="subtitle"]]
[[!template text="""have been in Emacs. They've been in there forever, but very""" start="00:00:49.360" video="qanda-casual" id="subtitle"]]
[[!template text="""few people uh, myself included really know that they're""" start="00:00:56.400" video="qanda-casual" id="subtitle"]]
[[!template text="""there, uh, because they're just not discoverable through,""" start="00:01:00.440" video="qanda-casual" id="subtitle"]]
[[!template text="""uh, basically the existing mechanisms, you know, prior to""" start="00:01:06.000" video="qanda-casual" id="subtitle"]]
[[!template text="""transient and which key to, to even know that those, those""" start="00:01:09.560" video="qanda-casual" id="subtitle"]]
[[!template text="""functions are there. Yeah. So I think I'm going to start""" start="00:01:13.480" video="qanda-casual" id="subtitle"]]
[[!template text="""asking you questions whilst people start writing them in a""" start="00:01:19.400" video="qanda-casual" id="subtitle"]]
[[!template text="""pad. But yeah, I also think that discoverability is a very""" start="00:01:21.520" video="qanda-casual" id="subtitle"]]
[[!template text="""huge point that having stuff like the stuff that you've""" start="00:01:25.760" video="qanda-casual" id="subtitle"]]
[[!template text="""showed today actually allows. One example that I'd like to""" start="00:01:29.560" video="qanda-casual" id="subtitle"]]
[[!template text="""give that many people tend to forget, and you've already""" start="00:01:32.680" video="qanda-casual" id="subtitle"]]
[[!template text="""mentioned it in your presentation, is that I've learned so""" start="00:01:35.760" video="qanda-casual" id="subtitle"]]
[[!template text="""much about using git in general thanks to Magit, for the""" start="00:01:39.560" video="qanda-casual" id="subtitle"]]
[[!template text="""reason that it shows you so many options that you might not be""" start="00:01:43.480" video="qanda-casual" id="subtitle"]]
[[!template text="""aware of. For instance, I like to really think about when""" start="00:01:46.720" video="qanda-casual" id="subtitle"]]
[[!template text="""you think about logging in git, Magit allows you to""" start="00:01:50.800" video="qanda-casual" id="subtitle"]]
[[!template text="""discover so many of the finer options, like I only want to""" start="00:01:54.520" video="qanda-casual" id="subtitle"]]
[[!template text="""see the first commit since the merge, or I only want to""" start="00:01:58.120" video="qanda-casual" id="subtitle"]]
[[!template text="""consider this subsection of commits going from master or""" start="00:02:01.520" video="qanda-casual" id="subtitle"]]
[[!template text="""main to the point of your branch. So many things like this""" start="00:02:06.000" video="qanda-casual" id="subtitle"]]
[[!template text="""that you get to discover thanks to Transient. So do you have""" start="00:02:09.000" video="qanda-casual" id="subtitle"]]
[[!template text="""any similar experience on your end? Oh yeah, far too""" start="00:02:11.760" video="qanda-casual" id="subtitle"]]
[[!template text="""many, particularly with EditKit,""" start="00:02:16.880" video="qanda-casual" id="subtitle"]]
[[!template text="""having access to these commands,""" start="00:02:22.360" video="qanda-casual" id="subtitle"]]
[[!template text="""particularly with different granularity on""" start="00:02:28.280" video="qanda-casual" id="subtitle"]]
[[!template text="""S-expressions, sentences, words...""" start="00:02:31.772" video="qanda-casual" id="subtitle"]]
[[!template text="""Probably the most surprising thing I found""" start="00:02:34.774" video="qanda-casual" id="subtitle"]]
[[!template text="""was just how how compelling the""" start="00:02:37.396" video="qanda-casual" id="subtitle"]]
[[!template text="""S-expression would be as a unit of text for working with.""" start="00:02:43.022" video="qanda-casual" id="subtitle"]]
[[!template text="""I found that in most contexts, or in many places,""" start="00:02:49.055" video="qanda-casual" id="subtitle"]]
[[!template text="""it did what I wanted. I found that to be very surprising.""" start="00:02:53.989" video="qanda-casual" id="subtitle"]]
[[!template text="""So unless you've got anything else to add, I think we can just""" start="00:03:02.720" video="qanda-casual" id="subtitle"]]
[[!template text="""jump into questions. Okay, certainly. I'll be reading them""" start="00:03:06.160" video="qanda-casual" id="subtitle"]]
[[!template text="""for you so that it's easier for you. So the first question is,""" start="00:03:10.640" video="qanda-casual" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Q: I wonder whether casual can only be used with the packages you""" start="00:03:13.600" video="qanda-casual" id="subtitle"]]</div>[[!template text="""I wonder whether casual can only be used with the packages""" start="00:03:13.600" video="qanda-casual" id="subtitle"]]
[[!template text="""you mentioned or whether it can be used with whatever""" start="00:03:17.600" video="qanda-casual" id="subtitle"]]
[[!template text="""packages you like. I think it's really the latter. I'm not""" start="00:03:19.600" video="qanda-casual" id="subtitle"]]
[[!template text="""quite sure what the... What the question was really""" start="00:03:25.400" video="qanda-casual" id="subtitle"]]
[[!template text="""pointing at, you know, is the question asking for why I chose""" start="00:03:29.880" video="qanda-casual" id="subtitle"]]
[[!template text="""the packages or the different modes that I did? Or is it, are""" start="00:03:35.040" video="qanda-casual" id="subtitle"]]
[[!template text="""they looking at it from a developer perspective of, can we""" start="00:03:41.680" video="qanda-casual" id="subtitle"]]
[[!template text="""integrate casual with other packages? I mean, since we've""" start="00:03:45.520" video="qanda-casual" id="subtitle"]]
[[!template text="""got a little bit of time ahead of us, feel free to answer both""" start="00:03:50.400" video="qanda-casual" id="subtitle"]]
[[!template text="""questions. Um, I think the answer is, uh. Well, for the 1st,""" start="00:03:52.840" video="qanda-casual" id="subtitle"]]
[[!template text="""1, I've, I've generally tried to stick with using. The modes""" start="00:03:59.280" video="qanda-casual" id="subtitle"]]
[[!template text="""that are already packaged in, um, and so there was a. A big""" start="00:04:05.600" video="qanda-casual" id="subtitle"]]
[[!template text="""refactoring of it where. Initially, I made separate repos""" start="00:04:11.040" video="qanda-casual" id="subtitle"]]
[[!template text="""for the different modes that I supported. And then through a""" start="00:04:16.760" video="qanda-casual" id="subtitle"]]
[[!template text="""discussion, which I won't go into here, that got changed""" start="00:04:20.880" video="qanda-casual" id="subtitle"]]
[[!template text="""where I consolidated all of the different transient menus""" start="00:04:24.960" video="qanda-casual" id="subtitle"]]
[[!template text="""for modes that are built in for behavior that's built into""" start="00:04:30.240" video="qanda-casual" id="subtitle"]]
[[!template text="""the Emacs. I put that into a single package called casual.""" start="00:04:35.040" video="qanda-casual" id="subtitle"]]
[[!template text="""And then integrations with other third party packages that""" start="00:04:39.200" video="qanda-casual" id="subtitle"]]
[[!template text="""are not built in were given the same standalone repo here. In""" start="00:04:44.800" video="qanda-casual" id="subtitle"]]
[[!template text="""terms of folks wanting to integrate that, it's the beauty of""" start="00:04:49.880" video="qanda-casual" id="subtitle"]]
[[!template text="""open source. They can get the repo and uh, and basically""" start="00:04:55.720" video="qanda-casual" id="subtitle"]]
[[!template text="""study that the code base, uh, actually, if they even install""" start="00:05:01.160" video="qanda-casual" id="subtitle"]]
[[!template text="""it through, uh, you know, the package manager in this case,""" start="00:05:05.200" video="qanda-casual" id="subtitle"]]
[[!template text="""uh, coming from the Melbourne distribution, um, they can""" start="00:05:08.600" video="qanda-casual" id="subtitle"]]
[[!template text="""inspect that code and, and, um, make modifications or even.""" start="00:05:12.680" video="qanda-casual" id="subtitle"]]
[[!template text="""uh, you know, integrate that with their other packages and,""" start="00:05:17.920" video="qanda-casual" id="subtitle"]]
[[!template text="""uh, do that to their heart's content. Um, I think one of the""" start="00:05:21.520" video="qanda-casual" id="subtitle"]]
[[!template text="""things that I need to, or at least, uh, you know, that I, I, I""" start="00:05:25.280" video="qanda-casual" id="subtitle"]]
[[!template text="""planned on sort of elaborating further on in the""" start="00:05:29.640" video="qanda-casual" id="subtitle"]]
[[!template text="""documentation is, is that transient already has built in""" start="00:05:32.520" video="qanda-casual" id="subtitle"]]
[[!template text="""mechanisms for modifying an existing transient. So you can""" start="00:05:36.400" video="qanda-casual" id="subtitle"]]
[[!template text="""add commands or, uh, re redefine the bindings. And so. That""" start="00:05:41.280" video="qanda-casual" id="subtitle"]]
[[!template text="""mechanism is available for users if they're not happy with""" start="00:05:47.280" video="qanda-casual" id="subtitle"]]
[[!template text="""those bindings or they want to add their own commands to a""" start="00:05:51.960" video="qanda-casual" id="subtitle"]]
[[!template text="""menu. Yeah, and people are... I'm personally familiar with""" start="00:05:57.160" video="qanda-casual" id="subtitle"]]
[[!template text="""this, again, with Magit, because sometimes, even though""" start="00:06:01.960" video="qanda-casual" id="subtitle"]]
[[!template text="""you have a lot of discoverability for functions that you may""" start="00:06:05.120" video="qanda-casual" id="subtitle"]]
[[!template text="""not know, sometimes you also happen to realize that""" start="00:06:07.480" video="qanda-casual" id="subtitle"]]
[[!template text="""something is missing in the list of available options. I'm""" start="00:06:10.360" video="qanda-casual" id="subtitle"]]
[[!template text="""not sure if Casual actually supports something similar to""" start="00:06:14.000" video="qanda-casual" id="subtitle"]]
[[!template text="""Magit, which is levels of options being displayed.""" start="00:06:16.920" video="qanda-casual" id="subtitle"]]
[[!template text="""Actually, I'm not sure if it's transient native or if it's""" start="00:06:21.560" video="qanda-casual" id="subtitle"]]
[[!template text="""just something that Magit adds over this. No, transient""" start="00:06:24.040" video="qanda-casual" id="subtitle"]]
[[!template text="""supports levels. I've decided""" start="00:06:27.440" video="qanda-casual" id="subtitle"]]
[[!template text="""in large part, I've tried to avoid that just to avoid the""" start="00:06:30.600" video="qanda-casual" id="subtitle"]]
[[!template text="""added complexity of trying to define those levels. Yeah, I""" start="00:06:36.800" video="qanda-casual" id="subtitle"]]
[[!template text="""was going to say that perhaps it doesn't gel very well with""" start="00:06:43.120" video="qanda-casual" id="subtitle"]]
[[!template text="""the notion of casualness that you seem to be introducing the""" start="00:06:47.480" video="qanda-casual" id="subtitle"]]
[[!template text="""package. On one end, you've got something that is supposed""" start="00:06:49.840" video="qanda-casual" id="subtitle"]]
[[!template text="""to be very casual, very easy to use, and on the other end, you""" start="00:06:52.440" video="qanda-casual" id="subtitle"]]
[[!template text="""add levels for stuff that is fairly advanced. So advanced""" start="00:06:56.640" video="qanda-casual" id="subtitle"]]
[[!template text="""versus casual, kind of makes sense that you check this over.""" start="00:06:59.600" video="qanda-casual" id="subtitle"]]
[[!template text="""Alright, moving to the second question which is related to""" start="00:07:05.760" video="qanda-casual" id="subtitle"]]
[[!template text="""the previous one.""" start="00:07:09.360" video="qanda-casual" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""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?""" start="00:07:10.854" video="qanda-casual" id="subtitle"]]</div>[[!template text="""Are there any patterns emerging such that""" start="00:07:10.854" video="qanda-casual" id="subtitle"]]
[[!template text="""it would be impossible, sorry, such that it would be""" start="00:07:13.160" video="qanda-casual" id="subtitle"]]
[[!template text="""possible to once systematize and to automate the mapping of""" start="00:07:15.640" video="qanda-casual" id="subtitle"]]
[[!template text="""mode commands to keyboard-driven menus, possibly even""" start="00:07:19.720" video="qanda-casual" id="subtitle"]]
[[!template text="""have an auto-casual wrapper for an uncovered mode? Does it""" start="00:07:23.520" video="qanda-casual" id="subtitle"]]
[[!template text="""make sense to you? Yes, and I've gotten these comments from a""" start="00:07:26.560" video="qanda-casual" id="subtitle"]]
[[!template text="""number of different folks who really want to see some sort""" start="00:07:35.520" video="qanda-casual" id="subtitle"]]
[[!template text="""of design rule to, or basically, what is it? Some sort of""" start="00:07:42.800" video="qanda-casual" id="subtitle"]]
[[!template text="""design system to be able to generate the UI.""" start="00:07:49.640" video="qanda-casual" id="subtitle"]]
[[!template text="""Conceptually, I think it's doable, but on the flip side, it""" start="00:07:54.680" video="qanda-casual" id="subtitle"]]
[[!template text="""just requires so much coordination that it makes it really""" start="00:08:01.400" video="qanda-casual" id="subtitle"]]
[[!template text="""untenable. In this case, I have very strong opinions. I""" start="00:08:05.320" video="qanda-casual" id="subtitle"]]
[[!template text="""think we're better off trying to handcraft the user""" start="00:08:11.200" video="qanda-casual" id="subtitle"]]
[[!template text="""interface to get basically the best user experience. To try""" start="00:08:15.720" video="qanda-casual" id="subtitle"]]
[[!template text="""to emulate that with a design system, good luck, but I'm not""" start="00:08:20.760" video="qanda-casual" id="subtitle"]]
[[!template text="""I'm not interested in working on that. Right, yeah. I think""" start="00:08:26.400" video="qanda-casual" id="subtitle"]]
[[!template text="""if I try to think a little more about this, it feels like""" start="00:08:31.520" video="qanda-casual" id="subtitle"]]
[[!template text="""there's a notion of intention that is very important when""" start="00:08:34.120" video="qanda-casual" id="subtitle"]]
[[!template text="""you are designing UI and UX. And to have this intention, it""" start="00:08:36.560" video="qanda-casual" id="subtitle"]]
[[!template text="""feels like you cannot just base yourself of a design idea to""" start="00:08:41.480" video="qanda-casual" id="subtitle"]]
[[!template text="""organize the options. You cannot just work off a pattern. I""" start="00:08:45.320" video="qanda-casual" id="subtitle"]]
[[!template text="""think you need to have the trace of human understanding in""" start="00:08:48.800" video="qanda-casual" id="subtitle"]]
[[!template text="""order to have a UX that really works. And judging by the""" start="00:08:53.600" video="qanda-casual" id="subtitle"]]
[[!template text="""option that you've picked in the demos that you've showed""" start="00:08:56.680" video="qanda-casual" id="subtitle"]]
[[!template text="""today, I don't think it'd be particularly easy to organize""" start="00:08:59.000" video="qanda-casual" id="subtitle"]]
[[!template text="""them in a UX just casually for any mode. I think you need some""" start="00:09:04.040" video="qanda-casual" id="subtitle"]]
[[!template text="""human introspection to understand this, if that makes""" start="00:09:07.960" video="qanda-casual" id="subtitle"]]
[[!template text="""sense.""" start="00:09:14.160" video="qanda-casual" id="subtitle"]]
[[!template text="""Moving to the next question, which is related to something""" start="00:09:14.680" video="qanda-casual" id="subtitle"]]
[[!template text="""we discussed about with Magit.""" start="00:09:17.280" video="qanda-casual" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Q: Does Casual have a log where you can see what commands were invoked?""" start="00:09:19.606" video="qanda-casual" id="subtitle"]]</div>[[!template text="""Does Casual have a log where""" start="00:09:19.606" video="qanda-casual" id="subtitle"]]
[[!template text="""you can see what commands were invoked? This is always""" start="00:09:21.080" video="qanda-casual" id="subtitle"]]
[[!template text="""available via M-x view-lossage or via the command-log-mode,""" start="00:09:23.760" video="qanda-casual" id="subtitle"]]
[[!template text="""but I'm wondering if it can do for Emacs command what""" start="00:09:27.480" video="qanda-casual" id="subtitle"]]
[[!template text="""magit-process-buffer does for learning Git commands. And for""" start="00:09:30.994" video="qanda-casual" id="subtitle"]]
[[!template text="""everyone who's currently in Emacs, whenever you're""" start="00:09:34.480" video="qanda-casual" id="subtitle"]]
[[!template text="""running a command in Magit, it's always printing the exact""" start="00:09:37.440" video="qanda-casual" id="subtitle"]]
[[!template text="""command that was run in a shell, inside this $""" start="00:09:40.640" video="qanda-casual" id="subtitle"]]
[[!template text="""menu. So does Casual actually provide something similar,""" start="00:09:44.800" video="qanda-casual" id="subtitle"]]
[[!template text="""Charles? I don't know. In general, because I'm building off""" start="00:09:47.400" video="qanda-casual" id="subtitle"]]
[[!template text="""of transient, it would have to be a mechanism that's""" start="00:09:52.600" video="qanda-casual" id="subtitle"]]
[[!template text="""available through transient. And You know, I would let""" start="00:09:55.200" video="qanda-casual" id="subtitle"]]
[[!template text="""Jonas speak more on that capability, because to be honest, I""" start="00:10:01.520" video="qanda-casual" id="subtitle"]]
[[!template text="""mean, even to my knowledge of transient is not that deep,""" start="00:10:06.800" video="qanda-casual" id="subtitle"]]
[[!template text="""actually.""" start="00:10:14.880" video="qanda-casual" id="subtitle"]]
[[!template text="""Well, it's funny that you say this because even though you""" start="00:10:16.840" video="qanda-casual" id="subtitle"]]
[[!template text="""say your knowledge might not be that big, you still managed""" start="00:10:21.400" video="qanda-casual" id="subtitle"]]
[[!template text="""to develop a whole suite of tools on top of it. So as far as""" start="00:10:23.760" video="qanda-casual" id="subtitle"]]
[[!template text="""people who do not know transient a whole lot, you're doing a""" start="00:10:27.240" video="qanda-casual" id="subtitle"]]
[[!template text="""pretty damn good job. Let me tell you that much. Thank you.""" start="00:10:29.600" video="qanda-casual" id="subtitle"]]
[[!template text="""Yeah, I think sort of what I bring to the table is, you know,""" start="00:10:33.160" video="qanda-casual" id="subtitle"]]
[[!template text="""quite a considerable career in software development on""" start="00:10:37.720" video="qanda-casual" id="subtitle"]]
[[!template text="""other software ecosystems. And as of late, I've spent""" start="00:10:41.920" video="qanda-casual" id="subtitle"]]
[[!template text="""basically the past decade working on iOS apps. Right. I""" start="00:10:47.880" video="qanda-casual" id="subtitle"]]
[[!template text="""think it's refreshing to be able to go back to something that""" start="00:10:52.440" video="qanda-casual" id="subtitle"]]
[[!template text="""looks like Emacs after iOS.""" start="00:10:55.200" video="qanda-casual" id="subtitle"]]
[[!template text="""Well, that's perhaps another longer conversation there.""" start="00:10:56.840" video="qanda-casual" id="subtitle"]]
[[!template text="""Speaking of longer conversation, we have only about 10""" start="00:11:03.880" video="qanda-casual" id="subtitle"]]
[[!template text="""minutes left until we need to move on to the next talk. But""" start="00:11:08.600" video="qanda-casual" id="subtitle"]]
[[!template text="""thank you everyone for all the questions you're asking. I'm""" start="00:11:11.600" video="qanda-casual" id="subtitle"]]
[[!template text="""not saying this because we finished, but it's good to see so""" start="00:11:13.760" video="qanda-casual" id="subtitle"]]
[[!template text="""many people writing in the chat and asking questions. It""" start="00:11:17.240" video="qanda-casual" id="subtitle"]]
[[!template text="""always shows that you're interested and that's always""" start="00:11:19.920" video="qanda-casual" id="subtitle"]]
[[!template text="""lovely to us. And you've mentioned Jonas. Obviously, we're""" start="00:11:23.080" video="qanda-casual" id="subtitle"]]
[[!template text="""talking about Jonas Bernoulli, i.e. Tarsius, the""" start="00:11:26.080" video="qanda-casual" id="subtitle"]]
[[!template text="""maintainer of transient. And what Charles just mentioned""" start="00:11:29.360" video="qanda-casual" id="subtitle"]]
[[!template text="""about having a transient tooling to print the lossage,""" start="00:11:33.440" video="qanda-casual" id="subtitle"]]
[[!template text="""basically, of which sex were run by which command, feels""" start="00:11:37.560" video="qanda-casual" id="subtitle"]]
[[!template text="""like this is something that would be interesting. So,""" start="00:11:43.040" video="qanda-casual" id="subtitle"]]
[[!template text="""perhaps, I'm not sure if Tarsius is still on the chat""" start="00:11:44.840" video="qanda-casual" id="subtitle"]]
[[!template text="""currently, but he was definitely around earlier today, so""" start="00:11:50.240" video="qanda-casual" id="subtitle"]]
[[!template text="""we'll make sure that the ID lands on his lap later on. All""" start="00:11:52.640" video="qanda-casual" id="subtitle"]]
[[!template text="""right, moving to the next question.""" start="00:11:55.840" video="qanda-casual" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Q: Is there a setting to close menu after executing command?""" start="00:12:00.204" video="qanda-casual" id="subtitle"]]</div>[[!template text="""Is there a setting to""" start="00:12:00.204" video="qanda-casual" id="subtitle"]]
[[!template text="""close menu after executing a command? By default, it will.""" start="00:12:00.920" video="qanda-casual" id="subtitle"]]
[[!template text="""There's a slot that you can define in a transient""" start="00:12:07.480" video="qanda-casual" id="subtitle"]]
[[!template text="""prefix called :transient. And if you set that to true,""" start="00:12:10.880" video="qanda-casual" id="subtitle"]]
[[!template text="""then it will persist the menu after executing the command.""" start="00:12:17.200" video="qanda-casual" id="subtitle"]]
[[!template text="""But by default, it will actually dismiss the menu. This""" start="00:12:20.640" video="qanda-casual" id="subtitle"]]
[[!template text="""feels... Did you actually get to play with Hydra before""" start="00:12:26.160" video="qanda-casual" id="subtitle"]]
[[!template text="""playing with transients? To be honest, no. Yeah, I kind of""" start="00:12:29.360" video="qanda-casual" id="subtitle"]]
[[!template text="""slept on Hydra or at least, you know, I really wasn't all that""" start="00:12:36.280" video="qanda-casual" id="subtitle"]]
[[!template text="""ambitious with working with different packages until""" start="00:12:41.720" video="qanda-casual" id="subtitle"]]
[[!template text="""about like, a little less than 2 years ago or so.""" start="00:12:44.640" video="qanda-casual" id="subtitle"]]
[[!template text="""And then the other part was also, um. You know, not not really""" start="00:12:48.640" video="qanda-casual" id="subtitle"]]
[[!template text="""a technical. Start a comparison because I really don't want""" start="00:12:57.640" video="qanda-casual" id="subtitle"]]
[[!template text="""to upset folks here, but, uh. But more along the lines of just""" start="00:13:02.000" video="qanda-casual" id="subtitle"]]
[[!template text="""going with the notion that transient was being built in or""" start="00:13:05.760" video="qanda-casual" id="subtitle"]]
[[!template text="""packaged as a built in package for Emacs. I went with using""" start="00:13:09.560" video="qanda-casual" id="subtitle"]]
[[!template text="""that for my implementation. Cool. And I don't think there's""" start="00:13:15.280" video="qanda-casual" id="subtitle"]]
[[!template text="""anything controversial with what you're saying right now""" start="00:13:20.680" video="qanda-casual" id="subtitle"]]
[[!template text="""because, you know, we had earlier today, Euro Rechenko, the""" start="00:13:23.200" video="qanda-casual" id="subtitle"]]
[[!template text="""new maintainer of Augment, mentioning that he'd like to""" start="00:13:28.840" video="qanda-casual" id="subtitle"]]
[[!template text="""have a better integration with Transient because""" start="00:13:32.440" video="qanda-casual" id="subtitle"]]
[[!template text="""Transient is, it looks like it's here to stay for a long time""" start="00:13:34.320" video="qanda-casual" id="subtitle"]]
[[!template text="""and might even land in core at some point. So, it definitely""" start="00:13:39.160" video="qanda-casual" id="subtitle"]]
[[!template text="""feels comparing Hydra because for me, most of my UI needs in""" start="00:13:42.880" video="qanda-casual" id="subtitle"]]
[[!template text="""Emacs prior to Transient were done via Hydra because it was a""" start="00:13:49.520" video="qanda-casual" id="subtitle"]]
[[!template text="""very convenient tooling. For people who do not know, Hydra""" start="00:13:54.440" video="qanda-casual" id="subtitle"]]
[[!template text="""is written by AboAbo. who's also authored packages like""" start="00:13:57.800" video="qanda-casual" id="subtitle"]]
[[!template text="""Lispy, an interactive Lisp mode, also for Ivy, which you""" start="00:14:02.920" video="qanda-casual" id="subtitle"]]
[[!template text="""might know as the counterpart of Helm, maybe five years ago.""" start="00:14:08.640" video="qanda-casual" id="subtitle"]]
[[!template text="""So all those packages, they were very innovative for the""" start="00:14:14.240" video="qanda-casual" id="subtitle"]]
[[!template text="""time and it's cool to see that some of the ideas which were""" start="00:14:17.960" video="qanda-casual" id="subtitle"]]
[[!template text="""introduced by IV and Helm and all this are then taken by tools""" start="00:14:21.200" video="qanda-casual" id="subtitle"]]
[[!template text="""like Transient and done perhaps with a little more""" start="00:14:28.040" video="qanda-casual" id="subtitle"]]
[[!template text="""hindsight now that people have experienced a little more of""" start="00:14:30.280" video="qanda-casual" id="subtitle"]]
[[!template text="""it. Okay, we have still a little bit of time. Moving on to the""" start="00:14:33.640" video="qanda-casual" id="subtitle"]]
[[!template text="""next question.""" start="00:14:38.360" video="qanda-casual" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Q: What modes are you working on at the moment for casual / are excited to explore?""" start="00:14:40.282" video="qanda-casual" id="subtitle"]]</div>[[!template text="""What modes are you working on at the moment""" start="00:14:40.282" video="qanda-casual" id="subtitle"]]
[[!template text="""for Casual or are you excited to explore?""" start="00:14:41.920" video="qanda-casual" id="subtitle"]]
[[!template text="""Well, so I just recently published one for calendar. And so I""" start="00:14:44.160" video="qanda-casual" id="subtitle"]]
[[!template text="""think the calendar interface has a lot of really""" start="00:14:54.000" video="qanda-casual" id="subtitle"]]
[[!template text="""interesting behavior, particularly its support for""" start="00:14:56.840" video="qanda-casual" id="subtitle"]]
[[!template text="""non-Gregorian events, which is, you know, for folks who'd""" start="00:15:00.480" video="qanda-casual" id="subtitle"]]
[[!template text="""like, in my case, looking at the lunar calendar, it's great""" start="00:15:07.480" video="qanda-casual" id="subtitle"]]
[[!template text="""to have tooling to be able to not have to leave Emacs to figure""" start="00:15:13.080" video="qanda-casual" id="subtitle"]]
[[!template text="""out when a lunar date is.""" start="00:15:17.800" video="qanda-casual" id="subtitle"]]
[[!template text="""Then, I think, you know, for the most part, My work on casual""" start="00:15:19.760" video="qanda-casual" id="subtitle"]]
[[!template text="""was really kind of my summer of code for Emacs here. And so in""" start="00:15:29.600" video="qanda-casual" id="subtitle"]]
[[!template text="""many ways, the velocity of casual development is going to""" start="00:15:34.960" video="qanda-casual" id="subtitle"]]
[[!template text="""slow down where I've got a big bulk of the modes that I really""" start="00:15:41.520" video="qanda-casual" id="subtitle"]]
[[!template text="""wanted to take care of. Um, I think one experimental thing""" start="00:15:48.920" video="qanda-casual" id="subtitle"]]
[[!template text="""that I think is very unbaked, but I would, you know, if folks""" start="00:15:57.520" video="qanda-casual" id="subtitle"]]
[[!template text="""are interested, uh, maybe looking at it is, uh, taking a look""" start="00:16:01.000" video="qanda-casual" id="subtitle"]]
[[!template text="""at edebug and trying to make that an easier thing to do. Um,""" start="00:16:06.880" video="qanda-casual" id="subtitle"]]
[[!template text="""that is ambitious. Uh, yeah, so maybe too ambitious.""" start="00:16:13.080" video="qanda-casual" id="subtitle"]]
[[!template text="""Uh, other things are like really scary projects.""" start="00:16:18.360" video="qanda-casual" id="subtitle"]]
[[!template text="""And so, not to say that""" start="00:16:23.714" video="qanda-casual" id="subtitle"]]
[[!template text="""I really have a desire to do it, but another""" start="00:16:25.196" video="qanda-casual" id="subtitle"]]
[[!template text="""one would be ediff. Right. Okay. Relitigating it's""" start="00:16:28.320" video="qanda-casual" id="subtitle"]]
[[!template text="""interface, um, to have a transient menu. I say""" start="00:16:33.240" video="qanda-casual" id="subtitle"]]
[[!template text="""these things, but I'm also scared of those things. Yeah, I""" start="00:16:43.640" video="qanda-casual" id="subtitle"]]
[[!template text="""mean, I think it's a lovely way to tackle the project,""" start="00:16:47.920" video="qanda-casual" id="subtitle"]]
[[!template text="""really, because you are fully aware that edebug and ediffs""" start="00:16:50.720" video="qanda-casual" id="subtitle"]]
[[!template text="""are mastodons when it comes to Emacs. They work very well. If""" start="00:16:55.480" video="qanda-casual" id="subtitle"]]
[[!template text="""you've ever tried to do a conflict resolution in Magit and""" start="00:16:59.400" video="qanda-casual" id="subtitle"]]
[[!template text="""you've pressed e, that usually opens ediff for you. If you""" start="00:17:02.640" video="qanda-casual" id="subtitle"]]
[[!template text="""happen to know how it works, it's amazing, but if you do not know""" start="00:17:07.200" video="qanda-casual" id="subtitle"]]
[[!template text="""it works, the interface is a little... It's a lot to take in""" start="00:17:09.960" video="qanda-casual" id="subtitle"]]
[[!template text="""at the moment. You have to know a, b, w... I can, and I""" start="00:17:13.720" video="qanda-casual" id="subtitle"]]
[[!template text="""can never remember which one is the lower and which one is the""" start="00:17:20.880" video="qanda-casual" id="subtitle"]]
[[!template text="""upper. Like, it constantly goes in different directions. I""" start="00:17:24.440" video="qanda-casual" id="subtitle"]]
[[!template text="""can never remember which is the commit I'm trying to merge,""" start="00:17:27.360" video="qanda-casual" id="subtitle"]]
[[!template text="""which is the commit I'm currently being on. It has nothing to""" start="00:17:29.720" video="qanda-casual" id="subtitle"]]
[[!template text="""do with Magit. It's merely Git and the way they conceive""" start="00:17:32.760" video="qanda-casual" id="subtitle"]]
[[!template text="""this. And probably, there might be a very nice way to""" start="00:17:36.840" video="qanda-casual" id="subtitle"]]
[[!template text="""remember it, but I still haven't found it after 10 years as a""" start="00:17:39.720" video="qanda-casual" id="subtitle"]]
[[!template text="""software developer. So, I guess I need to dig a little""" start="00:17:42.080" video="qanda-casual" id="subtitle"]]
[[!template text="""deeper. But what I find lovely about the approach is that for""" start="00:17:44.920" video="qanda-casual" id="subtitle"]]
[[!template text="""you, working on the interface to those tools is actually""" start="00:17:48.520" video="qanda-casual" id="subtitle"]]
[[!template text="""something that allows you to discover how they work, but""" start="00:17:52.600" video="qanda-casual" id="subtitle"]]
[[!template text="""also how to make it more easy for people to understand how""" start="00:17:55.160" video="qanda-casual" id="subtitle"]]
[[!template text="""those tools work. So you're doing the work of""" start="00:17:59.120" video="qanda-casual" id="subtitle"]]
[[!template text="""understanding, of digesting a lot of the commands, so that""" start="00:18:02.040" video="qanda-casual" id="subtitle"]]
[[!template text="""people do not have to go through the same pain as you have. So I""" start="00:18:05.400" video="qanda-casual" id="subtitle"]]
[[!template text="""find this a very noble endeavor in a way.""" start="00:18:08.600" video="qanda-casual" id="subtitle"]]
<div class="transcript-heading">[[!template new="1" text="""Getting older""" start="00:18:14.280" video="qanda-casual" id="subtitle"]]</div>[[!template text="""In so many ways, as perhaps I've mentioned""" start="00:18:14.280" video="qanda-casual" id="subtitle"]]
[[!template text="""in my talk, I'm getting older. I can't remember all""" start="00:18:18.560" video="qanda-casual" id="subtitle"]]
[[!template text="""these damn commands and my hand dexterity is failing. I""" start="00:18:23.640" video="qanda-casual" id="subtitle"]]
[[!template text="""mean, there's so many. Like multiple keystroke""" start="00:18:28.760" video="qanda-casual" id="subtitle"]]
[[!template text="""bindings, which I absolutely loathe. At most,""" start="00:18:33.200" video="qanda-casual" id="subtitle"]]
[[!template text="""like I can, I can only physically handle like, two""" start="00:18:37.480" video="qanda-casual" id="subtitle"]]
[[!template text="""characters, three maybe, at a time. So maybe""" start="00:18:40.800" video="qanda-casual" id="subtitle"]]
[[!template text="""that's just me, and others may""" start="00:18:47.800" video="qanda-casual" id="subtitle"]]
[[!template text="""feel differently, but at the same time,""" start="00:18:51.240" video="qanda-casual" id="subtitle"]]
[[!template text="""the work that I've invested here is has been very personal""" start="00:18:56.000" video="qanda-casual" id="subtitle"]]
[[!template text="""for me because I just don't want to work that hard, and I want to""" start="00:19:01.520" video="qanda-casual" id="subtitle"]]
[[!template text="""keep using Emacs. Yeah, and that's again a very good""" start="00:19:06.240" video="qanda-casual" id="subtitle"]]
[[!template text="""endeavor, I think, to have. And there's one last thing that""" start="00:19:11.160" video="qanda-casual" id="subtitle"]]
[[!template text="""I'd like to mention, because you've mentioned this project""" start="00:19:13.720" video="qanda-casual" id="subtitle"]]
[[!template text="""of yours, Casual, being some kind of summer of code, with the""" start="00:19:16.040" video="qanda-casual" id="subtitle"]]
[[!template text="""implication that you've worked a whole lot of it during the""" start="00:19:19.880" video="qanda-casual" id="subtitle"]]
[[!template text="""summer or during this period. and perhaps investment will""" start="00:19:22.400" video="qanda-casual" id="subtitle"]]
[[!template text="""die down a little bit now. But I think it's completely fine to""" start="00:19:26.920" video="qanda-casual" id="subtitle"]]
[[!template text="""have moments when you feel particularly excited and you do a""" start="00:19:31.120" video="qanda-casual" id="subtitle"]]
[[!template text="""lot of work, and sometimes it dies down a little bit.""" start="00:19:33.880" video="qanda-casual" id="subtitle"]]
[[!template text="""Personally, I've been... Four years ago, I was working a lot""" start="00:19:36.960" video="qanda-casual" id="subtitle"]]
[[!template text="""on Org Roam and I had my Summer of Code on Org Roam. And that was""" start="00:19:41.440" video="qanda-casual" id="subtitle"]]
[[!template text="""great. I was able to do a lot of things, to get a lot of things""" start="00:19:44.680" video="qanda-casual" id="subtitle"]]
[[!template text="""out of my head. But eventually, you know, you have to go make""" start="00:19:47.160" video="qanda-casual" id="subtitle"]]
[[!template text="""some money to survive or you have to take care of family and""" start="00:19:50.560" video="qanda-casual" id="subtitle"]]
[[!template text="""stuff like this. So, life tends to get in the way of your""" start="00:19:53.280" video="qanda-casual" id="subtitle"]]
[[!template text="""hobbies, especially when, you know, it's so... It's""" start="00:19:56.400" video="qanda-casual" id="subtitle"]]
[[!template text="""hobbies that involve so much of your time to get things""" start="00:20:00.520" video="qanda-casual" id="subtitle"]]
[[!template text="""right, like programming does. But, you know, we appreciate""" start="00:20:03.240" video="qanda-casual" id="subtitle"]]
[[!template text="""all the work you've done, Charles, and the fact that you've""" start="00:20:07.880" video="qanda-casual" id="subtitle"]]
[[!template text="""put it out there for people to enjoy. It's already a victory.""" start="00:20:09.800" video="qanda-casual" id="subtitle"]]
[[!template text="""You don't need to feel compelled to keep working on it""" start="00:20:12.680" video="qanda-casual" id="subtitle"]]
[[!template text="""because ultimately, as you said, the beauty of open source""" start="00:20:15.000" video="qanda-casual" id="subtitle"]]
[[!template text="""is that people can just send PRs and get the project going""" start="00:20:18.160" video="qanda-casual" id="subtitle"]]
[[!template text="""again. Yeah. I mean, and if anything, you know, folks have""" start="00:20:21.760" video="qanda-casual" id="subtitle"]]
[[!template text="""expressed to me that, you know, in many ways, a lot of this""" start="00:20:28.520" video="qanda-casual" id="subtitle"]]
[[!template text="""stuff should be, you know, sort of folded in the core. And,""" start="00:20:33.320" video="qanda-casual" id="subtitle"]]
[[!template text="""you know, I would love to see at least the ideals of, or at""" start="00:20:37.960" video="qanda-casual" id="subtitle"]]
[[!template text="""least an openness into thinking, rethinking the interface""" start="00:20:45.160" video="qanda-casual" id="subtitle"]]
[[!template text="""for Emacs. So, you know, it doesn't have to be, basically""" start="00:20:49.320" video="qanda-casual" id="subtitle"]]
[[!template text="""work the way it worked for basically the last half of the 20th""" start="00:20:54.120" video="qanda-casual" id="subtitle"]]
[[!template text="""century here. Yeah, Emacs is flexible enough to have""" start="00:20:59.120" video="qanda-casual" id="subtitle"]]
[[!template text="""different approaches and, you know, transient is one""" start="00:21:03.520" video="qanda-casual" id="subtitle"]]
[[!template text="""approach, but at the same time, you know, the ability to""" start="00:21:10.280" video="qanda-casual" id="subtitle"]]
[[!template text="""reimagine the user interface for, you know, the computing""" start="00:21:17.760" video="qanda-casual" id="subtitle"]]
[[!template text="""needs, you know, for basically users needs today, whether""" start="00:21:22.560" video="qanda-casual" id="subtitle"]]
[[!template text="""you write or code or anything of that nature, I think is an""" start="00:21:28.160" video="qanda-casual" id="subtitle"]]
[[!template text="""exciting and great thing. Yeah, well, thank you so much for""" start="00:21:33.120" video="qanda-casual" id="subtitle"]]
[[!template text="""this conclusion. So I'm a little sorry, because sadly, we""" start="00:21:39.040" video="qanda-casual" id="subtitle"]]
[[!template text="""needed to move the stream to the next talk. So we've lost""" start="00:21:41.640" video="qanda-casual" id="subtitle"]]
[[!template text="""about 20 seconds of what you said. But don't worry, whatever""" start="00:21:45.920" video="qanda-casual" id="subtitle"]]
[[!template text="""you've said will be available on the website. I didn't want""" start="00:21:49.640" video="qanda-casual" id="subtitle"]]
[[!template text="""to interrupt, sadly, because I didn't want to be rude. But I""" start="00:21:52.000" video="qanda-casual" id="subtitle"]]
[[!template text="""think we did a great job answering the questions. So thank""" start="00:21:55.760" video="qanda-casual" id="subtitle"]]
[[!template text="""you so much for taking the time. I'll need to get going,""" start="00:21:58.680" video="qanda-casual" id="subtitle"]]
[[!template text="""because we might have a problem with the next talk. So thank""" start="00:22:01.200" video="qanda-casual" id="subtitle"]]
[[!template text="""you so much, Charles. Certainly. Take care. Thank you.""" start="00:22:02.760" video="qanda-casual" id="subtitle"]]
[[!template text="""Appreciate it. Bye.""" start="00:22:05.920" video="qanda-casual" id="subtitle"]]
</div>Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20casual%3A%20Re-imagining%20the%20Emacs%20user%20experience%20with%20Casual%20Suite)
<!-- End of emacsconf-publish-after-page -->
|