Sacha Chua - category - emacs-chat-podcastAuthor: Sacha Chua
Emacs, sketches, and life Language: en-us Genres: Technology Contact email: Get it Feed URL: Get it iTunes ID: Get it |
Listen Now...
Emacs Chat 26: Ross A. Baker
Sunday, 7 June, 2026
[2026-06-19 Fri]: Added transcript. I chatted with Ross Baker about Emacs (including running Emacs 28), his Emacs config, and life. Video not supported. Thumbnail: View in the Internet Archive, watch or comment on YouTube, read the transcript online, download the transcript, or e-mail me. Related links: Blog Posts tagged #emacs Ross A. Baker: Take Two: Coming Home to Emacs Emacs config Emacs Early Init Khlav Kalash Emacs Crab Juice Emacs Starter Emacs configuration matthewbauer/bauer: An Emacs+Nix IDE · GitHub Ross A. Baker: Multilingualism in a Global Web (DE, ES) Chapters 0:00 Opening 0:46 What Ross does 2:06 How Ross got into Emacs, used other editors, and then came back to Emacs 4:58 Config focusing on built-ins 10:12 simple-orderless 14:29 Size indicator 16:40 Graceful degradation 17:48 emacs-lock-mode 19:52 exiting Emacs: yes-or-no-p 20:46 yes-or-no-p 21:45 Processes 22:18 Moving keymaps 24:23 Writing in Org Mode and Markdown 27:49 Ethersync? 29:16 Managing Github with Forge 35:49 Committing with work addresses vs personal 37:13 Emacs tinkering as stress relief 41:06 Under-appreciated Emacs built-ins 42:20 gptel 46:04 Getting older 46:46 Lindy's Law and tool longevity 49:51 Nix is good at managing package versions and customizing them; Matthew Bauer (Bauer IDE) 53:25 Custom fonts 54:30 Starter kits versus configs 55:34 Nix vs Guix; Mac 56:26 Non-work interests: Org for documenting; ox-hugo and multiple languages Transcript Expand this to read the transcript 0:00 Opening[opening stuff] Emacs Chat 26 is Ross A. Baker. You can find him at rossabaker.com. Today, we've got a lot of interesting things to dig into, including his two-part Emacs configuration, plus of course, all the things that he does. The goal with Emacs Chat is to show some of the things that aren't obvious from the configuration, like how the different pieces actually work together or what the workflow feels like. But before we dive into that, Ross, can you tell us a little bit about your background? What's the context here? What do you like to do? Ross: Oh, sure. 0:46 What Ross doesRoss: So for work, I'm a backend engineer. I'm somewhat well known in the Scala community. I've done that for a long time on an open-source basis. I've taken an interest in Rust here recently. Those are the two primary languages I work in. I work for a financial company. We maintain the apps for small- and regional-sized banks in the United States. Fairly fun work there. It's kept me quite busy here lately. For other things I like to do for fun, like to go for a jog, like to push away from the computer now and then. So I go jogging every day, try to run about nine miles every day. My two big de-stressors are the running and the fiddling with my Emacs configuration, kind of opposite sides of the coin. But I need them both to stay happy, I think. That makes sense. Also a soccer coach. My kid is in high school and coached his recreational team. They have a lot of fun with that as well. Sacha: Yeah. One of your blog posts mentions that you've been publishing your youth soccer webpage in ox-hugo. Ross: That's right. Sacha: Emacs can be used for everything. Ross: It can, yeah. That's right. Sacha: We're also very curious about how people get into Emacs and what makes them stick with Emacs. 2:06 How Ross got into Emacs, used other editors, and then came back to EmacsSacha: In your story for the Emacs Carnival in Take 2, you shared how you got into Emacs. Well, you were introduced to Emacs in 1997, but you actually left. You used other editors for a while because of work, and then you came back to Emacs. Was it primarily for Haskell and Clojure, or were there other reasons that got you interested in it? Ross: Yeah, when I was at the Haskell shop, it was something that a lot... When you get out into the workplace, there's very few Emacs users, relatively speaking, in most workplaces. But when you're in a Haskell shop, that's what almost everybody uses. So being surrounded by that, that was a good reason to get back into it. I'd been dabbling in it a little bit before that, even. I had a really good time with it originally. I got into it like so many people did back then. I got into it in college, showed up, and that's what the professor was using. The first language that we learned there was Scheme, which is a Lisp dialect, so it's a natural fit there. Back then Emacs and Vim were the two dominant editors at that point, so it was pretty much one or the other. If you were learning a Lisp dialect in school, the professor was going to guide you toward Emacs. I got that initial shove and fell in love with it there. Then I got out into the workplace, and in the workplace back then, it was very rigid. You would have to use the commercial editor that was integrated with all the IBM software, so I had to use these specific things and I couldn't use Emacs anymore. I did dabble in Vim a little bit as well and I liked the efficiency of editing that came from both Emacs and Vim. Vim was easier to emulate than these other editors that I had to use. That had me on a Vim path for a little while. But then scripting it just wasn't as satisfying as Emacs. It was always really calling to me. I felt like I was in exile while I was outside of Emacs. Then, when I had a chance to start picking my own editor and customizing things again and getting up to speed with other people who were using Emacs, it was just natural to come home, and here I am again. Sacha: Nice. Many people haven't had the experience of working with other Emacs users in the same company. So what is it like? Were you swapping lots of config around, pair programming, that sort of thing? Ross: Yeah, pair programming, sharing config. I am fortunate at my current workplace, even though it's a much smaller percentage than it's been in some other workplaces. It's also a large company, and we have an active Emacs channel there within the company Slack. A lot of people are interested in it there, so I've got my little inside community in addition to the outside Emacs community as well. Fortunately, I still get that even to this day, so that's pretty fun. Sacha: You're the second person has described the wonders of having a company internet channel on Slack, just about Emacs. Yes. Very awesome. 4:58 Config focusing on built-insSacha: I'm wondering, with your current company, is that the reason why you have so many "gotta run with just the built-ins", "gotta run even if you've got Emacs 28"... Is that the reason for those kinds of considerations in your base config? Ross: That was kind of a premature optimization that worked out very well for me. I used to run a very extensive config. I'd look at all the classic configs that would go out there and install all the packages from MELPA. I'd try them all out. I'd just accumulate these things. I went through some Emacs bankruptcies. Then people in the community started talking about, okay, Emacs 29, it added use-package out of the box. It added... I can't remember when project.el came along, but it added these things that started... You used to have to get them from outside, or you used to have these other libraries, and Emacs got a lot better out of the box. I started to say, okay, I'm going to do one more bankruptcy. I'm going to see what I can do with built-ins. I started experimenting down those lines, even though I was always using that extended config. I was challenging myself. How much can I get from a built-in config and then just have a little bit of extra for those gaps? Because there are gaps. I do love Emacs built-ins, but I am more comfortable with the regular one. But I challenge myself that way. This month, I got put on a project where I have to work in a sandbox environment. So it's not regular operating procedure, but I have to do all my work in the sandbox environment. There's no network egress. I have to say, okay, if I want packages in here, I have to talk to the admins of that system and say, I want these packages. I lobbied for Emacs on it. They thought, well, that's kind of weird, but it's just one more line of apt-get in the Docker container, so they're fine with it. It was an old version of Debian Bookworm. I was running Emacs 28. I'm like, okay, well, I've got this built-in configuration. This is its moment to shine. I tried to run it on there. I was able to copy the file up there. I tried running it on there, and I run into things I’ve been using setopt. I’ve been using one of the XDG packages for setting your X desktop group directories, so to have a standard place to put your config files versus your cache files versus your state files. In Emacs 28, they had most of those variables, but one of those variables didn't exist yet. So I felt a few paper cuts that way. Up near the top of my config, I've got a compatibility layer. The compatibility layer, there's a nice compat package out there. I can't remember. I think Omar, who you interviewed recently, I believe he's one of the people behind it. And tarsius, I think he's involved in that too. I could be misquoting on that. Maybe I'm misattributing that. But anyway, there's this wonderful compat package out there. If you're a package author and you want to have your Emacs package running on older versions, it's great for that. But the whole point of this is I don't have any external packages. So where I need this compatibility layer the most, I can't use this lovely compat package out of the box. So I had to reinvent a few shims. I think I could bring that up. Am I sharing my screen? Sacha: Yes, you're sharing your screen. That was one of the things that immediately struck me about your config. You're so hardcore about not using external packages that even your adapting to older versions, you're re-implementing things yourself in order to be able to stick with your constraints. I think that's hilarious, by the way. You started it off with it as a personal challenge because, of course, people are allowed to set arbitrary challenges for themselves, and then it turned out to be surprisingly useful for you in this limited environment. Ross: Yeah, that's one that really saved my bacon. Sacha: Yeah, this is great. So even things like setopt… Then you have keymap-set. You’ve got some replacements for these modern niceties to make it still work in Emacs 28. Ross: Yeah, I leaned into the new keybindings. There’s keymap-set, keymap-global-set, keymap-global-unset. Those are roughly the same as what you had in older Emacs versions but you don't need to pass the keyboard macro around all the things, so it's a little bit more concise. There were a few more advantages to it and I'd already been on Emacs 29 or Emacs 30 everywhere else. I'd already leaned into those, and then I got into this environment. But as you can see, they're fairly easy. This is not a 100% full fidelity. There's a few nuances that get missed in doing this, but for the most part, it works pretty well. I'm not aiming for perfect here. I'm aiming for "this works well enough at Emacs 28 for the life of this project, which should last about a month." And otherwise, I've got the nice full glory Emacs for my daily driver. It's straddling that divide fairly well. Sacha: I just looked up when Emacs 28 was released. This is 2022, so four years ago. Ross: Yes. Sacha: A lot of Emacs has changed since then. But of course, Emacs being Emacs, there's a lot of effort put into making sure the old stuff keeps working, which is handy for these cases. That's great. 10:12 simple-orderless Sacha: So you have a lot of these shims, and one of the things that you've ended up re-implementing along these ways is a version of orderless that works without having to take the entire orderless package in there. Can you tell us a little bit more about what you like about your setup? Ross: I wasn't happy with any of the built-in completion styles. Well, some of them are okay, but the overall... I had used orderless in my more extensive config. Orderless, for people who don't know, is a way of completing things. Let's see if I can show it off. So I can do... If I do "file" and "find"... Well, I thought it would work. Sacha: Do you need a space? Ross: Yeah, I don't know why the space wasn't completing. So I can do "file". "find file". I could do the space. I could do it in any order as well. Or I saw there was an "ido" in there. If I do it in reverse order, that's the idea of orderless is if I'm using the space, I got thrown off there. It was auto-completing a hyphen on me I didn't expect. Anyway, if I remember some tokens and things, let’s say I’m looking for ido-find-file, but I type "find" first and then I do... What orderless does is it takes the input and it splits it by space and it will find them in any order. It's a nicer completion style than I think any of the ones that come out of the box are. I got used to it. But if I'm in this lean config, orderless is something... It is not a built-in. That's something that I was leaving behind. That was one that was really starting to itch. Then I found this blog post by James Dyer where he'd implemented a very slimmed-down version of orderless. It wasn't the full features that you get, but it was something that was good enough that captured the basic principles of it. I took that. I found a few bugs in it, and I found a few more things. It was a very, very simple version of orderless, and I wanted a couple more bells and whistles. The completions weren't quite right to my tastes. I took that blog post. I ended up with a middle ground. It's not as good as the full orderless, and it's a little bit more extensive than the blog post that I found. But I'm able to run that, and I don't really miss the full features of orderless that much. There are all sorts of cool things that it does where you can say, okay, these are regexp tokens. These are literal tokens. These are NOT filters. You could do all sorts of combinatorial logic with it with various syntax. You can customize the syntax for it. It's all great, but I wasn't using those extended features of that package that much. I am happy with this lighter-weight version. That way I'm able to use it even when I'm off here in the security sandbox. I'm able to do it there too. It exposes the underlying tension of this setup. I would recommend 100% use orderless. It's better maintained. The maintainer is a lovely person. It's more full-featured. You can customize it. I ran into a little bit of a hiccup here and it's my own config. This is something, it's going to be more professionally maintained if you're using orderless. So if you're not adapting to my built-ins only method, I would 100% recommend using orderless instead. But because I have this constraint, I'm building this up. What I built up is kind of nice. It's one of the more interesting parts of my package, or of my config. I could spin it off as its own package, but if I spun it off as its own package, it's just a strictly worse version of orderless at that point, so what's the point? That's one of the tensions that you have in these built-ins, is anytime that you build something that is really interesting, you want to spin it off and share it, but at that point, you've defeated the purpose of being built-ins only. Sacha: I think the idea then of looking at the packages that you really like and if you find that you're only using a subset of their functionality, being able to strip it down or take advantage of somebody else's work and stripping it down to the subset that you use makes it a lot easier for you to put it all together in your batteries included, built-in only configuration. Ross: Right. Sacha: It's not super long. It can be understood if you go through the function. So that's great. Are there other things like that that you find yourself wanting to extract from other packages? 14:29 Size indicatorRoss: I did this really weird little thing called size indicator mode. I'd already spun that off. I don't know if it was worthwhile or not. One thing is all of your list commands, they run things in binary bytes. When we say a kilobyte, what does a kilobyte mean? Does that mean 1,000 bytes or 1,024 bytes? Most of the commands that you run, they're going to be in these binary units. What you get out of the box in Emacs is the decimal unit. Their definition is 1000 instead of 1024. I thought, well, that's kind of weird. I built this size-indicator-mode where it goes and it translates things so it's unified across the way the coreutils work. It's the 1024 base instead of the 1000 base. Trivial little package, but it was a lot of fun I threw it out there. It's up on my Codeberg if anybody wants to pull that in. Sacha: Yeah, so it just reduces the friction of having to think, okay, is this in this unit or is that unit? It'll always be in the units that you like to use when you're talking about files. Ross: Exactly, yeah. It keeps things consistent that way. That's a package that I spun off. Is that something that... It's a very lightweight configuration. It probably could have stayed here in my built-ins. I doubt anybody else has that itch, but I shared it out there and a lot of people thought, ooh, neat. I think a few people did install it. I'm glad I spun that one off, I suppose. There's always that fuzzy line. Where does it grow into something that you think other people are going to be interested in, versus what are the ones that you should just keep in-house and they can always copy it out of your config if they're interested? It's a hard line to walk in this style. I haven't exactly found the balance yet, I don't think. Sacha: A lot of your config isn't so much new functionality as it is just filing off the corners or making something a little bit nicer to use. For example, when I was going through your config, both the base config as well as the extended one where you have more packages and things set up, I was like, oh yeah, okay. You fiddle with your visual-bell, but you also, in your extended config, set it to mode-line-bell instead. That sounds interesting. Ross: Right. 16:40 Graceful degradationRoss: I go for graceful degradation. When I was doing web pages as far back as the 90s, when I was first into Emacs, everything was about graceful degradation as you had these new browser features. You're trying to use these new shiny things. I'm old enough. I've been doing web pages since before there were cascading style sheets. But anyway, as we were starting to do CSS and as we were starting to do JavaScript, it was all about progressive enhancement: do the shiny things for the browsers that can support it, but also have this nice baseline of functionality for those that can't. I've tried to do that with this base level config. I've got the visual-bell that's built into Emacs and it flashes the screen. It puts up this annoying triangle sign. I don't like that that much. This one, if I can make the bell ring... Oh, this would make the bell ring. Why is it not? Sacha: I guess C-g doesn’t just automatically make it... Oh, C-g works for me, so I don’t know. Ross: It usually works for me, too. I don't know why it's not triggering a bell here. Sacha: That's OK. Ross: Curse of the demo. Sacha: Yeah, yeah. Anyone interested can go look it up. 17:48 emacs-lock-mode Sacha: Then you have a couple of other things around, for example, making it easier to not kill a buffer. I hadn't known about emacs-lock-mode either. Ross: Oh yes, Emacs lock. Yeah, so there’s this emacs-lock-mode and it is not the same. It's easy to confuse this with the lock files. You know those files that you get the hash signs, like you get ".#name-of-the-file#". That's something from when Emacs was used more on multi-user environments. Whenever you had a modified file, it would create these lock files, and it would prevent two users who were editing the same file on their own Emacs from stepping over each other. How often in modern times are we working on a multi-user system? If it is a multi-user system, are they both using Emacs on the same file? That's something that was very important in the late 90s and is not very important now. This is not those file locks. This is a buffer locking, and with the scratch buffer... I've got this turned on. Evaluate it. Make sure it worked. Let's go to our scratch buffer. Here's my scratch buffer. I don't want to accidentally kill it. If I try to kill it, it's going to say "Buffer *scratch* is locked and cannot be killed." I'll use this for notes all over the place. I've accidentally killed things too many times. The scratch buffer is not typically backed by a file, and I've lost too many things. This way, I know this scratch buffer is always going to be a persistent place. There are other approaches to it. I think there’s a persistent-scratch package that's out there. But again, that gets me out of the built-in zone. That might be a progressive enhancement, something that takes your scratch buffer and backs it with a file. That would probably be a good thing to do. So that's one of the packages I'll be looking at adding in the other config. But emacs-lock is built in. It's one of those things that's so obscure you can't even find it in the Emacs manual. It's just out there. I don't remember where I picked it up. I think just scanning somebody else's config I picked it up somewhere, but I couldn't find it in the manual at all. 19:52 exiting Emacs: yes-or-no-pSacha: I was going to ask you where you found it. You occasionally read other people's configurations for interesting ideas. And then you have a bunch of niceties. Actually, before I go into that, @Ray-On-Emacs has a question. "How do you exit Emacs then? Or do you never exit Emacs?" Ross: I almost never exit it. Sacha: I think the emacs-lock-mode for the Scratch doesn't kick in if you're closing Emacs as a whole? Ross: Correct. Sacha: If you're closing Emacs as a whole, it will happily still discard your Scratch buffer, but as Ross says, you could also not exit Emacs. Ross: Yeah, I've got the flippant line in here: ¨Exit Emacs? Surely there's been a terrible misunderstanding,¨ But I do configure the way that I do it. I want to make sure that the confirmation of it, it's the yes or no. 20:46 yes-or-no-pRoss: I don't want to accidentally hit that key binding, so I will use the full fledged yes-or-no-p`. That's one area that I diverge from a lot of people's common things. One of the very early things a lot of people set in their config is they’ll rebind this yes-or-no-p to the y-or-n-p so that way, they only have to type the one character. Emacs is fairly thoughtful about which ones that it makes you do "yes" or "no" versus the "y" or "n". The things that are quick and inconsequential, those are the ones where it gives you the prompt that it's just a "y" or "n" answer. The ones that are going to be more destructive and you really want to stop and slow down and think about, that's what the yes-or-no-p is for. People stomp all over that in their configs, and I think that's one area where I'm a little bit out of the mainstream. I like the defaults on Emacs there. It is thoughtful about which ones it prompts you for that on. But if I remember right, confirm-kill-emacs was one that was just a "y" or "n". That's one of the more dramatic ones that's out there. So I did customize that to make sure, yes, I really mean that. 21:45 ProcessesRoss: Then there's some annoyances where if you've got a bunch of inferior processes running after I've already confirmed that I want to kill Emacs, well I just said I want to kill Emacs, so I didn't want to be prompted about the processes. I do quit Emacs enough I've customized how it shuts down. I don't do it that often. Sacha: I imagine if you really want to stop yourself from closing Emacs, you might just change the key binding and make you M-x it instead in order to exit it, so you really absolutely don't run into that. 22:18 Moving keymapsSacha: In fact, your config has some of these lambdas where you are telling yourself, okay, this keyboard shortcut has changed. You have this thing in Magit, I think, where you're like, I moved the key map and now it's somewhere else. I thought that was interesting too. Ross: I'm trying to remember what that one was called. Sacha: There you go. Ross: Yeah, the crab-juice--moved-to. I'll bind my old key map as I'm trying to move things around. I used to use Spacemacs for a while. I used Doom Emacs for a while. I've looked at a lot of the other configs and I've said, okay, this architecture makes a little bit more sense. I want to rebind my prefixes that way, but still, for the ones that are deeply ingrained, it's sort of like a deprecation warning, except for key bindings. It looks like I used to run on C-c g. So if I try to do that, it's going to say, nope, moved to C-c v c. And now I can do that. C-c v c, and there’s my Magit command. Sacha: Yeah, I like that you actually ended up mapping the whole keyboard shortcut instead of just the C-c g one because, of course, your muscle memory is getting you to put in the whole C-c g and then something. This one lets you have the full keyboard shortcut before it tells you the message. Ross: This is using user error. So I thought when I hit that one, I thought I would flash my mode line, but the mode line is not flashing. I know it flashes on my other machine. It flashes on my work machine. It doesn't flash on this one. Sacha: The challenge is getting a config to work in many different environments. You've got your work machine, you've got this personal machine, and then you've got the sandbox one that's got a really old version of Emacs on it. Okay, so a couple of other things that you've mentioned. 24:23 Writing in Org Mode and MarkdownSacha: You do a lot of writing in Org Mode as well, right? You've mentioned using the literal programming part of it a lot. You do a lot of work with Markdown. Do you have any interesting workflow tips for people who are finding themselves writing with either Org Mode or Markdown in a work environment? Ross: That's always a tension as well. I would rather be in Org Mode. Org Mode has more bells and whistles. You can program more things in it. It's a programmable Markdown in a sense. I'm much more comfortable in Org Mode in general. Now, I don't use Org as a personal organizer as much. I would like to. I've dabbled in it a little bit. I've seen some of your previous interviews and people doing mind-blowing things with that. I'm jealous of what they're doing. I would love to get to that level. I'm still a relative newcomer to Org versus how old I am at Emacs. I'm a relative newcomer to Org. So I haven't embraced that yet, but I do use it as my general, if I'm writing a document by myself, it will 100% be in Org. This document that we're in, it's my entire website. My Emacs config is in here. My Nix configuration for how my systems work is in here. I like to do barbecue. Some of my barbecue recipes are in here. Just general blog posts about things that have nothing to do with technology are in here. It's all one big Org file. That style is emphasized. I'm using ox-hugo to take this document and export it to the website. They encourage having one big large file for that. I followed suit on that. That's why I have just this one giant document. In the work context, if I'm starting a small document, I'll start it in Org Mode. But then when I started in Org Mode, if other people want to edit it, we got a small Emacs community, so depending who I'm sharing it with, that might be fine. There's a couple people I can pair with on that. If I'm working with them, everything is great. But that's not something... There are Org implementations that work in other editors, but it isn't as good anywhere else as it is in Emacs. That's what everybody's going to typically use. And if they're not using Emacs, they're not going to be that warm to Org. I hate to say the dreaded two-letter acronym, but with AI, you're seeing a lot more Markdown. People are starting to program in Markdown. Markdown is bigger than it's ever been before. It's just unavoidable at this point. So what I'll do is I'll start a document in Org and then I can export the Org document to Markdown if I'm going to put it into GitHub or sometimes I'll just use Google. It really depends on how the collaboration model is. If I'm going to be collaborating with a lot of people up front and iterating real quickly, I'll do that in a Google Doc and I'll export that to Markdown. If I'm writing it myself as a first draft, I'll start it in Org and export that to Markdown. Markdown ends up being the target in the workplace for anything that's permanent though. I don't love it. I wish Org had won. All my personal projects, they'll have a README.org on them rather than README.md, but it is what it is and you've got to play nice with your co-workers too. Sacha: Yeah, I find myself having a hard time remembering to switch the link syntax. I have a "do what I mean", just insert the link. I don't care what syntax it's in, just make it work. Ross: Nice. Sacha: You mentioned sometimes in your Zoom calls when you need to exchange notes with people faster, then you have to use Google Docs for that one because that's what they're familiar with. But there might be some easy ways for you to ship that back and forth between Org and Google Docs. 27:49 Ethersync?Ross: One thing I'm really looking forward to is there's this project. I can't remember what it's called. Ethersync. Yes, thank you. I've seen some various attempts at that and I had a little bit of success with them, but none of them have lasted. I'm really rooting for that team. I feel like Emacs got rejuvenated. It used to be, okay, it was hard to use Emacs because if you're in a niche language and you're using a niche editor, you had to find a community that used both of those to have decent support. Then LSP came along. You have your language servers. So now I can write in these niche languages that not everybody's writing Emacs, but I still have a good experience thanks to Eglot and thanks to the language server provided by those communities. Emacs became viable again for doing a lot of development. And I'm hoping that Ethersync kind of becomes like the LSP of collaborative editing, where it's not something where it's only Emacs users sharing with each other, but it works across editors and people can collaborate in real time that way. That would replace that Google Docs use case I have. The only reason I use Google Docs is we can see each other typing and edit things on the fly together. So I'm very excited about that Ethersync project. I hope that takes off. Sacha: Yeah, I think that will probably be more feasible than hoping people will switch to Emacs and then use CRDT. There are other interesting collaboration things in your config. 29:16 Managing Github with Forge Sacha: You've mentioned Forge. You have some things in here for cloning to different directories depending on the repository, committing with different addresses, confirming before merging pull requests. Can you tell us a little bit about these quality of life improvements for you? Ross: Let me see if I can come up with an example here, first of all. So this is Forge for people who have not seen it. Let's do... Sacha: So when you don't need something like real-time collaboration, for the people who are watching, Forge lets you manage your Git repositories with the pull requests and other changes and things like that, right? I don't use it yet, so... Yes. Ross: Yeah, so it's essentially a GitHub client. So I was looking... I'm here in my Forge test directory. I'm trying not to share any of my work repositories. I use this primarily at work. I just set it up on this machine last night. Still probably a couple of rough edges. I can list the topics. And if I list the topics, I can see I've got pull request 20 open. I can hit enter on it and I can see, okay, it's open. It's in state pending. This is where it's going. These are the commits. I can look at the commit and see, okay, what is this person doing? Oh, they're trying to add another line to this file. And if I say, okay, that looks good. I can do, what is it? I can look at this and I can say... This works better if it is in a full screen editor. Let's do... I thought I was tracking this repo already. I had this working last night. Curse of the demo again. Anyway, I'm able to approve pull requests from this. I'm able to... Reject pull requests. I'm able to comment on pull requests. I can look at the diffs. So all of my integration with GitHub is done through this. I'm in an environment right now, I'm a staff engineer. I participate on a lot of teams. I get over a thousand GitHub notifications a day. The GitHub notifications that are built into the browser are just not sufficient. That's something I was able to pull it in with Forge. I'm able to tag things. I'm able to mass mark the things. I get a lot of infrastructure things that they're important, but they're not important to me. I get notified on them all the time through the various automations. I'll get them. I'll get a hundred of those at a time and I can just mark a region of those and knock out a hundred and say, okay, that's off my plate. Moving it into Emacs, as awkward as this demo is, it works great on my work machine. I'm able to keep up with things so much better than I was before. Let's see. I should be able to, if I want to look a little bit deeper and see things in the GitHub, at least this works. Ross: I can open it and see this directly. Then if I want to merge it from here, I can. Or I should be able to merge. Now I can do a regular merge or a squash merge or a rebase just the same as I have this button here. That's all built in here. Let's go ahead and merge this pull request. Sacha: All right. That little detail about you dealing with like a thousand notifications a day? It makes the guardrails that you added to Forge in your config even more interesting because you can stop yourself from accidentally automatically merging in things that need more review or whatever, which of course is difficult to demonstrate at the moment because work stuff, private. But if other people are listening and thinking, they're dealing with a similar volume, you can modify Emacs to stop you from making mistakes like that. You can add just enough friction for the cases where you need to pay more attention. And @PuercoPop, there's a gh-notify package specifically for high-volume GitHub notifications. I'm not sure... Have you come across that one yet? Ross: I'm curious what that looks. The term "notify" concerns me, like if it's helping me manage notifications in bulk, I'm interested. If it's going to pop up something every time I get a new notification, I'm very much disinterested. I don't know whether to be excited or horrified, but I'll take a look. Sacha: I think because @PuercoPop is recommending it specifically in the context of high-volume notifications, it might provide you that inboxing where you can filter. I haven't looked into it myself, but I'm getting the sense that this is a problem that many people who use Emacs face and who solve it a very Emacs-y way. Ross: Yes. Forge has all these nice things built into it already, but I wanted to customize the workflow a little bit. It's right here in the comments, the things that it does. It makes sure that it's mergeable, there's no merge conflicts, makes sure that all the status checks ran, makes sure that all the approval is done. One thing that the Forge does not do is it does not show you comments on your pull request. There's a code-review package that's out there. It's been through a lot of forks. I'm still integrating that into my workflow. I've got a fork of a fork of a fork that I have. This is life in Emacs, for better or for worse. I've got a fork of a fork of a fork of a fork so I can see those comments. I haven't fully integrated it with Forge yet. That's a work in progress. But anyway, I didn't want to be merging these things and ignoring if somebody's taking the time to give me feedback. I don't want to merge things because sometimes people will approve things, but they'll say, hey, just a little nit to pick. You got a typo here. Don't want to slow down progress, but you might want to take a look at this. If I'm just sitting here entirely inside of this, I'll never see that. So this also checks for unresolved threads. I've got some embedded GraphQL inside of here that makes it all work and we grab that data from the GraphQL and then I'm able to just do this inside a list and prompt on these things and if it finds there's anything that isn't right it gives me these safety checks along the way and yeah it's really nice. 35:49 Committing with work addresses vs personalRoss: One other issue that I had was we had this requirement at work where we needed to start committing with our work email addresses rather than our personal addresses. I use my same GitHub account for work and personal. I needed to get that moved over. To do that with GitHub, you need to do those merges via the API. I've got things configured. All of my work repositories are partitioned off into their own subdirectory of my projects directory. I've got a git config that sets my email address to that. So if I'm doing things locally, it works. But if I'm doing these API merges that are necessary for certain repositories with certain safety checks, I needed to be able to thread that along. I've got a bug fix in here for that, where I'm threading along that email address that reads my git config and passes that along to the API endpoint. Otherwise, it was committed as the wrong identity. There's a few things here that I'd like to contribute upstream to Forge. Some of it is very bespoke to me, and some of it I think would be useful to everybody. I need to tease that apart still. Sacha: I like your technique of separating things into different subdirectories and so that all of your work stuff goes in the work directory or all of your personal stuff goes into projects or whatever. Then you can change your settings based on the location of the project. Even cloning a project will automatically pick the right directory to put it in. I saw that in your config. That's pretty clever. 37:13 Emacs tinkering as stress reliefSacha: I'm curious because a lot of people find it challenging to balance the workflow improvement I get to tinker with Emacs versus actually getting work done, the time balance between those two. It's a little hard to figure out sometimes. What is this like for you when you're sitting down, you're doing some work, and you realize "There's probably something that I can write to make this smoother?" Ross: I've been doing Emacs off and on for about 30 years now, and when I get that balance right, I'll let you know. I don't have it right yet. I know I spend more time tweaking things than I probably should. It's a stress reliever for me. I get tired of doing the other things. I still love computers. I've loved computers since I was six years old. Got my first computer then. My aunt got me a book on programming when I was six. I started going through that book, and I was off to the races on that. I relax by doing computers. Some of the open source chaos is a lot to deal with, and using the same languages that I use at work that feels too much like work, so being able to withdraw and just tweak things... "Okay, this irritated me." It's a combination... From a pure productivity perspective, I overdo it for sure, but I guess the stress relief if I would burn out otherwise... Maybe I'm getting it right after all. It's hard to say. Sacha: Besides, you might also be able to say to yourself, well, I do have some Emacs co-workers. I'm sure they can benefit from this too. Ross: I do. Sacha: You're helping them out too. Okay, I want to dig into some of the things that you have around improving Emacs' capabilities as a self-documenting editor. You have some configuration snippets that make getting help easier. I hadn't come across them before, so I wanted to make sure other people knew about them too. Like your thing about making apropos look at all the things and sort by scores. It can sort by scores? What kind of scores are we talking about? How does this work? Ross: One thing that I have done, a little bit off-topic for the question that you've asked, but I have linked everything very aggressively to the info manual where I found things. Sorry, I got caught in a recursive edit here. So let's open this. What was that doing? I'm also struggling because I've been very busy at work lately. I'm used to the Mac key bindings again. I'm back here on my Linux machine. I haven't adapted to the Ctrl versus the Cmd. So yeah, all apropos commands will sort their lists or results in alphabetical order. If sort by scores is non-null, they try to guess the relevance of each result. My comment looks like it's a little bit obsolete here because it looks like for the documentation, I do like the sorting by scores, but for regular apropos, I did not. I think I tweaked something and didn't update the documentation. Sacha: That's okay. I was just curious about it. Then you also have some things like, if it's an autoloaded symbol, then go ahead and load the library so that you can get help for it. If there's a shortdoc example, include that as well in the documentation of a function. So if people are reading configs for ideas, I thought I would call attention to this part because it sounds really handy. Ross: Yeah, I found these. I've just been going through... Part of my relaxation... 41:06 Under-appreciated Emacs built-insRoss: This is such a dorky thing to say, but part of the relaxation is I'll go through the Emacs manual looking for things. The overall structure of this document follows the Emacs manual fairly closely, and that's not by coincidence. I've just been going through chapter by chapter. Okay, well, I started with Emacs 19 or whatever. Emacs 31 is around the corner. I better at least catch up to all the goodies that are in 30. I'll read the manual, and I'm finding a lot of these things there. That's why I have so many links back to the manual inside of my code, just because I'm going through that. That's where you can find a lot of these hidden gems. I'm hosting the Emacs Carnival this month, and it's the underappreciated Emacs built-ins. I said, if you want to find any of them, go in the manual. They're there by the bushel. Sacha: It feels almost like a book club. We're going through the manual together and finding all these gems that I wouldn't have come across otherwise, because Emacs source code is too big and all that. I've been really appreciating the Emacs Carnival submissions thus far. Of course, there are lots of other things that are not in Emacs that you've also been exploring and checking out. 42:20 gptelSacha: Am I allowed to ask about the gptel stuff? Ross: Of course. Sacha: I was curious about how the quick lookup stuff has been working out for you. What kinds of things do you like to use that for? Ross: That's one that it was pretty exciting and I haven't really fully worked it into my workflow yet. I tried it. I liked it. I haven't internalized it. I was trying that one night. what what is capable of is you can just highlight something and do. It's almost like a quick Google search, except it'll bounce it off the model of your choice. It will pop up things a little bit faster that way. For the most part, I'm just using stock gptel, where I've just got the chatbot window. I'll copy a region and I'll put it into gptel. I'll run it off the model, say hey, I got a question about this, help me with this compile error, help me with that, and so forth. I don't... Talking about AI is always difficult because it's such a controversial thing and to use it at all, you offend a lot of people. I'll say, I don't really buy into the agentic workflow. I'm happy just using things as a chatbot and little snippets here and there where I'm still firmly driving. So the people who are fully bought into it, they don't think I'm using it right. Then there are a lot of ethical concerns that I share. I don't have the gptel on this. I use it for work. I don't use it personally. That's just the way I've been able to compartmentalize all my concerns with it. But just being a technologist, being a principal staff engineer, I do need to get up to speed with these tools. So I have had to get used to them and keep up with what they're capable of and what they're not. At least for my... Setting aside all the concerns around environment and whatnot, all the other concerns that we have with it , I find that GPTel is that sweet spot where I've just got this pair programmer where I can run things off, bounce a few questions off it, get things, but it's not getting write access to my file system. I have a security background. Worked at a security company for several years. Just the access that people are giving to these agents, I find absolutely terrifying. There's a lot of work that goes into using that properly, I think. I get most of the benefit. I feel like I'm de-skilling myself a little bit less than I do when I try the agentic workflows elsewhere. So I love gptel. Now gptel, it does have this interesting agent mode. I haven't tried it yet. Again, I have some security concerns around that. I need to figure out how to make sure that whatever I give it write access to... It's not getting too much write access to anything. But that is a project that's on my radar as well, to try to do things that really do benefit from this unattended work. I'll dabble in that as well. There's a whole gptel ecosystem. Karthik does an amazing job with that. Sacha: I like that you have a very considerate approach to it. I also like the humor with which you describe this and other things in your config. You aren't buying into the hype. You're like, this is your least unfavorite way of doing things. Ross: Yes, exactly. There's some commentary out on one of the nuclear test sites about "No deed of honor is performed here." I've quoted some of that in this part of the config too, just kind of my protest of doing this. I've got to do this and there are certain ways... If I have to do this, these are the ways that work for me. I'm getting some benefits out of this, but also I don't entirely feel great about this either. That's kind of how I've compartmentalized that. Sacha: Yeah, that makes sense. 46:04 Getting olderSacha: One of the other things that you joke about a couple of times in your config is getting older. So with things like your repeat-exit-timeout and your mode-line-bell-flash-time, you’re like, okay, might change it to track my senescence. I appreciate your sense of humor. Are you finding that there are things that you like to tweak about Emacs in anticipation of change as you get older? Ross: Well, my font size is definitely bigger than it used to be. I guess that's something that has changed over the years. I used to be able to operate on a tiny font, no longer on that. 46:46 Lindy's Law and tool longevityRoss: I guess Emacs and aging just feels like I made a really good... I wish I'd stuck with it for the full 30 years. I'd be fumbling around a little bit less in this demo. I'm not as smooth as somebody who'd been on it for the full 30 years, so I regret that time. I've just seen so many editors come and go. And when I talk to junior developers, I do a lot of mentoring. Like, I'm not necessarily going to say that you should go down this road, but if you do go down this road, it is something. that is probably going to be richly rewarding for you for a long time. There's this thing... I think it's called Lindy's Law. I'm sure I've quoted it here somewhere. The expected lifetime of something is proportional to how long it's already existed. And with Emacs... Emacs has been around... I'm very old. I'm 47. But Emacs is a little bit older than I am, depending on how you start counting. Emacs has been around for a long time. It doesn't have the market share that it used to, but it's something that still has a viable community. You do the Emacs News every week. You know probably better than anybody else how viable the community is right now. It's still an exciting place to be. I don't see that changing anytime soon, whereas I've seen so much hype over... Everybody wanted to get on Atom, and now Atom is a basically dead editor. Sublime had this rise and fall. So many other editors. Now I see people... VS Code was dominant for a while, and now I see a lot of people abandoning VS Code. It's still the dominant editor, but you can start to see people moving away from that. Emacs is always going to be here. So just as I've aged, I appreciate that Emacs, that same thing that I was using back when I was 18, a freshman in college, it's still working for me at 47. And by the time I hang up my keyboard, pretty sure I'm still going to be using it. It's done a remarkable job aging gracefully. Would I want to use the Emacs 19 today? Absolutely not. Am I fully comfortable using Emacs 28 in the sandbox environment? Yeah, there's certain things that I miss. But yeah, Emacs 30 is great. Emacs 31 is around the corner. It's kept up with the times. We just talked about AI. Emacs and AI, for all my concerns about AI, Emacs and AI are a great fit for each other because so much of the AI stuff that we're doing is text-based. Emacs is the best text processing platform that there's ever been. They fit each other so well. Sacha: Yeah, yeah. And I find it very amusing that with you at 47 years old and I'm 43, assuming math is right, There are people in the Emacs community who would consider us still young whippersnappers. Ross: That's right, yes. Different demographics around here, that's for sure. Sacha: As well as, of course, the other end where you have high school students and fresh grads still enjoying it, still exploring it. And so it's great that we can customize this with larger font sizes or different key bindings or other ways to catch us from making careless mistakes to adapt to us and the things that we're working on. So all this is very interesting. 49:51 Nix is good at managing package versions and customizing them; Matthew Bauer (Bauer IDE) Sacha: Oh, actually, on a different tangent, one of the things I was curious about is a lot of your configuration is set up to work well with Nix. Since a lot of people in Emacs are curious about reproducible configurations and systems, could you tell us more about Nix and your experience with it in Emacs? Ross: Yes, so I'm using that as some people use straight.el to pin their packages. Some people, they don't bother pinning their packages at all. I'm using Nix for people who are unfamiliar. Nix is... Boy, the elevator pitch for Nix. It's a package manager, but it's more than an Emacs package manager. It can manage all of your packages for you. So I'm building Emacs with Nix. I'm declaring all of my packages that way. Then that's specifying... I have a very repeatable build of Emacs and it has this version of these packages. One thing that Nix is very good at is it's very good at customizing certain things. So if you want to run a patched version of a particular package, you're able to specify, okay, I want this package, I want to use this package definition, but I want to overlay these files on top of it. Nix excels at that. I'm running a lot of customized versions of various packages, things that I've tried to submit upstream, and the Emacs package might be abandoned, or they might be a slow maintainer. I need to use it today, and they'll get around to it, and they'll merge it in a month. So on a temporary basis, I'll want to run a patched version. Nix makes that workflow very smooth for me where I'm able to run patched versions of certain packages, like I'm running a patched version of Forge like I showed off. Some of the things I want to contribute upstream, I've got those pulled out. I just need to sit down and actually submit them upstream. But I've got those ready to go and I'm able to run those out of the box. It's able to run... It's not just managing Emacs. That's the real magic of it. If I need certain binaries to support my Emacs config, I can declare those, and that all comes together and if I pull down Emacs packages, those are all going to be there together. There's a really fantastic example of this. Matthew Bauer has something out there. It's Bauer, I-D-E. B-A-U-E-R is his last name. He has one of the very inspiring configurations to me where he builds everything in Nix and he bundles all of his binaries that he needs in Nix and then he configures his Emacs variables to point, not at the git that happens to be on the file system, but to the git that he installs via Nix. So he knows that the entire thing is self-contained. That's something I've taken a lot of inspiration from. If I'm on a machine that has Nix, I'm able to run this. If I want to run my standalone config, I can run this command and I can run this command on any machine that I have Nix installed on. It will run very fast here. Should run very fast here. and this popped up and this is my base config and I could have run this on any machine or the my packages are named. It's an old Simpsons joke when Homer is stuck in New York. So that's the khlav kalash and crab juice. I think I've got a link to the YouTube video somewhere in my config. And there's the fully built in one. That's something I can get on a new machine. I install Nix. All of my dot files are there. If I want to just run Emacs or if somebody else wants to run my Emacs, anybody can take that config and run it. 53:25 Custom fontsRoss: Now if you do that, a word of warning. One thing that I've done is this font that you see is a custom font. I took the Iosevka font and I customized a lot of the glyphs on it. When I do that, I build that in Nix as well. You can use Nix to build your fonts. That's part of my derivation. My Emacs config depends on my fonts. If you try to run these, you're going to have to compile the fonts. I compile a lot of variants of these fonts. I compile a lot of alphabets. Linguistics is one of my hobbies. I love to work in these other alphabets and things like that. I'm very opinionated on these things. Even in languages that I don't speak, I like the text to look a certain way. Just one of the other ways I blow off steam. But anyway, I've got this custom font that I use everywhere. It's the font on my website. It's the font that you see in my editor and my terminal. If you pull this package, you'll get my font and you'll have to compile that and you're going to heat the room with your CPU for about 30 minutes if you do so. So beware on that. Otherwise, if you want to run my config, it's all out there if you have Nix. I don't know how practical that is, but it makes me feel good. 54:30 Starter kits versus configsSacha: Now I'm curious, have you heard from people using your base config or your extended one? Ross: I've heard of people copying out of it. I haven't heard of people depending on it directly. I would generally discourage people. That's kind of the difference between a starter kit and a config. You did an excellent series here on starter kits recently. I don't see this necessarily as a starter kit. This is very opinionated to the way I do things. I hope people look at it. I hope people draw inspiration from it, copy from it. Absolutely. But I'm going to change things on a whim. If you're using this as a base layer, you're going to find my opinions thrust upon you. You're probably not going to like half of them. Sacha: Well, your config is very nicely documented and rather enjoyable to read. So I can imagine people will get a lot by reading it for the things they can copy and paste to their config. I also particularly like how even your code snippets, you've customized it to include the license. So it's like every little bit of that is easy for people to copy from confidently. 55:34 Nix vs Guix; MacSacha: Trevok has a question. Hopefully without starting a philosophical war, why Nix over Guix? Ross: I would love to run Guix, but I have a Mac for work and Guix doesn't have a good Mac story. I'm sharing a lot, not just my Emacs configuration, but a lot of other configurations, because Nix is more broadly scoped. I'm able to share a bunch of things between those two operating systems. So the server that I run, the rossabaker.com, that runs on NixOS. This laptop that I'm on runs on NixOS, and then I have the Darwin machine. There are certain things that are compatible between Linux. There are certain things that are compatible between the workstations. And then Darwin has its own weird area. I'm able to manage all of that with Nix. I couldn't do that with Guix. If Guix gets a good Darwin story, I will switch tomorrow, because I would love to be configuring with Scheme. Sacha: Totally different tangent yet again. 56:26 Non-work interests: Org for documenting; ox-hugo and multiple languagesSacha: Do you use Emacs for your other interests? You've mentioned things like you use it to publish your youth soccer homepage. What about for your aquarium or linguistics or other things you're interested in? Tell us about the non-work uses of Emacs in your life. Ross: That would mostly be just documenting things in Org Mode. Like I mentioned, it's a big Org doc, and if you read this doc, you'll see that it's a very sprawling thing. For the linguistics, one thing with ox-hugo is that integrates nicely. I know you've been learning French. I think that's cool how you're doing that. Spanish and German are my two hobbies. I've actually got a trilingual site. The English is way more populated than Spanish and the German. Those are afterthoughts. I learned Spanish in college and I learned German in high school. I just try to keep current with that, but I'm not particularly fluent in either. There was a wonderful IndieWeb Carnival that came up. It was called Multilingualism on the Web and that's when I sat down and I'm like, okay, I want to do this. I'm going to write this article and I'm not just going to write it in one language. I'm going to write it in all three languages that I speak. Hugo has these facilities for taking the same article and publishing them on all three sites and linking them across each other. And ox-hugo, that passes through. ox-hugo uses Hugo as a compilation target. ox-hugo, I was able to set the metadata on there. If you've noticed my file name in this editor... I name everything after Simpsons puns: cromulent.en.org. And then I also have... I do have them separated by language. Here's my Spanish document and then, very predictably, here's my German document. By doing this in Org Mode with ox-hugo, I'm able to link together the posts that are translated into multiple languages. And then those all appear, if you go out to the Hugo site, like the rossabaker.com, you can go there and anything that's available in multiple languages, that'll show up. You can click through the Spanish or German translation of those. Sacha: I didn't notice any shortcuts in your config for quickly switching to another, like the Org mode source in a different language for the same post. Would you happen to have any conveniences like that, or do you just manually switch to the other file and then find it? Ross: I just manually switch to that, but the data is all there. The file names have to line up, so that's definitely a helper I could write. If I can find time to get back into this, that would be an excellent. I love your idea. Sacha: Yeah, because I figured, if you're going to write something, you might want to switch between languages very quickly. If you make an edit, okay, "I'm going to add this thought to it. I want to switch to the other ones." Ross: Yeah, typically I'll just take care of that with a split window and I'll have the two up there that way. That way, I'm comparing them side by side. That's probably why I haven't had that yet, but it would still be nice to see, okay, "I do want to make a quick edit in there." It would at least scroll me to that point in the other window quicker. Sacha: If you add more language-related stuff to your extended config, I'm very interested in what people use to look up dictionaries, look up example sentences, and things like that. @blaiseutube says, "Recovering linguist here. English, Spanish, and French for work. Japanese, Portuguese, Sanskrit, and Swedish for fun." So I'm guessing there are a lot of linguists or people who do language learning as a hobby who use Emacs. It's great because you can switch to all the different input methods very easily too. It's all text. Oh, this is fantastic. Ross: For all the diacritics that we don't have on the US layout keyboard, the C-x 8 key binding. Autocomplete if you need an obscure Unicode character, and it'll autocomplete on all those. So, okay, I want nice little built-in there. Sacha: Yeah, on Linux, I've just been using setxkbmap to switch my layout temporarily, but I also like just being able to set the input method in Emacs in case I just want to write something quickly, then I can just C-, I think. Okay, I've got about one minute before the kid does lunch break. Thank you so much for doing this. Was there anything that you wanted to pass on as a key tip that you'd like people to know from your experience with using Emacs? What's something we haven't mentioned that you'd like to share? Ross: I guess I didn't mention the things that I think are exciting outside. We talked about the built-in configs, so the things that I missed the most, I would say... Well, I guess look at my crab juice config. Those are the packages that I found that I absolutely cannot live without. Magit, a few language modes. You can get by on the built-in thing a lot better than you think, but there are a few things that are out there that are the really special ones, and I think that's the distilled essence of that. Just take a look at that package. Those are the ones that, yeah, I tried really hard on the built-ins and I failed. These are the ones I really need. I'd encourage people to take a look at that as well. Sacha: All right. For folks who are watching, you can find all of that stuff at rossabaker.com. Thank you so much. You've got links to your GitHub and Berg. Thanks to everyone on the stream for hanging out and for sharing your questions and comments. I almost forgot to mention [@ispringle] had a tip about putting emacs-lock-mode on a keyboard shortcut so you can toggle it if you wanted to. Nice idea. Again, thank you everyone. We're going to end the stream here. I will work on the transcripts and all that stuff. Thanks again Ross for doing this, and I'll see everyone around probably in September or October because I have to be on summer vacation. I'll update this blog post with the transcript. https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/ Find more Emacs Chats or join the fun: https://sachachua.com/emacs-chat Chat Ray-On-Emacs: How do you exit Emacs, then? Or do you never exit Emacs? pratikmishra4073: i stealing that lock mode hack. i too have killed scratch buffer accidentally before. ispringle: `(global-set-key (kbd "C-c l") #'emacs-lock-mode)` is handy for one off locks too PuercoPop: There is a gh-notify package specifically for high volume GitHub notifications blaiseutube: I keep procrastinating my return to emacs 😔 gr1maldi: Yo, and stuff. Sorry I'm late. Ray-On-Emacs: Getting older! Oh boy! more tell me, please dubstepandlovee: fantastic chat so far! as a local agent user, gptel-agent looks like an interesting project Trevoke: Hopefully without starting a philosophical war, why nix over guix? dubstepandlovee: why nix over lix dubstepandlovee: (joke) Trevoke: shakes fist in F/OSS Thanks for the answer blaiseutube: recovering linguist here. English Spanish and French for work. Japanese Portuguese, Sanskrit and Swedish for fun. blaiseutube: c-x h ? I love it sachactube: Maybe C-x 8 RET blaiseutube: oh! thank you Ray-On-Emacs: Thank you! View Org source for this post You can e-mail me at sacha@sachachua.com.








