summaryrefslogtreecommitdiffstats
path: root/2024/talks/mcclim.md
diff options
context:
space:
mode:
Diffstat (limited to '2024/talks/mcclim.md')
-rw-r--r--2024/talks/mcclim.md195
1 files changed, 195 insertions, 0 deletions
diff --git a/2024/talks/mcclim.md b/2024/talks/mcclim.md
new file mode 100644
index 00000000..0f64f1bd
--- /dev/null
+++ b/2024/talks/mcclim.md
@@ -0,0 +1,195 @@
+[[!meta title="Elisp and McCLIM"]]
+[[!meta copyright="Copyright © 2024 screwlisp"]]
+[[!inline pages="internal(2024/info/mcclim-nav)" raw="yes"]]
+
+<!-- Initially generated with emacsconf-publish-talk-page and then left alone for manual editing -->
+<!-- You can manually edit this file to update the abstract, add links, etc. --->
+
+
+# Elisp and McCLIM
+he or e/em/eir (Spivak, male and neuter pronouns are fine) - IRC: screwlisp, Mastodon: @screwtape@mastodon.sdf.org liberachat: screwlisp MOO: lambda.moo.mud.org Name: screwtape Moo mail preferred
+
+[[!inline pages="internal(2024/info/mcclim-before)" raw="yes"]]
+
+The gist is demoing using McCLIM common lisp interface manager
+implementation to make Sandewall 1978's lisp iconic example
+scheduler app, but to drive it to and from emacs lisp via slime
+and swank.
+
+To start with, a beginner walkthrough on getting slime and
+common lisp and mcclim, and configuring and using them with
+emacs org-mode.
+
+The default clim application-frame is made and its interactor
+used.
+
+A CLIM command is then defined to refer the default describe to
+emacs lisp rather than the inferior lisp.
+
+CLIM useage with no gui via slime / org-mode is demoed.
+
+This is then used via emacs lisp.
+
+CLIM's accepting-values is used to generate an anonymous gui
+that accepts a value **into elisp**.
+
+A small final discussion on integrating the clim scheduler back
+and forth into org-agenda.
+
+Bib:
+
+```
+ @article{sandewall1978programming,
+ title={Programming in an Interactive Environment:
+ the``Lisp''Experience},
+ author={Sandewall, Erik},
+ journal={ACM Computing Surveys (CSUR)},
+ volume={10},
+ number={1},
+ pages={35--71},
+ year={1978},
+ publisher={ACM New York, NY, USA}
+ }
+
+ @inproceedings{strandh2002free,
+ title={A free implementation of clim},
+ author={Strandh, Robert and Moore, Timothy},
+ booktitle={International Lisp Conference Proceedings},
+ year={2002}
+ }
+
+ @article{fruhwirth2006guided,
+ title={A Guided Tour of CLIM, Common Lisp Interface Manager},
+ author={Fruhwirth, Clemens},
+ journal={Lisp Pointers},
+ year={2006}
+ }
+
+ @article{kochmanskimcclim,
+ title={McCLIM Demonstration},
+ author={Kochmanski, Daniel}
+ }
+
+ @inproceedings{kochmanski2020ecl,
+ title={On ECL, the Embeddable Common Lisp (ELS keynote).},
+ author={Kochmanski, Daniel},
+ booktitle={ELS},
+ year={2020}
+ }
+
+ @misc{beane2012quicklisp,
+ title={Quicklisp},
+ author={Beane, Zach},
+ year={2012}
+ }
+
+ @misc{marsden2003slime,
+ title={SLIME: The superior lisp interaction mode for emacs},
+ author={Marsden, Eric and Gorrie, Luke and Eller, Helmut and others},
+ year={2003},
+ publisher={URL: https://common-lisp. net/project/slime/(visited on
+ 05/19/2017)}
+ }
+
+ @article{dominik2004org,
+ title={Org mode manual},
+ author={Dominik, Carsten},
+ year={2004}
+ }
+```
+
+**Q&A in LambdaMOO**:
+
+As an experiment, screwlisp will also be taking
+questions from LambdaMOO. Here's how to join:
+
+1. Use `M-x telnet` to connect to `lambda.moo.mud.org 8888`. Alternatively, you can use a web-based client like https://mudslinger.net/play/ or rmoo.el (see rmoo.el note below)
+2. `connect Guest` to connect as a guest. If that doesn't work, please ask in `#emacsconf-org` and we'll try to get you sorted out.
+3. Agree to the terms by typing `YES`.
+4. Teleport to where the speaker is by typing `@join screwtape`.
+
+To say something, start with `"` and omit the ending quotation mark, like this: `"Hello everyone!`. To say something to a specific person, start with a backtick (`` ` ``) and the person's nick, then your message, like this: `` `sachac I made it to LambdaMOO``. Use `help communication` to learn more about other communication tools, such as `:` for emoting and `whisper` for sending private messages.
+
+rmoo.el note: You may need to define process-kill-without-query if it doesn't exist on your computer. Here's a use-package declaration that might be a good starting point. If your version of use-package doesn't support `:vc` yet, you can check out the code from https://github.com/toddsundsted/rmoo and add it to your load-path, or use `M-x telnet` for now.
+
+```
+(use-package rmoo
+ :vc "https://github.com/toddsundsted/rmoo"
+ :init
+ (unless (fboundp 'process-kill-without-query)
+ (defun process-kill-without-query (process &optional flag)
+ (set-process-query-on-exit-flag process nil)
+ t))
+ :config
+ (rmoo-worlds-add-new-moo "LambdaMOO" "lambda.moo.mud.org" "8888"))
+```
+
+You can also ask questions via BigBlueButton, Etherpad, or IRC, and the host will try to make sure your question gets to the speaker. Enjoy!
+
+About the speaker:
+
+I'm screwlisp from the lispy gopher climate, a weekly Wednesday
+000UTC podcast (non-radio show) on aNONradio.net powered by sdf.org;
+(also the lesser-known Friday 1400UTC show, Zhen House Zhen Bonkwave.
+
+We are fortunate to have many great people in our live chat that
+happens in LambdaMOO during the shows. Last week, we shared Rog's
+new writing on his current personal emacs modes with his decades
+of emacs useage. (Roger Crew). That's not what this talk is about
+though, though we often deal with emacs and McCLIM, which **are** what
+this talk is about. I have many friends who picked those up in some
+small part thanks to the show.
+
+
+# Discussion
+
+- Q: I would love to see the GUI interacting with the scheduling stuff
+ you were working on initially, if I didn't miss it somewhere
+ earlier.
+ - A: Will do a follow-up video
+- Q:Or any other GUI stuff you've worked on in the past that you'd
+ be comfortable showing?
+ - A:[https://toobnix.org/a/screwtape/video-channels](https://toobnix.org/a/screwtape/video-channels)
+- Q: Are we going to get a McCLIM LambdaMOO client?
+ - A: You're right, I should make that into a client for Common Lisp.
+- Q: is the expression being returned directly eval-able is elisp / ielm?
+ - screwlisp: Yes I didn't think this ahead
+ - screwlisp: Like I've just said, you have to call (slime-eval-sync)
+ - screwlisp: After which you can get it out of your kill-ring, because it has syncronised -> to be there
+ - screwlisp: I was going to ask you if you had a way for me to do that
+- Q: i wonder if there's a presentation type for readable output that is returned to elisp?
+ - most of the time i assume the expression type will be readable on the other end, but CL has readtables and other things that would need translation
+- similar to the multiple package-archive options with emacs there is also UltraLisp which tracks upstream more closely, but can cause fun-to-debug package conflicts in some situations
+ - screwlisp: I guess I should try that, basically melpa right, I occasionally use person quicklisp dists
+- screwlisp: 40ants has often done things I want to do
+- lol @ either it will be faster or you will be smug about it running slowly
+ - screwlisp: Old computer challenge ;)
+- we did see a little bit of that
+- https://toobnix.org/c/screwtape_channel/videos
+- Is the MOO McCLIM app still going?
+ - yes
+ - telnet lambda.moo.mud.org 8888, connect Guest, Y, then @join screwtape
+ - maybe something like this would work for slime eval assuming we still want to use emacs while CLIM window is open: (slime-eval-async '(cl:+ 2 2) (lambda (x) (print x)))
+ - the second arg is a continuation so can bind it, insert in a buffer, etc
+ - I think most emacs users use scratch buffer
+- thanks for the talk! great intro. look forward to IELM talk next :P
+- Thank you! 😊
+- Thanks for the talk, it was super interesting
+- May the source be with everyone
+- I use ielm as a repl but not a power user... sometimes I know I want to do more than a few M-:
+- (lazy-eval 'thanks)
+- screwlisp: "Yeah, I forgot now but during the talk there were a few tiny bits where it was different to slime that tripped me up
+- thanks for the talk screwlisp, always good to see lisp history being explored. i'll have to check out lambdamoo again
+- screwlisp: Quite a few people hang around during the Wednesday show (000UTC, anonradio.net)
+- screwlisp: Probably not a coincidence a lot of my emacs useage is the same as yduJ's who is normally there
+- what emacs mode/tool were you using to access the moo?
+ - I dusted off rmoo.el, but it could definitely use some modernization =)
+ - I went for the quick M-x telnet instructions for Guest
+- screwlisp: Can @request your nick with an email address
+
+
+[[!inline pages="internal(2024/info/mcclim-after)" raw="yes"]]
+
+[[!inline pages="internal(2024/info/mcclim-nav)" raw="yes"]]
+
+