From 886ae437fee6a674f7b2757062f1b8a91275457a Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Fri, 8 Oct 2021 01:58:03 -0400 Subject: Add talk pages for 2021 --- 2021/talks/dsl.md | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 2021/talks/dsl.md (limited to '2021/talks/dsl.md') diff --git a/2021/talks/dsl.md b/2021/talks/dsl.md new file mode 100644 index 00000000..9fb5cd47 --- /dev/null +++ b/2021/talks/dsl.md @@ -0,0 +1,48 @@ +[[!meta title="Self-Describing Smart DSL's: The Next Magits"]] +[[!meta copyright="Copyright © 2021 Psionic"]] +[[!inline pages="internal(2021/info/dsl-nav)" raw="yes"]] + + + + +# Self-Describing Smart DSL's: The Next Magits +Psionic + +When we begin programming, the promise is to automate away repetitive +tasks in life. As those program's capability grows, we begin to need +configuration UI's. We can start with a CLI, but as any CLI grows, we +run into the following issues: + +- As options pile up, the intuition of simplicity is lost in helps and +manpages + +- Stateless operation has no idea what to do next and loses terseness +- Frequent dispatch of commands to interrogate state required for the +operator to decide what action to perform + +- Composition compounds with all of these issues + +Magit has the UI trifecta of being terse, intuitive, and intelligent. +Magit's UI input library, Transient, is a standalone package for +developing more killer UI's, and not just for CLI applications, but +also for server applications, Emacs applications, and Emacs itself. + +While Transient's potential is to create the most highly productive +UI's short of thought control, going beyond simple command dispatchers +requires a deeper dive. When we think like constructing a DSL for the +task and using transient to input that DSL, we get an intelligent, +self-describing modal programming system. + + +# Outline + +- Updates to Transient documentation and demos of API examples +- Wrapping a custom CLI tool in Transient + + + + + +[[!inline pages="internal(2021/info/dsl-schedule)" raw="yes"]] + +[[!inline pages="internal(2021/info/dsl-nav)" raw="yes"]] -- cgit v1.2.3