summaryrefslogblamecommitdiffstats
path: root/2021/captions/emacsconf-2021-model--extending-the-model-of-emacs-to-other-applications--laszlo-krajnikovszkij--main.vtt
blob: 3985f09ae45991118a374d39976b22d62d6d96b5 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676



































































































































































































































































































































































































































































































































































































































































































                                         
WEBVTT

00:06.399 --> 00:07.670
Hello, everyone. My name is

00:07.670 --> 00:08.800
Laszlo Krajnikovszkij,

00:08.800 --> 00:10.559
and today I would like to share

00:10.559 --> 00:12.000
some ideas about extending

00:12.000 --> 00:15.200
the model of Emacs to other applications.

00:15.200 --> 00:16.720
Brief introduction of myself:

00:16.720 --> 00:18.400
I am from Budapest, Hungary;

00:18.400 --> 00:20.320
and I have a background

00:20.320 --> 00:21.760
in Financial Economics,

00:21.760 --> 00:24.480
but by occupation I run

00:24.480 --> 00:26.320
a software development company

00:26.320 --> 00:29.119
where I mostly do product management.

00:29.119 --> 00:34.399
I try to do most of my work from Emacs.

00:34.399 --> 00:36.160
I've been using it for the past

00:36.160 --> 00:37.200
two or three years

00:37.200 --> 00:39.120
as a computer science hobby

00:39.120 --> 00:41.280
and this fascinating piece of software

00:41.280 --> 00:44.239
taught me a lot of different concepts

00:44.239 --> 00:46.000
about software architecture

00:46.000 --> 00:48.800
and programming languages,

00:48.800 --> 00:51.440
and also raised a lot of

00:51.440 --> 00:52.719
philosophical questions

00:52.719 --> 00:55.760
about human-computer interaction.

00:55.760 --> 00:57.039
I've been mostly using it

00:57.039 --> 00:59.680
for organizing my personal information,

00:59.680 --> 01:03.600
writing notes and tracking my agenda,

01:03.600 --> 01:05.519
but occasionally, I've also used it

01:05.519 --> 01:07.119
for reading and writing code

01:07.119 --> 01:09.360
and for also reading news, email,

01:09.360 --> 01:12.479
and browsing the web.

01:12.479 --> 01:16.400
What do I mean by the 'model' of Emacs?

01:16.400 --> 01:18.479
For me, the 'model' of Emacs is about

01:18.479 --> 01:21.920
the interaction model.

01:21.920 --> 01:24.880
And it's not... Emacs is just a tool

01:24.880 --> 01:26.560
for interacting with the computer.

01:26.560 --> 01:28.640
It's sort of a universal interface

01:28.640 --> 01:31.119
that allows for consistency

01:31.119 --> 01:33.280
across different apps,

01:33.280 --> 01:36.240
because everything is brought down to

01:36.240 --> 01:39.200
an Emacs buffer, which is a

01:39.200 --> 01:42.399
text-oriented interface,

01:42.399 --> 01:44.005
but that can have consistent

01:44.005 --> 01:44.880
keybinding scheme,

01:44.880 --> 01:46.960
they have consistent color scheme,

01:46.960 --> 01:50.640
and consistent workflow in general.

01:50.640 --> 01:53.200
Also, Emacs has a lot of functionality

01:53.200 --> 01:55.920
and utilizes mnemonic key bindings

01:55.920 --> 01:57.680
for calling functions,

01:57.680 --> 01:59.920
which is much more powerful than

01:59.920 --> 02:02.000
navigating contextual menus

02:02.000 --> 02:03.840
with a pointer,

02:03.840 --> 02:07.119
because the functions that are

02:07.119 --> 02:08.239
repeated the most

02:08.239 --> 02:10.640
are then ingrained in the muscle memory,

02:10.640 --> 02:12.879
therefore reducing the lag

02:12.879 --> 02:15.680
between the thought that is occurring

02:15.680 --> 02:17.520
in your mind, and its reflection

02:17.520 --> 02:21.280
on your computer screen.

02:21.280 --> 02:23.040
And also, Emacs provides

02:23.040 --> 02:25.360
a huge number of packages

02:25.360 --> 02:28.560
that can all be inspected and modified,

02:28.560 --> 02:30.640
and extended, and recombined,

02:30.640 --> 02:35.599
and just provides the best-possible

02:35.599 --> 02:37.840
malleable system experience

02:37.840 --> 02:42.080
that can potentially lead to

02:42.080 --> 02:44.080
almost any desired setup

02:44.080 --> 02:47.599
for the end-user.

02:47.599 --> 02:49.440
So, Emacs is great,

02:49.440 --> 02:52.239
but I need to use a lot of

02:52.239 --> 02:53.280
different other tools

