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.md192
1 files changed, 192 insertions, 0 deletions
diff --git a/2024/talks/literate.md b/2024/talks/literate.md
index 0fb0a0de..94f5332c 100644
--- a/2024/talks/literate.md
+++ b/2024/talks/literate.md
@@ -42,6 +42,198 @@ the years, I’ve filed them off with helper functions, snippets and
other features. Thought I would share these.
+# Discussion
+
+## Questions and answers
+
+- 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: (not yet answered)
+- 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: Have you ever used org-transclusion
+ ([https://github.com/nobiot/org-transclusion](https://github.com/nobiot/org-transclusion))?
+ - 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)
+ and
+ [https://github.com/nobiot/org-transclusion/issues/257](https://github.com/nobiot/org-transclusion/issues/257)
+- 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.
+ - \<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: Used to 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: Yeah. Okay. So, uh, on to do's and that sort of thing, um. You know, a lot is the same as it was 10 years ago. At the beginning of every sprint, my company, we're using JIRA. All jokes are valid when I say that. But I just go to its web page. I copy all the tasks that I need to do that sprint. I wrote a function that takes that code and reformats it as a bunch of org tasks for me to do that I can just now have all my to-dos. And I start to work off of that from that point on. So it'll reference all the projects, and I do symlinks to every code base that I need to use. Most of the to-dos I put inside my code block is kind of just for me, just so I can remember it. Because the work that I have to do needs to be tracked a little more fine-grained, I guess. Yeah.
+- 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)
+- My Emacs configuration written in a literate style:
+ [https://github.com/howardabrams/hamacs](https://github.com/howardabrams/hamacs)
+- See it rendered here:
+ [https://howardabrams.com/hamacs/](https://howardabrams.com/hamacs/)
+- 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)
+ \... temporary location?
+- snippet on \<ssl: Cool one. 
+ - 0_0 I need to do this.
+- 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)),
+ just jump to a block and then "RET".
+- Really good talk.  I need to find out how to extend
+ xref to handle org files!
+ - 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
+- 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))
+ - 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)
+- there is an RFC in for 'cargo-script' which allows
+ building single-file crates - i think that will be quite useful in
+ ob-rust
+ - There's a ob-rust already and it uses
+ rust-script: [https://github.com/micanzhang/ob-rust](https://github.com/micanzhang/ob-rust),
+ 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)
+- Not a Q, just a comment that we need more of your insightful
+ posts and videos! :) (sic)
+
+
+- I am both hyped and scared by Howard's talk, some of his past insights into using org-mode (literate everything, many small spreadsheets, etc.) have changed the way I operate so thoroughly...
+- 19th century? Isn't that in the 1800s?
+ - 21 1/4 century?
+ - you are not incorrect I believe - easy mistake to make, it's not intuitive!
+ - YouTube comment: 1:00 So Knuth invented literate programming in the 19th century? I knew he was old, but not that old!
+- i think the only time i have worked with literate programming is Inform 7
+- I find that the Julia support in org (babel) is good enough. Most of my programming is in Julia.
+ - re: Julia in Org: For ob-julia support I wrote an ob-julia that does a few more things than the one that ships with ESS. https://github.com/karthink/ob-julia
+- (I'm here trying to milk Howard for all his fantastic insights in the Etherpad, hope that's not a faux-pas...!)
+ - I, at least, am enjoying the Q&A session so not a faux-pas as far as I'm concerned.
+
+- YouTube comment: The best reason I've heard explaining why most programmers don't (and won't) use literate programming. It requires them to be literate in three languages: the programming language, the markup language, and most challenging of all, English.
+- YouTube comment: Q: Literate programming is very appealing in theory, but it's difficult with languages like Go where your code is split across multiple files. Any suggestions?
+
+Feedback:
+
+- very cool
+- Lovely talk, thank you!
+- Awesome, thank you!
+- That was wonderful, thank you! 😊
+- Thank you Howard!
+- Thanks for your continued work, Howard!
+- A legend! ... loved the Ironsworn presentation from previous year.
+- excellent presentation indeed
+- Thank you for the marvelous talk!!
+- Thanks for the presentation
+- Your way of delivering is inspiring.
+- god I wish I was that good a presenter
+- I for one had been looking forward to this particular talk, so there's that :)
+- YouTube comment: Legend!
+- YouTube comment: Howard! Your videos have been such an amazing source of information. You voice is engrained in my brains haha
+- Somehow my interest in #emacs reignited and a lot of is due to org presentation by @howard [@mms@bsd.cafe](https://mastodon.bsd.cafe/@mms/113724843960332570)
+
[[!inline pages="internal(2024/info/literate-after)" raw="yes"]]