WEBVTT 00:00:00.000 --> 00:00:04.839 I'm doing great. Good to hear from you guys. Yeah, I mean, 00:00:04.840 --> 00:00:07.959 you've been a regular of the show, I would say, for quite a 00:00:07.960 --> 00:00:11.399 while, and it's good. I really like the retrospective that 00:00:11.400 --> 00:00:14.959 you did the first time you attended EmacsConf. And when was 00:00:14.960 --> 00:00:18.759 it? Was it 2015? I can't actually remember. 2015 was when I 00:00:18.760 --> 00:00:22.319 presented that, but I did an earlier talk the year before. So 00:00:22.320 --> 00:00:25.479 yeah, that's why it's kind of thing. It's like, wow, it's 00:00:25.480 --> 00:00:31.279 been a decade. It's been a while. Yeah, and I'm glad that you 00:00:31.280 --> 00:00:35.559 are in a much better recording situation than you were in 00:00:35.560 --> 00:00:39.439 2015 at the back of your colleague's house. It's good to see 00:00:39.440 --> 00:00:44.359 you at your own place. Well, it's also nice to pre-record and 00:00:44.360 --> 00:00:48.239 then just share. Yeah, I mean, that's why we keep talking 00:00:48.240 --> 00:00:51.519 about pre-recording. You know, when we really pushed 00:00:51.520 --> 00:00:53.759 pre-recordings, I think it was five years ago when we 00:00:53.760 --> 00:00:57.679 started, people were not really liking it. They thought, 00:00:57.680 --> 00:01:00.039 oh, but most conferences are just asking you to come and 00:01:00.040 --> 00:01:02.919 chat. And, you know, I don't need to do the pesky 00:01:02.920 --> 00:01:06.319 pre-recording. But now, and especially for you regulars, 00:01:06.320 --> 00:01:08.359 you're really starting to realize that pre-recordings are 00:01:08.360 --> 00:01:11.279 actually amazing for everyone. You're less stressed on the 00:01:11.280 --> 00:01:14.199 day of the conference. We, the organizers, are way less 00:01:14.200 --> 00:01:16.519 stressed. So it's a win-win scenario for absolutely 00:01:16.520 --> 00:01:19.359 everyone in the equation. Okay, so there's some 00:01:19.360 --> 00:01:22.519 confirmation bias at work, but I'm not really arguing with 00:01:22.520 --> 00:01:27.639 what Leo says for the record. It may be that we are just that 00:01:27.640 --> 00:01:30.759 this stoked that we're lying to ourselves by the 00:01:30.760 --> 00:01:33.959 opportunity that we have to chat with each of you. Sure. 00:01:33.960 --> 00:01:38.759 Sure. Sure. I have really appreciated all of the, the 00:01:38.760 --> 00:01:43.559 transcripts. It's been great that, you know, to be able to 00:01:43.560 --> 00:01:46.519 read and copy and paste and all that kind of thing. Yeah, it's 00:01:46.520 --> 00:01:49.959 great. So yeah, let's answer some questions here. 00:01:49.960 --> 00:01:58.159 Let's see. Yeah, just feel free to jump onto the Etherpad and 00:01:58.160 --> 00:02:01.239 just drop on the questions. I'll keep answering them all day 00:02:01.240 --> 00:02:07.399 kind of thing and get better answers as we go along. NOTE Q: What's the largest code base you've ever tackled with the literate approach (esp. Emacs + Org-mode)? 00:02:07.400 --> 00:02:12.439 So yeah, the first question here is, what's my largest code base? 00:02:12.440 --> 00:02:18.359 I kind of touched it in my presentation. However, I think 00:02:18.360 --> 00:02:22.439 someone just went through and did a better count than it 00:02:22.440 --> 00:02:27.879 looks like. a little bit more. So 00:02:27.880 --> 00:02:32.959 as I joked about in the video, we've all worked on larger code 00:02:32.960 --> 00:02:36.799 bases, but that's still, it's kind of significant. So it's 00:02:36.800 --> 00:02:43.679 not, so yeah, anyway. So let's talk a little bit about 00:02:43.680 --> 00:02:49.519 searching for functions here. If you've got your functions 00:02:49.520 --> 00:02:53.679 in your code or code block, well, you can search for the 00:02:53.680 --> 00:02:59.319 descriptions, you know, as long as you've evaluated it. And 00:02:59.320 --> 00:03:04.519 so that wasn't so much of a problem, but I did want to like look 00:03:04.520 --> 00:03:07.839 at the commentary around any function that I would define. 00:03:07.840 --> 00:03:14.039 And that's where, yeah, you know, the C-x or the 00:03:14.040 --> 00:03:18.919 C-f to define that function and display it. It won't 00:03:18.920 --> 00:03:22.279 pull out the literate stuff around it, obviously, it'll 00:03:22.280 --> 00:03:27.159 only do the doc header. But if you could search for it and find 00:03:27.160 --> 00:03:30.559 it quick, then it might be just as useful. And I guess that's 00:03:30.560 --> 00:03:36.079 why I started getting into seeing if I can't tie that into the 00:03:36.080 --> 00:03:40.839 X ref. you know, just the standard ways. My first part, I 00:03:40.840 --> 00:03:45.799 noticed that evil has a different way of searching through 00:03:45.800 --> 00:03:50.999 for looking for code definitions. That was my first foray 00:03:51.000 --> 00:03:53.959 into it. It's like, oh, that's not a bad idea. Let's hook it up 00:03:53.960 --> 00:03:58.079 under, you know, in the standard way. NOTE Q: Have you ever used org-transclusion? 00:03:58.080 --> 00:04:02.279 Let's see. Have I ever used org-transclusion? 00:04:02.280 --> 00:04:05.319 No, I haven't, but I think I want to 00:04:05.320 --> 00:04:08.439 take a look at it. I haven't heard of it before. NOTE Q: What is your usage of dynamic blocks in such workflows? 00:04:08.440 --> 00:04:16.519 Let's see. What's my usage of dynamic blocks in my 00:04:16.520 --> 00:04:21.439 workflows? You know, that's a real good question. I haven't 00:04:21.440 --> 00:04:26.319 really used them a lot in all of my workflows, but yeah, it's 00:04:26.320 --> 00:04:29.439 an interesting, you know, we always start. 00:04:29.440 --> 00:04:30.999 At first, all 00:04:31.000 --> 00:04:33.679 we're doing is just taking a few notes, then we start 00:04:33.680 --> 00:04:36.039 organizing, then we've got links, and then we're writing 00:04:36.040 --> 00:04:39.519 code blocks, and then agendas, and table, you know, we keep 00:04:39.520 --> 00:04:40.999 building up on it. 00:04:41.000 --> 00:04:44.399 I guess I haven't really added that to 00:04:44.400 --> 00:04:46.978 my workflow, but maybe I'll have to come back 00:04:46.979 --> 00:04:48.839 and report on that. NOTE Q: Is the minibuffer being deliberately hidden in this video? 00:04:48.840 --> 00:04:51.599 Is the mini buffer being deliberately hidden in my 00:04:51.600 --> 00:04:57.879 video? Not deliberately. I recorded it first and 00:04:57.880 --> 00:05:03.759 accidentally not clipped the video and turned that all off. 00:05:03.760 --> 00:05:07.359 So I went through and started fixing all of it. But yeah, so 00:05:07.360 --> 00:05:10.759 you'll notice the mini buffer kind of comes and goes in the 00:05:10.760 --> 00:05:12.444 video. Sorry about that. 00:05:12.445 --> 00:05:17.340 So yeah, it wasn't intentional at all. NOTE Q: What's your take on Emacs+Org vs. Jupyter notebooks (for interactive programming)? 00:05:17.341 --> 00:05:21.839 What's my take on Emacs Org versus Jupyter? That's a real 00:05:21.840 --> 00:05:29.519 good question. I've been toying about seeing if I could do 00:05:29.520 --> 00:05:32.479 everything that some people do with Jupyter notebooks in 00:05:32.480 --> 00:05:36.079 order. I don't need to do it as much because I'm still kind of 00:05:36.080 --> 00:05:40.319 doing a lot of list programming and a lot of my DevOps, which 00:05:40.320 --> 00:05:45.559 is a lot of shell work and a lot of Python. Most of the Jupyter 00:05:45.560 --> 00:05:49.639 notebooks, they automatically include a lot of things in 00:05:49.640 --> 00:05:56.679 from either Julia or Python, like NumPy and all the dynamic 00:05:56.680 --> 00:06:01.439 stuff that's going on there. Since it has a server, 00:06:01.440 --> 00:06:07.439 it seems like it's running a lot more stuff and then just 00:06:07.440 --> 00:06:10.719 shipping it back off into the web app. That has been the 00:06:10.720 --> 00:06:16.239 biggest challenge as I've tried to kind of duplicate that. I 00:06:16.240 --> 00:06:20.439 don't really know NumPy and all the math stuff and that sort 00:06:20.440 --> 00:06:25.039 of stuff that well. So trying to do like matrix 00:06:25.040 --> 00:06:27.359 multiplications and that kind of thing that seemed to be 00:06:27.360 --> 00:06:33.119 pretty easy in the Jupyter, it's not very easy in Org. I've 00:06:33.120 --> 00:06:36.639 attempted to kind of work with Julia and the Julia support 00:06:36.640 --> 00:06:45.759 for Org is really limited it seems. That's the, So, yeah, 00:06:45.760 --> 00:06:49.199 there's some improvements we could probably make. So, I 00:06:49.200 --> 00:06:53.159 think if somebody is comfortable with Jupiter, and that 00:06:53.160 --> 00:06:59.039 seems to work, you may have to stay there. I don't know how 00:06:59.040 --> 00:07:04.679 easy. I would be curious to try to see what we could do as a 00:07:04.680 --> 00:07:07.799 community to kind of make that transition a lot easier. NOTE Q: Do you think any programming language is more suited to literate programming than another? 00:07:07.800 --> 00:07:12.416 Do you think any programming language 00:07:12.417 --> 00:07:13.559 is more suited to literate 00:07:13.560 --> 00:07:16.959 programming than another? Hey, that's a real good 00:07:16.960 --> 00:07:22.359 question. A lot of mine is with Emacs Lisp, and obviously 00:07:22.360 --> 00:07:27.639 that's a first-class citizen in Emacs. Go figure, right? So 00:07:27.640 --> 00:07:33.519 that one certainly works. A lot depends on the support in the 00:07:33.520 --> 00:07:38.199 OB version for the Babel work. Python is really well 00:07:38.200 --> 00:07:45.599 supported, and yeah, Emacs Lisp. Others, Shell, you know, 00:07:45.600 --> 00:07:50.439 it works, but it's hard to get both the values, the variables 00:07:50.440 --> 00:07:53.479 out of the environment variables into your thing. So most 00:07:53.480 --> 00:07:58.959 everything is just with the results of output. So, you know, 00:07:58.960 --> 00:08:03.079 some languages aren't quite as good as others for sure. I 00:08:03.080 --> 00:08:06.879 would love to see better support for more interesting 00:08:06.880 --> 00:08:10.439 languages, especially ones that are compiled. I've been 00:08:10.440 --> 00:08:16.639 dabbling with Rust and like, yeah, what can we do to have Rust 00:08:16.640 --> 00:08:21.559 more iterative as well? So... NOTE Q: Do you use inline org function calls and org babel library and such? 00:08:21.560 --> 00:08:29.159 Do you use inline org function calls in Org Babel library? So 00:08:29.160 --> 00:08:33.599 I used to do a lot of Org Babel libraries to kind of share 00:08:33.600 --> 00:08:35.639 things. 00:08:35.640 --> 00:08:46.399 Yeah. What I. But yeah. Sorry, I'm just kind of thinking 00:08:46.400 --> 00:08:49.839 through here. I've done a lot of it in the past. There were a 00:08:49.840 --> 00:08:54.919 lot of bugs in it. Oh, I don't know, eight years ago when I was 00:08:54.920 --> 00:08:59.359 playing with it. I bet things have improved a lot more and it 00:08:59.360 --> 00:09:04.239 probably saved me a lot more effort. Right now, most of the 00:09:04.240 --> 00:09:08.639 literate devops, the devops kind of stuff that I'm doing, is 00:09:08.640 --> 00:09:14.079 calling a lot of back-end programs and that sort of thing. So 00:09:14.080 --> 00:09:19.359 the Org Babel kind of has limited help in that regard. And as 00:09:19.360 --> 00:09:23.999 far as my Emacs work, well, it's just part of the session. So 00:09:24.000 --> 00:09:26.759 it's going to be available or not. So that hasn't been as 00:09:26.760 --> 00:09:30.559 helpful either. So it's kind of dropped off. But I bet if 00:09:30.560 --> 00:09:34.519 you're using something like, say, Python, it might be a lot 00:09:34.520 --> 00:09:36.969 more helpful. NOTE Q: How do you handle the cases where org markup may sometimes interfere with some of the code? 00:09:36.970 --> 00:09:40.159 Another question, how do you handle the cases 00:09:40.160 --> 00:09:43.999 where markup may sometimes interfere with some of the code 00:09:44.000 --> 00:09:50.559 in places where you can't escape? Oh, okay. All right. Let me 00:09:50.560 --> 00:09:54.719 see if I understand the question correctly. 00:09:54.720 --> 00:10:01.759 When I, like, when I'm making prose, and I'm talking about a 00:10:01.760 --> 00:10:04.839 function that I've written somewhere else, like, oh, I need 00:10:04.840 --> 00:10:09.439 to work on this, or this calls this, and yeah, I'll use the 00:10:09.440 --> 00:10:14.839 tildes or the equal signs on either side to make sure it's. 00:10:14.840 --> 00:10:20.399 that it's clear that it's code. In my xref, when I'm doing a 00:10:20.400 --> 00:10:27.479 thing-at-point so it can go look for that symbol, I do look for 00:10:27.480 --> 00:10:31.919 those things at the end and strip them off so that I can mark it 00:10:31.920 --> 00:10:35.039 up and still search and it's still okay. I'm not sure if 00:10:35.040 --> 00:10:39.359 that's the answer to the question. Yeah, clarifying. I'm 00:10:39.360 --> 00:10:41.759 making prose. I'm talking about a function I've written 00:10:41.760 --> 00:10:47.319 somewhere else. Yeah, yeah, yeah, that is what I'm talking 00:10:47.320 --> 00:10:53.279 about, where a function with tildes on either end, and if I do 00:10:53.280 --> 00:10:57.359 an xref search find for that symbol, it'll strip that off and 00:10:57.360 --> 00:11:01.439 then still look for the function name, so I can still mark it 00:11:01.440 --> 00:11:06.219 correctly. NOTE Q: You said at the start that literate didn't catch on in corporate DevOps - why not? 00:11:06.220 --> 00:11:08.439 You said at the start that literate didn't catch on in 00:11:08.440 --> 00:11:14.719 corporate devops, why not? You know, 00:11:14.720 --> 00:11:18.919 I guess the big thing is not everybody's using Emacs, 00:11:18.920 --> 00:11:20.610 and I don't think anybody would be 00:11:20.611 --> 00:11:23.651 doing literate programming if you didn't 00:11:23.652 --> 00:11:25.199 have Emacs. I mean, you got to have Org, or it just 00:11:25.200 --> 00:11:29.420 doesn't work that well, right? NOTE Q: Why not that full stack on Markdown? 00:11:29.421 --> 00:11:36.359 Why not that full stack on Markdown? Yeah, so I often do a lot 00:11:36.360 --> 00:11:44.279 of Markdown. I have got, so I've gone through and make my 00:11:44.280 --> 00:11:49.039 markdown look a lot like Org. So my headers are the same size 00:11:49.040 --> 00:11:54.759 as org. When I mark, do the triple back ticks, you know, and 00:11:54.760 --> 00:11:59.279 specify your language, we can now colorize that. 00:11:59.280 --> 00:12:01.521 So you can kind of now have it 00:12:01.522 --> 00:12:05.679 syntactically marked up. It would be 00:12:05.680 --> 00:12:11.199 interesting if we kind of expanded on Markdown so that I 00:12:11.200 --> 00:12:14.479 could do a C-c twice on it and run that code block. 00:12:14.480 --> 00:12:22.119 That's a real good idea. Maybe we should work on that. NOTE Corwin's aside on orgvm 00:12:22.120 --> 00:12:28.039 How does your management of TODOs, projects, and tasks 00:12:28.040 --> 00:12:31.679 interact with this literate mindset? I can't believe I'm 00:12:31.680 --> 00:12:33.879 going to do this, but Howard, I'm going to break right in 00:12:33.880 --> 00:12:37.119 there because I just can't. I need to talk about that. So this 00:12:37.120 --> 00:12:41.799 is I bought a domain. And really what I mean is I have this 00:12:41.800 --> 00:12:45.599 domain if somebody gets some work done in this area. I'm 00:12:45.600 --> 00:12:48.839 fascinated by this. That's mostly really actually my whole 00:12:48.840 --> 00:12:52.599 comment. But I just wanted to say, indeed, that is something 00:12:52.600 --> 00:12:56.599 maybe we should work on. Well said. I think the idea of having 00:12:56.600 --> 00:12:59.559 something that's full-stack baked around Emacs is pretty 00:12:59.560 --> 00:13:03.079 fascinating, just thinking about it as some command line 00:13:03.080 --> 00:13:05.639 tool that we can run to get some work done, and then there are 00:13:05.640 --> 00:13:07.969 documents involved, and as you know coming back 00:13:07.970 --> 00:13:10.511 to the kind of corporate 00:13:10.512 --> 00:13:12.759 sense of some of the things like there... 00:13:12.760 --> 00:13:15.319 that's a little dicey the same way a free software 00:13:15.320 --> 00:13:19.038 project raising money for itself is a little dicey. 00:13:19.039 --> 00:13:21.720 It might be a necessary way to get through 00:13:21.721 --> 00:13:23.882 certain kinds of things and like 00:13:23.883 --> 00:13:26.559 what the corporate side of the world brings to the table 00:13:26.560 --> 00:13:31.989 Here in my mind is that idea of I've got a formal process, 00:13:31.990 --> 00:13:33.830 like the process itself is an asset. 00:13:33.831 --> 00:13:35.239 If I were selling my company, 00:13:35.240 --> 00:13:39.399 that would be visibly of value to outside auditors that 00:13:39.400 --> 00:13:43.257 would help us arbitrate the sale. It's just empirical. 00:13:43.258 --> 00:13:48.239 Then tie that together with free software is maybe a little 00:13:48.240 --> 00:13:53.159 unstated ethos of doing our work in the open, and you might 00:13:53.160 --> 00:13:58.759 even deal with some of the ick factor. that you know that for a 00:13:58.760 --> 00:14:05.119 handler. Maybe so, but yeah, the downside to that is you'd 00:14:05.120 --> 00:14:09.679 still need to use Emacs to run through it, right? You know, 00:14:09.680 --> 00:14:13.719 for all those cool features, yes, it would be kind of a yet 00:14:13.720 --> 00:14:17.519 another killer app that we would have. So my domain name is 00:14:17.520 --> 00:14:22.239 orgvm, and my concept is really put org into a box, build a UI 00:14:22.240 --> 00:14:25.119 around it, it executes things that manipulate files that 00:14:25.120 --> 00:14:30.239 generate, let's say, And that's just one conceptual 00:14:30.240 --> 00:14:34.359 solution. But I really do think this is a super fun topic. And 00:14:34.360 --> 00:14:37.479 that's the space. I'm not sure my idea is that wonderful. I 00:14:37.480 --> 00:14:42.439 personally haven't soaked too many weekends into it. But I 00:14:42.440 --> 00:14:45.159 just love the way you're thinking in terms of, well, we 00:14:45.160 --> 00:14:49.519 should think more about that. Gosh, that's great to hear. NOTE Org and Markdown fragmentation 00:14:49.520 --> 00:14:53.399 Yeah. Yeah, I mean, just like the talk yesterday on the 00:14:53.400 --> 00:14:57.639 future of org, it's like, let's standardize it. Because, 00:14:57.640 --> 00:15:03.239 yeah, we don't want to have org fragmented like Markdown is. 00:15:03.240 --> 00:15:06.839 Markdown is terribly fragmented. You know, everybody's 00:15:06.840 --> 00:15:10.199 got different implementations. And Yeah, what I've ended 00:15:10.200 --> 00:15:15.039 up doing, I don't know if you've seen my blog, but I often I'm 00:15:15.040 --> 00:15:19.119 always just writing an org and talking to myself and writing 00:15:19.120 --> 00:15:22.919 questions and answers and essays come out of that. And then 00:15:22.920 --> 00:15:26.319 I'll put them on my web page and easy. It's easy to publish to a 00:15:26.320 --> 00:15:30.079 web page. Well, I do the same thing at work, but I need to have 00:15:30.080 --> 00:15:33.319 it marked down. I don't start Markdown though. I'm always 00:15:33.320 --> 00:15:36.479 starting an org because that, you know, I can really work 00:15:36.480 --> 00:15:40.239 through the problem space, you know, executing code blocks 00:15:40.240 --> 00:15:44.759 and making sure they work and all of that sort of stuff. And 00:15:44.760 --> 00:15:47.959 then I just export to Markdown and then go cleaned up a little 00:15:47.960 --> 00:15:51.679 bit if I need to. And that makes sense. But I am editing 00:15:51.680 --> 00:15:55.999 Markdown afterwards. So yeah, it would be nice. It would be 00:15:56.000 --> 00:16:00.359 nice. It's just, it's all done over here as opposed to, you 00:16:00.360 --> 00:16:02.879 know, Adding it over there, but yeah, let's think about 00:16:02.880 --> 00:16:06.519 every bit as much as as that. You know, I jumped in in the 00:16:06.520 --> 00:16:09.959 spirit of yes, let's think about it. You know, your, your 00:16:09.960 --> 00:16:12.599 comments about, let's think about the workflows that work 00:16:12.600 --> 00:16:17.919 for us. Wow. Does that hit home? Right? So great. Yeah. Yeah. NOTE Q: How does your management of "TODOs" (projects/tasks) interact with this literate mindset, any insightful things you do on that front? 00:16:17.920 --> 00:16:25.279 Yeah. Okay. So, uh, on to do's and that sort of thing, um. You 00:16:25.280 --> 00:16:32.199 know, a lot is the same as it was 10 years ago. At the beginning 00:16:32.200 --> 00:16:33.319 of every sprint, 00:16:33.320 --> 00:16:38.279 my company, we're using JIRA. 00:16:38.280 --> 00:16:46.159 All jokes are valid when I say that. But I just go to its web 00:16:46.160 --> 00:16:49.639 page. I copy all the tasks that I need to do that sprint. I 00:16:49.640 --> 00:16:54.119 wrote a function that takes that code and reformats it as a 00:16:54.120 --> 00:16:58.199 bunch of org tasks for me to do that I can just now have all my 00:16:58.200 --> 00:17:02.799 to-dos. And I start to work off of that from that point on. So 00:17:02.800 --> 00:17:06.479 it'll reference all the projects, and I do symlinks to every 00:17:06.480 --> 00:17:12.479 code base that I need to use. Most of the to-dos I put inside my 00:17:12.480 --> 00:17:16.639 code block is kind of just for me, just so I can remember it. 00:17:16.640 --> 00:17:21.086 Because the work that I have to do 00:17:21.087 --> 00:17:24.119 needs to be tracked a little more 00:17:24.120 --> 00:17:30.629 fine-grained, I guess. Yeah. NOTE Q: Do you LP also on larger projects? 00:17:30.630 --> 00:17:33.439 Do I use LP also on larger 00:17:33.440 --> 00:17:37.199 projects? More files and nested directories? Yeah, I 00:17:37.200 --> 00:17:43.879 haven't really done nested directories, but I can now. Now 00:17:43.880 --> 00:17:49.839 that I've now kind of realized that I have the feature that I 00:17:49.840 --> 00:17:54.439 demonstrated where I can just jump to any projects for a 00:17:54.440 --> 00:17:59.559 particular project, all the org files and all the headings 00:17:59.560 --> 00:18:02.439 show up, that works in nested directories. 00:18:02.440 --> 00:18:10.999 Oh, okay, yeah, somebody's typing it in. Yeah, so it's 00:18:11.000 --> 00:18:15.359 definitely possible. And I have now, since I recorded the 00:18:15.360 --> 00:18:20.519 talk, I've been busy typing in and trying to extract that out 00:18:20.520 --> 00:18:24.479 of my init file and make it into a package. I'm looking for a 00:18:24.480 --> 00:18:30.239 good name right now. I'm calling it jobs, jump to project 00:18:30.240 --> 00:18:36.399 sections. Anyway, but yeah, I think that's kind of a nice, 00:18:36.400 --> 00:18:38.935 useful feature. NOTE Q: Have you used Cucumber/Gherkin/BDD and do you think it has a strong overlap to what you talked about here? 00:18:38.936 --> 00:18:41.919 Have I used Cucumber, Gherkin, and other 00:18:41.920 --> 00:18:44.479 behavior-driven development? 00:18:44.480 --> 00:18:50.719 Have I, I mean, I do a lot of... 00:18:50.720 --> 00:19:00.279 more test driven. I do a lot of unit tests and I just put it 00:19:00.280 --> 00:19:04.679 right in my code base because if it's in my pros, I can just 00:19:04.680 --> 00:19:07.199 shove it in there. I've got the test right next to the 00:19:07.200 --> 00:19:11.519 function that I'm testing. I like that so I can kind of see it. 00:19:11.520 --> 00:19:15.359 I don't tangle it out to that same source file. I tangle it 00:19:15.360 --> 00:19:19.119 somewhere else if I tangle it at all because I don't need to. I 00:19:19.120 --> 00:19:23.199 can just, you know, C-c that and run it. I like that 00:19:23.200 --> 00:19:24.879 aspect of it. 00:19:24.880 --> 00:19:29.319 Yeah, just keeping things together. That's the big problem 00:19:29.320 --> 00:19:32.479 I have with a lot of tests is the tests are somewhere else. 00:19:32.480 --> 00:19:35.319 It's separate from the code. I like seeing it all together, 00:19:35.320 --> 00:19:39.879 but a lot depends on how extensive it is. So for a lot of the, 00:19:39.880 --> 00:19:43.359 you know, the tests that we end up doing where, you know, 00:19:43.360 --> 00:19:47.759 you've got to do a lot of mocks and a lot of startup and tear 00:19:47.760 --> 00:19:51.839 down, that kind of thing. Yeah, that doesn't help as much. 00:19:51.840 --> 00:19:54.599 And you probably have to kind of go old school on that. NOTE 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? 00:19:54.600 --> 00:20:01.359 What granularity I'm looking for with my org files and my 00:20:01.360 --> 00:20:03.634 subcontent? That's a real good question 00:20:03.635 --> 00:20:05.255 and really subjective. 00:20:05.256 --> 00:20:13.159 I change that over time. I begin by just dumping. 00:20:13.160 --> 00:20:16.378 I just dump everything in my head into a file 00:20:16.379 --> 00:20:19.679 and then I go through and start to refine it. 00:20:19.680 --> 00:20:26.159 My goal at one point was to have an Emacs config file that was 00:20:26.160 --> 00:20:29.919 really small and simple. And boy, that just doesn't happen. 00:20:29.920 --> 00:20:35.759 It's just too fun to add things and try new ideas. And I found 00:20:35.760 --> 00:20:41.839 my files were just littered with good ideas that were 00:20:41.840 --> 00:20:47.119 half-baked and not finished. And so it's like, oh, I need to 00:20:47.120 --> 00:20:49.959 extract these and put them into different files so I can keep 00:20:49.960 --> 00:20:54.359 it clean. And so I think it's like with any code base, you're 00:20:54.360 --> 00:20:58.999 just going to keep refactoring. It's an iterative process. 00:20:59.000 --> 00:21:04.199 So having the ability to, like with an Org file, where you can 00:21:04.200 --> 00:21:09.159 archive a subtree. Okay, this idea didn't pan out. Archive 00:21:09.160 --> 00:21:13.519 it. I can come back to it later. Being able to just kind of 00:21:13.520 --> 00:21:20.399 shove it somewhere else is really a nice little feature. All 00:21:20.400 --> 00:21:25.079 right. Not a question, just a comment. We need more of your 00:21:25.080 --> 00:21:29.239 insightful posts and videos. Oh, thanks. 00:21:29.240 --> 00:21:35.519 I appreciate it. Yes, it's been a fun journey. And I think we 00:21:35.520 --> 00:21:38.519 are coming up on our time, actually. So that is just an 00:21:38.520 --> 00:21:41.919 amazing quiz. And it helps me from manipulating, as I said, 00:21:41.920 --> 00:21:46.959 or as I put it earlier, like my chance as an organizer, or not 00:21:46.960 --> 00:21:50.679 manipulating, monopolizing my chance as an organizer to 00:21:50.680 --> 00:21:53.439 just get a chance to pick your brain on all kinds of things, 00:21:53.440 --> 00:21:58.959 which is too kind, too kind. Appreciate it. It's been fun. 00:21:58.960 --> 00:22:04.679 All right, I'll try answering more questions online as 00:22:04.680 --> 00:22:07.959 well. All right, talk to you later. And we appreciate your 00:22:07.960 --> 00:22:10.399 being in a huge resource that you are to the community. 00:22:10.400 --> 00:22:14.199 Thanks to everyone for tuning in and we'll be coming over to 00:22:14.200 --> 00:22:18.239 our next talk in just a moment here. And so bear with us 00:22:18.240 --> 00:22:23.239 through the transition as we slip into, I think it's our, is 00:22:23.240 --> 00:22:26.919 that our penultimate or our ultimate talk? We have one or two 00:22:26.920 --> 00:22:30.119 left, I'm not sure. I think we've got a couple of talks left. 00:22:30.120 --> 00:22:34.079 I'm back. Thank you, Howard. And we will be moving to the next 00:22:34.080 --> 00:22:37.159 talk in about six minutes. So if you need to grab some coffee, 00:22:37.160 --> 00:22:42.119 some tea, use the time wisely. And to confirm, we will have 00:22:42.120 --> 00:22:44.319 one, two, three more talks this afternoon. So there's still 00:22:44.320 --> 00:22:48.160 plenty to go around. See you in a bit, folks.