02:53.280 --> 02:55.200
to collaborate with my coworkers,

02:55.200 --> 02:57.519
with my clients and vendors.

02:57.519 --> 03:00.080
On a normal day, I would need to be

03:00.080 --> 03:02.640
switching between five to six

03:02.640 --> 03:04.319
different web applications

03:04.319 --> 03:07.840
and chat applications.

03:07.840 --> 03:11.840
They all have the same flaws.

03:11.840 --> 03:14.879
They all lack customizability,

03:14.879 --> 03:16.560
because it was never intended

03:16.560 --> 03:19.280
by the original developers of the app

03:19.280 --> 03:21.120
that the end user can tinker

03:21.120 --> 03:24.239
with the product they're creating.

03:24.239 --> 03:29.120
But also, those apps are cloud-based,

03:29.120 --> 03:33.599
and usually not very good for privacy,

03:33.599 --> 03:36.480
and this also creates limitations

03:36.480 --> 03:40.080
for offline-based workflows,

03:40.080 --> 03:43.599
or for in general not relying on

03:43.599 --> 03:44.560
the internet connection

03:44.560 --> 03:46.959
to use something.

03:46.959 --> 03:49.440
All these applications,

03:49.440 --> 03:50.720
they create a situation

03:50.720 --> 03:53.040
when there's a lot of context-switching

03:53.040 --> 03:55.360
between different apps,

03:55.360 --> 03:56.959
and this context-switching

03:56.959 --> 03:59.920
comes from different color schemes,

03:59.920 --> 04:03.280
different workflows in general

04:03.280 --> 04:04.879
for different apps.

04:04.879 --> 04:06.400
So, there is always

04:06.400 --> 04:10.400
this little frame of time

04:10.400 --> 04:13.599
where you need to orient yourself

04:13.599 --> 04:15.280
in this other application.

04:15.280 --> 04:17.280
Of course, over time,

04:17.280 --> 04:18.799
it gets more automated,

04:18.799 --> 04:20.560
but still, this context switching

04:20.560 --> 04:26.720
is very bad for productivity.

04:26.720 --> 04:30.080
These apps don't support very well

04:30.080 --> 04:31.759
the keyboard-driven workflows,

04:31.759 --> 04:33.520
because the default set of keybindings

04:33.520 --> 04:34.479
is always limited,

04:34.479 --> 04:39.280
and you always need to resort to

04:39.280 --> 04:44.160
mouse-driven workflows.

04:44.160 --> 04:46.400
But Emacs has some issues

04:46.400 --> 04:48.320
as a tool for work as well.

04:48.320 --> 04:50.800
First of all, it lacks integration

04:50.800 --> 04:51.759
with all these tools,

04:51.759 --> 04:54.560
so I constantly need to be switching

04:54.560 --> 04:57.759
between Emacs and these applications,

04:57.759 --> 04:59.919
or basically, my web browser.

04:59.919 --> 05:03.039
Emacs is very good for text input

05:03.039 --> 05:04.720
and for editing text,

05:04.720 --> 05:07.039
but it's not always perfect

05:07.039 --> 05:09.440
for reading information

05:09.440 --> 05:11.199
from an Emacs buffer,

05:11.199 --> 05:12.080
because it doesn't

05:12.080 --> 05:16.560
render images and HTML properly.

05:16.560 --> 05:18.800
Also, Emacs lacks performance

05:18.800 --> 05:19.919
under heavy load,

05:19.919 --> 05:21.840
so when you try to run

05:21.840 --> 05:23.280
too many things in parallel,

05:23.280 --> 05:26.560
the single-threaded nature of Emacs

05:26.560 --> 05:28.880
just makes it hang.

05:28.880 --> 05:30.960
For this reason,

05:30.960 --> 05:32.560
I wouldn't rely on Emacs

05:32.560 --> 05:38.320
to take care of all my system processes.

05:38.320 --> 05:40.400
And of course, it has some

05:40.400 --> 05:42.240
legacy UI limitations

05:42.240 --> 05:46.400
being a software that was written

05:46.400 --> 05:49.039
40 years ago.

05:49.039 --> 05:53.759
This results in a very limited usability

05:53.759 --> 05:59.680
on mobile and other touch devices.

05:59.680 --> 06:01.759
I've been thinking

06:01.759 --> 06:03.840
about a hybrid approach

06:03.840 --> 06:05.840
that you could still use Emacs

06:05.840 --> 06:10.080
as a core of your life,

06:10.080 --> 06:11.840
and then extend it

06:11.840 --> 06:15.120
with adjacent web applications

06:15.120 --> 06:16.960
where Emacs can be used

06:16.960 --> 06:21.600
as a text processing backend

