summaryrefslogtreecommitdiffstats
path: root/2021/talks/dsl.md
diff options
context:
space:
mode:
Diffstat (limited to '2021/talks/dsl.md')
-rw-r--r--2021/talks/dsl.md48
1 files changed, 48 insertions, 0 deletions
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"]]
+
+<!-- You can manually edit this file to update the abstract, add links, etc. --->
+
+
+# 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
+
+<!--- 40 minutes: Wrapping a server in Transient to make a new Emacs application -->
+
+
+
+[[!inline pages="internal(2021/info/dsl-schedule)" raw="yes"]]
+
+[[!inline pages="internal(2021/info/dsl-nav)" raw="yes"]]