summaryrefslogtreecommitdiffstats
path: root/2024
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2024-12-10 12:58:50 -0500
committerSacha Chua <sacha@sachachua.com>2024-12-10 12:58:50 -0500
commit51a223aca5ebd7038a8578642d431c350c2933bf (patch)
tree4018152c5071fc40972825373e11b159de623967 /2024
parente8da0ad659c700e349d3a821257c8bf7b524c2db (diff)
downloademacsconf-wiki-51a223aca5ebd7038a8578642d431c350c2933bf.tar.xz
emacsconf-wiki-51a223aca5ebd7038a8578642d431c350c2933bf.zip
gypsum
Diffstat (limited to '2024')
-rw-r--r--2024/info/gypsum-after.md250
-rw-r--r--2024/info/gypsum-before.md8
-rw-r--r--2024/talks/gypsum.md62
-rw-r--r--2024/talks/project.md223
4 files changed, 541 insertions, 2 deletions
diff --git a/2024/info/gypsum-after.md b/2024/info/gypsum-after.md
index 33f399f0..b055a819 100644
--- a/2024/info/gypsum-after.md
+++ b/2024/info/gypsum-after.md
@@ -377,7 +377,255 @@
Captioner: ramin
-Questions or comments? Please e-mail [ramin.honary@gmail.com](mailto:ramin.honary@gmail.com?subject=Comment%20for%20EmacsConf%202023%20gypsum%3A%20Gypsum%3A%20my%20clone%20of%20Emacs%20and%20ELisp%20written%20in%20Scheme)
+<div class="transcript transcript-qanda"><a name="gypsum-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1>
+
+[[!template text="""Troy Hinckley's project that I'm talking about. I was going""" start="00:00:00.069" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""to mention this in my presentation, but it's possible,""" start="00:00:02.350" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""theoretically, that Troy Hinckley, his project could be""" start="00:00:02.350" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""used as a scheme of limitation that actually runs my own""" start="00:00:02.350" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""version of Emacs. And although, you know, This is""" start="00:00:02.350" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""completely theoretical, and I don't know how difficult""" start="00:00:25.478" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""that would be. But if Troy Hinckley implemented enough of""" start="00:00:25.478" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""the R7-RS standard in Rust, it would theoretically be""" start="00:00:30.781" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""possible to run the Gypsum editor in Troy Hinckley's own""" start="00:00:30.781" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""editor. I thought that was kind of interesting, and I""" start="00:00:30.781" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""thought it was worth mentioning, at least in the questions""" start="00:00:48.270" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""and answers.""" start="00:00:48.270" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""I also mentioned this in the presentation. I wanted to see""" start="00:01:12.179" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Robin Templeton's project presentation, but""" start="00:01:14.940" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""unfortunately it's going to be at like four in the morning""" start="00:01:14.940" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""for me. So I'm going to try and watch that tomorrow, but""" start="00:01:14.940" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""that's also going to be a very interesting project to keep an""" start="00:01:22.984" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""eye on if you're interested in Scheme. That's the project""" start="00:01:22.984" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""where you've got the Guylain interpreter running inside of""" start="00:01:33.149" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""the Emacs process. It's dynamically linked as a library.""" start="00:01:33.149" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""I'm ready for questions from anybody. You can ask or you can""" start="00:02:04.699" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""type. It's up to you.""" start="00:02:07.431" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Okay, let me check the etherpad.""" start="00:02:32.319" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Let's see here.""" start="00:02:37.304" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""I'm not sure if I'm doing that right.""" start="00:02:41.208" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Let me check one more time. Oh, there it goes.""" start="00:02:46.373" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Let's see, so this is...""" start="00:02:54.221" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""I didn't know about that first bit of history. Oh, I've heard""" start="00:03:00.151" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""RMS say that Scheme Guile is just a nicer Lisp, but I didn't""" start="00:03:02.332" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""know there were concrete talks attempts to use Guile for""" start="00:03:02.332" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Emacs that early. Let's see, that was from janneke.""" start="00:03:02.332" video="qanda-gypsum" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Q: I'm curious to know how the hell guile-emacs deals with all of the dynamically scoped modules out there. Is there any effort to automatically modularize and namespace stuff?""" start="00:03:09.370" video="qanda-gypsum" id="subtitle"]]</div>[[!template text="""I'm curious to know how the hell Guile Emacs deals with all the""" start="00:03:09.370" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""dynamically scoped modules out there. Is there any effort""" start="00:03:14.318" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""to automatically modularize and name? Let's see.""" start="00:03:20.181" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""That might be a better question for Robin Templeton. In my""" start="00:03:30.523" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""own project,""" start="00:03:36.727" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""there's no module system for Emacs Lisp. There is a module""" start="00:03:36.727" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""system for Scheme. And the Emacs Lisp interpreter runs in""" start="00:03:46.693" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""its own environment. the require system or whatever module""" start="00:03:49.695" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""system that Emacs has, once it's implemented, all of that""" start="00:03:57.068" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""would just happen inside of the Emacs Lisp environment,""" start="00:03:57.068" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""which is inside of the Scheme environment. And""" start="00:03:57.068" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""environments are objects in Scheme.""" start="00:04:12.437" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""I think a more difficult question is how to handle""" start="00:04:21.522" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""threading, and Scheme has very good threading built in, in""" start="00:04:26.420" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Serphe-18[??].""" start="00:04:26.420" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""But I don't think it will be easy to write Emacs Lisp form""" start="00:04:34.283" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""bindings to the Scheme multi-threading implementation.""" start="00:04:34.283" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Emacs Lisp was just not cut out for that kind of thing. So I""" start="00:04:48.548" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""think each Emacs Lisp, you could, I suppose, have multiple""" start="00:04:51.710" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""threads each running their own Emacs Lisp environment.""" start="00:04:51.710" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Scheme would make that very simple to do.""" start="00:05:01.375" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""And then there'd just be a question of how you would get those""" start="00:05:06.018" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""different interpreters to communicate with each other,""" start="00:05:06.018" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""perhaps using the same protocol that's used by the Emacs""" start="00:05:06.018" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""server. But I haven't thought that far ahead yet.""" start="00:05:06.018" video="qanda-gypsum" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Q: Would it be possible to support a GUI toolkit other than GTK?""" start="00:05:23.646" video="qanda-gypsum" id="subtitle"]]</div>[[!template text="""Would it be possible to support a GUI toolkit other than the""" start="00:05:23.646" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""GTK? Like, how is it still supports Lucid? Yes, this is""" start="00:05:23.646" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""absolutely a goal of the project. I'm trying to keep the back""" start="00:05:31.291" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""end separate as possible. The scheme has what you call""" start="00:05:33.873" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""parameters. And these are like global variables that are""" start="00:05:39.817" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""still somewhat thread safe. And every call to the GUI goes""" start="00:05:43.199" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""through a parameter. So the Emacs, the interpreter and the""" start="00:05:47.484" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""editor logic is all in one module. And then that module calls""" start="00:05:52.125" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""out into a separate GUI module. And then you can implement""" start="00:05:59.987" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""different GUI modules. So you could have one for GTK3, one""" start="00:06:04.989" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""for GTK4, if you want to write the extern C bindings around Qt""" start="00:06:08.430" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""or full tick, that would certainly be possible as well. It""" start="00:06:13.843" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""would be nice maybe to have an SDL implementation based""" start="00:06:21.185" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""maybe on Chikiti or some kind of immediate mode GUI,""" start="00:06:21.185" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""something like that. But definitely GTK3 through Guile GI""" start="00:06:21.185" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""is the reference implementation. Things start there. But""" start="00:06:33.808" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""I'm very interested in supporting other GUIs, yes. Let's""" start="00:06:41.298" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""see.""" start="00:06:45.199" video="qanda-gypsum" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Q: Do you plan to provide improvements to Elisp as a language, or is the focus on a compatibility layer to facilitate doing all new extensions, etc. in Scheme?""" start="00:06:45.257" video="qanda-gypsum" id="subtitle"]]</div>[[!template text="""Question, do you plan to provide improvements to ELisp""" start="00:06:45.257" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""as a language or focus on a compatibility layer to""" start="00:06:47.540" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""facilitate all new extensions in Scheme? Yeah, the second""" start="00:06:47.540" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""one. I want to move off to Scheme. I would like for this""" start="00:06:57.142" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""project to try and keep up to date with each new release of""" start="00:07:03.384" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Emacs and Emacs Lisp. That's a difficult moving target to""" start="00:07:05.666" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""follow, I realize. But to the greatest extent possible, any""" start="00:07:11.850" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""new features to Emacs Lisp will be pulled in from GNU Emacs.""" start="00:07:15.152" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""If we happen to be able to implement something cool in""" start="00:07:25.419" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Scheme, and be able to port it over to Emacs Lisp, then sure,""" start="00:07:25.419" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""it'd be nice to be able to upload or to submit that upstream to""" start="00:07:29.437" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""the GNU Emacs. But I think I would prefer to have new features""" start="00:07:29.437" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""written in Scheme. I would like this gypsum to be more of a""" start="00:07:38.584" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Scheme app platform that just happens to be able to also run""" start="00:07:43.989" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Emacs Lisp. That's how I see it. Of course, this will be a""" start="00:07:43.989" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""community project. I'm open to debate about that if anybody""" start="00:07:54.577" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""wants to convince me otherwise.""" start="00:07:58.809" video="qanda-gypsum" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Q: Why is being able to interpret all of \`init.el\` an useful goal?""" start="00:08:08.439" video="qanda-gypsum" id="subtitle"]]</div>[[!template text="""Why is being able to interpret all of that EL a useful goal?""" start="00:08:08.439" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Sure, there is a lot of code written in Elisp. Can we""" start="00:08:12.464" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""consider... Oh, it's still being written. Please go ahead""" start="00:08:15.206" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""and finish writing.""" start="00:08:18.390" video="qanda-gypsum" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Q: Can we consider a translator like utility to convert elisp to scheme, once guile-emacs becomes a reality?""" start="00:08:29.673" video="qanda-gypsum" id="subtitle"]]</div>[[!template text="""Can we consider a translator like utility to convert eLisp""" start="00:08:29.673" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""to Scheme once Guile-Emacs has become a reality?""" start="00:08:29.673" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Certainly. For the time being, I just wanted to get the""" start="00:08:36.716" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""interpreter running. So the actual, the Guile-Emacs Lisp,""" start="00:08:38.717" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""the one that was written in 2011 that I didn't write, that""" start="00:08:44.520" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""actually does compile to, I think it's the tree""" start="00:08:44.520" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""intermediate representation It's one of the intermediate""" start="00:08:44.520" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""languages that Guile uses to compile Guile scheme itself.""" start="00:08:59.076" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""So the Emacs lisp that was written before actually does""" start="00:09:04.817" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""that. It actually compiles and makes use of the entire Guile""" start="00:09:04.817" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""compiler tool chain and actually produces like JIT""" start="00:09:09.339" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""compilable binaries, which is really cool. Like I said,""" start="00:09:09.339" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""that's the one that I had trouble getting to work properly.""" start="00:09:23.342" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Maybe we can follow that architecture. I'm not sure how to do""" start="00:09:29.209" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""that, but I would like to be able to do some kind of""" start="00:09:33.052" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""translating, keeping in mind that we want to have this be""" start="00:09:33.052" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""portable, do various schemes. And so Guile makes this very""" start="00:09:33.052" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""easy, but other schemes don't. Gambit might do this pretty""" start="00:09:45.988" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""well as well. It compiles to C and then compiles C down to a""" start="00:09:51.549" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""dynamically linkable library. So yeah, I think probably""" start="00:09:53.950" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""the most portable, I'm just thinking out loud right now,""" start="00:10:03.372" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""most portable implementation will just be able to""" start="00:10:10.652" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""translate Emacs Lisp directly to Scheme, which is not what""" start="00:10:10.652" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""the old Guile Emacs Lisp implementation does. That goes to""" start="00:10:10.652" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""TreeIL, so it's very, very Guile-specific, can't be""" start="00:10:21.755" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""ported. But yeah, if we could somehow get Emacs Lisp""" start="00:10:21.755" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""translated to Scheme and then compiled, say, in Shea Scheme""" start="00:10:28.359" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""or Gambit or MIT Scheme or one of those other compilers, that""" start="00:10:28.359" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""would be very cool. And I would absolutely love to do that.""" start="00:10:28.359" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""And I would very quickly accept any code into the code base""" start="00:10:44.906" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""that would do that.""" start="00:10:44.906" video="qanda-gypsum" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Q: Why is being able to interpret all of \`init.el\` an useful goal?""" start="00:10:54.390" video="qanda-gypsum" id="subtitle"]]</div>[[!template text="""Oh, and to answer the question about init.el,""" start="00:10:54.390" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""It's just because people spend a lot of time on their configs""" start="00:10:59.207" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""and it would be nice if, you know, you're starting to use this""" start="00:10:59.207" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""new editor and want it to be similar to Emacs users, just the""" start="00:10:59.207" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Emacs community in general and people who are familiar with""" start="00:10:59.207" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""using Emacs. It would be more useful to everybody in the""" start="00:10:59.207" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Emacs community if this were more compatible with GNU""" start="00:11:17.715" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Emacs. And so that's why that's, I think that's an important""" start="00:11:17.715" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""goal.""" start="00:11:25.679" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Question is not yet. Great. Oh, here comes another""" start="00:11:34.465" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""question.""" start="00:11:38.471" video="qanda-gypsum" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Q: What is the plan to handle elisp packages that depend on 3rd party/external libraries? (libgit/magit or rg/ripgrep)?""" start="00:12:08.539" video="qanda-gypsum" id="subtitle"]]</div>[[!template text="""Okay, what is the plan to handle elisp packages that depend""" start="00:12:08.539" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""on third-party or external libraries like git or magit""" start="00:12:08.539" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""or ripgrep? So that's going to be tricky. It depends on how""" start="00:12:08.539" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""these external packages are linked into emacs. If it's""" start="00:12:21.523" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""going to be a dynamic library like Robin Templeton's""" start="00:12:26.844" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""project which you load the libgit library into the Emacs""" start="00:12:26.844" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""process, that is going to be extremely difficult. So if you""" start="00:12:35.289" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""have an external library like, I don't know, libgit or""" start="00:12:44.032" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""what's the GUI thing? Cabal. No, not Cabal. Cairo, libcairo""" start="00:12:44.032" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""to do SVG graphics and so on.""" start="00:12:57.736" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""You can do that very easily with Guile, but then on top of""" start="00:13:04.483" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""that, implementing Emacs list bindings to it, I mean,""" start="00:13:04.483" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""you've got two layers there, and that makes things pretty""" start="00:13:04.483" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""difficult. So it's possible. And to some degree, maybe""" start="00:13:04.483" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""necessary for example, Cairo, if we want to do SVG graphics""" start="00:13:21.935" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""the way that Emacs Lisp does, we're going to have to have""" start="00:13:21.935" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""that. So that would be necessary. We would have to have those""" start="00:13:21.935" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""two layers. Yes, let's do that. But if it's like for Magit,""" start="00:13:32.643" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""you can just call out to your git process, and then you're""" start="00:13:38.047" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""just using the regular process APIs that Emacs Lisp has. And""" start="00:13:38.047" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""that can be, already we, like Guile has some very good""" start="00:13:51.451" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""implementations for process management. And so it would""" start="00:13:51.451" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""just be a matter of wrapping up those in the Emacs lisp form""" start="00:13:59.055" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""bindings. So yeah, dynamic libraries, I wanna try to avoid.""" start="00:13:59.055" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""And I would prefer to do things more through, you know,""" start="00:14:12.222" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""launching a child process in the Emacs process. and then""" start="00:14:12.222" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""communicating over the standard in, standard out""" start="00:14:20.956" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""channels.""" start="00:14:20.956" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""That's the easier way to do things, I think, because then you""" start="00:14:29.460" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""can just use the process library that Emacs already has, and""" start="00:14:29.460" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""you can just reuse all of that code.""" start="00:14:29.460" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""I'm not sure how ripgrep works, unfortunately, but I""" start="00:14:43.969" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""believe that's also a process, a child process. So, we can""" start="00:14:43.969" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""just reuse all of the Emacs Lisp code that does that already.""" start="00:14:50.412" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""We just need to make sure that the process management""" start="00:14:54.014" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""implementation and scheme is properly bound to Emacs Lisp,""" start="00:14:54.014" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""and it works the same as GNU Emacs does. Once that's all set,""" start="00:14:54.014" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""then these porcelains, like around git, should fall into""" start="00:15:06.360" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""place. without too much difficulty, hopefully.""" start="00:15:06.360" video="qanda-gypsum" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Q: Not really a question, but how about Schemacs as a name?""" start="00:15:21.112" video="qanda-gypsum" id="subtitle"]]</div>[[!template text="""How about Schemax as a name? I like the name. I like that name.""" start="00:15:21.112" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""I haven't really looked into like, is that already used or is""" start="00:15:28.937" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""that going to be confusing? But certainly something we can""" start="00:15:28.937" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""discuss.""" start="00:15:33.380" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Another thing I should mention,""" start="00:15:38.243" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""I should probably set up a server or something like Discord""" start="00:15:42.157" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""or something like that. Discourse, not Discord.""" start="00:15:42.157" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Discourse, the open source one, where we could actually""" start="00:15:51.619" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""chat about this stuff. For the time being, ActivityPub,""" start="00:15:51.619" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""mostly Mastodon, is how I communicate with people in real""" start="00:15:56.540" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""time, that or email. So if you want to get a hold of me, check""" start="00:15:56.540" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""the notes for this presentation and just send me an email.""" start="00:16:09.809" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Any question at all is fine. If you want to contribute code,""" start="00:16:16.752" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""if you want to just learn how to contribute code, send me any""" start="00:16:19.633" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""questions. It's fine. I'm happy to answer them. And we can""" start="00:16:19.633" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""talk about the name as well.""" start="00:16:30.256" video="qanda-gypsum" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Q: Why is it not feasible for the Emacs layer that interprets Emacs Lisp (the core in C) ot have a Scheme interpreter, instead of using Guile?""" start="00:16:45.931" video="qanda-gypsum" id="subtitle"]]</div>[[!template text="""Okay, why is it not feasible for the Emacs layer that""" start="00:16:45.931" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""interprets Emacs Lisp, the core in C, have a Scheme""" start="00:16:45.931" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""interpreter instead of using Guile? Let's see, I have to,""" start="00:16:45.931" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""okay. Emacs layer interprets Emacs Lisp, the core in C, have""" start="00:16:55.496" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""a Scheme interpreter instead of using Guile. Okay, so that,""" start="00:16:57.737" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""the question xlarsx is asking, xlars, x, So Lars is asking,""" start="00:17:07.362" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""is it not feasible for there to be an""" start="00:17:14.744" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Emacs layer that interprets Emacs Lisp have a scheme""" start="00:17:14.744" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""interpreter? This is Robin Templeton's project. And""" start="00:17:14.744" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""they're presenting later today. So check the roster and be""" start="00:17:30.815" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""sure to see that presentation because that's exactly what""" start="00:17:32.697" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Robin Templeton is doing. That's not what I'm doing though.""" start="00:17:32.697" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""I'm trying to create something in Scheme. But yes, there is""" start="00:17:44.419" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""an attempt to get an Scheme interpreter to run inside of""" start="00:17:48.280" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Emacs itself. And it has its own method of binding to Emacs""" start="00:17:48.280" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Lisp functions and translating data like Lisp structures""" start="00:17:55.181" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""between Guile Scheme and Emacs Lisp. Robin will explain all""" start="00:17:55.181" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""of that in their presentation.""" start="00:18:05.943" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""OK, I think I've got through all the questions on Etherpad.""" start="00:18:28.519" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""But I'm going to hang out here for a bit longer. And yeah, feel""" start="00:18:33.620" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""free to do a video chat with me or send me more questions on""" start="00:18:37.621" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Etherpad or here in the big blue button. And so I'm just going""" start="00:18:37.621" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""to hang out. And thanks for asking all your questions. And""" start="00:18:47.002" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""yeah, I look forward to working with all of you if you're""" start="00:18:51.663" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""interested. take it easy. Thanks so much for the talk and""" start="00:18:51.663" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""looking forward to seeing some of your progress as this""" start="00:18:59.935" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""moves forward, exciting space. We'll go ahead and leave the""" start="00:18:59.935" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""room open for you and thanks for offering to hang out and chat""" start="00:19:09.261" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""with other people that come by. Feel free to throw something""" start="00:19:09.261" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""in the chat if you want to remind people you're still here.""" start="00:19:15.025" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""Meanwhile, on the stream, we have moved along to our next""" start="00:19:19.557" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""talk on Rust, and that is just getting started. But again,""" start="00:19:19.557" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""we're continuing to record this, and I'll just keep an eye on""" start="00:19:25.283" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""it to stop the recording. Thank you. Thank you. It was""" start="00:19:25.283" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""awesome.""" start="00:19:33.352" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""So it seems like it's slowed down here for the Q&A. I don't see""" start="00:21:47.935" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""anybody else on BBB, so I'm going to go ahead and stop the""" start="00:21:50.638" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""recording. We can start it back up. I would say, yes, there's""" start="00:21:50.638" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""a lot of things you can do with this. You can handle""" start="00:21:55.282" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""processing. Yeah, I'm going to try and join over the chat for""" start="00:21:58.926" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""the next talk. I'm not sure if I can do both big blue buttons at""" start="00:22:02.029" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""the same time. You should be able to just watch your mute""" start="00:22:08.635" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""settings and mute tab settings and whatever all you have to""" start="00:22:13.206" video="qanda-gypsum" id="subtitle"]]
+[[!template text="""avoid bleed through. Okay.""" start="00:22:13.206" video="qanda-gypsum" id="subtitle"]]
+
+</div>Questions or comments? Please e-mail [ramin.honary@gmail.com](mailto:ramin.honary@gmail.com?subject=Comment%20for%20EmacsConf%202023%20gypsum%3A%20Gypsum%3A%20my%20clone%20of%20Emacs%20and%20ELisp%20written%20in%20Scheme)
<!-- End of emacsconf-publish-after-page -->
diff --git a/2024/info/gypsum-before.md b/2024/info/gypsum-before.md
index 7d243b8d..524407d7 100644
--- a/2024/info/gypsum-before.md
+++ b/2024/info/gypsum-before.md
@@ -2,12 +2,18 @@
[[!toc ]]
Format: 25-min talk ; Q&A: BigBlueButton conference room
Etherpad: <https://pad.emacsconf.org/2024-gypsum>
-Status: Q&A finished, IRC and pad will be archived on this page
+Status: TO_CAPTION_QA
+# Talk
+
<div class="vid"><video controls preload="none" id="gypsum-mainVideo"><source src="https://media.emacsconf.org/2024/emacsconf-2024-gypsum--gypsum-my-clone-of-emacs-and-elisp-written-in-scheme--ramin-honary--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2024/captions/emacsconf-2024-gypsum--gypsum-my-clone-of-emacs-and-elisp-written-in-scheme--ramin-honary--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 24:36 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2024-gypsum">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-gypsum--gypsum-my-clone-of-emacs-and-elisp-written-in-scheme--ramin-honary--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-gypsum--gypsum-my-clone-of-emacs-and-elisp-written-in-scheme--ramin-honary--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-gypsum--gypsum-my-clone-of-emacs-and-elisp-written-in-scheme--ramin-honary--main.webm">Download --main.webm (56MB)</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-gypsum--gypsum-my-clone-of-emacs-and-elisp-written-in-scheme--ramin-honary--pad.html">Download --pad.html</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-gypsum--gypsum-my-clone-of-emacs-and-elisp-written-in-scheme--ramin-honary--pad.md">Download --pad.md</a></li><li><a href="https://toobnix.org/w/8yqjkevWPH7RSRzPpHb5JB">View on Toobnix</a></li></ul></div></div>
+
+# Q&A
+
+<div class="vid"><div></div><div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2024-gypsum">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-gypsum--gypsum-my-clone-of-emacs-and-elisp-written-in-scheme--ramin-honary--answers--chapters.vtt">Download --answers--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2024/emacsconf-2024-gypsum--gypsum-my-clone-of-emacs-and-elisp-written-in-scheme--ramin-honary--answers.vtt">Download --answers.vtt</a> (unedited)</li></ul></div></div>
# Description
<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2024/talks/gypsum.md b/2024/talks/gypsum.md
index f1d6aecd..a76afb02 100644
--- a/2024/talks/gypsum.md
+++ b/2024/talks/gypsum.md
@@ -362,6 +362,68 @@ professionally.
You may also like another talk by this speaker:
[EmacsConf - 2022 - talks - Build a Zettelkasten with the Hyperbole Rolodex](https://emacsconf.org/2022/talks/rolodex/)
+# Discussion
+
+## Questions and answers
+
+- Q: Would it be possible to support a GUI toolkit other than GTK? Like how GNU Emacs still supports Lucid
+ - A: Yes this planed by having proper backend: emacs-lisp running
+ into a module and the GUI being another module. So normalized
+ communication. Currently GTK being standard implementation, also
+ done here.
+- Q: Do you plan to provide improvements to Elisp as a language, or is the focus on a compatibility layer to facilitate doing all new extensions, etc. in Scheme?
+ - A: Plan is to keep up-to-date with new releases. So new GNU
+ feature should be included with each release. But also intend to
+ have support for pure Scheme features.
+- Q: \<janneke\> If Emacs Lisp support for Guile was documented
+ better, could you be nudged/convinced to (re)start using, and
+ contributing to that?
+ - A: Compatibility is the most important things. Documentation not
+ sufficient to convince users to switch.
+- Q: Why is being able to interpret all of \`init.el\` an useful goal?
+ Sure, there is a lot of code written in elisp - can we consider a
+ translator like utility to convert elisp to scheme, once guile-emacs
+ becomes a reality? 
+ - A: Probably, but first step is getting the interpretter working.
+ Emacs-lisp basically compiled down to intermediate
+ representation of the guile compiler \[this was one of the hard
+ things to get to work\]. But unclear how this works for other
+ schemes. Best solution probably translation elisp -\> scheme,
+ but this is not the approach that was done. Would be very cool
+ to have. Feel free to give a PR.
+- Q: What is the plan to handle elisp packages that depend on 3rd party/external libraries? (libgit/magit or rg/ripgrep)? 
+ - A: Will be tricky. If loading directly into the elisp process,
+ very hard. Cairo could help, but you need emacs lisp binding on
+ top of that. For magit, you can call regular process
+ communication via stdin/stdout; so you can reuse existing scheme
+ libraries. Dynamic libraries not a goal. Rg/ripgrep probably the
+ same with process communication.
+- Q: \<xlarsx\`\> Why is it not feasible for the Emacs layer that interprets Emacs Lisp (the core in C) ot have a Scheme interpreter, instead of using Guile?
+ - A: \<gringo\> Guile is a scheme. Not sure what you mean.
+ - A: Check presentation later of Robin Templeton (\"Beguiling
+ Emacs: Guile-Emacs relaunched!\"): the attempt exists by
+ translating elisp to guile. 
+ - thank you
+
+- Q: Not really a question, but how about Schemacs as a name?
+
+- - A: Cool name, but did not check if it is already used. Feel free
+ to discuss by email.
+- Q: \<gringo\> I'm curious to know how the hell guile-emacs deals with all of the dynamically scoped modules out there. Is there any effort to automatically modularize and namespace stuff?
+
+## Notes
+
+- \<robin\> oo neat, i didn\'t know about that first bit of history
+- \<janneke\> i\'ve heard rms say that scheme (guile) is just a nicer
+ lisp; but didn\'t know there were concrete talks/attempts to use
+ guile for emacs that early
+- \<tusharhero\> Q: Not really a question, but how about Schemacs as a
+ name?
+- \<janneke\> robin: yes, guile-elisp not being portable might be a
+ showstopper
+-                     for ramin
+
+
[[!inline pages="internal(2024/info/gypsum-after)" raw="yes"]]
[[!inline pages="internal(2024/info/gypsum-nav)" raw="yes"]]
diff --git a/2024/talks/project.md b/2024/talks/project.md
index 65c33ac1..84f2959a 100644
--- a/2024/talks/project.md
+++ b/2024/talks/project.md
@@ -56,6 +56,229 @@ He switched from using LaTeX to Org-mode recently.
He will discuss the features of the writing log and the joys of editing it in Org-mode.
+# Discussion
+
+## Questions and answers
+
+- Q: what does 0573 means in your init. file name?
+ - A: Index number used to \"name\"/ describe a project.  My
+ project folders in my home directory are of the format
+ ####stubOfTheProjectsFullName. Maybe i will describe my project
+ numbering system in a future talk. It helps enormously in
+ navigating between projects and stayting organized. I store the
+ project ID number and the folder name in a sqlite database that
+ I pop open with a bash alias to the DB Browser for SQlite. I
+ also use the Project ID to track time spent on each project to
+ the nearest 15 minues increment. I do this time tracking once
+ every several hours 2-4 times a day. If I cannot remember what I
+ was doing, nothing is recorded. This is important for keeping
+ the data accurate. This practive is a pain but the data are
+ valuable for self-assessments and annual reports.
+- Q: \<gringo\> What does Zettelkasten mean?
+ - A: \<vidianos\> It\'s a notetaking method \<Neil\>Useful
+ overview at
+ [https://zettelkasten.de/introduction/](https://zettelkasten.de/introduction/){rel="noreferrer noopener"}
+ - A: Pls cf.
+ [https://en.wikipedia.org/wiki/Zettelkasten](https://en.wikipedia.org/wiki/Zettelkasten){rel="noreferrer noopener"}
+ An augmented org-roam is found in the zetteldesk.el project by
+ Vidianos
+ [https://github.com/Vidianos-Giannitsis/zetteldesk.el](https://github.com/Vidianos-Giannitsis/zetteldesk.el){rel="noreferrer noopener"}.
+ See  his talk from EmacsConf 2022: 
+ [https://www.youtube.com/watch?v=dJ859kiFRLg&t=0s](https://www.youtube.com/watch?v=dJ859kiFRLg&t=0s){rel="noreferrer noopener"}
+ - A: A great resource is Sönke Ahrens\'s \"How to Take Smart
+ Notes\" (to get you thinking about the progressive evolution of
+ your note taking; and a solid walk through of Zettlekasten in
+ practice/implementation) . There also is a German edition of the
+ book, it\'s called: \"Das Zettelkasten-Prinzip\". The book
+ \"Antinet Zettelkasten\" by Scott Scheper clarifies several
+ misconceptions about the Zettelkasten Method (see chapter 3). He
+ spent months replicating the analog version that Luhman used and
+ gained a number of important insights. I have seen the method
+ applied in ways that were never intended. I think that these
+ vairant approaches are innovative and can enhance productivity,
+ but they can cause some confusion. The ultimate source is the
+ [https://niklas-luhmann-archiv.de/](https://niklas-luhmann-archiv.de/){rel="noreferrer noopener"}.
+ - Smart notes are linked to one another. They make up a kind of
+ hypertext, similar to a wiki, as a whole.
+ - Org-Roam and Denote are two implementations that can support the
+ slipcase; backlinks are important (and also/perhaps a
+ consideration of the hierarchy)
+- Q: How many papers are you writing at the same time?
+ - A: Working on 10--15/y, publishing 1--8/y
+ - On a given day, 2 papers/day usually, sometimes up to 5
+ papers/day
+- Q: How you capture those ideas when when you are away from Emacs?+3
+ - A: Digital recorder for recording thoughts, especially during
+ daily commute. I also mentioned caputing thoughts in
+ 750words.com. I was an early user (May 2012) and was
+ grandfathered in with a free subscription for life. This is why
+ I am reluctant to give it up. I started learning to use Emacs
+ in 2000. I have not yet moved all of my workflow to Emacs, but I
+ am getting there. The other site that I use when I exceed the
+ 5000 word limit at 750words.com is WriteHoney
+ [https://app.writehoney.com/write](https://app.writehoney.com/write){rel="noreferrer noopener"}.
+ - Whisper AI to transcribe the recordings. See this site for the
+ post transcription scripts that I apply to clean up the text
+ before I see the trasncript:
+ [https://github.com/MooersLab/bash-whisper-transcription](https://github.com/MooersLab/bash-whisper-transcription){rel="noreferrer noopener"}.
+ I also jot down notes but not so much after I started using the
+ digitial voice recorder (DVR). Dragging the audo file to the
+ folder where I do the transcriptions does take a wee bit of time
+ so I try to be judicious about selecting when I turn on the DVR.
+ I should probably write a Elisp function to transcribe the audio
+ recording from the DVR, save the transcript, and delete the
+ audio recording so that I can streamline this process. There is
+ alawys a way to do things more efficiently with Emacs!
+ - sachac: oooh, I can recommend getting an inexpensive lapel mic if you don't already have one. I'm also experimenting with using keywords to organize my audio braindumps.
+- Q: What if an ideas does not belong to any current working manuscript?
+ - A: Sandbox area in a log file. The Sandbox area is called
+ \"Future additions and tangents\" in the template log file and
+ is also used to draft sections of the paper that I am uncertain
+ that I will retain.
+ - If not related, kept in an external diary
+- Q: It looks like you have daily log per project, what do you think
+ about just using single daily notes and cross referencing different
+ projects?
+ - A: I have \> 800 projects per year in 10 categories. Several
+ years ago, I made org files for each category with 1000
+ headlines, but this proved to be too unwieldy for me at the time
+ as a noivice org-mode user. The log files for the manuscript
+ projects wind up with 50-100 pages of content each so the
+ single-threaded nature of Emacs hampers scrolling through such
+ huge org files. In addition, I want to keep all other projects
+ out of sight and mind while focused on the project at hand.
+- Q: \<gringo\> If there were one habit from your process (referencing your extensive flow chart) that you want active learners/professional researchers to adopt, which would it be and why?
+ - Keeping a daily diary is essential for overcoming the fears of
+ forgetting and losing momentum. These fears are the maiin
+ barriers to switching between projects on a given day. The
+ in-grained preference is to do binge writing, which I still
+ succumb to doing sometimes, but I am trying to avoid binge
+ writing with this system.
+- Q: \<gs-101\> I see that you use checkboxes for tasks. Did you know
+ you can format headings to support tracking them? Like this: TODO
+ Heading \[0/4\]
+ - A: Yes, I convert some of my most important todo items into
+ \*\*\* TODO headline to be picked up by arg agenda. I add the
+ writing-project log file to the list of org files that org
+ agenda searches. I use a Elisp function to add new \*\*\*TODO
+ items to the list when they come to mind. I will post this
+ function shortly on the AAAreadme of
+ [https://github.com/MooersLab/writingLogTemplateInOrg](https://github.com/MooersLab/writingLogTemplateInOrg){rel="noreferrer noopener"}.
+ This eliminates the need to refile the idea, which I am too
+ undisciplined to do.
+- Q: I actually love this one! But it creates as much separated log as
+ there is project. You limit yourself to work only on how many
+ project per day? How do you explore them back (if you ever)?  I
+ assume your org files is growing exponantially over time. You said
+ about \"valuable when receiving critiques?\" (Donovan)  
+- A: Thank you for the opportunity to make clarifications. I try to
+ work on two writing projects a day on average terms of doing
+ generative writing tasks. Yes, there is one writing-project log file
+ per project. They tend to grow to a length of 50-100 pages by the
+ time the paper is published. Because of the ability to fold
+ sections, I have not run into trouble with the longer lengths.  I
+ use the template on GitHub to start the log file for a new writing
+ probject. I could consider retaining a log file for a sequel paper
+ to retain the history of decisions made in the first paper but I
+ would duplicate it and rename the copy with the new project number.
+ I will go through an old log file for a published paper from years
+ ago to recover details on how I carried out certain procedures. The
+ history of decisions in the daily log is invaluable for responding
+ to probing questions by reviewers about why we decided to do certain
+ procedures.
+- \<\_viz\> Q: Sorry, not really related to the talk\'s topic but can
+ you share the pymol project that shown in the writing log slide
+ earlier in the talk? I am interested in the paper/project.
+ - A: Thank you for your interest on the PyMOL project. I have not
+ published that particular project yet, but a number of related
+ PyMOL projects are on my GitHub site. The most popular is
+ MooersLab/PyMOLshortcuts
+ [https://github.com/MooersLab/pymolshortcuts](https://github.com/MooersLab/pymolshortcuts){rel="noreferrer noopener"}.
+ The associated paper is here
+ [https://onlinelibrary.wiley.com/doi/10.1002/pro.3781](https://onlinelibrary.wiley.com/doi/10.1002/pro.3781){rel="noreferrer noopener"}.
+ I have run PyMOL in Jupyter
+ [https://github.com/MooersLab/jupyterlabpymolpysnips](https://github.com/MooersLab/jupyterlabpymolpysnips){rel="noreferrer noopener"} 
+ [https://pubmed.ncbi.nlm.nih.gov/33967632/](https://pubmed.ncbi.nlm.nih.gov/33967632/){rel="noreferrer noopener"}
+ ,  Colab  
+ [https://github.com/MooersLab/colabOpenSourcePyMOLpySnips](https://github.com/MooersLab/colabOpenSourcePyMOLpySnips){rel="noreferrer noopener"} 
+ [https://proceedings.scipy.org/articles/majora-1b6fd038-002](https://proceedings.scipy.org/articles/majora-1b6fd038-002){rel="noreferrer noopener"},
+ RStudio 
+ [https://github.com/MooersLab/rstudiopymolpysnips](https://github.com/MooersLab/rstudiopymolpysnips){rel="noreferrer noopener"},
+ and Org-mode
+ [https://github.com/MooersLab/orgpymolpysnips](https://github.com/MooersLab/orgpymolpysnips){rel="noreferrer noopener"}.
+ I gave a talk about the later at emacsconf 2021
+ [https://emacsconf.org/2021/talks/molecular/](https://emacsconf.org/2021/talks/molecular/){rel="noreferrer noopener"}. 
+- \<jsiegel62\> Q: Have you tweaked your Emacs configuration at all
+ \-- with cus keybindings, etc \-- to support the process you
+ demonstrated? Thank for the good question because my talk was
+ focused on a template org document. I use org-ref heavily. I use it
+ to add Bibtex entries, download PDFs of research articles by their
+ DOIs, and rename them with the citekey. I made several Elisp
+ functions that do minor tasks to support my worflow. I will post
+ them github. 
+- \<PlasmaStrike\> I like to Seperate my ZettelKasten and GTD  with
+ Daily and global, Zettelkasten daily would be a journal, The reason
+ to keep them seperated is daily is to start with a black sheet and
+ can be thrown ignored if not done well, If good enough goes into
+ zettel etc. That is a good suggestion. Thank you for sharing it.
+
+## Notes
+
+- Hi, This is Blaine. I am checkin in!
+ - Hey :)
+- Hello from Madagascar :) Hello from Brazil (there\'s an old song
+ about madagascar:
+ [https://www.youtube.com/watch?v=k206JIkXJbk](https://www.youtube.com/watch?v=k206JIkXJbk){rel="noreferrer noopener"})
+ :) Hello from Uganda Hello from ISS\^\^ The International Space
+ Station? 0_0 Hello from US Hello world and outer space!!!!
+- It\'s so awesome seeing these talks that are not strictly software
+ development relatedThank you!
+- It\'s amazing to see how much people do with emacs Thank you!
+- \<Neil\> \[MooersLab/writingLogTemplateInOrg: Template for
+ writing.log in
+ org-mode\]([https://github.com/MooersLab/writingLogTemplateInOrg](https://github.com/MooersLab/writingLogTemplateInOrg){rel="noreferrer noopener"})
+- \<mickeynp\> it\'s really impressive. it also makes me realise that
+ people are a lot more organised than could ever be. I have been
+ studying time management for decades; it is still a stuggle for me.
+- \<gg\> That chart looks complicated. It can get pretty complicated
+ as its deeply personal and has seen several revisions.  (Sounds like
+ the chart is descriptive and not prescriptive) Right, is just
+ descriptive. Yes, that concept map it a bit overwhelming. I plann to
+ make a slimed down version. Thank you for the feedback.
+- \<jsiegel62\> I love the fact. that \"shower\" is called out as an
+ Ideation \"feed\" in the writing process chart :-) Takes shower
+ thoughts to a whole new level\...It is a feature of our insane 24-7
+ culture. 
+- \<gringo\> The man is trying to treat cancer, I expected nothing
+ less complicated than this gg Thank you! Yes, our work has added
+ years of additional life to many cancer patients. 
+- \<jsiegel62\> There is a package \-- I think it is \'org-tracktable
+ \-- that records word counts by session in an inline block within
+ org files 
+ [https://github.com/tty-tourist/org-tracktable](https://github.com/tty-tourist/org-tracktable){rel="noreferrer noopener"}
+ i will check it out. Thank you for the link! My time tracking
+ databse has 10,848 rows after 2.5 years. It may be over 100,000 rows
+ long by the time that I expire. I decided that a org-mode table
+ would be not appropriate. I adandoned the Google Sheet Workbook over
+ a year ago because it is reduant with entries in my timespent.db. I
+ did not like the duplicated effort.  I am now testing the use of a
+ heat map for a similar writing accountability purpose. It tallies my
+ writing effort per day from my timespent.db file. I enter \`hmj\`
+ for Heat Map of Journal article writing to effort.  This is a long
+ bash alias to to script and commands that generate the heatmap and
+ post it on Github. The GitHub repo for the script is here
+ [https://github.com/MooersLab/writing-time-spent-heatmap](https://github.com/MooersLab/writing-time-spent-heatmap){rel="noreferrer noopener"}.
+ I have similar aliases for makng heatmps for grant writing,
+ teaching, and service, but my daily focus is on article writing.
+- \<\_viz\> oohhh using a drawer for stashing these details away is a
+ nice idea! Thank you! Org-mode has so many niffty feature like
+ drawers.
+- \<gg\> I\'m impressed by how systematic he is about everything.Thank
+ you!
+- \<gringo\> I\'m thankful for people like the presenter that dedicate
+ so much of their time to researching treatments for the horrible
+ diseases that people suffer. \[10:09\] Thank you!
+
[[!inline pages="internal(2024/info/project-after)" raw="yes"]]