summaryrefslogblamecommitdiffstats
path: root/2020/info/21.md
blob: ff29e1f7c14623e1b17ac7eeb64ce2bf9e5929d4 (plain) (tree)
1
2
3
4
5
6


                                                                  
                                                                                                                                                                                    
                                                                                                                                                                                                         
 

















































                                                                      
                      







                                                                                                      
                                                                                                                           



                                                                                                                             
                                                   
 
                                                                       



                                                                                          
                                                                                                                                                                         



                                                                       
                                                                                                                                                                                                                   


       
                                                                                       
                                                                 
                                                                                                             
                                                                                                   
                                           
 
# On why most of the best features in eev look like 5-minute hacks
Eduardo Ochs

[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--21-on-why-most-of-the-best-features-in-eev-look-like-5-minute-hacks--eduardo-ochs.webm"]] 
[Download compressed .webm video (43.9M)](https://media.emacsconf.org/2020/emacsconf-2020--21-on-why-most-of-the-best-features-in-eev-look-like-5-minute-hacks--eduardo-ochs-vp9-q56-original-audio.webm)

In the last months there were several hundreds of messages in
emacs-devel in threads with names like "A proposal for a friendlier
Emacs", "How to make Emacs popular again", and "Interactive guide for
new users".  On the one hand I am absolutely sure that eev is very
good answer to all these themes; on the other hand I know that eev is
based on some design decisions that offend most people used to modern,
"user-friendly" interfaces - and I feel that at this moment mentions
to eev in those discussions in emacs-devel would not be welcome.

In this talk I will start by presenting very quickly the main "killer
features" of eev - namely:

1.  Elisp hyperlinks,

2.  interactive tutorials that can be navigated with just three keys,

3.  non-invasiveness - people can easily turn eev on for only five
    minutes each week, play with it a bit, and then turn it off,

4.  high discoverability factor,

5.  a way to create "hyperlinks to here",

6.  hyperlinks to specific points in PDF documents and video files -
    i.e., to specific pages, strings, and timemarks,

7.  a way to control shell-like programs ("eepitch"), and

8.  an Elisp tutorial,

and after that I will present the design decisions behind eev, in two
parts:

1.  eev is a very thin layer above Emacs-the-Lisp-environment; it is
    as simple as possible, but in the sense of "simple" that was used
    in Forth, and that is not very familiar today.

2.  Very often when I am using Emacs - which is my main interface
    with the system - I realize that I can automate some task that I
    just did by hand twice of thrice; and that I should do that,
    because automating that would be both easy and fun.  Over the
    years I experimented with several ways of automating tasks,
    refined some of these ways a lot, and found a certain "best"
    style that, again, usually offends people who are accustomed with
    the modern ideas of user-friendliness.  In this style, used in
    most template-based functions in eev, both textual documentation
    and error-handling are kept to a minimum.  I will show how, and
    why, eev makes this style works so well, and how users can create
    their own templated functions very quickly - as "5-minute hacks".

<!-- from the pad --->
-   Actual start and end time (EST): Start 2020-11-28T11.45.20 (~45min talk); End: 2020-11-28T12.26.00


# Questions


## Is eev like GNU hyperbole? (from karthink in #emacsconf)

rswgnu: I know Eduardo is exploring using Hyperbole with eev and we will work with him to help him  integrate its features.


## "Are there variants of pos-spec-list that aren't search based? E.g., find buffer + run some other command + copy results?"

I guess this is partly answered, with Xpdf example.

Take a look here: <http://www.youtube.com/watch?v=hOAqBc42Gg8#t=32m05s>


## I didn't quite follow the find-here-links demo, can you describe that once more slowly?

I just added links to the tutorials about find-here-links and refining hyperlinks to the bottom of this page: <http://angg.twu.net/emacsconf2020.html> - hope that helps!


## what are the books/readings that inspired you about usability again?

Here are some: "Software Tools" by Kernighan and Plauger, the article about "Little Languages" in Jon Bentley's "More Programming Pearls", a commercial Forth called HS-Forth, and "Exploring Expect" by Don Libes.


# Notes
-  eev homepage: <https://www.emacswiki.org/emacs/EevMode> | <http://angg.twu.net/#eev>
-  find-video open a video with a time stamp as an input argument
-  How to record executable notes with eev - and how to play them back <https://emacsconf.org/2019/talks/27/>
-  Anchors (not explained in the talk) <http://angg.twu.net/eev-intros/find-eev-quick-intro.html#8>
-  <http://angg.twu.net/emacsconf2020.html>