summaryrefslogtreecommitdiffstats
path: root/2021/talks/ui.md
blob: 01ed2b264974e0c46364c3c197c8cdfe80a1e866 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
[[!meta title=""Yak-shaving to a UI framework" (/"Help! I accidentally yak-shaved my way to writing a UI framework because overlays were slow")"]]
[[!meta copyright="Copyright © 2021 Erik Anderson"]]
[[!inline pages="internal(2021/info/ui-nav)" raw="yes"]]

<!-- You can manually edit this file to update the abstract, add links, etc. --->


# "Yak-shaving to a UI framework" (/"Help! I accidentally yak-shaved my way to writing a UI framework because overlays were slow")
Erik Anderson

Tui.el is a textual User Interface (UI) framework for Emacs Lisp
modeled after the popular JavaScript 'React' framework.  This package
implements React Component API's with the goal of simplifying
development of interactive UI's for all Emacs users- regardless of
their prior experience with React or web programming.  Components
provide a useful functional unit for constructing complex interfaces
declaratively and also eliminate much of the burden associated with
updating textual content as application state changes.  This talk will
cover use of the tui.el API and its operation in a textual environment
by implementing some basic UI's.



# Outline

-   5-10 minutes:
    -   Problem space: UI implementation complexity.
    -   API introduction: Displaying content, Components.
    -   Visual taste of dashboards and applications built with tui.
<!---   20 minutes:
    -   (same as the above- less some visual tour, plus:)
    -   Introducing **state** to your UI.
    -   Demonstration via development of a trivial web comic reader.
-   40 minutes:
    -   (same as the above, plus:)
    -   Demonstration of developer helpers/utility functions for:
        -   Explanation of the reconciliation algorithm.
        -   More Emacsisms: Implementing a comic dashboard component.
--->


[[!inline pages="internal(2021/info/ui-schedule)" raw="yes"]]

[[!inline pages="internal(2021/info/ui-nav)" raw="yes"]]