Sacha Chua - category - emacs-chat-podcast

Sacha Chua

Emacs, sketches, and life

Episodes

  1. May 29

    Emacs Chat 24: Omar Antolin Camarena

    [2026-05-31 Sun]: Updated transcript and added a link to Karthik's notes. I chatted with Omar Antolín Camarena about Emacs, keyboard macros, temporary buffers, Embark, and other workflow tips. Video not supported. Thumbnail: View in the Internet Archive, read the transcript online, watch or comment on YouTube, download the audio or the transcript, or e-mail me. Related links: Omar Antolín Camarena: a researcher at Instituto de Matemáticas, UNAM in Mexico City M-x apropos Emacs oantolin/emacs-config: My personal Emacs configuration · GitHub oantolin/placeholder: Emacs package to treat any buffer as a template with placeholders to fill-in · GitHub oantolin (Omar Antolín Camarena) · GitHub Omar Antolín (@oantolin@mathstodon.xyz) - Mathstodon u/oantolin on Reddit #Emacs #Embark with Omar Antolin, Ramin Honary and Kent Pitman #lisp and more #interview #lispyGopherClimate - toobnix Karthik's notes on Emacs Chat 24: Omar Antolin Camarena You can add the iCal for upcoming Emacs Chat episodes to your calendar. https://sachachua.com/topic/emacs-chat/upcoming-emacs-chats.ics Find more Emacs Chats or join the fun: https://sachachua.com/emacs-chat Chapters 0:00 Ignore this part 0:18 Opening 0:46 How did you get into Emacs in the first place? 6:01 Repeating edits 7:28 dot-mode: repeating commands 9:24 block-undo: undo things as a chunk 10:29 Starting and stopping keyboard macros 12:15 Keycast and Embark 13:33 apply-macro-to-lines-of-paragraph 16:34 embark-on-last-message 18:06 tmp-buffer with a major mode 19:26 placeholder 20:38 enable-recursive-minibuffers 22:57 Overriding embark-select 23:32 quick-calc 26:30 Multiple cursors 27:40 Block-undo and regular undo 28:53 Cycling through Embark targets 31:39 Imenu for navigation 32:51 Collaboration 38:01 Technology adoption and Emacs packages 40:06 Personal packages and naming conventions 42:26 find-file-at-point and directory names 43:49 The value of using Emacs’s APIs 44:56 org-ql and usual files 47:06 Shortcuts for org-ql search syntax 47:43 Org TODO states: TODO, WAIT, DONE, NOPE 48:26 The inserter macro 50:05 luggage: generative art experiments 53:49 Teaching and Emacs 54:53 The print10 generator 56:23 arXiv 58:29 Toggle keymap 1:00:54 isearch-delete-wrong 1:03:14 isearch - continue from the beginning of the match 1:05:12 Using keymaps to remember sets of commands 1:06:04 Other things from the config Transcript Expand this to see the transcript and screenshots 0:00 Ignore this part Sacha: Cut off at, you know, roughly an hour and seven minutes from now. She's going to come out and have lunch. Okay. All right. Going live. Alright folks, we are here a little bit early. 0:18 Opening Sacha: This is Emacs Chat 24 with Omar Antolin Camarena, whom we know from Embark and Orderless and a lot of other little packages that I personally use on a daily basis. I'm very much looking forward to this conversation. Omar: Yeah, so am I. Very excited. Sacha: Of course, before we dive into all these lovely details, tell us a little bit more about your context. You're a researcher at the Mathematics Institute. I can see why Emacs would be a great fit for that. 0:46 How did you get into Emacs in the first place? Sacha: How did you get into Emacs in the first place? Omar: I think it's just by virtue of being old. When I started out looking for a text editor, there were not that many great options. When I was a teenager, 30 years ago, I decided to install Linux because I heard about it. That was the era where you went to a newsstand and you bought a Linux magazine that came with a CD, and I installed Linux from that. I think it was Slackware, maybe. I was already a hobby computer programmer. I've been learning programming languages since I was a child, when my father gave me my first computer. I think that was the main reason I switched to Linux. I noticed that people wrote many more interpreters and compilers for Linux than for Windows. That's why I wanted to use Linux. I needed a text editor that handled all sorts of weird programming languages. I was looking for a general purpose one, not an IDE. I used IDEs, younger ones, like Turbo Pascal. Probably that was the main one. I loved that. It was great. I went through the Linux distro, tried a bunch of editors. I settled on Emacs and Emacs-like editors. I tried Jove, which stands for Jonathan's Own Version of Emacs. And there was also an editor called... Oh, I forget. There was one that had its own extension language called S-Lang. I used that for a while. A little later, I remember using Slava Pestov's jEdit. I really like that, too, although Java is not that fun to write extensions in. I was looking for an editor and I wanted it to be extensible, which is funny because I hardly ever extend it. I just wanted there to be the option. I used Emacs for a long time. But when I got serious at being efficient at text-editing, I actually switched to Vim. I switched back to Emacs many years later because of one very specific problem in Vim. The syntax highlighting for LaTeX files is pretty slow. On a normal computer, you won't notice that it's slow. But I had a little netbook that was like 10 years old when I had it. I took it to class to take notes in math courses. I was writing in LaTeX Live with a bunch of macros to insert things. The syntax highlighting meant that Vim lagged behind my typing. I'm not that fast of a typist, so it was problematic. The Vim manual has an entire section on what to do if text highlighting is slow. You can look for it with Vim :help tex-slow That pops up the right section of the manual. I tried everything that it said there and they all made it slightly faster, but none of them really solved the lag, other than turning off syntax highlighting. I turned off syntax highlighting and took notes for like half a semester, and then I decided to try Emacs on that old netbook. Its syntax highlighting was perfectly snappy. This is just a weird thing in Vim that specifically LaTeX syntax highlighting is slow. I never noticed it being slow in any other... I don't know what Vim calls them, what Emacs would call a major mode. It was only ever slow in LaTeX, but that was enough to get me to try Emacs. But by then in Vim, I had learned that you want very granular motion commands to move by word or by sentence, and you want to be able to be placed at the end of the word or at the beginning of the word. All of these higher-level editing constructs that Vim really pushes you toward. In Emacs, I hadn't done any of that before. I moved around with the arrow keys. But when I came back to Emacs after having been in Vim, then I wanted to get serious about editing efficiently in Emacs. I think I actually like it better than Vim now. But yeah, that's why I switched back to Emacs. It's just this quirk that LaTeX syntax highlighting is slow in Vim. Sacha: Well, their loss. So you tried a whole bunch of other editors. You got into Vim because you wanted to be more efficient. Getting deeply into Vim was great, but you ran into that bug. So you switched to Emacs because it was more efficient, more performant. All that experience with Vim has made you a better Emacs user because now you're like, okay, you appreciate all the navigation and movement. And you were telling me over email... Omar: Things I missed from Vim. Sacha: Yeah, You were telling me over email how the kind of the keyboard macros that you got used to in Vim, you've translated some of that over to Emacs and how you use them. We definitely want to get into that. Omar: Keyboard macro-like things. In Emacs, for a while, I used multiple-cursors. I liked it a lot. 6:01 Repeating edits Omar: One thing I really missed from Vim is the dot command that repeats the last edit. But in Vim, edits are composite things. You have a command to change a sentence, for example. That will delete the current sentence, put you into insert mode, let you type a new sentence, and when you press escape, that concludes the edit. The whole edit is the operation of deleting the current sentence and replacing it with the specific thing you typed. That is a thing you can repeat. The repeatable edit commands in Vim are much coarser and more conceptually appropriate units than in Emacs. The repeat command repeats the last Emacs command, but everything runs a command in Emacs. You can repeat inserting the last character. That's not very useful. You want to repeat at least the whole consecutive stretch of characters you inserted. Undo in Emacs does do that. Undo coalesces. If you type a bunch of characters and you undo, it doesn't undo them one by one. It undoes them. It clumps them depending on pauses between your typing. That's fine. I want that sort of coarseness. I don't want to undo every single step at a time. Similarly, when you repeat things, you don't want to repeat every single step. I think Vim has like a pretty good unit of things you can repeat. I was missing that in Emacs. 7:28 dot-mode: repeating commands Omar: There's a package called dot-mode which I used to use and I like a lot. I'm not exactly sure why I stopped using it. So this gives you a more Vim-like experience for repeating commands in Emacs and what it does is that it watches you as you type and it constantly makes a keyboard macro out of the last consecutive stretch of buffer modifying commands. So, for example, in Vim, if you want to change a word, there is a change word command, and you type c w, and then you change the word, and then that thing gets repeated. In Emacs, to change a word, it's not a single unit, right? You delete the word, and then you type in something new, and each character you type is running insert-char. dot-mode will coalesce all of that into a single keyboard macro that you can repeat, right? If you do some motion command that doesn't modify the buffer, and then you delete a word and type a new word, everything from the del

  2. May 21

    Emacs Chat 23: Emacs Chat with Raymond Zeitler

    [2026-05-25 Mon]: Fixed ICS link I chatted with Raymond Zeitler about Emacs, life, automation, Org Mode, Diary, and Calendar. There were a couple of cuts to get rid of accidentally shown passwords, but it was a great glimpse into someone's system for managing things. View in the Internet Archive, watch or comment on YouTube, read the transcript online, download the transcript, download the audio, or email me. Related links: https://www.emacswiki.org/emacs/RaymondZeitler (config is out of date) https://www.linkedin.com/in/raymondzeitler/ : Electrical Engineer | Electronic RF Components | Scripting & Automation | US Defense and Aerospace~ Modernizing your company’s legacy design tools Acting Historian, IEEE Connecticut Section https://codeberg.org/ZeitRa The rest of his Internet presence is either private (Facebook) or anonymous (two blogs, Github and Gitlab, Mastodon, Bluesky). Writing Calendar Files (GNU Emacs Manual) - cal-tex-cursor-week-iso elisp/next-spec-day.el at master · chenfengyuan/elisp · GitHub You can add the iCal for upcoming Emacs Chat episodes to your calendar. https://sachachua.com/topic/emacs-chat/upcoming-emacs-chats.ics Find more Emacs Chats or join the fun: https://sachachua.com/emacs-chat Chapters: 0:00 Opening 0:58 Introduction 1:59 I love automating workflows 3:15 Org Mode switch 4:08 diary-float 6:48 Tip: Add links to task titles 6:59 diary-float 7:59 The difference between active timestamps and SCHEDULED 10:06 Including other diary files 11:26 cal-tex-cursor-week-iso, printing planner pages on index cards 14:59 Holidays 16:45 Making calendars for other people 17:27 Keeping track of when things were done on the house 18:49 My first customizations: backspace, buffers 20:32 Windows and super key 23:23 Org Mode class on Udemy, agenda custom commands 25:00 toggling tags 26:57 TODO states 27:21 Functions for Org Agenda 28:34 exeln, shellfn: executing things in DOS 30:22 Middle mouse click 31:59 Keybindings in other apps: Vivaldi 34:09 M-s M-w, eww-search-words 35:50 Saving links with org-store-link 38:29 How I got into Emacs 41:45 Maybe my own theme? 42:26 Other editors? Always Emacs 43:57 Package names 45:54 What's next? Maybe auto maintenance 48:31 Vibe-coding? 50:53 Where people can find me 52:02 Org Mode source blocks 52:49 Slideshows? 53:50 Emacs Chats? 56:33 Other resources that would be nice to have .ec23 span.caption[data-speaker="Sacha"] .speaker-name { color: var(--modus-rainbow-1); } .ec23 span.caption[data-speaker="Raymond"] .speaker-name { color: var(--modus-rainbow-2); } Transcript Transcript 0:00 Opening Sacha: I'll go live if that's okay with you. Yeah, good to go? Raymond: Okay. Sacha: All right, going live. Raymond: Let me just stop sharing right now. Sacha: Hi everyone, this is Emacs Chat. Emacs Chat 23. Today I'm here with Raymond Zeitler who has been using Emacs for a long time. Your EmacsWiki page says since 2000. And I know for sure that you've been commenting on my blog since about 2008, probably even earlier, I don't know. Everything gets lost in the mists of time. I would love to chat with you about the things that you've learned over the years, what you're still fiddling with, and the things in your configuration or workflow that aren't obvious to people who are reading configurations. It's just Emacs Lisp, but it doesn't show people what you do with Emacs that makes you stick with it over all this time. 0:57 Introduction Sacha: So yes, but of course, we should do a bit of context setting. You have a lot of different hats. You're a historian, you're an electrical engineer. How would you describe yourself? Raymond: Well, right now, I would say I'm an electrical engineer, but I spend most of my time, instead of designing stuff, I work on the workflow for the design. And I'm writing scripts, you know, to automate various parts of the design. Now, I just want to pause here because I hear like a 10-second delay. Sacha: Yes. Oh, you have the video open in another tab. Yeah, so the 10-second delay is there in case we need to panic, you know, in case you accidentally flash something you'd rather keep private. But it can be quite disconcerting to hear yourself talking at the same time that you're trying to say something. Raymond: Okay, I think I fixed that. Okay. 1:57 I love automating workflows Raymond: Yes, so I'm an electrical engineer, but I also love to do scripting. Automating any kind of workflow is my favorite thing to do, and I would just love to go around and help people to find ways to automate the workflow. Basically, I was doing that ETL, you know, extract, transform, and load many years ago, I mean, dozens of years ago, and showing people how to do that too for them, and you know, when they look at me and they say, oh my god, thank you so much, I'm so glad... You know, it used to take me hours to do this. Automating a design flow is a good idea once you have all your script in place, that serves as your documentation. If there is a problem with the design, you can go back to the script and update it. So the next time, you're not going to have that problem, hopefully. Sacha: You've been learning Python recently, too, right? I can imagine that helps a lot with automation. Are you taking advantage of things like Org Mode as well for the things that you can partially automate? Raymond: Absolutely. Sacha: Tell us about that. Raymond: Oh, I figured that we should save for the last, because it could take the whole thing. 3:20 Org Mode switch Raymond: But yes, I started using Org Mode after you jumped ship from Planner Mode. I know that you and John Wiegley were big on that, and I used to use Planner. And I delayed switching to Org Mode, but eventually I latched onto it really well. So one thing I used Org Mode for at home was for bill pay, you know, because you can schedule things recurring. So you got your mortgage, you can recur, you know, and the recurrence is well thought out. You know, you could have it scheduled exactly 30 days away or one month. 4:05 diary-float Raymond: What I found recently, though, is you can use the diary: diary-float and diary-warning. Those functions can be used in Org Mode in place of the schedule. So that's really cool. I have a lot of meetings that occur, let's say, the second Wednesday of the month and stuff. There's really no way to easily do that out of the box with Org Mode. So that's fun to do. Let's see. I'm going to share my Org now, if you want. Sacha: Sure, go ahead. If that's okay with you. Raymond: Sure. Well, I deleted some of the stuff. You know, not all the files are there. Sacha: Thank you. It's always interesting to see, because a lot of times, when we're trying to demonstrate Org to people, we're like, okay, here's a small example. But when you see it in the context of someone's actual life, with the tons of reminders they have... Your agenda is very full, for example. I'm not the only one with things that are scheduled for over 100 days. Raymond: And actually, your talk isn't on here, so that's kind of strange. So, for example, I was talking about bills, right? I don't know if you can see that. Sacha: Yeah, I can see that. Raymond: It's not the same. Sacha: Yeah, I see. And you're using the logbook. You can keep notes in a task. You can put all the things there. Raymond: Yeah. So, you know, something like a mortgage or your utility, that's pretty standard. That's just +1m, you know, for the recurrence. Let's see. Yeah. Sacha: Yeah. So basically, you have the regular or repeat things, plus one month or plus one week for the things that can be expressed that way. But you also use diary-float for the things that are second Wednesday of the month. Raymond: Yes. So let me try a different Org file for that. Oh, everyone, I have to do this too. Sacha: Oh yeah, you can set a global font default scale thingy. I don't remember exactly how to do that, but... [cut due to passwords] I'll move your screen off the thing first while you talk, and then I'll move it back when you're ready. So we had a bit of a "Oh no, he's showing me like meeting passwords online." So if you saw that, which probably you didn't because 10 second delay, just ignore it. And then we'll go back and scrub things later. Let me know when it's safe to look again. Raymond: Okay, here we go. So here's a meeting. Sacha: Okay, okay. We got this. We got this. 6:48 Tip: Add links to task titles Sacha: I also want to point out, I love how you're using links in the task title. You know, that did not occur to me to have the links right there so it's easy to get to from just the overview. 6:59 diary-float Raymond: [cut due to passwords] ...which works really in a diary file. Sacha: All right. Let me move it back so people can see. Raymond: It works. This is great because it works in Org Mode too. If anyone doesn't know it, this is the month. And true just means that this meeting occurs every month. And I believe this means Monday. Sacha: No, Tuesday. Although... Your comment says Tuesday, yeah. Raymond: Yeah, Tuesday. So that's the second day of the week, with Sunday being zero. And then this is the week number, the second week. Second Tuesday of every month. And then you could just put the time there as well. Sacha: Yeah, yeah. I have actually personally never used this syntax, but I see people use it for things like Emacs meetups and they're like, okay, yeah, we meet every second Wednesday or whatever, but here's the thing that you can just put into your Org agenda and it'll work. 7:59 The difference between active timestamps and SCHEDULED Raymond: But the problem with this, though, is that it doesn't obey the, you know, if you mark it done, it'll be marked done. So it won't show up again. So I'm actually starting to put these in my actual diary because you know, I don't really need to mark the meeting done. Sacha: You kn

  3. May 7

    Emacs Chat 22: Shae Erisson

    [2026-05-08 Fri]: Transcript, yay! I chatted with Shae Erisson about Emacs, keyboards, Org Mode, and life. View it via the Internet Archive, watch/comment on YouTube, read the transcript online, download the video / MP3 / transcript, or e-mail me your thoughts! Shae Erisson: Haskell, Python, Swedish, knitting, mountain unicycling, contact juggling Shae Erisson's blog - 1. DO SOMETHING 2. BRAG ABOUT IT Shae Erisson (@shapr@recurse.social) - recurse.social Shae Erisson's blog - Programmers want flow. when programming, light turns RED shapr/markovkeyboard: keyboard layout that changes by markov frequency · GitHub Chapters 0:00 Intro 0:57 1999, IRC, community building in Haskell 1:58 Emacs as a light-weight build-your-own-editor toolkit 2:51 LSP, treesitter, Magit, jujutsu, C++, Python, Haskell, rust 3:35 how does a new person experience Emacs? Emacs is always fun. 4:03 Markov keyboard project, moving to Finland, right-handed Dvorak, split keyboard; Jeff Raskin; I am not a koala 6:43 Purpose-specific function keys 7:30 Trackballs, scroll 8:14 1" trackpad rings 8:54 Pair programming: ttyshare, shwim 13:13 Recurse Center, "What is that keyboard? What is that editor?!", Emacs bankruptcy and starter kits 16:06 hippie-expand 17:14 yasnippet 18:52 Function keys 20:02 Org Mode 21:14 Show Org agenda when idle 21:58 Programmers want flow. When programming, light turns red 24:25 ef-themes and modus-themes, season 25:56 htmlize (does this still work on Wayland?) 26:37 lsp-ui-imenu, jumping through rust code 28:25 laptop with 126GB of RAM 29:46 LSP coolness, Haskell, treesitter 31:58 Combobulate 32:46 What else are you using your 126 gigabytes of RAM for? 33:25 TalonVoice 34:45 NixOS, following Steve Purcell about 5 years behind 35:03 envrc 35:52 time-tracking 37:01 taxes with Org Mode, remote lookup 40:55 finding notes with C-s 42:35 Org Mode, managing inbox 46:28 Timestamps 49:12 Org timers 53:53 Org Mode snippets 57:15 Compilation finish function: handle success Transcript Transcript 0:00 Intro Sacha: Okay, so I'm going to actually remember to hit go live. I've got a 10 second delay, so if we need to panic, we can panic. Okay, so let's see. I think we are live. Hi, everyone. This is Emacs Chat number 22 after a long hiatus. And today, I'm here with Shae Erisson, who is also like an Emacs friend from a long time back. So this is it. As you were just saying, this is the first time we're actually talking live. And I'm looking forward to hearing about your configuration, how you use Emacs, Shae. But before we dive into that, can you give us a little bit of context? Who you are, what sorts of things you do, and how you use Emacs for that? 0:57 1999, IRC, community building in Haskell Shae: I would say that... I guess I started using Emacs in 1999 when I moved to Finland. And I remember about the same time I was on IRC and I was really frustrated. I remember I got on the Perl IRC channel and I was like, hey, I want an editor that has syntax highlighting. I want to see colors to these words when I'm typing them. And they were like, noob, and they kick-banned me. And I was like, well, maybe I don't want to learn Perl, which I never did. And I guess that was an early introduction into I wanted to be part of communities where people were sharing positive things and building up each other. Actually, I ended up starting the Haskell IRC channel a couple of years later, and that became a very big thing. I would say that I'm mostly known for my work in community building in the Haskell programming language community, because I did that for, I don't know, 15 or 20 years. But I really like Emacs. 1:58 Emacs as a light-weight build-your-own-editor toolkit Shae: So like last week at the same time I had the standing chat with a friend of mine who is also a programmer and he said oh so you're going to do this thing in a week do you want to give me like a preview of the talk and I was like yeah I guess so and some of the things that were really interesting was he was like I've never really tried Emacs I don't know much about it I kind of have this impression that it is a very lightweight build your own editor toolkit and I I was kind of taken aback because, you know, I guess I still have this long ago and far away. I don't know if you remember 8 Megs and Constantly Swapping is what people used to call Emacs and things like that. And I was, it was just kind of, I realized I'm still in my little echo chamber. And this is why I like to talk to other people all the time is because I want to have some exposure to what other people are doing. 2:51 LSP, treesitter, Magit, jujutsu, C++, Python, Haskell, rust Shae: I guess things about Emacs that really changed stuff for me is language server protocol, TreeSitter. Those, I think, are two very powerful tools that are much more generic than, I mean, Magit, of course, is like magic. Although I've mostly switched to jujitsu lately instead for the last year. Let's see, I had, I guess, let's see, I did C++, I did Python, I did a whole lot of Python. And then I had Haskell jobs for five or six years. And then I switched to Rust about a year and a half ago. I now have a Rust job. And one of the things that Prot had asked, I think, or you had asked, and I forget exactly how this went. 3:35 how does a new person experience Emacs? Emacs is always fun. Shae: It was great fun watching your livestream. And it was, how does a new person kind of get comfortable with using Emacs for a particular purpose. And I look for things, in fact, like how do I use Emacs for Rust, Rust development? And I found a couple of good guides on, and I was able to follow most of them, although my Yesnitit stuff is broken and I don't exactly know why tab doesn't work, right? But, you know, like there's always, Emacs is always fun, right? There's so many cool things you could do with it. 4:03 Markov keyboard project, moving to Finland, right-handed Dvorak, split keyboard; Jeff Raskin; I am not a koala Shae: I noticed, I actually hadn't seen your preview page and I noticed that you found my Markov keyboard. Sacha: When you say Emacs is fun, I'm reminded of all of your fun, crazy keyboard experiments. It's like, what? I have a feeling you like to tinker with things. Shae: Yeah, so I think actually the influences as to how I got to where I am are pretty interesting. So the person that I ended up moving to Finland to for dating her, we started a company, we did projects, and I was the programmer. We had this pretty big project. I guess it was like 350,000 euros. And I mean, that was going to be over four years and we had to kind of complete the whole thing, and I was the programmer and we'd had the lowest bid... I had an IBM model M, you know, the super clicky with like all the... And about three years into it, my arm started really hurting a lot. But I was the only programmer. And nobody else knew all the code. And we had to ship it, because that's how we got paid. And so I ended up pushing through. And at the end of it, my arm just didn't work anymore. So for about a year and three months, what I did was I actually taught myself to type right hand. ...Dvorak, because I was already using two-hand Dvorak, and so I kept programming, but I just... One of the things was... like, I like programming, I like using computers, I don't want to wear out my arms again, I don't want to blow them out, so I ended up switching to split keyboards, and I will show you. This is very much the kind of thing that I like to use, and that is like this. Shae: This is an Ergodox Infinity, but there's a lot of other keyboard flavors like this. And one of the things that I particularly like about this... So around the same time I met Jeff Raskin, who wrote the Inhumane Interface. And so for this particular thing, this is like Control and Alt and Hyper and Super and Shift. And this means that under one thumb, I have a lot more modifier keys than you get off of a standard. And it also means... A lot of my problems started with Emacs pinky, the dreaded, the infamous... I think that one of my... I made a keyboard layout called "I am not koala." You may not know this, but koalas have two thumbs. They have one on each side. And that's cool, but I don't have two thumbs, and I realized that when I was trying to grab something, I didn't put my pinky on it. That would be silly, right? I want to put my thumb around it. And so I decided I would move all of my chording keys under my thumbs. And that's kind of how I... 6:43 Purpose-specific function keys Shae: And another thing I did was when I was really only able to use one hand, was I made my function keys mostly purpose-specific. And that was from Jeff Raskin's writings in The Humane Interface. So I guess I'm a programmer who really likes writing code, doesn't want to wear out my arms, and likes to do fun keyboard things, yeah. Sacha: Definitely. You're in it for the long term. You don't want to use up all of your arm capacity now and not be able to keep programming in the future. And now there's hardware to make that easier. So I'm glad. Split keyboards with extra thumb keys seem to be very popular in the Emacs community. I'm now tempted to find space in my desk in order to make that happen. 7:30 Trackballs, scroll Shae: Another thing I ended up switching to was I started using trackballs. Oh yeah, yeah. I tend to go completely overboard when trying out new things, so I bought 20 different models of trackballs and ended up settling on this one. The nice thing about this one is that this is how you scroll, and it has four buttons. Sacha: That is really cool. I like using ThinkPads, so I've been just living off the tiny little mouse in the middle of the keyboard. But back in the day, I also used a trackball. If I can get to the point where I want to take my hands off the keyboard again in order to do mouse things, that would probably be the direction I would

  4. May 4

    Emacs Chat 21: Amin Bandali

    Chapters Transcript Chat [2026-05-08 Fri]: Updated with Amin's changes. [2026-05-07 Thu]: Added file enclosure so that it can load as a proper podcast. I chatted with Amin Bandali about Emacs, configuration, EXWM, keybindings, audio, and life. View it via the Internet Archive, watch/comment on YouTube, read the transcript online, download the transcript, or e-mail me your thoughts! Links: Emacs Chat with Sacha Chua - bandali - Amin's blog post about this talk Amin Bandali: a computing scientist, archivist, and activist for user freedom bandali's GNU Emacs configuration .emacs.d - configs - My configuration for GNU Emacs and other programs The People of Emacs - bandali emacs-exwm/exwm: Emacs X Window Manager · GitHub Chapters 0:00 Introduction: Amin Bandali, software developer and free software activist 1:05 Aspects of life: notetaking, editing, multiple 3:00 Configuration: keeping things simple 4:58 user-lisp-directory, site-lisp if you're using an older Emacs 6:32 Organizing configuration into modules 7:45 early-init 9:06 ring-bell-function 9:40 performance optimizations 10:25 user-lisp 11:14 ignoring byte compilation warnings 11:55 init-file-debug = –debug-init 12:53 Core 13:53 no longer using bandali-configure; scoping errors, timing execution 17:02 Why not use use-package 18:37 Defining multiple keybindings 19:45 doric-oak uses emphasis instead of colours 20:49 global font scaling instead of the local ones 21:37 display-fill-column-indicator 22:53 emacsclient for EDITOR and VISUAL 23:37 fundamental-mode-hook 24:23 indicate-buffer-boundaries 26:36 enabling and disabling commands 27:37 package-review-policy 28:52 getting the Info files from the Emacs source directory 29:45 recentf, adding directories 31:38 Scrolling 32:28 auto revert 33:14 Repeat mode 34:51 EXWM 38:03 Audio setup 39:10 keymaps for launching different applications 39:49 bandali-call-interactively-insert 42:26 workspaces 43:46 ZSA Voyager split keyboard, super x as a single key 46:26 Keybindings 48:05 Media buttons 49:43 exwm-input-simulation-keys! 51:39 exwm: managing floating windows 53:11 exwm: application-specific local simulation keys 54:04 binding C-q to exwm-input-send-next-key 54:28 Renaming buffers 55:36 dunst for notifications 56:54 exwm xsettings and responding to screen configuration changes 58:59 Slowly getting back into Org mode 59:58 chat notes 1:00:52 Mode line 1:01:49 display-buffer-alist 1:02:23 TRAMP slowness, maybe disabling VC detection? 1:03:39 eat 1:05:07 TRAMP completion 1:06:54 ffs: form feed slides, ^L 1:09:34 Speaker notes Transcript Skip to endTranscript 0:00 Introduction: Amin Bandali, software developer and free software activist Sacha: Let me do the thing. Go live. Let's check in. Alright, hello. This is Emacs Chat 21 coming back after a decade of not doing it, so… And today I've got Amin Bandali who's a… Is it seven years now that we've been doing EmacsConf together? Amin: I think so. Since fall 2019. Yeah. Sacha: Yeah, yeah, yeah, yeah. But of course you also do a whole lot of other things. I was looking through your Emacs configuration and there's like translation and other stuff in there. So would you like to start off with a brief introduction of who you are and how and why you use Emacs? Amin: Yeah, sure. Yeah, first of all, hello, everyone. Sorry if I'm looking to the side. This is a new setup. My laptop, which has my webcam, is there, but my main display is here. So I might be looking to the side from time to time. But yeah, that aside, hello. 1:05 Aspects of life: notetaking, editing, multiple Amin: Yeah, I'm Amin Bandali. I've been, I think, using Emacs since 2014 or 15, so I guess more than a decade now. I'm a software engineer by day, or software developer, slash programmer, slash computing scientist. I'm also a free software activist. I volunteer on a lot of free software projects as well, which Sacha mentioned. I do things around GNU. I volunteer with FSF. I'm a Debian Developer, so I try to maintain some packages in Debian. I try to help run EmacsConf from time to time. Hopefully this year I will be much more present. But yeah, that's that. So I first got into using Emacs, I guess, as a programmer tool, like as a text editor. But I've since then kind of integrated it into a lot of other aspects of my life. And I do much more with it, as I'm sure a lot of us do. Yeah, so I use it for kind of note-taking, just any writing, editing purposes in multiple natural and programming languages. Reading and sending email for chatting via IRC. All of that good stuff. Sacha: This is the sort of thing that isn't immediately obvious from your configuration. I know you've got your Gnus setup in there and you've got your ERC setup in there, but sometimes when newcomers are trying to figure out, okay, there are all these packages, but how do I use them to get stuff done? That's one of the reasons why we want to do this Emacs chat, so that maybe you can show us some of the cool stuff. We are live, but if you accidentally show something personal, let me know and I can kill the stream within 10 seconds and I think then we can be like, okay, we'll just flush that out and then come back once we've hidden the top secret plans for taking over the world, that sort of thing. Sounds good. Where do we want to start? 3:00 Configuration: keeping things simple Amin: I'm happy to do it however you like. I can either share my screen, pull up my configuration. Yeah, okay, so let's do that. Sacha: Yeah. If you share your screen sometimes, I think what we did ages ago was we just started walking through the configuration and then sometimes people say, oh yeah, that's really interesting. Let's go and demonstrate that so that people can get a sense of how this actually works. And there were some things in your configuration that I had no idea, like what is FFS? There's like no package. I couldn't find any information about it. But yeah, so your config, if you want to go ahead and share your screen while I Fill the air with hand-waving. Amin's config tends to be more on the minimalist side. I think you mostly rely on built-in things with a couple of external packages. You don't even use use-package at all. It's all run-at-idle-time to delay the startup of various things, and then it's all vanilla Emacs as you can get for loading and configuring things. Amin: Yeah, pretty much, yeah. Yeah, so before I continue, quick note, Sacha, if you can make me presenter because I don't have access to share my screen. Sacha: Oh, that would be important, yes. Hang on a second. Let me see. Okay, here we go. Make presenter. I might as well promote you to moderator while we're at it. There you go. You should now have magic powers. Amin: Thanks. Let's see. Sacha: It's a good thing we're practicing this before EmacsConf so I remember how all this stuff works. Amin: Yep, for sure. Okay, let's see. I think I got it now. Can you see my screen? Sacha: Yes, I can see your screen. Amin: Okay, excellent. Let's see. Okay. 4:58 user-lisp-directory, site-lisp if you're using an older Emacs Amin: Yeah, so as Sacha mentioned at the moment, my config is kind of very minimalist and kind of conservative by design, in part because I tend to work on a lot of different machines, whether it's for work or volunteering or whatever, and I prefer to use Emacs if I can. So I want my config to be fairly self-contained so I can easily either git clone or rsync it over. Yeah. To keep it simple, I was using package.el for a while for installing and managing my packages, which I don't keep in my configs repository. But then I decided to switch over to very manual package management with the awesome new feature user-lisp-directory of the next upcoming Emacs release, which basically you can give it a subdirectory in your ~/.emacs.d or ~/.config/emacs. And then it'll go through all the Emacs Lisp files recursively, byte compile them, native compile them, all that good stuff, and add them to the load-path. And for people who are using existing or older releases of Emacs, there's also site-lisp by Philip Kaludercic, which is kind of the… I guess first implementation of what later became User Lisp and built into Emacs. So you can make it conditional and fall back to site-lisp if you want to be able to use User Lisp on older Emacs but still have your configuration be usable. Yeah, anyway. 6:32 Organizing configuration into modules Amin: So I've experimented with like a couple different ways of managing my configurations like single giant init file of like four or five thousand lines which I know is actually not very large by comparison to I think like someone like Sacha's configuration and also like You know, split into multiple different files, which has its own benefits. And I've kind of actually converged to the approach that Prot uses. If you actually take a look at my configuration file, you see I've drawn a lot of inspiration from Prot switches. Having a literate single file configuration, which then all of the Emacs Lisp source blocks get tangled to individual files. So I can maintain a single source of truth and edit it all in one place, but then also easily be able to share individual pieces to people if they want. So yeah, that's kind of the general approach. And I can dive right in. Sacha: Yeah, that's definitely the structure that I've also stolen from Prot. And I like the way that you're Your heading names are all long and descriptive, and you've got everything broken down in detail. So yeah, go ahead and walk us through it, please. Amin: Yeah, sure. Let's see. 7:45 early-init Amin: So that's a brief introduction, and then I have an early init section for doing the early init file. There's a couple of subheadings here. Actually, let me enlarge the font size a little bit to make it more legible. OK, great. I do a couple of things here like disabl

Ratings & Reviews

5
out of 5
3 Ratings

About

Emacs, sketches, and life