diff options
Diffstat (limited to '2021/talks/exec.md')
-rw-r--r-- | 2021/talks/exec.md | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/2021/talks/exec.md b/2021/talks/exec.md new file mode 100644 index 00000000..b25defb0 --- /dev/null +++ b/2021/talks/exec.md @@ -0,0 +1,103 @@ +[[!meta title="Org as an executable format"]] +[[!meta copyright="Copyright © 2021 Tom Gillespie"]] +[[!inline pages="internal(2021/info/exec-nav)" raw="yes"]] + +<!-- You can manually edit this file to update the abstract, add links, etc. ---> + + +# Org as an executable format +Tom Gillespie + + + +[[!inline pages="internal(2021/info/exec-schedule)" raw="yes"]] + +Org mode is known for its flexibility, power, and staggeringly diverse +number of workflows, users, and use cases. + +This talk explores just how far we can push the boundaries of the sane +and sensible with regard to Org workflows. + +In particular it will discuss shebang blocks, and elvs: two parts of a +complete system for creating executable Org files. + +Org syntax does not support shebang lines. However, it turns out that +Org syntax enables something even better — shebang blocks. + +Org is also (supposedly) not an executable file format. However, by +combining a shebang block with a Org babel source block, and eval +local variables (elvs) Org becomes a multi-language executable format. + +In this talk we introduce shebang blocks and elvs as a two part system +that transforms Org files into executable documents that can run on any +recent version of Emacs. + +These ideas are implemented in +<https://github.com/tgbugs/orgstrap/blob/master/README.org> and +<https://github.com/tgbugs/orgstrap/blob/master/shebang.org>, and +orgstrap.el is available as a package on MELPA and can be installed +via M-x install-package orgstrap. + +The talk will open with a demo of how to create an executable Org file +using the orgstrap machinery. + +We then discuss security considerations, and show example use cases. + +Finally the talk will cover the details and development of the +portable shebang block for Org mode that works on a wide variety of +systems and shells, and on the development of a formal specification +and a reference implementation for using Org source blocks to +transform Org files from plain text documents with a bit of markup +into self describing computational documents, or interactive +applications. + +# Discussion + +IRC nick: tgbugs + +- what prompted you to create orgstrap? +- Tom Gillespie: <https://github.com/tgbugs/orgstrap/blob/master/README.org#background-file-local-variables-and-checksums> +- yeah, usually this kind of stuff starts out as a minor annoyance +- is there a way to choose which blocks are going to be executed? +- What are some practical specific use cases that you had in mind? +- Tom Gillespie: <https://github.com/SciCrunch/sparc-curation/blob/master/docs/sckan/welcome.org> +- Tom Gillespie: <https://github.com/tgbugs/orgstrap/blob/master/README.org#use-cases> +- i'll for sure incorporate it in my company and research, so both corporate and academic environments will benefit from your work. i already use Org for documenting a lot of stuff so its just a natural next step +- I have experimented with dblocks in an org-mode buffer to do the equivalent of javascript in a browser. Does that make sense? + +From IRC: + +- This is supercool !! +- That is absolutely wild +- is the hash not just security theater? + - tgbugs: you need it to enable non-theater workflows + - anyone who could write the org-file could update the hash as well, no? +- I don't understand why he needs to talk about powershell, more than the other shell. :( + - tgbugs: very late response, but the reason I talked about powershell more than the others is because it is the most different and required some explainiation, I also was :/ about that + - that sounds that is a good reason to not include it xD . you can add fish in the talk and it will be bettter. + +# Outline + +- 5-10 minutes: + +A demo of adding the orgstrap block and elvs, +adding a shebang block, and then running an org file. + +<!-- +- 20 minutes: + +Same as above, followed by a walkthrough of the approach orgstrap +takes for preventing arbitrary code execution, followed by some +examples uses of orgstrap. + +- 40 minutes: + +Depending on flow/interest, security overview and the examples +bits could be swapped and overflow beyond 20 mins, followed by +a deeper dive into the internals, and a discussion about interest +in incorporating such functionality into org-mode directly. + +--> +[[!inline pages="internal(2021/captions/exec)" raw="yes"]] + +[[!inline pages="internal(2021/info/exec-nav)" raw="yes"]] |