summaryrefslogtreecommitdiffstats
path: root/2024/talks/literate.md
diff options
context:
space:
mode:
Diffstat (limited to '2024/talks/literate.md')
-rw-r--r--2024/talks/literate.md164
1 files changed, 164 insertions, 0 deletions
diff --git a/2024/talks/literate.md b/2024/talks/literate.md
index 0fb0a0de..73fe9274 100644
--- a/2024/talks/literate.md
+++ b/2024/talks/literate.md
@@ -42,6 +42,170 @@ the years, I’ve filed them off with helper functions, snippets and
other features. Thought I would share these.
+# Discussion
+
+## Questions and answers
+
+- Q: Apropos large literate programs: what's the largest code base
+ you've ever tackled with the literate approach (esp. Emacs +
+ Org-mode)?
+ - A: The largest is the one I mentioned in the talk \... about
+ 8000 lines of "code" and another "10000" lines of prose. I
+ think I came to 15,000 max (in code blocks only).
+- Q: You touched on it briefly, but how do you handle things like
+ "C-h f" helpful info not being tied back to the defuns in src
+ block code when you "C-c C-c" them in the org buffers instead of
+ re-tangling it to the files, and other such things? Did you create
+ wrappers for jumping  back and forth atop org's built-in mechanisms
+ to go back and forth between org/tangled files?
+ - A:
+- Q: Have you ever used org-transclusion
+ ([https://github.com/nobiot/org-transclusion](https://github.com/nobiot/org-transclusion){rel="noreferrer noopener"})?
+ - A: Nope \... but I will
+ - I tried it out once, and had one hour of work deleted 🥲,
+ but it was from an issue already reported:
+ [https://github.com/nobiot/org-transclusion/issues/177](https://github.com/nobiot/org-transclusion/issues/177){rel="noreferrer noopener"}
+ and
+ [https://github.com/nobiot/org-transclusion/issues/257](https://github.com/nobiot/org-transclusion/issues/257){rel="noreferrer noopener"}
+- Q: What is your usage of dynamic blocks in such workflows? Any
+ interesting use cases and custom ones?
+ - A: Not yet, will report back
+- Q:Is the minibuffer being deliberately hidden in this video? (first
+ noticed this in the section previous to "Navigating by Function
+ Names")
+ - A: Not intentionally :)  You may notice the minibuffer comes and
+ goes, sorry about that; not intentional (didn't quite "fix"
+ all of them) (Thanks for the answer, no worries.)
+- Q:What's your take on Emacs+Org vs. Jupyter notebooks (for
+ interactive programming)?
+ - A: Not something I use right now.  Tend to include things from
+ jupyter/python (e.g. numpy) that has been the biggest challenge
+ (not knowing that stuff all that well), things like matrix
+ multiplications are easy in jupyter not such much in org. May
+ make sense to stay where you are comfortable.  Curious what the
+ community can do to make this transition easier
+ - You can't work with Jupyter in \> 1 language either (I think).
+ It's Py + SQL or R + SQL etc. Org allows 45+ languages in one
+ document (I often mix languages).
+- Q: Do you think any programming language is more suited to literate
+ programming than another?
+ - A: R, C are my favorites (for literate programs). C (and C++)
+ have got great support. There are some great books implemented
+ in literate programming I think. The two that come to mind are
+ Physically Based Rendering: From Theory to Implementation and C
+ Interfaces and Implementations. The first is C++ and the
+ second C. Ty.
+ - A: \<gs-101\> Personally, when working with Org files, I have a
+ better time dealing with interpreted languages, such as Python,
+ because you can initialize a session and the code is all
+ conected. You can divide blocks however you seem fit.
+- Q: related to above, do you use inline org function calls and org
+ babel library and such?
+ - A: usta-use more org-babel inline functions, found sound bugs
+ (maybe) 8yrs ago, right now my literate dev-ops is calling a lot
+ of backend programs so the org-babel has limited help in that
+ regard while in the emacs session things are "just available"
+ so that hasn't help much either
+- Q: How do you handle the cases where org markup may sometimes
+ interfere with some of the code, in places where you can't use
+ "escapes" (\~ or = or \| \<- vertical bar), doubly so if you use
+ modes to not show these but the styled text instead, and so on?
+- I think an example is in C when you assign to a pointer  \*p = &i;  
+ (In Org, you need to write (\*p) or ,\*p = &i; or it will be
+ mistaken for a headline \*
+ - A: (clarifying) when I'm making pros and I'm talking about a
+ function I've written somewhere else I'll use tildes and look
+ for those things so I can strip them off.  Is that the spirit of
+ the question.  (confirmed).  Yes, I'll strip that off after
+ finding the function name, so I can still mark it correctly.
+ - Q: clarifying: when in code inside an org buffer, you don't get
+ to use \~ or = (verbatim/etc), and any font-locking interferes
+ with the proper display in the src blocks, that kind of
+ interference.
+- Q: You said at the start that literate didn't catch on in corporate
+ DevOps - why not?
+ - A: I guess the big thing is not everyone is using Emacs and org
+ is needed to make it work really well.
+- Q: I gotta ask: why not that full stack on Markdown, I'm sure it's
+ crossed your mind at least a few times how the same setup on
+ Markdown would be more interop-friendly with colleagues and such?
+ - A:  It's a real good idea.
+- Q: How does your management of "TODOs" (projects/tasks) interact
+ with this literate mindset, any insightful things you do on that
+ front?
+ - A: 
+- Q: \<Donovan\> Do you LP also on larger projects? (More files &
+ nested directories) 
+ - A:  I haven't done nested directories, but I can now. Now that
+ i've realized I have the feature where I can just jump to any
+ projects and all the org-files and all the headings just show
+ up, that works in nested directories, that that's fun.
+- Q: Have you used Cucumber/Gherkin/BDD and do you think it has a
+ strong overlap to what you talked about here?
+ - A: I tend to put the tests right next to the function, I like
+ tangle it out to different files; keeping things together is
+ nice.  Many frameworks assume we'll have things seperated out
+ in a way that isn't useful to me.  I like to go old-school on
+ that?
+- Q: What granularity are you looking for re your org files and
+ contents, with respect to a codebase that it tangles to, or in
+ non-coding contexts?
+ - A:  Great questions, really subjective.  I change that all
+ time.  I have an idea, I start to refine it. My goal at one
+ point was to have an emacs config that was really small and
+ simple and that just really doesn't happen, it's full of ideas
+ and things that are half-baked and i pull them out and polish
+ them up bit by bit so it ends up being like any code-base it
+ just keeps getting refined.  Sub-trees, archiving are useful.
+ - I've found it useful to prune the init file back to minimal
+ every once in a while (actually, AI has been surprisingly
+ helpful - perhaps it helps that Emacs is ancient and hence there
+ is a lot of doc out there and much of it \... correct?)
+
+## Notes
+
+- My literate programming code extensions:
+ [https://www.howardabrams.com/git/howard/hamacs/src/branch/main/ha-org-literate.org](https://www.howardabrams.com/git/howard/hamacs/src/branch/main/ha-org-literate.org){rel="noreferrer noopener"}
+- My Emacs configuration written in a literate style:
+ [https://github.com/howardabrams/hamacs](https://github.com/howardabrams/hamacs){rel="noreferrer noopener"}
+- See it rendered here:
+ [https://howardabrams.com/hamacs/](https://howardabrams.com/hamacs/){rel="noreferrer noopener"}
+- My JOPS (Jump to Project Sections) code that "searches Org
+ headers":
+ [https://www.howardabrams.com/git/howard/jops](https://www.howardabrams.com/git/howard/jops){rel="noreferrer noopener"}
+ \... temporary location?
+- snippet on \<ssl: Cool one. 
+ - \<gs-101\> 0_0 I need to do this.
+- Your way of delivering is inspiring.
+- \<gs-101\> This (evaluating babel blocks) is also possible with the
+ Avy + Embark combo developed by karthik:
+ ([https://karthinks.com/software/avy-can-do-anything/#avy-plus-embark-any-action-anywhere](https://karthinks.com/software/avy-can-do-anything/#avy-plus-embark-any-action-anywhere){rel="noreferrer noopener"}),
+ just jump to a block and then "RET".
+- \<NullNix\> god I wish I was that good a presenter
+- \<ericsfraga\> Really good talk.  I need to find out how to extend
+ xref to handle org files!
+ - \<lounge-081\> ericsfraga: same here, I asked a long-winded
+ question that was about that (before he touched a bit on it),
+ but feel there's more in terms of wrappers and such
+- \<aschmidt\> excellent presentation indeed
+- \<lounge-965\> Thank you for the marvelous talk!!
+- \<lounge-350\> A legend!  \... loved the Ironsworn presentation from
+ previous year.
+- \<ElfOfPi\> Denote has some pretty good use of dynamic blocks I
+ think
+ ([https://protesilaos.com/emacs/denote#h:8b542c50-dcc9-4bca-8037-a36599b22779](https://protesilaos.com/emacs/denote#h:8b542c50-dcc9-4bca-8037-a36599b22779){rel="noreferrer noopener"})
+ - There's also the dynamic blocks from org-nursery:
+ [https://github.com/chrisbarrett/nursery?tab=readme-ov-file#org-roam-dblocks-incubating](https://github.com/chrisbarrett/nursery?tab=readme-ov-file#org-roam-dblocks-incubating){rel="noreferrer noopener"}
+- \<ellis\> there is an RFC in for 'cargo-script' which allows
+ building single-file crates - i think that will be quite useful in
+ ob-rust
+ - \<gs-101\> ellis: There's a ob-rust already and it uses
+ rust-script: [https://github.com/micanzhang/ob-rust](https://github.com/micanzhang/ob-rust){rel="noreferrer noopener"},
+ but the developer wanted to use rustc instead.
+ - cargo-script RFC issue: [https://github.com/rust-lang/cargo/issues/12207](https://github.com/rust-lang/cargo/issues/12207){rel="noreferrer noopener"}
+- Not a Q, just a comment that we need more of your insightful
+ posts and videos! :) (sic)
+
[[!inline pages="internal(2024/info/literate-after)" raw="yes"]]