06:21.600 --> 06:24.080
and use Org mode files

06:24.080 --> 06:25.600
as a universal format

06:25.600 --> 06:29.600
for converting textual data,

06:29.600 --> 06:33.199
and then If emacs can be

06:33.199 --> 06:36.639
connected with those applications

06:36.639 --> 06:37.520
that I mentioned

06:37.520 --> 06:39.520
a couple of slides before

06:39.520 --> 06:41.280
through their API, and you can have

06:41.280 --> 06:43.199
a two-way communication between them,

06:43.199 --> 06:46.000
and just export in JSON, let's say,

06:46.000 --> 06:47.440
and then convert to Org mode,

06:47.440 --> 06:49.039
and then use the Org mode

06:49.039 --> 06:52.960
for these local web apps.

06:52.960 --> 06:57.599
Then you can use Emacs for editing,

06:57.599 --> 07:00.800
and Org mode, but then you can use

07:00.800 --> 07:03.360
this adjacent web application

07:03.360 --> 07:05.039
for viewing information,

07:05.039 --> 07:08.720
making small edits, and in general,

07:08.720 --> 07:11.692
possibly have an enhanced

07:11.692 --> 07:14.639
user-defined UI that is

07:14.639 --> 07:17.039
directly connected to Emacs.

07:17.039 --> 07:19.759
Emacs Application Framework

07:19.759 --> 07:21.520
is a project that tries to achieve

07:21.520 --> 07:23.840
a common goal, but it tries to

07:23.840 --> 07:24.639
achieve that through

07:24.639 --> 07:25.520
displaying everything

07:25.520 --> 07:27.840
in the Emacs buffer,

07:27.840 --> 07:28.840
whereas I'm thinking

07:28.840 --> 07:30.800
if it can be displayed

07:30.800 --> 07:33.759
in any web browser, but utilize

07:33.759 --> 07:36.560
Emacs Application Framework API

07:36.560 --> 07:38.639
as a bridge between Elisp

07:38.639 --> 07:40.960
and Python and Javascript,

07:40.960 --> 07:41.759
so you can use

07:41.759 --> 07:44.879
the modern front-end frameworks

07:44.879 --> 07:48.560
to create those web interfaces easier

07:48.560 --> 07:49.280
and connect them

07:49.280 --> 07:53.919
with Emacs functionality.

07:53.919 --> 07:57.280
These user-controlled web apps

07:57.280 --> 08:04.126
would basically result in

08:04.126 --> 08:05.680
the user connecting

08:05.680 --> 08:10.319
to this external cloud-based tool,

08:10.319 --> 08:13.759
let's say Asana, but then

08:13.759 --> 08:16.400
process everything through Org mode

08:16.400 --> 08:19.840
and then display in an Org mode file

08:19.840 --> 08:24.720
or display in this enhanced way

08:24.720 --> 08:28.960
through the adjacent local web app,

08:28.960 --> 08:31.280
a front-end for which

08:31.280 --> 08:34.080
could be written in any .js framework

08:34.080 --> 08:37.440
for front-end development.

08:37.440 --> 08:42.159
I encourage everyone in the community

08:42.159 --> 08:45.279
who is interested in similar questions

08:45.279 --> 08:48.160
to share their opinion

08:48.160 --> 08:50.959
about the potential risks and drawbacks,

08:50.959 --> 08:53.120
about any other ways

08:53.120 --> 08:54.640
to achieve a similar goal,

08:54.640 --> 08:57.519
if anyone else is doing this already

08:57.519 --> 08:59.920
that i might not know about,

08:59.920 --> 09:02.399
and in general, just share ideas

09:02.399 --> 09:03.760
about what else can be done

09:03.760 --> 09:07.519
to integrate Emacs with more stuff

09:07.519 --> 09:10.640
and how Emacs can become

09:10.640 --> 09:14.080
more approachable by non-technical users

09:14.080 --> 09:16.160
because I would love to see

09:16.160 --> 09:20.080
more people using Emacs, to be honest.

09:20.080 --> 09:21.680
Yeah. Thank you very much

09:21.680 --> 09:23.440
for listening to this talk.

09:23.440 --> 09:26.080
I will be taking questions

09:26.080 --> 09:27.600
and feedback in the pad

09:27.600 --> 09:31.920
after the conference.

09:31.920 --> 09:33.920
You can reach me through this email

09:33.920 --> 09:36.720
laszlo@laszlo.is .

09:36.720 --> 09:39.600
I'll be posting

09:39.600 --> 09:41.760
some more detailed articles

09:41.760 --> 09:44.959
and description of this idea

09:44.959 --> 09:47.166
that I was trying to present today.

09:47.166 --> 09:49.040
[captions by Laszlo]