<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/assets/rss.xsl" type="text/xsl"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"

xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"

>
<channel>
	<title>Sacha Chua - category - emacs-chat-podcast</title>
	<atom:link href="https://sachachua.com/blog/category/emacs-chat-podcast/feed/index.xml" rel="self" type="application/rss+xml" />
	<atom:link href="https://sachachua.com/blog/category/emacs-chat-podcast" rel="alternate" type="text/html" />
	<link>https://sachachua.com/blog/category/emacs-chat-podcast/feed/index.xml</link>
	<description>Emacs, sketches, and life</description>
  <itunes:author>Sacha Chua</itunes:author>
<itunes:type>episodic</itunes:type>
<itunes:owner><itunes:name>Sacha Chua</itunes:name><itunes:email>sacha@sachachua.com</itunes:email></itunes:owner>
<itunes:summary>Conversations about Emacs (a very customizable text editor) and life</itunes:summary>
<itunes:image href="https://sachachua.com/assets/images/emacs-chat-thumbnail.png"></itunes:image>
<itunes:category text="Technology"></itunes:category>
<itunes:explicit>false</itunes:explicit>
	<lastBuildDate>Mon, 15 Jun 2026 13:54:28 GMT</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>daily</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>11ty</generator>
  <item>
		<title>Emacs Chat 26: Ross A. Baker</title>
		<link>https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Sun, 07 Jun 2026 18:28:45 GMT</pubDate>
    <category>emacs</category>
<category>emacs-chat-podcast</category>
<category>emacs-chat</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/</guid>
		<description><![CDATA[<div class="update" id="orga27d02c">
<p>
<span class="timestamp-wrapper"><time class="timestamp" datetime="2026-06-19">[2026-06-19 Fri]</time></span>: Added transcript.
</p>

</div>

<p>
I chatted with <a href="https://rossabaker.com/">Ross Baker</a> about Emacs (including running Emacs 28), his Emacs config, and life.
<video preload="none" controls="1" src="https://archive.org/download/emacs-chat-26-ross-a-baker/emacs-chat-26-ross-a-baker.mp4" poster="https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/2026-04-22-14-14-12%20emacs-chat-ross-a-baker.png" type="video/mp4"><track kind="subtitles" label="Captions" src="https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/emacs-chat-26-ross-a-baker.vtt" srclang="en" default=""><span>Video not supported. Thumbnail:<br><img src="https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/2026-04-22-14-14-12%20emacs-chat-ross-a-baker.png" alt="Thumbnail"></span></video>
</p>

<p>
<a href="https://archive.org/details/emacs-chat-26-ross-a-baker/">View in the Internet Archive</a>, <a href="https://youtube.com/live/_tEcqbi_2o8">watch or comment on YouTube</a>, <a href="https://sachachua.com/blog/feed/index.xml#ID-emacs-chat-26-ross-a-baker-transcript">read the transcript online</a>, <a href="https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/emacs-chat-26-ross-a-baker.vtt">download the transcript</a>, or <a href="mailto:sacha@sachachua.com">e-mail me</a>.
</p>

<p>
Related links:
</p>

<ul class="org-ul">
<li><a href="https://rossabaker.com/blog/">Blog</a>
<ul class="org-ul">
<li><a href="https://rossabaker.com/tags/emacs/">Posts tagged #emacs</a></li>
<li><a href="https://rossabaker.com/blog/take-two-coming-home-to-emacs/">Ross A. Baker: Take Two: Coming Home to Emacs</a></li>
</ul></li>
<li><a href="https://rossabaker.com/configs/emacs/">Emacs config</a>
<ul class="org-ul">
<li><a href="https://rossabaker.com/configs/emacs/early-init/">Emacs Early Init</a></li>
<li><a href="https://rossabaker.com/configs/emacs/khlav-kalash/">Khlav Kalash Emacs</a></li>
<li><a href="https://rossabaker.com/configs/emacs/crab-juice/">Crab Juice Emacs</a></li>
<li><a href="https://rossabaker.com/configs/emacs/rab-starter/">Starter Emacs configuration</a></li>
</ul></li>
<li><a href="https://github.com/matthewbauer/bauer">matthewbauer/bauer: An Emacs+Nix IDE · GitHub</a></li>
<li><a href="https://rossabaker.com/blog/multilingualism_in_a_global_web/">Ross A. Baker: Multilingualism in a Global Web</a> (<a href="https://rossabaker.com/blog/multilingualism_in_a_global_web/">DE</a>, <a href="https://es.rossabaker.com/blog/multiling%C3%BCismo_en_una_web_global/">ES</a>)</li>
</ul>
<div id="outline-container-emacs-chat-26-ross-a-baker-chapters" class="outline-3">
<h3 id="emacs-chat-26-ross-a-baker-chapters"><a href="https://sachachua.com/blog/feed/index.xml#emacs-chat-26-ross-a-baker-chapters">Chapters</a></h3>
<div class="outline-text-3" id="text-emacs-chat-26-ross-a-baker-chapters">
<p>
</p><ul class="org-ul">
<li><span class="audio-time" data-start="0.588" data-stop="12.608">0:00</span> Opening</li>
<li><span class="audio-time" data-start="46.369" data-stop="48.513">0:46</span> What Ross does</li>
<li><span class="audio-time" data-start="126.593" data-stop="130.518">2:06</span> How Ross got into Emacs, used other editors, and then came back to Emacs</li>
<li><span class="audio-time" data-start="298.280" data-stop="304.213">4:58</span> Config focusing on built-ins</li>
<li><span class="audio-time" data-start="612.276" data-stop="614.479">10:12</span> simple-orderless</li>

<li><span class="audio-time" data-start="869.245" data-stop="870.967">14:29</span> Size indicator</li>
<li><span class="audio-time" data-start="1000.719" data-stop="1004.344">16:40</span> Graceful degradation</li>
<li><span class="audio-time" data-start="1068.860" data-stop="1071.006">17:48</span> emacs-lock-mode</li>

<li><span class="audio-time" data-start="1192.334" data-stop="1194.177">19:52</span> exiting Emacs: yes-or-no-p</li>
<li><span class="audio-time" data-start="1246.791" data-stop="1248.072">20:46</span> yes-or-no-p</li>
<li><span class="audio-time" data-start="1305.548" data-stop="1307.451">21:45</span> Processes</li>
<li><span class="audio-time" data-start="1338.359" data-stop="1341.264">22:18</span> Moving keymaps</li>
<li><span class="audio-time" data-start="1463.726" data-stop="1467.313">24:23</span> Writing in Org Mode and Markdown</li>
<li><span class="audio-time" data-start="1669.170" data-stop="1672.596">27:49</span> Ethersync?</li>
<li><span class="audio-time" data-start="1756.171" data-stop="1759.435">29:16</span> Managing Github with Forge</li>

<li><span class="audio-time" data-start="2149.501" data-stop="2152.185">35:49</span> Committing with work addresses vs personal</li>
<li><span class="audio-time" data-start="2233.533" data-stop="2235.496">37:13</span> Emacs tinkering as stress relief</li>
<li><span class="audio-time" data-start="2466.157" data-stop="2468.303">41:06</span> Under-appreciated Emacs built-ins</li>
<li><span class="audio-time" data-start="2540.502" data-stop="2543.907">42:20</span> gptel</li>
<li><span class="audio-time" data-start="2764.997" data-stop="2767.179">46:04</span> Getting older</li>
<li><span class="audio-time" data-start="2806.799" data-stop="2810.423">46:46</span> Lindy's Law and tool longevity</li>
<li><span class="audio-time" data-start="2991.000" data-stop="2994.726">49:51</span> Nix is good at managing package versions and customizing them; Matthew Bauer (Bauer IDE)</li>

<li><span class="audio-time" data-start="3205.336" data-stop="3207.501">53:25</span> Custom fonts</li>
<li><span class="audio-time" data-start="3270.913" data-stop="3272.037">54:30</span> Starter kits versus configs</li>
<li><span class="audio-time" data-start="3334.711" data-stop="3335.912">55:34</span> Nix vs Guix; Mac</li>
<li><span class="audio-time" data-start="3386.894" data-stop="3390.137">56:26</span> Non-work interests: Org for documenting; ox-hugo and multiple languages</li>
</ul>

<p></p>
</div>
</div>
<div id="outline-container-emacs-chat-26-ross-a-baker-transcript-section" class="outline-3">
<h3 id="emacs-chat-26-ross-a-baker-transcript-section"><a href="https://sachachua.com/blog/feed/index.xml#emacs-chat-26-ross-a-baker-transcript-section">Transcript</a></h3>
<div class="outline-text-3" id="text-emacs-chat-26-ross-a-baker-transcript-section">
<details class="code-details"><a name="ID-emacs-chat-26-ross-a-baker-transcript"></a><summary>Expand this to read the transcript</summary>
<p>
</p><div class="full-transcript"><p></p><div class="transcript-heading"><span class="audio-time" data-start="0.000000">0:00</span> <strong>Opening</strong></div><p></p><span class="audio-time caption" data-speaker="" data-start="0.588000" data-stop="12.608000">[opening stuff]</span> <span class="audio-time caption" data-speaker="" data-start="14.070000" data-stop="16.835000">Emacs Chat 26 is Ross A. Baker.</span> <span class="audio-time caption" data-speaker="" data-start="17.616000" data-stop="20.181000">You can find him at rossabaker.com.</span> <span class="audio-time caption" data-speaker="" data-start="20.201000" data-stop="22.364000">Today, we've got a lot of interesting things</span> <span class="audio-time caption" data-speaker="" data-start="22.404000" data-stop="24.748000">to dig into, including his two-part Emacs</span> <span class="audio-time caption" data-speaker="" data-start="24.788000" data-stop="25.870000">configuration,</span> <span class="audio-time caption" data-speaker="" data-start="25.850000" data-stop="29.017000">plus of course, all the things that he does.</span> <span class="audio-time caption" data-speaker="" data-start="29.037000" data-stop="31.964000">The goal with Emacs Chat is to show some of</span> <span class="audio-time caption" data-speaker="" data-start="32.024000" data-stop="33.568000">the things that aren't obvious from the</span> <span class="audio-time caption" data-speaker="" data-start="33.628000" data-stop="35.533000">configuration, like how the different pieces</span> <span class="audio-time caption" data-speaker="" data-start="35.613000" data-stop="38.199000">actually work together or what the workflow feels like.</span> <span class="audio-time caption" data-speaker="" data-start="38.560000" data-stop="40.885000">But before we dive into that, Ross, can you tell</span> <span class="audio-time caption" data-speaker="" data-start="40.925000" data-stop="42.549000">us a little bit about your background?</span> <span class="audio-time caption" data-speaker="" data-start="42.569000" data-stop="43.391000">What's the context here?</span> <span class="audio-time caption" data-speaker="" data-start="43.411000" data-stop="44.213000">What do you like to do?</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="45.307000" data-stop="45.788000"><strong class="speaker-name">Ross:</strong>  Oh, sure.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="46.000000">0:46</span> <strong>What Ross does</strong></div><p></p><span class="audio-time caption" data-speaker="Ross" data-start="46.369000" data-stop="48.513000"><strong class="speaker-name">Ross:</strong> So for work, I'm a backend engineer.</span> <span class="audio-time caption" data-speaker="Ross" data-start="48.814000" data-stop="51.679000">I'm somewhat well known in the Scala community.</span> <span class="audio-time caption" data-speaker="Ross" data-start="51.699000" data-stop="54.504000">I've done that for a long time on an open-source basis.</span> <span class="audio-time caption" data-speaker="Ross" data-start="54.524000" data-stop="56.709000">I've taken an interest in Rust here recently.</span> <span class="audio-time caption" data-speaker="Ross" data-start="56.769000" data-stop="59.915000">Those are the two primary languages I work in.</span> <span class="audio-time caption" data-speaker="Ross" data-start="59.935000" data-stop="62.940000">I work for a financial company.</span> <span class="audio-time caption" data-speaker="Ross" data-start="63.001000" data-stop="65.866000">We maintain the apps for small- and regional-sized</span> <span class="audio-time caption" data-speaker="Ross" data-start="65.906000" data-stop="67.990000">banks in the United States.</span> <span class="audio-time caption" data-speaker="Ross" data-start="67.970000" data-stop="69.391000">Fairly fun work there.</span> <span class="audio-time caption" data-speaker="Ross" data-start="69.412000" data-stop="71.994000">It's kept me quite busy here lately.</span> <span class="audio-time caption" data-speaker="Ross" data-start="72.234000" data-stop="74.217000">For other things I like to do for fun, like to go</span> <span class="audio-time caption" data-speaker="Ross" data-start="74.277000" data-stop="76.118000">for a jog, like to push away from the computer</span> <span class="audio-time caption" data-speaker="Ross" data-start="76.179000" data-stop="76.699000">now and then.</span> <span class="audio-time caption" data-speaker="Ross" data-start="76.839000" data-stop="79.002000">So I go jogging every day, try to run about nine</span> <span class="audio-time caption" data-speaker="Ross" data-start="79.042000" data-stop="79.882000">miles every day.</span> <span class="audio-time caption" data-speaker="Ross" data-start="82.745000" data-stop="87.911000">My two big de-stressors are the running</span> <span class="audio-time caption" data-speaker="Ross" data-start="88.091000" data-stop="90.373000">and the fiddling with my Emacs configuration,</span> <span class="audio-time caption" data-speaker="Ross" data-start="90.574000" data-stop="92.115000">kind of opposite sides of the coin.</span> <span class="audio-time caption" data-speaker="Ross" data-start="92.135000" data-stop="94.838000">But I need them both to stay happy, I think.</span> <span class="audio-time caption" data-speaker="Ross" data-start="95.847000" data-stop="97.029000">That makes sense.</span> <span class="audio-time caption" data-speaker="Ross" data-start="97.649000" data-stop="99.171000">Also a soccer coach.</span> <span class="audio-time caption" data-speaker="Ross" data-start="99.452000" data-stop="101.274000">My kid is in high school and coached his</span> <span class="audio-time caption" data-speaker="Ross" data-start="101.314000" data-stop="102.336000">recreational team.</span> <span class="audio-time caption" data-speaker="Ross" data-start="102.676000" data-stop="104.118000">They have a lot of fun with that as well.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="105.139000" data-stop="105.840000"><strong class="speaker-name">Sacha:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="105.900000" data-stop="107.603000">One of your blog posts mentions that you've been</span> <span class="audio-time caption" data-speaker="Sacha" data-start="107.623000" data-stop="110.967000">publishing your youth soccer webpage in ox-hugo.</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="112.029000" data-stop="112.469000"><strong class="speaker-name">Ross:</strong>  That's right.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="113.310000" data-stop="114.472000"><strong class="speaker-name">Sacha:</strong>  Emacs can be used for everything.</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="115.413000" data-stop="116.054000"><strong class="speaker-name">Ross:</strong>  It can, yeah.</span> <span class="audio-time caption" data-speaker="Ross" data-start="116.254000" data-stop="117.636000">That's right.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="117.903000" data-stop="121.708000"><strong class="speaker-name">Sacha:</strong>  We're also very curious about how</span> <span class="audio-time caption" data-speaker="Sacha" data-start="121.768000" data-stop="124.491000">people get into Emacs and what makes them stick</span> <span class="audio-time caption" data-speaker="Sacha" data-start="124.531000" data-stop="125.192000">with Emacs.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="126.000000">2:06</span> <strong>How Ross got into Emacs, used other editors, and then came back to Emacs</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="126.593000" data-stop="130.518000"><strong class="speaker-name">Sacha:</strong> In your story for the Emacs Carnival in Take 2,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="130.878000" data-stop="132.681000">you shared how you got into Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="132.741000" data-stop="136.425000">Well, you were introduced to Emacs in 1997, but</span> <span class="audio-time caption" data-speaker="Sacha" data-start="136.465000" data-stop="137.366000">you actually left.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="137.567000" data-stop="140.350000">You used other editors for a while because of work,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="140.718000" data-stop="142.440000">and then you came back to Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="142.460000" data-stop="145.244000">Was it primarily for Haskell and Clojure, or were</span> <span class="audio-time caption" data-speaker="Sacha" data-start="145.284000" data-stop="150.411000">there other reasons that got you interested in it?</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="150.431000" data-stop="153.039000"><strong class="speaker-name">Ross:</strong>  Yeah, when I was at the Haskell shop,</span> <span class="audio-time caption" data-speaker="Ross" data-start="153.040000" data-stop="155.477000">it was something that a lot... When</span> <span class="audio-time caption" data-speaker="Ross" data-start="155.497000" data-stop="157.360000">you get out into the workplace, there's very few</span> <span class="audio-time caption" data-speaker="Ross" data-start="157.500000" data-stop="159.763000">Emacs users, relatively speaking, in most</span> <span class="audio-time caption" data-speaker="Ross" data-start="159.783000" data-stop="160.344000">workplaces.</span> <span class="audio-time caption" data-speaker="Ross" data-start="160.364000" data-stop="161.746000">But when you're in a Haskell shop, that's what</span> <span class="audio-time caption" data-speaker="Ross" data-start="161.806000" data-stop="162.947000">almost everybody uses.</span> <span class="audio-time caption" data-speaker="Ross" data-start="162.967000" data-stop="165.531000">So being surrounded by that, that was a good</span> <span class="audio-time caption" data-speaker="Ross" data-start="165.851000" data-stop="167.113000">reason to get back into it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="167.173000" data-stop="168.694000">I'd been dabbling in it a little bit</span> <span class="audio-time caption" data-speaker="Ross" data-start="168.695000" data-stop="170.337000">before that, even.</span> <span class="audio-time caption" data-speaker="Ross" data-start="170.317000" data-stop="173.199000">I had a really good time with it originally.</span> <span class="audio-time caption" data-speaker="Ross" data-start="173.200000" data-stop="175.563000">I got into it like so many people did back then.</span> <span class="audio-time caption" data-speaker="Ross" data-start="175.583000" data-stop="177.506000">I got into it in college, showed up, and that's</span> <span class="audio-time caption" data-speaker="Ross" data-start="177.546000" data-stop="178.867000">what the professor was using.</span> <span class="audio-time caption" data-speaker="Ross" data-start="178.887000" data-stop="180.509000">The first language that we learned there was</span> <span class="audio-time caption" data-speaker="Ross" data-start="180.569000" data-stop="182.872000">Scheme, which is a Lisp dialect, so it's a</span> <span class="audio-time caption" data-speaker="Ross" data-start="182.932000" data-stop="183.933000">natural fit there.</span> <span class="audio-time caption" data-speaker="Ross" data-start="184.734000" data-stop="187.938000">Back then Emacs and Vim were the two dominant</span> <span class="audio-time caption" data-speaker="Ross" data-start="188.018000" data-stop="189.881000">editors at that point, so it was pretty much one</span> <span class="audio-time caption" data-speaker="Ross" data-start="189.921000" data-stop="190.421000">or the other.</span> <span class="audio-time caption" data-speaker="Ross" data-start="190.441000" data-stop="192.083000">If you were learning a Lisp dialect in</span> <span class="audio-time caption" data-speaker="Ross" data-start="192.123000" data-stop="193.905000">school, the professor was going to guide you</span> <span class="audio-time caption" data-speaker="Ross" data-start="193.945000" data-stop="195.227000">toward Emacs.</span> <span class="audio-time caption" data-speaker="Ross" data-start="195.207000" data-stop="196.828000">I got that initial shove</span> <span class="audio-time caption" data-speaker="Ross" data-start="196.829000" data-stop="198.171000">and fell in love with it there.</span> <span class="audio-time caption" data-speaker="Ross" data-start="198.351000" data-stop="200.134000">Then I got out into the workplace, and in the</span> <span class="audio-time caption" data-speaker="Ross" data-start="200.154000" data-stop="202.817000">workplace back then, it was very rigid.</span> <span class="audio-time caption" data-speaker="Ross" data-start="202.837000" data-stop="204.960000">You would have to use the commercial editor that</span> <span class="audio-time caption" data-speaker="Ross" data-start="205.000000" data-stop="207.363000">was integrated with all the IBM software,</span> <span class="audio-time caption" data-speaker="Ross" data-start="207.364000" data-stop="210.086000">so I had to use these specific things</span> <span class="audio-time caption" data-speaker="Ross" data-start="210.087000" data-stop="211.870000">and I couldn't use Emacs anymore.</span> <span class="audio-time caption" data-speaker="Ross" data-start="213.011000" data-stop="215.875000">I did dabble in Vim a little bit as well and I</span> <span class="audio-time caption" data-speaker="Ross" data-start="215.935000" data-stop="217.958000">liked the efficiency of editing</span> <span class="audio-time caption" data-speaker="Ross" data-start="217.938000" data-stop="220.081000">that came from both Emacs and Vim.</span> <span class="audio-time caption" data-speaker="Ross" data-start="220.221000" data-stop="222.204000">Vim was easier to emulate than these other</span> <span class="audio-time caption" data-speaker="Ross" data-start="222.265000" data-stop="223.426000">editors that I had to use.</span> <span class="audio-time caption" data-speaker="Ross" data-start="223.446000" data-stop="226.771000">That had me on a Vim path for a little while.</span> <span class="audio-time caption" data-speaker="Ross" data-start="226.791000" data-stop="228.895000">But then scripting it just wasn't as satisfying</span> <span class="audio-time caption" data-speaker="Ross" data-start="228.955000" data-stop="229.896000">as Emacs.</span> <span class="audio-time caption" data-speaker="Ross" data-start="231.198000" data-stop="232.620000">It was always really calling to me.</span> <span class="audio-time caption" data-speaker="Ross" data-start="232.680000" data-stop="235.445000">I felt like I was in exile while I was outside of</span> <span class="audio-time caption" data-speaker="Ross" data-start="235.525000" data-stop="235.965000">Emacs.</span> <span class="audio-time caption" data-speaker="Ross" data-start="235.985000" data-stop="237.668000">Then, when I had a chance to start picking my</span> <span class="audio-time caption" data-speaker="Ross" data-start="237.728000" data-stop="239.971000">own editor and customizing things again and</span> <span class="audio-time caption" data-speaker="Ross" data-start="240.072000" data-stop="241.794000">getting up to speed with other people who were</span> <span class="audio-time caption" data-speaker="Ross" data-start="241.874000" data-stop="244.017000">using Emacs, it was just natural to come home,</span> <span class="audio-time caption" data-speaker="Ross" data-start="244.078000" data-stop="245.700000">and here I am again.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="246.440000" data-stop="247.081000"><strong class="speaker-name">Sacha:</strong>  Nice.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="248.623000" data-stop="251.687000">Many people haven't had the experience of working</span> <span class="audio-time caption" data-speaker="Sacha" data-start="251.747000" data-stop="254.291000">with other Emacs users in the same company.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="254.391000" data-stop="255.613000">So what is it like?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="255.813000" data-stop="260.039000">Were you swapping lots of config around, pair</span> <span class="audio-time caption" data-speaker="Sacha" data-start="260.079000" data-stop="261.380000">programming, that sort of thing?</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="262.563000" data-stop="264.264000"><strong class="speaker-name">Ross:</strong>  Yeah, pair programming,</span> <span class="audio-time caption" data-speaker="Ross" data-start="264.265000" data-stop="265.567000">sharing config.</span> <span class="audio-time caption" data-speaker="Ross" data-start="265.787000" data-stop="268.511000">I am fortunate at my current workplace, even</span> <span class="audio-time caption" data-speaker="Ross" data-start="268.571000" data-stop="270.334000">though it's a much smaller percentage than it's</span> <span class="audio-time caption" data-speaker="Ross" data-start="270.374000" data-stop="271.635000">been in some other workplaces.</span> <span class="audio-time caption" data-speaker="Ross" data-start="271.655000" data-stop="273.678000">It's also a large company, and we have an active</span> <span class="audio-time caption" data-speaker="Ross" data-start="273.758000" data-stop="276.362000">Emacs channel there within the company Slack.</span> <span class="audio-time caption" data-speaker="Ross" data-start="276.663000" data-stop="278.725000">A lot of people are interested in it there, so</span> <span class="audio-time caption" data-speaker="Ross" data-start="278.785000" data-stop="281.429000">I've got my little inside community in addition</span> <span class="audio-time caption" data-speaker="Ross" data-start="281.469000" data-stop="283.271000">to the outside Emacs community as well.</span> <span class="audio-time caption" data-speaker="Ross" data-start="284.572000" data-stop="286.555000">Fortunately, I still get that even to this day,</span> <span class="audio-time caption" data-speaker="Ross" data-start="286.735000" data-stop="287.856000">so that's pretty fun.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="288.757000" data-stop="289.677000"><strong class="speaker-name">Sacha:</strong>  You're the second person has described</span> <span class="audio-time caption" data-speaker="Sacha" data-start="289.678000" data-stop="293.181000">the wonders of having a company internet channel</span> <span class="audio-time caption" data-speaker="Sacha" data-start="293.182000" data-stop="297.928000">on Slack, just about Emacs. Yes. Very awesome.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="298.000000">4:58</span> <strong>Config focusing on built-ins</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="298.280000" data-stop="304.213000"><strong class="speaker-name">Sacha:</strong> I'm wondering, with your current company, is that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="304.233000" data-stop="308.862000">the reason why you have so many "gotta run with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="310.125000" data-stop="312.911000">just the built-ins", "gotta run even if you've got</span> <span class="audio-time caption" data-speaker="Sacha" data-start="313.011000" data-stop="315.557000">Emacs 28"... Is that the reason for those kinds of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="316.438000" data-stop="318.583000">considerations in your base config?</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="319.559000" data-stop="321.382000"><strong class="speaker-name">Ross:</strong>  That was kind of a premature</span> <span class="audio-time caption" data-speaker="Ross" data-start="321.522000" data-stop="323.966000">optimization that worked out very well for me.</span> <span class="audio-time caption" data-speaker="Ross" data-start="323.986000" data-stop="327.613000">I used to run a very extensive config.</span> <span class="audio-time caption" data-speaker="Ross" data-start="327.633000" data-stop="329.616000">I'd look at all the classic configs that would go</span> <span class="audio-time caption" data-speaker="Ross" data-start="329.676000" data-stop="332.320000">out there and install all the packages from MELPA.</span> <span class="audio-time caption" data-speaker="Ross" data-start="333.042000" data-stop="335.165000">I'd try them all out. I'd just accumulate</span> <span class="audio-time caption" data-speaker="Ross" data-start="335.205000" data-stop="336.768000">these things. I went through some Emacs</span> <span class="audio-time caption" data-speaker="Ross" data-start="336.808000" data-stop="337.990000">bankruptcies.</span> <span class="audio-time caption" data-speaker="Ross" data-start="337.970000" data-stop="339.693000">Then people in the community started talking</span> <span class="audio-time caption" data-speaker="Ross" data-start="339.753000" data-stop="343.138000">about, okay, Emacs 29, it added <code>use-package</code> out</span> <span class="audio-time caption" data-speaker="Ross" data-start="343.178000" data-stop="343.658000">of the box.</span> <span class="audio-time caption" data-speaker="Ross" data-start="343.758000" data-stop="347.544000">It added... I can't remember when project.el came</span> <span class="audio-time caption" data-speaker="Ross" data-start="347.604000" data-stop="350.228000">along, but it added these things that started...</span> <span class="audio-time caption" data-speaker="Ross" data-start="350.308000" data-stop="352.852000">You used to have to get them from outside, or you</span> <span class="audio-time caption" data-speaker="Ross" data-start="352.872000" data-stop="355.456000">used to have these other libraries, and Emacs got</span> <span class="audio-time caption" data-speaker="Ross" data-start="355.496000" data-stop="357.058000">a lot better out of the box.</span> <span class="audio-time caption" data-speaker="Ross" data-start="357.138000" data-stop="358.560000">I started to say, okay,</span> <span class="audio-time caption" data-speaker="Ross" data-start="358.540000" data-stop="360.043000">I'm going to do one more bankruptcy.</span> <span class="audio-time caption" data-speaker="Ross" data-start="360.083000" data-stop="361.967000">I'm going to see what I can do with built-ins.</span> <span class="audio-time caption" data-speaker="Ross" data-start="362.027000" data-stop="364.832000">I started experimenting down those lines, even</span> <span class="audio-time caption" data-speaker="Ross" data-start="364.853000" data-stop="367.137000">though I was always using that extended config.</span> <span class="audio-time caption" data-speaker="Ross" data-start="367.157000" data-stop="369.241000">I was challenging myself. How much can I get from</span> <span class="audio-time caption" data-speaker="Ross" data-start="369.301000" data-stop="372.147000">a built-in config and then just have a little bit</span> <span class="audio-time caption" data-speaker="Ross" data-start="372.207000" data-stop="374.872000">of extra for those gaps? Because there are gaps.</span> <span class="audio-time caption" data-speaker="Ross" data-start="375.173000" data-stop="377.918000">I do love Emacs built-ins, but I am more</span> <span class="audio-time caption" data-speaker="Ross" data-start="377.979000" data-stop="379.722000">comfortable with the regular one.</span> <span class="audio-time caption" data-speaker="Ross" data-start="379.853000" data-stop="381.976000">But I challenge myself that way.</span> <span class="audio-time caption" data-speaker="Ross" data-start="382.256000" data-stop="384.199000">This month, I got put on a project where</span> <span class="audio-time caption" data-speaker="Ross" data-start="384.239000" data-stop="386.022000">I have to work in a sandbox environment.</span> <span class="audio-time caption" data-speaker="Ross" data-start="386.042000" data-stop="388.646000">So it's not regular operating procedure, but I</span> <span class="audio-time caption" data-speaker="Ross" data-start="388.686000" data-stop="390.709000">have to do all my work in the sandbox environment.</span> <span class="audio-time caption" data-speaker="Ross" data-start="390.729000" data-stop="392.531000">There's no network egress.</span> <span class="audio-time caption" data-speaker="Ross" data-start="392.551000" data-stop="396.116000">I have to say, okay, if I want packages in here,</span> <span class="audio-time caption" data-speaker="Ross" data-start="396.217000" data-stop="398.179000">I have to talk to the admins of that system and</span> <span class="audio-time caption" data-speaker="Ross" data-start="398.239000" data-stop="400.242000">say, I want these packages.</span> <span class="audio-time caption" data-speaker="Ross" data-start="400.262000" data-stop="401.644000">I lobbied for Emacs on it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="401.725000" data-stop="403.247000">They thought, well, that's kind of weird, but</span> <span class="audio-time caption" data-speaker="Ross" data-start="403.307000" data-stop="405.029000">it's just one more line of apt-get in the</span> <span class="audio-time caption" data-speaker="Ross" data-start="405.049000" data-stop="405.931000">Docker container,</span> <span class="audio-time caption" data-speaker="Ross" data-start="405.971000" data-stop="407.633000">so they're fine with it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="407.613000" data-stop="411.133000">It was an old version of Debian Bookworm.</span> <span class="audio-time caption" data-speaker="Ross" data-start="411.134000" data-stop="413.267000">I was running Emacs 28. I'm like,</span> <span class="audio-time caption" data-speaker="Ross" data-start="413.268000" data-stop="416.167000">okay, well, I've got this built-in configuration.</span> <span class="audio-time caption" data-speaker="Ross" data-start="416.168000" data-stop="417.567000">This is its moment to shine.</span> <span class="audio-time caption" data-speaker="Ross" data-start="417.568000" data-stop="419.967000">I tried to run it on there.</span> <span class="audio-time caption" data-speaker="Ross" data-start="419.968000" data-stop="423.300000">I was able to copy the file up there. I tried</span> <span class="audio-time caption" data-speaker="Ross" data-start="423.301000" data-stop="425.200000">running it on there, and I run into things</span> <span class="audio-time caption" data-speaker="Ross" data-start="425.201000" data-stop="427.309000">I’ve been using <code>setopt</code>. I’ve been using</span> <span class="audio-time caption" data-speaker="Ross" data-start="427.289000" data-stop="431.876000">one of the XDG packages for setting your X desktop</span> <span class="audio-time caption" data-speaker="Ross" data-start="431.896000" data-stop="432.817000">group directories,</span> <span class="audio-time caption" data-speaker="Ross" data-start="432.837000" data-stop="435.922000">so to have a standard place to put your config</span> <span class="audio-time caption" data-speaker="Ross" data-start="435.982000" data-stop="437.743000">files versus your cache files</span> <span class="audio-time caption" data-speaker="Ross" data-start="437.744000" data-stop="439.527000">versus your state files.</span> <span class="audio-time caption" data-speaker="Ross" data-start="439.547000" data-stop="441.910000">In Emacs 28, they had most of those variables,</span> <span class="audio-time caption" data-speaker="Ross" data-start="441.950000" data-stop="444.134000">but one of those variables didn't exist yet.</span> <span class="audio-time caption" data-speaker="Ross" data-start="444.174000" data-stop="446.137000">So I felt a few paper cuts that way.</span> <span class="audio-time caption" data-speaker="Ross" data-start="446.777000" data-stop="449.121000">Up near the top of my config, I've got a</span> <span class="audio-time caption" data-speaker="Ross" data-start="449.161000" data-stop="450.563000">compatibility layer.</span> <span class="audio-time caption" data-speaker="Ross" data-start="451.015000" data-stop="452.978000">The compatibility layer, there's a nice</span> <span class="audio-time caption" data-speaker="Ross" data-start="453.018000" data-stop="454.339000">compat package out there.</span> <span class="audio-time caption" data-speaker="Ross" data-start="454.379000" data-stop="454.960000">I can't remember.</span> <span class="audio-time caption" data-speaker="Ross" data-start="455.281000" data-stop="457.143000">I think Omar, who you interviewed recently, I</span> <span class="audio-time caption" data-speaker="Ross" data-start="457.263000" data-stop="459.246000">believe he's one of the people behind it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="459.266000" data-stop="461.669000">And tarsius, I think he's involved in that too.</span> <span class="audio-time caption" data-speaker="Ross" data-start="461.809000" data-stop="463.131000">I could be misquoting on that.</span> <span class="audio-time caption" data-speaker="Ross" data-start="463.772000" data-stop="465.294000">Maybe I'm misattributing that.</span> <span class="audio-time caption" data-speaker="Ross" data-start="465.414000" data-stop="467.697000">But anyway, there's this wonderful compat package</span> <span class="audio-time caption" data-speaker="Ross" data-start="467.777000" data-stop="468.138000">out there.</span> <span class="audio-time caption" data-speaker="Ross" data-start="468.598000" data-stop="470.180000">If you're a package author and you want to have</span> <span class="audio-time caption" data-speaker="Ross" data-start="470.220000" data-stop="472.243000">your Emacs package running on older versions,</span> <span class="audio-time caption" data-speaker="Ross" data-start="472.824000" data-stop="473.665000">it's great for that.</span> <span class="audio-time caption" data-speaker="Ross" data-start="473.645000" data-stop="475.869000">But the whole point of this is I don't have any</span> <span class="audio-time caption" data-speaker="Ross" data-start="475.929000" data-stop="476.951000">external packages.</span> <span class="audio-time caption" data-speaker="Ross" data-start="476.971000" data-stop="478.954000">So where I need this compatibility layer the</span> <span class="audio-time caption" data-speaker="Ross" data-start="478.994000" data-stop="481.799000">most, I can't use this lovely compat package out</span> <span class="audio-time caption" data-speaker="Ross" data-start="481.839000" data-stop="482.360000">of the box.</span> <span class="audio-time caption" data-speaker="Ross" data-start="482.840000" data-stop="485.705000">So I had to reinvent a few shims.</span> <span class="audio-time caption" data-speaker="Ross" data-start="485.725000" data-stop="487.068000">I think I could bring that up.</span> <span class="audio-time caption" data-speaker="Ross" data-start="487.088000" data-stop="488.250000">Am I sharing my screen?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="488.390000" data-stop="489.592000"><strong class="speaker-name">Sacha:</strong>  Yes, you're sharing your screen.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="490.473000" data-stop="492.677000">That was one of the things that immediately</span> <span class="audio-time caption" data-speaker="Sacha" data-start="492.717000" data-stop="494.099000">struck me about your config.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="494.139000" data-stop="496.303000">You're so hardcore about not using</span> <span class="audio-time caption" data-speaker="Sacha" data-start="496.323000" data-stop="498.066000">external packages that even your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="498.333000" data-stop="499.935000">adapting to older versions,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="499.955000" data-stop="503.299000">you're re-implementing things yourself in order</span> <span class="audio-time caption" data-speaker="Sacha" data-start="503.339000" data-stop="506.644000">to be able to stick with your constraints.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="506.664000" data-stop="508.326000">I think that's hilarious, by the way.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="508.366000" data-stop="510.268000">You started it off with it as a personal</span> <span class="audio-time caption" data-speaker="Sacha" data-start="510.328000" data-stop="512.211000">challenge because, of course, people are allowed</span> <span class="audio-time caption" data-speaker="Sacha" data-start="512.251000" data-stop="514.933000">to set arbitrary challenges for themselves,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="514.995000" data-stop="517.798000">and then it turned out to be surprisingly useful</span> <span class="audio-time caption" data-speaker="Sacha" data-start="517.857000" data-stop="520.542000">for you in this limited environment.</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="520.802000" data-stop="522.164000"><strong class="speaker-name">Ross:</strong>  Yeah, that's one that really saved</span> <span class="audio-time caption" data-speaker="Ross" data-start="522.203000" data-stop="522.683000">my bacon.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="523.005000" data-stop="524.647000"><strong class="speaker-name">Sacha:</strong>  Yeah, this is great.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="524.667000" data-stop="526.990000">So even things like <code>setopt</code>… Then you have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="527.155000" data-stop="532.333000"><code>keymap-set</code>. You’ve got some replacements</span> <span class="audio-time caption" data-speaker="Sacha" data-start="532.334000" data-stop="535.633000">for these modern niceties to make it still work</span> <span class="audio-time caption" data-speaker="Sacha" data-start="535.634000" data-stop="538.233000">in Emacs 28.</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="538.234000" data-stop="541.500000"><strong class="speaker-name">Ross:</strong>  Yeah, I leaned into the new keybindings.</span> <span class="audio-time caption" data-speaker="Ross" data-start="541.501000" data-stop="543.655000">There’s <code>keymap-set</code>, <code>keymap-global-set</code>,</span> <span class="audio-time caption" data-speaker="Ross" data-start="543.675000" data-stop="547.467000"><code>keymap-global-unset</code>. Those are roughly the same as</span> <span class="audio-time caption" data-speaker="Ross" data-start="547.468000" data-stop="549.367000">what you had in older Emacs versions</span> <span class="audio-time caption" data-speaker="Ross" data-start="549.368000" data-stop="551.667000">but you don't need to pass the keyboard macro</span> <span class="audio-time caption" data-speaker="Ross" data-start="551.668000" data-stop="554.648000">around all the things, so it's a little bit more concise.</span> <span class="audio-time caption" data-speaker="Ross" data-start="554.881000" data-stop="556.645000">There were a few more advantages to it and I'd</span> <span class="audio-time caption" data-speaker="Ross" data-start="556.685000" data-stop="559.029000">already been on Emacs 29 or Emacs 30</span> <span class="audio-time caption" data-speaker="Ross" data-start="559.030000" data-stop="559.993000">everywhere else.</span> <span class="audio-time caption" data-speaker="Ross" data-start="560.013000" data-stop="562.137000">I'd already leaned into those, and then I got</span> <span class="audio-time caption" data-speaker="Ross" data-start="562.198000" data-stop="563.039000">into this environment.</span> <span class="audio-time caption" data-speaker="Ross" data-start="564.342000" data-stop="566.307000">But as you can see, they're fairly easy.</span> <span class="audio-time caption" data-speaker="Ross" data-start="566.367000" data-stop="568.692000">This is not a 100% full fidelity.</span> <span class="audio-time caption" data-speaker="Ross" data-start="568.712000" data-stop="571.558000">There's a few nuances that get missed in doing this,</span> <span class="audio-time caption" data-speaker="Ross" data-start="571.559000" data-stop="573.463000">but for the most part, it works pretty well.</span> <span class="audio-time caption" data-speaker="Ross" data-start="575.536000" data-stop="577.199000">I'm not aiming for perfect here.</span> <span class="audio-time caption" data-speaker="Ross" data-start="577.299000" data-stop="580.003000">I'm aiming for "this works well enough at Emacs 28</span> <span class="audio-time caption" data-speaker="Ross" data-start="580.264000" data-stop="582.066000">for the life of this project, which should last</span> <span class="audio-time caption" data-speaker="Ross" data-start="582.127000" data-stop="582.687000">about a month."</span> <span class="audio-time caption" data-speaker="Ross" data-start="582.788000" data-stop="585.592000">And otherwise, I've got the nice full glory Emacs</span> <span class="audio-time caption" data-speaker="Ross" data-start="585.652000" data-stop="586.714000">for my daily driver.</span> <span class="audio-time caption" data-speaker="Ross" data-start="587.535000" data-stop="590.239000">It's straddling that divide fairly well.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="590.259000" data-stop="594.566000"><strong class="speaker-name">Sacha:</strong>  I just looked up when Emacs 28 was released.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="594.606000" data-stop="597.291000">This is 2022, so four years ago.</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="597.912000" data-stop="598.172000"><strong class="speaker-name">Ross:</strong>  Yes.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="598.653000" data-stop="600.556000"><strong class="speaker-name">Sacha:</strong>  A lot of Emacs has changed since then.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="600.736000" data-stop="602.539000">But of course, Emacs being Emacs,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="603.363000" data-stop="605.747000">there's a lot of effort put into making sure the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="605.847000" data-stop="609.232000">old stuff keeps working, which is handy for these cases.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="609.993000" data-stop="610.574000">That's great.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="612.000000">10:12</span> <strong>simple-orderless
</strong></div><p></p><a href="https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/emacs-chat-26-ross-a-baker-00-11-23-700.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/emacs-chat-26-ross-a-baker-00-11-23-700.jpg" alt="image from video 00:11:23.700" data-time="00:11:23.700"></a><span class="audio-time caption" data-speaker="Sacha" data-start="612.276000" data-stop="614.479000"><strong class="speaker-name">Sacha:</strong> So you have a lot of these shims,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="614.480000" data-stop="616.483000">and one of the things that you've ended up</span> <span class="audio-time caption" data-speaker="Sacha" data-start="616.843000" data-stop="621.530000">re-implementing along these ways is a version of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="621.650000" data-stop="623.894000">orderless that works without having to take the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="623.954000" data-stop="625.356000">entire orderless package in there.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="625.676000" data-stop="627.639000">Can you tell us a little bit more about what you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="627.679000" data-stop="628.881000">like about your setup?</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="630.447000" data-stop="633.912000"><strong class="speaker-name">Ross:</strong>  I wasn't happy with any of the</span> <span class="audio-time caption" data-speaker="Ross" data-start="634.513000" data-stop="636.496000">built-in completion styles.</span> <span class="audio-time caption" data-speaker="Ross" data-start="636.516000" data-stop="639.220000">Well, some of them are okay, but the overall...</span> <span class="audio-time caption" data-speaker="Ross" data-start="639.221000" data-stop="641.945000">I had used orderless in my more extensive config.</span> <span class="audio-time caption" data-speaker="Ross" data-start="642.466000" data-stop="644.889000">Orderless, for people who don't know, is a way</span> <span class="audio-time caption" data-speaker="Ross" data-start="644.949000" data-stop="645.831000">of completing things.</span> <span class="audio-time caption" data-speaker="Ross" data-start="645.931000" data-stop="647.153000">Let's see if I can show it off.</span> <span class="audio-time caption" data-speaker="Ross" data-start="647.293000" data-stop="655.286000">So I can do... If I do "file" and "find"...</span> <span class="audio-time caption" data-speaker="Ross" data-start="655.306000" data-stop="657.208000">Well, I thought it would work.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="657.829000" data-stop="658.851000"><strong class="speaker-name">Sacha:</strong>  Do you need a space?</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="660.772000" data-stop="661.884000"><strong class="speaker-name">Ross:</strong>  Yeah, I don't know why the space</span> <span class="audio-time caption" data-speaker="Ross" data-start="661.925000" data-stop="662.734000">wasn't completing.</span> <span class="audio-time caption" data-speaker="Ross" data-start="662.754000" data-stop="664.453000">So I can do "file".</span> <span class="audio-time caption" data-speaker="Ross" data-start="664.720000" data-stop="665.922000">"find file".</span> <span class="audio-time caption" data-speaker="Ross" data-start="666.002000" data-stop="666.743000">I could do the space.</span> <span class="audio-time caption" data-speaker="Ross" data-start="666.823000" data-stop="669.026000">I could do it in any order as well.</span> <span class="audio-time caption" data-speaker="Ross" data-start="669.046000" data-stop="671.148000">Or I saw there was an "ido" in there.</span> <span class="audio-time caption" data-speaker="Ross" data-start="671.228000" data-stop="673.151000">If I do it in reverse order, that's the idea of</span> <span class="audio-time caption" data-speaker="Ross" data-start="673.251000" data-stop="675.634000">orderless is if I'm using the space, I got thrown</span> <span class="audio-time caption" data-speaker="Ross" data-start="675.714000" data-stop="675.974000">off there.</span> <span class="audio-time caption" data-speaker="Ross" data-start="676.015000" data-stop="678.117000">It was auto-completing a hyphen on me I didn't</span> <span class="audio-time caption" data-speaker="Ross" data-start="678.157000" data-stop="678.518000">expect.</span> <span class="audio-time caption" data-speaker="Ross" data-start="679.139000" data-stop="681.081000">Anyway, if I remember some tokens and things,</span> <span class="audio-time caption" data-speaker="Ross" data-start="681.101000" data-stop="683.664000">let’s say I’m looking for <code>ido-find-file</code>, but I</span> <span class="audio-time caption" data-speaker="Ross" data-start="683.704000" data-stop="685.266000">type "find" first and then I do...</span> <span class="audio-time caption" data-speaker="Ross" data-start="685.387000" data-stop="689.211000">What orderless does is it takes the input and it</span> <span class="audio-time caption" data-speaker="Ross" data-start="689.252000" data-stop="690.272000">splits it by space</span> <span class="audio-time caption" data-speaker="Ross" data-start="690.273000" data-stop="691.855000">and it will find them in any order.</span> <span class="audio-time caption" data-speaker="Ross" data-start="692.716000" data-stop="695.300000">It's a nicer completion style than I think any of</span> <span class="audio-time caption" data-speaker="Ross" data-start="695.340000" data-stop="696.743000">the ones that come out of the box are.</span> <span class="audio-time caption" data-speaker="Ross" data-start="696.903000" data-stop="698.325000">I got used to it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="698.345000" data-stop="700.167000">But if I'm in this lean config,</span> <span class="audio-time caption" data-speaker="Ross" data-start="700.168000" data-stop="701.210000">orderless is something...</span> <span class="audio-time caption" data-speaker="Ross" data-start="701.230000" data-stop="702.252000">It is not a built-in.</span> <span class="audio-time caption" data-speaker="Ross" data-start="702.292000" data-stop="704.095000">That's something that I was leaving behind.</span> <span class="audio-time caption" data-speaker="Ross" data-start="704.115000" data-stop="706.879000">That was one that was really starting to itch.</span> <span class="audio-time caption" data-speaker="Ross" data-start="706.899000" data-stop="709.363000">Then I found this blog post by James Dyer</span> <span class="audio-time caption" data-speaker="Ross" data-start="709.404000" data-stop="711.968000">where he'd implemented a very slimmed-down</span> <span class="audio-time caption" data-speaker="Ross" data-start="712.008000" data-stop="713.931000">version of orderless.</span> <span class="audio-time caption" data-speaker="Ross" data-start="713.911000" data-stop="715.912000">It wasn't the full features that you get,</span> <span class="audio-time caption" data-speaker="Ross" data-start="715.913000" data-stop="717.614000">but it was something that was good enough</span> <span class="audio-time caption" data-speaker="Ross" data-start="717.615000" data-stop="720.819000">that captured the basic principles of it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="720.839000" data-stop="721.560000">I took that.</span> <span class="audio-time caption" data-speaker="Ross" data-start="721.620000" data-stop="722.841000">I found a few bugs in it,</span> <span class="audio-time caption" data-speaker="Ross" data-start="722.842000" data-stop="724.043000">and I found a few more things.</span> <span class="audio-time caption" data-speaker="Ross" data-start="724.163000" data-stop="726.807000">It was a very, very simple version of orderless,</span> <span class="audio-time caption" data-speaker="Ross" data-start="726.827000" data-stop="728.649000">and I wanted a couple more bells and whistles.</span> <span class="audio-time caption" data-speaker="Ross" data-start="728.669000" data-stop="730.851000">The completions weren't quite right to my tastes.</span> <span class="audio-time caption" data-speaker="Ross" data-start="731.372000" data-stop="732.513000">I took that blog post.</span> <span class="audio-time caption" data-speaker="Ross" data-start="732.553000" data-stop="733.655000">I ended up with a middle ground.</span> <span class="audio-time caption" data-speaker="Ross" data-start="733.695000" data-stop="735.836000">It's not as good as the full orderless,</span> <span class="audio-time caption" data-speaker="Ross" data-start="735.837000" data-stop="737.438000">and it's a little bit more extensive</span> <span class="audio-time caption" data-speaker="Ross" data-start="737.439000" data-stop="739.682000">than the blog post that I found.</span> <span class="audio-time caption" data-speaker="Ross" data-start="739.662000" data-stop="741.324000">But I'm able to run that,</span> <span class="audio-time caption" data-speaker="Ross" data-start="741.325000" data-stop="742.867000">and I don't really miss</span> <span class="audio-time caption" data-speaker="Ross" data-start="742.868000" data-stop="744.851000">the full features of orderless that much.</span> <span class="audio-time caption" data-speaker="Ross" data-start="745.252000" data-stop="747.316000">There are all sorts of cool things that it does</span> <span class="audio-time caption" data-speaker="Ross" data-start="747.376000" data-stop="750.301000">where you can say, okay, these are regexp tokens.</span> <span class="audio-time caption" data-speaker="Ross" data-start="750.361000" data-stop="751.703000">These are literal tokens.</span> <span class="audio-time caption" data-speaker="Ross" data-start="751.804000" data-stop="754.028000">These are NOT filters.</span> <span class="audio-time caption" data-speaker="Ross" data-start="754.048000" data-stop="756.151000">You could do all sorts of combinatorial logic</span> <span class="audio-time caption" data-speaker="Ross" data-start="756.211000" data-stop="757.754000">with it with various syntax.</span> <span class="audio-time caption" data-speaker="Ross" data-start="757.774000" data-stop="759.898000">You can customize the syntax for it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="760.334000" data-stop="762.858000">It's all great, but I wasn't using those extended</span> <span class="audio-time caption" data-speaker="Ross" data-start="762.898000" data-stop="765.222000">features of that package that much. I am happy</span> <span class="audio-time caption" data-speaker="Ross" data-start="765.262000" data-stop="767.205000">with this lighter-weight version. That way</span> <span class="audio-time caption" data-speaker="Ross" data-start="767.245000" data-stop="769.789000">I'm able to use it even when I'm off here in the</span> <span class="audio-time caption" data-speaker="Ross" data-start="769.850000" data-stop="770.931000">security sandbox.</span> <span class="audio-time caption" data-speaker="Ross" data-start="770.971000" data-stop="772.233000">I'm able to do it there too.</span> <span class="audio-time caption" data-speaker="Ross" data-start="773.095000" data-stop="775.177000">It exposes the underlying tension</span> <span class="audio-time caption" data-speaker="Ross" data-start="775.178000" data-stop="776.841000">of this setup.</span> <span class="audio-time caption" data-speaker="Ross" data-start="777.023000" data-stop="779.366000">I would recommend 100% use orderless.</span> <span class="audio-time caption" data-speaker="Ross" data-start="779.426000" data-stop="780.367000">It's better maintained.</span> <span class="audio-time caption" data-speaker="Ross" data-start="780.387000" data-stop="781.949000">The maintainer is a lovely person.</span> <span class="audio-time caption" data-speaker="Ross" data-start="782.409000" data-stop="783.511000">It's more full-featured.</span> <span class="audio-time caption" data-speaker="Ross" data-start="783.531000" data-stop="784.712000">You can customize it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="784.732000" data-stop="786.593000">I ran into a little bit of a hiccup here</span> <span class="audio-time caption" data-speaker="Ross" data-start="786.594000" data-stop="787.836000">and it's my own config.</span> <span class="audio-time caption" data-speaker="Ross" data-start="788.697000" data-stop="791.079000">This is something, it's going to be more</span> <span class="audio-time caption" data-speaker="Ross" data-start="791.119000" data-stop="792.481000">professionally maintained if you're using</span> <span class="audio-time caption" data-speaker="Ross" data-start="792.561000" data-stop="792.962000">orderless.</span> <span class="audio-time caption" data-speaker="Ross" data-start="792.982000" data-stop="794.322000">So if you're not adapting</span> <span class="audio-time caption" data-speaker="Ross" data-start="794.323000" data-stop="796.885000">to my built-ins only method,</span> <span class="audio-time caption" data-speaker="Ross" data-start="796.886000" data-stop="800.230000">I would 100% recommend using orderless instead.</span> <span class="audio-time caption" data-speaker="Ross" data-start="800.210000" data-stop="801.972000">But because I have this constraint,</span> <span class="audio-time caption" data-speaker="Ross" data-start="801.973000" data-stop="802.894000">I'm building this up.</span> <span class="audio-time caption" data-speaker="Ross" data-start="803.395000" data-stop="804.657000">What I built up is kind of nice.</span> <span class="audio-time caption" data-speaker="Ross" data-start="804.697000" data-stop="806.018000">It's one of the more interesting parts</span> <span class="audio-time caption" data-speaker="Ross" data-start="806.019000" data-stop="808.143000">of my package, or of my config.</span> <span class="audio-time caption" data-speaker="Ross" data-start="808.303000" data-stop="810.125000">I could spin it off as its own package,</span> <span class="audio-time caption" data-speaker="Ross" data-start="810.126000" data-stop="812.008000">but if I spun it off as its own package,</span> <span class="audio-time caption" data-speaker="Ross" data-start="812.009000" data-stop="814.312000">it's just a strictly worse version of orderless</span> <span class="audio-time caption" data-speaker="Ross" data-start="814.313000" data-stop="817.338000">at that point, so what's the point?</span> <span class="audio-time caption" data-speaker="Ross" data-start="817.358000" data-stop="818.820000">That's one of the tensions that you have in these</span> <span class="audio-time caption" data-speaker="Ross" data-start="818.860000" data-stop="821.144000">built-ins, is anytime that you build something</span> <span class="audio-time caption" data-speaker="Ross" data-start="821.204000" data-stop="823.227000">that is really interesting, you want to spin it</span> <span class="audio-time caption" data-speaker="Ross" data-start="823.328000" data-stop="825.030000">off and share it, but at that point, you've</span> <span class="audio-time caption" data-speaker="Ross" data-start="825.070000" data-stop="827.314000">defeated the purpose of being built-ins only.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="829.117000" data-stop="834.905000"><strong class="speaker-name">Sacha:</strong>  I think the idea then of looking at</span> <span class="audio-time caption" data-speaker="Sacha" data-start="834.925000" data-stop="837.008000">the packages that you really like and if you find</span> <span class="audio-time caption" data-speaker="Sacha" data-start="837.048000" data-stop="838.570000">that you're only using a subset of their</span> <span class="audio-time caption" data-speaker="Sacha" data-start="838.590000" data-stop="841.534000">functionality, being able to strip it down or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="841.634000" data-stop="843.276000">take advantage of somebody else's work and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="843.316000" data-stop="845.740000">stripping it down to the subset that you use</span> <span class="audio-time caption" data-speaker="Sacha" data-start="846.240000" data-stop="848.403000">makes it a lot easier for you to put it all</span> <span class="audio-time caption" data-speaker="Sacha" data-start="848.423000" data-stop="851.187000">together in your batteries included, built-in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="851.908000" data-stop="853.050000">only configuration.</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="854.131000" data-stop="854.652000"><strong class="speaker-name">Ross:</strong>  Right.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="854.800000" data-stop="855.824000"><strong class="speaker-name">Sacha:</strong>  It's not super long.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="856.105000" data-stop="858.353000">It can be understood if you go through the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="858.393000" data-stop="858.774000">function.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="859.236000" data-stop="860.460000">So that's great.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="861.825000" data-stop="863.813000">Are there other things like that that you find</span> <span class="audio-time caption" data-speaker="Sacha" data-start="863.853000" data-stop="867.004000">yourself wanting to extract from other packages?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="869.000000">14:29</span> <strong>Size indicator</strong></div><p></p><span class="audio-time caption" data-speaker="Ross" data-start="869.245000" data-stop="870.967000"><strong class="speaker-name">Ross:</strong>  I did this really weird little</span> <span class="audio-time caption" data-speaker="Ross" data-start="871.028000" data-stop="873.171000">thing called size indicator mode.</span> <span class="audio-time caption" data-speaker="Ross" data-start="873.391000" data-stop="874.573000">I'd already spun that off.</span> <span class="audio-time caption" data-speaker="Ross" data-start="874.673000" data-stop="876.375000">I don't know if it was worthwhile or not.</span> <span class="audio-time caption" data-speaker="Ross" data-start="877.076000" data-stop="880.021000">One thing is all of your list commands, they run</span> <span class="audio-time caption" data-speaker="Ross" data-start="880.121000" data-stop="883.025000">things in binary bytes.</span> <span class="audio-time caption" data-speaker="Ross" data-start="883.185000" data-stop="885.569000">When we say a kilobyte, what does a kilobyte mean?</span> <span class="audio-time caption" data-speaker="Ross" data-start="885.589000" data-stop="889.775000">Does that mean 1,000 bytes or 1,024 bytes?</span> <span class="audio-time caption" data-speaker="Ross" data-start="889.895000" data-stop="891.577000">Most of the commands that you run, they're going</span> <span class="audio-time caption" data-speaker="Ross" data-start="891.617000" data-stop="895.523000">to be in these binary units.</span> <span class="audio-time caption" data-speaker="Ross" data-start="896.752000" data-stop="899.459000">What you get out of the box in Emacs is</span> <span class="audio-time caption" data-speaker="Ross" data-start="899.460000" data-stop="903.067000">the decimal unit. Their definition is 1000 instead</span> <span class="audio-time caption" data-speaker="Ross" data-start="903.068000" data-stop="906.700000">of 1024. I thought, well, that's kind of weird.</span> <span class="audio-time caption" data-speaker="Ross" data-start="906.701000" data-stop="909.667000">I built this size-indicator-mode where it goes</span> <span class="audio-time caption" data-speaker="Ross" data-start="909.668000" data-stop="912.300000">and it translates things so it's unified across</span> <span class="audio-time caption" data-speaker="Ross" data-start="912.301000" data-stop="915.133000">the way the coreutils work. It's the 1024 base</span> <span class="audio-time caption" data-speaker="Ross" data-start="915.134000" data-stop="916.400000">instead of the 1000 base.</span> <span class="audio-time caption" data-speaker="Ross" data-start="916.401000" data-stop="918.933000">Trivial little package, but it was a lot of fun</span> <span class="audio-time caption" data-speaker="Ross" data-start="918.934000" data-stop="920.767000">I threw it out there. It's up on my Codeberg</span> <span class="audio-time caption" data-speaker="Ross" data-start="920.768000" data-stop="922.422000">if anybody wants to pull that in.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="923.718000" data-stop="925.861000"><strong class="speaker-name">Sacha:</strong>  Yeah, so it just reduces the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="925.921000" data-stop="928.666000">friction of having to think, okay, is this in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="928.746000" data-stop="930.448000">this unit or is that unit?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="930.468000" data-stop="932.411000">It'll always be in the units that you like to use</span> <span class="audio-time caption" data-speaker="Sacha" data-start="932.451000" data-stop="934.595000">when you're talking about files.</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="934.615000" data-stop="935.516000"><strong class="speaker-name">Ross:</strong>  Exactly, yeah.</span> <span class="audio-time caption" data-speaker="Ross" data-start="935.556000" data-stop="937.179000">It keeps things consistent that way.</span> <span class="audio-time caption" data-speaker="Ross" data-start="937.199000" data-stop="938.761000">That's a package that I spun off.</span> <span class="audio-time caption" data-speaker="Ross" data-start="938.821000" data-stop="939.822000">Is that something that...</span> <span class="audio-time caption" data-speaker="Ross" data-start="939.823000" data-stop="941.505000">It's a very lightweight configuration.</span> <span class="audio-time caption" data-speaker="Ross" data-start="941.525000" data-stop="942.846000">It probably could have stayed here</span> <span class="audio-time caption" data-speaker="Ross" data-start="942.847000" data-stop="943.669000">in my built-ins.</span> <span class="audio-time caption" data-speaker="Ross" data-start="944.129000" data-stop="945.751000">I doubt anybody else has that itch,</span> <span class="audio-time caption" data-speaker="Ross" data-start="945.752000" data-stop="946.512000">but I shared it out there</span> <span class="audio-time caption" data-speaker="Ross" data-start="946.513000" data-stop="947.975000">and a lot of people thought, ooh, neat.</span> <span class="audio-time caption" data-speaker="Ross" data-start="947.995000" data-stop="949.598000">I think a few people did install it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="949.618000" data-stop="951.801000">I'm glad I spun that one off, I suppose.</span> <span class="audio-time caption" data-speaker="Ross" data-start="952.253000" data-stop="953.756000">There's always that fuzzy line.</span> <span class="audio-time caption" data-speaker="Ross" data-start="953.797000" data-stop="955.460000">Where does it grow into something that you think</span> <span class="audio-time caption" data-speaker="Ross" data-start="955.521000" data-stop="957.686000">other people are going to be interested in, versus</span> <span class="audio-time caption" data-speaker="Ross" data-start="957.726000" data-stop="959.169000">what are the ones that you should just keep</span> <span class="audio-time caption" data-speaker="Ross" data-start="959.289000" data-stop="961.414000">in-house and they can always copy it out of your</span> <span class="audio-time caption" data-speaker="Ross" data-start="961.434000" data-stop="962.577000">config if they're interested?</span> <span class="audio-time caption" data-speaker="Ross" data-start="963.419000" data-stop="965.203000">It's a hard line to walk in this style.</span> <span class="audio-time caption" data-speaker="Ross" data-start="965.223000" data-stop="967.749000">I haven't exactly found the balance yet, I don't</span> <span class="audio-time caption" data-speaker="Ross" data-start="967.789000" data-stop="968.170000">think.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="968.892000" data-stop="970.614000"><strong class="speaker-name">Sacha:</strong>  A lot of your config isn't so much</span> <span class="audio-time caption" data-speaker="Sacha" data-start="972.256000" data-stop="974.517000">new functionality as it is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="974.518000" data-stop="975.919000">just filing off the corners</span> <span class="audio-time caption" data-speaker="Sacha" data-start="975.920000" data-stop="978.603000">or making something a little bit nicer to use.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="979.624000" data-stop="981.326000">For example, when I was going through your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="981.987000" data-stop="984.329000">config, both the base config as well as the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="984.369000" data-stop="986.131000">extended one where you have more packages and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="986.151000" data-stop="989.275000">things set up, I was like, oh yeah, okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="989.836000" data-stop="992.639000">You fiddle with your visual-bell, but you also,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="993.299000" data-stop="994.540000">in your extended config,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="994.541000" data-stop="996.163000">set it to mode-line-bell instead.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="996.323000" data-stop="998.375000">That sounds interesting.</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="999.357000" data-stop="999.637000"><strong class="speaker-name">Ross:</strong>  Right.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1000.000000">16:40</span> <strong>Graceful degradation</strong></div><p></p><span class="audio-time caption" data-speaker="Ross" data-start="1000.719000" data-stop="1004.344000"><strong class="speaker-name">Ross:</strong> I go for graceful degradation. When I was doing</span> <span class="audio-time caption" data-speaker="Ross" data-start="1004.424000" data-stop="1007.128000">web pages as far back as the 90s,</span> <span class="audio-time caption" data-speaker="Ross" data-start="1007.168000" data-stop="1008.408000">when I was first into Emacs,</span> <span class="audio-time caption" data-speaker="Ross" data-start="1008.409000" data-stop="1010.191000">everything was about graceful degradation</span> <span class="audio-time caption" data-speaker="Ross" data-start="1010.192000" data-stop="1012.515000">as you had these new browser features.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1012.535000" data-stop="1014.758000">You're trying to use these new shiny things.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1014.959000" data-stop="1015.459000">I'm old enough.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1015.499000" data-stop="1017.462000">I've been doing web pages since before there were</span> <span class="audio-time caption" data-speaker="Ross" data-start="1017.502000" data-stop="1018.744000">cascading style sheets.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1018.764000" data-stop="1021.167000">But anyway, as we were starting to do CSS and as</span> <span class="audio-time caption" data-speaker="Ross" data-start="1021.207000" data-stop="1022.810000">we were starting to do JavaScript, it was all</span> <span class="audio-time caption" data-speaker="Ross" data-start="1022.850000" data-stop="1024.531000">about progressive enhancement:</span> <span class="audio-time caption" data-speaker="Ross" data-start="1024.512000" data-stop="1026.616000">do the shiny things for the browsers that can</span> <span class="audio-time caption" data-speaker="Ross" data-start="1026.675000" data-stop="1029.320000">support it, but also have this nice baseline of</span> <span class="audio-time caption" data-speaker="Ross" data-start="1029.361000" data-stop="1031.965000">functionality for those that can't. I've tried</span> <span class="audio-time caption" data-speaker="Ross" data-start="1031.986000" data-stop="1035.292000">to do that with this base level config.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1035.473000" data-stop="1037.958000">I've got the visual-bell that's built into Emacs</span> <span class="audio-time caption" data-speaker="Ross" data-start="1038.018000" data-stop="1039.681000">and it flashes the screen. It puts up this</span> <span class="audio-time caption" data-speaker="Ross" data-start="1039.800000" data-stop="1041.864000">annoying triangle sign.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1041.865000" data-stop="1043.568000">I don't like that that much.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1043.569000" data-stop="1046.875000">This one, if I can make the bell ring...</span> <span class="audio-time caption" data-speaker="Ross" data-start="1047.412000" data-stop="1048.574000">Oh, this would make the bell ring.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1049.496000" data-stop="1050.137000">Why is it not?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1050.498000" data-stop="1052.282000"><strong class="speaker-name">Sacha:</strong>  I guess <code>C-g</code> doesn’t just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1052.322000" data-stop="1053.384000">automatically make it...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1053.745000" data-stop="1056.150000">Oh, <code>C-g</code> works for me, so I don’t know.</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="1056.230000" data-stop="1058.234000"><strong class="speaker-name">Ross:</strong>  It usually works for me, too.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1058.314000" data-stop="1061.079000">I don't know why it's not triggering a bell here.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1063.284000" data-stop="1063.805000"><strong class="speaker-name">Sacha:</strong>  That's OK.</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="1064.807000" data-stop="1065.669000"><strong class="speaker-name">Ross:</strong>  Curse of the demo.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1066.130000" data-stop="1066.350000"><strong class="speaker-name">Sacha:</strong>  Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1066.370000" data-stop="1067.833000">Anyone interested can go look it up.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1068.000000">17:48</span> <strong>emacs-lock-mode
</strong></div><p></p><a href="https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/emacs-chat-26-ross-a-baker-00-19-01-733.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/emacs-chat-26-ross-a-baker-00-19-01-733.jpg" alt="image from video 00:19:01.733" data-time="00:19:01.733"></a><span class="audio-time caption" data-speaker="Sacha" data-start="1068.860000" data-stop="1071.006000"><strong class="speaker-name">Sacha:</strong> Then you have a couple of other things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1071.067000" data-stop="1074.256000">around, for example, making it easier to not kill</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1074.316000" data-stop="1077.565000">a buffer. I hadn't known about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1077.566000" data-stop="1078.870000"><code>emacs-lock-mode</code> either.</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="1079.070000" data-stop="1080.996000"><strong class="speaker-name">Ross:</strong>  Oh yes, Emacs lock.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1085.785000" data-stop="1088.532000">Yeah, so there’s this <code>emacs-lock-mode</code></span> <span class="audio-time caption" data-speaker="Ross" data-start="1088.533000" data-stop="1089.557000">and it is not the same.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1089.657000" data-stop="1092.084000">It's easy to confuse this with the lock files.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1092.105000" data-stop="1095.395000">You know those files that you get the hash signs,</span> <span class="audio-time caption" data-speaker="Ross" data-start="1095.415000" data-stop="1099.086000">like you get ".#name-of-the-file#".</span> <span class="audio-time caption" data-speaker="Ross" data-start="1099.353000" data-stop="1101.816000">That's something from when Emacs was used more on</span> <span class="audio-time caption" data-speaker="Ross" data-start="1101.896000" data-stop="1103.218000">multi-user environments.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1103.258000" data-stop="1106.202000">Whenever you had a modified file, it would create</span> <span class="audio-time caption" data-speaker="Ross" data-start="1106.242000" data-stop="1108.425000">these lock files, and it would prevent two users</span> <span class="audio-time caption" data-speaker="Ross" data-start="1108.465000" data-stop="1110.608000">who were editing the same file on their own Emacs</span> <span class="audio-time caption" data-speaker="Ross" data-start="1111.128000" data-stop="1112.350000">from stepping over each other.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1112.911000" data-stop="1114.994000">How often in modern times are we working on a</span> <span class="audio-time caption" data-speaker="Ross" data-start="1115.034000" data-stop="1116.055000">multi-user system?</span> <span class="audio-time caption" data-speaker="Ross" data-start="1116.075000" data-stop="1118.318000">If it is a multi-user system, are they both</span> <span class="audio-time caption" data-speaker="Ross" data-start="1118.418000" data-stop="1120.000000">using Emacs on the same file?</span> <span class="audio-time caption" data-speaker="Ross" data-start="1120.080000" data-stop="1122.063000">That's something that was very important in the</span> <span class="audio-time caption" data-speaker="Ross" data-start="1122.123000" data-stop="1124.466000">late 90s and is not very important now.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1124.868000" data-stop="1126.430000">This is not those file locks.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1126.510000" data-stop="1128.632000">This is a buffer locking,</span> <span class="audio-time caption" data-speaker="Ross" data-start="1128.633000" data-stop="1130.376000">and with the scratch buffer...</span> <span class="audio-time caption" data-speaker="Ross" data-start="1130.636000" data-stop="1132.920000">I've got this turned on.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1132.940000" data-stop="1133.561000">Evaluate it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1133.841000" data-stop="1135.443000">Make sure it worked.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1135.463000" data-stop="1137.146000">Let's go to our scratch buffer.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1137.446000" data-stop="1138.628000">Here's my scratch buffer.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1138.708000" data-stop="1140.711000">I don't want to accidentally kill it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1140.731000" data-stop="1142.713000">If I try to kill it, it's going to say</span> <span class="audio-time caption" data-speaker="Ross" data-start="1142.714000" data-stop="1144.857000">"Buffer *scratch​* is locked and cannot be killed."</span> <span class="audio-time caption" data-speaker="Ross" data-start="1145.618000" data-stop="1149.103000">I'll use this for notes all over the place.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1150.771000" data-stop="1153.454000">I've accidentally killed things too many times.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1153.494000" data-stop="1156.176000">The scratch buffer is not typically backed by a</span> <span class="audio-time caption" data-speaker="Ross" data-start="1156.256000" data-stop="1158.999000">file, and I've lost too many things.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1159.019000" data-stop="1162.122000">This way, I know this scratch buffer is always</span> <span class="audio-time caption" data-speaker="Ross" data-start="1162.182000" data-stop="1163.924000">going to be a persistent place.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1164.404000" data-stop="1165.365000">There are other approaches to it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1165.385000" data-stop="1167.147000">I think there’s a <code>persistent-scratch</code> package</span> <span class="audio-time caption" data-speaker="Ross" data-start="1167.167000" data-stop="1167.667000">that's out there.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1167.687000" data-stop="1169.829000">But again, that gets me out of the built-in zone.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1169.949000" data-stop="1171.531000">That might be a progressive enhancement,</span> <span class="audio-time caption" data-speaker="Ross" data-start="1171.551000" data-stop="1173.513000">something that takes your scratch buffer and</span> <span class="audio-time caption" data-speaker="Ross" data-start="1173.553000" data-stop="1174.514000">backs it with a file.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1174.534000" data-stop="1175.875000">That would probably be a good thing to do.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1175.975000" data-stop="1177.557000">So that's one of the packages I'll be looking at</span> <span class="audio-time caption" data-speaker="Ross" data-start="1177.657000" data-stop="1178.938000">adding in the other config.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1179.121000" data-stop="1181.087000">But emacs-lock is built in.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1181.107000" data-stop="1182.793000">It's one of those things that's so obscure you</span> <span class="audio-time caption" data-speaker="Ross" data-start="1182.833000" data-stop="1184.699000">can't even find it in the Emacs manual.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1185.301000" data-stop="1186.064000">It's just out there.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1186.084000" data-stop="1187.107000">I don't remember where I picked it up.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1187.127000" data-stop="1189.154000">I think just scanning somebody else's config I</span> <span class="audio-time caption" data-speaker="Ross" data-start="1189.174000" data-stop="1190.900000">picked it up somewhere, but I couldn't find it in</span> <span class="audio-time caption" data-speaker="Ross" data-start="1190.940000" data-stop="1191.983000">the manual at all.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1192.000000">19:52</span> <strong>exiting Emacs: yes-or-no-p</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1192.334000" data-stop="1194.177000"><strong class="speaker-name">Sacha:</strong>  I was going to ask you where you found it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1194.217000" data-stop="1196.381000">You occasionally read other people's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1196.441000" data-stop="1198.926000">configurations for interesting ideas.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1200.529000" data-stop="1205.177000">And then you have a bunch of niceties.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1206.279000" data-stop="1207.400000">Actually, before I go into that,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1207.401000" data-stop="1208.924000">@Ray-On-Emacs has a question.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1208.944000" data-stop="1210.447000">"How do you exit Emacs then?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1210.507000" data-stop="1214.293000">Or do you never exit Emacs?"</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="1214.754000" data-stop="1216.317000"><strong class="speaker-name">Ross:</strong>  I almost never exit it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1216.803000" data-stop="1219.108000"><strong class="speaker-name">Sacha:</strong>  I think the <code>emacs-lock-mode</code> for the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1219.128000" data-stop="1222.135000">Scratch doesn't kick in if you're closing Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1222.376000" data-stop="1222.877000">as a whole?</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="1223.940000" data-stop="1224.721000"><strong class="speaker-name">Ross:</strong>  Correct.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1224.741000" data-stop="1226.145000"><strong class="speaker-name">Sacha:</strong>  If you're closing Emacs as a whole, it will</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1226.686000" data-stop="1229.312000">happily still discard your Scratch buffer, but as</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1229.372000" data-stop="1232.820000">Ross says, you could also not exit Emacs.</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="1234.066000" data-stop="1237.352000"><strong class="speaker-name">Ross:</strong>  Yeah, I've got the flippant line in</span> <span class="audio-time caption" data-speaker="Ross" data-start="1237.392000" data-stop="1238.575000">here: ¨Exit Emacs?</span> <span class="audio-time caption" data-speaker="Ross" data-start="1238.595000" data-stop="1240.499000">Surely there's been a terrible misunderstanding,¨</span> <span class="audio-time caption" data-speaker="Ross" data-start="1240.519000" data-stop="1242.723000">But I do configure the way that I do it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1242.883000" data-stop="1245.689000">I want to make sure that the confirmation of it,</span> <span class="audio-time caption" data-speaker="Ross" data-start="1245.749000" data-stop="1246.671000">it's the yes or no.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1246.000000">20:46</span> <strong>yes-or-no-p</strong></div><p></p><span class="audio-time caption" data-speaker="Ross" data-start="1246.791000" data-stop="1248.072000"><strong class="speaker-name">Ross:</strong> I don't want to accidentally hit that</span> <span class="audio-time caption" data-speaker="Ross" data-start="1248.073000" data-stop="1252.041000">key binding, so I will use the full fledged yes-or-no-p`.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1252.021000" data-stop="1254.164000">That's one area that I diverge from a lot of</span> <span class="audio-time caption" data-speaker="Ross" data-start="1254.204000" data-stop="1256.628000">people's common things. One of the very early</span> <span class="audio-time caption" data-speaker="Ross" data-start="1256.688000" data-stop="1258.551000">things a lot of people set in their config is</span> <span class="audio-time caption" data-speaker="Ross" data-start="1258.591000" data-stop="1260.773000">they’ll rebind this <code>yes-or-no-p</code></span> <span class="audio-time caption" data-speaker="Ross" data-start="1260.774000" data-stop="1264.079000">to the <code>y-or-n-p</code> so that way, they only have to type</span> <span class="audio-time caption" data-speaker="Ross" data-start="1264.119000" data-stop="1265.661000">the one character.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1265.681000" data-stop="1268.025000">Emacs is fairly thoughtful about which ones that</span> <span class="audio-time caption" data-speaker="Ross" data-start="1268.065000" data-stop="1270.969000">it makes you do "yes" or "no" versus the "y" or "n". The</span> <span class="audio-time caption" data-speaker="Ross" data-start="1271.009000" data-stop="1273.172000">things that are quick and inconsequential, those</span> <span class="audio-time caption" data-speaker="Ross" data-start="1273.213000" data-stop="1274.815000">are the ones where it gives you the prompt that</span> <span class="audio-time caption" data-speaker="Ross" data-start="1274.835000" data-stop="1276.898000">it's just a "y" or "n" answer.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1276.878000" data-stop="1278.540000">The ones that are going to be more</span> <span class="audio-time caption" data-speaker="Ross" data-start="1278.600000" data-stop="1280.682000">destructive and you really want to stop and slow</span> <span class="audio-time caption" data-speaker="Ross" data-start="1280.722000" data-stop="1282.002000">down and think about, that's what the</span> <span class="audio-time caption" data-speaker="Ross" data-start="1282.003000" data-stop="1282.984000"><code>yes-or-no-p</code> is for.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1283.445000" data-stop="1285.767000">People stomp all over that in their configs,</span> <span class="audio-time caption" data-speaker="Ross" data-start="1285.787000" data-stop="1287.589000">and I think that's one area where I'm a little</span> <span class="audio-time caption" data-speaker="Ross" data-start="1287.649000" data-stop="1289.151000">bit out of the mainstream.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1289.291000" data-stop="1291.333000">I like the defaults on Emacs there.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1291.834000" data-stop="1293.676000">It is thoughtful about which ones it prompts you</span> <span class="audio-time caption" data-speaker="Ross" data-start="1293.716000" data-stop="1294.316000">for that on.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1294.897000" data-stop="1297.079000">But if I remember right, <code>confirm-kill-emacs</code> was</span> <span class="audio-time caption" data-speaker="Ross" data-start="1297.199000" data-stop="1299.181000">one that was just a "y" or "n". That's one of the</span> <span class="audio-time caption" data-speaker="Ross" data-start="1299.221000" data-stop="1300.743000">more dramatic ones that's out there.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1301.484000" data-stop="1304.086000">So I did customize that to make sure, yes, I</span> <span class="audio-time caption" data-speaker="Ross" data-start="1304.147000" data-stop="1305.568000">really mean that.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1305.000000">21:45</span> <strong>Processes</strong></div><p></p><span class="audio-time caption" data-speaker="Ross" data-start="1305.548000" data-stop="1307.451000"><strong class="speaker-name">Ross:</strong> Then there's some annoyances where</span> <span class="audio-time caption" data-speaker="Ross" data-start="1307.452000" data-stop="1309.374000">if you've got a bunch of inferior processes</span> <span class="audio-time caption" data-speaker="Ross" data-start="1309.375000" data-stop="1310.857000">running after I've already confirmed</span> <span class="audio-time caption" data-speaker="Ross" data-start="1310.858000" data-stop="1312.040000">that I want to kill Emacs,</span> <span class="audio-time caption" data-speaker="Ross" data-start="1312.060000" data-stop="1313.763000">well I just said I want to kill Emacs,</span> <span class="audio-time caption" data-speaker="Ross" data-start="1313.764000" data-stop="1316.087000">so I didn't want to be prompted about the processes.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1316.088000" data-stop="1319.434000">I do quit Emacs enough I've customized how it shuts</span> <span class="audio-time caption" data-speaker="Ross" data-start="1319.495000" data-stop="1322.960000">down. I don't do it that often.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1322.961000" data-stop="1325.025000"><strong class="speaker-name">Sacha:</strong>  I imagine if you really want to stop yourself from</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1325.377000" data-stop="1328.122000">closing Emacs, you might just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1329.003000" data-stop="1333.531000">change the key binding and make you M-x it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1334.052000" data-stop="1335.554000">instead in order to exit it,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1335.574000" data-stop="1337.858000">so you really absolutely don't run into that.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1338.000000">22:18</span> <strong>Moving keymaps</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1338.359000" data-stop="1341.264000"><strong class="speaker-name">Sacha:</strong> In fact, your config has some of these lambdas</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1341.364000" data-stop="1344.710000">where you are telling yourself, okay, this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1344.770000" data-stop="1346.473000">keyboard shortcut has changed.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1346.909000" data-stop="1349.115000">You have this thing in Magit, I think, where</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1349.156000" data-stop="1352.345000">you're like, I moved the key map and now</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1352.445000" data-stop="1354.411000">it's somewhere else.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1354.431000" data-stop="1355.554000">I thought that was interesting too.</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="1355.574000" data-stop="1359.265000"><strong class="speaker-name">Ross:</strong>  I'm trying to remember what that one was called.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1359.717000" data-stop="1361.440000"><strong class="speaker-name">Sacha:</strong>  There you go.</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="1362.201000" data-stop="1363.262000"><strong class="speaker-name">Ross:</strong>  Yeah, the <code>crab-juice&#45;&#45;moved-to</code>.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1363.503000" data-stop="1366.547000">I'll bind my old key map as I'm trying</span> <span class="audio-time caption" data-speaker="Ross" data-start="1366.647000" data-stop="1368.009000">to move things around.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1368.851000" data-stop="1371.094000">I used to use Spacemacs for a while.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1371.174000" data-stop="1372.797000">I used Doom Emacs for a while.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1372.837000" data-stop="1374.639000">I've looked at a lot of the other configs and</span> <span class="audio-time caption" data-speaker="Ross" data-start="1374.679000" data-stop="1377.343000">I've said, okay, this architecture makes a little</span> <span class="audio-time caption" data-speaker="Ross" data-start="1377.444000" data-stop="1378.024000">bit more sense.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1378.085000" data-stop="1381.049000">I want to rebind my prefixes that way, but still,</span> <span class="audio-time caption" data-speaker="Ross" data-start="1381.169000" data-stop="1382.712000">for the ones that are deeply ingrained,</span> <span class="audio-time caption" data-speaker="Ross" data-start="1382.932000" data-stop="1384.735000">it's sort of like a deprecation warning, except</span> <span class="audio-time caption" data-speaker="Ross" data-start="1384.775000" data-stop="1385.956000">for key bindings.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1388.202000" data-stop="1398.879000">It looks like I used to run on <code>C-c g</code>.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1398.979000" data-stop="1401.503000">So if I try to do that, it's going to say, nope,</span> <span class="audio-time caption" data-speaker="Ross" data-start="1401.624000" data-stop="1402.665000">moved to <code>C-c v c</code>.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1402.886000" data-stop="1403.747000">And now I can do that.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1403.927000" data-stop="1407.493000"><code>C-c v c</code>, and there’s my Magit command.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1408.368000" data-stop="1410.731000"><strong class="speaker-name">Sacha:</strong>  Yeah, I like that you actually</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1410.791000" data-stop="1413.114000">ended up mapping the whole keyboard shortcut</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1413.274000" data-stop="1415.697000">instead of just the <code>C-c g</code> one because, of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1415.737000" data-stop="1420.023000">course, your muscle memory is getting you to put</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1420.143000" data-stop="1423.127000">in the whole <code>C-c g</code> and then something.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1424.008000" data-stop="1429.835000">This one lets you have the full keyboard</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1429.875000" data-stop="1432.138000">shortcut before it tells you the message.</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="1434.389000" data-stop="1435.991000"><strong class="speaker-name">Ross:</strong>  This is using user error.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1436.011000" data-stop="1437.633000">So I thought when I hit that one, I thought I</span> <span class="audio-time caption" data-speaker="Ross" data-start="1437.654000" data-stop="1439.396000">would flash my mode line, but the mode line is</span> <span class="audio-time caption" data-speaker="Ross" data-start="1439.436000" data-stop="1440.117000">not flashing.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1440.217000" data-stop="1441.999000">I know it flashes on my other machine.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1442.881000" data-stop="1444.062000">It flashes on my work machine.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1444.082000" data-stop="1445.364000">It doesn't flash on this one.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1447.908000" data-stop="1449.330000"><strong class="speaker-name">Sacha:</strong>  The challenge is getting a config</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1449.370000" data-stop="1451.292000">to work in many different environments.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1451.352000" data-stop="1452.774000">You've got your work machine, you've got this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1452.814000" data-stop="1455.899000">personal machine, and then you've got the sandbox</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1456.039000" data-stop="1458.542000">one that's got a really old version of Emacs on it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1459.617000" data-stop="1461.721000">Okay, so a couple of other things that you've</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1461.782000" data-stop="1462.303000">mentioned.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1463.000000">24:23</span> <strong>Writing in Org Mode and Markdown</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1463.726000" data-stop="1467.313000"><strong class="speaker-name">Sacha:</strong> You do a lot of writing in Org Mode as well, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1467.353000" data-stop="1469.197000">You've mentioned using the literal programming</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1469.237000" data-stop="1470.901000">part of it a lot.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1470.921000" data-stop="1472.524000">You do a lot of work with Markdown.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1473.547000" data-stop="1475.812000">Do you have any interesting workflow tips for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1475.872000" data-stop="1477.816000">people who are finding themselves writing with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1477.896000" data-stop="1479.820000">either Org Mode or Markdown in a work environment?</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="1481.588000" data-stop="1484.092000"><strong class="speaker-name">Ross:</strong>  That's always a tension as well.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1484.212000" data-stop="1486.296000">I would rather be in Org Mode.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1486.356000" data-stop="1488.279000">Org Mode has more bells and whistles.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1488.359000" data-stop="1490.963000">You can program more things in it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1491.905000" data-stop="1494.709000">It's a programmable Markdown in a sense.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1495.891000" data-stop="1497.794000">I'm much more comfortable in Org Mode in general.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1497.934000" data-stop="1501.139000">Now, I don't use Org as a personal organizer as much.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1501.220000" data-stop="1501.881000">I would like to.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1501.981000" data-stop="1503.343000">I've dabbled in it a little bit.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1503.323000" data-stop="1505.046000">I've seen some of your previous interviews and</span> <span class="audio-time caption" data-speaker="Ross" data-start="1505.066000" data-stop="1506.750000">people doing mind-blowing things with that.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1506.790000" data-stop="1507.992000">I'm jealous of what they're doing.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1508.012000" data-stop="1509.455000">I would love to get to that level.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1509.956000" data-stop="1512.721000">I'm still a relative newcomer to Org versus how</span> <span class="audio-time caption" data-speaker="Ross" data-start="1513.583000" data-stop="1514.705000">old I am at Emacs.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1514.745000" data-stop="1516.429000">I'm a relative newcomer to Org.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1516.869000" data-stop="1518.913000">So I haven't embraced that yet, but I do use it</span> <span class="audio-time caption" data-speaker="Ross" data-start="1518.974000" data-stop="1521.318000">as my general, if I'm writing a document by</span> <span class="audio-time caption" data-speaker="Ross" data-start="1521.378000" data-stop="1523.863000">myself, it will 100% be in Org.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1523.843000" data-stop="1526.586000">This document that we're in, it's my entire website.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1526.606000" data-stop="1528.488000">My Emacs config is in here.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1528.688000" data-stop="1531.471000">My Nix configuration for how my systems work is</span> <span class="audio-time caption" data-speaker="Ross" data-start="1531.571000" data-stop="1531.992000">in here.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1532.733000" data-stop="1534.074000">I like to do barbecue.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1534.114000" data-stop="1536.317000">Some of my barbecue recipes are in here.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1536.997000" data-stop="1538.979000">Just general blog posts about things that have</span> <span class="audio-time caption" data-speaker="Ross" data-start="1539.040000" data-stop="1541.282000">nothing to do with technology are in here.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1542.043000" data-stop="1543.805000">It's all one big Org file.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1544.145000" data-stop="1545.967000">That style is emphasized.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1546.047000" data-stop="1549.351000">I'm using ox-hugo to take this document and export</span> <span class="audio-time caption" data-speaker="Ross" data-start="1549.391000" data-stop="1550.492000">it to the website.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1550.860000" data-stop="1554.826000">They encourage having one big large file for that.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1554.906000" data-stop="1556.388000">I followed suit on that.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1556.428000" data-stop="1559.893000">That's why I have just this one giant document.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1560.033000" data-stop="1562.717000">In the work context, if I'm starting a small</span> <span class="audio-time caption" data-speaker="Ross" data-start="1562.777000" data-stop="1564.540000">document, I'll start it in Org Mode.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1564.600000" data-stop="1566.583000">But then when I started in Org Mode, if other</span> <span class="audio-time caption" data-speaker="Ross" data-start="1566.623000" data-stop="1569.147000">people want to edit it, we got a small Emacs community,</span> <span class="audio-time caption" data-speaker="Ross" data-start="1569.167000" data-stop="1571.430000">so depending who I'm sharing it with, that might be fine.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1571.470000" data-stop="1573.393000">There's a couple people I can pair with on that.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1573.433000" data-stop="1575.255000">If I'm working with them, everything is great.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1575.356000" data-stop="1577.779000">But that's not something...</span> <span class="audio-time caption" data-speaker="Ross" data-start="1577.928000" data-stop="1580.451000">There are Org implementations that work in other</span> <span class="audio-time caption" data-speaker="Ross" data-start="1580.531000" data-stop="1582.895000">editors, but it isn't as good anywhere else as it</span> <span class="audio-time caption" data-speaker="Ross" data-start="1582.975000" data-stop="1584.056000">is in Emacs.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1584.116000" data-stop="1586.439000">That's what everybody's going to typically use.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1586.459000" data-stop="1588.202000">And if they're not using Emacs, they're not going</span> <span class="audio-time caption" data-speaker="Ross" data-start="1588.222000" data-stop="1590.605000">to be that warm to Org.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1590.905000" data-stop="1593.669000">I hate to say the dreaded two-letter acronym, but</span> <span class="audio-time caption" data-speaker="Ross" data-start="1593.709000" data-stop="1595.992000">with AI, you're seeing a lot more Markdown.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1596.132000" data-stop="1597.954000">People are starting to program in Markdown.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1597.994000" data-stop="1599.897000">Markdown is bigger than it's ever been before.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1599.977000" data-stop="1602.180000">It's just unavoidable at this point.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1602.160000" data-stop="1604.542000">So what I'll do is I'll start a document in Org</span> <span class="audio-time caption" data-speaker="Ross" data-start="1604.622000" data-stop="1606.564000">and then I can export the Org document to</span> <span class="audio-time caption" data-speaker="Ross" data-start="1606.604000" data-stop="1609.767000">Markdown if I'm going to put it into GitHub or</span> <span class="audio-time caption" data-speaker="Ross" data-start="1610.008000" data-stop="1611.189000">sometimes I'll just use Google.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1611.289000" data-stop="1613.551000">It really depends on how the collaboration model is.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1613.591000" data-stop="1615.213000">If I'm going to be collaborating with a lot of</span> <span class="audio-time caption" data-speaker="Ross" data-start="1615.253000" data-stop="1617.093000">people up front and iterating real quickly,</span> <span class="audio-time caption" data-speaker="Ross" data-start="1617.094000" data-stop="1619.817000">I'll do that in a Google Doc and I'll export that to Markdown.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1620.077000" data-stop="1621.798000">If I'm writing it myself as a first draft,</span> <span class="audio-time caption" data-speaker="Ross" data-start="1621.799000" data-stop="1623.801000">I'll start it in Org and export that to Markdown.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1624.221000" data-stop="1626.063000">Markdown ends up being the target in the</span> <span class="audio-time caption" data-speaker="Ross" data-start="1626.083000" data-stop="1628.185000">workplace for anything that's permanent though.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1628.317000" data-stop="1628.958000">I don't love it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1629.038000" data-stop="1631.724000">I wish Org had won. All my personal projects,</span> <span class="audio-time caption" data-speaker="Ross" data-start="1631.744000" data-stop="1633.647000">they'll have a README.org on them rather than</span> <span class="audio-time caption" data-speaker="Ross" data-start="1633.687000" data-stop="1636.633000">README.md, but it is what it is and you've got to</span> <span class="audio-time caption" data-speaker="Ross" data-start="1636.653000" data-stop="1638.056000">play nice with your co-workers too.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1639.298000" data-stop="1641.142000"><strong class="speaker-name">Sacha:</strong>  Yeah, I find myself having a hard</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1641.182000" data-stop="1643.385000">time remembering to switch the link syntax.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1643.386000" data-stop="1647.213000">I have a "do what I mean", just insert the link.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1647.214000" data-stop="1648.415000">I don't care what syntax it's in,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1648.416000" data-stop="1649.017000">just make it work.</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="1650.019000" data-stop="1650.460000"><strong class="speaker-name">Ross:</strong>  Nice.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1652.245000" data-stop="1654.088000"><strong class="speaker-name">Sacha:</strong>  You mentioned sometimes</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1654.188000" data-stop="1656.952000">in your Zoom calls when you need to exchange</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1657.032000" data-stop="1658.775000">notes with people faster, then you have to use</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1658.815000" data-stop="1660.297000">Google Docs for that one because that's what</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1660.317000" data-stop="1661.138000">they're familiar with.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1661.659000" data-stop="1664.023000">But there might be some easy ways for you to ship</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1664.063000" data-stop="1669.010000">that back and forth between Org and Google Docs.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1669.000000">27:49</span> <strong>Ethersync?</strong></div><p></p><span class="audio-time caption" data-speaker="Ross" data-start="1669.170000" data-stop="1672.596000"><strong class="speaker-name">Ross:</strong>  One thing I'm really looking</span> <span class="audio-time caption" data-speaker="Ross" data-start="1672.676000" data-stop="1674.959000">forward to is there's this project.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1674.979000" data-stop="1676.261000">I can't remember what it's called.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1676.341000" data-stop="1679.586000">Ethersync. Yes, thank you.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1680.460000" data-stop="1682.683000">I've seen some various attempts at that and</span> <span class="audio-time caption" data-speaker="Ross" data-start="1682.723000" data-stop="1684.406000">I had a little bit of success with them, but none</span> <span class="audio-time caption" data-speaker="Ross" data-start="1684.426000" data-stop="1685.227000">of them have lasted.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1685.267000" data-stop="1686.609000">I'm really rooting for that team.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1687.129000" data-stop="1688.972000">I feel like Emacs got rejuvenated.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1688.992000" data-stop="1691.456000">It used to be, okay, it was hard to use Emacs</span> <span class="audio-time caption" data-speaker="Ross" data-start="1691.496000" data-stop="1693.478000">because if you're in a niche language and you're</span> <span class="audio-time caption" data-speaker="Ross" data-start="1693.538000" data-stop="1695.822000">using a niche editor, you had to find a community</span> <span class="audio-time caption" data-speaker="Ross" data-start="1695.862000" data-stop="1698.165000">that used both of those to have decent support.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1698.145000" data-stop="1699.688000">Then LSP came along.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1699.708000" data-stop="1700.990000">You have your language servers.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1701.010000" data-stop="1703.475000">So now I can write in these niche languages that</span> <span class="audio-time caption" data-speaker="Ross" data-start="1703.515000" data-stop="1705.358000">not everybody's writing Emacs, but I still have a</span> <span class="audio-time caption" data-speaker="Ross" data-start="1705.398000" data-stop="1707.863000">good experience thanks to Eglot and thanks to the</span> <span class="audio-time caption" data-speaker="Ross" data-start="1707.923000" data-stop="1710.007000">language server provided by those communities.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1710.348000" data-stop="1713.093000">Emacs became viable again for doing a lot of</span> <span class="audio-time caption" data-speaker="Ross" data-start="1713.173000" data-stop="1714.315000">development.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1714.295000" data-stop="1718.201000">And I'm hoping that Ethersync kind of becomes</span> <span class="audio-time caption" data-speaker="Ross" data-start="1718.281000" data-stop="1720.844000">like the LSP of collaborative editing, where it's</span> <span class="audio-time caption" data-speaker="Ross" data-start="1720.925000" data-stop="1723.148000">not something where it's only Emacs users sharing</span> <span class="audio-time caption" data-speaker="Ross" data-start="1723.168000" data-stop="1725.571000">with each other, but it works across editors and</span> <span class="audio-time caption" data-speaker="Ross" data-start="1725.631000" data-stop="1727.494000">people can collaborate in real time that way.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1727.634000" data-stop="1730.098000">That would replace that Google Docs use case</span> <span class="audio-time caption" data-speaker="Ross" data-start="1730.178000" data-stop="1730.519000">I have.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1730.959000" data-stop="1732.742000">The only reason I use Google Docs is we can see</span> <span class="audio-time caption" data-speaker="Ross" data-start="1732.782000" data-stop="1734.825000">each other typing and edit things on the fly</span> <span class="audio-time caption" data-speaker="Ross" data-start="1734.865000" data-stop="1735.265000">together.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1735.386000" data-stop="1737.729000">So I'm very excited about that Ethersync project.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1737.789000" data-stop="1738.770000">I hope that takes off.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1739.632000" data-stop="1742.936000"><strong class="speaker-name">Sacha:</strong>  Yeah, I think that will probably be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1742.997000" data-stop="1745.778000">more feasible than hoping people will switch to Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1745.779000" data-stop="1746.840000">and then use CRDT.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1751.586000" data-stop="1754.109000">There are other interesting</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1754.309000" data-stop="1756.151000">collaboration things in your config.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1756.000000">29:16</span> <strong>Managing Github with Forge
</strong></div><p></p><a href="https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/emacs-chat-26-ross-a-baker-00-30-35-700.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/emacs-chat-26-ross-a-baker-00-30-35-700.jpg" alt="image from video 00:30:35.700" data-time="00:30:35.700"></a><span class="audio-time caption" data-speaker="Sacha" data-start="1756.171000" data-stop="1759.435000"><strong class="speaker-name">Sacha:</strong> You've mentioned Forge. You have some things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1759.535000" data-stop="1761.878000">in here for cloning to different directories</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1761.958000" data-stop="1764.180000">depending on the repository, committing with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1764.200000" data-stop="1766.383000">different addresses, confirming before merging</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1766.483000" data-stop="1767.264000">pull requests.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1767.664000" data-stop="1769.346000">Can you tell us a little bit about these quality</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1769.366000" data-stop="1770.728000">of life improvements for you?</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="1771.552000" data-stop="1776.182000"><strong class="speaker-name">Ross:</strong>  Let me see if I can come up with an example here,</span> <span class="audio-time caption" data-speaker="Ross" data-start="1776.242000" data-stop="1776.944000">first of all.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1778.367000" data-stop="1781.994000">So this is Forge for people who have not seen it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1782.014000" data-stop="1783.738000">Let's do...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1789.642000" data-stop="1790.803000"><strong class="speaker-name">Sacha:</strong>  So when you don't need something</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1790.863000" data-stop="1793.566000">like real-time collaboration, for the people who</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1793.606000" data-stop="1796.910000">are watching, Forge lets you manage your Git</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1796.950000" data-stop="1801.575000">repositories with the pull requests and other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1801.615000" data-stop="1802.957000">changes and things like that, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1803.337000" data-stop="1804.659000">I don't use it yet, so... Yes.</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="1805.299000" data-stop="1807.902000"><strong class="speaker-name">Ross:</strong>  Yeah, so it's essentially a GitHub client.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1807.922000" data-stop="1811.786000">So I was looking... I'm here in my Forge test directory.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1812.167000" data-stop="1814.349000">I'm trying not to share any of my work repositories.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1814.389000" data-stop="1815.711000">I use this primarily at work.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1815.731000" data-stop="1818.754000">I just set it up on this machine last night.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1819.021000" data-stop="1821.183000">Still probably a couple of rough edges.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1821.203000" data-stop="1822.744000">I can list the topics.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1823.945000" data-stop="1826.387000">And if I list the topics, I can see I've got pull</span> <span class="audio-time caption" data-speaker="Ross" data-start="1826.407000" data-stop="1827.969000">request 20 open.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1828.549000" data-stop="1831.372000">I can hit enter on it and I can see, okay, it's open.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1831.412000" data-stop="1832.673000">It's in state pending.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1832.753000" data-stop="1833.934000">This is where it's going.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1834.134000" data-stop="1835.095000">These are the commits.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1835.696000" data-stop="1838.558000">I can look at the commit and see, okay, what is</span> <span class="audio-time caption" data-speaker="Ross" data-start="1838.638000" data-stop="1839.619000">this person doing?</span> <span class="audio-time caption" data-speaker="Ross" data-start="1839.799000" data-stop="1843.722000">Oh, they're trying to add another line to this file.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1844.323000" data-stop="1846.245000">And if I say, okay, that looks good.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1846.565000" data-stop="1848.927000">I can do, what is it?</span> <span class="audio-time caption" data-speaker="Ross" data-start="1853.513000" data-stop="1860.043000">I can look at this and I can say... This works</span> <span class="audio-time caption" data-speaker="Ross" data-start="1860.103000" data-stop="1863.107000">better if it is in a full screen editor.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1864.349000" data-stop="1867.554000">Let's do... I thought I was tracking this repo</span> <span class="audio-time caption" data-speaker="Ross" data-start="1867.634000" data-stop="1868.055000">already.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1871.640000" data-stop="1872.882000">I had this working last night.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1872.942000" data-stop="1874.164000">Curse of the demo again.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1874.945000" data-stop="1878.551000">Anyway, I'm able to approve pull requests from</span> <span class="audio-time caption" data-speaker="Ross" data-start="1878.591000" data-stop="1878.771000">this.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1878.831000" data-stop="1880.854000">I'm able to...</span> <span class="audio-time caption" data-speaker="Ross" data-start="1881.998000" data-stop="1883.000000">Reject pull requests.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1883.020000" data-stop="1884.763000">I'm able to comment on pull requests.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1884.823000" data-stop="1885.784000">I can look at the diffs.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1885.805000" data-stop="1889.731000">So all of my integration with GitHub is done</span> <span class="audio-time caption" data-speaker="Ross" data-start="1889.791000" data-stop="1891.154000">through this.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1891.174000" data-stop="1894.519000">I'm in an environment right now, I'm a staff engineer.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1894.660000" data-stop="1896.283000">I participate on a lot of teams.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1896.363000" data-stop="1898.847000">I get over a thousand GitHub notifications a day.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1899.127000" data-stop="1901.211000">The GitHub notifications that are built into</span> <span class="audio-time caption" data-speaker="Ross" data-start="1901.231000" data-stop="1902.994000">the browser are just not sufficient.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1903.295000" data-stop="1905.940000">That's something I was able to pull it in with</span> <span class="audio-time caption" data-speaker="Ross" data-start="1906.020000" data-stop="1908.585000">Forge. I'm able to tag things. I'm able to</span> <span class="audio-time caption" data-speaker="Ross" data-start="1908.685000" data-stop="1909.687000">mass mark the things.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1909.787000" data-stop="1911.951000">I get a lot of infrastructure things that they're</span> <span class="audio-time caption" data-speaker="Ross" data-start="1911.991000" data-stop="1914.014000">important, but they're not important to me. I</span> <span class="audio-time caption" data-speaker="Ross" data-start="1914.054000" data-stop="1916.419000">get notified on them all the time through the</span> <span class="audio-time caption" data-speaker="Ross" data-start="1916.459000" data-stop="1918.162000">various automations. I'll get them.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1918.242000" data-stop="1920.947000">I'll get a hundred of those at a time and I can</span> <span class="audio-time caption" data-speaker="Ross" data-start="1920.987000" data-stop="1922.770000">just mark a region of those and knock out a</span> <span class="audio-time caption" data-speaker="Ross" data-start="1922.830000" data-stop="1925.455000">hundred and say, okay, that's off my plate.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1925.435000" data-stop="1928.798000">Moving it into Emacs, as awkward as this demo is,</span> <span class="audio-time caption" data-speaker="Ross" data-start="1929.139000" data-stop="1930.720000">it works great on my work machine.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1931.201000" data-stop="1933.243000">I'm able to keep up with things so much better</span> <span class="audio-time caption" data-speaker="Ross" data-start="1933.283000" data-stop="1935.465000">than I was before.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1935.485000" data-stop="1935.985000">Let's see.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1936.326000" data-stop="1938.908000">I should be able to, if I want to look a little</span> <span class="audio-time caption" data-speaker="Ross" data-start="1938.968000" data-stop="1941.190000">bit deeper and see things in the GitHub, at least</span> <span class="audio-time caption" data-speaker="Ross" data-start="1941.230000" data-stop="1941.751000">this works.</span> <p></p><a href="https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/emacs-chat-26-ross-a-baker-00-32-21-833.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/emacs-chat-26-ross-a-baker-00-32-21-833.jpg" alt="image from video 00:32:21.833" data-time="00:32:21.833"></a><span class="audio-time caption" data-speaker="Ross" data-start="1941.811000" data-stop="1943.893000"><strong class="speaker-name">Ross:</strong> I can open it and see this directly.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1943.913000" data-stop="1945.795000">Then if I want to merge it from here, I can.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1946.616000" data-stop="1951.020000">Or I should be able to merge.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1951.777000" data-stop="1953.820000">Now I can do a regular merge or a squash</span> <span class="audio-time caption" data-speaker="Ross" data-start="1953.860000" data-stop="1956.084000">merge or a rebase just the same as I have this</span> <span class="audio-time caption" data-speaker="Ross" data-start="1956.144000" data-stop="1956.665000">button here.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1956.705000" data-stop="1957.967000">That's all built in here.</span> <span class="audio-time caption" data-speaker="Ross" data-start="1958.087000" data-stop="1967.543000">Let's go ahead and merge this pull request.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1967.563000" data-stop="1967.903000"><strong class="speaker-name">Sacha:</strong>  All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1967.923000" data-stop="1970.968000">That little detail about you dealing with like a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1971.088000" data-stop="1974.107000">thousand notifications a day?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1975.249000" data-stop="1979.195000">It makes the guardrails that you added to Forge</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1979.216000" data-stop="1981.499000">in your config even more interesting because you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1982.060000" data-stop="1984.585000">can stop yourself from accidentally automatically</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1984.665000" data-stop="1986.668000">merging in things that need more review or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1986.708000" data-stop="1989.473000">whatever, which of course is difficult to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1989.513000" data-stop="1991.095000">demonstrate at the moment because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1991.096000" data-stop="1993.680000">work stuff, private.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1993.660000" data-stop="1997.305000">But if other people are listening and thinking,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1997.345000" data-stop="1999.426000">they're dealing with a similar volume,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1999.427000" data-stop="2003.733000">you can modify Emacs to stop you from making mistakes</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2004.173000" data-stop="2004.614000">like that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2005.595000" data-stop="2008.499000">You can add just enough friction for the cases</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2008.559000" data-stop="2011.503000">where you need to pay more attention.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2011.523000" data-stop="2014.246000">And @PuercoPop, there's a gh-notify</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2014.286000" data-stop="2016.669000">package specifically for high-volume GitHub</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2016.750000" data-stop="2017.571000">notifications.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2018.332000" data-stop="2021.035000">I'm not sure... Have you come across that one yet?</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="2022.230000" data-stop="2024.758000"><strong class="speaker-name">Ross:</strong>  I'm curious what that looks.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2024.798000" data-stop="2029.753000">The term "notify" concerns me, like if</span> <span class="audio-time caption" data-speaker="Ross" data-start="2029.793000" data-stop="2032.079000">it's helping me manage notifications in bulk,</span> <span class="audio-time caption" data-speaker="Ross" data-start="2032.080000" data-stop="2034.087000">I'm interested. If it's going to pop up something</span> <span class="audio-time caption" data-speaker="Ross" data-start="2034.147000" data-stop="2036.170000">every time I get a new notification,</span> <span class="audio-time caption" data-speaker="Ross" data-start="2036.190000" data-stop="2037.372000">I'm very much disinterested.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2037.393000" data-stop="2040.177000">I don't know whether to be excited or horrified,</span> <span class="audio-time caption" data-speaker="Ross" data-start="2040.197000" data-stop="2041.800000">but I'll take a look.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2041.820000" data-stop="2043.263000"><strong class="speaker-name">Sacha:</strong>  I think because @PuercoPop is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2043.343000" data-stop="2045.206000">recommending it specifically in the context of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2045.286000" data-stop="2048.172000">high-volume notifications, it might provide you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2048.212000" data-stop="2050.576000">that inboxing where you can filter.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2050.636000" data-stop="2054.322000">I haven't looked into it myself, but I'm getting</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2054.422000" data-stop="2056.505000">the sense that this is a problem that many people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2056.887000" data-stop="2058.028000">who use Emacs face</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2058.029000" data-stop="2060.353000">and who solve it a very Emacs-y way.</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="2061.210000" data-stop="2068.296000"><strong class="speaker-name">Ross:</strong>  Yes. Forge has all these nice things built into it already,</span> <span class="audio-time caption" data-speaker="Ross" data-start="2068.297000" data-stop="2069.940000">but I wanted to customize the workflow a</span> <span class="audio-time caption" data-speaker="Ross" data-start="2069.980000" data-stop="2070.400000">little bit.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2070.760000" data-stop="2072.601000">It's right here in the comments, the things that</span> <span class="audio-time caption" data-speaker="Ross" data-start="2072.641000" data-stop="2072.882000">it does.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2072.942000" data-stop="2074.463000">It makes sure that it's mergeable,</span> <span class="audio-time caption" data-speaker="Ross" data-start="2074.464000" data-stop="2076.445000">there's no merge conflicts,</span> <span class="audio-time caption" data-speaker="Ross" data-start="2076.446000" data-stop="2078.546000">makes sure that all the status checks ran,</span> <span class="audio-time caption" data-speaker="Ross" data-start="2078.547000" data-stop="2080.830000">makes sure that all the approval is done.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2081.070000" data-stop="2083.671000">One thing that the Forge does not do is</span> <span class="audio-time caption" data-speaker="Ross" data-start="2083.672000" data-stop="2087.877000">it does not show you comments on your pull request.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2088.667000" data-stop="2090.951000">There's a code-review package that's out there.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2091.172000" data-stop="2092.875000">It's been through a lot of forks.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2093.014000" data-stop="2094.958000">I'm still integrating that into my workflow.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2094.978000" data-stop="2097.644000">I've got a fork of a fork of a fork that I have.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2098.125000" data-stop="2100.369000">This is life in Emacs, for better or for worse.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2100.790000" data-stop="2102.994000">I've got a fork of a fork of a fork of a fork so</span> <span class="audio-time caption" data-speaker="Ross" data-start="2103.034000" data-stop="2104.096000">I can see those comments.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2104.116000" data-stop="2105.919000">I haven't fully integrated it with Forge yet.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2105.939000" data-stop="2107.502000">That's a work in progress.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2107.718000" data-stop="2109.941000">But anyway, I didn't want to be merging these</span> <span class="audio-time caption" data-speaker="Ross" data-start="2110.001000" data-stop="2112.405000">things and ignoring if somebody's taking the time</span> <span class="audio-time caption" data-speaker="Ross" data-start="2112.425000" data-stop="2113.346000">to give me feedback.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2113.386000" data-stop="2115.048000">I don't want to merge things because sometimes</span> <span class="audio-time caption" data-speaker="Ross" data-start="2115.089000" data-stop="2116.991000">people will approve things, but they'll say, hey,</span> <span class="audio-time caption" data-speaker="Ross" data-start="2117.031000" data-stop="2117.993000">just a little nit to pick.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2118.033000" data-stop="2119.034000">You got a typo here.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2119.395000" data-stop="2121.257000">Don't want to slow down progress, but you might</span> <span class="audio-time caption" data-speaker="Ross" data-start="2121.297000" data-stop="2123.060000">want to take a look at this.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2123.080000" data-stop="2125.584000">If I'm just sitting here entirely inside of</span> <span class="audio-time caption" data-speaker="Ross" data-start="2125.604000" data-stop="2126.605000">this, I'll never see that.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2126.625000" data-stop="2129.389000">So this also checks for unresolved threads.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2129.369000" data-stop="2131.753000">I've got some embedded GraphQL inside of here</span> <span class="audio-time caption" data-speaker="Ross" data-start="2131.793000" data-stop="2134.578000">that makes it all work and we grab that data from</span> <span class="audio-time caption" data-speaker="Ross" data-start="2134.638000" data-stop="2137.303000">the GraphQL and then I'm able to just do this</span> <span class="audio-time caption" data-speaker="Ross" data-start="2137.383000" data-stop="2139.807000">inside a list and prompt on these things and if</span> <span class="audio-time caption" data-speaker="Ross" data-start="2139.867000" data-stop="2141.570000">it finds there's anything that isn't right it</span> <span class="audio-time caption" data-speaker="Ross" data-start="2141.630000" data-stop="2144.936000">gives me these safety checks along the way and</span> <span class="audio-time caption" data-speaker="Ross" data-start="2144.956000" data-stop="2148.542000">yeah it's really nice.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2149.000000">35:49</span> <strong>Committing with work addresses vs personal</strong></div><p></p><span class="audio-time caption" data-speaker="Ross" data-start="2149.501000" data-stop="2152.185000"><strong class="speaker-name">Ross:</strong> One other issue that I had was we had this</span> <span class="audio-time caption" data-speaker="Ross" data-start="2152.245000" data-stop="2153.987000">requirement at work where we needed to start</span> <span class="audio-time caption" data-speaker="Ross" data-start="2154.448000" data-stop="2156.571000">committing with our work email addresses rather</span> <span class="audio-time caption" data-speaker="Ross" data-start="2156.611000" data-stop="2157.552000">than our personal addresses.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2157.592000" data-stop="2160.596000">I use my same GitHub account for work and personal.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2160.656000" data-stop="2162.178000">I needed to get that moved over.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2162.699000" data-stop="2165.423000">To do that with GitHub, you need to do those</span> <span class="audio-time caption" data-speaker="Ross" data-start="2165.483000" data-stop="2167.285000">merges via the API.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2167.305000" data-stop="2168.487000">I've got things configured.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2168.567000" data-stop="2170.750000">All of my work repositories are</span> <span class="audio-time caption" data-speaker="Ross" data-start="2170.730000" data-stop="2173.895000">partitioned off into their own subdirectory of my</span> <span class="audio-time caption" data-speaker="Ross" data-start="2173.935000" data-stop="2174.896000">projects directory.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2174.996000" data-stop="2177.320000">I've got a git config that sets my email address</span> <span class="audio-time caption" data-speaker="Ross" data-start="2177.340000" data-stop="2177.821000">to that.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2177.881000" data-stop="2180.405000">So if I'm doing things locally, it works.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2180.425000" data-stop="2182.908000">But if I'm doing these API merges that are</span> <span class="audio-time caption" data-speaker="Ross" data-start="2182.989000" data-stop="2185.272000">necessary for certain repositories with certain</span> <span class="audio-time caption" data-speaker="Ross" data-start="2185.332000" data-stop="2188.657000">safety checks, I needed to be able to thread that along.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2188.697000" data-stop="2190.921000">I've got a bug fix in here for that, where I'm</span> <span class="audio-time caption" data-speaker="Ross" data-start="2190.961000" data-stop="2192.944000">threading along that email address that reads my</span> <span class="audio-time caption" data-speaker="Ross" data-start="2192.984000" data-stop="2195.808000">git config and passes that along to the API</span> <span class="audio-time caption" data-speaker="Ross" data-start="2195.968000" data-stop="2196.930000">endpoint.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2196.950000" data-stop="2199.133000">Otherwise, it was committed as the wrong identity.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2199.113000" data-stop="2200.514000">There's a few things here that I'd like to</span> <span class="audio-time caption" data-speaker="Ross" data-start="2200.574000" data-stop="2201.936000">contribute upstream to Forge.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2201.976000" data-stop="2203.777000">Some of it is very bespoke to me,</span> <span class="audio-time caption" data-speaker="Ross" data-start="2203.778000" data-stop="2205.920000">and some of it I think would be useful to everybody.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2205.940000" data-stop="2209.363000">I need to tease that apart still.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2209.383000" data-stop="2211.866000"><strong class="speaker-name">Sacha:</strong>  I like your technique of separating</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2212.066000" data-stop="2214.288000">things into different subdirectories and so that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2214.909000" data-stop="2216.691000">all of your work stuff goes in the work directory</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2216.771000" data-stop="2219.033000">or all of your personal stuff goes into projects</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2219.093000" data-stop="2219.534000">or whatever.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2219.974000" data-stop="2221.936000">Then you can change your settings based on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2221.976000" data-stop="2223.838000">the location of the project.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2223.818000" data-stop="2227.644000">Even cloning a project will automatically pick</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2228.065000" data-stop="2229.787000">the right directory to put it in.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2229.807000" data-stop="2231.009000">I saw that in your config.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2231.210000" data-stop="2232.612000">That's pretty clever.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2233.000000">37:13</span> <strong>Emacs tinkering as stress relief</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2233.533000" data-stop="2235.496000"><strong class="speaker-name">Sacha:</strong> I'm curious because a lot of people find it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2235.637000" data-stop="2239.923000">challenging to balance the workflow improvement I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2239.963000" data-stop="2242.047000">get to tinker with Emacs versus actually getting</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2242.087000" data-stop="2244.330000">work done, the time balance between those two.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2244.370000" data-stop="2246.113000">It's a little hard to figure out sometimes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2246.093000" data-stop="2247.735000">What is this like for you when you're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2247.775000" data-stop="2249.498000">sitting down, you're doing some work, and you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2249.518000" data-stop="2251.801000">realize "There's probably something</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2251.821000" data-stop="2254.225000">that I can write to make this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2254.265000" data-stop="2255.826000">smoother?"</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="2255.827000" data-stop="2257.770000"><strong class="speaker-name">Ross:</strong>  I've been doing Emacs off and on</span> <span class="audio-time caption" data-speaker="Ross" data-start="2257.830000" data-stop="2259.893000">for about 30 years now, and when I get that</span> <span class="audio-time caption" data-speaker="Ross" data-start="2259.953000" data-stop="2262.836000">balance right, I'll let you know.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2262.837000" data-stop="2264.760000">I don't have it right yet.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2265.668000" data-stop="2268.472000">I know I spend more time tweaking</span> <span class="audio-time caption" data-speaker="Ross" data-start="2268.572000" data-stop="2269.913000">things than I probably should.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2269.914000" data-stop="2272.698000">It's a stress reliever for me.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2272.718000" data-stop="2276.563000">I get tired of doing the other things.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2276.983000" data-stop="2278.946000">I still love computers.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2278.986000" data-stop="2281.129000">I've loved computers since I was six years old.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2281.189000" data-stop="2284.033000">Got my first computer then.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2284.093000" data-stop="2286.597000">My aunt got me a book on programming when I was six.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2286.637000" data-stop="2288.900000">I started going through that book, and I was off</span> <span class="audio-time caption" data-speaker="Ross" data-start="2288.940000" data-stop="2290.562000">to the races on that.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2290.542000" data-stop="2293.747000">I relax by doing computers. Some of</span> <span class="audio-time caption" data-speaker="Ross" data-start="2293.767000" data-stop="2296.451000">the open source chaos is a lot to deal with, and</span> <span class="audio-time caption" data-speaker="Ross" data-start="2296.772000" data-stop="2298.775000">using the same languages that I use at work that</span> <span class="audio-time caption" data-speaker="Ross" data-start="2298.835000" data-stop="2300.678000">feels too much like work, so being able to</span> <span class="audio-time caption" data-speaker="Ross" data-start="2300.718000" data-stop="2303.042000">withdraw and just tweak things... "Okay, this</span> <span class="audio-time caption" data-speaker="Ross" data-start="2303.162000" data-stop="2308.550000">irritated me." It's a combination... From a pure</span> <span class="audio-time caption" data-speaker="Ross" data-start="2308.590000" data-stop="2311.415000">productivity perspective, I overdo it for sure, but</span> <span class="audio-time caption" data-speaker="Ross" data-start="2311.695000" data-stop="2313.718000">I guess the stress relief if I would burn out</span> <span class="audio-time caption" data-speaker="Ross" data-start="2313.798000" data-stop="2316.102000">otherwise... Maybe I'm getting it right after</span> <span class="audio-time caption" data-speaker="Ross" data-start="2316.182000" data-stop="2317.444000">all. It's hard to say.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2318.403000" data-stop="2320.590000"><strong class="speaker-name">Sacha:</strong>  Besides, you might also be able</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2320.670000" data-stop="2323.900000">to say to yourself, well, I do have some Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2323.980000" data-stop="2327.431000">co-workers. I'm sure they can benefit from this too.</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="2327.451000" data-stop="2327.812000"><strong class="speaker-name">Ross:</strong>  I do.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2330.059000" data-stop="2331.222000"><strong class="speaker-name">Sacha:</strong>  You're helping them out too.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2331.242000" data-stop="2334.370000">Okay, I want to dig into some of the things that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2334.410000" data-stop="2338.074000">you have around improving Emacs' capabilities as</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2338.155000" data-stop="2339.436000">a self-documenting editor.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2339.456000" data-stop="2342.320000">You have some configuration snippets that make</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2342.380000" data-stop="2343.561000">getting help easier.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2344.202000" data-stop="2346.806000">I hadn't come across them before, so I wanted to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2347.266000" data-stop="2348.708000">make sure other people knew about them too.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2349.108000" data-stop="2352.533000">Like your thing about making apropos look at all</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2352.573000" data-stop="2354.936000">the things and sort by scores.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2355.396000" data-stop="2356.278000">It can sort by scores?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2356.378000" data-stop="2359.041000">What kind of scores are we talking about?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2359.021000" data-stop="2370.639000">How does this work?</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="2370.640000" data-stop="2372.080000"><strong class="speaker-name">Ross:</strong>  One thing that I have done,</span> <span class="audio-time caption" data-speaker="Ross" data-start="2372.081000" data-stop="2374.565000">a little bit off-topic for the question that you've</span> <span class="audio-time caption" data-speaker="Ross" data-start="2374.825000" data-stop="2377.289000">asked, but I have linked everything very</span> <span class="audio-time caption" data-speaker="Ross" data-start="2377.329000" data-stop="2381.836000">aggressively to the info manual where I found things.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2381.856000" data-stop="2385.602000">Sorry, I got caught in a recursive edit here.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2386.932000" data-stop="2391.100000">So let's open this.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2393.044000" data-stop="2398.094000">What was that doing?</span> <span class="audio-time caption" data-speaker="Ross" data-start="2398.134000" data-stop="2401.099000">I'm also struggling because I've been very busy</span> <span class="audio-time caption" data-speaker="Ross" data-start="2401.140000" data-stop="2403.163000">at work lately. I'm used to the Mac key</span> <span class="audio-time caption" data-speaker="Ross" data-start="2403.204000" data-stop="2405.007000">bindings again. I'm back here on my Linux</span> <span class="audio-time caption" data-speaker="Ross" data-start="2405.047000" data-stop="2408.113000">machine. I haven't adapted to the Ctrl versus the Cmd.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2409.038000" data-stop="2411.561000">So yeah, all apropos commands will sort their</span> <span class="audio-time caption" data-speaker="Ross" data-start="2411.621000" data-stop="2413.904000">lists or results in alphabetical order.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2413.924000" data-stop="2416.186000">If sort by scores is non-null, they try to guess</span> <span class="audio-time caption" data-speaker="Ross" data-start="2416.226000" data-stop="2419.811000">the relevance of each result.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2419.831000" data-stop="2421.412000">My comment looks like it's a little bit obsolete</span> <span class="audio-time caption" data-speaker="Ross" data-start="2421.472000" data-stop="2423.695000">here because it looks like for the documentation,</span> <span class="audio-time caption" data-speaker="Ross" data-start="2423.815000" data-stop="2426.538000">I do like the sorting by scores, but for regular</span> <span class="audio-time caption" data-speaker="Ross" data-start="2426.578000" data-stop="2427.860000">apropos, I did not.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2427.920000" data-stop="2430.643000">I think I tweaked something and didn't update</span> <span class="audio-time caption" data-speaker="Ross" data-start="2430.663000" data-stop="2431.584000">the documentation.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2431.604000" data-stop="2433.787000"><strong class="speaker-name">Sacha:</strong>  That's okay. I was just curious about it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2434.267000" data-stop="2438.252000">Then you also have some things like,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2438.654000" data-stop="2443.584000">if it's an autoloaded symbol, then go ahead and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2443.624000" data-stop="2446.229000">load the library so that you can get help for it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2446.510000" data-stop="2449.415000">If there's a shortdoc example, include that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2449.475000" data-stop="2453.764000">as well in the documentation of a function.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2454.165000" data-stop="2457.391000">So if people are reading configs for ideas, I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2457.451000" data-stop="2459.315000">thought I would call attention to this part</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2459.335000" data-stop="2460.898000">because it sounds really handy.</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="2462.566000" data-stop="2463.449000"><strong class="speaker-name">Ross:</strong>  Yeah, I found these.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2463.569000" data-stop="2464.912000">I've just been going through...</span> <span class="audio-time caption" data-speaker="Ross" data-start="2464.913000" data-stop="2466.137000">Part of my relaxation...</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2466.000000">41:06</span> <strong>Under-appreciated Emacs built-ins</strong></div><p></p><span class="audio-time caption" data-speaker="Ross" data-start="2466.157000" data-stop="2468.303000"><strong class="speaker-name">Ross:</strong> This is such a dorky thing to say, but part of</span> <span class="audio-time caption" data-speaker="Ross" data-start="2468.343000" data-stop="2470.430000">the relaxation is I'll go through the Emacs</span> <span class="audio-time caption" data-speaker="Ross" data-start="2470.470000" data-stop="2471.774000">manual looking for things.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2471.794000" data-stop="2474.362000">The overall structure of this document follows</span> <span class="audio-time caption" data-speaker="Ross" data-start="2474.422000" data-stop="2476.508000">the Emacs manual fairly closely, and that's</span> <span class="audio-time caption" data-speaker="Ross" data-start="2476.825000" data-stop="2478.087000">not by coincidence.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2478.147000" data-stop="2480.191000">I've just been going through chapter by chapter.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2480.311000" data-stop="2483.476000">Okay, well, I started with Emacs 19 or whatever.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2483.576000" data-stop="2485.600000">Emacs 31 is around the corner.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2485.620000" data-stop="2487.243000">I better at least catch up to all the goodies</span> <span class="audio-time caption" data-speaker="Ross" data-start="2487.263000" data-stop="2487.924000">that are in 30.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2488.024000" data-stop="2490.368000">I'll read the manual, and I'm</span> <span class="audio-time caption" data-speaker="Ross" data-start="2490.408000" data-stop="2491.690000">finding a lot of these things there.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2491.730000" data-stop="2493.473000">That's why I have so many links back to the</span> <span class="audio-time caption" data-speaker="Ross" data-start="2493.533000" data-stop="2496.678000">manual inside of my code, just because I'm going</span> <span class="audio-time caption" data-speaker="Ross" data-start="2496.719000" data-stop="2497.320000">through that.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2497.340000" data-stop="2499.964000">That's where you can find a lot of these hidden gems.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2500.180000" data-stop="2502.423000">I'm hosting the Emacs Carnival this month, and</span> <span class="audio-time caption" data-speaker="Ross" data-start="2502.463000" data-stop="2504.546000">it's the underappreciated Emacs built-ins.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2504.566000" data-stop="2506.649000">I said, if you want to find any of them, go</span> <span class="audio-time caption" data-speaker="Ross" data-start="2506.729000" data-stop="2507.530000">in the manual.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2507.570000" data-stop="2509.473000">They're there by the bushel.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2509.493000" data-stop="2513.098000"><strong class="speaker-name">Sacha:</strong>  It feels almost like a book club.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2513.118000" data-stop="2514.600000">We're going through the manual together and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2514.660000" data-stop="2518.846000">finding all these gems that I wouldn't have come</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2518.866000" data-stop="2520.929000">across otherwise, because Emacs source code is too</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2520.989000" data-stop="2522.071000">big and all that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2522.151000" data-stop="2525.035000">I've been really appreciating the Emacs Carnival</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2525.055000" data-stop="2526.357000">submissions thus far.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2527.585000" data-stop="2532.371000">Of course, there are lots of other things that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2532.452000" data-stop="2535.436000">are not in Emacs that you've also been exploring</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2536.176000" data-stop="2538.480000">and checking out.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2540.000000">42:20</span> <strong>gptel</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2540.502000" data-stop="2543.907000"><strong class="speaker-name">Sacha:</strong> Am I allowed to ask about the gptel stuff?</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="2544.808000" data-stop="2545.128000"><strong class="speaker-name">Ross:</strong>  Of course.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2545.169000" data-stop="2551.457000"><strong class="speaker-name">Sacha:</strong>  I was curious about how the quick lookup stuff</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2551.497000" data-stop="2552.518000">has been working out for you.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2552.538000" data-stop="2554.521000">What kinds of things do you like to use that for?</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="2556.290000" data-stop="2558.640000"><strong class="speaker-name">Ross:</strong>  That's one that it was pretty</span> <span class="audio-time caption" data-speaker="Ross" data-start="2558.680000" data-stop="2560.689000">exciting and I haven't really fully worked it</span> <span class="audio-time caption" data-speaker="Ross" data-start="2560.769000" data-stop="2561.954000">into my workflow yet.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2562.055000" data-stop="2563.842000">I tried it. I liked it. I haven't</span> <span class="audio-time caption" data-speaker="Ross" data-start="2563.902000" data-stop="2564.726000">internalized it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2564.746000" data-stop="2566.654000">I was trying that one night.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2567.562000" data-stop="2570.425000">what what is capable of is you can just highlight</span> <span class="audio-time caption" data-speaker="Ross" data-start="2570.485000" data-stop="2573.809000">something and do. It's almost like a quick</span> <span class="audio-time caption" data-speaker="Ross" data-start="2573.829000" data-stop="2575.711000">Google search, except it'll bounce it off the</span> <span class="audio-time caption" data-speaker="Ross" data-start="2575.751000" data-stop="2578.754000">model of your choice. It will pop up things a</span> <span class="audio-time caption" data-speaker="Ross" data-start="2578.794000" data-stop="2580.977000">little bit faster that way. For the most part, I'm</span> <span class="audio-time caption" data-speaker="Ross" data-start="2581.017000" data-stop="2583.520000">just using stock gptel, where I've just got the</span> <span class="audio-time caption" data-speaker="Ross" data-start="2583.540000" data-stop="2586.022000">chatbot window. I'll copy a region and I'll</span> <span class="audio-time caption" data-speaker="Ross" data-start="2586.042000" data-stop="2588.986000">put it into gptel. I'll run it off the model, say</span> <span class="audio-time caption" data-speaker="Ross" data-start="2589.026000" data-stop="2591.348000">hey, I got a question about this, help me with this</span> <span class="audio-time caption" data-speaker="Ross" data-start="2591.388000" data-stop="2594.671000">compile error, help me with that, and so forth.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2594.672000" data-stop="2595.713000">I don't...</span> <span class="audio-time caption" data-speaker="Ross" data-start="2597.110000" data-stop="2599.853000">Talking about AI is always difficult because it's</span> <span class="audio-time caption" data-speaker="Ross" data-start="2599.893000" data-stop="2603.236000">such a controversial thing and to use it at all,</span> <span class="audio-time caption" data-speaker="Ross" data-start="2603.276000" data-stop="2604.457000">you offend a lot of people.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2604.598000" data-stop="2606.479000">I'll say, I don't really buy into the</span> <span class="audio-time caption" data-speaker="Ross" data-start="2606.539000" data-stop="2607.500000">agentic workflow.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2607.560000" data-stop="2609.723000">I'm happy just using things as a chatbot and</span> <span class="audio-time caption" data-speaker="Ross" data-start="2610.163000" data-stop="2611.945000">little snippets here and there where I'm still</span> <span class="audio-time caption" data-speaker="Ross" data-start="2612.005000" data-stop="2612.746000">firmly driving.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2612.786000" data-stop="2614.828000">So the people who are fully bought into it, they</span> <span class="audio-time caption" data-speaker="Ross" data-start="2614.888000" data-stop="2616.369000">don't think I'm using it right.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2616.890000" data-stop="2619.733000">Then there are a lot of ethical concerns that</span> <span class="audio-time caption" data-speaker="Ross" data-start="2619.793000" data-stop="2620.253000">I share.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2620.453000" data-stop="2622.055000">I don't have the gptel on this.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2622.355000" data-stop="2623.216000">I use it for work.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2623.276000" data-stop="2625.058000">I don't use it personally.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2625.038000" data-stop="2627.422000">That's just the way I've been able to</span> <span class="audio-time caption" data-speaker="Ross" data-start="2627.442000" data-stop="2629.465000">compartmentalize all my concerns with it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2629.565000" data-stop="2631.989000">But just being a technologist, being a principal</span> <span class="audio-time caption" data-speaker="Ross" data-start="2632.049000" data-stop="2634.192000">staff engineer, I do need to get up to speed with</span> <span class="audio-time caption" data-speaker="Ross" data-start="2634.212000" data-stop="2634.733000">these tools.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2634.753000" data-stop="2637.958000">So I have had to get used to them and keep up</span> <span class="audio-time caption" data-speaker="Ross" data-start="2637.978000" data-stop="2639.981000">with what they're capable of and what they're not.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2640.001000" data-stop="2643.626000">At least for my... Setting aside all the</span> <span class="audio-time caption" data-speaker="Ross" data-start="2643.706000" data-stop="2647.733000">concerns around environment and whatnot, all the</span> <span class="audio-time caption" data-speaker="Ross" data-start="2647.773000" data-stop="2649.375000">other concerns that we have with it
,</span> <span class="audio-time caption" data-speaker="Ross" data-start="2649.355000" data-stop="2651.738000">I find that GPTel is that sweet spot where I've</span> <span class="audio-time caption" data-speaker="Ross" data-start="2651.758000" data-stop="2654.020000">just got this pair programmer where I can run</span> <span class="audio-time caption" data-speaker="Ross" data-start="2654.080000" data-stop="2656.804000">things off, bounce a few questions off it, get</span> <span class="audio-time caption" data-speaker="Ross" data-start="2656.864000" data-stop="2659.387000">things, but it's not getting write access to my</span> <span class="audio-time caption" data-speaker="Ross" data-start="2659.447000" data-stop="2660.268000">file system.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2660.828000" data-stop="2662.390000">I have a security background. Worked at a</span> <span class="audio-time caption" data-speaker="Ross" data-start="2662.410000" data-stop="2664.292000">security company for several years.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2664.572000" data-stop="2667.115000">Just the access that people are giving to these</span> <span class="audio-time caption" data-speaker="Ross" data-start="2667.236000" data-stop="2669.758000">agents, I find absolutely terrifying.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2669.778000" data-stop="2672.021000">There's a lot of work that goes into using that</span> <span class="audio-time caption" data-speaker="Ross" data-start="2672.081000" data-stop="2673.743000">properly, I think.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2673.723000" data-stop="2676.187000">I get most of the benefit. I feel like I'm</span> <span class="audio-time caption" data-speaker="Ross" data-start="2676.268000" data-stop="2679.133000">de-skilling myself a little bit less than I do</span> <span class="audio-time caption" data-speaker="Ross" data-start="2679.213000" data-stop="2681.577000">when I try the agentic workflows elsewhere.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2681.597000" data-stop="2683.019000">So I love gptel.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2683.861000" data-stop="2686.626000">Now gptel, it does have this interesting agent mode.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2686.666000" data-stop="2687.968000">I haven't tried it yet.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2688.489000" data-stop="2691.675000">Again, I have some security concerns around that.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2691.695000" data-stop="2693.518000">I need to figure out how to make sure that</span> <span class="audio-time caption" data-speaker="Ross" data-start="2693.558000" data-stop="2695.782000">whatever I give it write access to...</span> <span class="audio-time caption" data-speaker="Ross" data-start="2695.762000" data-stop="2697.685000">It's not getting too much write access to</span> <span class="audio-time caption" data-speaker="Ross" data-start="2697.785000" data-stop="2700.009000">anything. But that is a project that's on my</span> <span class="audio-time caption" data-speaker="Ross" data-start="2700.049000" data-stop="2702.533000">radar as well, to try to do things that really do</span> <span class="audio-time caption" data-speaker="Ross" data-start="2702.593000" data-stop="2704.857000">benefit from this unattended work.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2705.658000" data-stop="2706.640000">I'll dabble in that as well.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2706.680000" data-stop="2708.543000">There's a whole gptel ecosystem.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2708.964000" data-stop="2713.511000">Karthik does an amazing job with that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2713.531000" data-stop="2715.434000"><strong class="speaker-name">Sacha:</strong>  I like that you have a very</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2715.474000" data-stop="2716.676000">considerate approach to it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2716.776000" data-stop="2719.281000">I also like the humor with which you describe</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2719.641000" data-stop="2722.005000">this and other things in your config.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2723.892000" data-stop="2729.347000">You aren't buying into the hype. You're like,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2729.407000" data-stop="2732.014000">this is your least unfavorite way</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2732.055000" data-stop="2732.957000">of doing things.</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="2733.494000" data-stop="2737.899000"><strong class="speaker-name">Ross:</strong>  Yes, exactly. There's some commentary</span> <span class="audio-time caption" data-speaker="Ross" data-start="2737.999000" data-stop="2740.843000">out on one of the nuclear test sites about "No</span> <span class="audio-time caption" data-speaker="Ross" data-start="2740.943000" data-stop="2743.045000">deed of honor is performed here." I've quoted</span> <span class="audio-time caption" data-speaker="Ross" data-start="2743.085000" data-stop="2744.826000">some of that in this part of the config too,</span> <span class="audio-time caption" data-speaker="Ross" data-start="2744.827000" data-stop="2747.830000">just kind of my protest of doing this.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2747.831000" data-stop="2750.273000">I've got to do this and there are certain ways...</span> <span class="audio-time caption" data-speaker="Ross" data-start="2750.274000" data-stop="2754.558000">If I have to do this, these are the ways that work for me.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2754.559000" data-stop="2756.120000">I'm getting some benefits out of this,</span> <span class="audio-time caption" data-speaker="Ross" data-start="2756.121000" data-stop="2759.383000">but also I don't entirely feel great about this either.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2759.384000" data-stop="2760.446000">That's kind of how I've</span> <span class="audio-time caption" data-speaker="Ross" data-start="2761.146000" data-stop="2762.488000">compartmentalized that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2763.295000" data-stop="2764.977000"><strong class="speaker-name">Sacha:</strong>  Yeah, that makes sense.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2764.000000">46:04</span> <strong>Getting older</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2764.997000" data-stop="2767.179000"><strong class="speaker-name">Sacha:</strong> One of the other things that you joke about a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2767.339000" data-stop="2769.681000">couple of times in your config is getting older.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2770.662000" data-stop="2772.864000">So with things like your <code>repeat-exit-timeout</code> and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2772.884000" data-stop="2774.806000">your <code>mode-line-bell-flash-time</code>, you’re like,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2774.826000" data-stop="2778.209000">okay, might change it to track my senescence.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2782.272000" data-stop="2783.454000">I appreciate your sense of humor.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2784.615000" data-stop="2786.016000">Are you finding that there are things that you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2786.036000" data-stop="2789.559000">like to tweak about Emacs in anticipation of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2789.799000" data-stop="2791.581000">change as you get older?</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="2792.776000" data-stop="2795.867000"><strong class="speaker-name">Ross:</strong>  Well, my font size is definitely bigger than it</span> <span class="audio-time caption" data-speaker="Ross" data-start="2795.987000" data-stop="2796.509000">used to be.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2796.650000" data-stop="2799.681000">I guess that's something that has changed over</span> <span class="audio-time caption" data-speaker="Ross" data-start="2799.701000" data-stop="2800.002000">the years.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2800.042000" data-stop="2802.109000">I used to be able to operate on a tiny font, no</span> <span class="audio-time caption" data-speaker="Ross" data-start="2802.149000" data-stop="2804.558000">longer on that.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2806.000000">46:46</span> <strong>Lindy's Law and tool longevity</strong></div><p></p><span class="audio-time caption" data-speaker="Ross" data-start="2806.799000" data-stop="2810.423000"><strong class="speaker-name">Ross:</strong> I guess Emacs and aging just feels like I made a</span> <span class="audio-time caption" data-speaker="Ross" data-start="2810.523000" data-stop="2812.665000">really good... I wish I'd stuck with it for the</span> <span class="audio-time caption" data-speaker="Ross" data-start="2812.725000" data-stop="2813.486000">full 30 years.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2813.506000" data-stop="2815.848000">I'd be fumbling around a little bit less in this demo.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2815.868000" data-stop="2817.650000">I'm not as smooth as somebody who'd been on it</span> <span class="audio-time caption" data-speaker="Ross" data-start="2817.690000" data-stop="2819.932000">for the full 30 years, so I regret that time.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2820.473000" data-stop="2822.795000">I've just seen so many editors come and go.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2822.815000" data-stop="2826.239000">And when I talk to junior developers, I do a lot</span> <span class="audio-time caption" data-speaker="Ross" data-start="2826.279000" data-stop="2826.999000">of mentoring.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2827.600000" data-stop="2829.802000">Like, I'm not necessarily going to say that you</span> <span class="audio-time caption" data-speaker="Ross" data-start="2829.842000" data-stop="2832.485000">should go down this road, but if you do go down</span> <span class="audio-time caption" data-speaker="Ross" data-start="2832.525000" data-stop="2834.427000">this road, it is something.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2834.778000" data-stop="2837.533000">that is probably going to be richly rewarding</span> <span class="audio-time caption" data-speaker="Ross" data-start="2837.534000" data-stop="2838.967000">for you for a long time.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2838.968000" data-stop="2840.800000">There's this thing... I think it's called</span> <span class="audio-time caption" data-speaker="Ross" data-start="2840.801000" data-stop="2843.833000">Lindy's Law. I'm sure I've quoted it here somewhere.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2843.834000" data-stop="2845.851000">The expected lifetime of something is</span> <span class="audio-time caption" data-speaker="Ross" data-start="2845.912000" data-stop="2848.720000">proportional to how long it's already existed.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2848.852000" data-stop="2851.433000">And with Emacs... Emacs has been around...</span> <span class="audio-time caption" data-speaker="Ross" data-start="2851.434000" data-stop="2854.167000">I'm very old. I'm 47. But Emacs is a little bit</span> <span class="audio-time caption" data-speaker="Ross" data-start="2854.168000" data-stop="2856.133000">older than I am, depending on how you start counting.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2856.134000" data-stop="2859.333000">Emacs has been around for a long time.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2859.334000" data-stop="2862.621000">It doesn't have the market share that it used to,</span> <span class="audio-time caption" data-speaker="Ross" data-start="2862.741000" data-stop="2864.284000">but it's something that still has a viable</span> <span class="audio-time caption" data-speaker="Ross" data-start="2864.304000" data-stop="2865.527000">community.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2866.081000" data-stop="2867.463000">You do the Emacs News every week.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2867.523000" data-stop="2869.326000">You know probably better than anybody else how</span> <span class="audio-time caption" data-speaker="Ross" data-start="2869.386000" data-stop="2870.748000">viable the community is right now.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2870.808000" data-stop="2872.271000">It's still an exciting place to be.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2872.371000" data-stop="2875.095000">I don't see that changing anytime soon, whereas</span> <span class="audio-time caption" data-speaker="Ross" data-start="2875.135000" data-stop="2877.759000">I've seen so much hype over... Everybody wanted to</span> <span class="audio-time caption" data-speaker="Ross" data-start="2877.800000" data-stop="2881.065000">get on Atom, and now Atom is a basically dead editor.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2881.165000" data-stop="2883.589000">Sublime had this rise and fall.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2883.609000" data-stop="2884.650000">So many other editors.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2884.751000" data-stop="2887.515000">Now I see people... VS Code was dominant for a</span> <span class="audio-time caption" data-speaker="Ross" data-start="2887.575000" data-stop="2889.418000">while, and now I see a lot of people abandoning</span> <span class="audio-time caption" data-speaker="Ross" data-start="2889.478000" data-stop="2890.139000">VS Code.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2890.239000" data-stop="2892.082000">It's still the dominant editor, but you can start</span> <span class="audio-time caption" data-speaker="Ross" data-start="2892.122000" data-stop="2893.945000">to see people moving away from that.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2893.925000" data-stop="2896.107000">Emacs is always going to be here.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2896.127000" data-stop="2899.731000">So just as I've aged, I appreciate that Emacs,</span> <span class="audio-time caption" data-speaker="Ross" data-start="2900.312000" data-stop="2902.274000">that same thing that I was using back when I was</span> <span class="audio-time caption" data-speaker="Ross" data-start="2902.314000" data-stop="2904.696000">18, a freshman in college, it's still working for</span> <span class="audio-time caption" data-speaker="Ross" data-start="2904.736000" data-stop="2905.257000">me at 47.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2905.677000" data-stop="2908.160000">And by the time I hang up my keyboard, pretty</span> <span class="audio-time caption" data-speaker="Ross" data-start="2908.220000" data-stop="2910.162000">sure I'm still going to be using it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2910.402000" data-stop="2912.884000">It's done a remarkable job aging gracefully.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2913.305000" data-stop="2915.447000">Would I want to use the Emacs 19 today?</span> <span class="audio-time caption" data-speaker="Ross" data-start="2915.467000" data-stop="2916.448000">Absolutely not.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2916.808000" data-stop="2919.451000">Am I fully comfortable using Emacs 28 in the</span> <span class="audio-time caption" data-speaker="Ross" data-start="2919.511000" data-stop="2920.993000">sandbox environment?</span> <span class="audio-time caption" data-speaker="Ross" data-start="2921.013000" data-stop="2923.375000">Yeah, there's certain things that I miss.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2923.355000" data-stop="2925.297000">But yeah, Emacs 30 is great.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2925.377000" data-stop="2926.979000">Emacs 31 is around the corner.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2927.579000" data-stop="2929.261000">It's kept up with the times.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2929.622000" data-stop="2930.903000">We just talked about AI.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2931.423000" data-stop="2934.006000">Emacs and AI, for all my concerns about AI, Emacs</span> <span class="audio-time caption" data-speaker="Ross" data-start="2934.026000" data-stop="2936.068000">and AI are a great fit for each other because so</span> <span class="audio-time caption" data-speaker="Ross" data-start="2936.108000" data-stop="2937.810000">much of the AI stuff that we're doing is</span> <span class="audio-time caption" data-speaker="Ross" data-start="2937.870000" data-stop="2938.991000">text-based.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2939.031000" data-stop="2941.394000">Emacs is the best text processing platform that</span> <span class="audio-time caption" data-speaker="Ross" data-start="2941.414000" data-stop="2942.115000">there's ever been.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2942.155000" data-stop="2945.058000">They fit each other so well.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2945.078000" data-stop="2945.478000"><strong class="speaker-name">Sacha:</strong>  Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2945.498000" data-stop="2949.242000">And I find it very amusing that with you at 47</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2949.282000" data-stop="2952.045000">years old and I'm 43, assuming math is right,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2952.346000" data-stop="2955.738000">There are people in the Emacs community who would</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2955.778000" data-stop="2958.247000">consider us still young whippersnappers.</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="2958.267000" data-stop="2959.572000"><strong class="speaker-name">Ross:</strong>  That's right, yes.</span> <span class="audio-time caption" data-speaker="Ross" data-start="2960.362000" data-stop="2962.464000">Different demographics around here, that's for sure.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2963.285000" data-stop="2965.408000"><strong class="speaker-name">Sacha:</strong>  As well as, of course, the other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2965.548000" data-stop="2968.592000">end where you have high school students and fresh</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2968.632000" data-stop="2971.215000">grads still enjoying it, still exploring it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2972.236000" data-stop="2975.199000">And so it's great that we can customize this with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2975.360000" data-stop="2977.903000">larger font sizes or different key bindings or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2978.383000" data-stop="2982.468000">other ways to catch us from making careless</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2982.508000" data-stop="2987.554000">mistakes to adapt to us and the things that we're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2987.574000" data-stop="2988.495000">working on.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2989.218000" data-stop="2990.219000">So all this is very interesting.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2991.000000">49:51</span> <strong>Nix is good at managing package versions and customizing them; Matthew Bauer (Bauer IDE)
</strong></div><p></p><a href="https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/emacs-chat-26-ross-a-baker-00-53-01-300.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/emacs-chat-26-ross-a-baker-00-53-01-300.jpg" alt="image from video 00:53:01.300" data-time="00:53:01.300"></a><span class="audio-time caption" data-speaker="Sacha" data-start="2991.000000" data-stop="2994.726000"><strong class="speaker-name">Sacha:</strong> Oh, actually, on a different tangent, one of the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2994.746000" data-stop="2996.788000">things I was curious about is a lot of your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2996.849000" data-stop="2999.773000">configuration is set up to work well with Nix.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3000.534000" data-stop="3002.737000">Since a lot of people in Emacs are curious</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3002.777000" data-stop="3005.501000">about reproducible configurations and systems,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3005.521000" data-stop="3007.083000">could you tell us more about Nix and your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3007.123000" data-stop="3008.745000">experience with it in Emacs?</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="3009.535000" data-stop="3013.423000"><strong class="speaker-name">Ross:</strong>  Yes, so I'm using that as some</span> <span class="audio-time caption" data-speaker="Ross" data-start="3013.463000" data-stop="3016.630000">people use straight.el to pin their packages.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3016.650000" data-stop="3018.434000">Some people, they don't bother pinning their</span> <span class="audio-time caption" data-speaker="Ross" data-start="3018.474000" data-stop="3019.616000">packages at all.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3019.636000" data-stop="3023.344000">I'm using Nix for people who are unfamiliar.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3023.384000" data-stop="3024.827000">Nix is...</span> <span class="audio-time caption" data-speaker="Ross" data-start="3025.820000" data-stop="3027.662000">Boy, the elevator pitch for Nix.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3029.203000" data-stop="3030.945000">It's a package manager, but it's more than an</span> <span class="audio-time caption" data-speaker="Ross" data-start="3031.065000" data-stop="3032.366000">Emacs package manager.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3032.526000" data-stop="3035.208000">It can manage all of your packages for you.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3035.228000" data-stop="3037.370000">So I'm building Emacs with Nix.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3037.450000" data-stop="3039.773000">I'm declaring all of my packages that way.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3039.973000" data-stop="3042.955000">Then that's specifying... I have a very</span> <span class="audio-time caption" data-speaker="Ross" data-start="3043.015000" data-stop="3046.459000">repeatable build of Emacs and it has this version</span> <span class="audio-time caption" data-speaker="Ross" data-start="3046.579000" data-stop="3048.000000">of these packages.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3048.020000" data-stop="3050.182000">One thing that Nix is very good at is it's very</span> <span class="audio-time caption" data-speaker="Ross" data-start="3050.242000" data-stop="3052.444000">good at customizing certain things.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3052.464000" data-stop="3054.486000">So if you want to run a patched version of a</span> <span class="audio-time caption" data-speaker="Ross" data-start="3054.546000" data-stop="3055.827000">particular package,</span> <span class="audio-time caption" data-speaker="Ross" data-start="3055.807000" data-stop="3059.473000">you're able to specify, okay, I want this</span> <span class="audio-time caption" data-speaker="Ross" data-start="3059.533000" data-stop="3062.137000">package, I want to use this package definition,</span> <span class="audio-time caption" data-speaker="Ross" data-start="3062.177000" data-stop="3065.302000">but I want to overlay these files on top of it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3065.322000" data-stop="3066.343000">Nix excels at that.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3066.424000" data-stop="3068.407000">I'm running a lot of customized versions of</span> <span class="audio-time caption" data-speaker="Ross" data-start="3068.447000" data-stop="3070.169000">various packages, things that I've tried to</span> <span class="audio-time caption" data-speaker="Ross" data-start="3070.209000" data-stop="3072.613000">submit upstream, and the Emacs package might be</span> <span class="audio-time caption" data-speaker="Ross" data-start="3072.653000" data-stop="3075.578000">abandoned, or they might be a slow maintainer.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3075.678000" data-stop="3078.022000">I need to use it today, and they'll get around to</span> <span class="audio-time caption" data-speaker="Ross" data-start="3078.062000" data-stop="3079.143000">it, and they'll merge it in a month.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3079.163000" data-stop="3081.046000">So on a temporary basis, I'll want to run a</span> <span class="audio-time caption" data-speaker="Ross" data-start="3081.086000" data-stop="3082.168000">patched version.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3082.300000" data-stop="3085.206000">Nix makes that workflow very smooth for me where</span> <span class="audio-time caption" data-speaker="Ross" data-start="3085.246000" data-stop="3087.330000">I'm able to run patched versions of certain</span> <span class="audio-time caption" data-speaker="Ross" data-start="3087.350000" data-stop="3089.234000">packages, like I'm running a patched version of</span> <span class="audio-time caption" data-speaker="Ross" data-start="3089.274000" data-stop="3090.838000">Forge like I showed off.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3090.858000" data-stop="3092.641000">Some of the things I want to contribute upstream,</span> <span class="audio-time caption" data-speaker="Ross" data-start="3092.682000" data-stop="3093.664000">I've got those pulled out.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3093.724000" data-stop="3096.329000">I just need to sit down and actually submit them upstream.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3096.970000" data-stop="3099.175000">But I've got those ready to go and I'm able to</span> <span class="audio-time caption" data-speaker="Ross" data-start="3099.255000" data-stop="3101.800000">run those out of the box.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3101.801000" data-stop="3104.567000">It's able to run... It's not just managing Emacs.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3104.568000" data-stop="3106.067000">That's the real magic of it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3106.068000" data-stop="3109.833000">If I need certain binaries to support my Emacs config,</span> <span class="audio-time caption" data-speaker="Ross" data-start="3109.834000" data-stop="3112.800000">I can declare those, and that all comes together</span> <span class="audio-time caption" data-speaker="Ross" data-start="3112.801000" data-stop="3115.067000">and if I pull down Emacs packages,</span> <span class="audio-time caption" data-speaker="Ross" data-start="3115.068000" data-stop="3117.767000">those are all going to be there together.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3117.768000" data-stop="3120.883000">There's a really fantastic example of this.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3121.243000" data-stop="3124.187000">Matthew Bauer has something out there.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3126.361000" data-stop="3128.023000">It's Bauer, I-D-E.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3128.364000" data-stop="3130.908000">B-A-U-E-R is his last name.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3131.128000" data-stop="3133.451000">He has one of the very inspiring configurations</span> <span class="audio-time caption" data-speaker="Ross" data-start="3133.511000" data-stop="3136.055000">to me where he builds everything in Nix and he</span> <span class="audio-time caption" data-speaker="Ross" data-start="3136.135000" data-stop="3138.759000">bundles all of his binaries that he needs in Nix</span> <span class="audio-time caption" data-speaker="Ross" data-start="3138.839000" data-stop="3142.504000">and then he configures his Emacs variables to</span> <span class="audio-time caption" data-speaker="Ross" data-start="3142.545000" data-stop="3144.868000">point, not at the git that happens to be on the</span> <span class="audio-time caption" data-speaker="Ross" data-start="3144.928000" data-stop="3147.652000">file system, but to the git that he installs via Nix.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3147.692000" data-stop="3151.117000">So he knows that the entire thing is</span> <span class="audio-time caption" data-speaker="Ross" data-start="3151.177000" data-stop="3151.958000">self-contained.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3152.098000" data-stop="3154.562000">That's something I've taken a lot of inspiration from.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3155.015000" data-stop="3159.502000">If I'm on a machine that has Nix, I'm able to run this.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3159.522000" data-stop="3162.487000">If I want to run my standalone config, I can run</span> <span class="audio-time caption" data-speaker="Ross" data-start="3162.527000" data-stop="3165.051000">this command and I can run this command on any</span> <span class="audio-time caption" data-speaker="Ross" data-start="3165.111000" data-stop="3166.873000">machine that I have Nix installed on.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3167.595000" data-stop="3169.658000">It will run very fast here.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3170.239000" data-stop="3171.741000">Should run very fast here.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3172.835000" data-stop="3176.083000">and this popped up and this is my base config and</span> <span class="audio-time caption" data-speaker="Ross" data-start="3176.144000" data-stop="3180.836000">I could have run this on any machine or the my</span> <span class="audio-time caption" data-speaker="Ross" data-start="3181.277000" data-stop="3182.079000">packages are named.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3182.159000" data-stop="3184.967000">It's an old Simpsons joke when Homer is stuck in</span> <span class="audio-time caption" data-speaker="Ross" data-start="3185.027000" data-stop="3185.428000">New York.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3186.090000" data-stop="3188.937000">So that's the khlav kalash and crab juice.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3188.917000" data-stop="3190.581000">I think I've got a link to the YouTube video</span> <span class="audio-time caption" data-speaker="Ross" data-start="3190.621000" data-stop="3192.185000">somewhere in my config.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3192.205000" data-stop="3194.390000">And there's the fully built in one.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3194.410000" data-stop="3196.716000">That's something I can get on a new machine.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3197.157000" data-stop="3198.019000">I install Nix.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3198.199000" data-stop="3199.843000">All of my dot files are there.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3199.863000" data-stop="3202.068000">If I want to just run Emacs or if somebody</span> <span class="audio-time caption" data-speaker="Ross" data-start="3202.128000" data-stop="3204.213000">else wants to run my Emacs, anybody can take that</span> <span class="audio-time caption" data-speaker="Ross" data-start="3204.253000" data-stop="3205.356000">config and run it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3205.000000">53:25</span> <strong>Custom fonts</strong></div><p></p><span class="audio-time caption" data-speaker="Ross" data-start="3205.336000" data-stop="3207.501000"><strong class="speaker-name">Ross:</strong> Now if you do that, a word of warning.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3207.521000" data-stop="3210.146000">One thing that I've done is this font that you</span> <span class="audio-time caption" data-speaker="Ross" data-start="3210.186000" data-stop="3211.709000">see is a custom font.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3212.010000" data-stop="3215.918000">I took the Iosevka font and I customized a lot of</span> <span class="audio-time caption" data-speaker="Ross" data-start="3215.938000" data-stop="3216.720000">the glyphs on it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3216.820000" data-stop="3218.824000">When I do that, I build that in Nix as well.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3218.985000" data-stop="3220.628000">You can use Nix to build your fonts.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3220.608000" data-stop="3222.552000">That's part of my derivation.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3222.572000" data-stop="3225.558000">My Emacs config depends on my fonts.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3225.979000" data-stop="3228.304000">If you try to run these, you're going to have</span> <span class="audio-time caption" data-speaker="Ross" data-start="3228.324000" data-stop="3229.406000">to compile the fonts.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3229.427000" data-stop="3231.751000">I compile a lot of variants of these fonts.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3231.812000" data-stop="3233.635000">I compile a lot of alphabets.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3233.655000" data-stop="3235.058000">Linguistics is one of my hobbies.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3235.078000" data-stop="3237.183000">I love to work in these other alphabets and</span> <span class="audio-time caption" data-speaker="Ross" data-start="3237.243000" data-stop="3237.944000">things like that.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3237.964000" data-stop="3240.169000">I'm very opinionated on these things.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3240.149000" data-stop="3242.552000">Even in languages that I don't speak, I like the</span> <span class="audio-time caption" data-speaker="Ross" data-start="3242.732000" data-stop="3243.813000">text to look a certain way.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3243.853000" data-stop="3245.956000">Just one of the other ways I blow off steam.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3245.976000" data-stop="3248.459000">But anyway, I've got this custom font that I use</span> <span class="audio-time caption" data-speaker="Ross" data-start="3248.519000" data-stop="3248.819000">everywhere.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3248.839000" data-stop="3250.121000">It's the font on my website.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3250.161000" data-stop="3252.163000">It's the font that you see in my editor and my</span> <span class="audio-time caption" data-speaker="Ross" data-start="3252.203000" data-stop="3252.804000">terminal.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3253.345000" data-stop="3255.307000">If you pull this package, you'll get my font and</span> <span class="audio-time caption" data-speaker="Ross" data-start="3255.327000" data-stop="3257.270000">you'll have to compile that and you're going to</span> <span class="audio-time caption" data-speaker="Ross" data-start="3257.310000" data-stop="3259.532000">heat the room with your CPU for about 30 minutes</span> <span class="audio-time caption" data-speaker="Ross" data-start="3259.612000" data-stop="3260.353000">if you do so.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3260.373000" data-stop="3261.715000">So beware on that.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3262.396000" data-stop="3264.799000">Otherwise, if you want to run my config, it's all</span> <span class="audio-time caption" data-speaker="Ross" data-start="3264.859000" data-stop="3266.781000">out there if you have Nix.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3267.824000" data-stop="3269.609000">I don't know how practical that is, but it makes</span> <span class="audio-time caption" data-speaker="Ross" data-start="3269.650000" data-stop="3270.191000">me feel good.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3270.000000">54:30</span> <strong>Starter kits versus configs</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3270.913000" data-stop="3272.037000"><strong class="speaker-name">Sacha:</strong>  Now I'm curious, have you heard</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3272.077000" data-stop="3274.464000">from people using your base config or your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3274.524000" data-stop="3275.186000">extended one?</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="3278.737000" data-stop="3280.382000"><strong class="speaker-name">Ross:</strong>  I've heard of people</span> <span class="audio-time caption" data-speaker="Ross" data-start="3280.666000" data-stop="3281.567000">copying out of it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3281.607000" data-stop="3283.149000">I haven't heard of people depending on it</span> <span class="audio-time caption" data-speaker="Ross" data-start="3283.189000" data-stop="3283.670000">directly.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3283.690000" data-stop="3285.112000">I would generally discourage people.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3285.232000" data-stop="3287.896000">That's kind of the difference between a starter kit and a config.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3287.996000" data-stop="3292.442000">You did an excellent series here on starter kits recently.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3292.462000" data-stop="3294.785000">I don't see this necessarily as a starter kit.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3294.805000" data-stop="3297.049000">This is very opinionated to the way I do things.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3297.109000" data-stop="3298.030000">I hope people look at it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3298.090000" data-stop="3300.393000">I hope people draw inspiration from it, copy from it.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3300.513000" data-stop="3301.154000">Absolutely.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3301.635000" data-stop="3303.237000">But I'm going to change things on a whim.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3303.257000" data-stop="3305.100000">If you're using this as a base layer, you're</span> <span class="audio-time caption" data-speaker="Ross" data-start="3305.140000" data-stop="3307.122000">going to find my opinions thrust upon you.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3307.163000" data-stop="3308.985000">You're probably not going to like half of them.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3310.180000" data-stop="3312.543000"><strong class="speaker-name">Sacha:</strong>  Well, your config is very nicely</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3312.603000" data-stop="3315.106000">documented and rather enjoyable to read.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3315.206000" data-stop="3319.111000">So I can imagine people will get a lot by reading</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3319.191000" data-stop="3321.074000">it for the things they can copy and paste to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3321.094000" data-stop="3321.975000">their config.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3321.995000" data-stop="3323.997000">I also particularly like how even your code</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3324.017000" data-stop="3327.742000">snippets, you've customized it to include the license.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3328.263000" data-stop="3331.627000">So it's like every little bit of that is easy for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3331.687000" data-stop="3334.451000">people to copy from confidently.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3334.000000">55:34</span> <strong>Nix vs Guix; Mac</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3334.711000" data-stop="3335.912000"><strong class="speaker-name">Sacha:</strong> Trevok has a question.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3335.992000" data-stop="3338.095000">Hopefully without starting a philosophical war,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3338.155000" data-stop="3339.597000">why Nix over Guix?</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="3340.943000" data-stop="3343.647000"><strong class="speaker-name">Ross:</strong>  I would love to run Guix, but I</span> <span class="audio-time caption" data-speaker="Ross" data-start="3343.727000" data-stop="3346.210000">have a Mac for work and Guix doesn't have a good</span> <span class="audio-time caption" data-speaker="Ross" data-start="3346.251000" data-stop="3348.434000">Mac story. I'm sharing a lot, not just my</span> <span class="audio-time caption" data-speaker="Ross" data-start="3348.574000" data-stop="3350.296000">Emacs configuration, but a lot of other</span> <span class="audio-time caption" data-speaker="Ross" data-start="3350.356000" data-stop="3354.042000">configurations, because Nix is more broadly scoped.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3354.122000" data-stop="3356.004000">I'm able to share a bunch of things between those</span> <span class="audio-time caption" data-speaker="Ross" data-start="3356.044000" data-stop="3357.727000">two operating systems.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3357.747000" data-stop="3360.090000">So the server that I run, the rossabaker.com,</span> <span class="audio-time caption" data-speaker="Ross" data-start="3360.110000" data-stop="3361.272000">that runs on NixOS.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3361.352000" data-stop="3363.635000">This laptop that I'm on runs on NixOS, and then I</span> <span class="audio-time caption" data-speaker="Ross" data-start="3363.675000" data-stop="3364.977000">have the Darwin machine.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3364.957000" data-stop="3367.121000">There are certain things that are compatible</span> <span class="audio-time caption" data-speaker="Ross" data-start="3367.181000" data-stop="3367.962000">between Linux.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3367.982000" data-stop="3369.384000">There are certain things that are compatible</span> <span class="audio-time caption" data-speaker="Ross" data-start="3369.424000" data-stop="3370.807000">between the workstations.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3370.827000" data-stop="3372.810000">And then Darwin has its own weird area.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3373.211000" data-stop="3374.753000">I'm able to manage all of that with Nix.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3374.813000" data-stop="3376.516000">I couldn't do that with Guix.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3376.536000" data-stop="3378.780000">If Guix gets a good Darwin story, I will switch</span> <span class="audio-time caption" data-speaker="Ross" data-start="3378.840000" data-stop="3379.902000">tomorrow,</span> <span class="audio-time caption" data-speaker="Ross" data-start="3379.922000" data-stop="3381.444000">because I would love to be configuring with</span> <span class="audio-time caption" data-speaker="Ross" data-start="3381.464000" data-stop="3381.805000">Scheme.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3382.887000" data-stop="3386.593000"><strong class="speaker-name">Sacha:</strong>  Totally different tangent yet again.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3386.000000">56:26</span> <strong>Non-work interests: Org for documenting; ox-hugo and multiple languages</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3386.894000" data-stop="3390.137000"><strong class="speaker-name">Sacha:</strong> Do you use Emacs for your other interests?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3390.177000" data-stop="3392.579000">You've mentioned things like you use it to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3392.659000" data-stop="3396.203000">publish your youth soccer homepage.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3396.923000" data-stop="3399.025000">What about for your aquarium or linguistics or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3399.105000" data-stop="3400.206000">other things you're interested in?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3402.108000" data-stop="3404.650000">Tell us about the non-work uses of Emacs in your life.</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="3406.212000" data-stop="3407.373000"><strong class="speaker-name">Ross:</strong>  That would mostly be just</span> <span class="audio-time caption" data-speaker="Ross" data-start="3407.473000" data-stop="3410.275000">documenting things in Org Mode.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3410.916000" data-stop="3412.998000">Like I mentioned, it's a big Org doc, and if you</span> <span class="audio-time caption" data-speaker="Ross" data-start="3413.038000" data-stop="3414.699000">read this doc, you'll see that it's a very</span> <span class="audio-time caption" data-speaker="Ross" data-start="3414.760000" data-stop="3416.361000">sprawling thing.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3416.476000" data-stop="3421.203000">For the linguistics, one thing with ox-hugo is</span> <span class="audio-time caption" data-speaker="Ross" data-start="3421.243000" data-stop="3422.425000">that integrates nicely.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3422.505000" data-stop="3424.648000">I know you've been learning French.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3425.009000" data-stop="3426.812000">I think that's cool how you're doing that.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3426.852000" data-stop="3428.574000">Spanish and German are my two hobbies.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3428.614000" data-stop="3430.197000">I've actually got a trilingual site.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3430.698000" data-stop="3433.262000">The English is way more populated than Spanish</span> <span class="audio-time caption" data-speaker="Ross" data-start="3433.302000" data-stop="3433.822000">and the German.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3433.842000" data-stop="3435.565000">Those are afterthoughts.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3435.764000" data-stop="3438.347000">I learned Spanish in college and I learned German</span> <span class="audio-time caption" data-speaker="Ross" data-start="3438.387000" data-stop="3440.389000">in high school. I just try to keep current</span> <span class="audio-time caption" data-speaker="Ross" data-start="3440.429000" data-stop="3442.531000">with that, but I'm not particularly fluent in</span> <span class="audio-time caption" data-speaker="Ross" data-start="3442.631000" data-stop="3443.692000">either.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3443.712000" data-stop="3446.035000">There was a wonderful IndieWeb Carnival that</span> <span class="audio-time caption" data-speaker="Ross" data-start="3446.075000" data-stop="3446.455000">came up.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3446.515000" data-stop="3448.798000">It was called Multilingualism on the Web and</span> <span class="audio-time caption" data-speaker="Ross" data-start="3448.818000" data-stop="3450.880000">that's when I sat down and I'm like, okay, I want</span> <span class="audio-time caption" data-speaker="Ross" data-start="3450.940000" data-stop="3452.061000">to do this.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3452.081000" data-stop="3454.044000">I'm going to write this article and I'm not just</span> <span class="audio-time caption" data-speaker="Ross" data-start="3454.084000" data-stop="3455.265000">going to write it in one language.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3455.285000" data-stop="3457.087000">I'm going to write it in all three languages that</span> <span class="audio-time caption" data-speaker="Ross" data-start="3457.147000" data-stop="3458.148000">I speak.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3458.168000" data-stop="3460.631000">Hugo has these facilities for taking the same</span> <span class="audio-time caption" data-speaker="Ross" data-start="3460.731000" data-stop="3463.233000">article and publishing them on all three sites</span> <span class="audio-time caption" data-speaker="Ross" data-start="3463.293000" data-stop="3464.775000">and linking them across each other.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3465.430000" data-stop="3468.974000">And ox-hugo, that passes through.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3468.994000" data-stop="3471.856000">ox-hugo uses Hugo as a compilation target.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3471.996000" data-stop="3476.061000">ox-hugo, I was able to set the metadata on there.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3476.081000" data-stop="3478.462000">If you've noticed my file name in this editor...</span> <span class="audio-time caption" data-speaker="Ross" data-start="3478.463000" data-stop="3484.169000">I name everything after Simpsons puns: cromulent.en.org.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3484.189000" data-stop="3489.073000">And then I also have... I do have them separated by language.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3490.415000" data-stop="3492.737000">Here's my Spanish document and then,</span> <span class="audio-time caption" data-speaker="Ross" data-start="3493.983000" data-stop="3496.507000">very predictably, here's my German document.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3497.007000" data-stop="3499.850000">By doing this in Org Mode with ox-hugo,</span> <span class="audio-time caption" data-speaker="Ross" data-start="3499.851000" data-stop="3502.035000">I'm able to link together the posts that are</span> <span class="audio-time caption" data-speaker="Ross" data-start="3502.075000" data-stop="3504.378000">translated into multiple languages.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3504.398000" data-stop="3506.040000">And then those all appear, if you go out to the</span> <span class="audio-time caption" data-speaker="Ross" data-start="3506.101000" data-stop="3509.085000">Hugo site, like the rossabaker.com, you can go</span> <span class="audio-time caption" data-speaker="Ross" data-start="3509.165000" data-stop="3510.787000">there and anything that's available in multiple</span> <span class="audio-time caption" data-speaker="Ross" data-start="3510.827000" data-stop="3512.450000">languages, that'll show up.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3512.470000" data-stop="3514.052000">You can click through the Spanish or German</span> <span class="audio-time caption" data-speaker="Ross" data-start="3514.092000" data-stop="3515.434000">translation of those.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3515.617000" data-stop="3517.019000"><strong class="speaker-name">Sacha:</strong>  I didn't notice any shortcuts in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3517.039000" data-stop="3519.363000">your config for quickly switching to another,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3519.503000" data-stop="3522.407000">like the Org mode source in a different language</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3522.468000" data-stop="3523.309000">for the same post.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3523.389000" data-stop="3526.373000">Would you happen to have any conveniences like</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3526.414000" data-stop="3526.614000">that,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3527.095000" data-stop="3529.078000">or do you just manually switch to the other file</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3529.138000" data-stop="3530.520000">and then find it?</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="3530.540000" data-stop="3532.763000"><strong class="speaker-name">Ross:</strong>  I just manually switch to that, but</span> <span class="audio-time caption" data-speaker="Ross" data-start="3532.843000" data-stop="3533.965000">the data is all there.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3534.025000" data-stop="3538.933000">The file names have to line up, so that's</span> <span class="audio-time caption" data-speaker="Ross" data-start="3538.973000" data-stop="3540.195000">definitely a helper I could write.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3540.515000" data-stop="3542.518000">If I can find time to get back into this, that</span> <span class="audio-time caption" data-speaker="Ross" data-start="3542.558000" data-stop="3544.341000">would be an excellent. I love your idea.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3544.827000" data-stop="3545.989000"><strong class="speaker-name">Sacha:</strong>  Yeah, because I figured,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3546.029000" data-stop="3547.832000">if you're going to write something, you might</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3547.872000" data-stop="3549.775000">want to switch between languages very quickly.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3549.795000" data-stop="3552.860000">If you make an edit, okay, "I'm going to add this thought to it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3553.140000" data-stop="3554.162000">I want to switch to the other ones."</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="3554.422000" data-stop="3555.944000"><strong class="speaker-name">Ross:</strong>  Yeah, typically I'll just take care</span> <span class="audio-time caption" data-speaker="Ross" data-start="3555.984000" data-stop="3557.927000">of that with a split window and I'll have the two</span> <span class="audio-time caption" data-speaker="Ross" data-start="3557.988000" data-stop="3558.849000">up there that way.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3559.610000" data-stop="3561.513000">That way, I'm comparing them side by side.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3561.573000" data-stop="3563.777000">That's probably why I haven't had that yet,</span> <span class="audio-time caption" data-speaker="Ross" data-start="3563.817000" data-stop="3566.200000">but it would still be nice to see, okay, "I do</span> <span class="audio-time caption" data-speaker="Ross" data-start="3566.260000" data-stop="3567.583000">want to make a quick edit in there."</span> <span class="audio-time caption" data-speaker="Ross" data-start="3567.603000" data-stop="3569.365000">It would at least scroll me to that point in the</span> <span class="audio-time caption" data-speaker="Ross" data-start="3569.405000" data-stop="3570.447000">other window quicker.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3571.523000" data-stop="3573.466000"><strong class="speaker-name">Sacha:</strong>  If you add more language-related</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3573.486000" data-stop="3576.291000">stuff to your extended config, I'm very</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3576.351000" data-stop="3579.516000">interested in what people use to look up</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3579.577000" data-stop="3581.440000">dictionaries, look up example sentences, and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3581.460000" data-stop="3582.722000">things like that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3582.802000" data-stop="3585.527000">@blaiseutube says, "Recovering linguist here.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3585.667000" data-stop="3587.690000">English, Spanish, and French for work.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3587.730000" data-stop="3590.595000">Japanese, Portuguese, Sanskrit, and Swedish for fun."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3590.575000" data-stop="3594.720000">So I'm guessing there are a lot of linguists or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3595.320000" data-stop="3598.363000">people who do language learning as a hobby who</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3598.384000" data-stop="3599.345000">use Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3599.365000" data-stop="3601.267000">It's great because you can switch to all the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3601.427000" data-stop="3603.309000">different input methods very easily too.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3603.489000" data-stop="3605.311000">It's all text.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3608.214000" data-stop="3609.035000">Oh, this is fantastic.</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="3609.115000" data-stop="3610.617000"><strong class="speaker-name">Ross:</strong>  For all the diacritics that we</span> <span class="audio-time caption" data-speaker="Ross" data-start="3610.657000" data-stop="3613.839000">don't have on the US layout keyboard,</span> <span class="audio-time caption" data-speaker="Ross" data-start="3613.840000" data-stop="3617.224000">the <code>C-x 8</code> key binding.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3617.592000" data-stop="3621.817000">Autocomplete if you need an obscure Unicode</span> <span class="audio-time caption" data-speaker="Ross" data-start="3621.857000" data-stop="3624.240000">character, and it'll autocomplete on all those.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3625.141000" data-stop="3629.186000">So, okay, I want nice little built-in there.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3630.488000" data-stop="3632.090000"><strong class="speaker-name">Sacha:</strong>  Yeah, on Linux, I've just been</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3632.170000" data-stop="3634.673000">using <code>setxkbmap</code> to switch my layout</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3634.693000" data-stop="3637.697000">temporarily, but I also like just being able to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3637.777000" data-stop="3641.361000">set the input method in Emacs in case I just want</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3641.401000" data-stop="3643.704000">to write something quickly, then I can just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3643.744000" data-stop="3646.268000"><code>C-\</code>, I think.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3646.548000" data-stop="3651.816000">Okay, I've got about one minute</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3651.856000" data-stop="3653.599000">before the kid does lunch break.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3653.619000" data-stop="3654.761000">Thank you so much for doing this.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3655.442000" data-stop="3658.667000">Was there anything that you wanted to pass on as</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3658.728000" data-stop="3663.195000">a key tip that you'd like people to know from</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3663.235000" data-stop="3667.362000">your experience with using Emacs?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3667.763000" data-stop="3671.309000">What's something we haven't mentioned that you'd</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3671.329000" data-stop="3671.950000">like to share?</span> <p></p><span class="audio-time caption" data-speaker="Ross" data-start="3673.246000" data-stop="3677.159000"><strong class="speaker-name">Ross:</strong>  I guess I didn't mention the things that I think</span> <span class="audio-time caption" data-speaker="Ross" data-start="3677.279000" data-stop="3678.483000">are exciting outside.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3678.503000" data-stop="3680.289000">We talked about the built-in configs, so the</span> <span class="audio-time caption" data-speaker="Ross" data-start="3680.349000" data-stop="3684.522000">things that I missed the most, I would say...</span> <span class="audio-time caption" data-speaker="Ross" data-start="3685.480000" data-stop="3687.602000">Well, I guess look at my crab juice config.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3687.743000" data-stop="3689.685000">Those are the packages that I found that I</span> <span class="audio-time caption" data-speaker="Ross" data-start="3689.765000" data-stop="3691.307000">absolutely cannot live without.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3691.867000" data-stop="3693.589000">Magit, a few language modes.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3694.651000" data-stop="3696.673000">You can get by on the built-in thing a lot better</span> <span class="audio-time caption" data-speaker="Ross" data-start="3696.713000" data-stop="3698.315000">than you think, but there are a few things that</span> <span class="audio-time caption" data-speaker="Ross" data-start="3698.335000" data-stop="3700.417000">are out there that are the really special ones,</span> <span class="audio-time caption" data-speaker="Ross" data-start="3700.437000" data-stop="3702.339000">and I think that's the distilled essence of that.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3702.580000" data-stop="3704.482000">Just take a look at that package.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3704.502000" data-stop="3706.504000">Those are the ones that, yeah, I tried really</span> <span class="audio-time caption" data-speaker="Ross" data-start="3706.544000" data-stop="3708.427000">hard on the built-ins and I failed.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3708.467000" data-stop="3710.269000">These are the ones I really need.</span> <span class="audio-time caption" data-speaker="Ross" data-start="3710.289000" data-stop="3711.951000">I'd encourage people to take a look at that as well.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3712.772000" data-stop="3713.192000"><strong class="speaker-name">Sacha:</strong>  All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3713.493000" data-stop="3716.745000">For folks who are watching, you can find all</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3716.765000" data-stop="3718.893000">of that stuff at rossabaker.com.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3719.615000" data-stop="3720.378000">Thank you so much.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3720.659000" data-stop="3724.212000">You've got links to your GitHub and Berg.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3724.883000" data-stop="3730.188000">Thanks to everyone on the stream for hanging out</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3730.268000" data-stop="3731.890000">and for sharing your questions and comments.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3732.471000" data-stop="3737.716000">I almost forgot to mention [@ispringle] had a tip</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3737.776000" data-stop="3743.242000">about putting emacs-lock-mode on a keyboard</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3743.262000" data-stop="3747.606000">shortcut so you can toggle it if you wanted to.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3748.307000" data-stop="3749.147000">Nice idea.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3749.428000" data-stop="3750.329000">Again, thank you everyone.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3750.349000" data-stop="3751.650000">We're going to end the stream here.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3751.630000" data-stop="3753.494000">I will work on the transcripts and all that stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3753.574000" data-stop="3756.500000">Thanks again Ross for doing this, and I'll see</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3756.540000" data-stop="3758.905000">everyone around probably in September or October</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3758.945000" data-stop="3764.998000">because I have to be on summer vacation.</span></div>
<p></p>


<a name="end-emacs-chat-26-ross-a-baker-transcript"></a></details>


<p>
I'll update this blog post with the transcript.
<a href="https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/">https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/</a>
</p>

<p>
Find more Emacs Chats or join the fun: <a href="https://sachachua.com/emacs-chat">https://sachachua.com/emacs-chat</a>
</p>
</div>
</div>
<div id="outline-container-emacs-chats-emacs-chat-26-ross-a-baker-chat" class="outline-3">
<h3 id="emacs-chats-emacs-chat-26-ross-a-baker-chat"><a href="https://sachachua.com/blog/feed/index.xml#emacs-chats-emacs-chat-26-ross-a-baker-chat">Chat</a></h3>
<div class="outline-text-3" id="text-emacs-chats-emacs-chat-26-ross-a-baker-chat">
<ul class="org-ul">
<li><span class="nick">Ray-On-Emacs:</span> ​​How do you exit Emacs, then? Or do you never exit Emacs?</li>
<li><span class="nick">pratikmishra4073:</span> ​i stealing that lock mode hack. i too have killed scratch buffer accidentally before.</li>
<li><span class="nick">ispringle:</span> ​`(global-set-key (kbd "C-c l") #'emacs-lock-mode)` is handy for one off locks too</li>
<li><span class="nick">PuercoPop:</span> ​​There is a gh-notify package specifically for high volume GitHub notifications</li>
<li><span class="nick">blaiseutube:</span> ​​I keep procrastinating my return to emacs 😔</li>
<li><span class="nick">gr1maldi:</span> ​​Yo, and stuff. Sorry I'm late.</li>
<li><span class="nick">Ray-On-Emacs:</span> ​​Getting older! Oh boy! more tell me, please</li>
<li><span class="nick">dubstepandlovee:</span> ​​fantastic chat so far! as a local agent user, gptel-agent looks like an interesting project</li>
<li><span class="nick">Trevoke:</span> ​​Hopefully without starting a philosophical war, why nix over guix?</li>
<li><span class="nick">dubstepandlovee:</span> ​why nix over lix</li>
<li><span class="nick">dubstepandlovee:</span> ​(joke)</li>
<li><span class="nick">Trevoke:</span> ​​<b>shakes fist in F/OSS</b> Thanks for the answer</li>
<li><span class="nick">blaiseutube:</span> ​​recovering linguist here. English Spanish and French for work. Japanese Portuguese, Sanskrit and Swedish for fun.</li>
<li><span class="nick">blaiseutube:</span> ​​c-x h ? I love it</li>
<li><span class="nick">sachactube:</span> ​​Maybe C-x 8 RET</li>
<li><span class="nick">blaiseutube:</span> ​oh! thank you</li>
<li><span class="nick">Ray-On-Emacs:</span> Thank you!</li>
</ul>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/index.org">View Org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F06%2Femacs-chat-with-ross-a-baker%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>Emacs Chat 25: Ben Zanin (@gnomon@mastodon.social)</title>
		<link>https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Thu, 04 Jun 2026 12:50:07 GMT</pubDate>
    <category>emacs</category>
<category>emacs-chat</category>
<category>emacs-chat-podcast</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/</guid>
		<description><![CDATA[<div class="update" id="org936ce5a">
<p>
<span class="timestamp-wrapper"><time class="timestamp" datetime="2026-06-10">[2026-06-10 Wed]</time></span>: Updated the transcript
</p>

</div>

<p>
I chatted with Ben Zanin about music, Org Mode, Emacs in terminals and on an Android, keyboards, elfeed, and more.
<video preload="none" controls="1" src="https://archive.org/download/emacs-chat-25-ben-zanin/emacs-chat-25-ben-zanin.mp4" poster="https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/2026-05-02-12-18-58%20ben-zanin.png" type="video/mp4"><track kind="subtitles" label="Captions" src="https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/emacs-chat-25-ben-zanin.vtt" srclang="en" default=""><span>Video not supported. Thumbnail:<br><img src="https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/2026-05-02-12-18-58%20ben-zanin.png" alt="Thumbnail"></span></video>
</p>

<p>
<a href="https://archive.org/details/emacs-chat-25-ben-zanin/">View in the Internet Archive</a>, <a href="https://youtube.com/live/ax4f5uaOHA8">watch or comment on YouTube</a>, <a href="https://sachachua.com/blog/feed/index.xml#ID-emacs-chat-25-ben-zanin-transcript">read the transcript online</a>, <a href="https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/emacs-chat-25-ben-zanin.vtt">download the transcript</a>, or <a href="mailto:sacha@sachachua.com">e-mail me</a>.
</p>
<div id="outline-container-emacs-chats-emacs-chat-25-ben-zanin-gnomon-mastodon-social-related-links" class="outline-3">
<h3 id="emacs-chats-emacs-chat-25-ben-zanin-gnomon-mastodon-social-related-links"><a href="https://sachachua.com/blog/feed/index.xml#emacs-chats-emacs-chat-25-ben-zanin-gnomon-mastodon-social-related-links">Related links</a></h3>
<div class="outline-text-3" id="text-emacs-chats-emacs-chat-25-ben-zanin-gnomon-mastodon-social-related-links">
<ul class="org-ul">
<li><a href="https://mastodon.social/@gnomon">Ben Zanin (@gnomon@mastodon.social) - Mastodon</a>: Robertson screwdriver owner, believer in the value of personal-scale computing and skeptic of the value of computing scales any larger than that</li>
<li><a href="https://git.sr.ht/~gnomon/emacs-config-gnomon">~gnomon/emacs-config-gnomon - An edited/truncated subset of my dotfiles repo to pick out only those commits and files that are pertinent to my emacs configuration, as of 2026-05-06 - sourcehut git</a></li>
<li><a href="https://git.sr.ht/~gnomon/">~gnomon's git repositories</a></li>
<li><a target="_blank" href="https://melpa.org/#/elfeed">elfeed</a>, <a target="_blank" href="https://melpa.org/#/elfeed-curate">elfeed-curate</a></li>
<li><a target="_blank" href="https://melpa.org/#/versuri">versuri</a> and <a target="_blank" href="https://melpa.org/#/mpdel">mpdel</a> - lyrics, music</li>
<li><a target="_blank" href="https://melpa.org/#/avy">avy</a></li>
<li><a href="https://wezterm.org/index.html">WezTerm - Wez's Terminal Emulator</a></li>
<li><a href="https://keychron.ca/products/keychron-b11-pro-ultra-slim-wireless-foldable-keyboard-us-ansi-layout">Keychron B11 Pro Ultra-Slim Wireless Foldable Keyboard (US ANSI Layout – Keychron Canada</a></li>
<li>tea-timer and <a target="_blank" href="https://elpa.gnu.org/packages/tmr.html">tmr</a></li>
<li>mytoots</li>
<li><a href="https://public-inbox.org/README">public-inbox</a> for reading mailing lists</li>
</ul>

<p>
You can add the iCal for upcoming Emacs Chat episodes to your calendar. <a href="https://sachachua.com/topic/emacs-chat/upcoming-emacs-chats.ics">https://sachachua.com/topic/emacs-chat/upcoming-emacs-chats.ics</a>
</p>

<p>
Find more Emacs Chats or join the fun: <a href="https://sachachua.com/emacs-chat">https://sachachua.com/emacs-chat</a>
</p>
</div>
</div>
<div id="outline-container-emacs-chat-25-ben-zanin-chapters" class="outline-3">
<h3 id="emacs-chat-25-ben-zanin-chapters"><a href="https://sachachua.com/blog/feed/index.xml#emacs-chat-25-ben-zanin-chapters">Chapters</a></h3>
<div class="outline-text-3" id="text-emacs-chat-25-ben-zanin-chapters">
<p>
</p><ul class="org-ul">
<li><span class="audio-time" data-start="0.031" data-stop="10.045">0:00</span> How Ben got started with Emacs</li>
<li><span class="audio-time" data-start="139.485" data-stop="141.007">2:19</span> Ben got into Emacs because of twittering-mode</li>
<li><span class="audio-time" data-start="270.959" data-stop="272.721">4:30</span> Emacs as a media playback platform with Versuri and Mpdel</li>

<li><span class="audio-time" data-start="553.547" data-stop="557.492">9:13</span> Emacs on Android with Termux</li>
<li><span class="audio-time" data-start="824.296" data-stop="825.958">13:44</span> Keyboards and other devices</li>
<li><span class="audio-time" data-start="1004.195" data-stop="1005.818">16:44</span> Benefits of a split keyboard</li>
<li><span class="audio-time" data-start="1102.053" data-stop="1104.759">18:22</span> Meeting workflow</li>
<li><span class="audio-time" data-start="1271.710" data-stop="1272.731">21:11</span> Narrowing</li>
<li><span class="audio-time" data-start="1378.718" data-stop="1381.541">22:58</span> There's even an internal Slack channel about Emacs at Ben's company</li>
<li><span class="audio-time" data-start="1490.340" data-stop="1491.823">24:50</span> Ben keeps Org capture templates as individual files and adapts them to different meeting flows</li>
<li><span class="audio-time" data-start="1725.936" data-stop="1728.220">28:45</span> Personal-scale software and the journey</li>

<li><span class="audio-time" data-start="2047.728" data-stop="2050.194">34:07</span> vc-git-grep for finding notes again</li>
<li><span class="audio-time" data-start="2215.979" data-stop="2220.225">36:55</span> Add keywords to make things easier to find again</li>
<li><span class="audio-time" data-start="2267.997" data-stop="2271.202">37:47</span> Keybindings and terminals; wezterm</li>
<li><span class="audio-time" data-start="2558.779" data-stop="2559.861">42:38</span> Timers: tea-timer, tmr</li>
<li><span class="audio-time" data-start="2637.198" data-stop="2641.697">43:57</span> Different stages of package use</li>
<li><span class="audio-time" data-start="2687.672" data-stop="2689.134">44:47</span> Elfeed</li>
<li><span class="audio-time" data-start="2916.308" data-stop="2920.434">48:36</span> Spoilers</li>

<li><span class="audio-time" data-start="2993.605" data-stop="2996.107">49:53</span> Comparing different news sources</li>
<li><span class="audio-time" data-start="3193.206" data-stop="3195.168">53:13</span> Bookmark naming conventions</li>
<li><span class="audio-time" data-start="3204.881" data-stop="3207.383">53:24</span> Naming conventions simplify building new workflows</li>
<li><span class="audio-time" data-start="3230.986" data-stop="3232.609">53:50</span> elfeed-curate for annotations</li>

<li><span class="audio-time" data-start="3346.164" data-stop="3348.488">55:46</span> mytoots archives Mastodon toots</li>
<li><span class="audio-time" data-start="3426.247" data-stop="3428.029">57:06</span> Mentoring offer</li>
<li><span class="audio-time" data-start="3482.003" data-stop="3483.306">58:02</span> A local instance of public-inbox can let you use Gnus to read mailing lists quickly</li>
</ul>

<p></p>
</div>
</div>
<div id="outline-container-emacs-chat-25-ben-zanin-transcript-section" class="outline-3">
<h3 id="emacs-chat-25-ben-zanin-transcript-section"><a href="https://sachachua.com/blog/feed/index.xml#emacs-chat-25-ben-zanin-transcript-section">Transcript</a></h3>
<div class="outline-text-3" id="text-emacs-chat-25-ben-zanin-transcript-section">
<details class="code-details"><a name="ID-emacs-chat-25-ben-zanin-transcript"></a><summary>Expand this to read the transcript</summary>
<p>
</p><div class="full-transcript"><p></p><div class="transcript-heading"><span class="audio-time" data-start="0.000000">0:00</span> <strong>How Ben got started with Emacs</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="0.031000" data-stop="10.045000"><strong class="speaker-name">Sacha:</strong>  I forgot to ask you how your last</span> <span class="audio-time caption" data-speaker="Sacha" data-start="10.085000" data-stop="10.886000">name is pronounced.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="11.527000" data-stop="13.429000"><strong class="speaker-name">Ben:</strong>  Oh, Zanin.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="13.629000" data-stop="17.354000"><strong class="speaker-name">Sacha:</strong>  This is Emacs chat number 25 and here I am with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="18.155000" data-stop="18.896000">Ben Zanin.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="20.479000" data-stop="22.722000">You have a math background and now you're in IT.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="24.364000" data-stop="26.747000">Where did you encounter Emacs in the journey?</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="28.415000" data-stop="29.557000"><strong class="speaker-name">Ben:</strong>  So the reason I have a math</span> <span class="audio-time caption" data-speaker="Ben" data-start="29.577000" data-stop="31.802000">background is that I wanted to get into</span> <span class="audio-time caption" data-speaker="Ben" data-start="31.862000" data-stop="34.888000">programming language design and at the time so</span> <span class="audio-time caption" data-speaker="Ben" data-start="34.928000" data-stop="37.193000">that led me over to lambda calculus and that kind</span> <span class="audio-time caption" data-speaker="Ben" data-start="37.233000" data-stop="40.619000">of thing and at the time it was at the time I was</span> <span class="audio-time caption" data-speaker="Ben" data-start="40.640000" data-stop="44.888000">getting into university in like 2005-2006</span> <span class="audio-time caption" data-speaker="Ben" data-start="45.543000" data-stop="47.633000">It was impossible to get into the computer programs,</span> <span class="audio-time caption" data-speaker="Ben" data-start="47.634000" data-stop="49.200000">but I could get into math.</span> <span class="audio-time caption" data-speaker="Ben" data-start="49.201000" data-stop="52.500000">I figured that would move me in the direction that I wanted</span> <span class="audio-time caption" data-speaker="Ben" data-start="52.501000" data-stop="55.067000">to go in, so I did.</span> <span class="audio-time caption" data-speaker="Ben" data-start="55.068000" data-stop="58.167000">Got to third year, and then every professor</span> <span class="audio-time caption" data-speaker="Ben" data-start="58.168000" data-stop="59.933000">who taught any of the courses I cared about</span> <span class="audio-time caption" data-speaker="Ben" data-start="59.934000" data-stop="61.500000">all left the faculty at the same time.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="61.501000" data-stop="62.967000"><strong class="speaker-name">Sacha:</strong>  Oh no!</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="62.968000" data-stop="66.820000"><strong class="speaker-name">Ben:</strong>  Yeah. Anyhow, that's a different story.</span> <span class="audio-time caption" data-speaker="Ben" data-start="66.821000" data-stop="70.564000">But yeah, I got into Emacs because in the process</span> <span class="audio-time caption" data-speaker="Ben" data-start="70.624000" data-stop="73.026000">of learning about Lambda Calculus, the Lisp</span> <span class="audio-time caption" data-speaker="Ben" data-start="73.046000" data-stop="73.927000">weenies found me.</span> <span class="audio-time caption" data-speaker="Ben" data-start="74.827000" data-stop="77.990000">And yeah, I spent a bunch of time learning about</span> <span class="audio-time caption" data-speaker="Ben" data-start="78.050000" data-stop="78.270000">that.</span> <span class="audio-time caption" data-speaker="Ben" data-start="78.671000" data-stop="81.994000">And it wasn't until like 10 years after I got</span> <span class="audio-time caption" data-speaker="Ben" data-start="82.034000" data-stop="84.096000">into Common Lisp and Scheme that I actually got</span> <span class="audio-time caption" data-speaker="Ben" data-start="84.156000" data-stop="85.697000">into Emacs at all.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="85.737000" data-stop="87.298000"><strong class="speaker-name">Sacha:</strong>  That's interesting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="87.318000" data-stop="89.300000">Usually people, like, if they're doing Lispy</span> <span class="audio-time caption" data-speaker="Sacha" data-start="89.340000" data-stop="91.362000">things, they get into Emacs right away because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="91.522000" data-stop="91.822000">Lisp.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="91.942000" data-stop="93.724000">But okay, so 10 years after.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="93.923000" data-stop="96.067000"></span> <span class="audio-time caption" data-speaker="Sacha" data-start="96.068000" data-stop="98.833000">You're already well-used to parentheses at that point.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="98.834000" data-stop="100.133000"><strong class="speaker-name">Ben:</strong>  Yes.</span> <span class="audio-time caption" data-speaker="Ben" data-start="100.134000" data-stop="105.500000">But I guess it wasn't until about ten years ago,</span> <span class="audio-time caption" data-speaker="Ben" data-start="105.501000" data-stop="106.200000">like around 2015 or so,</span> <span class="audio-time caption" data-speaker="Ben" data-start="106.201000" data-stop="108.167000">that I started really getting into Emacs.</span> <span class="audio-time caption" data-speaker="Ben" data-start="108.168000" data-stop="111.400000">I would still consider myself to be a beginner on that front.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="111.401000" data-stop="114.210000"><strong class="speaker-name">Sacha:</strong>  Oh yeah? So what got you to get into it more?</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="115.456000" data-stop="121.383000"><strong class="speaker-name">Ben:</strong>  I found that I was looking for more structured</span> <span class="audio-time caption" data-speaker="Ben" data-start="123.225000" data-stop="126.049000">data management processes.</span> <span class="audio-time caption" data-speaker="Ben" data-start="126.590000" data-stop="128.011000">Basically, I was looking for personal information</span> <span class="audio-time caption" data-speaker="Ben" data-start="128.071000" data-stop="129.193000">management.</span> <span class="audio-time caption" data-speaker="Ben" data-start="129.213000" data-stop="131.976000">And I kept bouncing off Emacs because I wanted to</span> <span class="audio-time caption" data-speaker="Ben" data-start="132.096000" data-stop="135.100000">get into those tasks, but Emacs was such a rich</span> <span class="audio-time caption" data-speaker="Ben" data-start="135.320000" data-stop="137.182000">learning process that I kept getting sidetracked,</span> <span class="audio-time caption" data-speaker="Ben" data-start="137.202000" data-stop="138.264000">so I kept bouncing off of it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="139.000000">2:19</span> <strong>Ben got into Emacs because of twittering-mode</strong></div><p></p><span class="audio-time caption" data-speaker="Ben" data-start="139.485000" data-stop="141.007000"><strong class="speaker-name">Ben:</strong> But I have to admit that one of the things that</span> <span class="audio-time caption" data-speaker="Ben" data-start="141.067000" data-stop="142.869000">originally actually got me into Emacs was</span> <span class="audio-time caption" data-speaker="Ben" data-start="142.889000" data-stop="143.630000">twittering mode.</span> <span class="audio-time caption" data-speaker="Ben" data-start="144.672000" data-stop="145.092000">Oh yeah?</span> <span class="audio-time caption" data-speaker="Ben" data-start="145.072000" data-stop="147.454000">Because I was looking for a tool that would let</span> <span class="audio-time caption" data-speaker="Ben" data-start="147.535000" data-stop="151.839000">me, we'll probably get into this later in the</span> <span class="audio-time caption" data-speaker="Ben" data-start="151.879000" data-stop="153.140000">chat, but I was looking for a tool that would let</span> <span class="audio-time caption" data-speaker="Ben" data-start="153.180000" data-stop="156.023000">me keep a larger window of context about the</span> <span class="audio-time caption" data-speaker="Ben" data-start="156.043000" data-stop="157.125000">conversations that I've been in.</span> <span class="audio-time caption" data-speaker="Ben" data-start="157.785000" data-stop="162.230000">The Twitter apps and the Twitter website</span> <span class="audio-time caption" data-speaker="Ben" data-start="163.932000" data-stop="165.773000">implemented a really narrow window.</span> <span class="audio-time caption" data-speaker="Ben" data-start="166.194000" data-stop="167.796000">I wanted to be able to search back a couple</span> <span class="audio-time caption" data-speaker="Ben" data-start="167.816000" data-stop="169.517000">of weeks for stuff that I had seen or talked</span> <span class="audio-time caption" data-speaker="Ben" data-start="169.557000" data-stop="170.198000">about previously.</span> <span class="audio-time caption" data-speaker="Ben" data-start="170.879000" data-stop="173.982000">Twittering-mode gave me the ability to keep</span> <span class="audio-time caption" data-speaker="Ben" data-start="174.535000" data-stop="177.600000">days or weeks of context in a single buffer</span> <span class="audio-time caption" data-speaker="Ben" data-start="177.601000" data-stop="178.767000">that I could then immediately search.</span> <span class="audio-time caption" data-speaker="Ben" data-start="178.768000" data-stop="181.933000">So I didn't actually get into Emacs as a text editor,</span> <span class="audio-time caption" data-speaker="Ben" data-start="181.934000" data-stop="184.067000">I got into it as an application platform,</span> <span class="audio-time caption" data-speaker="Ben" data-start="184.068000" data-stop="186.167000">and then gradually learned the rest of it.</span> <span class="audio-time caption" data-speaker="Ben" data-start="186.168000" data-stop="189.900000">This is actually fantastic. So I kind of stuck around after that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="189.901000" data-stop="191.878000"><strong class="speaker-name">Sacha:</strong>  That is the first time I've heard of someone</span> <span class="audio-time caption" data-speaker="Sacha" data-start="191.918000" data-stop="193.540000">coming to Emacs because of Twitter.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="194.667000" data-stop="196.048000"><strong class="speaker-name">Ben:</strong>  No, it's deeply embarrassing.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="196.769000" data-stop="198.171000"><strong class="speaker-name">Sacha:</strong>  No, it's wonderful.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="198.771000" data-stop="200.833000">I love that there's just so many</span> <span class="audio-time caption" data-speaker="Sacha" data-start="200.894000" data-stop="202.615000">reasons why people come and the fact that you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="202.635000" data-stop="204.317000">could find something that would let you take</span> <span class="audio-time caption" data-speaker="Sacha" data-start="204.377000" data-stop="208.101000">those notes and see that context and reply to it,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="208.201000" data-stop="210.744000">and even, as I see in your config, work around</span> <span class="audio-time caption" data-speaker="Sacha" data-start="210.764000" data-stop="212.806000">slow keyboard response issues.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="213.787000" data-stop="216.650000"><strong class="speaker-name">Ben:</strong>  And also the fact that that's still</span> <span class="audio-time caption" data-speaker="Ben" data-start="216.790000" data-stop="218.392000">in the config despite Twitter itself...</span> <span class="audio-time caption" data-speaker="Ben" data-start="218.472000" data-stop="221.675000">I think I abandoned it in 2017, but it takes me a</span> <span class="audio-time caption" data-speaker="Ben" data-start="221.715000" data-stop="224.218000">little while to rip things out of my config.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="224.401000" data-stop="225.583000"><strong class="speaker-name">Sacha:</strong>  Yeah, I see you're a lot more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="225.683000" data-stop="228.007000">active in Mastodon these days. I see your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="228.067000" data-stop="231.213000">Monsterdon posts scrolled by my feed every so often.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="233.116000" data-stop="237.042000">Yeah, so we dove right into that because a lot</span> <span class="audio-time caption" data-speaker="Sacha" data-start="237.083000" data-stop="238.826000">of the stuff in your config is interesting and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="238.866000" data-stop="239.727000">your workflows too.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="240.382000" data-stop="242.725000">My idea for these Emacs chats is to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="242.785000" data-stop="244.747000">show people the kind of stuff that isn't</span> <span class="audio-time caption" data-speaker="Sacha" data-start="244.807000" data-stop="246.849000">immediately obvious to newbies when they're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="246.889000" data-stop="248.091000">looking at someone's config.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="248.411000" data-stop="250.414000">Because a lot of the stuff is new workflows and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="250.474000" data-stop="252.876000">how the keyboard shortcuts work together and how</span> <span class="audio-time caption" data-speaker="Sacha" data-start="252.896000" data-stop="254.819000">this stuff fits into your life.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="255.399000" data-stop="257.601000">That's not immediately obvious from the code.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="258.183000" data-stop="262.467000">I've taken a look at your config, but before</span> <span class="audio-time caption" data-speaker="Sacha" data-start="262.507000" data-stop="265.351000">we jump into the gazillion things I wanted to ask</span> <span class="audio-time caption" data-speaker="Sacha" data-start="265.371000" data-stop="267.133000">you about, are there things that you particularly</span> <span class="audio-time caption" data-speaker="Sacha" data-start="267.213000" data-stop="269.055000">love about your Emacs workflow?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="270.000000">4:30</span> <strong>Emacs as a media playback platform with Versuri and Mpdel
</strong></div><p></p><a href="https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/emacs-chat-25-ben-zanin-00-07-24-567.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/emacs-chat-25-ben-zanin-00-07-24-567.jpg" alt="image from video 00:07:24.567" data-time="00:07:24.567"></a><span class="audio-time caption" data-speaker="Ben" data-start="270.959000" data-stop="272.721000"><strong class="speaker-name">Ben:</strong>  I'm probably going to get</span> <span class="audio-time caption" data-speaker="Ben" data-start="272.761000" data-stop="275.525000">a little bit of deserved flak for this, but I</span> <span class="audio-time caption" data-speaker="Ben" data-start="275.605000" data-stop="278.088000">use Emacs a lot as a media playback platform.</span> <span class="audio-time caption" data-speaker="Ben" data-start="279.110000" data-stop="284.277000">I spend a lot of time using Emacs to listen to</span> <span class="audio-time caption" data-speaker="Ben" data-start="284.337000" data-stop="285.558000">music through MPV.</span> <span class="audio-time caption" data-speaker="Ben" data-start="285.578000" data-stop="288.723000">And I've got some integration with Versuri, which</span> <span class="audio-time caption" data-speaker="Ben" data-start="288.783000" data-stop="289.744000">lets me...</span> <span class="audio-time caption" data-speaker="Ben" data-start="289.724000" data-stop="292.128000">I think you've seen those customizations</span> <span class="audio-time caption" data-speaker="Ben" data-start="292.188000" data-stop="294.593000">where what I've done is I've kind of duct-taped</span> <span class="audio-time caption" data-speaker="Ben" data-start="294.633000" data-stop="295.314000">the two together.</span> <span class="audio-time caption" data-speaker="Ben" data-start="295.394000" data-stop="298.460000">Versuri is an Emacs package for being able to</span> <span class="audio-time caption" data-speaker="Ben" data-start="298.600000" data-stop="301.224000">quickly search through lyrics for songs.</span> <span class="audio-time caption" data-speaker="Ben" data-start="301.846000" data-stop="304.831000">What I've done is I've bound Versuri to the</span> <span class="audio-time caption" data-speaker="Ben" data-start="304.871000" data-stop="305.472000">point where</span> <span class="audio-time caption" data-speaker="Ben" data-start="306.447000" data-stop="309.673000">I've pulled up a page of lyrics, I now have a</span> <span class="audio-time caption" data-speaker="Ben" data-start="309.693000" data-stop="312.859000">hotkey that bounces me over to a search of my MPD</span> <span class="audio-time caption" data-speaker="Ben" data-start="312.899000" data-stop="315.444000">library for where that song is, and vice versa.</span> <span class="audio-time caption" data-speaker="Ben" data-start="316.345000" data-stop="318.950000">I've got MPD rigged up so that when I've got a</span> <span class="audio-time caption" data-speaker="Ben" data-start="319.311000" data-stop="321.134000">song currently playing, I can bounce into</span> <span class="audio-time caption" data-speaker="Ben" data-start="321.154000" data-stop="322.978000">Verisuri to display the lyrics for that</span> <span class="audio-time caption" data-speaker="Ben" data-start="322.998000" data-stop="324.220000">particular song.</span> <span class="audio-time caption" data-speaker="Ben" data-start="324.200000" data-stop="326.784000">Something you probably have not seen in my config</span> <span class="audio-time caption" data-speaker="Ben" data-start="326.804000" data-stop="328.246000">yet because I haven't finished it yet...</span> <span class="audio-time caption" data-speaker="Ben" data-start="328.406000" data-stop="330.208000">What I'm working on is actually integrating</span> <span class="audio-time caption" data-speaker="Ben" data-start="330.209000" data-stop="335.256000">Org Mode with MPD, because I'd really like to be able to</span> <span class="audio-time caption" data-speaker="Ben" data-start="335.636000" data-stop="338.481000">streamline my process where occasionally when I'm</span> <span class="audio-time caption" data-speaker="Ben" data-start="338.541000" data-stop="340.003000">listening to something, I'll take notes either</span> <span class="audio-time caption" data-speaker="Ben" data-start="340.023000" data-stop="341.545000">about the lyrics or about the song. I'd like</span> <span class="audio-time caption" data-speaker="Ben" data-start="341.565000" data-stop="344.670000">to be able to link from Org Mode directly to</span> <span class="audio-time caption" data-speaker="Ben" data-start="345.030000" data-stop="347.133000">either that song, that album, or that particular</span> <span class="audio-time caption" data-speaker="Ben" data-start="347.173000" data-stop="347.794000">timecode.</span> <span class="audio-time caption" data-speaker="Ben" data-start="348.736000" data-stop="351.753000">I don't have that yet, but I'm working on it.</span> <span class="audio-time caption" data-speaker="Ben" data-start="351.794000" data-stop="353.825000">I think I'll probably lean on it quite a bit once</span> <span class="audio-time caption" data-speaker="Ben" data-start="353.866000" data-stop="354.308000">I have it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="354.811000" data-stop="355.512000"><strong class="speaker-name">Sacha:</strong>  Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="356.253000" data-stop="358.436000">I saw your tweet from May, I think, where you're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="358.476000" data-stop="360.719000">talking about coming up with this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="360.739000" data-stop="361.720000">way of taking notes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="361.840000" data-stop="366.045000">think if you come up with maybe a custom</span> <span class="audio-time caption" data-speaker="Sacha" data-start="366.246000" data-stop="369.430000">Org Mode link type that can store the annotation</span> <span class="audio-time caption" data-speaker="Sacha" data-start="369.490000" data-stop="371.833000">and then let you go to it, I think that would be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="371.913000" data-stop="372.634000">really interesting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="372.674000" data-stop="374.636000">Especially if you figure out, okay, like, are you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="374.656000" data-stop="375.778000">taking notes in the album?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="375.798000" data-stop="376.979000">Are you taking notes on the song?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="376.999000" data-stop="379.322000">Are you taking notes on this moment in the song?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="379.863000" data-stop="381.124000">That could all be very cool.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="383.836000" data-stop="385.778000"><strong class="speaker-name">Ben:</strong>  Actually, do you mind if I share my screen?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="385.898000" data-stop="387.180000"><strong class="speaker-name">Sacha:</strong>  Please.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="387.800000" data-stop="389.022000"><strong class="speaker-name">Ben:</strong>  So one of the things I wanted to</span> <span class="audio-time caption" data-speaker="Ben" data-start="389.722000" data-stop="397.791000">kind of note was... Let me... Oh yeah, this is</span> <span class="audio-time caption" data-speaker="Ben" data-start="397.851000" data-stop="400.134000">actually going to be further embarrassing.</span> <span class="audio-time caption" data-speaker="Ben" data-start="400.374000" data-stop="402.757000">I'm a terminal Emacs user.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="403.257000" data-stop="403.738000"><strong class="speaker-name">Sacha:</strong>  I saw.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="404.198000" data-stop="405.940000">Can you increase the font size, though?</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="406.060000" data-stop="406.641000"><strong class="speaker-name">Ben:</strong>  Absolutely, yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="406.661000" data-stop="408.483000"><strong class="speaker-name">Sacha:</strong>  Resizing your terminal so it's smaller</span> <span class="audio-time caption" data-speaker="Sacha" data-start="408.543000" data-stop="409.624000">makes everything look bigger...</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="410.144000" data-stop="410.645000"><strong class="speaker-name">Ben:</strong>  Is that better?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="411.146000" data-stop="411.527000"><strong class="speaker-name">Sacha:</strong>  More.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="412.249000" data-stop="413.011000">Some of us are older.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="413.652000" data-stop="414.474000">Thank you.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="416.700000" data-stop="422.213000"><strong class="speaker-name">Ben:</strong>  One of the things that's kind of unusual about</span> <span class="audio-time caption" data-speaker="Ben" data-start="423.762000" data-stop="428.329000">my MPD configuration is I've got a satellite config.</span> <span class="audio-time caption" data-speaker="Ben" data-start="428.330000" data-stop="430.452000">Sorry, the line wrap is a little bit off here.</span> <span class="audio-time caption" data-speaker="Ben" data-start="430.453000" data-stop="431.635000">What this means is that I have...</span> <span class="audio-time caption" data-speaker="Ben" data-start="431.655000" data-stop="434.100000">the household file server maintains the MPD</span> <span class="audio-time caption" data-speaker="Ben" data-start="434.140000" data-stop="437.065000">library, but I've got multiple playback nodes</span> <span class="audio-time caption" data-speaker="Ben" data-start="437.105000" data-stop="441.132000">around the house. What that lets me do is...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="442.013000" data-stop="447.222000"><strong class="speaker-name">Sacha:</strong>  You can play stuff on this...</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="448.113000" data-stop="451.863000"><strong class="speaker-name">Ben:</strong>  So what this means is that I'm controlling the...</span> <span class="audio-time caption" data-speaker="Ben" data-start="451.903000" data-stop="454.529000">well, in this case, that's a little</span> <span class="audio-time caption" data-speaker="Ben" data-start="454.530000" data-stop="458.119000">MeLE Quieter3C that I've got in the living room</span> <span class="audio-time caption" data-speaker="Ben" data-start="458.140000" data-stop="459.844000">that's kind of like the</span> <span class="audio-time caption" data-speaker="Ben" data-start="460.297000" data-stop="462.361000">the home media server, the home playback machine.</span> <span class="audio-time caption" data-speaker="Ben" data-start="463.403000" data-stop="468.351000">Fundamentally, I'm an ops guy, I'm a sys admin,</span> <span class="audio-time caption" data-speaker="Ben" data-start="468.352000" data-stop="471.017000">and I've got, unfortunately, a fleet of machines around the house.</span> <span class="audio-time caption" data-speaker="Ben" data-start="474.383000" data-stop="477.349000">What this lets me do is easily control each</span> <span class="audio-time caption" data-speaker="Ben" data-start="477.429000" data-stop="478.170000">one of them.</span> <span class="audio-time caption" data-speaker="Ben" data-start="478.673000" data-stop="480.877000">Instead of each one maintaining its own</span> <span class="audio-time caption" data-speaker="Ben" data-start="480.937000" data-stop="484.243000">library of music files, the file server itself</span> <span class="audio-time caption" data-speaker="Ben" data-start="484.323000" data-stop="487.148000">indexes them, which means that library updates</span> <span class="audio-time caption" data-speaker="Ben" data-start="487.188000" data-stop="489.793000">are almost instantaneous, instead of having to</span> <span class="audio-time caption" data-speaker="Ben" data-start="489.853000" data-stop="491.977000">read over the network to pull metadata out of</span> <span class="audio-time caption" data-speaker="Ben" data-start="491.997000" data-stop="493.339000">each individual file.</span> <span class="audio-time caption" data-speaker="Ben" data-start="494.582000" data-stop="496.986000">So having a satellite setup lets me...</span> <span class="audio-time caption" data-speaker="Ben" data-start="498.164000" data-stop="503.932000">The real benefit is that MPD tracks albums,</span> <span class="audio-time caption" data-speaker="Ben" data-start="504.013000" data-stop="506.416000">directories, and files as URLs.</span> <span class="audio-time caption" data-speaker="Ben" data-start="506.977000" data-stop="508.559000">That means that I have a single global</span> <span class="audio-time caption" data-speaker="Ben" data-start="508.599000" data-stop="510.923000">namespace of URLs for all of the media that's</span> <span class="audio-time caption" data-speaker="Ben" data-start="510.963000" data-stop="512.725000">currently in the library, which means that I can</span> <span class="audio-time caption" data-speaker="Ben" data-start="512.846000" data-stop="516.851000">annotate from any machine, but have it mean one thing.</span> <span class="audio-time caption" data-speaker="Ben" data-start="520.912000" data-stop="523.861000">It makes it convenient for navigation, but it</span> <span class="audio-time caption" data-speaker="Ben" data-start="523.902000" data-stop="525.768000">also makes it convenient for keeping notes, which</span> <span class="audio-time caption" data-speaker="Ben" data-start="525.809000" data-stop="527.514000">I'm currently doing manually and working on those</span> <span class="audio-time caption" data-speaker="Ben" data-start="527.635000" data-stop="529.662000">Org link types to be able to make it a little bit</span> <span class="audio-time caption" data-speaker="Ben" data-start="531.207000" data-stop="532.491000">more smooth than it currently is.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="532.859000" data-stop="535.142000"><strong class="speaker-name">Sacha:</strong>  So you've got your central store of music files.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="535.583000" data-stop="538.386000">You've got URLs for them so you can talk about them.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="538.447000" data-stop="541.370000">That's just one identifier per song.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="541.771000" data-stop="545.236000">You've got multiple speakers that you can use</span> <span class="audio-time caption" data-speaker="Sacha" data-start="545.276000" data-stop="548.560000">your completing interface to say, okay, I want to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="548.580000" data-stop="549.702000">play this over there.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="550.623000" data-stop="553.026000">You have Emacs controlling all of that.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="553.000000">9:13</span> <strong>Emacs on Android with Termux</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="553.547000" data-stop="557.492000"><strong class="speaker-name">Sacha:</strong> Now, is that Emacs on your laptop and you just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="557.532000" data-stop="559.034000">take it around and you say, okay, I'm going to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="559.074000" data-stop="560.596000">sit in the living room for a little bit or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="560.636000" data-stop="561.730000">whatever and play there.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="562.091000" data-stop="563.372000">Or do you... Ah, there you go.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="563.432000" data-stop="565.014000">That's what I was going to ask.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="565.214000" data-stop="565.494000">All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="565.514000" data-stop="566.475000">So Emacs on your phone.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="567.296000" data-stop="572.281000">The Android port or Termux?</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="572.301000" data-stop="573.822000"><strong class="speaker-name">Ben:</strong>  I have both installed.</span> <span class="audio-time caption" data-speaker="Ben" data-start="573.842000" data-stop="575.244000">I think you actually saw this a few months</span> <span class="audio-time caption" data-speaker="Ben" data-start="575.284000" data-stop="577.046000">ago when I was running performance comparisons</span> <span class="audio-time caption" data-speaker="Ben" data-start="577.506000" data-stop="581.009000">between the Termux version of Emacs and the</span> <span class="audio-time caption" data-speaker="Ben" data-start="581.050000" data-stop="582.991000">native port, and found that the native port</span> <span class="audio-time caption" data-speaker="Ben" data-start="583.272000" data-stop="585.793000">generally ran anything CPU-intensive</span> <span class="audio-time caption" data-speaker="Ben" data-start="585.794000" data-stop="586.835000">roughly twice as fast.</span> <span class="audio-time caption" data-speaker="Ben" data-start="587.956000" data-stop="590.659000">But I still use the Termux version because it's...</span> <span class="audio-time caption" data-speaker="Ben" data-start="591.820000" data-stop="592.902000">I'm not sure if you played around with the</span> <span class="audio-time caption" data-speaker="Ben" data-start="592.982000" data-stop="595.466000">Android terminal virtualization layer at all, but</span> <span class="audio-time caption" data-speaker="Ben" data-start="595.506000" data-stop="597.669000">it's not great.</span> <span class="audio-time caption" data-speaker="Ben" data-start="598.891000" data-stop="601.215000">I really appreciate the integration that</span> <span class="audio-time caption" data-speaker="Ben" data-start="601.976000" data-stop="604.981000">Termux gives me with Android features.</span> <span class="audio-time caption" data-speaker="Ben" data-start="605.442000" data-stop="607.085000">For example, being able to query the sensors,</span> <span class="audio-time caption" data-speaker="Ben" data-start="607.585000" data-stop="610.089000">such as GPS or temperature sensors, and I can</span> <span class="audio-time caption" data-speaker="Ben" data-start="610.150000" data-stop="613.575000">actually pull those in from the Emacs side.</span> <span class="audio-time caption" data-speaker="Ben" data-start="614.618000" data-stop="616.661000">And that's something I kind of want to get into.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="616.681000" data-stop="618.985000"><strong class="speaker-name">Sacha:</strong>  What do you think of using the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="619.025000" data-stop="620.107000">temperature sensors for?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="621.970000" data-stop="622.892000">What can Emacs do with that?</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="624.013000" data-stop="626.037000"><strong class="speaker-name">Ben:</strong>  It's not so much the fact that I</span> <span class="audio-time caption" data-speaker="Ben" data-start="626.197000" data-stop="628.060000">use the temperature sensors as that when I pull</span> <span class="audio-time caption" data-speaker="Ben" data-start="628.220000" data-stop="630.384000">the sensors, that's the most remarkable value</span> <span class="audio-time caption" data-speaker="Ben" data-start="630.404000" data-stop="631.065000">that I get out of it.</span> <span class="audio-time caption" data-speaker="Ben" data-start="632.287000" data-stop="634.190000">But one of the interesting things is the</span> <span class="audio-time caption" data-speaker="Ben" data-start="634.230000" data-stop="636.694000">barometric pressure sensor, which gives me</span> <span class="audio-time caption" data-speaker="Ben" data-start="637.214000" data-stop="641.461000">height, which matters because when I'm out and</span> <span class="audio-time caption" data-speaker="Ben" data-start="641.501000" data-stop="645.206000">about and if I stop to record an entry in my</span> <span class="audio-time caption" data-speaker="Ben" data-start="645.247000" data-stop="646.929000">journal, for example, I'll just pull the sensors</span> <span class="audio-time caption" data-speaker="Ben" data-start="646.989000" data-stop="650.595000">and dump them into the header in the entry that I'm writing.</span> <span class="audio-time caption" data-speaker="Ben" data-start="651.476000" data-stop="654.080000">The barometric sensor, I'll get the GPS, so</span> <span class="audio-time caption" data-speaker="Ben" data-start="654.100000" data-stop="657.606000">that'll tell me what the actual height is at that</span> <span class="audio-time caption" data-speaker="Ben" data-start="657.666000" data-stop="659.529000">location on the earth. The barometric sensor</span> <span class="audio-time caption" data-speaker="Ben" data-start="659.569000" data-stop="661.652000">also gives me a little bit of insight into the weather.</span> <span class="audio-time caption" data-speaker="Ben" data-start="661.717000" data-stop="664.220000">So it's not so much the temperature sensor</span> <span class="audio-time caption" data-speaker="Ben" data-start="664.280000" data-stop="666.623000">is what my temperature is, but just like if</span> <span class="audio-time caption" data-speaker="Ben" data-start="666.683000" data-stop="667.444000">it's a hot day or not.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="668.065000" data-stop="669.727000"><strong class="speaker-name">Sacha:</strong>  I am very curious about that setup.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="669.767000" data-stop="672.431000">So if you happen to share your, I don't know, Org</span> <span class="audio-time caption" data-speaker="Sacha" data-start="672.471000" data-stop="675.375000">capture for Termux that includes all these things...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="675.675000" data-stop="677.538000">You don't have to show me the actual stuff, but</span> <span class="audio-time caption" data-speaker="Sacha" data-start="677.578000" data-stop="680.562000">you know, at some point I think other people will</span> <span class="audio-time caption" data-speaker="Sacha" data-start="680.602000" data-stop="683.345000">be curious about what kind of benefits they can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="683.365000" data-stop="685.508000">get from running Emacs on their phones.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="686.790000" data-stop="690.154000"><strong class="speaker-name">Ben:</strong>  So, I mean, I guess I'll...</span> <span class="audio-time caption" data-speaker="Ben" data-start="690.590000" data-stop="695.267000">One of the benefits that I get is the ability to</span> <span class="audio-time caption" data-speaker="Ben" data-start="696.698000" data-stop="697.579000">keep shopping.</span> <span class="audio-time caption" data-speaker="Ben" data-start="697.599000" data-stop="700.903000">So I'm a little bit of a militant cyclist.</span> <span class="audio-time caption" data-speaker="Ben" data-start="701.183000" data-stop="704.888000">One of the things that I often do is leave</span> <p></p><a href="https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/emacs-chat-25-ben-zanin-00-12-04-333.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/emacs-chat-25-ben-zanin-00-12-04-333.jpg" alt="image from video 00:12:04.333" data-time="00:12:04.333"></a><span class="audio-time caption" data-speaker="Ben" data-start="704.928000" data-stop="707.671000"><strong class="speaker-name">Ben:</strong> notes about things that I need to take care of in</span> <span class="audio-time caption" data-speaker="Ben" data-start="707.711000" data-stop="709.413000">particular areas of the city.</span> <span class="audio-time caption" data-speaker="Ben" data-start="709.954000" data-stop="712.797000">The nice thing is that I can just drop them</span> <span class="audio-time caption" data-speaker="Ben" data-start="712.858000" data-stop="719.846000">directly in commits right as I'm going.</span> <span class="audio-time caption" data-speaker="Ben" data-start="719.866000" data-stop="723.130000">So I often have a long list of updates that are</span> <span class="audio-time caption" data-speaker="Ben" data-start="723.791000" data-stop="725.693000">from Emacs on my phone, just because it's convenient.</span> <span class="audio-time caption" data-speaker="Ben" data-start="727.276000" data-stop="728.017000">All right.</span> <span class="audio-time caption" data-speaker="Ben" data-start="728.037000" data-stop="730.541000">There we go for Monsterdon, in fact.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="730.821000" data-stop="731.802000"><strong class="speaker-name">Sacha:</strong>  Nice, nice.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="732.383000" data-stop="734.084000">Then that's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="734.085000" data-stop="736.889000">Syncthing or whatever else to just get it copied back</span> <span class="audio-time caption" data-speaker="Sacha" data-start="736.909000" data-stop="737.800000">to your laptop or just on your phone?</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="737.801000" data-stop="738.932000"><strong class="speaker-name">Ben:</strong>  Straight Magit mode.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="739.373000" data-stop="740.555000"><strong class="speaker-name">Sacha:</strong>  Oh, yeah?</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="741.035000" data-stop="742.117000"><strong class="speaker-name">Ben:</strong>  That's one of the things that I</span> <span class="audio-time caption" data-speaker="Ben" data-start="742.177000" data-stop="743.759000">found was a little bit clunkier when I was</span> <span class="audio-time caption" data-speaker="Ben" data-start="743.819000" data-stop="748.646000">running virtualized Emacs under the Android</span> <span class="audio-time caption" data-speaker="Ben" data-start="748.686000" data-stop="752.491000">emulator and also the native Android port of</span> <span class="audio-time caption" data-speaker="Ben" data-start="752.571000" data-stop="753.132000">Emacs.</span> <span class="audio-time caption" data-speaker="Ben" data-start="754.158000" data-stop="757.547000">They are a little bit more troublesome to get</span> <span class="audio-time caption" data-speaker="Ben" data-start="757.627000" data-stop="758.971000">Magit to work.</span> <span class="audio-time caption" data-speaker="Ben" data-start="759.232000" data-stop="761.157000">Because I rely on that for syncing back and</span> <span class="audio-time caption" data-speaker="Ben" data-start="761.197000" data-stop="761.959000">forth from my phone,</span> <span class="audio-time caption" data-speaker="Ben" data-start="763.243000" data-stop="764.927000">that's one of the reasons why I stuck with Termux.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="765.346000" data-stop="766.928000"><strong class="speaker-name">Sacha:</strong>  Very cool, very cool.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="767.228000" data-stop="770.252000">I like Termux's little bar of extra</span> <span class="audio-time caption" data-speaker="Sacha" data-start="770.352000" data-stop="772.195000">keyboard keys that you can have, so you can have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="772.235000" data-stop="773.897000">a regular keyboard and then you can just have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="773.937000" data-stop="776.561000">your Controls and your Alts and whatever on that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="776.621000" data-stop="777.582000">little extra bar.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="778.143000" data-stop="781.046000">Termux is quite interesting.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="781.807000" data-stop="783.069000"><strong class="speaker-name">Ben:</strong>  I think I'm probably pushing it</span> <span class="audio-time caption" data-speaker="Ben" data-start="783.129000" data-stop="784.791000">harder than it is meant to be pushed.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="784.811000" data-stop="786.173000"><strong class="speaker-name">Sacha:</strong>  That's the fun of it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="786.814000" data-stop="788.656000">I don't exactly know how everything will shake</span> <span class="audio-time caption" data-speaker="Sacha" data-start="788.756000" data-stop="791.760000">out, but probably with Google trying to lock down</span> <span class="audio-time caption" data-speaker="Sacha" data-start="791.800000" data-stop="793.142000">the developer ecosystem</span> <span class="audio-time caption" data-speaker="Sacha" data-start="793.392000" data-stop="794.373000">in a few months, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="794.393000" data-stop="796.515000">They're saying, oh, you know, it's got to be ADB</span> <span class="audio-time caption" data-speaker="Sacha" data-start="796.635000" data-stop="799.137000">in order to get these unsigned apps on.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="799.177000" data-stop="800.599000">We'll have to see how it all shakes out.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="801.299000" data-stop="803.461000">But I'm hoping Termux can survive because I like</span> <span class="audio-time caption" data-speaker="Sacha" data-start="803.501000" data-stop="803.982000">that one too.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="804.883000" data-stop="805.503000"><strong class="speaker-name">Ben:</strong>  Yeah, me too.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="806.985000" data-stop="808.766000"><strong class="speaker-name">Sacha:</strong>  Okay, so you've got interesting</span> <span class="audio-time caption" data-speaker="Sacha" data-start="808.806000" data-stop="812.049000">music, an interesting music setup with lyrics and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="812.089000" data-stop="813.411000">playback and all that stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="813.431000" data-stop="816.594000">You've got your phone, which also runs Emacs and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="816.774000" data-stop="818.916000">from which you can, you've also set it up so you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="818.956000" data-stop="820.477000">can control your music from your phone?</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="821.018000" data-stop="821.458000"><strong class="speaker-name">Ben:</strong>  Yes.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="821.793000" data-stop="823.255000"><strong class="speaker-name">Sacha:</strong>  Okay.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="824.000000">13:44</span> <strong>Keyboards and other devices</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="824.296000" data-stop="825.958000"><strong class="speaker-name">Sacha:</strong> When I was reading through your toots, I noticed</span> <span class="audio-time caption" data-speaker="Sacha" data-start="826.038000" data-stop="828.300000">you like to play around with other keyboards and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="828.340000" data-stop="829.882000">other devices like the 8BitDo.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="830.143000" data-stop="831.965000">Do you have any of that talking to Emacs too?</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="833.647000" data-stop="835.288000"><strong class="speaker-name">Ben:</strong>  [Keychron B11 Pro is] the keyboard I'm currently using.</span> <span class="audio-time caption" data-speaker="Ben" data-start="837.010000" data-stop="839.133000">I got this so I could keep it in my purse and</span> <span class="audio-time caption" data-speaker="Ben" data-start="839.173000" data-stop="840.835000">just like walk around with it, but it turns out</span> <span class="audio-time caption" data-speaker="Ben" data-start="840.895000" data-stop="844.038000">it's super comfortable and I'm accidentally using</span> <span class="audio-time caption" data-speaker="Ben" data-start="844.058000" data-stop="844.839000">it as a daily driver.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="845.180000" data-stop="845.460000"><strong class="speaker-name">Sacha:</strong>  All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="845.500000" data-stop="847.022000">Name-drop the keyboard for all the people who</span> <span class="audio-time caption" data-speaker="Sacha" data-start="847.062000" data-stop="849.825000">like the device recommendations.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="850.042000" data-stop="852.667000"><strong class="speaker-name">Ben:</strong>  It's a Keychron B11 Pro.</span> <span class="audio-time caption" data-speaker="Ben" data-start="852.787000" data-stop="853.629000">It runs ZMK.</span> <span class="audio-time caption" data-speaker="Ben" data-start="855.272000" data-stop="856.093000">ZMK, I suppose.</span> <span class="audio-time caption" data-speaker="Ben" data-start="856.514000" data-stop="858.136000">And if you've seen me interacting with</span> <span class="audio-time caption" data-speaker="Ben" data-start="858.137000" data-stop="860.441000">Pete Johanson on Mastodon, he's the lead developer of</span> <span class="audio-time caption" data-speaker="Ben" data-start="860.481000" data-stop="861.263000">that firmware package.</span> <span class="audio-time caption" data-speaker="Ben" data-start="861.583000" data-stop="863.767000">It's a little bit like QMK, except that</span> <span class="audio-time caption" data-speaker="Ben" data-start="864.669000" data-stop="867.514000">fundamentally QMK is a polling architecture, and</span> <span class="audio-time caption" data-speaker="Ben" data-start="867.554000" data-stop="870.540000">it works really well for very restricted</span> <span class="audio-time caption" data-speaker="Ben" data-start="870.580000" data-stop="871.261000">microcontrollers.</span> <span class="audio-time caption" data-speaker="Ben" data-start="871.802000" data-stop="876.689000">ZMK is interrupt-based, which means it is</span> <span class="audio-time caption" data-speaker="Ben" data-start="877.049000" data-stop="880.493000">tremendously more efficient in terms of power draw.</span> <span class="audio-time caption" data-speaker="Ben" data-start="880.513000" data-stop="881.875000">So if you want a Bluetooth keyboard, you should</span> <span class="audio-time caption" data-speaker="Ben" data-start="881.895000" data-stop="882.976000">probably run ZMK on it.</span> <span class="audio-time caption" data-speaker="Ben" data-start="883.116000" data-stop="885.398000">Anyhow, yeah, it's fantastic.</span> <span class="audio-time caption" data-speaker="Ben" data-start="885.418000" data-stop="889.022000">And I do have a bit of a keyboard problem where I</span> <span class="audio-time caption" data-speaker="Ben" data-start="889.423000" data-stop="893.006000">tend to...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="893.007000" data-stop="895.069000"><strong class="speaker-name">Sacha:</strong>  Many Emacs people have keyboard problems.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="895.690000" data-stop="898.593000"><strong class="speaker-name">Ben:</strong>  Right? I feel like I'm in good company right now.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="900.775000" data-stop="901.716000"><strong class="speaker-name">Sacha:</strong>  Yeah, yeah, yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="903.265000" data-stop="905.931000">So, devices, yep, gotcha.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="905.951000" data-stop="908.296000">And this has become your main keyboard even for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="908.737000" data-stop="909.539000">regular computing?</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="910.140000" data-stop="911.603000"><strong class="speaker-name">Ben:</strong>  In the last couple of weeks, yeah.</span> <span class="audio-time caption" data-speaker="Ben" data-start="911.684000" data-stop="913.047000">It's super comfortable.</span> <span class="audio-time caption" data-speaker="Ben" data-start="913.067000" data-stop="915.853000">Because it's so flat, I can get away without</span> <span class="audio-time caption" data-speaker="Ben" data-start="915.893000" data-stop="918.058000">having to use palm rests to actually keep in a</span> <span class="audio-time caption" data-speaker="Ben" data-start="918.118000" data-stop="918.739000">decent posture,</span> <span class="audio-time caption" data-speaker="Ben" data-start="919.441000" data-stop="922.287000">because of the curvature of it..</span> <span class="audio-time caption" data-speaker="Ben" data-start="922.790000" data-stop="924.273000">Like, it's an Alice layout.</span> <span class="audio-time caption" data-speaker="Ben" data-start="924.934000" data-stop="926.536000">The key travel isn't too bad.</span> <span class="audio-time caption" data-speaker="Ben" data-start="926.577000" data-stop="927.558000">It's actually quite comfortable.</span> <span class="audio-time caption" data-speaker="Ben" data-start="929.181000" data-stop="930.824000">I found that I needed a little bit of</span> <span class="audio-time caption" data-speaker="Ben" data-start="930.864000" data-stop="933.068000">acclimatization to get used to split keyboards.</span> <span class="audio-time caption" data-speaker="Ben" data-start="933.749000" data-stop="938.557000">This one has roughly the spread of a split,</span> <span class="audio-time caption" data-speaker="Ben" data-start="938.577000" data-stop="940.821000">but it seems to be easier for my muscle memory.</span> <span class="audio-time caption" data-speaker="Ben" data-start="940.841000" data-stop="943.045000">So yeah, I didn't intend to leave it on my desk,</span> <span class="audio-time caption" data-speaker="Ben" data-start="943.125000" data-stop="946.030000">but it stuck and has kind of stayed there for now.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="946.499000" data-stop="948.583000"><strong class="speaker-name">Sacha:</strong>  Does it have any special ergonomics</span> <span class="audio-time caption" data-speaker="Sacha" data-start="948.683000" data-stop="951.429000">for all the modifiers that we like to do?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="952.812000" data-stop="955.177000">Or do you just use Caps as Control or whatever else?</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="956.720000" data-stop="958.343000"><strong class="speaker-name">Ben:</strong>  Actually, I don't use Caps as</span> <span class="audio-time caption" data-speaker="Ben" data-start="958.423000" data-stop="960.027000">Control and I actually really need to get into</span> <span class="audio-time caption" data-speaker="Ben" data-start="960.067000" data-stop="960.728000">remapping that.</span> <span class="audio-time caption" data-speaker="Ben" data-start="961.518000" data-stop="966.064000">ZMK has a very rich remapping story, as I expect</span> <span class="audio-time caption" data-speaker="Ben" data-start="966.084000" data-stop="968.588000">you to imagine, from a custom firmware.</span> <span class="audio-time caption" data-speaker="Ben" data-start="969.149000" data-stop="972.954000">The macros are intense, and you can get</span> <span class="audio-time caption" data-speaker="Ben" data-start="972.994000" data-stop="974.256000">really deep in customization.</span> <span class="audio-time caption" data-speaker="Ben" data-start="974.276000" data-stop="975.778000">I have done none of that on this keyboard</span> <span class="audio-time caption" data-speaker="Ben" data-start="975.798000" data-stop="978.602000">yet, because it's only, I think, a couple of</span> <span class="audio-time caption" data-speaker="Ben" data-start="978.642000" data-stop="979.543000">months old at this point.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="980.249000" data-stop="981.251000"><strong class="speaker-name">Sacha:</strong>  You've been settling in.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="981.331000" data-stop="983.174000">As you said, this has been your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="983.435000" data-stop="984.737000">main keyboard for a little while.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="985.378000" data-stop="987.382000">Charlie Baker says, "yeah, I love the split keyboard.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="987.442000" data-stop="989.105000">Recently bought one myself.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="989.246000" data-stop="990.909000">I was getting so much neck pain, you know,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="990.949000" data-stop="992.772000">shoulder and neck pain from so many hours keeping</span> <span class="audio-time caption" data-speaker="Sacha" data-start="992.832000" data-stop="994.014000">hands close together."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="994.034000" data-stop="995.938000">But the split lets his shoulders relax.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="996.038000" data-stop="999.404000">So probably you're getting the same, like, ha, my arms.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1004.000000">16:44</span> <strong>Benefits of a split keyboard</strong></div><p></p><span class="audio-time caption" data-speaker="Ben" data-start="1004.195000" data-stop="1005.818000"><strong class="speaker-name">Ben:</strong>  The two things that I first noticed</span> <span class="audio-time caption" data-speaker="Ben" data-start="1005.838000" data-stop="1008.243000">when I moved to a split keyboard was one, my</span> <span class="audio-time caption" data-speaker="Ben" data-start="1008.303000" data-stop="1010.968000">wrists started feeling a lot nicer and two, I was</span> <span class="audio-time caption" data-speaker="Ben" data-start="1011.008000" data-stop="1013.253000">immediately able to bench press like 20 pounds</span> <span class="audio-time caption" data-speaker="Ben" data-start="1013.293000" data-stop="1016.098000">more the next week.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1017.120000" data-stop="1019.225000">It was amazing how much of a difference it made</span> <span class="audio-time caption" data-speaker="Ben" data-start="1019.485000" data-stop="1020.988000">and it showed up in the data.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1021.998000" data-stop="1023.359000"><strong class="speaker-name">Sacha:</strong>  Wow.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1023.620000" data-stop="1027.103000">There was a weightlifting talk at EmacsConf last year, I think.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1027.183000" data-stop="1029.606000">So there's a surprising overlap between the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1029.646000" data-stop="1031.406000">people who are checking their weightlifting stats</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1031.446000" data-stop="1033.368000">and the people who are into Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1033.388000" data-stop="1034.410000">Naturally, with Org Mode.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1034.510000" data-stop="1034.991000">There you go.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="1036.873000" data-stop="1038.614000"><strong class="speaker-name">Ben:</strong>  Let's not look at those numbers too closely.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1038.634000" data-stop="1040.516000">I'm not too proud of a bunch of them.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1040.536000" data-stop="1043.118000">But yes, I find that Org capture templates let me</span> <span class="audio-time caption" data-speaker="Ben" data-start="1043.138000" data-stop="1044.740000">keep on top of that and not really think about</span> <span class="audio-time caption" data-speaker="Ben" data-start="1044.781000" data-stop="1046.722000">it, which is great because you don't want to</span> <span class="audio-time caption" data-speaker="Ben" data-start="1046.742000" data-stop="1047.123000">think about it.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1047.143000" data-stop="1049.445000">You want to gather the data and think about it</span> <span class="audio-time caption" data-speaker="Ben" data-start="1049.525000" data-stop="1051.347000">separately so that you can</span> <span class="audio-time caption" data-speaker="Ben" data-start="1051.462000" data-stop="1054.005000">stay emotionally divested from what the numbers mean.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1054.505000" data-stop="1054.846000"><strong class="speaker-name">Sacha:</strong>  I know.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1055.046000" data-stop="1059.751000">I'm totally happy to dig into the Org capture,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1060.111000" data-stop="1062.233000">especially if you do any graphing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1062.253000" data-stop="1065.116000">People always love graphing their progress, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1065.136000" data-stop="1067.379000">But if you're like, I don't really want to show</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1067.439000" data-stop="1069.481000">my numbers at the moment, that is also</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1069.541000" data-stop="1070.722000">understandable and okay.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="1071.443000" data-stop="1072.344000"><strong class="speaker-name">Ben:</strong>  I don't, I'm afraid. Sorry.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1072.384000" data-stop="1073.925000"><strong class="speaker-name">Sacha:</strong>  That's okay.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="1073.985000" data-stop="1075.827000"><strong class="speaker-name">Ben:</strong>  It took me a couple years to get</span> <span class="audio-time caption" data-speaker="Ben" data-start="1075.907000" data-stop="1078.630000">used to being on camera at all.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1078.650000" data-stop="1083.833000">I don't really like my appearance very much.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1083.834000" data-stop="1087.550000">I'm working on that, as you can see.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1087.551000" data-stop="1087.550000">I've had to work on that to be able to work remotely.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1087.551000" data-stop="1087.550000">It's a work in progress.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1087.551000" data-stop="1087.550000">I'm getting through it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1087.551000" data-stop="1097.490000"><strong class="speaker-name">Sacha:</strong>  You know us. We're very much focused on text.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1097.550000" data-stop="1099.854000">In fact, you even use Emacs in the terminal.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1099.975000" data-stop="1101.718000">That's very text-y.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1102.000000">18:22</span> <strong>Meeting workflow</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1102.053000" data-stop="1104.759000"><strong class="speaker-name">Sacha:</strong> One of the interesting things actually that I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1104.979000" data-stop="1107.264000">wanted to ask you about since you mentioned</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1107.304000" data-stop="1111.754000">meetings is you probably also have the role of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1111.794000" data-stop="1113.057000">designated note-taker.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1113.097000" data-stop="1115.361000">You mentioned in one of your toots that you take</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1115.442000" data-stop="1117.466000">notes and people are like, what are you doing that in?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1117.867000" data-stop="1118.949000">How are you taking your notes?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1119.591000" data-stop="1120.753000">And it's Emacs.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="1121.240000" data-stop="1124.003000"><strong class="speaker-name">Ben:</strong>  Yes, so actually that's one of the</span> <span class="audio-time caption" data-speaker="Ben" data-start="1124.023000" data-stop="1125.584000">things I should lead off with as an apology.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1126.385000" data-stop="1128.807000">I probably won't be able to share</span> <span class="audio-time caption" data-speaker="Ben" data-start="1128.847000" data-stop="1130.609000">many of my capture templates because I don't use</span> <span class="audio-time caption" data-speaker="Ben" data-start="1130.629000" data-stop="1132.211000">them in my personal life very much.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1133.172000" data-stop="1135.954000">They're mostly on my work machine. I've</span> <span class="audio-time caption" data-speaker="Ben" data-start="1135.974000" data-stop="1138.877000">got capture templates for impromptu meetings</span> <span class="audio-time caption" data-speaker="Ben" data-start="1139.858000" data-stop="1142.240000">where it's just like an exploratory, we have a</span> <span class="audio-time caption" data-speaker="Ben" data-start="1142.280000" data-stop="1143.582000">problem we need to solve, we're kind of talking</span> <span class="audio-time caption" data-speaker="Ben" data-start="1143.602000" data-stop="1144.222000">through a discussion,</span> <span class="audio-time caption" data-speaker="Ben" data-start="1144.683000" data-stop="1146.424000">a separate capture template for meetings with</span> <span class="audio-time caption" data-speaker="Ben" data-start="1146.445000" data-stop="1148.406000">agendas to make sure that we stay on them and</span> <span class="audio-time caption" data-speaker="Ben" data-start="1148.426000" data-stop="1150.048000">that we log decisions,</span> <span class="audio-time caption" data-speaker="Ben" data-start="1150.163000" data-stop="1154.988000">and a separate set of templates for... So I have</span> <span class="audio-time caption" data-speaker="Ben" data-start="1155.028000" data-stop="1156.990000">a team of direct reports and they each have</span> <span class="audio-time caption" data-speaker="Ben" data-start="1157.010000" data-stop="1159.333000">different cares and different topics that we're</span> <span class="audio-time caption" data-speaker="Ben" data-start="1159.353000" data-stop="1161.775000">working to develop in their professional careers.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1161.795000" data-stop="1163.677000">I find that it's really useful to be able to</span> <span class="audio-time caption" data-speaker="Ben" data-start="1164.117000" data-stop="1166.100000">keep some continuity between our conversations.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1166.120000" data-stop="1167.721000">It also makes it very easy to export that</span> <span class="audio-time caption" data-speaker="Ben" data-start="1167.781000" data-stop="1169.964000">entire dataset, share it with them to make sure</span> <span class="audio-time caption" data-speaker="Ben" data-start="1170.004000" data-stop="1171.805000">that they can consult it at the same time.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1171.825000" data-stop="1173.888000">If I got anything wrong, I can fold their</span> <span class="audio-time caption" data-speaker="Ben" data-start="1173.928000" data-stop="1175.409000">corrections in.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1175.429000" data-stop="1176.931000">But all of those templates, unfortunately, are on</span> <span class="audio-time caption" data-speaker="Ben" data-start="1176.971000" data-stop="1178.112000">my work machine.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1178.260000" data-stop="1181.143000"><strong class="speaker-name">Sacha:</strong>  We'll just sketch out the general</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1181.243000" data-stop="1185.608000">idea in abstract details and then people who want</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1185.628000" data-stop="1188.552000">to implement it for themselves can fill in the blanks.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1189.232000" data-stop="1191.135000">For example, when you're having a meeting with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1191.215000" data-stop="1194.458000">your direct reports, are the tasks related to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1194.498000" data-stop="1196.040000">them in an Org agenda?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1196.160000" data-stop="1197.582000">Are you using dynamic blocks?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1198.123000" data-stop="1201.767000">Is it tracked somewhere else or is it in Org?</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="1201.867000" data-stop="1206.512000"><strong class="speaker-name">Ben:</strong>  It's straight in Org mode.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1206.745000" data-stop="1209.871000">So most of the touch points that we have are more</span> <span class="audio-time caption" data-speaker="Ben" data-start="1209.931000" data-stop="1215.001000">about professional development and their cares</span> <span class="audio-time caption" data-speaker="Ben" data-start="1215.061000" data-stop="1217.186000">and concerns, rather than specific deliverables.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1217.807000" data-stop="1219.911000">Usually deliverables we manage at a team level.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1220.768000" data-stop="1223.854000">But if there are specific things that individuals</span> <span class="audio-time caption" data-speaker="Ben" data-start="1223.894000" data-stop="1227.660000">are working on, they will be in to-dos under</span> <span class="audio-time caption" data-speaker="Ben" data-start="1227.700000" data-stop="1229.624000">their subheadings in a way that show up on the</span> <span class="audio-time caption" data-speaker="Ben" data-start="1229.664000" data-stop="1232.128000">agenda if we have assigned deadlines for them.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1232.509000" data-stop="1235.595000">But generally, if there's a deadline on a task,</span> <span class="audio-time caption" data-speaker="Ben" data-start="1235.615000" data-stop="1237.478000">it's because</span> <span class="audio-time caption" data-speaker="Ben" data-start="1237.880000" data-stop="1240.044000">I'm doing something and they need to track it, or</span> <span class="audio-time caption" data-speaker="Ben" data-start="1240.225000" data-stop="1241.588000">they're doing something and I need to track it.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1242.229000" data-stop="1244.594000">If I'm the only guy using Emacs, then Org</span> <span class="audio-time caption" data-speaker="Ben" data-start="1244.614000" data-stop="1245.696000">Mode won't work for that,</span> <span class="audio-time caption" data-speaker="Ben" data-start="1245.716000" data-stop="1248.462000">so there aren't a lot of those.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1248.803000" data-stop="1250.226000">But if it's just something that I need to check</span> <span class="audio-time caption" data-speaker="Ben" data-start="1250.286000" data-stop="1251.889000">up on to make sure that</span> <span class="audio-time caption" data-speaker="Ben" data-start="1253.422000" data-stop="1255.906000">something that... Like they've got planned leave for</span> <span class="audio-time caption" data-speaker="Ben" data-start="1255.966000" data-stop="1258.089000">example, or they have a cousin's wedding that</span> <span class="audio-time caption" data-speaker="Ben" data-start="1258.109000" data-stop="1261.054000">they need to go off to, or something that I just</span> <span class="audio-time caption" data-speaker="Ben" data-start="1261.074000" data-stop="1262.996000">need to keep in my brain that's not necessarily</span> <span class="audio-time caption" data-speaker="Ben" data-start="1263.057000" data-stop="1265.140000">deliverable, then it would be</span> <span class="audio-time caption" data-speaker="Ben" data-start="1265.160000" data-stop="1266.942000">appropriate to keep that in a place where it'll</span> <span class="audio-time caption" data-speaker="Ben" data-start="1266.983000" data-stop="1267.964000">only show up on my agenda.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1268.465000" data-stop="1270.748000">So that's the kind of decision making that I</span> <span class="audio-time caption" data-speaker="Ben" data-start="1270.768000" data-stop="1271.209000">apply there.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1271.000000">21:11</span> <strong>Narrowing</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1271.710000" data-stop="1272.731000"><strong class="speaker-name">Sacha:</strong>  And you mentioned you have a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1272.791000" data-stop="1275.535000">subheading, I guess a subheading per person or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1275.576000" data-stop="1278.520000">sort of... Or do you use tags to keep track</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1278.580000" data-stop="1280.543000">of something that might touch several people?</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="1281.063000" data-stop="1282.484000"><strong class="speaker-name">Ben:</strong>  Usually a section per person, and</span> <span class="audio-time caption" data-speaker="Ben" data-start="1282.504000" data-stop="1284.046000">that's more of a convenience than anything else.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1284.867000" data-stop="1287.129000">That lets me narrow to just that subheading and</span> <span class="audio-time caption" data-speaker="Ben" data-start="1287.169000" data-stop="1289.031000">share my screen during the meetings.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1289.051000" data-stop="1291.353000">Then I don't have to worry about accidentally</span> <span class="audio-time caption" data-speaker="Ben" data-start="1291.393000" data-stop="1292.935000">leaking anybody else's information into the</span> <span class="audio-time caption" data-speaker="Ben" data-start="1292.955000" data-stop="1294.256000">screen share or anything like that.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1294.957000" data-stop="1298.720000">Obviously we let off with conversations about</span> <span class="audio-time caption" data-speaker="Ben" data-start="1298.740000" data-stop="1300.042000">them being all right with that.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1301.023000" data-stop="1306.348000">But the ability to very clearly and simply</span> <span class="audio-time caption" data-speaker="Ben" data-start="1306.408000" data-stop="1307.509000">delineate</span> <span class="audio-time caption" data-speaker="Ben" data-start="1307.489000" data-stop="1310.654000">"This domain of my notes pertains to this person"</span> <span class="audio-time caption" data-speaker="Ben" data-start="1311.275000" data-stop="1313.859000">and being able to be confident and share that</span> <span class="audio-time caption" data-speaker="Ben" data-start="1313.899000" data-stop="1316.042000">confidence that there will be no leakage means</span> <span class="audio-time caption" data-speaker="Ben" data-start="1316.062000" data-stop="1318.626000">that we can explore topics and talk about them in</span> <span class="audio-time caption" data-speaker="Ben" data-start="1318.666000" data-stop="1322.391000">a way that might otherwise be a little bit more</span> <span class="audio-time caption" data-speaker="Ben" data-start="1322.451000" data-stop="1323.333000">restrictive.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1323.433000" data-stop="1326.457000">So being able to do that simply, and being able to</span> <span class="audio-time caption" data-speaker="Ben" data-start="1326.518000" data-stop="1330.283000">establish a very clear delineation around whose</span> <span class="audio-time caption" data-speaker="Ben" data-start="1330.323000" data-stop="1332.186000">information belongs where and where it should be</span> <span class="audio-time caption" data-speaker="Ben" data-start="1332.226000" data-stop="1334.830000">shared turns out to be pretty valuable.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1335.130000" data-stop="1336.913000"><strong class="speaker-name">Sacha:</strong>  Yeah, and that's a technique I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1336.953000" data-stop="1339.938000">think that especially people who are new to Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1339.978000" data-stop="1342.081000">and who aren't used to narrowing and widening</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1342.542000" data-stop="1344.746000">might not know how to use effectively.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1345.387000" data-stop="1347.631000">I think narrow is even one of the commands that's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1347.731000" data-stop="1348.752000">disabled by default.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1348.773000" data-stop="1350.636000">You've got to say, yeah, you know, I'm not scared.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1350.656000" data-stop="1351.637000">I know what to do.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="1352.378000" data-stop="1354.622000"><strong class="speaker-name">Ben:</strong>  Yeah, it's kind of bizarre to me</span> <span class="audio-time caption" data-speaker="Ben" data-start="1354.722000" data-stop="1356.345000">that it is, but yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1356.528000" data-stop="1358.631000"><strong class="speaker-name">Sacha:</strong>  I can imagine people accidentally</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1358.671000" data-stop="1360.574000">triggering it and they're like, oh no, the rest</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1360.614000" data-stop="1361.635000">of my file is missing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1362.136000" data-stop="1363.978000">But if you know how to narrow to a region, and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1364.099000" data-stop="1367.624000">Org even has those commands to easily narrow to a subtree...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1368.345000" data-stop="1372.190000">I think it's even part of the default speed</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1372.230000" data-stop="1374.073000">command so you can trigger it right from a heading.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1374.653000" data-stop="1377.878000">But it's great for that kind of restriction.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1378.000000">22:58</span> <strong>There's even an internal Slack channel about Emacs at Ben's company</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1378.718000" data-stop="1381.541000"><strong class="speaker-name">Sacha:</strong> Okay, so the reason why I was asking about that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1381.621000" data-stop="1384.084000">is because some people are working with people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1384.124000" data-stop="1386.487000">who are not using Emacs, so it's very interesting</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1386.527000" data-stop="1390.050000">to see what the kinds of... It's very rare for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1390.091000" data-stop="1391.692000">people to work with other people who actually</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1391.792000" data-stop="1394.255000">use... Are there any other Emacs people in your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1394.315000" data-stop="1395.336000">company, for example?</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="1396.057000" data-stop="1398.480000"><strong class="speaker-name">Ben:</strong>  There's an entire Emacs Slack topic</span> <span class="audio-time caption" data-speaker="Ben" data-start="1398.520000" data-stop="1399.521000">about that, yeah.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1399.821000" data-stop="1400.542000">It's kind of great.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1401.043000" data-stop="1403.906000"><strong class="speaker-name">Sacha:</strong>  What is that like to have co-workers who do Emacs?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1403.926000" data-stop="1406.008000">Because this is a rare experience.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="1406.242000" data-stop="1407.143000"><strong class="speaker-name">Ben:</strong>  It's super cool.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1408.305000" data-stop="1411.149000">It's also neat to see the very, very different</span> <span class="audio-time caption" data-speaker="Ben" data-start="1411.209000" data-stop="1412.651000">ways that people use it.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1414.934000" data-stop="1418.939000">But yeah, oftentimes people will talk about</span> <span class="audio-time caption" data-speaker="Ben" data-start="1418.979000" data-stop="1420.782000">problems that they have with particular internal</span> <span class="audio-time caption" data-speaker="Ben" data-start="1420.802000" data-stop="1423.846000">tools, and somebody's like, oh yeah, go check out</span> <span class="audio-time caption" data-speaker="Ben" data-start="1423.886000" data-stop="1426.009000">this repo on GitLab that I published last week</span> <span class="audio-time caption" data-speaker="Ben" data-start="1426.069000" data-stop="1428.573000">where I got sick of it and decided to solve that</span> <span class="audio-time caption" data-speaker="Ben" data-start="1428.613000" data-stop="1429.654000">problem categorically.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1431.256000" data-stop="1432.358000">It's actually super cool.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1432.418000" data-stop="1435.422000">And some of the folks at...</span> <span class="audio-time caption" data-speaker="Ben" data-start="1435.638000" data-stop="1438.803000">Generally, I tried not to mention my current</span> <span class="audio-time caption" data-speaker="Ben" data-start="1438.863000" data-stop="1439.664000">employer at any point.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1440.125000" data-stop="1441.167000">Obviously, it's not secret.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1441.507000" data-stop="1442.709000">It's in the init file.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1442.769000" data-stop="1446.034000">But yeah, I don't tend to get into that deeply.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1446.074000" data-stop="1448.058000">But some of the other people who work at my</span> <span class="audio-time caption" data-speaker="Ben" data-start="1448.098000" data-stop="1453.466000">company, they maintain venerable Emacs packages.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1453.686000" data-stop="1455.850000">So it's awesome to be able to go and talk with</span> <span class="audio-time caption" data-speaker="Ben" data-start="1455.910000" data-stop="1457.292000">some of the folks who</span> <span class="audio-time caption" data-speaker="Ben" data-start="1457.542000" data-stop="1458.964000">I've been working on the code that I've been</span> <span class="audio-time caption" data-speaker="Ben" data-start="1459.004000" data-stop="1461.367000">using for a decade and we are now coworkers.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1461.387000" data-stop="1462.769000">It's lovely.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1463.530000" data-stop="1464.712000"><strong class="speaker-name">Sacha:</strong>  Oh, that's so nice.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1465.213000" data-stop="1467.176000">I'm glad you have that kind of little community</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1467.236000" data-stop="1468.457000">in there.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="1468.477000" data-stop="1473.705000"><strong class="speaker-name">Ben:</strong>  Yeah. Bunch of nerds.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1473.725000" data-stop="1476.989000"><strong class="speaker-name">Sacha:</strong>  So I suspect some people will be looking up your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1477.029000" data-stop="1477.931000">company after this.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1477.951000" data-stop="1479.813000">I think it's also mentioned in LinkedIn and sort</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1479.833000" data-stop="1481.335000">of like, okay, let's see if there's any job</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1481.355000" data-stop="1481.536000">openings.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="1481.556000" data-stop="1482.898000"><strong class="speaker-name">Ben:</strong>  If it's mentioned on LinkedIn, that</span> <span class="audio-time caption" data-speaker="Ben" data-start="1482.978000" data-stop="1483.979000">is somebody else.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1484.079000" data-stop="1486.503000">I haven't logged into LinkedIn in 15 years and I</span> <span class="audio-time caption" data-speaker="Ben" data-start="1486.663000" data-stop="1490.339000">never will.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1490.000000">24:50</span> <strong>Ben keeps Org capture templates as individual files and adapts them to different meeting flows</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1490.340000" data-stop="1491.823000"><strong class="speaker-name">Sacha:</strong>  We do have a question from Shae.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1491.843000" data-stop="1494.388000">Shae is asking, how do you make a capture</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1494.428000" data-stop="1497.415000">template to stay on agenda and record decisions?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1498.076000" data-stop="1499.178000">You got any tips for that?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1499.419000" data-stop="1504.309000">I'm guessing this is more of a human thing rather</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1504.350000" data-stop="1506.474000">than an Org thing, but maybe you have some ideas</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1507.015000" data-stop="1508.338000">on how you keep something on track.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="1508.757000" data-stop="1510.300000"><strong class="speaker-name">Ben:</strong>  So I'll actually push back on the</span> <span class="audio-time caption" data-speaker="Ben" data-start="1510.320000" data-stop="1511.802000">"It's a human thing rather than an Org thing".</span> <span class="audio-time caption" data-speaker="Ben" data-start="1513.085000" data-stop="1516.711000">I strongly believe that one of the real values</span> <span class="audio-time caption" data-speaker="Ben" data-start="1516.751000" data-stop="1519.797000">of Org Mode is that it's a very plastic system.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1520.297000" data-stop="1522.261000">Fundamentally, I think that it is a human system</span> <span class="audio-time caption" data-speaker="Ben" data-start="1522.702000" data-stop="1524.725000">because it allows you to express exactly those</span> <span class="audio-time caption" data-speaker="Ben" data-start="1524.765000" data-stop="1528.572000">kinds of trade-offs in a really, really fluid way.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1529.378000" data-stop="1531.921000">I love the personal information management that</span> <span class="audio-time caption" data-speaker="Ben" data-start="1532.021000" data-stop="1533.523000">Palm Pilots provided, for example,</span> <span class="audio-time caption" data-speaker="Ben" data-start="1533.583000" data-stop="1534.624000">but it was pretty restrictive.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1534.724000" data-stop="1537.427000">One of the things that I love about Org Mode</span> <span class="audio-time caption" data-speaker="Ben" data-start="1537.888000" data-stop="1540.531000">is that if you find that a particular person has</span> <span class="audio-time caption" data-speaker="Ben" data-start="1540.771000" data-stop="1543.615000">a particular conversation style, it's really easy</span> <span class="audio-time caption" data-speaker="Ben" data-start="1543.775000" data-stop="1546.178000">to modify your Org Mode capture templates to be</span> <span class="audio-time caption" data-speaker="Ben" data-start="1546.218000" data-stop="1547.739000">able to capture that particular flow that you</span> <span class="audio-time caption" data-speaker="Ben" data-start="1547.800000" data-stop="1548.701000">have with that person.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1549.502000" data-stop="1552.385000">Or with a particular group of a recurring</span> <span class="audio-time caption" data-speaker="Ben" data-start="1552.425000" data-stop="1554.067000">meeting, for example, that tends to flow in a</span> <span class="audio-time caption" data-speaker="Ben" data-start="1554.107000" data-stop="1555.048000">particular way.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1555.028000" data-stop="1557.935000">Super easy to update the templates that I use to</span> <span class="audio-time caption" data-speaker="Ben" data-start="1557.995000" data-stop="1560.241000">capture those particular meetings to make it</span> <span class="audio-time caption" data-speaker="Ben" data-start="1560.361000" data-stop="1562.907000">easier to match the general conversation flow</span> <span class="audio-time caption" data-speaker="Ben" data-start="1563.008000" data-stop="1566.556000">with the notes that I will be taking about it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1566.576000" data-stop="1567.438000"><strong class="speaker-name">Sacha:</strong>  Wow, that sounds pretty</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1567.459000" data-stop="1568.481000">sophisticated.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="1568.832000" data-stop="1570.394000"><strong class="speaker-name">Ben:</strong>  Well, I mean, that's the thing.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1570.414000" data-stop="1571.455000">It's not sophisticated.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1571.536000" data-stop="1577.483000">It tracks the human process very easily.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1577.503000" data-stop="1578.905000">So it's really lightweight.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1579.025000" data-stop="1581.048000">So you don't have to have a lot of sophistication</span> <span class="audio-time caption" data-speaker="Ben" data-start="1581.428000" data-stop="1583.471000">to make it very, very useful.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1583.511000" data-stop="1585.033000">You just have to have a feedback loop that you</span> <span class="audio-time caption" data-speaker="Ben" data-start="1585.053000" data-stop="1588.257000">can tune every time with one or two minutes of effort.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1588.538000" data-stop="1592.703000">And that's one of the reasons why I depend on</span> <span class="audio-time caption" data-speaker="Ben" data-start="1592.763000" data-stop="1594.926000">Magit mode so much is that it lets me track</span> <span class="audio-time caption" data-speaker="Ben" data-start="1594.946000" data-stop="1595.667000">those things.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1597.368000" data-stop="1599.480000">But yeah, to answer Shae's question about how do</span> <span class="audio-time caption" data-speaker="Ben" data-start="1599.560000" data-stop="1601.893000">I track those particular things.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1602.768000" data-stop="1607.394000">So if it's a meeting where one of my direct reports</span> <span class="audio-time caption" data-speaker="Ben" data-start="1607.395000" data-stop="1610.399000">has a particular set of topics that we</span> <span class="audio-time caption" data-speaker="Ben" data-start="1610.419000" data-stop="1611.861000">tend to investigate, like somebody who's</span> <span class="audio-time caption" data-speaker="Ben" data-start="1611.901000" data-stop="1613.163000">concentrated on career growth.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1613.223000" data-stop="1615.025000">So we're talking about the areas in which we want</span> <span class="audio-time caption" data-speaker="Ben" data-start="1615.045000" data-stop="1615.706000">to see development.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1616.367000" data-stop="1618.510000">I'll absolutely update the capture templates for</span> <span class="audio-time caption" data-speaker="Ben" data-start="1618.530000" data-stop="1620.313000">that particular person to say, all right, here's</span> <span class="audio-time caption" data-speaker="Ben" data-start="1620.333000" data-stop="1621.294000">what we talked about last time.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1621.835000" data-stop="1624.799000">Here are the things that were done between our</span> <span class="audio-time caption" data-speaker="Ben" data-start="1625.560000" data-stop="1628.224000">last two conversations about how we move in that direction.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1628.544000" data-stop="1631.188000">Were they successful or not?</span> <span class="audio-time caption" data-speaker="Ben" data-start="1631.168000" data-stop="1632.630000">Did it require a lot of effort?</span> <span class="audio-time caption" data-speaker="Ben" data-start="1632.690000" data-stop="1634.151000">So was it something that more effort should be</span> <span class="audio-time caption" data-speaker="Ben" data-start="1634.231000" data-stop="1637.374000">put into to be able to drive down the work over time,</span> <span class="audio-time caption" data-speaker="Ben" data-start="1637.375000" data-stop="1638.917000">to be able to produce those results?</span> <span class="audio-time caption" data-speaker="Ben" data-start="1639.317000" data-stop="1640.557000">But yeah, that goes into the templates</span> <span class="audio-time caption" data-speaker="Ben" data-start="1640.558000" data-stop="1643.962000">and that goes into the cadence of conversations that we</span> <span class="audio-time caption" data-speaker="Ben" data-start="1644.002000" data-stop="1645.304000">talked about in Capture.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1645.324000" data-stop="1646.265000"><strong class="speaker-name">Sacha:</strong>  So that's really interesting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1646.285000" data-stop="1650.329000">You modify the capture templates with the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1650.429000" data-stop="1653.112000">notes that you want to have easily available the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1653.193000" data-stop="1654.454000">next time you chat with them.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="1655.015000" data-stop="1658.138000"><strong class="speaker-name">Ben:</strong>  Exactly, yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1658.708000" data-stop="1660.750000"><strong class="speaker-name">Sacha:</strong>  The capture templates are still defined as a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1660.810000" data-stop="1663.192000">setq somewhere in your thing, or are you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1663.212000" data-stop="1664.954000">going into the customized interface?</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="1666.135000" data-stop="1667.316000"><strong class="speaker-name">Ben:</strong>  So I actually keep the capture mode</span> <span class="audio-time caption" data-speaker="Ben" data-start="1667.336000" data-stop="1671.861000">templates as raw files that are referred to, and</span> <span class="audio-time caption" data-speaker="Ben" data-start="1672.161000" data-stop="1673.803000">that makes it easier to version them in a way</span> <span class="audio-time caption" data-speaker="Ben" data-start="1673.863000" data-stop="1678.127000">that like, I mean, sure, like my Emacs init file,</span> <span class="audio-time caption" data-speaker="Ben" data-start="1678.167000" data-stop="1679.969000">if you look at the Git history of it, it has a</span> <span class="audio-time caption" data-speaker="Ben" data-start="1680.049000" data-stop="1680.889000">whole bunch of different...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1686.502000" data-stop="1687.884000"><strong class="speaker-name">Sacha:</strong>  I had not considered having capture</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1687.904000" data-stop="1689.166000">templates as files files.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1690.027000" data-stop="1690.948000">It worked out really well.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="1691.329000" data-stop="1694.833000"><strong class="speaker-name">Ben:</strong>  So you can see that... It's a little</span> <span class="audio-time caption" data-speaker="Ben" data-start="1694.853000" data-stop="1697.237000">bit hard to see with the font this small, but you</span> <span class="audio-time caption" data-speaker="Ben" data-start="1697.277000" data-stop="1702.604000">can see that I've got a lot of changes to, for</span> <span class="audio-time caption" data-speaker="Ben" data-start="1702.664000" data-stop="1710.535000">example, my init file, but keeping them in</span> <span class="audio-time caption" data-speaker="Ben" data-start="1710.953000" data-stop="1713.978000">individual capture mode template files makes it a</span> <span class="audio-time caption" data-speaker="Ben" data-start="1714.018000" data-stop="1717.082000">little bit easier to just look at the history of</span> <span class="audio-time caption" data-speaker="Ben" data-start="1717.103000" data-stop="1718.605000">that particular file and see why particular</span> <span class="audio-time caption" data-speaker="Ben" data-start="1718.625000" data-stop="1719.226000">changes were made.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1719.827000" data-stop="1720.968000"><strong class="speaker-name">Sacha:</strong>  I'm going to try that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1721.289000" data-stop="1723.332000">I think that's a great idea because it allows you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1723.372000" data-stop="1725.616000">to be a lot more granular about the notes.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1725.000000">28:45</span> <strong>Personal-scale software and the journey
</strong></div><p></p><a href="https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/emacs-chat-25-ben-zanin-00-28-28-300.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/emacs-chat-25-ben-zanin-00-28-28-300.jpg" alt="image from video 00:28:28.300" data-time="00:28:28.300"></a><span class="audio-time caption" data-speaker="Sacha" data-start="1725.936000" data-stop="1728.220000"><strong class="speaker-name">Sacha:</strong> I saw in that very brief flash of your change</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1728.280000" data-stop="1730.363000">log message that you like to write</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1730.444000" data-stop="1732.867000">fairly detailed commit messages that talk about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1733.068000" data-stop="1735.691000">why a change was made instead of just "a new</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1735.732000" data-stop="1736.673000">function, new command,"</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1737.033000" data-stop="1739.938000">very terse updates that I sometimes just try to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1739.958000" data-stop="1740.458000">get away with.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1740.879000" data-stop="1742.942000">Tell us more about that, because I think you've</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1743.322000" data-stop="1746.327000">had a couple of toots about reading source code</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1746.387000" data-stop="1747.268000">and reading commits.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="1748.650000" data-stop="1749.411000"><strong class="speaker-name">Ben:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1752.455000" data-stop="1757.651000">So I guess one of the things that I most appreciate about</span> <span class="audio-time caption" data-speaker="Ben" data-start="1757.971000" data-stop="1760.054000">software in general, and specifically personal</span> <span class="audio-time caption" data-speaker="Ben" data-start="1760.094000" data-stop="1761.676000">software, like personal-scale software that's</span> <span class="audio-time caption" data-speaker="Ben" data-start="1761.716000" data-stop="1765.421000">been written by an amount of people that you</span> <span class="audio-time caption" data-speaker="Ben" data-start="1765.441000" data-stop="1767.283000">could fit into a room to have a conversation</span> <span class="audio-time caption" data-speaker="Ben" data-start="1767.323000" data-stop="1767.583000">about it...</span> <span class="audio-time caption" data-speaker="Ben" data-start="1768.665000" data-stop="1770.167000">One of the things that I most appreciate about</span> <span class="audio-time caption" data-speaker="Ben" data-start="1770.187000" data-stop="1773.271000">that is that almost all software written that way</span> <span class="audio-time caption" data-speaker="Ben" data-start="1773.291000" data-stop="1777.035000">is fundamentally a diary about the way that a</span> <span class="audio-time caption" data-speaker="Ben" data-start="1777.095000" data-stop="1779.258000">person learned how to solve a set of problems</span> <span class="audio-time caption" data-speaker="Ben" data-start="1779.278000" data-stop="1781.121000">that they might not have known about when they</span> <span class="audio-time caption" data-speaker="Ben" data-start="1781.161000" data-stop="1782.042000">decided to at the beginning.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1782.963000" data-stop="1785.426000">It's this fascinating process of</span> <span class="audio-time caption" data-speaker="Ben" data-start="1785.743000" data-stop="1789.011000">tracking somebody's voyage through the problem</span> <span class="audio-time caption" data-speaker="Ben" data-start="1789.071000" data-stop="1792.921000">landscape as they discover other people who have</span> <span class="audio-time caption" data-speaker="Ben" data-start="1793.963000" data-stop="1796.630000">touched on topics that are tangential to the</span> <span class="audio-time caption" data-speaker="Ben" data-start="1796.650000" data-stop="1801.542000">problem being solved by that software package.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1802.129000" data-stop="1805.796000">It's such a personal and fascinating experience</span> <span class="audio-time caption" data-speaker="Ben" data-start="1805.896000" data-stop="1809.082000">to see somebody go from "I know just enough about</span> <span class="audio-time caption" data-speaker="Ben" data-start="1809.142000" data-stop="1810.625000">a problem to be able to decide that I want to</span> <span class="audio-time caption" data-speaker="Ben" data-start="1810.825000" data-stop="1813.350000">build a machine that works on it" to "I have</span> <span class="audio-time caption" data-speaker="Ben" data-start="1813.370000" data-stop="1815.474000">this deeper understanding of how the problem</span> <span class="audio-time caption" data-speaker="Ben" data-start="1815.594000" data-stop="1818.038000">actually exists in the broader set of things that</span> <span class="audio-time caption" data-speaker="Ben" data-start="1818.058000" data-stop="1818.940000">people care about,</span> <span class="audio-time caption" data-speaker="Ben" data-start="1820.202000" data-stop="1822.487000">oriented along the axis of what machinery can</span> <span class="audio-time caption" data-speaker="Ben" data-start="1822.527000" data-stop="1825.012000">do to help solve parts of that problem."</span> <span class="audio-time caption" data-speaker="Ben" data-start="1825.032000" data-stop="1829.061000">The commit logs for a program are</span> <span class="audio-time caption" data-speaker="Ben" data-start="1829.101000" data-stop="1832.068000">like a map through that territory.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1832.108000" data-stop="1834.633000">It's wonderful to read.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1836.048000" data-stop="1837.690000">It gives you a lot of insight into the person</span> <span class="audio-time caption" data-speaker="Ben" data-start="1837.730000" data-stop="1838.771000">doing the navigation.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1839.252000" data-stop="1842.596000">When you see 16 commits on December 24th of 2023,</span> <span class="audio-time caption" data-speaker="Ben" data-start="1842.636000" data-stop="1845.940000">like, that person probably had a little</span> <span class="audio-time caption" data-speaker="Ben" data-start="1845.980000" data-stop="1846.721000">bit of time to work on it.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1847.322000" data-stop="1849.044000">Then, when you see a bunch of commits that are</span> <span class="audio-time caption" data-speaker="Ben" data-start="1849.084000" data-stop="1851.668000">5 p.m. Monday to Friday, like, okay, this is</span> <span class="audio-time caption" data-speaker="Ben" data-start="1851.708000" data-stop="1854.331000">probably done in a particular way.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1854.391000" data-stop="1857.435000">It's this deeply personal process of</span> <span class="audio-time caption" data-speaker="Ben" data-start="1857.515000" data-stop="1859.497000">seeing how problems are learned about.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1860.839000" data-stop="1863.102000">I just really appreciate that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1864.347000" data-stop="1865.409000"><strong class="speaker-name">Sacha:</strong>  I think what you're saying about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1865.669000" data-stop="1868.614000">personal-scale software and getting a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1868.654000" data-stop="1871.619000">sense of people's journey as they learn to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1871.659000" data-stop="1874.063000">understand a problem and as they start to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1874.123000" data-stop="1876.326000">prototype a solution... Because you never quite come</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1876.366000" data-stop="1878.169000">across the right solution the first time around.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1878.690000" data-stop="1879.672000">You're figuring things out,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1879.712000" data-stop="1881.214000">You're borrowing things from other people.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1881.775000" data-stop="1884.139000">I think that will resonate a lot with lots of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1884.159000" data-stop="1886.523000">people in the Emacs community, because Emacs use</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1886.583000" data-stop="1888.646000">is so personal, as you mentioned when you were</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1888.686000" data-stop="1889.848000">looking at the Slack channel.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1891.533000" data-stop="1894.277000">I was wondering, in your personal practice, as</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1894.317000" data-stop="1896.580000">you figure things out, what kinds of things help you?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1896.660000" data-stop="1899.684000">Is it mostly a matter of actually sitting down</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1899.704000" data-stop="1902.248000">and taking the time to write the literate</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1902.368000" data-stop="1905.773000">programming stuff around the code blocks or the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1905.793000" data-stop="1906.554000">commit messages,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1906.654000" data-stop="1908.877000">or are there other tools or techniques that help</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1908.897000" data-stop="1909.558000">you do that?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1910.753000" data-stop="1913.636000">Are there tools or techniques that help me write</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1913.676000" data-stop="1916.619000">down your journey along the way as you think</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1916.659000" data-stop="1917.019000">about the code?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1917.039000" data-stop="1917.840000">What's your practice?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1917.920000" data-stop="1920.643000">For example, when you come across something that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1920.723000" data-stop="1923.306000">you want to figure out, how do you go about doing it?</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="1924.848000" data-stop="1928.772000"><strong class="speaker-name">Ben:</strong>  So it depends on how I'm</span> <span class="audio-time caption" data-speaker="Ben" data-start="1928.812000" data-stop="1929.592000">approaching the project.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1930.033000" data-stop="1932.135000">One of the neat things about software is that</span> <span class="audio-time caption" data-speaker="Ben" data-start="1932.155000" data-stop="1933.877000">it's a document and a device at the same time.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1934.077000" data-stop="1936.279000">You can care about it because of the thing</span> <span class="audio-time caption" data-speaker="Ben" data-start="1936.299000" data-stop="1937.881000">that it does, or you can care about it because of</span> <span class="audio-time caption" data-speaker="Ben" data-start="1938.341000" data-stop="1939.883000">the information that it captures.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1939.863000" data-stop="1942.748000">If I'm digging into a program because it does</span> <span class="audio-time caption" data-speaker="Ben" data-start="1942.788000" data-stop="1945.132000">a thing that I want to learn, then I'll pay</span> <span class="audio-time caption" data-speaker="Ben" data-start="1945.172000" data-stop="1948.118000">attention to the device aspect of it.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1948.138000" data-stop="1949.740000">That usually means that I'll start with its</span> <span class="audio-time caption" data-speaker="Ben" data-start="1949.801000" data-stop="1950.622000">own documentation.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1950.642000" data-stop="1952.045000">If it has a man page, I'll read that.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1952.065000" data-stop="1953.427000">If it has user docs, I'll read those.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1954.208000" data-stop="1957.132000">Usually, I'll start keeping notes in</span> <span class="audio-time caption" data-speaker="Ben" data-start="1957.133000" data-stop="1959.657000">an Org Mode file, because it's easy to hyperlink</span> <span class="audio-time caption" data-speaker="Ben" data-start="1959.658000" data-stop="1963.485000">back to it and add my own annotations in parallel to the</span> <span class="audio-time caption" data-speaker="Ben" data-start="1963.545000" data-stop="1964.807000">actual authoritative source.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1965.580000" data-stop="1969.425000">If I'm reading software primarily as a document,</span> <span class="audio-time caption" data-speaker="Ben" data-start="1969.445000" data-stop="1971.888000">then I'll start by reading the source code and</span> <span class="audio-time caption" data-speaker="Ben" data-start="1971.989000" data-stop="1974.512000">the commit logs, usually the most recent ones,</span> <span class="audio-time caption" data-speaker="Ben" data-start="1974.812000" data-stop="1976.334000">and then I'll jump back to the beginning of the</span> <span class="audio-time caption" data-speaker="Ben" data-start="1976.374000" data-stop="1978.417000">project and read upwards at the beginning, and</span> <span class="audio-time caption" data-speaker="Ben" data-start="1978.457000" data-stop="1981.321000">then fill in the blanks iteratively, if it's a</span> <span class="audio-time caption" data-speaker="Ben" data-start="1981.381000" data-stop="1983.965000">project that's small enough or has little enough</span> <span class="audio-time caption" data-speaker="Ben" data-start="1984.005000" data-stop="1985.627000">history that I can do that.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1985.727000" data-stop="1988.391000">Again, I'll usually start an Org Mode file</span> <span class="audio-time caption" data-speaker="Ben" data-start="1988.431000" data-stop="1991.735000">specific to that particular exploration that will</span> <span class="audio-time caption" data-speaker="Ben" data-start="1992.516000" data-stop="1994.018000">let me organize my notes as I go.</span> <span class="audio-time caption" data-speaker="Ben" data-start="1995.061000" data-stop="2000.828000">I really do rely on the external brain that I can</span> <span class="audio-time caption" data-speaker="Ben" data-start="2000.909000" data-stop="2005.414000">keep in an Org Mode file.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2007.637000" data-stop="2012.043000">I tend to have a pretty decent long-term memory,</span> <span class="audio-time caption" data-speaker="Ben" data-start="2012.063000" data-stop="2013.845000">but being able to bridge the gap between</span> <span class="audio-time caption" data-speaker="Ben" data-start="2014.586000" data-stop="2016.409000">short-term memory and long-term memory is super,</span> <span class="audio-time caption" data-speaker="Ben" data-start="2016.429000" data-stop="2017.089000">super useful.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2017.109000" data-stop="2020.193000">Leaving myself hints that let me dredge things</span> <span class="audio-time caption" data-speaker="Ben" data-start="2020.294000" data-stop="2022.216000">back out of long-term and</span> <span class="audio-time caption" data-speaker="Ben" data-start="2022.466000" data-stop="2024.589000">reload it into the hot cache of short-term really,</span> <span class="audio-time caption" data-speaker="Ben" data-start="2024.669000" data-stop="2028.395000">really helps out, because that lets me maintain</span> <span class="audio-time caption" data-speaker="Ben" data-start="2028.435000" data-stop="2030.418000">that flow state or get back into that flow state.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2030.458000" data-stop="2033.583000">When you've got like the whole program, all the</span> <span class="audio-time caption" data-speaker="Ben" data-start="2033.623000" data-stop="2036.127000">context that you've absorbed up until now and the</span> <span class="audio-time caption" data-speaker="Ben" data-start="2036.227000" data-stop="2037.890000">ideas of the areas that you want to</span> <span class="audio-time caption" data-speaker="Ben" data-start="2037.950000" data-stop="2038.411000">investigate,</span> <span class="audio-time caption" data-speaker="Ben" data-start="2038.811000" data-stop="2040.935000">being able to hot-reload all of that and then</span> <span class="audio-time caption" data-speaker="Ben" data-start="2040.975000" data-stop="2042.557000">pick up where I left off is super useful.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2043.659000" data-stop="2044.841000">But the meat brain can't do it.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2045.362000" data-stop="2046.904000">I need the machine brain too.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2047.000000">34:07</span> <strong>vc-git-grep for finding notes again</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2047.728000" data-stop="2050.194000"><strong class="speaker-name">Sacha:</strong>  Tell me about this dredging up process.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2050.455000" data-stop="2054.304000">Are you a lots of little files person?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2054.446000" data-stop="2057.514000">A couple of large files?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2057.554000" data-stop="2058.616000">A project file,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2058.956000" data-stop="2061.685000">there's an Org file in each project that you look up?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2061.705000" data-stop="2063.168000">How do you find things, especially if you don't</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2063.268000" data-stop="2064.572000">remember the exact words?</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="2066.088000" data-stop="2069.610000"><strong class="speaker-name">Ben:</strong>  So it's usually like an Org Mode</span> <span class="audio-time caption" data-speaker="Ben" data-start="2069.630000" data-stop="2074.054000">per category, and they get consolidated.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2075.897000" data-stop="2077.739000">Let me shrink this down a little bit.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2077.759000" data-stop="2080.581000">So usually it's an Org Mode category per file.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2081.181000" data-stop="2085.465000">If there's something super specific, then usually</span> <span class="audio-time caption" data-speaker="Ben" data-start="2085.505000" data-stop="2088.869000">it'll live out in its own place until I</span> <span class="audio-time caption" data-speaker="Ben" data-start="2088.909000" data-stop="2091.050000">get around to...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2091.051000" data-stop="2092.312000"><strong class="speaker-name">Sacha:</strong>  I love that you have an Org File</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2092.371000" data-stop="2093.833000">specifically for Mug Cake.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="2094.757000" data-stop="2095.498000"><strong class="speaker-name">Ben:</strong>  But that's the thing.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2095.699000" data-stop="2097.964000">It'll live off in its own thing until it gets</span> <span class="audio-time caption" data-speaker="Ben" data-start="2098.064000" data-stop="2104.236000">integrated into the list where the long-term</span> <span class="audio-time caption" data-speaker="Ben" data-start="2104.276000" data-stop="2105.439000">stuff lives.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2105.459000" data-stop="2110.528000">I promise this is pertinent to</span> <span class="audio-time caption" data-speaker="Ben" data-start="2110.548000" data-stop="2111.250000">your actual question.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2111.651000" data-stop="2112.953000"><strong class="speaker-name">Sacha:</strong>  No, no, this is very pertinent.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="2113.895000" data-stop="2116.898000"><strong class="speaker-name">Ben:</strong>  Usually, lots of little</span> <span class="audio-time caption" data-speaker="Ben" data-start="2116.958000" data-stop="2118.798000">files while I'm still working on something,</span> <span class="audio-time caption" data-speaker="Ben" data-start="2118.799000" data-stop="2123.263000">and then as that something becomes part of my larger life</span> <span class="audio-time caption" data-speaker="Ben" data-start="2123.264000" data-stop="2124.284000">and has links to other things,</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="2124.285000" data-stop="2127.287000"><strong class="speaker-name">Ben:</strong> then it'll kind of get centralized into one of the Org Mode</span> <span class="audio-time caption" data-speaker="Ben" data-start="2127.307000" data-stop="2132.952000">files that has a broader topic purpose basically.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2132.972000" data-stop="2138.677000"><strong class="speaker-name">Sacha:</strong>  If it's very long-term and you can't remember</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2138.678000" data-stop="2141.500000">the exact words to find something, how do you generally find</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2142.621000" data-stop="2143.362000">find your notes?</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="2147.459000" data-stop="2147.900000"><strong class="speaker-name">Ben:</strong>  That way.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2148.461000" data-stop="2151.327000"><strong class="speaker-name">Sacha:</strong>  You start grepping various keywords and try to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2151.367000" data-stop="2151.687000">find it.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="2152.349000" data-stop="2152.649000"><strong class="speaker-name">Ben:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2153.030000" data-stop="2155.234000">So one of the things that I don't yet have turned</span> <span class="audio-time caption" data-speaker="Ben" data-start="2155.334000" data-stop="2157.238000">on, and actually you inspired me to look into</span> <span class="audio-time caption" data-speaker="Ben" data-start="2157.278000" data-stop="2161.707000">this, was so... Actually, do we have enough time?</span> <span class="audio-time caption" data-speaker="Ben" data-start="2161.727000" data-stop="2161.987000">Yeah, okay.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2162.008000" data-stop="2163.811000">I'm just looking at the clock.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2163.831000" data-stop="2165.514000">One of the things that I wanted to get into was</span> <span class="audio-time caption" data-speaker="Ben" data-start="2166.336000" data-stop="2168.861000">long-term searching and searchability.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2169.242000" data-stop="2169.923000">Yeah.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2169.903000" data-stop="2173.189000">So I use SQLite's indexing for a lot of things,</span> <span class="audio-time caption" data-speaker="Ben" data-start="2173.970000" data-stop="2175.693000">and I really appreciate its porter stemming</span> <span class="audio-time caption" data-speaker="Ben" data-start="2176.154000" data-stop="2179.500000">because it lets you search for stemmed words,</span> <span class="audio-time caption" data-speaker="Ben" data-start="2179.961000" data-stop="2182.486000">which are kind of approximate matches, which is</span> <span class="audio-time caption" data-speaker="Ben" data-start="2182.586000" data-stop="2187.034000">useful, but less useful than vector databases.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2187.149000" data-stop="2190.296000">You actually put a little bit of work into</span> <span class="audio-time caption" data-speaker="Ben" data-start="2191.178000" data-stop="2194.085000">indexing topics based on vector similarity.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2194.626000" data-stop="2195.869000"><strong class="speaker-name">Sacha:</strong>  Which I haven't gotten back to, so</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2195.909000" data-stop="2197.613000">I'm glad to see you managed to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2197.653000" data-stop="2198.435000">experiment with it,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2198.936000" data-stop="2199.798000">see what you come up with.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="2200.460000" data-stop="2202.104000"><strong class="speaker-name">Ben:</strong>  I don't have anything to show</span> <span class="audio-time caption" data-speaker="Ben" data-start="2202.264000" data-stop="2204.088000">yet, except that it's an interesting topic.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2206.927000" data-stop="2209.230000">Because I'm word-oriented, I will often remember</span> <span class="audio-time caption" data-speaker="Ben" data-start="2209.270000" data-stop="2211.293000">individual keywords, or I'll have enough patience</span> <span class="audio-time caption" data-speaker="Ben" data-start="2211.373000" data-stop="2213.756000">that I can sift through a list of potential</span> <span class="audio-time caption" data-speaker="Ben" data-start="2213.796000" data-stop="2215.178000">keywords as I'm grepping for stuff.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2215.000000">36:55</span> <strong>Add keywords to make things easier to find again</strong></div><p></p><span class="audio-time caption" data-speaker="Ben" data-start="2215.979000" data-stop="2220.225000"><strong class="speaker-name">Ben:</strong> If I find that my first three or four</span> <span class="audio-time caption" data-speaker="Ben" data-start="2220.445000" data-stop="2222.187000">attempts at searching for a keyword don't find</span> <span class="audio-time caption" data-speaker="Ben" data-start="2222.228000" data-stop="2223.970000">the topic that I'm looking for, once I do</span> <span class="audio-time caption" data-speaker="Ben" data-start="2224.010000" data-stop="2225.732000">eventually dig up the topic, I will add those</span> <span class="audio-time caption" data-speaker="Ben" data-start="2225.792000" data-stop="2227.715000">keywords that I was searching for just so I can</span> <span class="audio-time caption" data-speaker="Ben" data-start="2227.755000" data-stop="2230.338000">find it next time, expecting that future me will</span> <span class="audio-time caption" data-speaker="Ben" data-start="2230.358000" data-stop="2233.002000">probably behave more or less like current me.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2234.298000" data-stop="2235.981000">But yeah, being able to use a vector</span> <span class="audio-time caption" data-speaker="Ben" data-start="2236.001000" data-stop="2239.626000">database to search for headings that include</span> <span class="audio-time caption" data-speaker="Ben" data-start="2239.687000" data-stop="2241.990000">related topics instead of related words...</span> <span class="audio-time caption" data-speaker="Ben" data-start="2242.872000" data-stop="2243.733000">I'd really like to get there.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2243.833000" data-stop="2244.694000">I'm not there yet,</span> <span class="audio-time caption" data-speaker="Ben" data-start="2244.755000" data-stop="2246.898000">and I think that's going to be interesting and useful.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2247.579000" data-stop="2249.242000">I also think it's going to be challenging to</span> <span class="audio-time caption" data-speaker="Ben" data-start="2249.282000" data-stop="2253.904000">represent Org Mode's hierarchical structure</span> <span class="audio-time caption" data-speaker="Ben" data-start="2253.905000" data-stop="2256.871000">to restrict the training</span> <span class="audio-time caption" data-speaker="Ben" data-start="2256.911000" data-stop="2258.413000">of particular vector sets</span> <span class="audio-time caption" data-speaker="Ben" data-start="2258.414000" data-stop="2261.921000">to be able to cast an increasingly wide net</span> <span class="audio-time caption" data-speaker="Ben" data-start="2262.242000" data-stop="2263.925000">for where I want the searches to run.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2264.547000" data-stop="2265.948000">I don't know how that's going to be solved yet,</span> <span class="audio-time caption" data-speaker="Ben" data-start="2265.949000" data-stop="2267.713000">but I'm going to be looking into it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2267.000000">37:47</span> <strong>Keybindings and terminals; wezterm</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2267.997000" data-stop="2271.202000"><strong class="speaker-name">Sacha:</strong>  @PuercoPop has a question regarding</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2271.222000" data-stop="2272.283000">terminal Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2272.343000" data-stop="2274.507000">"Do you need to change any of the keybindings to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2274.567000" data-stop="2277.010000">avoid clashes with the terminal?"</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2277.050000" data-stop="2279.113000">Some keybindings don't work on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2279.154000" data-stop="2281.777000">terminals, or some terminals already have these</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2282.218000" data-stop="2283.159000">keybindings set.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="2284.201000" data-stop="2287.846000"><strong class="speaker-name">Ben:</strong>  So I have good news and bad news there.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2288.287000" data-stop="2290.751000">The good news is that... One of the terminals</span> <span class="audio-time caption" data-speaker="Ben" data-start="2290.771000" data-stop="2293.034000">that I'm using right now on most of my systems is</span> <span class="audio-time caption" data-speaker="Ben" data-start="2293.094000" data-stop="2295.017000">Wezterm.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2295.723000" data-stop="2297.590000">It's really good.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2297.610000" data-stop="2299.657000">I started off with [meant to say Kitty], and I kind of bounced</span> <span class="audio-time caption" data-speaker="Ben" data-start="2299.697000" data-stop="2302.367000">off that project because of some of the behavior</span> <span class="audio-time caption" data-speaker="Ben" data-start="2302.407000" data-stop="2303.210000">of the lead developers.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2303.592000" data-stop="2305.759000">I won't get too deep into it, but what I found is</span> <span class="audio-time caption" data-speaker="Ben" data-start="2305.800000" data-stop="2307.606000">that Wezterm...</span> <span class="audio-time caption" data-speaker="Ben" data-start="2308.598000" data-stop="2311.262000">It gives me very little friction that way.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2311.282000" data-stop="2314.947000">It doesn't have a lot of its own keybindings,</span> <span class="audio-time caption" data-speaker="Ben" data-start="2314.948000" data-stop="2315.970000">and that's a relief.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2316.450000" data-stop="2318.594000">It means that I really don't have to... I don't</span> <span class="audio-time caption" data-speaker="Ben" data-start="2318.614000" data-stop="2321.679000">think I've had to put any time into customizing</span> <span class="audio-time caption" data-speaker="Ben" data-start="2321.719000" data-stop="2326.326000">Wezterm to get out of the way of Emacs or Screen.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2326.346000" data-stop="2328.129000">I should mention, I am running Emacs within</span> <span class="audio-time caption" data-speaker="Ben" data-start="2328.149000" data-stop="2329.611000">Screen,</span> <span class="audio-time caption" data-speaker="Ben" data-start="2329.591000" data-stop="2331.034000">so that introduces another layer.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2331.495000" data-stop="2334.000000"><code>C-a a</code>, for example, is
<code>beginning-of-line</code></span> <span class="audio-time caption" data-speaker="Ben" data-start="2334.040000" data-stop="2337.647000">for me, even though <code>C-a</code> itself is the</span> <span class="audio-time caption" data-speaker="Ben" data-start="2337.667000" data-stop="2338.889000">default Emacs keybinding.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2339.270000" data-stop="2342.877000">But yeah, I think that I ended up choosing</span> <span class="audio-time caption" data-speaker="Ben" data-start="2342.897000" data-stop="2347.987000">terminal software specifically on that merit, so</span> <span class="audio-time caption" data-speaker="Ben" data-start="2348.027000" data-stop="2349.310000">that it doesn't get in the way.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2349.330000" data-stop="2352.055000">That's actually one of the things that Termux is...</span> <span class="audio-time caption" data-speaker="Ben" data-start="2352.237000" data-stop="2356.884000">The default Google keyboard keeps stealing key bindings.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2358.346000" data-stop="2360.609000">It'll update, and all of a sudden, I can't use a</span> <span class="audio-time caption" data-speaker="Ben" data-start="2360.650000" data-stop="2364.756000">particular Alt key combination anymore, because</span> <span class="audio-time caption" data-speaker="Ben" data-start="2365.316000" data-stop="2369.082000">now it invokes a Google keyboard shortcut for</span> <span class="audio-time caption" data-speaker="Ben" data-start="2370.544000" data-stop="2374.090000">pulling things out of the Android clipboard, for</span> <span class="audio-time caption" data-speaker="Ben" data-start="2374.150000" data-stop="2377.755000">example, which is really kind of annoying.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2377.735000" data-stop="2380.478000">But yeah, in terms of terminals on full-fledged</span> <span class="audio-time caption" data-speaker="Ben" data-start="2380.498000" data-stop="2383.682000">machines, I generally don't have that particular</span> <span class="audio-time caption" data-speaker="Ben" data-start="2383.722000" data-stop="2383.982000">problem.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2385.003000" data-stop="2390.289000">Except for... What was the name of it?</span> <span class="audio-time caption" data-speaker="Ben" data-start="2390.509000" data-stop="2401.041000">It was... It was a zap-to on-the-screen package</span> <span class="audio-time caption" data-speaker="Ben" data-start="2401.722000" data-stop="2404.906000">that alphapapa wrote, I believe, that I...</span> <span class="audio-time caption" data-speaker="Ben" data-start="2404.926000" data-stop="2405.987000">Actually, let me just look it up.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2411.823000" data-stop="2412.504000">Yeah, Avy.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2413.265000" data-stop="2413.566000"><strong class="speaker-name">Sacha:</strong>  Oh yeah?</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="2414.287000" data-stop="2415.849000"><strong class="speaker-name">Ben:</strong>  So I wanted to start picking this</span> <span class="audio-time caption" data-speaker="Ben" data-start="2415.909000" data-stop="2421.979000">up in 2021, and yeah, control colon doesn't work</span> <span class="audio-time caption" data-speaker="Ben" data-start="2422.139000" data-stop="2422.980000">in terminals.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2423.080000" data-stop="2428.068000">So the mode itself is fantastic, and when I'm</span> <span class="audio-time caption" data-speaker="Ben" data-start="2428.168000" data-stop="2431.012000">using it in a GUI Emacs, it's very useful, and I</span> <span class="audio-time caption" data-speaker="Ben" data-start="2432.034000" data-stop="2433.977000">rarely use it now specifically because of that</span> <span class="audio-time caption" data-speaker="Ben" data-start="2434.017000" data-stop="2435.299000">particular terminal problem.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2435.414000" data-stop="2437.076000">That is self-inflicted.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2437.096000" data-stop="2438.237000">That is not a problem with the package.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2438.257000" data-stop="2440.179000">That is a me problem.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2440.500000" data-stop="2445.085000">But yeah, I think this is the notable one that I</span> <span class="audio-time caption" data-speaker="Ben" data-start="2445.125000" data-stop="2445.666000">bounced off of.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2446.286000" data-stop="2447.568000"><strong class="speaker-name">Sacha:</strong>  Yeah, just trying to find the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2447.628000" data-stop="2449.931000">right, you know, a key binding that will pass.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2450.531000" data-stop="2452.433000">Because you can't get used to key binding in one</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2452.473000" data-stop="2454.276000">system and then not have it available in other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2454.316000" data-stop="2454.716000">systems.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2454.736000" data-stop="2455.857000">It's just going to mess with your brain.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2456.438000" data-stop="2459.181000">So yeah, Ray points out, yeah, Google steals</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2459.221000" data-stop="2461.304000">Control Shift K, which he uses to kill tabs to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2461.324000" data-stop="2461.604000">the right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2461.624000" data-stop="2462.285000">So it's like, oh.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="2463.226000" data-stop="2464.307000"><strong class="speaker-name">Ben:</strong>  Infuriating.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2464.777000" data-stop="2465.418000"><strong class="speaker-name">Sacha:</strong>  Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2465.438000" data-stop="2468.866000">And of course, none of the standard keyboards</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2468.926000" data-stop="2472.493000">have a super key on the thing, so you can't just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2472.674000" data-stop="2474.898000">tack on another modifier that'll get through.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="2474.938000" data-stop="2476.702000"><strong class="speaker-name">Ben:</strong>  That's actually one of the reasons</span> <span class="audio-time caption" data-speaker="Ben" data-start="2476.722000" data-stop="2478.606000">that I picked up this particular keyboard is</span> <span class="audio-time caption" data-speaker="Ben" data-start="2478.887000" data-stop="2480.490000">Brian Carlson.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2480.858000" data-stop="2481.799000">Another Torontonian.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2482.020000" data-stop="2483.722000">He works on Git LFS and some other stuff.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2484.182000" data-stop="2485.965000">He was specifically looking for a keyboard that</span> <span class="audio-time caption" data-speaker="Ben" data-start="2486.065000" data-stop="2488.208000">had a super key that he could remap.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2488.248000" data-stop="2491.793000">So four keys to the right of space, which this</span> <span class="audio-time caption" data-speaker="Ben" data-start="2491.913000" data-stop="2492.293000">one has.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2492.754000" data-stop="2495.357000">And because it's ZMK, it's remappable.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2495.738000" data-stop="2497.360000">I think this might be suitable for his purpose,</span> <span class="audio-time caption" data-speaker="Ben" data-start="2497.380000" data-stop="2500.945000">except that he wants a QMK keyboard, specifically</span> <span class="audio-time caption" data-speaker="Ben" data-start="2500.985000" data-stop="2503.548000">because the development tools for QMK are</span> <span class="audio-time caption" data-speaker="Ben" data-start="2503.568000" data-stop="2506.032000">packaged in W, and that's a plus for him.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2506.052000" data-stop="2507.133000">Anyhow, yes, I agree.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2507.433000" data-stop="2509.376000">Like, not having a super and a hyper key on a</span> <span class="audio-time caption" data-speaker="Ben" data-start="2509.396000" data-stop="2510.157000">keyboard</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2510.592000" data-stop="2513.362000"><strong class="speaker-name">Sacha:</strong>  feels like like one of your fingers</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2513.382000" data-stop="2518.078000">that are cramped up we need more modifiers well I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2518.098000" data-stop="2519.623000">mean you know pipe organ</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2524.531000" data-stop="2525.453000">Tell us about that.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="2525.473000" data-stop="2526.194000"><strong class="speaker-name">Ben:</strong>  What is this?</span> <span class="audio-time caption" data-speaker="Ben" data-start="2526.234000" data-stop="2528.098000">Oh yeah, foot pedals.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2528.839000" data-stop="2531.805000">Yeah, and I actually do have these wired into a</span> <span class="audio-time caption" data-speaker="Ben" data-start="2531.845000" data-stop="2536.034000">little Atmel microcontroller running QMK.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2536.555000" data-stop="2538.298000">I honestly tried the foot pedal thing for a</span> <span class="audio-time caption" data-speaker="Ben" data-start="2538.338000" data-stop="2538.759000">little while.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2539.060000" data-stop="2540.663000">It was hilarious.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2540.683000" data-stop="2541.865000">I did not find it useful.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2544.157000" data-stop="2545.499000"><strong class="speaker-name">Sacha:</strong>  I don't have the hand-eye-foot</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2545.519000" data-stop="2548.163000">coordination to do that thing at the same time.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="2548.844000" data-stop="2550.226000"><strong class="speaker-name">Ben:</strong>  Maybe if I had learned piano as a</span> <span class="audio-time caption" data-speaker="Ben" data-start="2550.246000" data-stop="2551.608000">kid, it would have been good.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2551.708000" data-stop="2553.611000">But yeah, I don't seem to be able to do it.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2554.012000" data-stop="2558.759000">But I gave it the old college try and it was fun.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2558.000000">42:38</span> <strong>Timers: tea-timer, tmr</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2558.779000" data-stop="2559.861000"><strong class="speaker-name">Sacha:</strong>  Okay, I had a couple of things I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2560.061000" data-stop="2562.124000">wanted to ask about in your config.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2562.144000" data-stop="2563.606000">You have two types of timers.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2564.588000" data-stop="2566.992000">You have tea-timer and you have Prot's TMR.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2567.733000" data-stop="2569.315000">Do you use them for different purposes?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2569.656000" data-stop="2570.637000">What's going on here?</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="2570.870000" data-stop="2572.352000"><strong class="speaker-name">Ben:</strong>  So I'm trying them out.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2572.492000" data-stop="2574.295000">I tried TTimer first because it was the first one</span> <span class="audio-time caption" data-speaker="Ben" data-start="2574.315000" data-stop="2576.137000">that I found, and it was useful.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2577.579000" data-stop="2579.883000">I was actually using it in meetings because I</span> <span class="audio-time caption" data-speaker="Ben" data-start="2579.903000" data-stop="2582.026000">would, when I was trying to keep us on topic, I</span> <span class="audio-time caption" data-speaker="Ben" data-start="2582.066000" data-stop="2584.069000">would use that to remind us that, oh, we've got</span> <span class="audio-time caption" data-speaker="Ben" data-start="2584.109000" data-stop="2585.270000">four other topics we need to get through.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2585.290000" data-stop="2586.552000">We're trying to give this one five minutes.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2586.632000" data-stop="2588.094000">We're running up on four.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2588.114000" data-stop="2591.539000">And it was just because it was super low overhead.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2591.579000" data-stop="2593.141000">It was easy to pick up.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2593.221000" data-stop="2594.563000">It was easy to have it displayed on my screen.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2594.944000" data-stop="2597.147000">And it didn't feel like I was...</span> <span class="audio-time caption" data-speaker="Ben" data-start="2597.127000" data-stop="2598.693000">Running a chess timer on everyone.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2598.754000" data-stop="2600.420000">It's very subtle in the mode line.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2600.461000" data-stop="2601.826000">It was useful.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2601.846000" data-stop="2604.758000">But what I found was that when I was...</span> <span class="audio-time caption" data-speaker="Ben" data-start="2606.999000" data-stop="2608.763000">Running multiple timers simultaneously.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2608.823000" data-stop="2612.069000">TMR, just the fact that you can list all the</span> <span class="audio-time caption" data-speaker="Ben" data-start="2612.089000" data-stop="2614.073000">timers and manage them in a separate buffer.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2614.133000" data-stop="2617.340000">It's richer and I appreciated some of its</span> <span class="audio-time caption" data-speaker="Ben" data-start="2617.360000" data-stop="2618.121000">documentation more.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2618.582000" data-stop="2619.905000">I haven't fully switched over to it yet.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2620.286000" data-stop="2622.029000">I'm still in exploratory mode.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2622.049000" data-stop="2625.636000">In fact, this is probably like... So I actually</span> <span class="audio-time caption" data-speaker="Ben" data-start="2625.677000" data-stop="2628.061000">have a bunch more packages installed than I'm</span> <span class="audio-time caption" data-speaker="Ben" data-start="2628.121000" data-stop="2628.923000">currently using.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2631.333000" data-stop="2634.607000">So I'm going to shrink this down a little bit</span> <span class="audio-time caption" data-speaker="Ben" data-start="2634.667000" data-stop="2637.178000">just so that it doesn't line wrap.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2637.000000">43:57</span> <strong>Different stages of package use</strong></div><p></p><span class="audio-time caption" data-speaker="Ben" data-start="2637.198000" data-stop="2641.697000"><strong class="speaker-name">Ben:</strong> But yeah, so I've got, I think about 140 packages</span> <span class="audio-time caption" data-speaker="Ben" data-start="2642.943000" data-stop="2642.942000">locally cloned.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2642.943000" data-stop="2642.942000">I've got, as you can see in my init,</span> <span class="audio-time caption" data-speaker="Ben" data-start="2642.943000" data-stop="2642.942000">about half of that actually installed.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2642.943000" data-stop="2652.900000">There are various phases. I've got a clone, but I don't</span> <span class="audio-time caption" data-speaker="Ben" data-start="2652.901000" data-stop="2656.200000">have it in my init. Or I have it in my init, but</span> <span class="audio-time caption" data-speaker="Ben" data-start="2656.201000" data-stop="2657.267000">there's another package that offers</span> <span class="audio-time caption" data-speaker="Ben" data-start="2657.268000" data-stop="2660.300000">similar functionality. Or I'm all-in on this particular</span> <span class="audio-time caption" data-speaker="Ben" data-start="2660.301000" data-stop="2662.067000">choice and I'm removing the other ones.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2664.000000" data-stop="2668.174000">It's a gradual kind of progression.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2668.154000" data-stop="2669.796000"><strong class="speaker-name">Sacha:</strong>  Yeah, we're all auditioning</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2670.616000" data-stop="2673.859000">packages to see if they fit in our workflow and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2673.919000" data-stop="2674.540000">all that stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2675.000000" data-stop="2676.902000">I was curious also about your elfeed things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2677.923000" data-stop="2679.945000">You have a few things related to elfeed.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2679.965000" data-stop="2681.346000">Actually, do you want to talk about the thing you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2681.386000" data-stop="2682.127000">just highlighted first?</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="2683.268000" data-stop="2684.249000"><strong class="speaker-name">Ben:</strong>  No, we'll get back to it in a sec.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2684.930000" data-stop="2686.071000">I'm keeping an eye on the clock.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2686.391000" data-stop="2687.652000"><strong class="speaker-name">Sacha:</strong>  But yeah, elfeed.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2687.000000">44:47</span> <strong>Elfeed</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2687.672000" data-stop="2689.134000"><strong class="speaker-name">Sacha:</strong> Yeah, you've got a couple of interesting things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2689.214000" data-stop="2691.796000">in your elfeed setup, including picking a search</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2691.876000" data-stop="2695.039000">from a bookmark or other shortcuts like that.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="2695.222000" data-stop="2697.746000"><strong class="speaker-name">Ben:</strong>  So I have discovered in my</span> <span class="audio-time caption" data-speaker="Ben" data-start="2697.786000" data-stop="2699.629000">conversations with the new maintainers for elfeed</span> <span class="audio-time caption" data-speaker="Ben" data-start="2699.689000" data-stop="2706.239000">that my elfeed habits are very deviant.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2708.703000" data-stop="2714.853000">So let me actually start off by going through...</span> <span class="audio-time caption" data-speaker="Ben" data-start="2723.842000" data-stop="2729.069000">You can see that like the top of my elfeed list is</span> <span class="audio-time caption" data-speaker="Ben" data-start="2729.269000" data-stop="2731.392000">kind of in one format and down at the bottom, the</span> <span class="audio-time caption" data-speaker="Ben" data-start="2731.492000" data-stop="2734.797000">ones that are closer to present day are organized</span> <span class="audio-time caption" data-speaker="Ben" data-start="2734.817000" data-stop="2735.357000">in a different way.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2736.138000" data-stop="2737.060000"><strong class="speaker-name">Sacha:</strong>  You've got tags now.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="2738.061000" data-stop="2740.744000"><strong class="speaker-name">Ben:</strong>  So my feed list is, I mean, it</span> <span class="audio-time caption" data-speaker="Ben" data-start="2740.764000" data-stop="2742.447000">started in Google Reader.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2742.807000" data-stop="2744.289000">It's kind of been forward ported since then.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2746.312000" data-stop="2748.735000">It's long.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2751.584000" data-stop="2752.507000"><strong class="speaker-name">Sacha:</strong>  I love the comments.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="2755.417000" data-stop="2756.381000"><strong class="speaker-name">Ben:</strong>  But one of the consequences of</span> <span class="audio-time caption" data-speaker="Ben" data-start="2756.421000" data-stop="2757.826000">having a long feed list is that I have an</span> <span class="audio-time caption" data-speaker="Ben" data-start="2757.946000" data-stop="2761.037000">enormous elfeed database.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2761.439000" data-stop="2763.121000">And I use it for completely different purposes.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2764.002000" data-stop="2767.186000">So for example, I'm going to show off that little</span> <span class="audio-time caption" data-speaker="Ben" data-start="2769.068000" data-stop="2769.689000">default search.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2777.560000" data-stop="2780.833000">I keep an eye on projects that have releases</span> <span class="audio-time caption" data-speaker="Ben" data-start="2780.834000" data-stop="2783.124000">that aren't packaged by Debian, for example.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2783.224000" data-stop="2786.468000">So I've got this little ATS Mini.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2789.300000" data-stop="2792.925000">basically a small AM FM radio that happens to run</span> <span class="audio-time caption" data-speaker="Ben" data-start="2793.205000" data-stop="2796.409000">on ESP32 and the firmware for this community</span> <span class="audio-time caption" data-speaker="Ben" data-start="2796.649000" data-stop="2799.113000">developed and it's kind of interesting but like</span> <span class="audio-time caption" data-speaker="Ben" data-start="2799.133000" data-stop="2801.015000">that's not packaged by Debian so I pay attention</span> <span class="audio-time caption" data-speaker="Ben" data-start="2801.075000" data-stop="2803.358000">to or I subscribe to the release feed for that</span> <span class="audio-time caption" data-speaker="Ben" data-start="2803.398000" data-stop="2805.020000">particular project.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2806.542000" data-stop="2809.626000">I do keep in keep an eye on the Linux kernel</span> <span class="audio-time caption" data-speaker="Ben" data-start="2809.666000" data-stop="2812.810000">especially these days because</span> <span class="audio-time caption" data-speaker="Ben" data-start="2813.397000" data-stop="2816.483000">The gallop of security vulnerabilities coming out</span> <span class="audio-time caption" data-speaker="Ben" data-start="2816.503000" data-stop="2818.346000">of mythos analyses right now means that I have to</span> <span class="audio-time caption" data-speaker="Ben" data-start="2818.366000" data-stop="2820.711000">pay more attention than usual to fresh updates.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2821.192000" data-stop="2824.197000">So generally I run Debian stable, but I do run</span> <span class="audio-time caption" data-speaker="Ben" data-start="2824.237000" data-stop="2826.041000">kernels from backports and I want to know when</span> <span class="audio-time caption" data-speaker="Ben" data-start="2826.061000" data-stop="2827.744000">those are available.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2827.927000" data-stop="2829.108000">MeshTastic.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2829.129000" data-stop="2830.731000">I was paying more attention to this a couple of</span> <span class="audio-time caption" data-speaker="Ben" data-start="2830.831000" data-stop="2831.431000">weeks ago.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2832.112000" data-stop="2832.993000">I'm not going to reach that right now.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2833.514000" data-stop="2836.778000">But yeah, the local MeshTastic community in</span> <span class="audio-time caption" data-speaker="Ben" data-start="2836.798000" data-stop="2839.501000">Toronto is plagued by a couple of griefers that</span> <span class="audio-time caption" data-speaker="Ben" data-start="2839.742000" data-stop="2840.703000">make it a lot less fun.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2840.783000" data-stop="2842.365000">So I'm paying a bit less attention to that right</span> <span class="audio-time caption" data-speaker="Ben" data-start="2842.405000" data-stop="2842.525000">now.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2843.306000" data-stop="2845.189000">But yeah, so like one of the bookmarks that I</span> <span class="audio-time caption" data-speaker="Ben" data-start="2845.249000" data-stop="2847.291000">have is software currency.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2847.311000" data-stop="2849.414000">Another one is, for example, the YouTube channels</span> <span class="audio-time caption" data-speaker="Ben" data-start="2849.434000" data-stop="2851.116000">that I subscribe to.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2851.096000" data-stop="2853.442000">Thank goodness for Elf YouTube.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2854.424000" data-stop="2857.432000">It is so nice to be able to get the transcripts</span> <span class="audio-time caption" data-speaker="Ben" data-start="2858.054000" data-stop="2859.898000">for things directly in there.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2861.462000" data-stop="2863.006000"><strong class="speaker-name">Sacha:</strong>  There's even a sponsor block</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2863.066000" data-stop="2866.114000">integration so you can skip all the promotions</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2866.134000" data-stop="2866.455000">and stuff.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="2867.026000" data-stop="2870.430000"><strong class="speaker-name">Ben:</strong>  Yeah, I mean, so again, my use of</span> <span class="audio-time caption" data-speaker="Ben" data-start="2870.811000" data-stop="2873.935000">YouTube is also deviant in that I pretty much</span> <span class="audio-time caption" data-speaker="Ben" data-start="2874.015000" data-stop="2876.838000">strictly subscribe to RSS feeds and they're</span> <span class="audio-time caption" data-speaker="Ben" data-start="2876.878000" data-stop="2878.501000">downloaded onto the file server.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2879.442000" data-stop="2881.544000">So when a new recording comes out, it gets</span> <span class="audio-time caption" data-speaker="Ben" data-start="2881.584000" data-stop="2882.005000">dropped there.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2882.105000" data-stop="2882.666000">I'll watch it.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2883.527000" data-stop="2886.651000">And then I've got a little widget that scans</span> <span class="audio-time caption" data-speaker="Ben" data-start="2886.711000" data-stop="2888.693000">through my Kodi database for watched files.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2889.294000" data-stop="2891.477000">Once YouTube files show up in the watch list,</span> <span class="audio-time caption" data-speaker="Ben" data-start="2891.497000" data-stop="2893.860000">they're automatically purged.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2893.840000" data-stop="2896.403000">And it means I just never see an ad.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2897.184000" data-stop="2901.109000">It's not just satisfying.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2901.169000" data-stop="2902.591000">I don't think that I would be able to pay</span> <span class="audio-time caption" data-speaker="Ben" data-start="2902.631000" data-stop="2904.533000">attention if I was being constantly interrupted</span> <span class="audio-time caption" data-speaker="Ben" data-start="2904.573000" data-stop="2905.655000">because of the way that my brain works.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2907.076000" data-stop="2911.121000">But yeah, so being able to quickly search for</span> <span class="audio-time caption" data-speaker="Ben" data-start="2911.141000" data-stop="2916.248000">YouTube is one thing.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2916.000000">48:36</span> <strong>Spoilers
</strong></div><p></p><a href="https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/emacs-chat-25-ben-zanin-00-48-40-433.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/emacs-chat-25-ben-zanin-00-48-40-433.jpg" alt="image from video 00:48:40.433" data-time="00:48:40.433"></a><span class="audio-time caption" data-speaker="Ben" data-start="2916.308000" data-stop="2920.434000"><strong class="speaker-name">Ben:</strong> I do have articles that I've marked as spoilers for media</span> <span class="audio-time caption" data-speaker="Ben" data-start="2920.454000" data-stop="2922.317000">that I haven't watched or read yet.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2923.880000" data-stop="2927.806000">Maybe I go to an extreme degree, but I'll try to</span> <span class="audio-time caption" data-speaker="Ben" data-start="2927.846000" data-stop="2929.729000">avoid previews for new movies, for example.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2930.350000" data-stop="2935.018000">I do want to actually go back to them later on.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2935.690000" data-stop="2938.353000">Marking articles as having spoilers that I want</span> <span class="audio-time caption" data-speaker="Ben" data-start="2938.373000" data-stop="2942.338000">to revisit later on is an easy way of not having</span> <span class="audio-time caption" data-speaker="Ben" data-start="2942.358000" data-stop="2943.199000">to worry about it anymore.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2943.660000" data-stop="2947.064000">For a while, back in the days when I was</span> <span class="audio-time caption" data-speaker="Ben" data-start="2947.364000" data-stop="2952.991000">paying more attention to... Enter the Dragon was</span> <span class="audio-time caption" data-speaker="Ben" data-start="2953.051000" data-stop="2957.597000">the sequel to... What was that TV show?</span> <span class="audio-time caption" data-speaker="Ben" data-start="2959.062000" data-stop="2963.883000">George R.R. Martin... Seven seasons and it went badly off the</span> <span class="audio-time caption" data-speaker="Ben" data-start="2963.924000" data-stop="2964.868000">rails in season six.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2964.888000" data-stop="2965.832000"><strong class="speaker-name">Sacha:</strong>  Game of Thrones.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="2965.913000" data-stop="2966.935000"><strong class="speaker-name">Ben:</strong>  Thank you.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2966.955000" data-stop="2969.118000">So when I was watching that for a while, several</span> <span class="audio-time caption" data-speaker="Ben" data-start="2969.138000" data-stop="2971.441000">of the sites that I was reading would have</span> <span class="audio-time caption" data-speaker="Ben" data-start="2971.762000" data-stop="2973.945000">individual episode updates.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2974.326000" data-stop="2977.930000">I really appreciated having a list of Elfeed keywords</span> <span class="audio-time caption" data-speaker="Ben" data-start="2977.931000" data-stop="2979.834000">that I could automatically apply those tags to.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2980.315000" data-stop="2982.178000">I wouldn't even see the headlines because it</span> <span class="audio-time caption" data-speaker="Ben" data-start="2982.198000" data-stop="2984.181000">was problematic enough.</span> <span class="audio-time caption" data-speaker="Ben" data-start="2984.201000" data-stop="2985.802000">I've become less...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2985.803000" data-stop="2986.785000"><strong class="speaker-name">Sacha:</strong>  Nice.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="2986.805000" data-stop="2988.227000"><strong class="speaker-name">Ben:</strong>  I've been putting less effort into</span> <span class="audio-time caption" data-speaker="Ben" data-start="2988.267000" data-stop="2991.412000">maintaining that now, but the infrastructure is</span> <span class="audio-time caption" data-speaker="Ben" data-start="2991.432000" data-stop="2993.355000">still there, and I can lean on it if I need to.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2993.000000">49:53</span> <strong>Comparing different news sources</strong></div><p></p><span class="audio-time caption" data-speaker="Ben" data-start="2993.605000" data-stop="2996.107000"><strong class="speaker-name">Ben:</strong> One of the things that I don't have set up right now</span> <span class="audio-time caption" data-speaker="Ben" data-start="2996.108000" data-stop="3003.775000">is a quick search for the municipal topics that I cover.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3004.836000" data-stop="3009.401000">I tend to subscribe to a lot of news because I</span> <span class="audio-time caption" data-speaker="Ben" data-start="3009.461000" data-stop="3014.526000">found that, for example, it's interesting to see</span> <span class="audio-time caption" data-speaker="Ben" data-start="3014.666000" data-stop="3016.588000">how the Toronto Star covers stuff differently</span> <span class="audio-time caption" data-speaker="Ben" data-start="3016.688000" data-stop="3017.910000">from other local newspapers.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3018.650000" data-stop="3023.275000">It's useful to be able to quickly pull up</span> <span class="audio-time caption" data-speaker="Ben" data-start="3024.335000" data-stop="3028.361000">the five or six publications that cover</span> <span class="audio-time caption" data-speaker="Ben" data-start="3028.761000" data-stop="3031.686000">news in the same way and then look through the</span> <span class="audio-time caption" data-speaker="Ben" data-start="3031.706000" data-stop="3033.689000">annotations for them or add the annotations</span> <span class="audio-time caption" data-speaker="Ben" data-start="3033.909000" data-stop="3036.072000">myself. I can see that this particular story</span> <span class="audio-time caption" data-speaker="Ben" data-start="3036.112000" data-stop="3038.355000">was covered by this journalist in this</span> <span class="audio-time caption" data-speaker="Ben" data-start="3038.395000" data-stop="3041.019000">publication in this way, and then it lets me</span> <span class="audio-time caption" data-speaker="Ben" data-start="3041.059000" data-stop="3043.643000">cross-reference so that I can pay attention to</span> <span class="audio-time caption" data-speaker="Ben" data-start="3045.648000" data-stop="3049.298000">topics that are under-covered or publications</span> <span class="audio-time caption" data-speaker="Ben" data-start="3049.398000" data-stop="3052.526000">that habitually leave out particular aspects of</span> <span class="audio-time caption" data-speaker="Ben" data-start="3052.587000" data-stop="3053.048000">news stories.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3054.732000" data-stop="3058.763000">It lets me pay more attention to</span> <span class="audio-time caption" data-speaker="Ben" data-start="3060.380000" data-stop="3062.603000">the trends of publications as well as to the</span> <span class="audio-time caption" data-speaker="Ben" data-start="3062.643000" data-stop="3063.444000">stories that they're covering.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3064.585000" data-stop="3067.168000">The consequence of that is that my Elfeed</span> <span class="audio-time caption" data-speaker="Ben" data-start="3067.208000" data-stop="3069.210000">database is 4.5 gigs.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3069.691000" data-stop="3072.074000">It's common for me... I don't know if</span> <span class="audio-time caption" data-speaker="Ben" data-start="3072.094000" data-stop="3072.795000">that actually shows.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3073.335000" data-stop="3075.878000">It's common for me to have like 65,000 articles</span> <span class="audio-time caption" data-speaker="Ben" data-start="3077.140000" data-stop="3079.222000">in like the six month horizon for the default Elfeed</span> <span class="audio-time caption" data-speaker="Ben" data-start="3079.242000" data-stop="3079.643000">searches.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3080.584000" data-stop="3083.227000">That means that searches and redraws are</span> <span class="audio-time caption" data-speaker="Ben" data-start="3083.287000" data-stop="3086.691000">expensive, even on a relatively performant machine.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3086.671000" data-stop="3089.496000">You've probably seen some of the workarounds</span> <span class="audio-time caption" data-speaker="Ben" data-start="3089.516000" data-stop="3090.037000">that I've got.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3090.257000" data-stop="3094.705000">This little bookmark selector is one of those</span> <span class="audio-time caption" data-speaker="Ben" data-start="3094.745000" data-stop="3095.205000">workarounds.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3095.686000" data-stop="3098.711000">Elfeed's interactive search: super, super useful.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3099.292000" data-stop="3101.456000">But if you're trying to do it like this...</span> <span class="audio-time caption" data-speaker="Ben" data-start="3101.877000" data-stop="3105.162000">Actually, it's not so bad.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3109.109000" data-stop="3109.570000"><strong class="speaker-name">Sacha:</strong>  I love this.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3111.950000" data-stop="3114.793000">When you see someone using Elfeed for 65,000</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3114.873000" data-stop="3119.037000">items, you get a sense of what it can be used</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3119.077000" data-stop="3121.319000">for when you're really stressing it.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="3122.040000" data-stop="3125.322000"><strong class="speaker-name">Ben:</strong>  And the organization of the bookmarks that I have</span> <span class="audio-time caption" data-speaker="Ben" data-start="3125.323000" data-stop="3129.325000">means that I do have one river of news</span> <span class="audio-time caption" data-speaker="Ben" data-start="3129.326000" data-stop="3130.968000">of all of the things that I want to pay attention to.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3131.388000" data-stop="3135.751000">But it's seven or eight pretty divergent topics</span> <span class="audio-time caption" data-speaker="Ben" data-start="3135.752000" data-stop="3137.314000">with not a lot of overlap.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3137.374000" data-stop="3139.476000">It's neat to be able to</span> <span class="audio-time caption" data-speaker="Ben" data-start="3139.456000" data-stop="3142.321000">think of Elfeed as the thing where news</span> <span class="audio-time caption" data-speaker="Ben" data-start="3142.461000" data-stop="3144.625000">information comes in. The individual</span> <span class="audio-time caption" data-speaker="Ben" data-start="3144.665000" data-stop="3147.009000">bookmarks are the topics that are grouped</span> <span class="audio-time caption" data-speaker="Ben" data-start="3147.049000" data-stop="3149.694000">together that I actually care about and want to</span> <span class="audio-time caption" data-speaker="Ben" data-start="3149.734000" data-stop="3151.196000">read about in concert with each other.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3156.085000" data-stop="3161.434000">If I specifically narrow it down to just Emacs</span> <span class="audio-time caption" data-speaker="Ben" data-start="3161.454000" data-stop="3164.940000">stuff, one of the things that I can easily do is</span> <span class="audio-time caption" data-speaker="Ben" data-start="3167.620000" data-stop="3170.046000">add a bookmark for that search. If I name it...</span> <span class="audio-time caption" data-speaker="Ben" data-start="3174.377000" data-stop="3180.051000">Now that I've got that bookmark saved...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3183.420000" data-stop="3185.224000"><strong class="speaker-name">Sacha:</strong>  And then it's like, bookmark annotation.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="3186.537000" data-stop="3192.705000"><strong class="speaker-name">Ben:</strong>  Right. It ends up in my dot file as a git commit.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3193.000000">53:13</span> <strong>Bookmark naming conventions</strong></div><p></p><span class="audio-time caption" data-speaker="Ben" data-start="3193.206000" data-stop="3195.168000"><strong class="speaker-name">Ben:</strong> Now that that bookmark exists, simply because of</span> <span class="audio-time caption" data-speaker="Ben" data-start="3195.188000" data-stop="3198.953000">the naming (elfeed-search-...), now it shows up in</span> <span class="audio-time caption" data-speaker="Ben" data-start="3198.993000" data-stop="3199.833000">completion.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3199.834000" data-stop="3201.636000"><strong class="speaker-name">Sacha:</strong>  Precisely this sort of stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3201.637000" data-stop="3204.680000">I am under-utilizing bookmarks, I think.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3204.000000">53:24</span> <strong>Naming conventions simplify building new workflows</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3204.881000" data-stop="3207.383000"><strong class="speaker-name">Sacha:</strong> I love this idea of using bookmarks</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3207.384000" data-stop="3208.524000">with a naming convention</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3208.525000" data-stop="3209.839000">and then writing Emacs Lisp</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3209.840000" data-stop="3211.849000">to take advantage of that naming convention</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3211.850000" data-stop="3215.194000">to make that easy to jump to, easy to use in other things.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="3215.748000" data-stop="3216.931000"><strong class="speaker-name">Ben:</strong>  Yeah, it means I don't really have...</span> <span class="audio-time caption" data-speaker="Ben" data-start="3217.012000" data-stop="3219.438000">When I notice that there's a thing I don't have,</span> <span class="audio-time caption" data-speaker="Ben" data-start="3219.439000" data-stop="3221.525000">it diminishes the activation energy for</span> <span class="audio-time caption" data-speaker="Ben" data-start="3221.625000" data-stop="3223.049000">building a new workflow.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3223.069000" data-stop="3224.152000">It means that I don't have to put a lot of</span> <span class="audio-time caption" data-speaker="Ben" data-start="3224.172000" data-stop="3224.654000">thought into it.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3224.754000" data-stop="3226.038000">I can quickly do it.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3226.118000" data-stop="3227.442000">If it turns out to not be useful, I can</span> <span class="audio-time caption" data-speaker="Ben" data-start="3227.482000" data-stop="3228.846000">quickly get rid of it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3230.125000" data-stop="3230.646000"><strong class="speaker-name">Sacha:</strong>  Very cool.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3230.000000">53:50</span> <strong>elfeed-curate for annotations
</strong></div><p></p><a href="https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/emacs-chat-25-ben-zanin-00-54-52-533.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/emacs-chat-25-ben-zanin-00-54-52-533.jpg" alt="image from video 00:54:52.533" data-time="00:54:52.533"></a><span class="audio-time caption" data-speaker="Sacha" data-start="3230.986000" data-stop="3232.609000"><strong class="speaker-name">Sacha:</strong> I had one more thing that I wanted to ask you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3232.629000" data-stop="3234.310000">about elfeed that I want to squeeze in,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3234.311000" data-stop="3236.234000">in the five minutes that I have before the kiddo comes out</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3236.254000" data-stop="3237.315000">for lunch break.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3237.395000" data-stop="3240.560000">This elfeed-curate that you're using, this is the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3240.580000" data-stop="3242.082000">first time I've come across it in the config.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3242.843000" data-stop="3245.667000">Are you sharing your notes or your selections</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3245.788000" data-stop="3247.871000">with other people, or just for yourself?</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="3247.891000" data-stop="3250.254000"><strong class="speaker-name">Ben:</strong>  No. It's just for myself.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3250.294000" data-stop="3251.935000">What I'm trying to replicate is,</span> <span class="audio-time caption" data-speaker="Ben" data-start="3251.936000" data-stop="3253.478000">back in Google Reader days,</span> <span class="audio-time caption" data-speaker="Ben" data-start="3253.479000" data-stop="3256.021000">I really appreciated how when you added an annotation</span> <span class="audio-time caption" data-speaker="Ben" data-start="3256.022000" data-stop="3257.905000">to an article that you were reading,</span> <span class="audio-time caption" data-speaker="Ben" data-start="3257.885000" data-stop="3261.172000">by default, that annotation would be viewable by</span> <span class="audio-time caption" data-speaker="Ben" data-start="3261.593000" data-stop="3262.655000">other people in your social graph.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3262.715000" data-stop="3263.637000">That was super interesting.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3266.664000" data-stop="3270.692000">Sometimes you could also add personal-only annotations.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3271.093000" data-stop="3276.685000">Actually, I don't think that's the keyword that it uses.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3276.705000" data-stop="3277.767000">I think it’s just <code>+ann</code>.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3279.248000" data-stop="3280.710000"><strong class="speaker-name">Sacha:</strong>  Also, because you have an Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3280.770000" data-stop="3282.553000">keyword on it, so I don't know whether you have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3282.653000" data-stop="3285.257000">any annotated Emacs ones.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="3285.277000" data-stop="3285.377000"><strong class="speaker-name">Ben:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3285.397000" data-stop="3288.061000">Well, I mean, generally, if I've added an</span> <span class="audio-time caption" data-speaker="Ben" data-start="3288.101000" data-stop="3289.743000">annotation, it will be.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3289.763000" data-stop="3293.108000">So, for example, here.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3295.591000" data-stop="3297.013000">Right? Super useful.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3297.835000" data-stop="3298.976000">Well, super useful for me, anyhow.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3299.537000" data-stop="3303.703000">If I find that there's an annotation that is more...</span> <span class="audio-time caption" data-speaker="Ben" data-start="3311.024000" data-stop="3314.589000">This is inflammatory.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3314.609000" data-stop="3315.971000">It doesn't need to go out on the web.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3316.171000" data-stop="3317.693000"><strong class="speaker-name">Sacha:</strong>  Sorry, did you need me to kill the stream?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3317.713000" data-stop="3319.435000">I have a 10-second window.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="3319.455000" data-stop="3320.196000"><strong class="speaker-name">Ben:</strong>  No, it's all good.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3321.899000" data-stop="3324.362000">I'm not worried about sharing this, but it's not</span> <span class="audio-time caption" data-speaker="Ben" data-start="3324.402000" data-stop="3325.123000">something I've posted.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3325.223000" data-stop="3326.845000">What the nice thing is, is that if it is</span> <span class="audio-time caption" data-speaker="Ben" data-start="3326.885000" data-stop="3328.487000">something that I want to share, it's really,</span> <span class="audio-time caption" data-speaker="Ben" data-start="3328.507000" data-stop="3330.450000">really easy to just drop this into Mastodon mode.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3330.751000" data-stop="3333.577000"><strong class="speaker-name">Sacha:</strong>  Very cool.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="3335.882000" data-stop="3337.165000"><strong class="speaker-name">Ben:</strong>  That's one of the ways that I use it.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3337.345000" data-stop="3339.489000">Because the annotations are just Org Mode</span> <span class="audio-time caption" data-speaker="Ben" data-start="3339.590000" data-stop="3341.915000">files, you can add links to other things and it</span> <span class="audio-time caption" data-speaker="Ben" data-start="3341.955000" data-stop="3343.298000">becomes just as useful as anything else.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3346.000000">55:46</span> <strong>mytoots archives Mastodon toots</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3346.164000" data-stop="3348.488000"><strong class="speaker-name">Sacha:</strong>  You're saying this can flow</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3348.529000" data-stop="3351.595000">into Mastodon and from there, once you toot it...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3351.946000" data-stop="3354.571000">I think you're using mytoots</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3354.591000" data-stop="3356.093000">that you mentioned in your config for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3356.194000" data-stop="3356.875000">archiving it?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3357.716000" data-stop="3358.778000">Or searching, yeah, okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3359.460000" data-stop="3360.642000">Oh, except it's currently not working.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="3361.243000" data-stop="3362.325000"><strong class="speaker-name">Ben:</strong>  Yeah, I don't have it loaded right now.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3362.525000" data-stop="3367.815000">So mytoots, it just loads the backup of</span> <span class="audio-time caption" data-speaker="Ben" data-start="3369.097000" data-stop="3372.523000">your export archive.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3373.124000" data-stop="3374.747000">So it loads the...</span> <span class="audio-time caption" data-speaker="Ben" data-start="3376.600000" data-stop="3377.722000">What's the most recent one?</span> <span class="audio-time caption" data-speaker="Ben" data-start="3377.742000" data-stop="3380.889000">So yeah, it was your outbox JSON file, which is</span> <span class="audio-time caption" data-speaker="Ben" data-start="3381.570000" data-stop="3382.492000">the most recent one here.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3382.612000" data-stop="3384.276000">I've got an Org Mode reminder to download it</span> <span class="audio-time caption" data-speaker="Ben" data-start="3384.536000" data-stop="3385.258000">roughly quarterly.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3386.059000" data-stop="3388.545000">My outbox is about 100 megs right now.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3389.186000" data-stop="3394.597000">Compared to 4.5 gigs for elfeed,</span> <span class="audio-time caption" data-speaker="Ben" data-start="3395.118000" data-stop="3395.719000">it's not so big.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3397.964000" data-stop="3399.446000">That's not going to redraw properly.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3399.706000" data-stop="3401.529000">I was just going to show it. My resident</span> <span class="audio-time caption" data-speaker="Ben" data-start="3401.669000" data-stop="3404.232000">Emacs memory size right now is about like five or</span> <span class="audio-time caption" data-speaker="Ben" data-start="3404.273000" data-stop="3404.753000">six gigs.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3404.793000" data-stop="3406.215000">It's a little bit embarrassing.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3406.235000" data-stop="3408.478000">By comparison, 100 megs of JSON in RAM is not so</span> <span class="audio-time caption" data-speaker="Ben" data-start="3408.518000" data-stop="3410.361000">bad, but having an instant search for</span> <span class="audio-time caption" data-speaker="Ben" data-start="3410.421000" data-stop="3413.124000">everything that you posted and being able to</span> <span class="audio-time caption" data-speaker="Ben" data-start="3413.205000" data-stop="3414.907000">bounce back from your local archive to the</span> <span class="audio-time caption" data-speaker="Ben" data-start="3414.967000" data-stop="3416.869000">conversation thread that's live and see anything</span> <span class="audio-time caption" data-speaker="Ben" data-start="3416.890000" data-stop="3417.651000">new that comes in...</span> <span class="audio-time caption" data-speaker="Ben" data-start="3418.271000" data-stop="3420.434000">Again, it lets me exercise that outboard brain</span> <span class="audio-time caption" data-speaker="Ben" data-start="3421.175000" data-stop="3421.676000">kind of idea.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3422.858000" data-stop="3424.680000">So yeah, mytoots is super useful.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3425.065000" data-stop="3425.726000"><strong class="speaker-name">Sacha:</strong>  I like it a lot.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3426.000000">57:06</span> <strong>Mentoring offer</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3426.247000" data-stop="3428.029000"><strong class="speaker-name">Sacha:</strong> The last thing that I want to ask</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3428.249000" data-stop="3429.771000">before the kiddo (because I have two</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3429.791000" data-stop="3431.514000">minutes) is that you have a mentoring offer</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3431.594000" data-stop="3433.716000">pinned in your Mastodon, too.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3434.578000" data-stop="3436.620000">Have people taken you up on it, especially if</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3436.640000" data-stop="3438.222000">they've taken you up on Emacs?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3439.084000" data-stop="3441.627000">Is that ongoing or forgotten about or whatever?</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="3442.288000" data-stop="3442.909000"><strong class="speaker-name">Ben:</strong>  Not forgotten about.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3443.009000" data-stop="3444.050000">Very much real.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3444.531000" data-stop="3445.372000">Still open.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3445.392000" data-stop="3447.995000">I haven't refreshed that offer recently, but it's</span> <span class="audio-time caption" data-speaker="Ben" data-start="3448.015000" data-stop="3448.736000">still pinned for a reason.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3449.457000" data-stop="3451.941000">I think maybe a dozen or so folks have</span> <span class="audio-time caption" data-speaker="Ben" data-start="3452.221000" data-stop="3453.823000">asked for that.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3454.816000" data-stop="3457.223000">9 or 10 success stories, I think.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3457.283000" data-stop="3460.252000">Nobody's asked for Emacs tutorialship yet.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3461.515000" data-stop="3462.578000">That's fine.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3462.598000" data-stop="3463.621000">Again, I love Emacs.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3463.641000" data-stop="3463.982000">I use it.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3464.042000" data-stop="3465.105000">I don't often recommend it.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3466.429000" data-stop="3468.274000">But if anybody was curious about that, I would be</span> <span class="audio-time caption" data-speaker="Ben" data-start="3468.315000" data-stop="3469.197000">very open to the idea.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3469.531000" data-stop="3471.757000"><strong class="speaker-name">Sacha:</strong>  All right, so if people want to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3471.857000" data-stop="3475.787000">also develop a very interesting elfeed setup,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3475.847000" data-stop="3476.790000">they know who to talk to.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="3478.374000" data-stop="3479.697000"><strong class="speaker-name">Ben:</strong>  Please, I would love that conversation.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3480.198000" data-stop="3481.221000"><strong class="speaker-name">Sacha:</strong>  Thank you so much.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3481.241000" data-stop="3481.983000">Yes, go ahead.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3482.000000">58:02</span> <strong>A local instance of public-inbox can let you use Gnus to read mailing lists quickly</strong></div><p></p><span class="audio-time caption" data-speaker="Ben" data-start="3482.003000" data-stop="3483.306000"><strong class="speaker-name">Ben:</strong>  Oh yeah, there's just one last</span> <span class="audio-time caption" data-speaker="Ben" data-start="3483.326000" data-stop="3485.011000">thing I want to mention, and I realize we're</span> <span class="audio-time caption" data-speaker="Ben" data-start="3485.051000" data-stop="3485.953000">right up against time.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3485.933000" data-stop="3490.619000">I use Gnus. I use mu4e for email,</span> <span class="audio-time caption" data-speaker="Ben" data-start="3490.620000" data-stop="3492.703000">but I use Gnus for reading mailing lists.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3493.544000" data-stop="3497.249000">I just wanted to strongly recommend to</span> <span class="audio-time caption" data-speaker="Ben" data-start="3497.429000" data-stop="3499.793000">anybody who is thinking about it... This is amazing.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3500.354000" data-stop="3501.475000">You gotta do this.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3501.555000" data-stop="3503.939000">public-inbox lets you keep a complete local</span> <span class="audio-time caption" data-speaker="Ben" data-start="3503.999000" data-stop="3505.361000">archive of the entire mailing list.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3505.901000" data-stop="3506.743000">Searches are instant.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3507.784000" data-stop="3509.046000">Tracking threads is instant.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3510.067000" data-stop="3510.488000">Check it out.</span> <span class="audio-time caption" data-speaker="Ben" data-start="3510.869000" data-stop="3511.890000">It's fantastic.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3512.174000" data-stop="3513.114000"><strong class="speaker-name">Sacha:</strong>  That's great because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3513.115000" data-stop="3515.719000">Emacs-devel has a gazillion threads. How do you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3515.760000" data-stop="3517.362000">even keep track of all this stuff? But if you've</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3517.422000" data-stop="3520.747000">got Gnus and if you've got this set up,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3520.787000" data-stop="3522.750000">then you're no longer dependent on the good</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3522.770000" data-stop="3526.516000">graces of Gmane being around as an NNTP to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3526.536000" data-stop="3530.461000">mailing list gateway.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3530.462000" data-stop="3533.006000">@JonKishore11 wants to know if you have a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3533.066000" data-stop="3536.011000">YouTube channel. I'm guessing you don't yet.</span> <p></p><span class="audio-time caption" data-speaker="Ben" data-start="3536.492000" data-stop="3538.755000"><strong class="speaker-name">Ben:</strong>  I don't really like my face very much.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3538.837000" data-stop="3542.603000"><strong class="speaker-name">Sacha:</strong>  Ping Ben on Mastodon and ask about this mentoring</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3542.643000" data-stop="3544.285000">thing and then share your notes so we can all</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3544.305000" data-stop="3544.786000">learn from it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3544.946000" data-stop="3546.369000">Thank you so much for today.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3546.969000" data-stop="3551.156000">I look forward to chatting with you more through toots.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3551.516000" data-stop="3555.282000">What is the verb, you know, in the fediverse?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3556.905000" data-stop="3557.265000">All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3557.626000" data-stop="3558.367000">Thank you so much.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3558.828000" data-stop="3566.920000"><strong class="speaker-name">Sacha:</strong> </span></div>
<p></p>


<a name="end-emacs-chat-25-ben-zanin-transcript"></a></details>
</div>
</div>
<div id="outline-container-emacs-chats-emacs-chat-25-ben-zanin-gnomon-mastodon-social-chat" class="outline-3">
<h3 id="emacs-chats-emacs-chat-25-ben-zanin-gnomon-mastodon-social-chat"><a href="https://sachachua.com/blog/feed/index.xml#emacs-chats-emacs-chat-25-ben-zanin-gnomon-mastodon-social-chat">Chat</a></h3>
<div class="outline-text-3" id="text-emacs-chats-emacs-chat-25-ben-zanin-gnomon-mastodon-social-chat">
<ul class="org-ul">
<li><span class="nick">sachactube:</span> ​​only slightly panicking behind the scenes 🙂 Nudged Ben by Mastodon in case we got our wires crossed</li>
<li><span class="nick">sachactube:</span> ​​yay, he's here, just getting sound sorted</li>
<li><span class="nick">symbiopoyesis:</span> Good morning</li>
<li><span class="nick">x_goose_x:</span> ​​hey gnomonnnnnn</li>
<li><span class="nick">CharlieBaker707:</span> ​yay! love the split keyboard. recently bought one myself. i was getting shoulder and neck pain from so many hours keeping by hands close together, but the split let's my shoulder's relax.</li>
<li><span class="nick">ShaeErisson:</span> ​How do you make a capture template to stay on-agenda and record decisions? Any tips?</li>
<li><span class="nick">PuercoPop:</span> ​​Regarding terminal emacs, did they need to adapt any keybindings to avoid clashses with the terminal keybindings?</li>
<li><span class="nick">AyanRaza-n1x:</span> ​​is that the creator of emacs?</li>
<li><span class="nick">Ray-On-Emacs:</span> ​Yes! Google steals C-S-k, which I use to kill tabs to the right on Vivaldi!</li>
<li><span class="nick">CharlieBaker707:</span> ​elfeed is like a distraction alleviation machine. I agree with Ben, I don't think I could consume any of this information outside of Emacs. Ads and even varying formats distract me too much.</li>
<li><span class="nick">JonKishore11:</span> ​​do he have YT</li>
<li><span class="nick">sachactube:</span> ​​Thanks for hanging out, everyone! =)</li>
<li><span class="nick">gnomon027:</span> Thanks so much for running this whole series, @sachactube !!</li>
</ul>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/index.org">View Org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F06%2Fjune-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>Emacs Chat 24: Omar Antolin Camarena</title>
		<link>https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Fri, 29 May 2026 22:02:50 GMT</pubDate>
    <category>emacs</category>
<category>emacs-chat-podcast</category>
<category>emacs-chat</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/</guid><enclosure url="https://archive.org/download/emacs-chat-24-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena.mp3"
               length="65441061"
               type="audio/mpeg" />
		<description><![CDATA[<div class="update" id="orgbe753d6">
<p>
<span class="timestamp-wrapper"><time class="timestamp" datetime="2026-05-31">[2026-05-31 Sun]</time></span>: Updated transcript and added a link to <a href="https://sachachua.com/blog/2026/05/karthik-s-notes-on-emacs-chat-24-omar-antolin-camarena/">Karthik's notes</a>.
</p>

</div>

<p>
I chatted with Omar Antolín Camarena about Emacs, keyboard macros, temporary buffers, Embark, and other workflow tips.
<video preload="none" controls="1" src="https://archive.org/download/emacs-chat-24-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena" poster="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/2026-05-17_18-03-54.png" type="nil"><track kind="subtitles" label="Captions" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena.vtt" srclang="en" default=""><span>Video not supported. Thumbnail:<br><img src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/2026-05-17_18-03-54.png" alt="Thumbnail"></span></video>
</p>

<p>
<a href="https://archive.org/details/emacs-chat-24-omar-antolin-camarena/">View in the Internet Archive</a>, <a href="https://sachachua.com/blog/feed/index.xml#ID-emacs-chat-24-omar-antolin-camarena-transcript">read the transcript online</a>, <a href="https://youtube.com/live/M7-dJb2GTN4">watch or comment on YouTube</a>, download <a href="https://archive.org/download/emacs-chat-24-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena.mp3">the audio</a> or <a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena.vtt">the transcript</a>, or <a href="mailto:sacha@sachachua.com">e-mail me</a>.
</p>

<p>
Related links:
</p>

<ul class="org-ul">
<li><a href="https://www.matem.unam.mx/~omar/">Omar Antolín Camarena</a>: a researcher at Instituto de Matemáticas, UNAM in Mexico City</li>
<li><a href="https://www.matem.unam.mx/~omar/apropos-emacs.html">M-x apropos Emacs</a></li>
<li><a href="https://github.com/oantolin/emacs-config">oantolin/emacs-config: My personal Emacs configuration · GitHub</a></li>
<li><a href="https://github.com/oantolin/placeholder">oantolin/placeholder: Emacs package to treat any buffer as a template with placeholders to fill-in · GitHub</a></li>
<li><a href="https://github.com/oantolin">oantolin (Omar Antolín Camarena) · GitHub</a></li>
<li><a href="https://mathstodon.xyz/@oantolin">Omar Antolín (@oantolin@mathstodon.xyz) - Mathstodon</a></li>
<li><a href="https://www.reddit.com/user/oantolin/">u/oantolin on Reddit</a></li>
<li><a href="https://toobnix.org/w/752ix2RNx5BijosuYtSGCv">#Emacs #Embark with Omar Antolin, Ramin Honary and Kent Pitman #lisp and more #interview #lispyGopherClimate - toobnix</a></li>

<li><a href="https://sachachua.com/blog/2026/05/karthik-s-notes-on-emacs-chat-24-omar-antolin-camarena/">Karthik's notes on Emacs Chat 24: Omar Antolin Camarena</a></li>
<li></li>
</ul>
<p>
You can add the iCal for upcoming Emacs Chat episodes to your calendar. <a href="https://sachachua.com/topic/emacs-chat/upcoming-emacs-chats.ics">https://sachachua.com/topic/emacs-chat/upcoming-emacs-chats.ics</a>
</p>

<p>
Find more Emacs Chats or join the fun: <a href="https://sachachua.com/emacs-chat">https://sachachua.com/emacs-chat</a>
</p>
<div id="outline-container-emacs-chats-emacs-chat-24-omar-antolin-camarena-chapters" class="outline-3">
<h3 id="emacs-chats-emacs-chat-24-omar-antolin-camarena-chapters"><a href="https://sachachua.com/blog/feed/index.xml#emacs-chats-emacs-chat-24-omar-antolin-camarena-chapters">Chapters</a></h3>
<div class="outline-text-3" id="text-emacs-chats-emacs-chat-24-omar-antolin-camarena-chapters">
<p>
</p><ul class="org-ul">
<li><span class="audio-time" data-start="0.031" data-stop="2.117">0:00</span> Ignore this part</li>
<li><span class="audio-time" data-start="18.170" data-stop="21.917">0:18</span> Opening</li>
<li><span class="audio-time" data-start="46.000" data-stop="49.309">0:46</span> How did you get into Emacs in the first place?</li>
<li><span class="audio-time" data-start="361.253" data-stop="363.958">6:01</span> Repeating edits</li>
<li><span class="audio-time" data-start="448.726" data-stop="453.415">7:28</span> dot-mode: repeating commands</li>
<li><span class="audio-time" data-start="564.410" data-stop="567.534">9:24</span> block-undo: undo things as a chunk</li>

<li><span class="audio-time" data-start="629.139" data-stop="631.102">10:29</span> Starting and stopping keyboard macros</li>

<li><span class="audio-time" data-start="735.848" data-stop="741.857">12:15</span> Keycast and Embark</li>

<li><span class="audio-time" data-start="813.575" data-stop="814.716">13:33</span> apply-macro-to-lines-of-paragraph</li>
<li><span class="audio-time" data-start="994.070" data-stop="997.474">16:34</span> embark-on-last-message</li>
<li><span class="audio-time" data-start="1086.124" data-stop="1086.565">18:06</span> tmp-buffer with a major mode</li>

<li><span class="audio-time" data-start="1166.532" data-stop="1171.279">19:26</span> placeholder</li>

<li><span class="audio-time" data-start="1238.605" data-stop="1240.307">20:38</span> enable-recursive-minibuffers</li>
<li><span class="audio-time" data-start="1377.928" data-stop="1380.210">22:57</span> Overriding embark-select</li>

<li><span class="audio-time" data-start="1412.967" data-stop="1415.823">23:32</span> quick-calc</li>

<li><span class="audio-time" data-start="1590.600" data-stop="1593.080">26:30</span> Multiple cursors</li>
<li><span class="audio-time" data-start="1660.582" data-stop="1662.105">27:40</span> Block-undo and regular undo</li>
<li><span class="audio-time" data-start="1733.600" data-stop="1736.085">28:53</span> Cycling through Embark targets</li>
<li><span class="audio-time" data-start="1899.840" data-stop="1901.855">31:39</span> Imenu for navigation</li>
<li><span class="audio-time" data-start="1971.993" data-stop="1974.556">32:51</span> Collaboration</li>
<li><span class="audio-time" data-start="2281.080" data-stop="2282.638">38:01</span> Technology adoption and Emacs packages</li>
<li><span class="audio-time" data-start="2406.100" data-stop="2409.479">40:06</span> Personal packages and naming conventions</li>
<li><span class="audio-time" data-start="2546.500" data-stop="2548.574">42:26</span> find-file-at-point and directory names</li>

<li><span class="audio-time" data-start="2629.200" data-stop="2631.734">43:49</span> The value of using Emacs’s APIs</li>
<li><span class="audio-time" data-start="2696.840" data-stop="2698.175">44:56</span> org-ql and usual files</li>

<li><span class="audio-time" data-start="2826.260" data-stop="2827.596">47:06</span> Shortcuts for org-ql search syntax</li>
<li><span class="audio-time" data-start="2863.400" data-stop="2865.651">47:43</span> Org TODO states: TODO, WAIT, DONE, NOPE</li>

<li><span class="audio-time" data-start="2906.460" data-stop="2908.199">48:26</span> The inserter macro</li>

<li><span class="audio-time" data-start="3005.760" data-stop="3007.302">50:05</span> luggage: generative art experiments</li>

<li><span class="audio-time" data-start="3229.383" data-stop="3230.805">53:49</span> Teaching and Emacs</li>
<li><span class="audio-time" data-start="3293.187" data-stop="3293.888">54:53</span> The print10 generator</li>

<li><span class="audio-time" data-start="3383.600" data-stop="3386.598">56:23</span> arXiv</li>

<li><span class="audio-time" data-start="3509.103" data-stop="3510.727">58:29</span> Toggle keymap</li>

<li><span class="audio-time" data-start="3654.970" data-stop="3658.619">1:00:54</span> isearch-delete-wrong</li>

<li><span class="audio-time" data-start="3794.105" data-stop="3797.269">1:03:14</span> isearch - continue from the beginning of the match</li>

<li><span class="audio-time" data-start="3912.460" data-stop="3916.084">1:05:12</span> Using keymaps to remember sets of commands</li>
<li><span class="audio-time" data-start="3964.981" data-stop="3966.383">1:06:04</span> Other things from the config</li>
</ul>

<p></p>
</div>
</div>
<div id="outline-container-emacs-chats-emacs-chat-24-omar-antolin-camarena-transcript" class="outline-3">
<h3 id="emacs-chats-emacs-chat-24-omar-antolin-camarena-transcript"><a href="https://sachachua.com/blog/feed/index.xml#emacs-chats-emacs-chat-24-omar-antolin-camarena-transcript">Transcript</a></h3>
<div class="outline-text-3" id="text-emacs-chats-emacs-chat-24-omar-antolin-camarena-transcript">
<details class="code-details"><a name="ID-emacs-chat-24-omar-antolin-camarena-transcript"></a><summary>Expand this to see the transcript and screenshots</summary>
<p>
</p><div class="full-transcript"><p></p><div class="transcript-heading"><span class="audio-time" data-start="0.000000">0:00</span> <strong>Ignore this part</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="0.031000" data-stop="2.117000"><strong class="speaker-name">Sacha:</strong>  Cut off at, you know, roughly an</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2.217000" data-stop="3.702000">hour and seven minutes from now.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3.762000" data-stop="5.347000">She's going to come out and have lunch.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6.751000" data-stop="7.072000">Okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7.593000" data-stop="7.914000">All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7.934000" data-stop="9.619000">Going live.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="13.160000" data-stop="17.008000">Alright folks, we are here a little bit early.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="18.000000">0:18</span> <strong>Opening</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="18.170000" data-stop="21.917000"><strong class="speaker-name">Sacha:</strong>  This is Emacs Chat 24 with Omar Antolin Camarena,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="22.378000" data-stop="24.963000">whom we know from Embark and Orderless and a lot</span> <span class="audio-time caption" data-speaker="Sacha" data-start="25.003000" data-stop="27.388000">of other little packages that I personally use on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="27.468000" data-stop="28.190000">a daily basis.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="28.210000" data-stop="29.693000">I'm very much looking forward to this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="29.773000" data-stop="31.656000">conversation.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="31.676000" data-stop="33.480000"><strong class="speaker-name">Omar:</strong>  Yeah, so am I. Very excited.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="34.270000" data-stop="36.676000"><strong class="speaker-name">Sacha:</strong>  Of course, before we dive into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="36.736000" data-stop="40.205000">all these lovely details, tell us a little bit</span> <span class="audio-time caption" data-speaker="Sacha" data-start="40.225000" data-stop="41.288000">more about your context.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="41.509000" data-stop="43.454000">You're a researcher at the Mathematics</span> <span class="audio-time caption" data-speaker="Sacha" data-start="43.554000" data-stop="43.995000">Institute.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="44.055000" data-stop="45.940000">I can see why Emacs would be a great fit for that.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="46.000000">0:46</span> <strong>How did you get into Emacs in the first place?</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="46.000000" data-stop="49.309000"><strong class="speaker-name">Sacha:</strong> How did you get into Emacs in the first place?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="49.795000" data-stop="52.740000"><strong class="speaker-name">Omar:</strong>  I think it's just by virtue</span> <span class="audio-time caption" data-speaker="Omar" data-start="52.780000" data-stop="53.361000">of being old.</span> <span class="audio-time caption" data-speaker="Omar" data-start="53.441000" data-stop="55.945000">When I started out looking for a text editor,</span> <span class="audio-time caption" data-speaker="Omar" data-start="55.985000" data-stop="57.687000">there were not that many great options.</span> <span class="audio-time caption" data-speaker="Omar" data-start="58.328000" data-stop="63.136000">When I was a teenager, 30 years ago, I</span> <span class="audio-time caption" data-speaker="Omar" data-start="63.276000" data-stop="65.459000">decided to install Linux because I heard about it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="65.559000" data-stop="68.063000">That was the era where you went to a newsstand</span> <span class="audio-time caption" data-speaker="Omar" data-start="68.123000" data-stop="70.026000">and you bought a Linux magazine that came with a</span> <span class="audio-time caption" data-speaker="Omar" data-start="70.066000" data-stop="73.452000">CD, and I installed Linux from that.</span> <span class="audio-time caption" data-speaker="Omar" data-start="73.472000" data-stop="77.558000">I think it was Slackware, maybe.</span> <span class="audio-time caption" data-speaker="Omar" data-start="77.538000" data-stop="82.511000">I was already a hobby computer programmer.</span> <span class="audio-time caption" data-speaker="Omar" data-start="82.751000" data-stop="86.000000">I've been learning programming languages since I</span> <span class="audio-time caption" data-speaker="Omar" data-start="86.060000" data-stop="88.707000">was a child, when my father gave me my first</span> <span class="audio-time caption" data-speaker="Omar" data-start="88.747000" data-stop="90.872000">computer.</span> <span class="audio-time caption" data-speaker="Omar" data-start="91.392000" data-stop="93.816000">I think that was the main reason I switched to</span> <span class="audio-time caption" data-speaker="Omar" data-start="93.856000" data-stop="94.116000">Linux.</span> <span class="audio-time caption" data-speaker="Omar" data-start="94.337000" data-stop="96.701000">I noticed that people wrote many more</span> <span class="audio-time caption" data-speaker="Omar" data-start="97.121000" data-stop="99.665000">interpreters and compilers for Linux than for</span> <span class="audio-time caption" data-speaker="Omar" data-start="99.706000" data-stop="100.026000">Windows.</span> <span class="audio-time caption" data-speaker="Omar" data-start="100.587000" data-stop="102.430000">That's why I wanted to use Linux.</span> <span class="audio-time caption" data-speaker="Omar" data-start="102.650000" data-stop="104.734000">I needed a text editor that handled all sorts of</span> <span class="audio-time caption" data-speaker="Omar" data-start="104.814000" data-stop="106.096000">weird programming languages.</span> <span class="audio-time caption" data-speaker="Omar" data-start="107.278000" data-stop="110.022000">I was looking for a general purpose one, not an</span> <span class="audio-time caption" data-speaker="Omar" data-start="110.123000" data-stop="110.443000">IDE.</span> <span class="audio-time caption" data-speaker="Omar" data-start="110.904000" data-stop="114.109000">I used IDEs, younger ones, like Turbo Pascal.</span> <span class="audio-time caption" data-speaker="Omar" data-start="114.089000" data-stop="116.011000">Probably that was the main one.</span> <span class="audio-time caption" data-speaker="Omar" data-start="116.111000" data-stop="116.752000">I loved that.</span> <span class="audio-time caption" data-speaker="Omar" data-start="116.772000" data-stop="117.293000">It was great.</span> <span class="audio-time caption" data-speaker="Omar" data-start="117.973000" data-stop="120.737000">I went through the Linux distro, tried a</span> <span class="audio-time caption" data-speaker="Omar" data-start="120.797000" data-stop="124.779000">bunch of editors.</span> <span class="audio-time caption" data-speaker="Omar" data-start="124.780000" data-stop="128.225000">I settled on Emacs and Emacs-like editors.</span> <span class="audio-time caption" data-speaker="Omar" data-start="128.324000" data-stop="131.389000">I tried Jove, which stands for Jonathan's Own</span> <span class="audio-time caption" data-speaker="Omar" data-start="131.429000" data-stop="132.350000">Version of Emacs.</span> <span class="audio-time caption" data-speaker="Omar" data-start="134.292000" data-stop="136.975000">And there was also an editor called...</span> <span class="audio-time caption" data-speaker="Omar" data-start="137.258000" data-stop="138.140000">Oh, I forget.</span> <span class="audio-time caption" data-speaker="Omar" data-start="138.160000" data-stop="140.787000">There was one that had its own extension language</span> <span class="audio-time caption" data-speaker="Omar" data-start="140.847000" data-stop="141.750000">called S-Lang.</span> <span class="audio-time caption" data-speaker="Omar" data-start="142.492000" data-stop="143.655000">I used that for a while.</span> <span class="audio-time caption" data-speaker="Omar" data-start="144.276000" data-stop="148.327000">A little later, I remember using Slava Pestov's</span> <span class="audio-time caption" data-speaker="Omar" data-start="148.427000" data-stop="149.129000">jEdit.</span> <span class="audio-time caption" data-speaker="Omar" data-start="149.149000" data-stop="151.335000">I really like that, too, although</span> <span class="audio-time caption" data-speaker="Omar" data-start="151.720000" data-stop="154.005000">Java is not that fun to write extensions in.</span> <span class="audio-time caption" data-speaker="Omar" data-start="156.771000" data-stop="158.976000">I was looking for an editor and I wanted it to be</span> <span class="audio-time caption" data-speaker="Omar" data-start="159.016000" data-stop="161.200000">extensible, which is funny because I hardly ever</span> <span class="audio-time caption" data-speaker="Omar" data-start="161.240000" data-stop="161.621000">extend it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="162.263000" data-stop="164.868000">I just wanted there to be the option.</span> <span class="audio-time caption" data-speaker="Omar" data-start="165.129000" data-stop="166.532000">I used Emacs for a long time.</span> <span class="audio-time caption" data-speaker="Omar" data-start="167.153000" data-stop="169.037000">But when I got serious at</span> <span class="audio-time caption" data-speaker="Omar" data-start="169.422000" data-stop="171.400000">being efficient at text-editing,</span> <span class="audio-time caption" data-speaker="Omar" data-start="171.401000" data-stop="173.433000">I actually switched to Vim.</span> <span class="audio-time caption" data-speaker="Omar" data-start="173.434000" data-stop="178.918000">I switched back to Emacs many years later because</span> <span class="audio-time caption" data-speaker="Omar" data-start="178.998000" data-stop="181.523000">of one very specific problem in Vim.</span> <span class="audio-time caption" data-speaker="Omar" data-start="181.543000" data-stop="184.688000">The syntax highlighting for LaTeX files is pretty</span> <span class="audio-time caption" data-speaker="Omar" data-start="184.728000" data-stop="185.490000">slow.</span> <span class="audio-time caption" data-speaker="Omar" data-start="185.510000" data-stop="187.253000">On a normal computer, you won't notice that</span> <span class="audio-time caption" data-speaker="Omar" data-start="187.293000" data-stop="187.693000">it's slow.</span> <span class="audio-time caption" data-speaker="Omar" data-start="188.034000" data-stop="191.901000">But I had a little netbook that was like 10 years</span> <span class="audio-time caption" data-speaker="Omar" data-start="191.981000" data-stop="194.485000">old when I had it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="194.465000" data-stop="197.850000">I took it to class to take notes in math</span> <span class="audio-time caption" data-speaker="Omar" data-start="197.870000" data-stop="198.832000">courses.</span> <span class="audio-time caption" data-speaker="Omar" data-start="198.852000" data-stop="204.941000">I was writing in LaTeX Live with a bunch of</span> <span class="audio-time caption" data-speaker="Omar" data-start="205.021000" data-stop="206.143000">macros to insert things.</span> <span class="audio-time caption" data-speaker="Omar" data-start="206.703000" data-stop="210.449000">The syntax highlighting meant that Vim lagged</span> <span class="audio-time caption" data-speaker="Omar" data-start="210.629000" data-stop="212.432000">behind my typing.</span> <span class="audio-time caption" data-speaker="Omar" data-start="212.452000" data-stop="214.856000">I'm not that fast of a typist, so it was</span> <span class="audio-time caption" data-speaker="Omar" data-start="215.036000" data-stop="215.557000">problematic.</span> <span class="audio-time caption" data-speaker="Omar" data-start="216.158000" data-stop="218.381000">The Vim manual has an entire section on what</span> <span class="audio-time caption" data-speaker="Omar" data-start="218.421000" data-stop="220.424000">to do if text highlighting is slow.</span> <span class="audio-time caption" data-speaker="Omar" data-start="220.664000" data-stop="223.088000">You can look for it with</span> <span class="audio-time caption" data-speaker="Omar" data-start="223.372000" data-stop="225.660000">Vim :help tex-slow</span> <span class="audio-time caption" data-speaker="Omar" data-start="225.800000" data-stop="230.597000">That pops up the right section of the manual.</span> <span class="audio-time caption" data-speaker="Omar" data-start="231.573000" data-stop="233.776000">I tried everything that it said there and they</span> <span class="audio-time caption" data-speaker="Omar" data-start="233.816000" data-stop="236.159000">all made it slightly faster, but none of them</span> <span class="audio-time caption" data-speaker="Omar" data-start="236.199000" data-stop="237.921000">really solved the lag, other than turning off</span> <span class="audio-time caption" data-speaker="Omar" data-start="237.961000" data-stop="238.622000">syntax highlighting.</span> <span class="audio-time caption" data-speaker="Omar" data-start="239.123000" data-stop="240.925000">I turned off syntax highlighting and took</span> <span class="audio-time caption" data-speaker="Omar" data-start="241.005000" data-stop="243.388000">notes for like half a semester, and then I decided</span> <span class="audio-time caption" data-speaker="Omar" data-start="243.429000" data-stop="246.713000">to try Emacs on that old netbook. Its syntax</span> <span class="audio-time caption" data-speaker="Omar" data-start="246.753000" data-stop="248.115000">highlighting was perfectly snappy.</span> <span class="audio-time caption" data-speaker="Omar" data-start="248.515000" data-stop="250.117000">This is just a weird thing in Vim that</span> <span class="audio-time caption" data-speaker="Omar" data-start="250.278000" data-stop="253.321000">specifically LaTeX syntax highlighting is slow.</span> <span class="audio-time caption" data-speaker="Omar" data-start="253.402000" data-stop="257.547000">I never noticed it being slow in any other...</span> <span class="audio-time caption" data-speaker="Omar" data-start="258.100000" data-stop="260.142000">I don't know what Vim calls them, what Emacs</span> <span class="audio-time caption" data-speaker="Omar" data-start="260.163000" data-stop="261.065000">would call a major mode.</span> <span class="audio-time caption" data-speaker="Omar" data-start="261.987000" data-stop="264.090000">It was only ever slow in LaTeX, but that was</span> <span class="audio-time caption" data-speaker="Omar" data-start="264.150000" data-stop="265.753000">enough to get me to try Emacs.</span> <span class="audio-time caption" data-speaker="Omar" data-start="266.093000" data-stop="269.239000">But by then in Vim, I had learned that you want</span> <span class="audio-time caption" data-speaker="Omar" data-start="269.940000" data-stop="272.785000">very granular motion commands to move by word or</span> <span class="audio-time caption" data-speaker="Omar" data-start="272.845000" data-stop="275.509000">by sentence, and you want to be able to be placed</span> <span class="audio-time caption" data-speaker="Omar" data-start="275.569000" data-stop="277.292000">at the end of the word or at the beginning of the</span> <span class="audio-time caption" data-speaker="Omar" data-start="277.332000" data-stop="278.995000">word.</span> <span class="audio-time caption" data-speaker="Omar" data-start="278.975000" data-stop="283.419000">All of these higher-level editing constructs that</span> <span class="audio-time caption" data-speaker="Omar" data-start="283.459000" data-stop="285.141000">Vim really pushes you toward.</span> <span class="audio-time caption" data-speaker="Omar" data-start="285.581000" data-stop="287.543000">In Emacs, I hadn't done any of that before.</span> <span class="audio-time caption" data-speaker="Omar" data-start="287.583000" data-stop="288.984000">I moved around with the arrow keys.</span> <span class="audio-time caption" data-speaker="Omar" data-start="290.225000" data-stop="292.447000">But when I came back to Emacs after having been</span> <span class="audio-time caption" data-speaker="Omar" data-start="292.487000" data-stop="294.069000">in Vim, then I wanted to get serious about</span> <span class="audio-time caption" data-speaker="Omar" data-start="294.109000" data-stop="295.810000">editing efficiently in Emacs.</span> <span class="audio-time caption" data-speaker="Omar" data-start="296.491000" data-stop="299.213000">I think I actually like it better than Vim</span> <span class="audio-time caption" data-speaker="Omar" data-start="299.233000" data-stop="299.754000">now.</span> <span class="audio-time caption" data-speaker="Omar" data-start="299.774000" data-stop="304.098000">But yeah, that's why I switched back to Emacs.</span> <span class="audio-time caption" data-speaker="Omar" data-start="304.218000" data-stop="307.260000">It's just this quirk that LaTeX syntax</span> <span class="audio-time caption" data-speaker="Omar" data-start="307.441000" data-stop="308.982000">highlighting is slow in Vim.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="308.962000" data-stop="310.244000"><strong class="speaker-name">Sacha:</strong>  Well, their loss.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="310.685000" data-stop="313.350000">So you tried a whole bunch of other editors.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="313.690000" data-stop="316.435000">You got into Vim because you wanted to be more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="316.495000" data-stop="317.016000">efficient.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="318.699000" data-stop="322.286000">Getting deeply into Vim was great, but you ran</span> <span class="audio-time caption" data-speaker="Sacha" data-start="322.346000" data-stop="323.027000">into that bug.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="323.247000" data-stop="325.351000">So you switched to Emacs because it was more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="325.411000" data-stop="328.236000">efficient, more performant.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="328.216000" data-stop="331.901000">All that experience with Vim has made you a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="331.941000" data-stop="333.924000">better Emacs user because now you're like, okay,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="333.944000" data-stop="336.188000">you appreciate all the navigation and movement.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="336.528000" data-stop="338.010000">And you were telling me over email...</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="338.070000" data-stop="340.394000"><strong class="speaker-name">Omar:</strong>  Things I missed from Vim.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="340.414000" data-stop="340.774000"><strong class="speaker-name">Sacha:</strong>  Yeah,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="340.794000" data-stop="343.979000">You were telling me over email how the kind of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="344.019000" data-stop="347.304000">the keyboard macros that you got used to in Vim,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="348.245000" data-stop="350.428000">you've translated some of that over to Emacs and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="350.508000" data-stop="351.390000">how you use them.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="351.410000" data-stop="353.633000">We definitely want to get into that.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="353.798000" data-stop="355.321000"><strong class="speaker-name">Omar:</strong>  Keyboard macro-like things.</span> <span class="audio-time caption" data-speaker="Omar" data-start="355.421000" data-stop="358.227000">In Emacs, for a while, I used multiple-cursors.</span> <span class="audio-time caption" data-speaker="Omar" data-start="359.068000" data-stop="360.752000">I liked it a lot.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="361.000000">6:01</span> <strong>Repeating edits</strong></div><p></p><span class="audio-time caption" data-speaker="Omar" data-start="361.253000" data-stop="363.958000"><strong class="speaker-name">Omar:</strong> One thing I really missed from Vim is the dot</span> <span class="audio-time caption" data-speaker="Omar" data-start="363.978000" data-stop="366.723000">command that repeats the last edit.</span> <span class="audio-time caption" data-speaker="Omar" data-start="367.405000" data-stop="369.609000">But in Vim, edits are composite things.</span> <span class="audio-time caption" data-speaker="Omar" data-start="369.709000" data-stop="373.697000">You have a command to change</span> <span class="audio-time caption" data-speaker="Omar" data-start="373.677000" data-stop="375.201000">a sentence, for example.</span> <span class="audio-time caption" data-speaker="Omar" data-start="375.743000" data-stop="377.949000">That will delete the current sentence,</span> <span class="audio-time caption" data-speaker="Omar" data-start="377.969000" data-stop="380.256000">put you into insert mode, let you type a new</span> <span class="audio-time caption" data-speaker="Omar" data-start="380.296000" data-stop="382.703000">sentence, and when you press escape, that</span> <span class="audio-time caption" data-speaker="Omar" data-start="382.763000" data-stop="383.465000">concludes the edit.</span> <span class="audio-time caption" data-speaker="Omar" data-start="383.485000" data-stop="385.731000">The whole edit is the operation of deleting</span> <span class="audio-time caption" data-speaker="Omar" data-start="385.772000" data-stop="387.557000">the current sentence and replacing it with the</span> <span class="audio-time caption" data-speaker="Omar" data-start="387.617000" data-stop="389.121000">specific thing you typed.</span> <span class="audio-time caption" data-speaker="Omar" data-start="389.101000" data-stop="392.106000">That is a thing you can repeat.</span> <span class="audio-time caption" data-speaker="Omar" data-start="392.387000" data-stop="399.018000">The repeatable edit commands in Vim are much</span> <span class="audio-time caption" data-speaker="Omar" data-start="399.459000" data-stop="403.746000">coarser and more conceptually appropriate units</span> <span class="audio-time caption" data-speaker="Omar" data-start="403.806000" data-stop="404.407000">than in Emacs.</span> <span class="audio-time caption" data-speaker="Omar" data-start="404.427000" data-stop="406.591000">The repeat command repeats the last Emacs</span> <span class="audio-time caption" data-speaker="Omar" data-start="406.611000" data-stop="408.915000">command, but everything runs a command in Emacs.</span> <span class="audio-time caption" data-speaker="Omar" data-start="408.895000" data-stop="410.778000">You can repeat inserting the last character.</span> <span class="audio-time caption" data-speaker="Omar" data-start="410.838000" data-stop="411.720000">That's not very useful.</span> <span class="audio-time caption" data-speaker="Omar" data-start="411.780000" data-stop="415.486000">You want to repeat at least the whole consecutive</span> <span class="audio-time caption" data-speaker="Omar" data-start="415.586000" data-stop="417.389000">stretch of characters you inserted.</span> <span class="audio-time caption" data-speaker="Omar" data-start="417.850000" data-stop="419.753000">Undo in Emacs does do that.</span> <span class="audio-time caption" data-speaker="Omar" data-start="420.254000" data-stop="421.476000">Undo coalesces.</span> <span class="audio-time caption" data-speaker="Omar" data-start="421.756000" data-stop="424.461000">If you type a bunch of characters and you undo,</span> <span class="audio-time caption" data-speaker="Omar" data-start="425.102000" data-stop="426.665000">it doesn't undo them one by one.</span> <span class="audio-time caption" data-speaker="Omar" data-start="426.685000" data-stop="427.867000">It undoes them.</span> <span class="audio-time caption" data-speaker="Omar" data-start="428.127000" data-stop="430.932000">It clumps them depending on pauses between your</span> <span class="audio-time caption" data-speaker="Omar" data-start="430.972000" data-stop="431.713000">typing.</span> <span class="audio-time caption" data-speaker="Omar" data-start="431.693000" data-stop="432.675000">That's fine.</span> <span class="audio-time caption" data-speaker="Omar" data-start="432.715000" data-stop="434.599000">I want that sort of coarseness.</span> <span class="audio-time caption" data-speaker="Omar" data-start="434.819000" data-stop="436.703000">I don't want to undo every single step at a time.</span> <span class="audio-time caption" data-speaker="Omar" data-start="436.863000" data-stop="438.586000">Similarly, when you repeat things, you don't</span> <span class="audio-time caption" data-speaker="Omar" data-start="438.606000" data-stop="440.530000">want to repeat every single step.</span> <span class="audio-time caption" data-speaker="Omar" data-start="440.971000" data-stop="444.337000">I think Vim has like a pretty good unit of</span> <span class="audio-time caption" data-speaker="Omar" data-start="445.139000" data-stop="446.963000">things you can repeat.</span> <span class="audio-time caption" data-speaker="Omar" data-start="446.983000" data-stop="448.566000">I was missing that in Emacs.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="448.000000">7:28</span> <strong>dot-mode: repeating commands</strong></div><p></p><span class="audio-time caption" data-speaker="Omar" data-start="448.726000" data-stop="453.415000"><strong class="speaker-name">Omar:</strong> There's a package called dot-mode</span> <span class="audio-time caption" data-speaker="Omar" data-start="453.597000" data-stop="455.780000">which I used to use and I like a lot.</span> <span class="audio-time caption" data-speaker="Omar" data-start="456.280000" data-stop="460.445000">I'm not exactly sure why I stopped using it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="462.467000" data-stop="465.771000">So this gives you a more Vim-like experience for</span> <span class="audio-time caption" data-speaker="Omar" data-start="465.991000" data-stop="470.096000">repeating commands in Emacs and what it does is</span> <span class="audio-time caption" data-speaker="Omar" data-start="470.136000" data-stop="475.382000">that it watches you as you type and it constantly</span> <span class="audio-time caption" data-speaker="Omar" data-start="475.462000" data-stop="478.947000">makes a keyboard macro out of the last</span> <span class="audio-time caption" data-speaker="Omar" data-start="479.027000" data-stop="482.811000">consecutive stretch of buffer modifying commands.</span> <span class="audio-time caption" data-speaker="Omar" data-start="483.449000" data-stop="486.573000">So, for example, in Vim, if you want to change a</span> <span class="audio-time caption" data-speaker="Omar" data-start="486.633000" data-stop="488.415000">word, there is a change word command, and you</span> <span class="audio-time caption" data-speaker="Omar" data-start="488.435000" data-stop="491.099000">type <code>c w</code>, and then you change the word, and then</span> <span class="audio-time caption" data-speaker="Omar" data-start="491.139000" data-stop="492.060000">that thing gets repeated.</span> <span class="audio-time caption" data-speaker="Omar" data-start="492.461000" data-stop="494.483000">In Emacs, to change a word, it's not a single</span> <span class="audio-time caption" data-speaker="Omar" data-start="494.563000" data-stop="494.924000">unit, right?</span> <span class="audio-time caption" data-speaker="Omar" data-start="494.944000" data-stop="497.387000">You delete the word, and then you type in</span> <span class="audio-time caption" data-speaker="Omar" data-start="497.427000" data-stop="500.811000">something new, and each character you type is</span> <span class="audio-time caption" data-speaker="Omar" data-start="501.773000" data-stop="506.138000">running insert-char. dot-mode will coalesce</span> <span class="audio-time caption" data-speaker="Omar" data-start="506.259000" data-stop="508.361000">all of that into a single keyboard macro that you</span> <span class="audio-time caption" data-speaker="Omar" data-start="508.381000" data-stop="509.743000">can repeat, right?</span> <span class="audio-time caption" data-speaker="Omar" data-start="509.723000" data-stop="513.493000">If you do some motion command that doesn't modify</span> <span class="audio-time caption" data-speaker="Omar" data-start="513.813000" data-stop="516.139000">the buffer, and then you delete a word and type a</span> <span class="audio-time caption" data-speaker="Omar" data-start="516.179000" data-stop="518.986000">new word, everything from the deletion to the end</span> <span class="audio-time caption" data-speaker="Omar" data-start="519.006000" data-stop="521.373000">of the typing would be what dot mode repeats.</span> <span class="audio-time caption" data-speaker="Omar" data-start="521.653000" data-stop="523.999000">The experience is actually very similar to</span> <span class="audio-time caption" data-speaker="Omar" data-start="524.120000" data-stop="526.686000">using dot in Vim.</span> <span class="audio-time caption" data-speaker="Omar" data-start="526.666000" data-stop="528.209000">In my opinion, a little bit better,</span> <span class="audio-time caption" data-speaker="Omar" data-start="528.269000" data-stop="530.594000">because in Vim, I often had this problem.</span> <span class="audio-time caption" data-speaker="Omar" data-start="530.754000" data-stop="533.359000">It gets you into this competitive video game</span> <span class="audio-time caption" data-speaker="Omar" data-start="533.399000" data-stop="534.502000">mentality.</span> <span class="audio-time caption" data-speaker="Omar" data-start="534.602000" data-stop="536.726000">How do I do the edit in a single repeatable</span> <span class="audio-time caption" data-speaker="Omar" data-start="536.766000" data-stop="537.087000">command?</span> <span class="audio-time caption" data-speaker="Omar" data-start="537.107000" data-stop="539.271000">I want to be able to use dot to do this again.</span> <span class="audio-time caption" data-speaker="Omar" data-start="539.672000" data-stop="541.536000">So that you have to think ahead.</span> <span class="audio-time caption" data-speaker="Omar" data-start="541.896000" data-stop="543.680000">It's kind of distracting.</span> <span class="audio-time caption" data-speaker="Omar" data-start="543.700000" data-stop="546.105000">Of course, if a sensible person would not get</span> <span class="audio-time caption" data-speaker="Omar" data-start="546.405000" data-stop="548.269000">caught up in that, it would just...</span> <span class="audio-time caption" data-speaker="Omar" data-start="548.249000" data-stop="549.851000">do the edit whichever way they can,</span> <span class="audio-time caption" data-speaker="Omar" data-start="550.211000" data-stop="552.575000">but I wanted to maximize the repeatability.</span> <span class="audio-time caption" data-speaker="Omar" data-start="554.157000" data-stop="556.179000">dot-mode lets you be a little bit more relaxed.</span> <span class="audio-time caption" data-speaker="Omar" data-start="556.439000" data-stop="560.124000">It still catches all of the thing that should</span> <span class="audio-time caption" data-speaker="Omar" data-start="560.164000" data-stop="561.426000">have been a single edit.</span> <span class="audio-time caption" data-speaker="Omar" data-start="561.446000" data-stop="562.928000">So yeah, I like it a lot.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="563.508000" data-stop="564.390000"><strong class="speaker-name">Sacha:</strong>  So that's dot-mode.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="564.000000">9:24</span> <strong>block-undo: undo things as a chunk
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-01-06-05-633.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-01-06-05-633.jpg" alt="image from video 01:06:05.633" data-time="01:06:05.633"></a><span class="audio-time caption" data-speaker="Sacha" data-start="564.410000" data-stop="567.534000"><strong class="speaker-name">Sacha:</strong> You also mentioned block-undo.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="568.375000" data-stop="571.799000"><strong class="speaker-name">Omar:</strong>  That is a package of mine I can</span> <span class="audio-time caption" data-speaker="Omar" data-start="571.939000" data-stop="572.620000">show you.</span> <span class="audio-time caption" data-speaker="Omar" data-start="573.629000" data-stop="576.293000">That's the entire package.</span> <span class="audio-time caption" data-speaker="Omar" data-start="576.734000" data-stop="580.259000">It just uses this <code>with-undo-amalgamate</code> command.</span> <span class="audio-time caption" data-speaker="Omar" data-start="580.279000" data-stop="584.246000">Whatever you run inside <code>with-undo-amalgamate</code></span> <span class="audio-time caption" data-speaker="Omar" data-start="584.566000" data-stop="586.549000">undoes in a single step.</span> <span class="audio-time caption" data-speaker="Omar" data-start="586.589000" data-stop="589.714000">I use it for executions of keyboard macros.</span> <span class="audio-time caption" data-speaker="Omar" data-start="589.694000" data-stop="594.860000">A keyboard macro, if you run it all over the</span> <span class="audio-time caption" data-speaker="Omar" data-start="594.901000" data-stop="597.604000">place, if you apply it to every line in a region,</span> <span class="audio-time caption" data-speaker="Omar" data-start="598.024000" data-stop="601.349000">or you just repeat it a hundred times, that is a</span> <span class="audio-time caption" data-speaker="Omar" data-start="601.449000" data-stop="602.851000">lot of tiny individual edits.</span> <span class="audio-time caption" data-speaker="Omar" data-start="603.351000" data-stop="605.494000">If you undo that, you do not want to undo them</span> <span class="audio-time caption" data-speaker="Omar" data-start="606.115000" data-stop="606.635000">one by one.</span> <span class="audio-time caption" data-speaker="Omar" data-start="607.216000" data-stop="611.221000">This just makes them all undo in a single step,</span> <span class="audio-time caption" data-speaker="Omar" data-start="611.541000" data-stop="613.023000">which is what Vim does, actually.</span> <span class="audio-time caption" data-speaker="Omar" data-start="613.063000" data-stop="614.565000">This is one of the things that I said, no,</span> <span class="audio-time caption" data-speaker="Omar" data-start="614.605000" data-stop="615.426000">Vim has this right.</span> <span class="audio-time caption" data-speaker="Omar" data-start="615.486000" data-stop="616.748000">I need this in Emacs.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="617.605000" data-stop="619.067000"><strong class="speaker-name">Sacha:</strong>  Okay, that makes sense.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="619.928000" data-stop="623.232000">So dot-mode is more like implicit keyboard</span> <span class="audio-time caption" data-speaker="Sacha" data-start="623.272000" data-stop="625.034000">macro boundary definitions.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="626.015000" data-stop="628.138000">This one is like the undo-ness of it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="629.000000">10:29</span> <strong>Starting and stopping keyboard macros
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-11-29-533.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-11-29-533.jpg" alt="image from video 00:11:29.533" data-time="00:11:29.533"></a><span class="audio-time caption" data-speaker="Sacha" data-start="629.139000" data-stop="631.102000"><strong class="speaker-name">Sacha:</strong> I saw in your config, you also have more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="631.162000" data-stop="633.385000">convenient shortcuts for starting and stopping</span> <span class="audio-time caption" data-speaker="Sacha" data-start="633.425000" data-stop="634.766000">keyboard macros.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="634.866000" data-stop="640.473000">It's like a modifier and the keystroke instead</span> <span class="audio-time caption" data-speaker="Sacha" data-start="640.513000" data-stop="642.956000">of two or like function keys, which are further</span> <span class="audio-time caption" data-speaker="Sacha" data-start="643.017000" data-stop="643.297000">away.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="643.477000" data-stop="645.840000">I'm guessing you use keyboard macros a lot.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="646.900000" data-stop="647.541000"><strong class="speaker-name">Omar:</strong>  Yeah, I do.</span> <span class="audio-time caption" data-speaker="Omar" data-start="650.524000" data-stop="654.849000">When I got rid of dot-mode, it was an experiment</span> <span class="audio-time caption" data-speaker="Omar" data-start="654.889000" data-stop="657.993000">to see if I could just remember to record</span> <span class="audio-time caption" data-speaker="Omar" data-start="658.053000" data-stop="659.494000">keyboard macros.</span> <span class="audio-time caption" data-speaker="Omar" data-start="659.514000" data-stop="662.718000">The thing that the dot-mode or the dot command in</span> <span class="audio-time caption" data-speaker="Omar" data-start="662.758000" data-stop="665.201000">Vim solves is that you don't always have the</span> <span class="audio-time caption" data-speaker="Omar" data-start="665.261000" data-stop="666.983000">foresight to record a keyboard macro.</span> <span class="audio-time caption" data-speaker="Omar" data-start="667.003000" data-stop="668.645000">Sometimes you realize, oh, I need to do the same</span> <span class="audio-time caption" data-speaker="Omar" data-start="668.745000" data-stop="670.427000">at some other places,</span> <span class="audio-time caption" data-speaker="Omar" data-start="670.407000" data-stop="673.415000">but you didn't record it ahead of time.</span> <span class="audio-time caption" data-speaker="Omar" data-start="673.455000" data-stop="676.163000">Then you wind up doing it once, realizing you</span> <span class="audio-time caption" data-speaker="Omar" data-start="676.203000" data-stop="678.008000">need to do it a bunch of times, then recording</span> <span class="audio-time caption" data-speaker="Omar" data-start="678.048000" data-stop="679.271000">the macro, then doing it again.</span> <span class="audio-time caption" data-speaker="Omar" data-start="679.732000" data-stop="682.841000">I wanted to see if I could remember to record</span> <span class="audio-time caption" data-speaker="Omar" data-start="682.881000" data-stop="683.563000">macros.</span> <span class="audio-time caption" data-speaker="Omar" data-start="683.583000" data-stop="686.290000">I decided that I needed to make it as</span> <span class="audio-time caption" data-speaker="Omar" data-start="686.270000" data-stop="688.232000">as frictionless as possible.</span> <span class="audio-time caption" data-speaker="Omar" data-start="689.514000" data-stop="692.418000">This is the command that is bound by default to</span> <span class="audio-time caption" data-speaker="Omar" data-start="693.479000" data-stop="697.764000">F3.</span> <span class="audio-time caption" data-speaker="Omar" data-start="697.924000" data-stop="702.750000">I like it better than the thing that's bound to</span> <span class="audio-time caption" data-speaker="Omar" data-start="703.171000" data-stop="706.675000">C-x ( because</span> <span class="audio-time caption" data-speaker="Omar" data-start="706.840000" data-stop="710.245000">this <code>kmacro-start-macro-or-insert-counter</code> does</span> <span class="audio-time caption" data-speaker="Omar" data-start="710.285000" data-stop="710.686000">both things.</span> <span class="audio-time caption" data-speaker="Omar" data-start="710.806000" data-stop="712.789000">It could start a recording, or if you are</span> <span class="audio-time caption" data-speaker="Omar" data-start="712.849000" data-stop="716.014000">recording, it will insert the keyboard macro</span> <span class="audio-time caption" data-speaker="Omar" data-start="716.054000" data-stop="719.159000">counter.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="721.802000" data-stop="723.225000"><strong class="speaker-name">Sacha:</strong>  For folks who are like, what?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="723.385000" data-stop="723.926000">Macros?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="723.946000" data-stop="724.446000">Counters?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="724.527000" data-stop="726.590000">Yes, you can have your keyboard macro</span> <span class="audio-time caption" data-speaker="Sacha" data-start="726.690000" data-stop="729.815000">automatically add one to a number, for example.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="729.875000" data-stop="730.836000">There you go.</span> <p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-12-10-867.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-12-10-867.jpg" alt="image from video 00:12:10.867" data-time="00:12:10.867"></a><span class="audio-time caption" data-speaker="Sacha" data-start="730.856000" data-stop="731.697000"><strong class="speaker-name">Sacha:</strong> Hello, hello, hello.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="735.000000">12:15</span> <strong>Keycast and Embark
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-16-44-033.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-16-44-033.jpg" alt="image from video 00:16:44.033" data-time="00:16:44.033"></a><span class="audio-time caption" data-speaker="Omar" data-start="735.848000" data-stop="741.857000"><strong class="speaker-name">Omar:</strong>  I also activated keycast.</span> <span class="audio-time caption" data-speaker="Omar" data-start="743.259000" data-stop="744.361000">I hope people can follow along.</span> <span class="audio-time caption" data-speaker="Omar" data-start="744.461000" data-stop="747.786000">I have some small modifications to make</span> <span class="audio-time caption" data-speaker="Omar" data-start="748.347000" data-stop="749.869000">embark transparent to keycast.</span> <span class="audio-time caption" data-speaker="Omar" data-start="749.889000" data-stop="753.414000">If I use embark, you see embark-act, but then</span> <span class="audio-time caption" data-speaker="Omar" data-start="753.555000" data-stop="755.798000">you also see what command I call.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="756.689000" data-stop="758.873000"><strong class="speaker-name">Sacha:</strong>  I just stole that from your config.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="759.214000" data-stop="761.077000">I wasn't entirely sure if I was using it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="761.117000" data-stop="762.760000">correctly, but it definitely looked like</span> <span class="audio-time caption" data-speaker="Sacha" data-start="762.780000" data-stop="764.183000">something interesting and useful.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="764.724000" data-stop="767.449000"><strong class="speaker-name">Omar:</strong>  If you don't use that change, then</span> <span class="audio-time caption" data-speaker="Omar" data-start="768.692000" data-stop="770.355000">keycast doesn't see through embark and you</span> <span class="audio-time caption" data-speaker="Omar" data-start="770.415000" data-stop="772.639000">don't get which actions you called.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="772.923000" data-stop="774.745000"><strong class="speaker-name">Sacha:</strong>  Yeah, the opacity of some of these</span> <span class="audio-time caption" data-speaker="Sacha" data-start="774.966000" data-stop="782.154000">kind of key binding niceties... they hide a lot of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="782.195000" data-stop="784.598000">stuff from the standard Emacs ways of doing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="784.658000" data-stop="784.958000">things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="785.419000" data-stop="789.083000">That's one of the criticisms of transient and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="789.243000" data-stop="790.265000">other tools.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="790.405000" data-stop="792.648000">I'm glad that you're finding these ways to make</span> <span class="audio-time caption" data-speaker="Sacha" data-start="792.728000" data-stop="795.471000">these packages work well with other packages.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="796.514000" data-stop="800.101000"><strong class="speaker-name">Omar:</strong>  I think this was by request.</span> <span class="audio-time caption" data-speaker="Omar" data-start="800.161000" data-stop="801.022000">Somebody requested it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="801.063000" data-stop="802.145000">Maybe it was Prot.</span> <span class="audio-time caption" data-speaker="Omar" data-start="802.146000" data-stop="804.048000">It's definitely a good idea.</span> <span class="audio-time caption" data-speaker="Omar" data-start="810.139000" data-stop="813.105000">The code for that is on the Embark Wiki as well.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="813.000000">13:33</span> <strong>apply-macro-to-lines-of-paragraph</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="813.575000" data-stop="814.716000"><strong class="speaker-name">Sacha:</strong>  The other thing that I wanted to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="814.757000" data-stop="817.921000">point out that you make a convenient keyboard</span> <span class="audio-time caption" data-speaker="Sacha" data-start="818.021000" data-stop="821.305000">shortcut for in terms of keyboard macros is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="821.385000" data-stop="824.029000"><code>apply-macro-to-lines-of-paragraph</code>, which I
personally</span> <span class="audio-time caption" data-speaker="Sacha" data-start="824.049000" data-stop="826.191000">had not been using until I saw your config.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="826.231000" data-stop="827.593000">And I was like, that is a thing.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="829.796000" data-stop="830.517000"><strong class="speaker-name">Omar:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="830.557000" data-stop="840.319000">Well, that's a command that I wrote.</span> <span class="audio-time caption" data-speaker="Omar" data-start="840.320000" data-stop="843.526000">It’s a wrapper around <code>apply-macro-to-region-lines</code>,</span> <span class="audio-time caption" data-speaker="Omar" data-start="845.168000" data-stop="847.171000">but it automatically uses the paragraph.</span> <span class="audio-time caption" data-speaker="Omar" data-start="847.191000" data-stop="849.434000">That way you don't need to select it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="849.454000" data-stop="851.618000">I find that extremely convenient.</span> <span class="audio-time caption" data-speaker="Omar" data-start="855.779000" data-stop="857.401000">What would be a good example of that?</span> <span class="audio-time caption" data-speaker="Omar" data-start="857.421000" data-stop="859.204000">You want to wrap something.</span> <span class="audio-time caption" data-speaker="Omar" data-start="861.107000" data-stop="865.753000">What should I do as an example of this?</span> <span class="audio-time caption" data-speaker="Omar" data-start="866.094000" data-stop="868.317000">For some reason, I needed to convert these things</span> <span class="audio-time caption" data-speaker="Omar" data-start="868.998000" data-stop="875.487000">to, say, unwrap the parentheses and turn them</span> <span class="audio-time caption" data-speaker="Omar" data-start="875.527000" data-stop="877.149000">into an Org Mode table.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="878.171000" data-stop="879.693000"><strong class="speaker-name">Sacha:</strong>  Yeah, that makes sense.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="879.713000" data-stop="881.235000"><strong class="speaker-name">Omar:</strong>  I just apply it to the rest of</span> <span class="audio-time caption" data-speaker="Omar" data-start="881.275000" data-stop="881.816000">the paragraph.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="882.958000" data-stop="883.879000"><strong class="speaker-name">Sacha:</strong>  Magic.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="886.880000" data-stop="889.533000">That's great, because I would normally</span> <span class="audio-time caption" data-speaker="Sacha" data-start="889.534000" data-stop="893.533000">just start executing the macro and hope I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="893.534000" data-stop="894.533000">remember to stop at the end,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="894.534000" data-stop="897.067000">but then I overshoot, and then I have to undo,
j</span> <span class="audio-time caption" data-speaker="Sacha" data-start="897.068000" data-stop="899.100000">and then it's a mess.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="899.101000" data-stop="901.006000"><strong class="speaker-name">Omar:</strong>  Or you could select the paragraph and then just</span> <span class="audio-time caption" data-speaker="Omar" data-start="901.146000" data-stop="904.973000">use the built-in <code>apply-macro-to-lines-in-region</code>.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="905.881000" data-stop="907.945000"><strong class="speaker-name">Sacha:</strong>  Yes, yes, that's a possibility.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="908.346000" data-stop="909.308000"><strong class="speaker-name">Omar:</strong>  It just saves you the step of</span> <span class="audio-time caption" data-speaker="Omar" data-start="909.388000" data-stop="910.310000">marking the paragraph.</span> <span class="audio-time caption" data-speaker="Omar" data-start="910.390000" data-stop="913.176000">I found that I most often when I used apply macro</span> <span class="audio-time caption" data-speaker="Omar" data-start="913.196000" data-stop="914.999000">to lines in region, the region was exactly a</span> <span class="audio-time caption" data-speaker="Omar" data-start="915.060000" data-stop="915.420000">paragraph.</span> <span class="audio-time caption" data-speaker="Omar" data-start="915.440000" data-stop="916.963000">So I figured like there's no point in...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="917.464000" data-stop="918.426000"><strong class="speaker-name">Sacha:</strong>  All right, all right.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="918.507000" data-stop="922.675000"><strong class="speaker-name">Omar:</strong>  It's undone in a single step.</span> <span class="audio-time caption" data-speaker="Omar" data-start="922.655000" data-stop="925.619000">Like the application.</span> <span class="audio-time caption" data-speaker="Omar" data-start="925.639000" data-stop="928.323000">The thing I recorded as a macro, that is not</span> <span class="audio-time caption" data-speaker="Omar" data-start="928.383000" data-stop="929.064000">coalesced.</span> <span class="audio-time caption" data-speaker="Omar" data-start="929.084000" data-stop="930.346000">Yes, of course.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="930.366000" data-stop="932.509000"><strong class="speaker-name">Sacha:</strong>  Because that's the actual recording</span> <span class="audio-time caption" data-speaker="Sacha" data-start="932.589000" data-stop="932.829000">of it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="933.490000" data-stop="936.054000">Charlie Baker in the chat says,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="936.094000" data-stop="938.117000">"Definitely going to add the keycast transparency</span> <span class="audio-time caption" data-speaker="Sacha" data-start="938.157000" data-stop="938.798000">to my config.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="938.818000" data-stop="940.160000">I've been wanting that for a while."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="940.540000" data-stop="942.803000">These little demos of like, oh,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="942.863000" data-stop="945.227000">this is what this thing in your config does.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="945.627000" data-stop="947.390000">It's very helpful for people to be able to see</span> <span class="audio-time caption" data-speaker="Sacha" data-start="948.952000" data-stop="949.733000">its awesomeness.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="949.753000" data-stop="959.239000"><strong class="speaker-name">Omar:</strong>  Where is that?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="959.240000" data-stop="960.628000"><strong class="speaker-name">Sacha:</strong>  One of the other interesting things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="960.668000" data-stop="962.990000">you mentioned was your placeholder package.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="963.010000" data-stop="964.953000">I can see how the keyword macros help you with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="964.993000" data-stop="966.314000">text that's already there.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="966.334000" data-stop="967.916000">Then you've got these placeholders for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="968.056000" data-stop="969.758000">informal snippets or quick snippets.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="970.679000" data-stop="971.300000">Show us that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="971.400000" data-stop="973.182000">You use it a lot.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="973.162000" data-stop="973.803000"><strong class="speaker-name">Omar:</strong>  Yeah, I do.</span> <span class="audio-time caption" data-speaker="Omar" data-start="975.046000" data-stop="978.352000">Oh, that <code>tmp-buffer</code> is a command I have for</span> <span class="audio-time caption" data-speaker="Omar" data-start="978.673000" data-stop="981.599000">popping up temporary buffers in specific major</span> <span class="audio-time caption" data-speaker="Omar" data-start="981.639000" data-stop="981.939000">modes.</span> <span class="audio-time caption" data-speaker="Omar" data-start="983.122000" data-stop="984.765000">Maybe I can quickly show that first.</span> <span class="audio-time caption" data-speaker="Omar" data-start="985.125000" data-stop="985.707000">Yeah, yeah, yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="986.729000" data-stop="987.410000">So let's see.</span> <span class="audio-time caption" data-speaker="Omar" data-start="989.213000" data-stop="990.115000">Oh, yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="990.255000" data-stop="991.558000">So let me...</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="994.000000">16:34</span> <strong>embark-on-last-message</strong></div><p></p><span class="audio-time caption" data-speaker="Omar" data-start="994.070000" data-stop="997.474000"><strong class="speaker-name">Omar:</strong> There I used another little command I have.</span> <span class="audio-time caption" data-speaker="Omar" data-start="998.896000" data-stop="1001.259000"><code>embark-on-last-message</code></span> <span class="audio-time caption" data-speaker="Omar" data-start="1001.279000" data-stop="1004.322000">It just calls Embark on the last thing in the</span> <span class="audio-time caption" data-speaker="Omar" data-start="1004.382000" data-stop="1005.123000">messages buffer.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1007.306000" data-stop="1010.490000">Often I want to act on the thing that is the last</span> <span class="audio-time caption" data-speaker="Omar" data-start="1010.550000" data-stop="1012.712000">word in the echo area,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1012.732000" data-stop="1015.015000">so that's what this does.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1016.429000" data-stop="1016.950000"><strong class="speaker-name">Sacha:</strong>  Okay.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1017.810000" data-stop="1019.352000"><strong class="speaker-name">Omar:</strong>  The last thing in the echo</span> <span class="audio-time caption" data-speaker="Omar" data-start="1019.512000" data-stop="1022.375000">area was this symbol <code>embark-on-last-message</code> so I</span> <span class="audio-time caption" data-speaker="Omar" data-start="1022.435000" data-stop="1024.196000">can act on it directly.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1024.217000" data-stop="1025.759000"><strong class="speaker-name">Sacha:</strong>  Which is brilliant because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1025.779000" data-stop="1028.121000">I keep switching to the messages buffer to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1028.161000" data-stop="1031.023000">try to copy something, and by the time I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1031.064000" data-stop="1032.906000">switch, sometimes there are other messages,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1032.986000" data-stop="1035.729000">so it's great to just be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1035.769000" data-stop="1036.770000">able to do something.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1036.790000" data-stop="1038.050000"><strong class="speaker-name">Omar:</strong>  If there are other messages,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1038.252000" data-stop="1040.534000">then I also switch to the messages buffer, but if</span> <span class="audio-time caption" data-speaker="Omar" data-start="1040.594000" data-stop="1043.057000">I want to act on the very last thing, I have that</span> <span class="audio-time caption" data-speaker="Omar" data-start="1043.097000" data-stop="1043.517000">command for it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1043.497000" data-stop="1044.377000"><strong class="speaker-name">Sacha:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1044.397000" data-stop="1047.320000">I'm saying this is faster, so I get the chance of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1047.421000" data-stop="1050.344000">just hitting the shortcut before another timer</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1050.764000" data-stop="1052.746000">goes in and messes around with my messages.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1053.307000" data-stop="1054.528000">So yes, shortcuts.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1054.548000" data-stop="1055.549000">Okay, temp buffer.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1056.290000" data-stop="1058.072000">Tell us about that.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1058.152000" data-stop="1061.836000"><strong class="speaker-name">Omar:</strong>  You can configure single... Wait, where am I?</span> <span class="audio-time caption" data-speaker="Omar" data-start="1063.958000" data-stop="1064.839000">Transcribing job.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1065.259000" data-stop="1068.623000">I ran Whisper by accident.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1069.323000" data-stop="1070.404000"><strong class="speaker-name">Sacha:</strong>  Which is another thing I wanted to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1070.464000" data-stop="1071.245000">check.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1071.265000" data-stop="1072.947000">Many things I want to talk to you about…</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1076.030000" data-stop="1077.953000"><strong class="speaker-name">Omar:</strong>  The idea of using Whisper, I stole</span> <span class="audio-time caption" data-speaker="Omar" data-start="1078.013000" data-stop="1078.333000">from you</span> <span class="audio-time caption" data-speaker="Omar" data-start="1079.835000" data-stop="1082.078000">using it to dictate. I thought, oh, this looks</span> <span class="audio-time caption" data-speaker="Omar" data-start="1082.139000" data-stop="1082.579000">convenient</span> <span class="audio-time caption" data-speaker="Omar" data-start="1082.619000" data-stop="1084.442000">if the model is good. I tried it and it is</span> <span class="audio-time caption" data-speaker="Omar" data-start="1084.482000" data-stop="1084.862000">very good.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1086.000000">18:06</span> <strong>tmp-buffer with a major mode
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-18-10-233.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-18-10-233.jpg" alt="image from video 00:18:10.233" data-time="00:18:10.233"></a><span class="audio-time caption" data-speaker="Sacha" data-start="1086.124000" data-stop="1086.565000"><strong class="speaker-name">Sacha:</strong>  Temp buffer.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1087.045000" data-stop="1089.148000"><strong class="speaker-name">Omar:</strong>  Different major modes.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1089.869000" data-stop="1093.415000">It has a customizable list of bindings for</span> <span class="audio-time caption" data-speaker="Omar" data-start="1093.655000" data-stop="1094.696000">specific major modes.</span> <p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-18-19-533.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-18-19-533.jpg" alt="image from video 00:18:19.533" data-time="00:18:19.533"></a><span class="audio-time caption" data-speaker="Omar" data-start="1095.217000" data-stop="1097.520000"><strong class="speaker-name">Omar:</strong> It also has an option to just prompt you for a</span> <span class="audio-time caption" data-speaker="Omar" data-start="1097.560000" data-stop="1098.101000">major mode.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1099.724000" data-stop="1104.269000">It pops up a temp buffer in whatever major</span> <span class="audio-time caption" data-speaker="Omar" data-start="1104.309000" data-stop="1104.990000">mode you chose.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1106.251000" data-stop="1110.216000">I use it all the time to make new scratch buffers.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1110.236000" data-stop="1111.257000"><strong class="speaker-name">Sacha:</strong>  Yeah, I can see that's useful.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1111.277000" data-stop="1115.021000">I switch to a buffer that's got a name that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1115.061000" data-stop="1116.923000">doesn't exist yet, and then I have to press more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1116.963000" data-stop="1118.104000">keys to get to the major mode.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1118.405000" data-stop="1119.326000"><strong class="speaker-name">Omar:</strong>  But if you're doing certain</span> <span class="audio-time caption" data-speaker="Omar" data-start="1119.346000" data-stop="1122.409000">things, just type random letters to make a new</span> <span class="audio-time caption" data-speaker="Omar" data-start="1122.489000" data-stop="1122.769000">buffer,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1122.930000" data-stop="1125.132000">this is much better.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1125.172000" data-stop="1127.014000">They might as well all be called temp.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1128.107000" data-stop="1130.249000"><strong class="speaker-name">Sacha:</strong>  Do you reuse the buffers, or it's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1130.289000" data-stop="1131.290000">always just the one buffer?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1132.091000" data-stop="1134.934000"><strong class="speaker-name">Omar:</strong>  New buffer, then I kill it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1134.954000" data-stop="1135.655000"><strong class="speaker-name">Sacha:</strong>  Very temporary.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1136.216000" data-stop="1136.596000">Gotcha.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1137.177000" data-stop="1138.778000"><strong class="speaker-name">Omar:</strong>  By the way, <code>kill-current-buffer</code> doesn’t</span> <span class="audio-time caption" data-speaker="Omar" data-start="1138.818000" data-stop="1139.899000">have a default key binding.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1139.960000" data-stop="1141.041000">I don't understand why not.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1144.464000" data-stop="1145.586000">OK.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1145.746000" data-stop="1148.889000">I bind it to <code>C-c C-k</code>, which normally, I</span> <span class="audio-time caption" data-speaker="Omar" data-start="1148.929000" data-stop="1149.790000">think, is <code>kill-buffer</code>,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1149.830000" data-stop="1152.833000">but why would you want to kill a buffer that's</span> <span class="audio-time caption" data-speaker="Omar" data-start="1152.893000" data-stop="1155.516000">not the one you're looking at?</span> <span class="audio-time caption" data-speaker="Omar" data-start="1156.930000" data-stop="1159.059000">Wait, what was I going to show you?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1159.481000" data-stop="1160.204000"><strong class="speaker-name">Sacha:</strong>  You were going to show me</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1160.264000" data-stop="1161.067000">placeholders.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1162.393000" data-stop="1163.557000"><strong class="speaker-name">Omar:</strong>  Right.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1166.000000">19:26</span> <strong>placeholder
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-19-42-100.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-19-42-100.jpg" alt="image from video 00:19:42.100" data-time="00:19:42.100"></a><span class="audio-time caption" data-speaker="Omar" data-start="1166.532000" data-stop="1171.279000"><strong class="speaker-name">Omar:</strong> I often need to send several similar email</span> <span class="audio-time caption" data-speaker="Omar" data-start="1171.319000" data-stop="1171.820000">messages.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1173.242000" data-stop="1178.109000">I'm going to invite you on some day of some month</span> <span class="audio-time caption" data-speaker="Omar" data-start="1178.910000" data-stop="1181.454000">to give a talk, etc.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1182.075000" data-stop="1184.979000">That's the body of an email.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1185.440000" data-stop="1186.902000">I'll write it once.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1186.962000" data-stop="1191.950000">Here I’m using <code>placeholder-insert</code> to insert this
symbol.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1192.511000" data-stop="1194.193000">It appears in green,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1194.832000" data-stop="1198.479000">but it doesn't matter.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1198.519000" data-stop="1199.200000">It's just text.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1199.340000" data-stop="1202.065000">You could type that symbol yourself.</span> <p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-20-05-633.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-20-05-633.jpg" alt="image from video 00:20:05.633" data-time="00:20:05.633"></a><span class="audio-time caption" data-speaker="Omar" data-start="1202.566000" data-stop="1206.232000"><strong class="speaker-name">Omar:</strong> Then the <code>placeholder-next</code> and -previous</span> <span class="audio-time caption" data-speaker="Omar" data-start="1206.272000" data-stop="1210.340000">commands will cycle among those and let you fill</span> <span class="audio-time caption" data-speaker="Omar" data-start="1210.740000" data-stop="1212.403000">each one in.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1212.644000" data-stop="1214.086000">You don't have to fill it in right now.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1214.708000" data-stop="1216.591000">If you repeat the command, it restores the</span> <span class="audio-time caption" data-speaker="Omar" data-start="1216.631000" data-stop="1218.915000">placeholder and moves you to the next location.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1219.368000" data-stop="1221.231000"><strong class="speaker-name">Sacha:</strong>  That's one of the things I liked</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1221.291000" data-stop="1223.815000">about the implementation compared to yasnippet,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1223.835000" data-stop="1225.538000">because yasnippet, you’ve got to actually remember</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1225.578000" data-stop="1227.781000">to fill in the fields before you move on to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1227.821000" data-stop="1228.422000">something else.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1228.683000" data-stop="1231.087000">If you get out of it, you can't tab to the next</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1231.127000" data-stop="1231.667000">field.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1231.688000" data-stop="1234.312000">The placeholders will let you go and come</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1234.372000" data-stop="1236.876000">back and look up some information and put that in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1236.936000" data-stop="1237.697000">and so forth.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1238.000000">20:38</span> <strong>enable-recursive-minibuffers</strong></div><p></p><span class="audio-time caption" data-speaker="Omar" data-start="1238.605000" data-stop="1240.307000"><strong class="speaker-name">Omar:</strong>  Yeah, there's lots of things I</span> <span class="audio-time caption" data-speaker="Omar" data-start="1240.367000" data-stop="1242.690000">loved about Vim, but one thing I grew to strongly</span> <span class="audio-time caption" data-speaker="Omar" data-start="1242.750000" data-stop="1245.593000">dislike is modal computer programs.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1246.274000" data-stop="1247.936000">Not just modal editing, modal anything.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1248.196000" data-stop="1250.739000">I don't like being forced to finish what I</span> <span class="audio-time caption" data-speaker="Omar" data-start="1250.799000" data-stop="1251.180000">started.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1251.720000" data-stop="1254.424000">I want to be able to get distracted and go off</span> <span class="audio-time caption" data-speaker="Omar" data-start="1254.464000" data-stop="1255.885000">and do something else.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1255.905000" data-stop="1258.749000">For example, in Emacs, I very much dislike the</span> <span class="audio-time caption" data-speaker="Omar" data-start="1258.849000" data-stop="1262.453000">default value of <code>enable-recursive-minibuffers</code>.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1263.901000" data-stop="1266.886000">The default value is <code>nil</code>.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1266.926000" data-stop="1269.711000">They don't let you use the minibuffer if you're</span> <span class="audio-time caption" data-speaker="Omar" data-start="1269.751000" data-stop="1271.213000">already using the minibuffer.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1271.313000" data-stop="1273.056000">Emacs is supposed to be about freedom.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1273.116000" data-stop="1274.639000">Why is that the default value?</span> <span class="audio-time caption" data-speaker="Omar" data-start="1275.440000" data-stop="1277.523000">So I set it to <code>t</code>, which is more sensible.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1277.864000" data-stop="1279.767000">That way you're not stuck in the minibuffer.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1281.012000" data-stop="1282.214000"><strong class="speaker-name">Sacha:</strong>  Actually, one of the things that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1282.254000" data-stop="1284.558000">I've been trying to figure out is when I'm in a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1284.658000" data-stop="1287.182000">minibuffer, sometimes I want to use Embark to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1287.222000" data-stop="1289.145000">insert something into the minibuffer, but then I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1289.205000" data-stop="1291.850000">end up inserting it into the buffer buffer.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1291.870000" data-stop="1295.035000"><strong class="speaker-name">Omar:</strong>  Yeah, there's no... Embark doesn't</span> <span class="audio-time caption" data-speaker="Omar" data-start="1295.075000" data-stop="1298.160000">have any solution to that problem.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1298.461000" data-stop="1300.706000">It doesn't always do that.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1300.746000" data-stop="1302.510000">It does that if you're in the minibuffer in a</span> <span class="audio-time caption" data-speaker="Omar" data-start="1302.570000" data-stop="1304.193000">completion session.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1304.374000" data-stop="1306.599000">If you're in the minibuffer in a non-completion</span> <span class="audio-time caption" data-speaker="Omar" data-start="1306.659000" data-stop="1309.064000">session, then it acts as a regular buffer.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1309.124000" data-stop="1314.148000">So if you're in eval and here you had...</span> <span class="audio-time caption" data-speaker="Omar" data-start="1314.149000" data-stop="1316.480000">You can use <code>embark-insert</code> in the usual way to</span> <span class="audio-time caption" data-speaker="Omar" data-start="1316.580000" data-stop="1318.444000">duplicate stuff.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1318.508000" data-stop="1320.412000"><strong class="speaker-name">Sacha:</strong>  I have a workaround.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1320.432000" data-stop="1323.618000">I just use kill. I copy the text</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1323.698000" data-stop="1325.582000">instead of inserting it and that works out fine.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1327.125000" data-stop="1328.187000"><strong class="speaker-name">Omar:</strong>  Yeah, I do too.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1328.648000" data-stop="1331.653000">The behavior of inserting into the previous</span> <span class="audio-time caption" data-speaker="Omar" data-start="1331.714000" data-stop="1334.539000">buffer is so useful that I don't think I would</span> <span class="audio-time caption" data-speaker="Omar" data-start="1334.559000" data-stop="1335.321000">want to change that.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1335.761000" data-stop="1337.465000">But yeah, it is unfortunate that for that</span> <span class="audio-time caption" data-speaker="Omar" data-start="1337.505000" data-stop="1340.230000">specific instance, you can't use insert.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1340.615000" data-stop="1344.241000"><strong class="speaker-name">Sacha:</strong>  I appreciate that Embark allows</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1344.301000" data-stop="1346.445000">us to have all of these key bindings that we can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1346.485000" data-stop="1347.186000">do stuff with.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1347.547000" data-stop="1349.931000">I noticed in your config, in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1349.991000" data-stop="1352.476000">addition to Embark, you also modify a lot of the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1352.556000" data-stop="1357.284000">standard key maps to add other shortcuts to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1357.324000" data-stop="1358.927000">rebind things that make sense to you.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1359.717000" data-stop="1363.866000">Key bindings are something that a lot of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1363.906000" data-stop="1366.051000">people struggle with, trying to figure out more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1366.091000" data-stop="1367.935000">places to put more shortcuts that make</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1367.975000" data-stop="1368.195000">sense.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1368.235000" data-stop="1371.222000">What are the key shortcuts that work really well</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1371.282000" data-stop="1374.148000">for you?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1377.000000">22:57</span> <strong>Overriding embark-select
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-23-18-367.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-23-18-367.jpg" alt="image from video 00:23:18.367" data-time="00:23:18.367"></a><span class="audio-time caption" data-speaker="Omar" data-start="1377.928000" data-stop="1380.210000"><strong class="speaker-name">Omar:</strong>  One thing I don't like about the default</span> <span class="audio-time caption" data-speaker="Omar" data-start="1380.230000" data-stop="1384.875000">Embark configuration is that <code>SPC</code> is used for</span> <span class="audio-time caption" data-speaker="Omar" data-start="1385.056000" data-stop="1390.101000"><code>embark-select</code>, which marks a target for later use.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1390.121000" data-stop="1392.824000">I hardly ever use <code>embark-select</code>, so I would</span> <span class="audio-time caption" data-speaker="Omar" data-start="1392.864000" data-stop="1396.048000">rather <code>SPC</code>be for marking the region, which is</span> <span class="audio-time caption" data-speaker="Omar" data-start="1396.088000" data-stop="1398.031000">something I do pretty often, and have</span> <span class="audio-time caption" data-speaker="Omar" data-start="1398.032000" data-stop="1401.274000"><code>embark-select</code> on <code>C-SPC</code>, which is not a
command I</span> <span class="audio-time caption" data-speaker="Omar" data-start="1401.374000" data-stop="1402.515000">use very often.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1402.495000" data-stop="1404.237000">I swapped those.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1406.039000" data-stop="1409.443000">I think most of this is just adding new actions</span> <span class="audio-time caption" data-speaker="Omar" data-start="1409.663000" data-stop="1411.665000">that feel specific to me.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1412.000000">23:32</span> <strong>quick-calc
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-24-05-733.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-24-05-733.jpg" alt="image from video 00:24:05.733" data-time="00:24:05.733"></a><span class="audio-time caption" data-speaker="Omar" data-start="1412.967000" data-stop="1415.823000"><strong class="speaker-name">Omar:</strong> <code>quick-calc</code> is the thing usually found to</span> <span class="audio-time caption" data-speaker="Omar" data-start="1415.824000" data-stop="1420.195000"><code>C-x *</code>… <code>calc-dispatch</code> is the command.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1420.215000" data-stop="1424.540000">It’s <code>C-x * q</code>. That’s <code>quick-calc</code>.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1425.121000" data-stop="1426.622000">It's useful as an Embark action.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1429.124000" data-stop="1434.612000">If you have an expression and you... Wait, what am I</span> <span class="audio-time caption" data-speaker="Omar" data-start="1434.652000" data-stop="1441.441000">doing wrong? I forgot</span> <span class="audio-time caption" data-speaker="Omar" data-start="1441.481000" data-stop="1445.587000">what my binding to mark what Vim calls a</span> <span class="audio-time caption" data-speaker="Omar" data-start="1445.707000" data-stop="1448.050000">word in capital letters, which means a consecutive</span> <span class="audio-time caption" data-speaker="Omar" data-start="1448.110000" data-stop="1450.754000">stretch of non-space characters... If you</span> <span class="audio-time caption" data-speaker="Omar" data-start="1450.774000" data-stop="1452.912000">mark this, I can act on it with <code>=</code>,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1452.913000" data-stop="1454.018000">get the result.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1454.487000" data-stop="1458.192000"><strong class="speaker-name">Sacha:</strong>  And specifically this <code>embark-region-map</code> is what</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1459.054000" data-stop="1460.536000">you can add in the selected region.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1461.056000" data-stop="1463.179000">Incidentally, I've been playing around with using</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1463.199000" data-stop="1465.102000">the Selected package for this because it also</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1465.122000" data-stop="1466.104000">gives you the key map.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1467.706000" data-stop="1467.926000"><strong class="speaker-name">Omar:</strong>  Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1467.946000" data-stop="1469.829000">I love the Selected package and recommend it</span> <span class="audio-time caption" data-speaker="Omar" data-start="1469.889000" data-stop="1470.109000">often.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1470.189000" data-stop="1474.596000">I don't use it myself just because the only thing</span> <span class="audio-time caption" data-speaker="Omar" data-start="1474.656000" data-stop="1477.560000">it would save me is calling <code>embark-act</code>,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1477.580000" data-stop="1479.983000">because the commands I would put in the selected</span> <span class="audio-time caption" data-speaker="Omar" data-start="1480.023000" data-stop="1481.986000">key map are exactly the commands I have in the</span> <span class="audio-time caption" data-speaker="Omar" data-start="1482.026000" data-stop="1483.228000"><code>embark-region-map</code>.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1483.208000" data-stop="1486.077000">For me, Selected would only save me one</span> <span class="audio-time caption" data-speaker="Omar" data-start="1486.117000" data-stop="1487.822000">keystroke, which is <code>Embark Act</code>,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1487.963000" data-stop="1490.712000">so I don't feel it's worth it, but it's a great</span> <span class="audio-time caption" data-speaker="Omar" data-start="1490.752000" data-stop="1491.012000">idea.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1492.798000" data-stop="1495.206000">For example, I do use the rectangle keymap.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1495.948000" data-stop="1496.931000">Yes.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1497.485000" data-stop="1500.269000">So they're the only difference.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1500.489000" data-stop="1503.293000">It's equally good an idea as Selected is.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1503.593000" data-stop="1505.736000">The only difference is that the rectangle keymap</span> <span class="audio-time caption" data-speaker="Omar" data-start="1506.016000" data-stop="1508.800000">comes with Emacs and Selected is an external</span> <span class="audio-time caption" data-speaker="Omar" data-start="1508.840000" data-stop="1509.180000">package.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1509.200000" data-stop="1512.204000">I decided it's not worth installing an</span> <span class="audio-time caption" data-speaker="Omar" data-start="1512.265000" data-stop="1514.127000">external package when I could just use</span> <span class="audio-time caption" data-speaker="Omar" data-start="1514.147000" data-stop="1517.972000"><code>Embark Act</code>, which I do have to use because otherwise
I</span> <span class="audio-time caption" data-speaker="Omar" data-start="1518.012000" data-stop="1519.454000">won't understand people's bug reports.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1520.856000" data-stop="1523.900000">But the rectangle mode there, that one is</span> <span class="audio-time caption" data-speaker="Omar" data-start="1523.940000" data-stop="1524.260000">built in,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1524.280000" data-stop="1526.243000">so I just found a bunch of useful stuff in it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1526.830000" data-stop="1528.853000"><strong class="speaker-name">Sacha:</strong>  Yeah, and I noticed you have also</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1528.933000" data-stop="1531.658000">like you have a <code>narrow-to-point</code> so that you can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1531.798000" data-stop="1534.482000">use your rectangle commands to yank something</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1534.522000" data-stop="1534.823000">into it,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1535.163000" data-stop="1537.186000">so I get the sense that you use rectangles a fair</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1537.227000" data-stop="1537.407000">bit.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1537.447000" data-stop="1539.891000"><strong class="speaker-name">Omar:</strong>  You've really read my configuration</span> <span class="audio-time caption" data-speaker="Omar" data-start="1539.931000" data-stop="1541.093000">very carefully.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1541.153000" data-stop="1542.675000">This <code>narrow-to-point</code> is subtle.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1543.056000" data-stop="1545.460000">I am very impressed that you figured out the</span> <span class="audio-time caption" data-speaker="Omar" data-start="1545.500000" data-stop="1546.341000">reason for it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1546.456000" data-stop="1549.139000"><strong class="speaker-name">Sacha:</strong>  I started digging through</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1549.239000" data-stop="1551.162000"><code>narrow-extras</code> because I saw your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1551.182000" data-stop="1552.103000"><code>narrow-or-widen-dwim</code></span> <span class="audio-time caption" data-speaker="Sacha" data-start="1552.143000" data-stop="1554.005000">and I said, yes, I need that in my life.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1555.146000" data-stop="1557.189000"><strong class="speaker-name">Omar:</strong>  I don't think... I took it from somebody.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1557.870000" data-stop="1560.713000">Endless Parentheses, probably.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1561.694000" data-stop="1564.558000">The issue with <code>narrow-to-point</code>, the reason you</span> <span class="audio-time caption" data-speaker="Omar" data-start="1564.618000" data-stop="1567.721000">need it, is that if you insert a rectangle</span> <span class="audio-time caption" data-speaker="Omar" data-start="1567.782000" data-stop="1574.910000">somewhere, try to insert it in a blank line,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1575.329000" data-stop="1578.559000">and it'll overlap with what was after it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1579.121000" data-stop="1581.649000">But if you first narrow to the point and then</span> <span class="audio-time caption" data-speaker="Omar" data-start="1581.709000" data-stop="1584.718000">insert the rectangle and then widen again, it</span> <span class="audio-time caption" data-speaker="Omar" data-start="1584.738000" data-stop="1585.822000">gets its own blank lines.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1586.464000" data-stop="1590.599000">That's the reason I have it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1590.000000">26:30</span> <strong>Multiple cursors</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1590.600000" data-stop="1593.080000"><strong class="speaker-name">Sacha:</strong>  @zor_​org asks, was there a time you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1593.120000" data-stop="1595.042000">wanted multiple cursors?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1595.062000" data-stop="1596.023000">Have you ever been tempted?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1596.524000" data-stop="1597.685000"><strong class="speaker-name">Omar:</strong>  Multiple cursors.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1600.468000" data-stop="1602.930000">I think it gave me a false sense of security</span> <span class="audio-time caption" data-speaker="Omar" data-start="1603.010000" data-stop="1606.995000">which is why I experimented not using it and then</span> <span class="audio-time caption" data-speaker="Omar" data-start="1607.035000" data-stop="1609.357000">the experiment just never stopped.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1609.758000" data-stop="1612.120000">The thing with</span> <span class="audio-time caption" data-speaker="Omar" data-start="1612.100000" data-stop="1613.162000">multiple cursors...</span> <span class="audio-time caption" data-speaker="Omar" data-start="1613.943000" data-stop="1616.068000">Multiple cursors are more interactive than</span> <span class="audio-time caption" data-speaker="Omar" data-start="1616.108000" data-stop="1620.456000">keyboard macros, because if you can see several</span> <span class="audio-time caption" data-speaker="Omar" data-start="1620.496000" data-stop="1623.281000">cursors on the screen, you can visually make sure</span> <span class="audio-time caption" data-speaker="Omar" data-start="1623.341000" data-stop="1625.425000">that what you're doing does apply correctly at</span> <span class="audio-time caption" data-speaker="Omar" data-start="1625.465000" data-stop="1626.868000">each of those locations.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1627.591000" data-stop="1630.394000">But then I started noticing that that made me</span> <span class="audio-time caption" data-speaker="Omar" data-start="1630.474000" data-stop="1632.537000">feel very confident I was doing things the right</span> <span class="audio-time caption" data-speaker="Omar" data-start="1632.557000" data-stop="1633.538000">way in multiple cursors,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1633.858000" data-stop="1636.301000">but there were some cursors offscreen where I</span> <span class="audio-time caption" data-speaker="Omar" data-start="1636.361000" data-stop="1638.343000">wasn't paying attention to what was happening</span> <span class="audio-time caption" data-speaker="Omar" data-start="1638.383000" data-stop="1639.064000">there,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1639.084000" data-stop="1641.607000">and then I got it wrong and was more confused.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1641.627000" data-stop="1643.769000">Just psychologically, a keyboard macro,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1643.789000" data-stop="1645.912000">since I know I don't see the other places where</span> <span class="audio-time caption" data-speaker="Omar" data-start="1645.952000" data-stop="1648.274000">I'm going to run it, I'm more careful when I</span> <span class="audio-time caption" data-speaker="Omar" data-start="1648.335000" data-stop="1649.616000">record the keyboard macro.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1649.596000" data-stop="1654.212000">It's a psychological trick I'm playing on myself.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1654.774000" data-stop="1656.680000">By using keyboard macros instead of multiple</span> <span class="audio-time caption" data-speaker="Omar" data-start="1656.700000" data-stop="1659.510000">cursors, I force myself to pay more attention to</span> <span class="audio-time caption" data-speaker="Omar" data-start="1659.550000" data-stop="1660.112000">what I'm doing.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1660.000000">27:40</span> <strong>Block-undo and regular undo</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1660.582000" data-stop="1662.105000"><strong class="speaker-name">Sacha:</strong>  Does the block undo still let you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1662.686000" data-stop="1665.731000">select a region in order to undo just the part</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1665.751000" data-stop="1668.235000">that was within it, in case you notice offscreen</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1668.276000" data-stop="1670.640000">that it's done something bad in just these</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1670.760000" data-stop="1671.541000">entries?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1671.561000" data-stop="1673.725000"><strong class="speaker-name">Omar:</strong>  Yeah, that's completely independent.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1673.745000" data-stop="1676.390000">That built-in Emacs behavior is not affected by</span> <span class="audio-time caption" data-speaker="Omar" data-start="1676.871000" data-stop="1678.353000">undo boundaries.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1679.435000" data-stop="1680.497000"><strong class="speaker-name">Sacha:</strong>  Wait, is it?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1680.713000" data-stop="1683.878000"><strong class="speaker-name">Omar:</strong>  If it overlaps with part of... I</span> <span class="audio-time caption" data-speaker="Omar" data-start="1683.938000" data-stop="1684.278000">don't know.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1684.318000" data-stop="1684.879000">Sorry, sorry.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1686.261000" data-stop="1686.802000">I don't know.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1688.365000" data-stop="1691.850000">So if I have a big change that I amalgamated into</span> <span class="audio-time caption" data-speaker="Omar" data-start="1691.890000" data-stop="1694.995000">a single undo, and then I pick a region that</span> <span class="audio-time caption" data-speaker="Omar" data-start="1695.135000" data-stop="1697.779000">overlaps partially with that but not completely,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1697.799000" data-stop="1699.021000">what would undo and region do?</span> <span class="audio-time caption" data-speaker="Omar" data-start="1699.541000" data-stop="1700.062000">I don't know.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1700.343000" data-stop="1701.945000">I think it...</span> <span class="audio-time caption" data-speaker="Omar" data-start="1702.398000" data-stop="1703.101000">I'm just guessing.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1703.241000" data-stop="1705.812000">I would just think that it sees that the affected</span> <span class="audio-time caption" data-speaker="Omar" data-start="1705.872000" data-stop="1709.467000">region by the big block undo is not completely</span> <span class="audio-time caption" data-speaker="Omar" data-start="1709.528000" data-stop="1711.456000">contained in the region and then it doesn't undo</span> <span class="audio-time caption" data-speaker="Omar" data-start="1711.536000" data-stop="1711.817000">it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1712.354000" data-stop="1714.677000"><strong class="speaker-name">Sacha:</strong>  Okay, so I'm just going to conclude</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1714.737000" data-stop="1717.361000">that you do not make mistakes with your keyboard</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1717.401000" data-stop="1717.881000">macros.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1719.163000" data-stop="1721.626000"><strong class="speaker-name">Omar:</strong>  I can easily undo</span> <span class="audio-time caption" data-speaker="Omar" data-start="1721.646000" data-stop="1723.869000">them instead of having to keep running on undo.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1723.889000" data-stop="1726.392000">So it's not that I don't make mistakes, but that</span> <span class="audio-time caption" data-speaker="Omar" data-start="1726.493000" data-stop="1729.056000">I try to fix them right after running the</span> <span class="audio-time caption" data-speaker="Omar" data-start="1729.096000" data-stop="1730.558000">keyboard macro.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1730.578000" data-stop="1731.519000"><strong class="speaker-name">Sacha:</strong>  All right, all right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1732.360000" data-stop="1733.599000">I had another question.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1733.000000">28:53</span> <strong>Cycling through Embark targets</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1733.600000" data-stop="1736.085000"><strong class="speaker-name">Sacha:</strong> Ou've got a lot of different Embark maps and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1736.165000" data-stop="1738.689000">you've got a lot of different Embark targets.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1740.291000" data-stop="1741.332000">How do you handle</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1742.611000" data-stop="1744.835000">going through the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1744.895000" data-stop="1748.041000">different ones that are at the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1748.101000" data-stop="1749.984000">point? At the moment, I've got</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1750.005000" data-stop="1752.649000">the label at the top and I just flip</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1752.669000" data-stop="1754.753000">through it. I know sometimes I need to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1754.793000" data-stop="1756.897000">hit it twice or sometimes I need to hit</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1756.937000" data-stop="1760.704000"><code>embark-act</code> three times for this kind of thing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1760.684000" data-stop="1764.372000">How do you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1764.412000" data-stop="1765.935000">distinguish between lots of them when you're just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1765.956000" data-stop="1766.376000">going through it?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1766.797000" data-stop="1770.145000"><strong class="speaker-name">Omar:</strong>  I think that's the poorest part of</span> <span class="audio-time caption" data-speaker="Omar" data-start="1770.185000" data-stop="1772.690000">the user experience with <code>Embark Act</code> currently.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1773.131000" data-stop="1776.278000">I don't really like it, but I don't have a good</span> <span class="audio-time caption" data-speaker="Omar" data-start="1776.358000" data-stop="1778.102000">alternative.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1778.082000" data-stop="1782.490000">A lot of people like <code>expand-region</code> and I don’t</span> <span class="audio-time caption" data-speaker="Omar" data-start="1782.530000" data-stop="1784.434000">like it because I feel like I have to hammer it</span> <span class="audio-time caption" data-speaker="Omar" data-start="1784.674000" data-stop="1785.976000">off.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1785.996000" data-stop="1788.962000">I prefer to have a lot of… This is another thing</span> <span class="audio-time caption" data-speaker="Omar" data-start="1789.002000" data-stop="1790.945000">I learned from Vim: have a lot of commands to</span> <span class="audio-time caption" data-speaker="Omar" data-start="1790.986000" data-stop="1794.091000">mark specific things and just memorize all of</span> <span class="audio-time caption" data-speaker="Omar" data-start="1794.472000" data-stop="1794.572000">them.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1794.552000" data-stop="1796.975000">But <code>expand-region</code> says, no, don’t memorize</span> <span class="audio-time caption" data-speaker="Omar" data-start="1797.015000" data-stop="1797.175000">that.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1797.215000" data-stop="1800.278000">Just hammer on <code>expand-region</code> until you get the</span> <span class="audio-time caption" data-speaker="Omar" data-start="1800.338000" data-stop="1800.819000">thing you want.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1800.859000" data-stop="1806.826000">Ffor me, even though it's objectively fast, it</span> <span class="audio-time caption" data-speaker="Omar" data-start="1806.846000" data-stop="1808.668000">just feels very slow.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1808.688000" data-stop="1810.330000">It feels like I have to hit it four times</span> <span class="audio-time caption" data-speaker="Omar" data-start="1810.490000" data-stop="1811.651000">whenever I want to mark something.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1812.051000" data-stop="1814.474000">I get the same feeling from cycling in</span> <span class="audio-time caption" data-speaker="Omar" data-start="1814.534000" data-stop="1814.694000"><code>embark-act</code>.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1814.915000" data-stop="1816.056000">I don't really like it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1816.136000" data-stop="1819.059000">But if we had come up with a better alternative,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1819.079000" data-stop="1821.322000">and I say we because I discussed this in the</span> <span class="audio-time caption" data-speaker="Omar" data-start="1821.362000" data-stop="1822.483000">GitHub issues with</span> <span class="audio-time caption" data-speaker="Omar" data-start="1822.463000" data-stop="1828.466000">with Daniel Mendler and Prot, and I think @hmelman</span> <span class="audio-time caption" data-speaker="Omar" data-start="1828.506000" data-stop="1832.502000">was also in those discussions, and maybe</span> <span class="audio-time caption" data-speaker="Omar" data-start="1832.582000" data-stop="1833.566000">Clemens Radermacher?</span> <span class="audio-time caption" data-speaker="Omar" data-start="1836.622000" data-stop="1839.726000">I just couldn't come up with a much better</span> <span class="audio-time caption" data-speaker="Omar" data-start="1839.786000" data-stop="1840.447000">alternative,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1840.467000" data-stop="1842.250000">so I put up with it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1842.610000" data-stop="1844.273000">I don't need to cycle that much.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1844.373000" data-stop="1846.976000">I almost always want to act on the first target.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1846.996000" data-stop="1850.942000">Which is unfair, because I decided what the first</span> <span class="audio-time caption" data-speaker="Omar" data-start="1850.982000" data-stop="1852.524000">target is in the default configuration,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1852.544000" data-stop="1855.288000">so it's sort of tuned so that I hardly ever need</span> <span class="audio-time caption" data-speaker="Omar" data-start="1855.328000" data-stop="1855.768000">to cycle.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1855.869000" data-stop="1858.492000">I apologize if it means other people need to</span> <span class="audio-time caption" data-speaker="Omar" data-start="1858.532000" data-stop="1859.153000">cycle a lot.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1859.453000" data-stop="1859.934000"><strong class="speaker-name">Sacha:</strong>  Nonsense.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1859.974000" data-stop="1861.818000">We can all modify our target list,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1862.500000" data-stop="1864.264000">so we can always tune it to what we want.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1865.045000" data-stop="1866.428000"><strong class="speaker-name">Omar:</strong>  I mean, it's a lot of work, right?</span> <span class="audio-time caption" data-speaker="Omar" data-start="1866.949000" data-stop="1869.936000">I think the default Embark configuration is over</span> <span class="audio-time caption" data-speaker="Omar" data-start="1870.036000" data-stop="1871.499000">half of the source code of Embark.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1873.083000" data-stop="1879.116000">The configuration is... Where does that start?</span> <span class="audio-time caption" data-speaker="Omar" data-start="1879.653000" data-stop="1882.035000">Oh, I wish the autoload cookies were not in the</span> <span class="audio-time caption" data-speaker="Omar" data-start="1882.115000" data-stop="1882.476000">outline.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1884.378000" data-stop="1889.062000"><strong class="speaker-name">Sacha:</strong>  If you do a space, oh, I guess it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1889.102000" data-stop="1890.143000">doesn't do that, right?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1890.163000" data-stop="1891.184000"><strong class="speaker-name">Omar:</strong>  Oh, yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1891.204000" data-stop="1895.188000">For orderless, I use</span> <span class="audio-time caption" data-speaker="Omar" data-start="1895.248000" data-stop="1899.839000">the escapable spaces, so I can do that.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1899.000000">31:39</span> <strong>Imenu for navigation</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1899.840000" data-stop="1901.855000"><strong class="speaker-name">Sacha:</strong>  I should also point out that your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1901.935000" data-stop="1905.638000">config uses a lot of imenu also, which was</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1905.698000" data-stop="1907.040000">another interesting thing I picked up.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1907.440000" data-stop="1909.542000"><strong class="speaker-name">Omar:</strong>  Yeah, I like imenu, yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1909.522000" data-stop="1911.184000">I should add imenu for this.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1911.304000" data-stop="1914.348000">One thing I did to imenu is I added a section for</span> <span class="audio-time caption" data-speaker="Omar" data-start="1914.388000" data-stop="1917.031000">key maps.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1917.051000" data-stop="1920.114000"><strong class="speaker-name">Sacha:</strong>  I saw that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1920.274000" data-stop="1922.176000">You have a regular expression so you can see it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1922.257000" data-stop="1923.999000">easily.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1925.180000" data-stop="1925.540000"><strong class="speaker-name">Omar:</strong>  Right.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1930.106000" data-stop="1932.488000">It's not half, but a big chunk of Embark is just</span> <span class="audio-time caption" data-speaker="Omar" data-start="1932.528000" data-stop="1934.010000">the default configuration.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1934.260000" data-stop="1937.996000">It would be a lot of work to configure Embark</span> <span class="audio-time caption" data-speaker="Omar" data-start="1938.036000" data-stop="1938.619000">from scratch.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1938.699000" data-stop="1940.467000">That's why the package comes with an extensive</span> <span class="audio-time caption" data-speaker="Omar" data-start="1940.527000" data-stop="1941.672000">default configuration.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1942.225000" data-stop="1944.367000"><strong class="speaker-name">Sacha:</strong>  Charlie Baker says, “I have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1944.407000" data-stop="1946.869000"><code>embark-act</code> set up to expand in the same way</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1946.929000" data-stop="1948.991000"><code>expand-region</code> does, but with Embark’s type
awareness,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1949.071000" data-stop="1950.553000">it's easy to add a contract function.”</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1950.573000" data-stop="1952.935000">I guess maybe also some highlighting helps</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1952.955000" data-stop="1953.355000">with that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1954.336000" data-stop="1956.738000">Charlie also says, “I also have a completing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1956.778000" data-stop="1958.800000">read interface in the transient menu to jump</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1958.860000" data-stop="1961.022000">directly to one of the many types under point</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1961.062000" data-stop="1963.144000">that I'm seeking.” Charlie, you're going to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1963.184000" data-stop="1964.926000">share somewhere so I can steal that part of your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1964.966000" data-stop="1965.666000">config, right?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1967.248000" data-stop="1968.609000"><strong class="speaker-name">Omar:</strong>  I mean, that would be something I</span> <span class="audio-time caption" data-speaker="Omar" data-start="1968.649000" data-stop="1971.912000">would consider adding to Embark itself.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1971.000000">32:51</span> <strong>Collaboration</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1971.993000" data-stop="1974.556000"><strong class="speaker-name">Sacha:</strong>  You mentioned having all these</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1974.596000" data-stop="1977.500000">conversations with Daniel and others through</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1977.520000" data-stop="1979.242000">GitHub and other things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1979.282000" data-stop="1982.986000">I wanted to touch on that because I think in the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1983.107000" data-stop="1987.312000">Emacs community, it's pretty rare to find people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1987.352000" data-stop="1989.574000">who are collaborating on packages and packages</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1989.614000" data-stop="1990.896000">that work so well together.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1991.717000" data-stop="1995.822000">The partnership between your packages and Daniel</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1995.862000" data-stop="1998.505000">Mendler or Minad's packages with Consult and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1998.545000" data-stop="2000.768000">Vertico and Marginalia is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2000.748000" data-stop="2003.657000">really nice. We don't see a lot</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2003.677000" data-stop="2006.406000">of examples of that kind of inter-packaged</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2006.486000" data-stop="2008.813000">conversation as much.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2008.894000" data-stop="2011.281000">How did that start?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2011.632000" data-stop="2013.536000"><strong class="speaker-name">Omar:</strong>  I think it was mostly Daniel's</span> <span class="audio-time caption" data-speaker="Omar" data-start="2013.576000" data-stop="2013.977000">initiative.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2014.138000" data-stop="2019.570000">I had started work on Orderless and</span> <span class="audio-time caption" data-speaker="Omar" data-start="2019.670000" data-stop="2022.797000">Embark. I think his first package was</span> <span class="audio-time caption" data-speaker="Omar" data-start="2022.897000" data-stop="2025.463000">Consult, maybe, of this family of packages.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2028.189000" data-stop="2032.600000">I remember Embark was a pretty sad shape when</span> <span class="audio-time caption" data-speaker="Omar" data-start="2032.601000" data-stop="2034.600000">Daniel started raising issues</span> <span class="audio-time caption" data-speaker="Omar" data-start="2034.601000" data-stop="2038.800000">on the Github. He really lit a fire under me</span> <span class="audio-time caption" data-speaker="Omar" data-start="2038.801000" data-stop="2041.800000">to improve Embark.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2041.801000" data-stop="2044.000000">It started with him complaining about things</span> <span class="audio-time caption" data-speaker="Omar" data-start="2044.001000" data-stop="2046.967000">in Embark, and I immediately realized that he</span> <span class="audio-time caption" data-speaker="Omar" data-start="2046.968000" data-stop="2048.367000">was thinking very carefully about</span> <span class="audio-time caption" data-speaker="Omar" data-start="2048.368000" data-stop="2051.367000">the user experience, so I thought</span> <span class="audio-time caption" data-speaker="Omar" data-start="2051.368000" data-stop="2053.033000">he is full of good ideas</span> <span class="audio-time caption" data-speaker="Omar" data-start="2053.034000" data-stop="2054.194000">and I should listen to them.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2054.174000" data-stop="2056.742000">Back then at the start of Embark and</span> <span class="audio-time caption" data-speaker="Omar" data-start="2056.782000" data-stop="2059.449000">Orderless, Prot was also very involved in</span> <span class="audio-time caption" data-speaker="Omar" data-start="2059.550000" data-stop="2060.672000">discussing the design.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2060.954000" data-stop="2062.418000">All of this is on GitHub issues.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2063.360000" data-stop="2066.952000">Some software archaeologists can find all of it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2067.539000" data-stop="2072.130000">So I think we started working together when</span> <span class="audio-time caption" data-speaker="Omar" data-start="2072.190000" data-stop="2074.357000">we realized we were both writing Marginalia,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2074.657000" data-stop="2076.723000">so we decided to merge those two packages into a</span> <span class="audio-time caption" data-speaker="Omar" data-start="2076.783000" data-stop="2077.224000">single one.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2077.906000" data-stop="2081.495000">I think maybe the name Marginalia was</span> <span class="audio-time caption" data-speaker="Omar" data-start="2081.514000" data-stop="2082.317000">suggested by Prot,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2082.456000" data-stop="2084.282000">I don't remember, but it's a very good name.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2084.532000" data-stop="2090.559000">The collaboration was completely unplanned.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2091.040000" data-stop="2094.484000">We just did it because we had already talked on</span> <span class="audio-time caption" data-speaker="Omar" data-start="2094.524000" data-stop="2098.069000">the Embark issues and Daniel's suggestions</span> <span class="audio-time caption" data-speaker="Omar" data-start="2098.109000" data-stop="2102.194000">improved Embark a great deal in a short amount of</span> <span class="audio-time caption" data-speaker="Omar" data-start="2102.214000" data-stop="2102.534000">time.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2103.155000" data-stop="2106.719000">So then when we both realized we were writing</span> <span class="audio-time caption" data-speaker="Omar" data-start="2106.779000" data-stop="2108.842000">something like Marginalia, we decided to just</span> <span class="audio-time caption" data-speaker="Omar" data-start="2108.922000" data-stop="2111.265000">merge those two packages and write a single one.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2111.245000" data-stop="2113.828000">Since that worked out well, we kept on</span> <span class="audio-time caption" data-speaker="Omar" data-start="2113.868000" data-stop="2114.428000">collaborating.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2115.510000" data-stop="2119.233000">So far, we haven't co-written any other package.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2120.355000" data-stop="2123.358000">One thing like that is that now Daniel is a</span> <span class="audio-time caption" data-speaker="Omar" data-start="2123.418000" data-stop="2125.881000">co-maintainer of Orderless, which is great</span> <span class="audio-time caption" data-speaker="Omar" data-start="2125.961000" data-stop="2128.964000">because Daniel is extremely efficient at fixing</span> <span class="audio-time caption" data-speaker="Omar" data-start="2129.044000" data-stop="2129.324000">bugs.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2129.464000" data-stop="2132.568000">He does it instantly.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2132.588000" data-stop="2136.272000">He figures out what's wrong and has a patch in a</span> <span class="audio-time caption" data-speaker="Omar" data-start="2136.332000" data-stop="2138.674000">few minutes after he looks at the issue.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2138.714000" data-stop="2140.476000">He looks at the issue</span> <span class="audio-time caption" data-speaker="Omar" data-start="2140.456000" data-stop="2142.339000">the day it was posted or the day after.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2142.459000" data-stop="2145.142000">I can't do things that quickly.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2145.263000" data-stop="2149.969000">It's great that he's helping out with orderless.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2150.409000" data-stop="2152.312000">It wasn't planned.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2152.472000" data-stop="2154.315000">It just felt right from the very beginning.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2154.415000" data-stop="2157.819000">I immediately realized he had some great ideas</span> <span class="audio-time caption" data-speaker="Omar" data-start="2157.900000" data-stop="2159.942000">and implemented a lot of them.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2161.444000" data-stop="2163.968000">Then we started doing that the other way around.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2164.068000" data-stop="2166.712000">I started commenting on a bunch of issues in</span> <span class="audio-time caption" data-speaker="Omar" data-start="2167.392000" data-stop="2169.315000">Consult and Vertico.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2169.852000" data-stop="2173.537000">I think I exerted some pressure on Daniel to add</span> <span class="audio-time caption" data-speaker="Omar" data-start="2173.577000" data-stop="2177.021000">features to Vertico, like the grid view and the</span> <span class="audio-time caption" data-speaker="Omar" data-start="2177.082000" data-stop="2177.923000">horizontal view.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2178.884000" data-stop="2181.207000">Or maybe specifically the grid view, because at</span> <span class="audio-time caption" data-speaker="Omar" data-start="2181.227000" data-stop="2183.790000">the time I was... I'm sort of slow to switch</span> <span class="audio-time caption" data-speaker="Omar" data-start="2184.031000" data-stop="2185.352000">basic Emacs infrastructure.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2185.713000" data-stop="2187.916000">I wasn't using Vertico for a long time, even</span> <span class="audio-time caption" data-speaker="Omar" data-start="2187.936000" data-stop="2188.857000">though I was like</span> <span class="audio-time caption" data-speaker="Omar" data-start="2188.837000" data-stop="2193.533000">opining on the Github issues for Vertico,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2193.534000" data-stop="2195.033000">and the reason was that</span> <span class="audio-time caption" data-speaker="Omar" data-start="2195.034000" data-stop="2198.337000">I was stuck with the vastly inferior <code>embark-live</code>.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2198.858000" data-stop="2201.303000">There was this <code>embark-live</code> thing where you could</span> <span class="audio-time caption" data-speaker="Omar" data-start="2201.864000" data-stop="2204.360000">pop up a buffer with the targets in the</span> <span class="audio-time caption" data-speaker="Omar" data-start="2204.361000" data-stop="2206.514000">minibuffer, which just means a completion candidate.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2206.534000" data-stop="2209.360000">So you could use Embark as a kind of</span> <span class="audio-time caption" data-speaker="Omar" data-start="2209.340000" data-stop="2212.224000">completion user interface.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2213.346000" data-stop="2217.172000">It was very slow, but it was very featureful.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2217.492000" data-stop="2220.317000">You could do a vertical list.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2220.357000" data-stop="2221.318000">You could do a grid.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2221.659000" data-stop="2224.182000">In the list, you could activate zebra stripes.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2225.284000" data-stop="2226.806000">Yeah, you can see</span> <span class="audio-time caption" data-speaker="Omar" data-start="2227.668000" data-stop="2229.110000">that's been removed from Embark.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2229.511000" data-stop="2233.356000">But I kept saying to Daniel, I'll switch to</span> <span class="audio-time caption" data-speaker="Omar" data-start="2233.477000" data-stop="2235.359000">Vertico if you add a grid view.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2235.660000" data-stop="2237.743000">He eventually did add the grid view.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2237.723000" data-stop="2240.346000">I kept my word and switched to Vertico, which is much</span> <span class="audio-time caption" data-speaker="Omar" data-start="2240.406000" data-stop="2242.168000">better than the thing in Embark.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2242.228000" data-stop="2243.870000">I was just being stubborn by not switching</span> <span class="audio-time caption" data-speaker="Omar" data-start="2243.950000" data-stop="2244.871000">earlier.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2244.891000" data-stop="2246.733000">But if I had switched earlier, maybe Vertico</span> <span class="audio-time caption" data-speaker="Omar" data-start="2246.773000" data-stop="2248.916000">wouldn't have a grid view.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2249.677000" data-stop="2251.279000"><strong class="speaker-name">Sacha:</strong>  I think it's definitely a good</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2251.339000" data-stop="2258.407000">example of a set of packages that has... So all</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2258.427000" data-stop="2260.289000">this started in about 2020s or so.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2261.010000" data-stop="2265.655000">So we actually can see how people have gotten into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2265.955000" data-stop="2269.560000">using Vertico and all the other packages compared</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2269.600000" data-stop="2272.304000">to, say, looking at more popular packages that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2272.344000" data-stop="2273.686000">have been around for a long time.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2273.726000" data-stop="2277.431000">"Of course everyone's been using</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2277.531000" data-stop="2278.592000">Org Mode for a long time."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2278.632000" data-stop="2279.333000">It's there.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2279.373000" data-stop="2281.079000">It's part of the fabric.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2281.000000">38:01</span> <strong>Technology adoption and Emacs packages</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2281.080000" data-stop="2282.638000"><strong class="speaker-name">Sacha:</strong> It's very interesting to see the technology</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2282.658000" data-stop="2284.240000">adoption around it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2284.280000" data-stop="2286.303000">A lot of the things that people struggle with as</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2286.383000" data-stop="2288.386000">package authors is getting other people to try</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2288.426000" data-stop="2291.490000">out their stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2291.470000" data-stop="2294.837000">With Orderless and Embark probably in the early</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2294.897000" data-stop="2298.203000">days, what was that like to put this thing out</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2298.224000" data-stop="2301.410000">there in the world and have people start to try</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2301.490000" data-stop="2302.733000">it?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2302.753000" data-stop="2303.995000">How did people find it?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2305.004000" data-stop="2307.989000"><strong class="speaker-name">Omar:</strong>  I personally found it very scary.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2308.791000" data-stop="2313.159000">At the beginning, I still thought Embark was a</span> <span class="audio-time caption" data-speaker="Omar" data-start="2313.500000" data-stop="2315.884000">part of my personal Emacs configuration that sort</span> <span class="audio-time caption" data-speaker="Omar" data-start="2315.924000" data-stop="2318.609000">of grew out of control and I decided to publish</span> <span class="audio-time caption" data-speaker="Omar" data-start="2318.649000" data-stop="2319.090000">separately.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2320.272000" data-stop="2322.977000">But then I have all these people telling me how</span> <span class="audio-time caption" data-speaker="Omar" data-start="2323.017000" data-stop="2325.582000">to improve what I still thought of as part of my</span> <span class="audio-time caption" data-speaker="Omar" data-start="2325.642000" data-stop="2328.447000">personal configuration.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2328.427000" data-stop="2330.470000">I think one thing that helped was that people</span> <span class="audio-time caption" data-speaker="Omar" data-start="2330.510000" data-stop="2331.391000">made very good suggestions.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2331.411000" data-stop="2333.714000">So I realized, no, no, it's worth publishing</span> <span class="audio-time caption" data-speaker="Omar" data-start="2334.134000" data-stop="2336.397000">reusable parts of your configuration just for the</span> <span class="audio-time caption" data-speaker="Omar" data-start="2336.677000" data-stop="2339.401000">GitHub issues, just for people finding bugs and</span> <span class="audio-time caption" data-speaker="Omar" data-start="2339.441000" data-stop="2341.804000">suggesting improvements and so on.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2342.645000" data-stop="2347.511000">But yeah, I had to adjust to having some users.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2347.551000" data-stop="2349.013000">At first, it was very few people.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2350.235000" data-stop="2353.459000">But then they got added to Doom.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2353.499000" data-stop="2356.122000">I think they were made the default in Doom.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2356.237000" data-stop="2359.243000">That was a huge influx of users.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2359.283000" data-stop="2361.248000">That was very scary.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2361.508000" data-stop="2363.813000">We were suddenly flooded with new bug reports,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2363.933000" data-stop="2365.917000">like all of the packages in the family.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2366.038000" data-stop="2370.327000">I remember feeling like there's a horde of Doom</span> <span class="audio-time caption" data-speaker="Omar" data-start="2370.447000" data-stop="2371.950000">users running at us.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2374.748000" data-stop="2375.749000"><strong class="speaker-name">Sacha:</strong>  All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2377.070000" data-stop="2378.832000">So, starter kit, then everybody gets</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2378.892000" data-stop="2381.534000">into it, and then everybody starts talking about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2381.614000" data-stop="2382.835000">it because they're like, yeah, you know, it's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2382.875000" data-stop="2383.055000">great.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2383.075000" data-stop="2385.578000">You can specify things out of order.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2385.638000" data-stop="2387.540000">You don't have to remember what words come in,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2387.560000" data-stop="2389.081000">which order when you're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2389.121000" data-stop="2389.882000">completing things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2390.542000" data-stop="2393.465000">Those of us who aren't on starter kits are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2393.485000" data-stop="2395.046000">like, yes, we should try that too.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2395.847000" data-stop="2397.589000">That's how it's done.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2397.609000" data-stop="2399.991000"><strong class="speaker-name">Omar:</strong>  Doom helped a lot to raise</span> <span class="audio-time caption" data-speaker="Omar" data-start="2400.771000" data-stop="2406.099000">awareness and adoption.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2406.000000">40:06</span> <strong>Personal packages and naming conventions</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2406.100000" data-stop="2409.479000"><strong class="speaker-name">Sacha:</strong>  You've got a lot of other small packages.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2410.040000" data-stop="2412.724000">For something as small as block-undo, which you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2412.764000" data-stop="2414.947000">showed us, it really just fits in one screen.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2414.967000" data-stop="2416.529000">Is that something that you would set up as a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2416.589000" data-stop="2419.233000">different repository or just as a file within</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2419.253000" data-stop="2419.854000">your current one?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2419.874000" data-stop="2421.496000"><strong class="speaker-name">Omar:</strong>  No, those are all in my <code>user-lisp</code></span> <span class="audio-time caption" data-speaker="Omar" data-start="2421.616000" data-stop="2422.117000">directory.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2423.940000" data-stop="2425.382000"><strong class="speaker-name">Sacha:</strong>  I have actually successfully used</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2425.562000" data-stop="2428.226000">use package to grab stuff out of your <code>user-lisp</code></span> <span class="audio-time caption" data-speaker="Sacha" data-start="2428.246000" data-stop="2431.350000">directory and use them in my config.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2431.330000" data-stop="2432.211000">Yeah,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2432.231000" data-stop="2432.751000">it works.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2432.891000" data-stop="2435.934000">I just say, all right, my <code>load path</code> is here where</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2435.954000" data-stop="2437.155000">I've checked out your source code.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2438.276000" data-stop="2440.899000">It defines these commands. Then I can bind</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2440.979000" data-stop="2445.243000">your functions to my shortcuts.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2446.063000" data-stop="2450.467000">Although, because your functions are named the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2450.507000" data-stop="2455.151000">way that I would expect Emacs functions to be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2455.191000" data-stop="2457.634000">named, I've been defaliasing them so that I don't</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2457.754000" data-stop="2459.635000">accidentally say, oh yeah, that's totally built</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2459.736000" data-stop="2461.337000">in when it isn't.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2461.317000" data-stop="2465.481000"><strong class="speaker-name">Omar:</strong>  Yeah, I'm inconsistent with these</span> <span class="audio-time caption" data-speaker="Omar" data-start="2465.521000" data-stop="2467.464000">little packages in my <code>user-lisp</code> directory.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2468.244000" data-stop="2470.747000">In some of them, I do stick to the convention</span> <span class="audio-time caption" data-speaker="Omar" data-start="2470.807000" data-stop="2473.350000">that the package name is a prefix for all the</span> <span class="audio-time caption" data-speaker="Omar" data-start="2473.390000" data-stop="2474.491000">functions,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2474.511000" data-stop="2475.272000">and for some, I don't.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2475.312000" data-stop="2477.795000">For some, I just try to name them the way exactly</span> <span class="audio-time caption" data-speaker="Omar" data-start="2477.835000" data-stop="2478.215000">what you said.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2478.235000" data-stop="2479.857000">Like, what would these be called if they were</span> <span class="audio-time caption" data-speaker="Omar" data-start="2479.897000" data-stop="2480.778000">built into Emacs?</span> <span class="audio-time caption" data-speaker="Omar" data-start="2481.278000" data-stop="2483.521000">Which means they don't share a consistent prefix</span> <span class="audio-time caption" data-speaker="Omar" data-start="2483.621000" data-stop="2483.861000">often.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2484.362000" data-stop="2487.125000">I should probably make that more</span> <span class="audio-time caption" data-speaker="Omar" data-start="2487.225000" data-stop="2488.506000">consistently</span> <span class="audio-time caption" data-speaker="Omar" data-start="2488.486000" data-stop="2491.131000">use the package name as a prefix so that they're</span> <span class="audio-time caption" data-speaker="Omar" data-start="2491.371000" data-stop="2492.173000">easier to dot.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2493.014000" data-stop="2494.697000"><strong class="speaker-name">Sacha:</strong>  Or I have another suggestion.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2494.737000" data-stop="2499.105000">You could get <code>apply-kmacro-to-paragraph</code> or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2499.165000" data-stop="2501.589000">whatever that is into core Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2501.609000" data-stop="2502.651000">That would be great for everyone.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2504.254000" data-stop="2505.817000"><strong class="speaker-name">Omar:</strong>  Yeah, maybe that one is useful</span> <span class="audio-time caption" data-speaker="Omar" data-start="2505.857000" data-stop="2507.760000">enough.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2508.263000" data-stop="2510.526000">Some of these I don't use anymore because I think</span> <span class="audio-time caption" data-speaker="Omar" data-start="2510.546000" data-stop="2513.829000">I've substituted them with workflows with Embark.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2513.849000" data-stop="2515.771000">For example, <code>eval-region-advice</code>.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2515.791000" data-stop="2518.955000">It bothered me that none of the evaluate commands</span> <span class="audio-time caption" data-speaker="Omar" data-start="2519.335000" data-stop="2522.299000">are “do what you mean” in the most common sense in</span> <span class="audio-time caption" data-speaker="Omar" data-start="2522.359000" data-stop="2522.779000">Emacs.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2522.799000" data-stop="2524.942000">The most common sense of do what I mean in Emacs</span> <span class="audio-time caption" data-speaker="Omar" data-start="2525.002000" data-stop="2527.104000">is if the region is active, use the region.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2527.144000" data-stop="2528.846000">Otherwise, do the normal thing.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2529.567000" data-stop="2531.529000">All of the evaluate commands should evaluate</span> <span class="audio-time caption" data-speaker="Omar" data-start="2531.549000" data-stop="2532.791000">the region if the region is active.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2534.012000" data-stop="2536.735000">So that's what this does.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2536.715000" data-stop="2539.199000">But I don't use that anymore, because to evaluate</span> <span class="audio-time caption" data-speaker="Omar" data-start="2539.259000" data-stop="2545.409000">a region, I usually use <code>embark-act</code> <code>e</code>. What
else</span> <span class="audio-time caption" data-speaker="Omar" data-start="2545.549000" data-stop="2546.499000">is here?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2546.000000">42:26</span> <strong>find-file-at-point and directory names
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-43-06-133.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-43-06-133.jpg" alt="image from video 00:43:06.133" data-time="00:43:06.133"></a><span class="audio-time caption" data-speaker="Omar" data-start="2546.500000" data-stop="2548.574000"><strong class="speaker-name">Omar:</strong> Oh, some of these things are like tiny things</span> <span class="audio-time caption" data-speaker="Omar" data-start="2548.594000" data-stop="2551.379000">that are almost invisible, like this.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2552.441000" data-stop="2554.504000">In Eshell buffers,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2554.889000" data-stop="2559.778000">By default, <code>find-file-at-point</code> doesn’t realize</span> <span class="audio-time caption" data-speaker="Omar" data-start="2559.818000" data-stop="2565.107000">that if it sees the filename printed in an <code>eshell</code></span> <span class="audio-time caption" data-speaker="Omar" data-start="2565.147000" data-stop="2568.834000">buffer, it won't look at the prompt to figure out</span> <span class="audio-time caption" data-speaker="Omar" data-start="2568.894000" data-stop="2570.076000">what directory it came from.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2570.296000" data-stop="2571.919000">If you type <code>ls</code></span> <span class="audio-time caption" data-speaker="Omar" data-start="2572.000000" data-stop="2574.764000">and you're in your current working directory,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2574.784000" data-stop="2578.409000">all of those listed files, the <code>find-file-at-point</code></span> <span class="audio-time caption" data-speaker="Omar" data-start="2578.469000" data-stop="2581.714000">guesses that they are files in the default</span> <span class="audio-time caption" data-speaker="Omar" data-start="2581.754000" data-stop="2583.036000">directory, and that guess is correct.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2583.517000" data-stop="2586.100000">But if, further above, you had gone into a</span> <span class="audio-time caption" data-speaker="Omar" data-start="2586.120000" data-stop="2588.724000">different directory, called <code>ls</code> there,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2589.165000" data-stop="2591.829000">then those files are no longer in what is now the</span> <span class="audio-time caption" data-speaker="Omar" data-start="2591.889000" data-stop="2592.810000">default directory.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2592.790000" data-stop="2596.856000">So this just adds a little bit of smarts to</span> <span class="audio-time caption" data-speaker="Omar" data-start="2596.916000" data-stop="2597.898000"><code>find-file-at-point</code>.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2598.038000" data-stop="2599.981000">It looks at the prior prompt to see what</span> <span class="audio-time caption" data-speaker="Omar" data-start="2600.041000" data-stop="2603.567000">directory that was run in, and then tries to see</span> <span class="audio-time caption" data-speaker="Omar" data-start="2603.627000" data-stop="2605.810000">if the files it sees there are in that directory.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2606.151000" data-stop="2608.114000">Of course, the only reason I want this is</span> <span class="audio-time caption" data-speaker="Omar" data-start="2608.174000" data-stop="2611.279000">because I sometimes use <code>embark-act</code> on files I see</span> <span class="audio-time caption" data-speaker="Omar" data-start="2611.319000" data-stop="2612.841000">written in the Eshell buffer.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2613.665000" data-stop="2614.207000"><strong class="speaker-name">Sacha:</strong>  I love this.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2614.608000" data-stop="2617.097000">I love how all these little bits of code show</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2617.117000" data-stop="2620.288000">that at some point you were annoyed by a tiny,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2620.308000" data-stop="2622.555000">tiny problem and you're like, that's it,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2622.596000" data-stop="2623.980000">I'm just going to write some code and it's never</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2624.000000" data-stop="2629.199000">going to be a problem again.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2629.000000">43:49</span> <strong>The value of using Emacs’s APIs</strong></div><p></p><span class="audio-time caption" data-speaker="Omar" data-start="2629.200000" data-stop="2631.734000"><strong class="speaker-name">Omar:</strong>  One thing I like about this is it</span> <span class="audio-time caption" data-speaker="Omar" data-start="2631.774000" data-stop="2637.300000">also shows sticking to Emacs APIs.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2637.320000" data-stop="2639.983000">Embark uses <code>find-file-at-point</code> to guess what things</span> <span class="audio-time caption" data-speaker="Omar" data-start="2640.283000" data-stop="2641.865000">are referred to files.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2642.846000" data-stop="2645.589000">I did this to improve the functionality of Embark</span> <span class="audio-time caption" data-speaker="Omar" data-start="2645.849000" data-stop="2648.312000">in Eshell buffers, but what it really does is</span> <span class="audio-time caption" data-speaker="Omar" data-start="2648.392000" data-stop="2650.494000">improve the functionality of <code>find-file-at-point</code>,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2650.594000" data-stop="2651.996000">which I hardly ever use directly.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2652.056000" data-stop="2655.720000">I almost always use it through Embark.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2656.747000" data-stop="2661.778000"><strong class="speaker-name">Sacha:</strong>  Send it upstream!</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2662.920000" data-stop="2666.809000">Okay, so you use Emacs for working with a shell,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2666.829000" data-stop="2669.515000">working with your files, doing math, doing some</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2669.555000" data-stop="2670.537000">programming as well.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2671.038000" data-stop="2673.704000">Are there unexpected things that you use Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2673.764000" data-stop="2674.165000">for?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2675.360000" data-stop="2677.203000"><strong class="speaker-name">Omar:</strong>  I don't think so.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2679.167000" data-stop="2679.948000">Mostly I write.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2680.549000" data-stop="2682.633000">It's mostly writing prose.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2682.653000" data-stop="2687.541000">I think I was slightly misled about what a job in</span> <span class="audio-time caption" data-speaker="Omar" data-start="2687.601000" data-stop="2688.343000">academia is like.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2688.583000" data-stop="2689.805000">I mostly write emails.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2689.825000" data-stop="2696.839000">That's the bulk of my job by the time consumed.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2696.000000">44:56</span> <strong>org-ql and usual files
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-45-18-667.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-45-18-667.jpg" alt="image from video 00:45:18.667" data-time="00:45:18.667"></a><span class="audio-time caption" data-speaker="Sacha" data-start="2696.840000" data-stop="2698.175000"><strong class="speaker-name">Sacha:</strong>  You have some shortcuts around</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2699.217000" data-stop="2702.081000">org-ql for managing your agenda or other things.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2702.101000" data-stop="2707.029000"><strong class="speaker-name">Omar:</strong>  This notion of the usual files.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2707.189000" data-stop="2711.295000">I was often using org-ql to search this set of</span> <span class="audio-time caption" data-speaker="Omar" data-start="2711.335000" data-stop="2711.635000">files:</span> <span class="audio-time caption" data-speaker="Omar" data-start="2712.196000" data-stop="2715.661000">every file mentioned in a refile target,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2715.681000" data-stop="2717.564000">every file mentioned in a capture template,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2718.666000" data-stop="2723.473000">and every file agenda file.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2724.297000" data-stop="2724.978000">Here it is.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2725.739000" data-stop="2727.582000">So I thought that's what I want to search.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2727.622000" data-stop="2729.485000">I want to search every file I mentioned in a</span> <span class="audio-time caption" data-speaker="Omar" data-start="2729.525000" data-stop="2733.310000">refile target, every agenda file, and every file</span> <span class="audio-time caption" data-speaker="Omar" data-start="2733.350000" data-stop="2735.193000">that I mentioned in some template.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2736.054000" data-stop="2737.376000">That's what this does.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2738.618000" data-stop="2740.281000"><strong class="speaker-name">Sacha:</strong>  I don't know if you trust your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2742.244000" data-stop="2744.908000">hiding things enough for us to try that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2745.248000" data-stop="2746.810000">Since you put so much work into it...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2747.311000" data-stop="2749.434000">Or do you want me to hide the screen first and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2749.454000" data-stop="2751.317000">then you can let me know when it's safe to look?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2751.449000" data-stop="2752.191000"><strong class="speaker-name">Omar:</strong>  No, no, that's fine.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2752.571000" data-stop="2754.696000">I can show you the censorship process.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2754.716000" data-stop="2756.820000">What I thought I would do is I could show you</span> <span class="audio-time caption" data-speaker="Omar" data-start="2757.441000" data-stop="2760.267000">the... Wait, what is this?</span> <span class="audio-time caption" data-speaker="Omar" data-start="2760.287000" data-stop="2761.350000">Why is that not an action?</span> <span class="audio-time caption" data-speaker="Omar" data-start="2761.470000" data-stop="2762.031000">Oh, library.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2763.454000" data-stop="2764.797000">Oh, I have not loaded this.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2767.603000" data-stop="2768.725000">Yes, now it's loaded.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2769.126000" data-stop="2771.230000">Oh, so this should be...</span> <span class="audio-time caption" data-speaker="Omar" data-start="2772.188000" data-stop="2776.072000">Why is this not recognizing org-ql usual files as</span> <span class="audio-time caption" data-speaker="Omar" data-start="2776.092000" data-stop="2777.654000">a variable now that this is loaded?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2778.775000" data-stop="2779.115000"><strong class="speaker-name">Sacha:</strong>  Oh, great.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2779.656000" data-stop="2782.319000">I'm also open to debugging demonstrations live</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2782.399000" data-stop="2784.922000">because that is something that a lot of people do.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2784.942000" data-stop="2786.143000"><strong class="speaker-name">Omar:</strong>  Sorry, I think it just hadn't</span> <span class="audio-time caption" data-speaker="Omar" data-start="2786.203000" data-stop="2787.945000">loaded this file.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2787.965000" data-stop="2789.667000">Now I ran a command from here and now I</span> <span class="audio-time caption" data-speaker="Omar" data-start="2789.707000" data-stop="2790.508000">should have a variable.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2790.528000" data-stop="2791.649000">Yes, I have a variable.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2792.089000" data-stop="2793.451000">So we can go to Customize.</span> <p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-46-33-967.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-46-33-967.jpg" alt="image from video 00:46:33.967" data-time="00:46:33.967"></a><span class="audio-time caption" data-speaker="Omar" data-start="2793.971000" data-stop="2795.953000"><strong class="speaker-name">Omar:</strong> The ones that have sensitive information are</span> <span class="audio-time caption" data-speaker="Omar" data-start="2796.014000" data-stop="2800.238000">tasks, home, health,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2801.467000" data-stop="2802.208000">Definitely work.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2804.011000" data-stop="2804.933000">Journal.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2804.953000" data-stop="2806.536000">I don't really mind people seeing my journal, but</span> <span class="audio-time caption" data-speaker="Omar" data-start="2806.596000" data-stop="2807.117000">that's boring.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2808.179000" data-stop="2808.600000">There we go.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2808.940000" data-stop="2809.461000">Yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2809.561000" data-stop="2813.889000">So now I got rid of all of the sensitive files.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2813.949000" data-stop="2815.492000">And so now I can show you.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2816.013000" data-stop="2817.836000">I usually just search through all of these files</span> <span class="audio-time caption" data-speaker="Omar" data-start="2817.896000" data-stop="2818.176000">at once.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2821.182000" data-stop="2823.606000">So I had a list of things I wanted to tell you</span> <span class="audio-time caption" data-speaker="Omar" data-start="2823.646000" data-stop="2826.259000">about.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2826.000000">47:06</span> <strong>Shortcuts for org-ql search syntax</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2826.260000" data-stop="2827.596000"><strong class="speaker-name">Sacha:</strong>  I should also point out that your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2827.656000" data-stop="2830.780000">config has some stuff for inserting things into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2830.920000" data-stop="2833.623000">the org-ql search syntax.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2833.643000" data-stop="2835.185000"><strong class="speaker-name">Omar:</strong>  You're extremely prepared for this</span> <span class="audio-time caption" data-speaker="Omar" data-start="2835.665000" data-stop="2835.946000">chat.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2836.246000" data-stop="2841.512000">Yes, <code>C-,</code>has a little key map that will</span> <span class="audio-time caption" data-speaker="Omar" data-start="2841.572000" data-stop="2843.315000">insert stuff like priority.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2845.417000" data-stop="2847.960000">Oh, I don't have, let me remove “Sacha”.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2848.092000" data-stop="2850.497000">Oh, yes, everything that I have with priorities</span> <span class="audio-time caption" data-speaker="Omar" data-start="2850.557000" data-stop="2851.840000">is in one of the files I removed.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2851.900000" data-stop="2854.085000">I only use priorities for work.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2854.105000" data-stop="2854.827000"><strong class="speaker-name">Sacha:</strong>  Okay, gotcha.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2855.729000" data-stop="2863.399000"><strong class="speaker-name">Omar:</strong>  We could use to-dos.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2863.000000">47:43</span> <strong>Org TODO states: TODO, WAIT, DONE, NOPE
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-47-45-733.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-47-45-733.jpg" alt="image from video 00:47:45.733" data-time="00:47:45.733"></a><span class="audio-time caption" data-speaker="Sacha" data-start="2863.400000" data-stop="2865.651000"><strong class="speaker-name">Sacha:</strong>  I love that you have a to-do state</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2865.711000" data-stop="2866.793000">called NOPE.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2867.667000" data-stop="2869.009000"><strong class="speaker-name">Omar:</strong>  It's for things that are</span> <span class="audio-time caption" data-speaker="Omar" data-start="2869.049000" data-stop="2871.152000">cancelled, but I don't want to delete them yet.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2871.673000" data-stop="2875.038000">Actually, it's mainly there because when I</span> <span class="audio-time caption" data-speaker="Omar" data-start="2875.219000" data-stop="2877.402000">archive them, I want to know that I had that task</span> <span class="audio-time caption" data-speaker="Omar" data-start="2877.442000" data-stop="2879.786000">at some point, but decided not to do it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2879.806000" data-stop="2881.769000"><strong class="speaker-name">Sacha:</strong>  Well, it's so much less verbose than CANCELLED,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2881.949000" data-stop="2883.979000">so I think I might actually just...</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2883.980000" data-stop="2890.302000"><strong class="speaker-name">Omar:</strong>  For a long time, I was using monospace fonts, so I wanted to</span> <span class="audio-time caption" data-speaker="Omar" data-start="2890.542000" data-stop="2892.445000">have everything fit in four letters.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2893.106000" data-stop="2894.248000">So I have...</span> <span class="audio-time caption" data-speaker="Omar" data-start="2894.515000" data-stop="2898.994000">Yeah, all of my, I have TODO, WAIT, DONE, NOPE,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2899.255000" data-stop="2900.560000">and they're all four letters long.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2901.653000" data-stop="2902.414000"><strong class="speaker-name">Sacha:</strong>  Nope.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2902.434000" data-stop="2902.854000">Gotcha.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2902.974000" data-stop="2903.214000">Okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2903.234000" data-stop="2906.459000">So that's org-ql and that's your inserting thingy.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2906.000000">48:26</span> <strong>The inserter macro
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-48-36-667.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-48-36-667.jpg" alt="image from video 00:48:36.667" data-time="00:48:36.667"></a><span class="audio-time caption" data-speaker="Sacha" data-start="2906.460000" data-stop="2908.199000"><strong class="speaker-name">Sacha:</strong> The other thing that I wanted to point out</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2908.219000" data-stop="2910.221000">that your definition of the inserter was nice</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2910.241000" data-stop="2911.142000">because it's a macro.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2911.182000" data-stop="2913.043000">So you have this thing that allows you to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2913.063000" data-stop="2916.466000">just define all these interactive functions.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2916.506000" data-stop="2918.408000">You can add it to the key map because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2918.428000" data-stop="2920.370000">the key map expects interactive functions.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2921.010000" data-stop="2923.092000">If people are watching, yeah, this is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2923.132000" data-stop="2923.733000">something you can do.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2923.753000" data-stop="2927.356000"><strong class="speaker-name">Omar:</strong>  I should tell you that there was</span> <span class="audio-time caption" data-speaker="Omar" data-start="2927.696000" data-stop="2929.878000">actually a serious performance bug previously.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2929.918000" data-stop="2931.660000">What I had before this…</span> <span class="audio-time caption" data-speaker="Omar" data-start="2931.640000" data-stop="2936.190000">This string is a keyboard macro that inserts</span> <span class="audio-time caption" data-speaker="Omar" data-start="2936.651000" data-stop="2937.513000">those letters.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2938.996000" data-stop="2941.281000">It is extremely slow if you do it that way for</span> <span class="audio-time caption" data-speaker="Omar" data-start="2941.321000" data-stop="2941.822000">some reason.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2941.942000" data-stop="2945.490000">I think org-ql searches after the T, after the O,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2945.590000" data-stop="2947.995000">after the D, after the O, after the colon.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2948.212000" data-stop="2950.876000">For some reason, that was extremely slow.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2951.297000" data-stop="2956.265000">So I switched to these lambdas that just call</span> <span class="audio-time caption" data-speaker="Omar" data-start="2956.365000" data-stop="2956.805000">insert.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2957.126000" data-stop="2960.351000">That does it in a single step, and it's</span> <span class="audio-time caption" data-speaker="Omar" data-start="2960.391000" data-stop="2961.012000">instantaneous.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2961.613000" data-stop="2963.937000">But my first instinct was, oh, well, this is a</span> <span class="audio-time caption" data-speaker="Omar" data-start="2963.977000" data-stop="2965.099000">good use of keyboard macros.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2965.119000" data-stop="2966.881000">I'll just assign these to keyboard macros.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2967.082000" data-stop="2969.445000">It's not a good idea in this</span> <span class="audio-time caption" data-speaker="Omar" data-start="2969.505000" data-stop="2970.227000">particular case.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2972.798000" data-stop="2974.761000"><strong class="speaker-name">Sacha:</strong>  I imagine there should be some kind</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2974.801000" data-stop="2977.525000">of debouncing on org-ql to make it not do that if</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2977.545000" data-stop="2980.450000">you're typing very quickly, but... I don't think</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2980.490000" data-stop="2980.810000">there is.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2980.890000" data-stop="2983.054000"><strong class="speaker-name">Omar:</strong>  Let me see if... Maybe also do a</span> <span class="audio-time caption" data-speaker="Omar" data-start="2983.094000" data-stop="2983.995000">longer one so it...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2986.779000" data-stop="2987.340000"><strong class="speaker-name">Sacha:</strong>  That's okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2987.360000" data-stop="2989.804000">I take your word for the bug that you ran into.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2991.467000" data-stop="2992.769000"><strong class="speaker-name">Omar:</strong>  I wanted to show you just because</span> <span class="audio-time caption" data-speaker="Omar" data-start="2992.789000" data-stop="2995.813000">it just feels like a really long pause, but it</span> <span class="audio-time caption" data-speaker="Omar" data-start="2995.853000" data-stop="2997.416000">didn't work right now and I don't know why not.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2998.077000" data-stop="2998.838000">That's okay.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2999.259000" data-stop="3000.240000"><strong class="speaker-name">Sacha:</strong>  Curse of the live demo.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3003.157000" data-stop="3004.218000">So that's inserter.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3005.000000">50:05</span> <strong>luggage: generative art experiments
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-51-32-367.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-51-32-367.jpg" alt="image from video 00:51:32.367" data-time="00:51:32.367"></a><span class="audio-time caption" data-speaker="Sacha" data-start="3005.760000" data-stop="3007.302000"><strong class="speaker-name">Sacha:</strong> One thing that I definitely want to make sure we</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3007.342000" data-stop="3011.547000">had time for was your little generative art</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3011.607000" data-stop="3013.089000">experiment, <code>luggage</code>,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3014.150000" data-stop="3015.412000">because you're having fun with Emacs.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3017.114000" data-stop="3017.394000"><strong class="speaker-name">Omar:</strong>  Yes.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3017.654000" data-stop="3018.155000">Yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3018.876000" data-stop="3022.180000">There are some people doing amazing generative...</span> <span class="audio-time caption" data-speaker="Omar" data-start="3022.200000" data-stop="3022.640000">Oh my gosh.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3022.780000" data-stop="3024.202000">I do not even have it installed.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3025.083000" data-stop="3025.323000">Yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3027.246000" data-stop="3028.287000">Let's...</span> <span class="audio-time caption" data-speaker="Omar" data-start="3029.060000" data-stop="3031.424000">I forgot that we were going to do that.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3031.945000" data-stop="3032.365000">That's okay.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3032.506000" data-stop="3033.487000">But it should be easy.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3034.449000" data-stop="3035.611000">How is <code>:vc</code> used?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3036.332000" data-stop="3037.234000"><strong class="speaker-name">Sacha:</strong>  <code>(:vc (:url …))</code>.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3039.237000" data-stop="3041.380000"><strong class="speaker-name">Omar:</strong>  I have to go to a previous example</span> <span class="audio-time caption" data-speaker="Omar" data-start="3041.421000" data-stop="3041.921000">to figure out.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3044.265000" data-stop="3045.888000"><strong class="speaker-name">Sacha:</strong>  I'm surprised you don't have a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3045.948000" data-stop="3048.492000"><code>consult-line</code> and then just
<code>embark-insert</code>.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3049.494000" data-stop="3050.395000"><strong class="speaker-name">Omar:</strong>  I do that.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3050.436000" data-stop="3052.098000">I do that a lot.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3052.118000" data-stop="3053.160000">But I forgot this time.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3053.258000" data-stop="3055.081000"><strong class="speaker-name">Sacha:</strong>  Actually, looking at your config, I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3055.141000" data-stop="3057.605000">learned about <code>consult-multi-occur</code> because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3058.447000" data-stop="3061.171000">apparently there all these multi-buffer equivalents to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3061.192000" data-stop="3062.494000">the commands that I've been using.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3063.015000" data-stop="3065.739000">That is really useful for using stuff</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3065.779000" data-stop="3067.502000">from buffers I'm not even looking at.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3070.808000" data-stop="3071.529000"><strong class="speaker-name">Omar:</strong>  Okay, load it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3072.531000" data-stop="3073.653000"><strong class="speaker-name">Sacha:</strong>  Let's see if it actually can still</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3073.693000" data-stop="3074.514000">do the thing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3076.417000" data-stop="3077.359000">There we go.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3079.533000" data-stop="3083.258000">So you have some Emacs Lisp to generate this SVG.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3084.119000" data-stop="3086.482000">Yeah, and it's just got...</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3087.123000" data-stop="3089.005000"><strong class="speaker-name">Omar:</strong>  And which other ones do I have?</span> <span class="audio-time caption" data-speaker="Omar" data-start="3090.627000" data-stop="3091.048000">Luggage.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3091.108000" data-stop="3091.609000">There we go.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3092.750000" data-stop="3094.172000">Tubes.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3098.998000" data-stop="3102.783000">I think this one has some nice</span> <span class="audio-time caption" data-speaker="Omar" data-start="3102.903000" data-stop="3106.688000">other color schemes.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3108.743000" data-stop="3109.729000">Classic?</span> <span class="audio-time caption" data-speaker="Omar" data-start="3110.212000" data-stop="3111.620000">Classic is the one.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3111.942000" data-stop="3115.463000">Oh yeah, stained glasses is the one I wanted.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3118.227000" data-stop="3119.589000"><strong class="speaker-name">Sacha:</strong>  Nice.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3120.791000" data-stop="3122.694000">I wanted to mention it specifically because a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3122.734000" data-stop="3125.218000">lot of times people think, oh, Emacs is a text</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3125.318000" data-stop="3126.340000">editor.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3126.360000" data-stop="3129.024000">But because it's also got support for SVG and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3129.064000" data-stop="3131.307000">other types of graphics, you can play around with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3131.387000" data-stop="3131.488000">it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3131.528000" data-stop="3133.551000">Sometimes it's just doing it for fun like</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3133.591000" data-stop="3135.934000">this, but also there might be some other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3135.975000" data-stop="3138.879000">visualizations that you can do with Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3138.899000" data-stop="3141.643000">That is actually pretty interesting.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3141.663000" data-stop="3141.884000"><strong class="speaker-name">Omar:</strong>  Yeah.</span> <p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-52-26-800.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-52-26-800.jpg" alt="image from video 00:52:26.800" data-time="00:52:26.800"></a><span class="audio-time caption" data-speaker="Omar" data-start="3141.904000" data-stop="3143.686000"><strong class="speaker-name">Omar:</strong> Have you heard of this program?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3145.109000" data-stop="3146.631000"><strong class="speaker-name">Sacha:</strong>  No, I haven't come across it.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3146.797000" data-stop="3148.419000"><strong class="speaker-name">Omar:</strong>  There's an entire book with this title.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3148.699000" data-stop="3150.882000">So it's a single line of BASIC.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3150.902000" data-stop="3154.086000">10 print.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3154.106000" data-stop="3156.469000">Oh, I'm not, I don't know BASIC, but the idea is</span> <span class="audio-time caption" data-speaker="Omar" data-start="3156.509000" data-stop="3159.973000">like you randomly pick either forward slash or</span> <span class="audio-time caption" data-speaker="Omar" data-start="3160.073000" data-stop="3160.634000">backslash.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3161.374000" data-stop="3162.816000"><strong class="speaker-name">Sacha:</strong>  Oh, yeah, yeah, that makes sense</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3162.936000" data-stop="3163.076000">now.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3165.319000" data-stop="3167.782000"><strong class="speaker-name">Omar:</strong>  I'm sure this is not correct BASIC,</span> <span class="audio-time caption" data-speaker="Omar" data-start="3168.143000" data-stop="3169.024000">but, you know, something like that.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3169.064000" data-stop="3171.066000">Yeah, I get the idea.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3171.518000" data-stop="3172.520000">Yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3172.720000" data-stop="3174.022000">And that's what this does.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3174.062000" data-stop="3174.663000">And then you GOTO 10.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3174.683000" data-stop="3175.544000">It's like...</span> <span class="audio-time caption" data-speaker="Omar" data-start="3177.047000" data-stop="3179.290000">It makes these elaborate mazes.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3179.431000" data-stop="3181.173000">It's an extremely simple program.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3181.895000" data-stop="3183.137000"><strong class="speaker-name">Sacha:</strong>  So this is the kind of stuff you do</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3183.177000" data-stop="3183.557000">for fun.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3184.178000" data-stop="3185.941000">I mean, you probably do lots of other things for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3185.981000" data-stop="3186.382000">fun, too.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3187.784000" data-stop="3188.205000"><strong class="speaker-name">Omar:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3188.225000" data-stop="3192.311000">But this... No, that's not the buffer I wanted.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3192.331000" data-stop="3193.914000">Where is... Did I kill it?</span> <span class="audio-time caption" data-speaker="Omar" data-start="3194.034000" data-stop="3195.957000">I killed it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3197.692000" data-stop="3200.261000">Yeah, one of these I did.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3200.723000" data-stop="3201.205000">What is it?</span> <span class="audio-time caption" data-speaker="Omar" data-start="3201.225000" data-stop="3201.707000">Dominoes.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3201.727000" data-stop="3203.794000">Yeah, this I did for a math talk I gave.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3204.156000" data-stop="3206.725000">It just produces random domino tilings of the</span> <span class="audio-time caption" data-speaker="Omar" data-start="3206.785000" data-stop="3208.090000">board.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3208.829000" data-stop="3213.737000">I gave that talk from an Org file using Prot’s</span> <span class="audio-time caption" data-speaker="Omar" data-start="3215.420000" data-stop="3216.242000">Logos package.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3216.963000" data-stop="3220.950000">I usually use PDF slides, but</span> <span class="audio-time caption" data-speaker="Omar" data-start="3220.990000" data-stop="3222.813000">that time I wanted to use an Org mode buffer</span> <span class="audio-time caption" data-speaker="Omar" data-start="3222.833000" data-stop="3224.636000">because I was going to run code on the computer.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3225.237000" data-stop="3228.002000">Like this, for example, generating random domino</span> <span class="audio-time caption" data-speaker="Omar" data-start="3228.022000" data-stop="3228.863000">tilings.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3229.000000">53:49</span> <strong>Teaching and Emacs</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3229.383000" data-stop="3230.805000"><strong class="speaker-name">Sacha:</strong>  So you've given a number of talks.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3230.866000" data-stop="3232.168000">Do you also teach any courses?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3233.310000" data-stop="3237.757000"><strong class="speaker-name">Omar:</strong>  Yeah, I do teach both undergraduate</span> <span class="audio-time caption" data-speaker="Omar" data-start="3237.797000" data-stop="3239.841000">and graduate math courses.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3240.001000" data-stop="3241.684000">Recently, mostly graduate math courses.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3242.265000" data-stop="3244.349000">But yeah, I really like teaching.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3244.509000" data-stop="3245.631000">You always learn something.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3245.671000" data-stop="3247.534000">Even the subjects that you think you know very</span> <span class="audio-time caption" data-speaker="Omar" data-start="3247.574000" data-stop="3249.838000">well, teaching a course always teaches you</span> <span class="audio-time caption" data-speaker="Omar" data-start="3249.958000" data-stop="3250.459000">something new.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3251.801000" data-stop="3253.905000"><strong class="speaker-name">Sacha:</strong>  Have you gotten students into Emacs?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3254.982000" data-stop="3256.366000"><strong class="speaker-name">Omar:</strong>  No, I don't even try.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3256.606000" data-stop="3260.698000">“I use this weird text editor Emacs, it's</span> <span class="audio-time caption" data-speaker="Omar" data-start="3260.818000" data-stop="3262.763000">pretty cool, but it takes a while to learn.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3263.205000" data-stop="3264.909000">I'm not recommending it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3265.651000" data-stop="3266.112000">I love it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3266.253000" data-stop="3268.519000">If you do try to use it, you can ask me anything.”</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3270.473000" data-stop="3272.656000"><strong class="speaker-name">Sacha:</strong>  Yeah, it's pretty hard.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3272.716000" data-stop="3275.100000">I know some professors are like, okay, this is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3275.140000" data-stop="3277.183000">what we're going to use for the course.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3277.243000" data-stop="3279.627000">But I imagine, depending on your subject matter,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3279.667000" data-stop="3281.369000">you might already have your hands full teaching</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3281.389000" data-stop="3283.332000">the subject matter rather than adding it.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3283.352000" data-stop="3284.213000"><strong class="speaker-name">Omar:</strong>  Oh, yeah, yeah, definitely.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3284.293000" data-stop="3284.614000">No, no.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3285.315000" data-stop="3287.478000">The students I try to talk to Emacs about are</span> <span class="audio-time caption" data-speaker="Omar" data-start="3287.498000" data-stop="3289.601000">like the students that are writing their thesis</span> <span class="audio-time caption" data-speaker="Omar" data-start="3289.641000" data-stop="3291.064000">with me.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3291.084000" data-stop="3292.065000">No, never in a course.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3292.185000" data-stop="3292.906000">I never mention it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3293.000000">54:53</span> <strong>The print10 generator
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-54-56-900.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-54-56-900.jpg" alt="image from video 00:54:56.900" data-time="00:54:56.900"></a><span class="audio-time caption" data-speaker="Omar" data-start="3293.187000" data-stop="3293.888000"><strong class="speaker-name">Omar:</strong> Oh, there it is.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3293.968000" data-stop="3296.812000">In the docstring, I have the correct program in</span> <span class="audio-time caption" data-speaker="Omar" data-start="3296.872000" data-stop="3297.493000">BASIC.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3298.385000" data-stop="3302.453000">The backslash and the forward slash are</span> <span class="audio-time caption" data-speaker="Omar" data-start="3302.553000" data-stop="3304.096000">consecutive ASCII characters.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3304.176000" data-stop="3310.467000">206 and 207.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3311.008000" data-stop="3314.415000">You add a random number between 0 and 1 to</span> <span class="audio-time caption" data-speaker="Omar" data-start="3314.455000" data-stop="3316.258000">this one and then round to the nearest integer.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3316.508000" data-stop="3318.631000"><strong class="speaker-name">Sacha:</strong>  All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3318.751000" data-stop="3320.874000">You can get surprisingly interesting patterns</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3320.994000" data-stop="3321.455000">out of it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3322.997000" data-stop="3325.381000">That is also very cool.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3326.282000" data-stop="3327.884000">Fun with Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3328.485000" data-stop="3331.670000">This could definitely be like a zone screensaver</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3332.331000" data-stop="3333.212000">if you wanted to.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3334.474000" data-stop="3334.975000"><strong class="speaker-name">Omar:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3335.295000" data-stop="3338.219000">I just thought it was really nice that Emacs</span> <span class="audio-time caption" data-speaker="Omar" data-start="3338.279000" data-stop="3339.641000">displays SVGs natively.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3339.661000" data-stop="3342.145000">Those are very easy to generate by text.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3342.547000" data-stop="3346.311000"><strong class="speaker-name">Sacha:</strong>  Are there other interesting corners</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3346.411000" data-stop="3349.014000">of your config that might not be immediately</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3349.134000" data-stop="3350.936000">obvious to people who are just reading the source</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3350.996000" data-stop="3351.957000">code?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3351.977000" data-stop="3353.859000">What other workflow things are nice for you?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3359.264000" data-stop="3362.828000"><strong class="speaker-name">Omar:</strong>  Sorry, what were you saying?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3362.908000" data-stop="3365.551000"><strong class="speaker-name">Sacha:</strong>  I can also start just occurring</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3365.591000" data-stop="3368.474000">through my config for all the things that I've</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3368.534000" data-stop="3371.457000">stolen from your config in the last two days.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3372.095000" data-stop="3377.804000"><strong class="speaker-name">Omar:</strong>  I don't think I have any concrete</span> <span class="audio-time caption" data-speaker="Omar" data-start="3377.864000" data-stop="3380.428000">idea of what to show now.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3380.448000" data-stop="3383.599000">I think we've covered most of the ones I wanted.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3383.000000">56:23</span> <strong>arXiv
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-57-42-967.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-57-42-967.jpg" alt="image from video 00:57:42.967" data-time="00:57:42.967"></a><span class="audio-time caption" data-speaker="Omar" data-start="3383.600000" data-stop="3386.598000"><strong class="speaker-name">Omar:</strong> As an academic, I deal a lot with preprints on</span> <span class="audio-time caption" data-speaker="Omar" data-start="3386.618000" data-stop="3388.681000">the arXiv, so I have a little library that will</span> <span class="audio-time caption" data-speaker="Omar" data-start="3390.584000" data-stop="3393.208000">show me the PDF or copy the URL.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3393.661000" data-stop="3398.387000">I like personalized software because it does</span> <span class="audio-time caption" data-speaker="Omar" data-start="3398.447000" data-stop="3399.769000">exactly what you needed to do.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3400.229000" data-stop="3402.693000">I noticed that there were a bunch of tags on</span> <span class="audio-time caption" data-speaker="Omar" data-start="3402.773000" data-stop="3406.438000">Mastodon that related to archive papers.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3406.738000" data-stop="3409.782000">Often when I was in a Mastodon buffer, I wanted to</span> <span class="audio-time caption" data-speaker="Omar" data-start="3410.122000" data-stop="3412.846000">do something to the paper mentioned at point.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3413.166000" data-stop="3414.888000">That's one of the acceptable inputs for my</span> <span class="audio-time caption" data-speaker="Omar" data-start="3415.709000" data-stop="3430.419000">arXiv library.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3430.420000" data-stop="3432.843000">So, for example, this is an arXiv link and I</span> <span class="audio-time caption" data-speaker="Omar" data-start="3432.883000" data-stop="3456.419000">can ask it to show me.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3456.420000" data-stop="3457.258000">So that's a bug.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3457.298000" data-stop="3460.742000">This should definitely have <code>visual-line-mode</code></span> <span class="audio-time caption" data-speaker="Omar" data-start="3461.003000" data-stop="3461.303000">activated.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3462.965000" data-stop="3465.348000">I can just quickly read the</span> <span class="audio-time caption" data-speaker="Omar" data-start="3465.449000" data-stop="3467.832000">abstract without visiting the archive website.</span> <p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-57-51-200.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-57-51-200.jpg" alt="image from video 00:57:51.200" data-time="00:57:51.200"></a><span class="audio-time caption" data-speaker="Omar" data-start="3468.793000" data-stop="3472.798000"><strong class="speaker-name">Omar:</strong> Or I can open the PDF.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3473.158000" data-stop="3473.699000"><strong class="speaker-name">Sacha:</strong>  Very cool.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3473.939000" data-stop="3474.821000">Very convenient.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3477.850000" data-stop="3478.833000"><strong class="speaker-name">Omar:</strong>  Yeah, so.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3480.162000" data-stop="3481.864000">I like that in Emacs you can do all these</span> <span class="audio-time caption" data-speaker="Omar" data-start="3482.224000" data-stop="3484.446000">personal things that you'll need but are not</span> <span class="audio-time caption" data-speaker="Omar" data-start="3484.506000" data-stop="3486.708000">likely to be needed by many people.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3486.768000" data-stop="3488.269000">They're just easy to do.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3488.430000" data-stop="3491.212000">Vim is also very configurable, but the Vim script</span> <span class="audio-time caption" data-speaker="Omar" data-start="3491.252000" data-stop="3494.655000">language is sort of awkward, so I never did</span> <span class="audio-time caption" data-speaker="Omar" data-start="3495.156000" data-stop="3497.198000">anywhere close to the amount of configuration in</span> <span class="audio-time caption" data-speaker="Omar" data-start="3497.558000" data-stop="3498.719000">Vim that I do in Emacs.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3503.263000" data-stop="3505.665000">That's why I would never</span> <span class="audio-time caption" data-speaker="Omar" data-start="3505.726000" data-stop="3506.526000">go back to Vim now.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3506.546000" data-stop="3508.448000">I would miss all the stuff I've written.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3509.000000">58:29</span> <strong>Toggle keymap
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-59-06-133.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-59-06-133.jpg" alt="image from video 00:59:06.133" data-time="00:59:06.133"></a><span class="audio-time caption" data-speaker="Sacha" data-start="3509.103000" data-stop="3510.727000"><strong class="speaker-name">Sacha:</strong>  One of the little personal</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3510.767000" data-stop="3513.234000">customizations that I liked reading in your config</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3513.294000" data-stop="3515.179000">was the fact that you have a key map just for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3515.239000" data-stop="3518.527000">toggling various things like the mode line or the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3518.607000" data-stop="3519.149000">header, you know?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3519.449000" data-stop="3519.690000">Yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3519.710000" data-stop="3523.660000">You want to tell us more about your awesome</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3523.720000" data-stop="3525.525000">key map for that?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3526.163000" data-stop="3530.210000"><strong class="speaker-name">Omar:</strong>  You don't need them that often, so</span> <span class="audio-time caption" data-speaker="Omar" data-start="3530.270000" data-stop="3532.253000">it's OK if it's under a long prefix.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3532.613000" data-stop="3534.416000">It's just tedious when you want one of them,</span> <span class="audio-time caption" data-speaker="Omar" data-start="3534.456000" data-stop="3536.319000">to have to type the command name.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3536.900000" data-stop="3541.708000">It also helps me remember which things I</span> <span class="audio-time caption" data-speaker="Omar" data-start="3541.888000" data-stop="3542.730000">commonly toggle.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3542.790000" data-stop="3546.015000">I often have to hit <code>C-h</code> here and see what I</span> <span class="audio-time caption" data-speaker="Omar" data-start="3546.075000" data-stop="3548.264000">have available to toggle.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3549.625000" data-stop="3555.070000">I don't know why toggle is a category for</span> <span class="audio-time caption" data-speaker="Omar" data-start="3555.371000" data-stop="3557.032000">commands, because obviously these are very</span> <span class="audio-time caption" data-speaker="Omar" data-start="3557.132000" data-stop="3559.114000">disparate commands that do very different things.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3559.134000" data-stop="3561.556000">But they're things that you occasionally turn on</span> <span class="audio-time caption" data-speaker="Omar" data-start="3561.617000" data-stop="3564.499000">or off, and it's convenient to have them all</span> <span class="audio-time caption" data-speaker="Omar" data-start="3564.519000" data-stop="3564.840000">together.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3565.320000" data-stop="3567.762000">Choosing the letters here was very difficult.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3568.743000" data-stop="3570.445000">Everybody wanted to have the same letters.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3571.566000" data-stop="3573.788000">L was for visual lines.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3573.768000" data-stop="3577.772000">P for variable pitch mode because I think of them</span> <span class="audio-time caption" data-speaker="Omar" data-start="3577.832000" data-stop="3578.873000">as proportional fonts.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3580.594000" data-stop="3581.996000">It took a lot of tweaking.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3582.016000" data-stop="3585.859000">I'm sure if I looked through the GitHub history,</span> <span class="audio-time caption" data-speaker="Omar" data-start="3585.879000" data-stop="3588.782000">you'd see a lot of tiny changes just changing the</span> <span class="audio-time caption" data-speaker="Omar" data-start="3588.822000" data-stop="3591.645000">binding of one of these.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3591.665000" data-stop="3593.547000"><strong class="speaker-name">Sacha:</strong>  I find it difficult to get the hang</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3593.587000" data-stop="3596.109000">of new key bindings, especially for things that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3596.129000" data-stop="3598.351000">I'm not using often enough for the key bindings</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3598.391000" data-stop="3599.833000">to stick.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3599.953000" data-stop="3601.294000"><strong class="speaker-name">Omar:</strong>  I often forget that I have a key</span> <span class="audio-time caption" data-speaker="Omar" data-start="3601.334000" data-stop="3602.475000">binding for something.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3603.687000" data-stop="3605.009000"><strong class="speaker-name">Sacha:</strong>  So how do you deal with that?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3605.129000" data-stop="3607.072000">I mean, yes, you stick it in an Embark keymap and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3607.092000" data-stop="3608.455000">you just bring it up to the target.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3609.637000" data-stop="3616.247000"><strong class="speaker-name">Omar:</strong>  Yeah, I do use Embark bindings in</span> <span class="audio-time caption" data-speaker="Omar" data-start="3616.267000" data-stop="3620.093000">keymap a lot to just explore keymaps and remind</span> <span class="audio-time caption" data-speaker="Omar" data-start="3620.134000" data-stop="3623.379000">myself. I don't need to memorize a</span> <span class="audio-time caption" data-speaker="Omar" data-start="3623.419000" data-stop="3623.699000">binding.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3623.719000" data-stop="3625.743000">I just need to remember that I have a binding.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3626.464000" data-stop="3628.247000">If I have a binding, I can find it later.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3628.307000" data-stop="3629.809000">But sometimes I don't remember that I have a</span> <span class="audio-time caption" data-speaker="Omar" data-start="3629.849000" data-stop="3631.011000">binding,</span> <span class="audio-time caption" data-speaker="Omar" data-start="3631.413000" data-stop="3635.740000">so when I'm looking at my configuration, I'll</span> <span class="audio-time caption" data-speaker="Omar" data-start="3635.760000" data-stop="3638.385000">just re-scan what things I have bound from time</span> <span class="audio-time caption" data-speaker="Omar" data-start="3638.425000" data-stop="3638.725000">to time.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3639.347000" data-stop="3644.095000">Mostly I stick with just… I know under</span> <span class="audio-time caption" data-speaker="Omar" data-start="3644.195000" data-stop="3647.601000">what the start of the prefix is, and then I'll</span> <span class="audio-time caption" data-speaker="Omar" data-start="3647.621000" data-stop="3649.804000">just use Embark to remind me of what I have there.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3650.485000" data-stop="3653.691000">Which is nice, because you can also see the docstrings.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3654.000000">1:00:54</span> <strong>isearch-delete-wrong
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-01-01-32-267.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-01-01-32-267.jpg" alt="image from video 01:01:32.267" data-time="01:01:32.267"></a><span class="audio-time caption" data-speaker="Sacha" data-start="3654.970000" data-stop="3658.619000"><strong class="speaker-name">Sacha:</strong>  I like how you try to use some</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3658.819000" data-stop="3661.345000">of the conventions to make it somewhat easier to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3661.385000" data-stop="3661.766000">remember.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3662.127000" data-stop="3664.011000">One of the key bindings that you have that I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3664.071000" data-stop="3666.317000">want to point out, because I think it's a useful</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3666.397000" data-stop="3669.424000">technique, is you have an <code>isearch-delete-wrong</code>.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3671.048000" data-stop="3676.078000"><strong class="speaker-name">Omar:</strong>  Right.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3676.919000" data-stop="3681.745000">isearch keeps track of where the last portion</span> <span class="audio-time caption" data-speaker="Omar" data-start="3681.805000" data-stop="3683.888000">of the search string that matched is.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3684.368000" data-stop="3686.611000">You can see it highlighted in the buffer,</span> <span class="audio-time caption" data-speaker="Omar" data-start="3686.631000" data-stop="3686.831000">right?</span> <span class="audio-time caption" data-speaker="Omar" data-start="3687.452000" data-stop="3691.838000">So this means it found up to “del”, and then it</span> <span class="audio-time caption" data-speaker="Omar" data-start="3691.898000" data-stop="3693.620000">didn't find "tok".</span> <span class="audio-time caption" data-speaker="Omar" data-start="3693.640000" data-stop="3695.762000"><code>isearch-delete-wrong</code> will just delete that entire</span> <span class="audio-time caption" data-speaker="Omar" data-start="3695.802000" data-stop="3696.283000">part.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3698.474000" data-stop="3700.076000"><strong class="speaker-name">Sacha:</strong>  So that way, you can just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3700.156000" data-stop="3702.378000">restart from what actually exists.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3702.959000" data-stop="3705.222000">Combining that with the fact that you've got</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3705.262000" data-stop="3710.608000">your search whitespace regular expression to be a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3710.728000" data-stop="3712.239000">wildcard means you can...</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3712.240000" data-stop="3714.032000"><strong class="speaker-name">Omar:</strong>  Oh yes, this I stole from Prot.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3714.692000" data-stop="3716.434000">He recommends this.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3716.454000" data-stop="3718.437000"><strong class="speaker-name">Sacha:</strong>  Yeah, which means you can use</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3718.477000" data-stop="3720.439000">isearch to find things, even if there's other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3720.479000" data-stop="3721.400000">stuff in between them.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3721.720000" data-stop="3723.382000">When you can't find something, you can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3723.402000" data-stop="3723.823000">restart.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3724.884000" data-stop="3725.865000"><strong class="speaker-name">Omar:</strong>  I'm not sure...</span> <span class="audio-time caption" data-speaker="Omar" data-start="3726.183000" data-stop="3729.588000">I'm not sure if this is the best setting.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3729.689000" data-stop="3733.294000">I want to be able to search this way sometimes,</span> <span class="audio-time caption" data-speaker="Omar" data-start="3733.354000" data-stop="3736.279000">and sometimes with whitespaces treated literally,</span> <span class="audio-time caption" data-speaker="Omar" data-start="3736.499000" data-stop="3738.603000">so I should keep statistics on how often I</span> <span class="audio-time caption" data-speaker="Omar" data-start="3738.663000" data-stop="3739.745000">actually have to turn this off.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3739.785000" data-stop="3741.908000">It might be that for me the better default is the</span> <span class="audio-time caption" data-speaker="Omar" data-start="3741.948000" data-stop="3742.589000">other way around.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3745.133000" data-stop="3747.437000">You can turn it off with <code>M-s SPC</code>.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3747.898000" data-stop="3749.620000">Match spaces literally.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3751.023000" data-stop="3753.827000"><code>isearch-toggle-lax-whitespace</code>.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3754.870000" data-stop="3756.592000">I don't know.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3756.632000" data-stop="3760.277000">Maybe for me the default would be to treat</span> <span class="audio-time caption" data-speaker="Omar" data-start="3760.778000" data-stop="3764.142000">whitespace literally, because I find that if I</span> <span class="audio-time caption" data-speaker="Omar" data-start="3764.182000" data-stop="3768.488000">have a space in my search string, I often want to</span> <span class="audio-time caption" data-speaker="Omar" data-start="3768.528000" data-stop="3769.950000">turn on the literal matching.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3770.450000" data-stop="3772.052000">But it's probably still this is the better</span> <span class="audio-time caption" data-speaker="Omar" data-start="3772.072000" data-stop="3772.353000">default.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3772.373000" data-stop="3774.275000">I think I do it less than half of the time I have</span> <span class="audio-time caption" data-speaker="Omar" data-start="3774.295000" data-stop="3774.696000">a space.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3775.257000" data-stop="3777.880000">But it's not that far from half, it feels.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3778.200000" data-stop="3780.203000">I don't have statistics.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3782.630000" data-stop="3784.296000"><strong class="speaker-name">Sacha:</strong>  How do you even collect statistics</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3784.396000" data-stop="3784.938000">on this?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3784.958000" data-stop="3786.864000">Aside from making a little note every time you're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3786.884000" data-stop="3787.888000">like, oh, I didn't like this.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3788.731000" data-stop="3791.139000"><strong class="speaker-name">Omar:</strong>  I mean, I would instrument isearch</span> <span class="audio-time caption" data-speaker="Omar" data-start="3791.199000" data-stop="3793.045000">somehow, but I haven't thought about that problem.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3794.000000">1:03:14</span> <strong>isearch - continue from the beginning of the match
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-01-03-44-400.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-01-03-44-400.jpg" alt="image from video 01:03:44.400" data-time="01:03:44.400"></a><span class="audio-time caption" data-speaker="Omar" data-start="3794.105000" data-stop="3797.269000"><strong class="speaker-name">Omar:</strong> One nice thing I do with isearch is another one</span> <span class="audio-time caption" data-speaker="Omar" data-start="3797.309000" data-stop="3798.591000">of those things I got from Vim.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3799.792000" data-stop="3802.456000">isearch, by default, leaves you at the end of the</span> <span class="audio-time caption" data-speaker="Omar" data-start="3802.496000" data-stop="3802.776000">match.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3803.116000" data-stop="3805.439000">I almost always want to be at the beginning</span> <span class="audio-time caption" data-speaker="Omar" data-start="3805.499000" data-stop="3807.041000">of the match, because that's what I got used to</span> <span class="audio-time caption" data-speaker="Omar" data-start="3807.081000" data-stop="3807.402000">in Vim.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3808.083000" data-stop="3810.806000">I think it must be here.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3811.127000" data-stop="3812.689000">I have something exit at start.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3813.790000" data-stop="3817.895000">I tell isearch to exit at the beginning of the</span> <span class="audio-time caption" data-speaker="Omar" data-start="3817.955000" data-stop="3818.236000">match.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3818.476000" data-stop="3821.139000">The way you use this is you install it as a</span> <span class="audio-time caption" data-speaker="Omar" data-start="3821.259000" data-stop="3823.302000">hook, I believe.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3824.395000" data-stop="3825.196000">Is that right?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3826.578000" data-stop="3827.759000"><strong class="speaker-name">Sacha:</strong>  You seem to have options.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3828.160000" data-stop="3828.360000"><strong class="speaker-name">Omar:</strong>  Yes.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3829.321000" data-stop="3829.681000"><strong class="speaker-name">Sacha:</strong>  I see.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3829.762000" data-stop="3832.665000">So S-RET lets you exit at the end, and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3832.705000" data-stop="3834.708000">then by default... Yeah, which is Emacs default.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3834.988000" data-stop="3837.811000"><strong class="speaker-name">Omar:</strong>  But I find that the better default</span> <span class="audio-time caption" data-speaker="Omar" data-start="3837.872000" data-stop="3838.953000">is to exit at the beginning.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3839.313000" data-stop="3841.075000">Yes, and that's the whole point of that.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3841.095000" data-stop="3848.628000">For example, if I want to mark until that parentheses,</span> <span class="audio-time caption" data-speaker="Omar" data-start="3848.629000" data-stop="3851.348000">then I would search for the parentheses,</span> <span class="audio-time caption" data-speaker="Omar" data-start="3851.328000" data-stop="3854.713000">and I don't want to include the parentheses.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3854.733000" data-stop="3855.615000">That's not a good example.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3855.655000" data-stop="3857.718000">But with a word, it's often like, I'm looking for</span> <span class="audio-time caption" data-speaker="Omar" data-start="3857.758000" data-stop="3860.602000">a word, but I want to highlight up to the end of</span> <span class="audio-time caption" data-speaker="Omar" data-start="3860.642000" data-stop="3860.923000">the word.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3861.223000" data-stop="3864.268000">It's just like, if you want to mark a region from</span> <span class="audio-time caption" data-speaker="Omar" data-start="3864.308000" data-stop="3867.513000">point to some search term, with the Emacs</span> <span class="audio-time caption" data-speaker="Omar" data-start="3867.533000" data-stop="3869.536000">default, what you have to search for is the thing</span> <span class="audio-time caption" data-speaker="Omar" data-start="3869.576000" data-stop="3872.661000">that is at the end of the part you want to match.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3872.641000" data-stop="3876.226000">But often I want to say until like the thing that</span> <span class="audio-time caption" data-speaker="Omar" data-start="3876.286000" data-stop="3876.827000">starts here.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3877.107000" data-stop="3878.489000">It's just my brain works that way.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3879.130000" data-stop="3881.514000">So for me, it's much better to exit at the</span> <span class="audio-time caption" data-speaker="Omar" data-start="3881.554000" data-stop="3882.255000">start of the search.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3884.178000" data-stop="3885.259000">Which means I don't understand</span> <span class="audio-time caption" data-speaker="Omar" data-start="3885.279000" data-stop="3886.861000">isearch on other people's Emacs.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3886.901000" data-stop="3889.906000">It just leaves the point in the wrong location</span> <span class="audio-time caption" data-speaker="Omar" data-start="3889.966000" data-stop="3890.386000">all the time.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3890.767000" data-stop="3892.429000">If you're going quickly, you won't realize</span> <span class="audio-time caption" data-speaker="Omar" data-start="3892.449000" data-stop="3893.831000">that it's just a mess.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3894.192000" data-stop="3896.355000">It does mean that I can only use isearch if it's</span> <span class="audio-time caption" data-speaker="Omar" data-start="3896.375000" data-stop="3897.737000">configured this way.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3899.928000" data-stop="3901.830000"><strong class="speaker-name">Sacha:</strong>  Well, that's the thing about Emacs, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3901.910000" data-stop="3904.292000">Once you've got it set up, you've</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3904.312000" data-stop="3906.074000">got to use your config because everything else</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3906.114000" data-stop="3907.536000">just feels off.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3908.076000" data-stop="3908.997000">It just feels weird.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3909.017000" data-stop="3909.558000"><strong class="speaker-name">Omar:</strong>  Yeah, that's right.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3910.579000" data-stop="3910.879000"><strong class="speaker-name">Sacha:</strong>  All right.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3912.000000">1:05:12</span> <strong>Using keymaps to remember sets of commands</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3912.460000" data-stop="3916.084000"><strong class="speaker-name">Sacha:</strong> Going back to the toggle keymap, @gcentauri says,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3916.124000" data-stop="3916.805000">I'm not lazy enough.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3916.865000" data-stop="3919.087000">I just M-x orderless consult, find the thing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3919.107000" data-stop="3921.329000">that I'm toggling, which I do a lot also.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3921.349000" data-stop="3923.391000">I just use M-x for all the things because I can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3923.411000" data-stop="3925.553000">just specify parts of it.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3925.573000" data-stop="3926.755000"><strong class="speaker-name">Omar:</strong>  There's some toggles I don't have</span> <span class="audio-time caption" data-speaker="Omar" data-start="3926.795000" data-stop="3928.797000">in the keymap because I use them very rarely, but</span> <span class="audio-time caption" data-speaker="Omar" data-start="3929.177000" data-stop="3929.277000">yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3929.257000" data-stop="3935.109000">What I like also about the keymap is that it's a</span> <span class="audio-time caption" data-speaker="Omar" data-start="3935.269000" data-stop="3938.736000">place to remind myself of the toggle commands.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3938.756000" data-stop="3940.440000">I often just do this.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3940.460000" data-stop="3941.562000">What was the thing?</span> <span class="audio-time caption" data-speaker="Omar" data-start="3942.132000" data-stop="3945.035000">I haven't used that in a while.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3945.215000" data-stop="3949.300000"><strong class="speaker-name">Sacha:</strong>  Having a shorter list, it means you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3949.340000" data-stop="3951.603000">can just use recognition instead of recall, right?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3953.104000" data-stop="3954.246000"><strong class="speaker-name">Omar:</strong>  It's short enough that I can read</span> <span class="audio-time caption" data-speaker="Omar" data-start="3954.266000" data-stop="3954.566000">through it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3955.367000" data-stop="3956.829000"><strong class="speaker-name">Sacha:</strong>  I like that a lot.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3956.869000" data-stop="3959.812000">I like the fact that with that Embark <code>C-h</code></span> <span class="audio-time caption" data-speaker="Sacha" data-start="3959.992000" data-stop="3961.914000">screen, you can use completion even to select</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3961.934000" data-stop="3964.377000">the commands from that subset.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3964.000000">1:06:04</span> <strong>Other things from the config</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3964.981000" data-stop="3966.383000"><strong class="speaker-name">Sacha:</strong> A couple of other things that I picked up from</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3966.403000" data-stop="3967.043000">your config:</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3967.084000" data-stop="3970.007000">There’s your <code>dired-open-externally</code>, so it makes</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3970.047000" data-stop="3972.931000">it very easy to open something in an external</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3973.371000" data-stop="3974.292000">application.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3974.312000" data-stop="3975.774000"><strong class="speaker-name">Omar:</strong>  And it just calls Embark open</span> <span class="audio-time caption" data-speaker="Omar" data-start="3975.814000" data-stop="3976.255000">externally.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3978.758000" data-stop="3980.139000">This function moved back and forth</span> <span class="audio-time caption" data-speaker="Omar" data-start="3980.199000" data-stop="3981.020000">from different places.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3981.080000" data-stop="3983.223000">I think <code>embark-open-externally</code> used to be in</span> <span class="audio-time caption" data-speaker="Omar" data-start="3983.263000" data-stop="3983.744000">consult.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3984.444000" data-stop="3986.567000">Daniel said he felt it didn't fit in</span> <span class="audio-time caption" data-speaker="Omar" data-start="3986.607000" data-stop="3987.328000">with consult.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3989.771000" data-stop="3994.937000"><code>Embark consult</code> would put it in keymaps.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3995.542000" data-stop="3996.463000">He was right.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3997.904000" data-stop="4000.787000">Consult didn't have a very clear personality at</span> <span class="audio-time caption" data-speaker="Omar" data-start="4000.807000" data-stop="4001.247000">the beginning.</span> <span class="audio-time caption" data-speaker="Omar" data-start="4001.288000" data-stop="4003.109000">It was sort of like a grab bag of commands.</span> <span class="audio-time caption" data-speaker="Omar" data-start="4003.149000" data-stop="4006.953000">Eventually, what gelled is that a</span> <span class="audio-time caption" data-speaker="Omar" data-start="4006.993000" data-stop="4008.995000">command should be in Consult if there is a useful</span> <span class="audio-time caption" data-speaker="Omar" data-start="4009.035000" data-stop="4010.436000">way to write previews for it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="4010.456000" data-stop="4012.999000">So, preview is the distinguishing feature of what</span> <span class="audio-time caption" data-speaker="Omar" data-start="4013.059000" data-stop="4014.220000">is a good fit for Consult.</span> <span class="audio-time caption" data-speaker="Omar" data-start="4015.001000" data-stop="4017.023000">Now, I hope Daniel would agree with that.</span> <span class="audio-time caption" data-speaker="Omar" data-start="4017.063000" data-stop="4019.285000">That seems to be the criteria now.</span> <span class="audio-time caption" data-speaker="Omar" data-start="4019.305000" data-stop="4020.025000">That's great.</span> <span class="audio-time caption" data-speaker="Omar" data-start="4020.186000" data-stop="4021.667000">I absolutely love preview.</span> <span class="audio-time caption" data-speaker="Omar" data-start="4021.765000" data-stop="4024.391000">That's one thing I miss a little bit with org-ql.</span> <span class="audio-time caption" data-speaker="Omar" data-start="4024.491000" data-stop="4026.755000">I use org-ql mostly to search through Org files,</span> <span class="audio-time caption" data-speaker="Omar" data-start="4027.497000" data-stop="4030.343000">but the preview is kind of manual in that I use</span> <span class="audio-time caption" data-speaker="Omar" data-start="4030.403000" data-stop="4031.085000">Embark to do it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="4031.225000" data-stop="4035.774000">If I want to preview a command, I just use Embark</span> <span class="audio-time caption" data-speaker="Omar" data-start="4035.955000" data-stop="4036.616000">to do what I mean.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4040.003000" data-stop="4042.288000"><strong class="speaker-name">Sacha:</strong>  Yeah, that's a good idea.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4042.387000" data-stop="4043.090000">I should try that.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="4043.331000" data-stop="4045.380000"><strong class="speaker-name">Omar:</strong>  So any command that doesn't have a</span> <span class="audio-time caption" data-speaker="Omar" data-start="4045.400000" data-stop="4047.890000">preview, I mean does, you can just use <code>embark-dwim</code>,</span> <span class="audio-time caption" data-speaker="Omar" data-start="4047.910000" data-stop="4051.907000">it'll complete the command for you.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4055.735000" data-stop="4057.457000"><strong class="speaker-name">Sacha:</strong>  Okay, the kid has arrived,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4057.477000" data-stop="4058.478000">so I have to go off to lunch.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4058.498000" data-stop="4060.580000">But thank you so much for the quick peek into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4060.600000" data-stop="4062.001000">your config.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4063.042000" data-stop="4065.604000">I'll put the transcript together and then people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4065.644000" data-stop="4066.005000">can do that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4066.025000" data-stop="4067.706000">But in the meantime, people can look at your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4067.746000" data-stop="4069.728000">config for all sorts of wonderful goodness.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="4070.649000" data-stop="4070.909000"><strong class="speaker-name">Omar:</strong>  Thanks.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4070.969000" data-stop="4073.532000"><strong class="speaker-name">Sacha:</strong>  Thanks to everyone for hanging out.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4073.932000" data-stop="4076.294000">Looks like the isearch tip was popular,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4076.355000" data-stop="4078.236000">so you might see a lot of people getting that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4078.256000" data-stop="4078.937000">from your config.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4079.578000" data-stop="4081.399000">Anyway, thank you so much for this.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4081.600000" data-stop="4082.721000">I’ll see you around.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="4083.181000" data-stop="4083.922000"><strong class="speaker-name">Omar:</strong>  Thanks, Sacha.</span> <span class="audio-time caption" data-speaker="Omar" data-start="4084.022000" data-stop="4085.303000">This was fantastic.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4085.283000" data-stop="4086.806000"><strong class="speaker-name">Sacha:</strong>  Alright, nice.</span></div>
<p></p>


<a name="end-emacs-chat-24-omar-antolin-camarena-transcript"></a></details>
</div>
</div>
<div id="outline-container-emacs-chats-emacs-chat-24-omar-antolin-camarena-chat" class="outline-3">
<h3 id="emacs-chats-emacs-chat-24-omar-antolin-camarena-chat"><a href="https://sachachua.com/blog/feed/index.xml#emacs-chats-emacs-chat-24-omar-antolin-camarena-chat">Chat</a></h3>
<div class="outline-text-3" id="text-emacs-chats-emacs-chat-24-omar-antolin-camarena-chat">
<div class="chat" id="org181ed02">
<ul class="org-ul">
<li><span class="nick">takoverflow:</span> ​​Hello Sacha and Omar, thanks for this chat! :)</li>
<li><span class="nick">CharlieBaker707:</span> ​​Definitely going to add the keycast transparency to my config! I've been wanting that for a while!</li>
<li><span class="nick">gcentauri:</span> ​​i'm still a minibuffer noob - its been nil my whole Emacs life!</li>
<li><span class="nick">CharlieBaker707:</span> ​recursive minibuffers is amazing. biggest win for me is that it lets you select things and paste them in, like from a completing-read's history for example</li>
<li><span class="nick">gcentauri:</span> ​haha apparently i do have recursive minibuffers set to t, along with my Vertico config 🤔</li>
<li><span class="nick">Zor_org:</span> ​​was there a time you wanted multiple cursors?</li>
<li><span class="nick">Zor_org:</span> ​if so, was there any workaround you thought of with embark or kmacro?</li>
<li><span class="nick">gcentauri:</span> ​keyboard macros are a fun mini-game</li>
<li><span class="nick">CharlieBaker707:</span> ​I have embark-act set up to expand in the same way expand-region does, but with embark's type awareness. It's also easy to add a contract function.</li>
<li><span class="nick">CharlieBaker707:</span> ​I also have a completing-read interface and a transient menu to jump directly to one of many types under point that I'm seeiking.</li>
<li><span class="nick">CharlieBaker707:</span> ​For sure!</li>
<li><span class="nick">CharlieBaker707:</span> ​I was going to create a tiny extension, but I can open a PR in embark!</li>
<li><span class="nick">Zor_org:</span> ​even more crazy with elfeed 4.0</li>
<li><span class="nick">gcentauri:</span> ​I found Orderless and Embark through Daniel's suggestions in his packages :)</li>
<li><span class="nick">Zor_org:</span> ​if emacs gets canvas patch soon, more things can be done in luggage (lik gifs and image frame as well)</li>
<li><span class="nick">gcentauri:</span> ​i am not lazy enough, i just M-x orderless consult find the thing i'm toggling</li>
<li><span class="nick">PuercoPop:</span> ​​I didn't knew isearch had a built-in way to fix the isearch quirk. Now I can remove the snippet I use the implement it that I cribbed from the internets</li>
<li><span class="nick">gcentauri:</span> ​yeah adding something to a keymap you make does help recall</li>
<li><span class="nick">PuercoPop:</span> ​​The isearch quirk is a common complaint from what I understand</li>
<li><span class="nick">gcentauri:</span> ​yeah i'm gonna use that iserach bit</li>
</ul>

</div>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/index.org">View Org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F05%2Fmay-29-emacs-chat-with-omar-antolin-camarena%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>Emacs Chat 23: Emacs Chat with Raymond Zeitler</title>
		<link>https://sachachua.com/blog/2026/05/emacs-chat-with-raymond-zeitler/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Thu, 21 May 2026 14:30:32 GMT</pubDate>
    <category>emacs</category>
<category>emacs-chat-podcast</category>
<category>emacs-chat</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/05/emacs-chat-with-raymond-zeitler/</guid><enclosure url="https://archive.org/download/ec23-raymond-zeitler/ec23-raymond-zeitler.mp3"
               length="56375526"
               type="audio/mpeg" />
		<description><![CDATA[<div class="update" id="org64ad7d8">
<p>
<span class="timestamp-wrapper"><time class="timestamp" datetime="2026-05-25">[2026-05-25 Mon]</time></span>: Fixed ICS link
</p>

</div>

<p>
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.
</p>

<p>
<video preload="none" controls="1" src="https://archive.org/download/ec23-raymond-zeitler/ec23-raymond-zeitler.mp4" type="video/mp4"><track kind="subtitles" label="Captions" src="https://sachachua.com/blog/2026/05/emacs-chat-with-raymond-zeitler/ec23-raymond-zeitler.vtt" srclang="en" default=""></video>
</p>

<p>
<a href="https://archive.org/details/ec23-raymond-zeitler">View in the Internet Archive</a>, <a href="https://youtube.com/live/ro6BZI0Z64I">watch or comment on YouTube</a>, <a href="https://sachachua.com/blog/feed/index.xml#ID-ec23-transcript">read the transcript online</a>, <a href="https://sachachua.com/blog/2026/05/emacs-chat-with-raymond-zeitler/ec23-raymond-zeitler.vtt">download the transcript</a>, <a href="https://archive.org/download/ec23-raymond-zeitler/ec23-raymond-zeitler.mp3">download the audio</a>, or <a href="mailto:sacha@sachachua.com">email me</a>.
</p>

<p>
Related links:
</p>

<ul class="org-ul">
<li><a href="https://www.emacswiki.org/emacs/RaymondZeitler">https://www.emacswiki.org/emacs/RaymondZeitler</a> (config is out of date)</li>
<li><a href="https://www.linkedin.com/in/raymondzeitler/">https://www.linkedin.com/in/raymondzeitler/</a> : Electrical Engineer | Electronic RF Components | Scripting &amp; Automation | US Defense and Aerospace~ Modernizing your company’s legacy design tools</li>
<li>Acting Historian, IEEE Connecticut Section</li>
<li><a href="https://codeberg.org/ZeitRa">https://codeberg.org/ZeitRa</a></li>
<li>The rest of his Internet presence is either private (Facebook) or anonymous (two blogs, Github and Gitlab, Mastodon, Bluesky).</li>
<li><a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Writing-Calendar-Files.html">Writing Calendar Files (GNU Emacs Manual)</a> - cal-tex-cursor-week-iso</li>
<li><a href="https://github.com/chenfengyuan/elisp/blob/master/next-spec-day.el">elisp/next-spec-day.el at master · chenfengyuan/elisp · GitHub</a></li>
</ul>

<p>
You can add the iCal for upcoming Emacs Chat episodes to your calendar. <a href="https://sachachua.com/topic/emacs-chat/upcoming-emacs-chats.ics">https://sachachua.com/topic/emacs-chat/upcoming-emacs-chats.ics</a>
</p>

<p>
Find more Emacs Chats or join the fun: <a href="https://sachachua.com/emacs-chat">https://sachachua.com/emacs-chat</a>
</p>

<p>
Chapters:
</p>

<p>
</p><ul class="org-ul">
<li><span class="audio-time" data-start="0.031" data-stop="1.635">0:00</span> Opening</li>
<li><span class="audio-time" data-start="58.967" data-stop="59.167">0:58</span> Introduction</li>
<li><span class="audio-time" data-start="119.780" data-stop="127.070">1:59</span> I love automating workflows</li>
<li><span class="audio-time" data-start="195.680" data-stop="199.827">3:15</span> Org Mode switch</li>
<li><span class="audio-time" data-start="248.891" data-stop="254.288">4:08</span> diary-float</li>
<li><span class="audio-time" data-start="408.640" data-stop="410.218">6:48</span> Tip: Add links to task titles</li>
<li><span class="audio-time" data-start="419.567" data-stop="419.490">6:59</span> diary-float</li>
<li><span class="audio-time" data-start="479.146" data-stop="480.729">7:59</span> The difference between active timestamps and SCHEDULED</li>
<li><span class="audio-time" data-start="606.430" data-stop="606.831">10:06</span> Including other diary files</li>
<li><span class="audio-time" data-start="686.759" data-stop="690.162">11:26</span> cal-tex-cursor-week-iso, printing planner pages on index cards</li>

<li><span class="audio-time" data-start="899.579" data-stop="904.346">14:59</span> Holidays</li>

<li><span class="audio-time" data-start="1005.713" data-stop="1010.279">16:45</span> Making calendars for other people</li>
<li><span class="audio-time" data-start="1047.126" data-stop="1049.049">17:27</span> Keeping track of when things were done on the house</li>
<li><span class="audio-time" data-start="1129.917" data-stop="1132.520">18:49</span> My first customizations: backspace, buffers</li>
<li><span class="audio-time" data-start="1232.330" data-stop="1242.124">20:32</span> Windows and super key</li>

<li><span class="audio-time" data-start="1403.744" data-stop="1404.505">23:23</span> Org Mode class on Udemy, agenda custom commands</li>
<li><span class="audio-time" data-start="1500.386" data-stop="1502.229">25:00</span> toggling tags</li>

<li><span class="audio-time" data-start="1617.864" data-stop="1621.387">26:57</span> TODO states</li>
<li><span class="audio-time" data-start="1641.211" data-stop="1642.172">27:21</span> Functions for Org Agenda</li>

<li><span class="audio-time" data-start="1714.428" data-stop="1719.854">28:34</span> exeln, shellfn: executing things in DOS</li>

<li><span class="audio-time" data-start="1822.987" data-stop="1831.377">30:22</span> Middle mouse click</li>
<li><span class="audio-time" data-start="1919.941" data-stop="1924.507">31:59</span> Keybindings in other apps: Vivaldi</li>
<li><span class="audio-time" data-start="2049.445" data-stop="2051.360">34:09</span> M-s M-w, eww-search-words</li>
<li><span class="audio-time" data-start="2150.480" data-stop="2154.506">35:50</span> Saving links with org-store-link</li>
<li><span class="audio-time" data-start="2309.913" data-stop="2311.175">38:29</span> How I got into Emacs</li>
<li><span class="audio-time" data-start="2505.310" data-stop="2505.571">41:45</span> Maybe my own theme?</li>
<li><span class="audio-time" data-start="2546.947" data-stop="2550.452">42:26</span> Other editors? Always Emacs</li>
<li><span class="audio-time" data-start="2637.645" data-stop="2642.610">43:57</span> Package names</li>
<li><span class="audio-time" data-start="2754.993" data-stop="2758.958">45:54</span> What's next? Maybe auto maintenance</li>
<li><span class="audio-time" data-start="2911.607" data-stop="2914.250">48:31</span> Vibe-coding?</li>
<li><span class="audio-time" data-start="3053.566" data-stop="3058.014">50:53</span> Where people can find me</li>
<li><span class="audio-time" data-start="3122.378" data-stop="3123.460">52:02</span> Org Mode source blocks</li>
<li><span class="audio-time" data-start="3169.443" data-stop="3172.408">52:49</span> Slideshows?</li>
<li><span class="audio-time" data-start="3230.235" data-stop="3232.900">53:50</span> Emacs Chats?</li>
<li><span class="audio-time" data-start="3393.716" data-stop="3399.723">56:33</span> Other resources that would be nice to have</li>
</ul>

<p></p>

<style>
.ec23 span.caption[data-speaker="Sacha"] .speaker-name { color: var(&#45;&#45;modus-rainbow-1); }
.ec23 span.caption[data-speaker="Raymond"] .speaker-name { color: var(&#45;&#45;modus-rainbow-2); }
</style>
<div id="outline-container-emacs-chats-emacs-chat-23-emacs-chat-with-raymond-zeitler-transcript" class="outline-3">
<h3 id="emacs-chats-emacs-chat-23-emacs-chat-with-raymond-zeitler-transcript"><a href="https://sachachua.com/blog/feed/index.xml#emacs-chats-emacs-chat-23-emacs-chat-with-raymond-zeitler-transcript">Transcript</a></h3>
<div class="outline-text-3" id="text-emacs-chats-emacs-chat-23-emacs-chat-with-raymond-zeitler-transcript">
<details class="code-details"><a name="ID-ec23-transcript"></a><summary>Transcript</summary>
<p>
</p><div class="full-transcript"><p></p><div class="transcript-heading"><span class="audio-time" data-start="0.000000">0:00</span> <strong>Opening</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="0.031000" data-stop="1.635000"><strong class="speaker-name">Sacha:</strong>  I'll go live if that's okay with you.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3.620000" data-stop="4.362000">Yeah, good to go?</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="5.264000" data-stop="5.605000"><strong class="speaker-name">Raymond:</strong>  Okay.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="6.207000" data-stop="7.490000"><strong class="speaker-name">Sacha:</strong>  All right, going live.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="10.538000" data-stop="15.119000"><strong class="speaker-name">Raymond:</strong>  Let me just stop sharing right now.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="15.120000" data-stop="17.667000"><strong class="speaker-name">Sacha:</strong>  Hi everyone, this is Emacs Chat.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="17.868000" data-stop="19.832000">Emacs Chat 23.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="20.674000" data-stop="23.620000">Today I'm here with Raymond Zeitler who has been</span> <span class="audio-time caption" data-speaker="Sacha" data-start="23.720000" data-stop="25.083000">using Emacs for a long time.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="25.123000" data-stop="27.347000">Your EmacsWiki page says since 2000.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="27.367000" data-stop="29.833000">And I know for sure that you've been commenting</span> <span class="audio-time caption" data-speaker="Sacha" data-start="29.893000" data-stop="32.177000">on my blog since about 2008, probably even</span> <span class="audio-time caption" data-speaker="Sacha" data-start="32.217000" data-stop="33.480000">earlier, I don't know.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="33.460000" data-stop="35.062000">Everything gets lost in the mists of time.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="35.923000" data-stop="38.607000">I would love to chat with you about the things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="38.647000" data-stop="40.069000">that you've learned over the years, what you're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="40.089000" data-stop="43.614000">still fiddling with, and the things in your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="43.754000" data-stop="46.198000">configuration or workflow that aren't obvious to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="46.278000" data-stop="47.960000">people who are reading configurations.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="48.521000" data-stop="51.005000">It's just Emacs Lisp, but it doesn't show people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="51.505000" data-stop="55.271000">what you do with Emacs that makes you stick with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="55.371000" data-stop="56.953000">it over all this time.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="57.000000">0:57</span> <strong>Introduction</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="57.946000" data-stop="60.589000"><strong class="speaker-name">Sacha:</strong> So yes, but of course, we should do a bit of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="60.649000" data-stop="61.510000">context setting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="62.571000" data-stop="63.672000">You have a lot of different hats.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="63.732000" data-stop="66.034000">You're a historian, you're an electrical engineer.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="66.435000" data-stop="67.676000">How would you describe yourself?</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="69.158000" data-stop="70.759000"><strong class="speaker-name">Raymond:</strong>  Well, right now, I would say I'm an</span> <span class="audio-time caption" data-speaker="Raymond" data-start="70.799000" data-stop="74.703000">electrical engineer, but I spend most of my time,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="75.044000" data-stop="78.547000">instead of designing stuff, I work on the</span> <span class="audio-time caption" data-speaker="Raymond" data-start="78.608000" data-stop="80.089000">workflow for the design.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="80.930000" data-stop="85.775000">And I'm writing scripts, you know, to automate</span> <span class="audio-time caption" data-speaker="Raymond" data-start="86.055000" data-stop="87.717000">various parts of the design.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="88.034000" data-stop="91.159000">Now, I just want to pause here because I hear</span> <span class="audio-time caption" data-speaker="Raymond" data-start="91.680000" data-stop="93.303000">like a 10-second delay.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="94.004000" data-stop="94.205000"><strong class="speaker-name">Sacha:</strong>  Yes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="95.587000" data-stop="99.294000">Oh, you have the video open in another tab.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="99.654000" data-stop="101.618000">Yeah, so the 10-second delay is there in case we</span> <span class="audio-time caption" data-speaker="Sacha" data-start="101.658000" data-stop="103.821000">need to panic, you know, in case you accidentally</span> <span class="audio-time caption" data-speaker="Sacha" data-start="103.861000" data-stop="105.464000">flash something you'd rather keep private.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="106.827000" data-stop="108.890000">But it can be quite disconcerting to hear</span> <span class="audio-time caption" data-speaker="Sacha" data-start="108.950000" data-stop="111.274000">yourself talking at the same time that you're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="111.294000" data-stop="112.236000">trying to say something.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="112.992000" data-stop="114.574000"><strong class="speaker-name">Raymond:</strong>  Okay, I think I fixed that.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="115.495000" data-stop="116.597000">Okay.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="117.000000">1:57</span> <strong>I love automating workflows</strong></div><p></p><span class="audio-time caption" data-speaker="Raymond" data-start="117.658000" data-stop="120.602000"><strong class="speaker-name">Raymond:</strong> Yes, so I'm an electrical engineer, but I also</span> <span class="audio-time caption" data-speaker="Raymond" data-start="120.662000" data-stop="121.683000">love to do scripting.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="121.723000" data-stop="126.509000">Automating any kind of workflow is my favorite</span> <span class="audio-time caption" data-speaker="Raymond" data-start="126.549000" data-stop="129.473000">thing to do, and I would just love to go around</span> <span class="audio-time caption" data-speaker="Raymond" data-start="129.493000" data-stop="134.519000">and help people to find ways to automate the</span> <span class="audio-time caption" data-speaker="Raymond" data-start="134.539000" data-stop="136.782000">workflow.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="137.122000" data-stop="139.200000">Basically, I was doing that ETL,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="139.201000" data-stop="142.333000">you know, extract, transform, and load</span> <span class="audio-time caption" data-speaker="Raymond" data-start="142.365000" data-stop="147.533000">many years ago, I mean, dozens of years ago,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="147.534000" data-stop="150.600000">and showing people how to do that too for them,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="150.601000" data-stop="152.367000">and you know, when they look at me and</span> <span class="audio-time caption" data-speaker="Raymond" data-start="152.368000" data-stop="154.733000">they say, oh my god, thank you so much,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="154.720000" data-stop="157.520000">I'm so glad... You know, it used</span> <span class="audio-time caption" data-speaker="Raymond" data-start="157.520000" data-stop="160.560000">to take me hours to do this.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="160.560000" data-stop="164.733000">Automating a design flow is a good idea</span> <span class="audio-time caption" data-speaker="Raymond" data-start="164.734000" data-stop="167.840000">once you have all your script in place, that</span> <span class="audio-time caption" data-speaker="Raymond" data-start="168.085000" data-stop="172.839000">serves as your documentation.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="172.840000" data-stop="174.271000">If there is a problem with</span> <span class="audio-time caption" data-speaker="Raymond" data-start="174.291000" data-stop="176.774000">the design, you can go back to the script and</span> <span class="audio-time caption" data-speaker="Raymond" data-start="176.914000" data-stop="177.394000">update it.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="177.414000" data-stop="179.576000">So the next time, you're not going to have that</span> <span class="audio-time caption" data-speaker="Raymond" data-start="179.617000" data-stop="180.557000">problem, hopefully.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="181.999000" data-stop="183.721000"><strong class="speaker-name">Sacha:</strong>  You've been learning Python recently,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="183.741000" data-stop="184.301000">too, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="184.321000" data-stop="186.804000">I can imagine that helps a lot with automation.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="187.385000" data-stop="189.367000">Are you taking advantage of things like Org</span> <span class="audio-time caption" data-speaker="Sacha" data-start="189.387000" data-stop="190.928000">Mode as well for the things that you can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="191.008000" data-stop="191.929000">partially automate?</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="192.410000" data-stop="193.951000"><strong class="speaker-name">Raymond:</strong>  Absolutely.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="194.212000" data-stop="194.552000"><strong class="speaker-name">Sacha:</strong>  Tell us about that.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="195.680000" data-stop="198.404000"><strong class="speaker-name">Raymond:</strong>  Oh, I figured that we should save for the</span> <span class="audio-time caption" data-speaker="Raymond" data-start="198.424000" data-stop="199.827000">last, because it could take the whole thing.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="200.000000">3:20</span> <strong>Org Mode switch</strong></div><p></p><span class="audio-time caption" data-speaker="Raymond" data-start="200.187000" data-stop="205.095000"><strong class="speaker-name">Raymond:</strong> But yes, I started using Org Mode after you</span> <span class="audio-time caption" data-speaker="Raymond" data-start="205.375000" data-stop="206.958000">jumped ship from Planner Mode.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="207.479000" data-stop="210.884000">I know that you and John Wiegley were big on that,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="210.904000" data-stop="212.487000">and I used to use Planner.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="213.629000" data-stop="215.932000">And I delayed switching to Org Mode, but</span> <span class="audio-time caption" data-speaker="Raymond" data-start="216.413000" data-stop="218.937000">eventually I latched onto it really well.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="219.929000" data-stop="224.957000">So one thing I used Org Mode for at home was for</span> <span class="audio-time caption" data-speaker="Raymond" data-start="225.018000" data-stop="226.881000">bill pay, you know, because you can schedule</span> <span class="audio-time caption" data-speaker="Raymond" data-start="226.921000" data-stop="227.822000">things recurring.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="228.764000" data-stop="234.433000">So you got your mortgage, you can recur, you</span> <span class="audio-time caption" data-speaker="Raymond" data-start="234.453000" data-stop="237.619000">know, and the recurrence is well thought out.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="237.699000" data-stop="241.826000">You know, you could have it scheduled exactly 30</span> <span class="audio-time caption" data-speaker="Raymond" data-start="241.886000" data-stop="245.532000">days away or one month.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="245.000000">4:05</span> <strong>diary-float</strong></div><p></p><span class="audio-time caption" data-speaker="Raymond" data-start="245.832000" data-stop="249.515000"><strong class="speaker-name">Raymond:</strong> What I found recently, though, is you can</span> <span class="audio-time caption" data-speaker="Raymond" data-start="250.138000" data-stop="251.708000">use the diary:</span> <span class="audio-time caption" data-speaker="Raymond" data-start="252.025000" data-stop="258.414000">diary-float and diary-warning.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="259.476000" data-stop="262.440000">Those functions can be used in Org Mode in</span> <span class="audio-time caption" data-speaker="Raymond" data-start="262.500000" data-stop="263.482000">place of the schedule.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="263.502000" data-stop="264.804000">So that's really cool.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="264.824000" data-stop="266.927000">I have a lot of meetings that occur, let's say,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="267.147000" data-stop="269.250000">the second Wednesday of the month and stuff.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="269.751000" data-stop="272.334000">There's really no way to easily do that out</span> <span class="audio-time caption" data-speaker="Raymond" data-start="272.354000" data-stop="273.596000">of the box with Org Mode.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="274.978000" data-stop="275.839000">So that's fun to do.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="277.482000" data-stop="277.943000">Let's see.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="278.944000" data-stop="281.728000">I'm going to share my Org now, if you want.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="281.978000" data-stop="282.984000"><strong class="speaker-name">Sacha:</strong>  Sure, go ahead.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="283.064000" data-stop="283.949000">If that's okay with you.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="284.734000" data-stop="285.055000"><strong class="speaker-name">Raymond:</strong>  Sure.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="285.397000" data-stop="287.328000">Well, I deleted some of the stuff.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="287.348000" data-stop="289.440000">You know, not all the files are there.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="289.842000" data-stop="291.484000"><strong class="speaker-name">Sacha:</strong>  Thank you.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="291.645000" data-stop="293.808000">It's always interesting to see, because a lot of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="293.848000" data-stop="295.670000">times, when we're trying to demonstrate Org to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="295.690000" data-stop="297.954000">people, we're like, okay, here's a small</span> <span class="audio-time caption" data-speaker="Sacha" data-start="298.014000" data-stop="300.637000">example. But when you see it in the context of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="300.718000" data-stop="303.622000">someone's actual life, with the tons of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="303.722000" data-stop="306.164000">reminders they have... Your agenda is very full,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="306.165000" data-stop="306.766000">for example.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="307.467000" data-stop="310.632000">I'm not the only one with things that are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="310.652000" data-stop="313.159000">scheduled for over 100 days.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="313.160000" data-stop="315.691000"><strong class="speaker-name">Raymond:</strong>  And actually, your talk isn't on here,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="315.811000" data-stop="317.393000">so that's kind of strange.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="318.214000" data-stop="320.197000">So, for example, I was talking about bills, right?</span> <span class="audio-time caption" data-speaker="Raymond" data-start="320.437000" data-stop="322.500000">I don't know if you can see that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="322.540000" data-stop="323.281000"><strong class="speaker-name">Sacha:</strong>  Yeah, I can see that.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="323.301000" data-stop="323.981000"><strong class="speaker-name">Raymond:</strong>  It's not the same.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="325.924000" data-stop="326.545000"><strong class="speaker-name">Sacha:</strong>  Yeah, I see.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="326.665000" data-stop="328.107000">And you're using the logbook.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="328.127000" data-stop="331.811000">You can keep notes in a task.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="331.852000" data-stop="333.373000">You can put all the things there.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="334.094000" data-stop="334.615000"><strong class="speaker-name">Raymond:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="335.101000" data-stop="338.047000">So, you know, something like a mortgage or your</span> <span class="audio-time caption" data-speaker="Raymond" data-start="338.207000" data-stop="340.532000">utility, that's pretty standard.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="340.572000" data-stop="342.917000">That's just +1m, you know, for the</span> <span class="audio-time caption" data-speaker="Raymond" data-start="342.977000" data-stop="343.518000">recurrence.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="343.879000" data-stop="345.402000">Let's see.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="347.065000" data-stop="347.406000">Yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="348.787000" data-stop="350.129000"><strong class="speaker-name">Sacha:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="350.389000" data-stop="354.354000">So basically, you have the regular or repeat</span> <span class="audio-time caption" data-speaker="Sacha" data-start="354.775000" data-stop="357.419000">things, plus one month or plus one week for the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="357.439000" data-stop="359.141000">things that can be expressed that way.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="359.161000" data-stop="362.065000">But you also use diary-float for the things that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="362.185000" data-stop="363.607000">are second Wednesday of the month.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="364.128000" data-stop="364.488000"><strong class="speaker-name">Raymond:</strong>  Yes.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="364.648000" data-stop="369.375000">So let me try a different Org file for that.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="369.695000" data-stop="371.858000">Oh, everyone, I have to do this too.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="372.614000" data-stop="376.157000"><strong class="speaker-name">Sacha:</strong>  Oh yeah, you can set a global font</span> <span class="audio-time caption" data-speaker="Sacha" data-start="376.177000" data-stop="377.659000">default scale thingy.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="377.919000" data-stop="380.460000">I don't remember exactly how to do that, but...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="380.461000" data-stop="381.581000">[cut due to passwords] I'll move your screen</span> <span class="audio-time caption" data-speaker="Sacha" data-start="381.582000" data-stop="382.963000">off the thing first while you talk,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="382.964000" data-stop="385.326000">and then I'll move it back when you're ready.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="385.346000" data-stop="388.569000">So we had a bit of a "Oh no, he's showing me like</span> <span class="audio-time caption" data-speaker="Sacha" data-start="388.609000" data-stop="389.610000">meeting passwords online."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="389.630000" data-stop="391.732000">So if you saw that, which probably you didn't</span> <span class="audio-time caption" data-speaker="Sacha" data-start="391.772000" data-stop="395.315000">because 10 second delay, just ignore it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="395.455000" data-stop="399.499000">And then we'll go back and scrub things later.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="400.745000" data-stop="402.467000">Let me know when it's safe to look again.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="403.028000" data-stop="403.649000"><strong class="speaker-name">Raymond:</strong>  Okay, here we go.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="403.669000" data-stop="404.550000">So here's a meeting.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="405.431000" data-stop="406.112000"><strong class="speaker-name">Sacha:</strong>  Okay, okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="406.292000" data-stop="406.713000">We got this.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="406.733000" data-stop="408.799000">We got this.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="408.000000">6:48</span> <strong>Tip: Add links to task titles</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="408.800000" data-stop="410.879000"><strong class="speaker-name">Sacha:</strong>  I also want to point out, I love how</span> <span class="audio-time caption" data-speaker="Sacha" data-start="410.919000" data-stop="413.242000">you're using links in the task title.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="413.282000" data-stop="415.925000">You know, that did not occur to me to have the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="416.146000" data-stop="418.549000">links right there so it's easy to get to from</span> <span class="audio-time caption" data-speaker="Sacha" data-start="418.629000" data-stop="419.490000">just the overview.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="419.000000">6:59</span> <strong>diary-float</strong></div><p></p><span class="audio-time caption" data-speaker="Raymond" data-start="419.510000" data-stop="420.167000"><strong class="speaker-name">Raymond:</strong>  [cut due to passwords]  ...which works</span> <span class="audio-time caption" data-speaker="Raymond" data-start="420.168000" data-stop="421.713000">really in a diary file.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="421.733000" data-stop="422.034000"><strong class="speaker-name">Sacha:</strong>  All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="422.154000" data-stop="423.596000">Let me move it back so people can see.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="425.478000" data-stop="425.859000"><strong class="speaker-name">Raymond:</strong>  It works.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="426.440000" data-stop="430.465000">This is great because it works in Org Mode too.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="430.445000" data-stop="435.316000">If anyone doesn't know it, this is the month.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="435.697000" data-stop="438.604000">And true just means that this meeting occurs</span> <span class="audio-time caption" data-speaker="Raymond" data-start="438.784000" data-stop="439.286000">every month.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="440.067000" data-stop="442.694000">And I believe this means Monday.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="444.538000" data-stop="444.798000"><strong class="speaker-name">Sacha:</strong>  No, Tuesday.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="444.818000" data-stop="446.783000">Although... Your comment says Tuesday, yeah.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="446.763000" data-stop="449.867000"><strong class="speaker-name">Raymond:</strong>  Yeah, Tuesday. So that's the second day</span> <span class="audio-time caption" data-speaker="Raymond" data-start="449.868000" data-stop="452.867000">of the week, with Sunday being zero.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="452.868000" data-stop="455.567000">And then this is the week number, the second week.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="455.568000" data-stop="459.133000">Second Tuesday of every month.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="459.134000" data-stop="461.633000">And then you could just put the time there as well.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="461.933000" data-stop="462.754000"><strong class="speaker-name">Sacha:</strong>  Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="463.836000" data-stop="465.459000">I have actually personally never used this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="465.499000" data-stop="468.343000">syntax, but I see people use it for things like</span> <span class="audio-time caption" data-speaker="Sacha" data-start="468.644000" data-stop="471.388000">Emacs meetups and they're like, okay, yeah, we</span> <span class="audio-time caption" data-speaker="Sacha" data-start="471.409000" data-stop="473.532000">meet every second Wednesday or whatever, but</span> <span class="audio-time caption" data-speaker="Sacha" data-start="473.612000" data-stop="476.317000">here's the thing that you can just put into your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="476.417000" data-stop="478.440000">Org agenda and it'll work.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="479.000000">7:59</span> <strong>The difference between active timestamps and SCHEDULED</strong></div><p></p><span class="audio-time caption" data-speaker="Raymond" data-start="479.146000" data-stop="480.729000"><strong class="speaker-name">Raymond:</strong>  But the problem with this, though, is</span> <span class="audio-time caption" data-speaker="Raymond" data-start="480.849000" data-stop="485.717000">that it doesn't obey the, you know, if you mark</span> <span class="audio-time caption" data-speaker="Raymond" data-start="485.777000" data-stop="487.780000">it done, it'll be marked done.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="488.181000" data-stop="489.563000">So it won't show up again.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="490.104000" data-stop="493.329000">So I'm actually starting to put these in my actual</span> <span class="audio-time caption" data-speaker="Raymond" data-start="493.389000" data-stop="495.012000">diary because</span> <span class="audio-time caption" data-speaker="Raymond" data-start="495.447000" data-stop="497.390000">you know, I don't really need to mark the meeting</span> <span class="audio-time caption" data-speaker="Raymond" data-start="497.450000" data-stop="497.731000">done.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="498.372000" data-stop="500.135000"><strong class="speaker-name">Sacha:</strong>  You know, you can take out, just remove</span> <span class="audio-time caption" data-speaker="Sacha" data-start="500.155000" data-stop="502.218000">the scheduled keyword.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="502.238000" data-stop="504.702000">You can have the active timestamp and it will</span> <span class="audio-time caption" data-speaker="Sacha" data-start="504.803000" data-stop="506.586000">show up on your calendar, but it doesn't have to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="506.626000" data-stop="507.327000">be marked as done.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="508.008000" data-stop="509.530000">And it'll just keep showing up whenever you need</span> <span class="audio-time caption" data-speaker="Sacha" data-start="509.550000" data-stop="509.711000">to.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="510.111000" data-stop="512.275000">So this is the distinction between scheduled,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="512.255000" data-stop="513.876000">which is actually not like a scheduled</span> <span class="audio-time caption" data-speaker="Sacha" data-start="513.917000" data-stop="514.376000">appointment,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="514.437000" data-stop="516.339000">it's like a task that you're scheduling for a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="516.379000" data-stop="519.160000">specific day, versus just using an active</span> <span class="audio-time caption" data-speaker="Sacha" data-start="519.221000" data-stop="521.003000">timestamp, which is the stuff within the angle</span> <span class="audio-time caption" data-speaker="Sacha" data-start="521.043000" data-stop="521.484000">brackets.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="521.904000" data-stop="523.585000">It can be anywhere in your entry.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="523.605000" data-stop="526.188000">It doesn't have to be the second line after your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="526.208000" data-stop="526.548000">heading.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="527.569000" data-stop="530.192000">Then it will show up in your agenda, but it's not</span> <span class="audio-time caption" data-speaker="Sacha" data-start="530.232000" data-stop="532.594000">going to keep showing up like the next day.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="533.174000" data-stop="534.676000">It's not going to say it's overdue.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="535.196000" data-stop="536.698000">It's just going to be for that day.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="537.378000" data-stop="538.900000"><strong class="speaker-name">Raymond:</strong>  Okay.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="538.920000" data-stop="539.060000">Yeah.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="539.080000" data-stop="540.821000">There was somebody who tried to solve the</span> <span class="audio-time caption" data-speaker="Raymond" data-start="540.861000" data-stop="541.502000">problem, though.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="542.107000" data-stop="546.211000">And they came up with next-spec-day, a function,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="546.391000" data-stop="550.915000">but it's not possible to compile that with the</span> <span class="audio-time caption" data-speaker="Raymond" data-start="550.975000" data-stop="552.637000">modern Emacs.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="552.657000" data-stop="556.260000">So I'm just happy with the way I have it now,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="556.300000" data-stop="556.520000">though.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="558.042000" data-stop="558.682000">Yeah.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="558.702000" data-stop="561.425000">But when I first started using</span> <span class="audio-time caption" data-speaker="Raymond" data-start="561.485000" data-stop="567.450000">Emacs, the diary and the calendar were one of the</span> <span class="audio-time caption" data-speaker="Raymond" data-start="567.510000" data-stop="571.354000">first non-text editing uses that I had for it.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="571.722000" data-stop="576.268000">And I'm really getting back into diary.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="577.330000" data-stop="579.693000">I hope I don't show anything else.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="579.974000" data-stop="580.915000"><strong class="speaker-name">Sacha:</strong>  Tell you what, I'm going to move your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="580.955000" data-stop="581.536000">window away.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="581.556000" data-stop="582.517000">Okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="582.617000" data-stop="584.119000">And then you can do your thing and then I can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="584.159000" data-stop="585.541000">move it back when you're comfy.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="585.561000" data-stop="585.782000"><strong class="speaker-name">Raymond:</strong>  Okay.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="586.062000" data-stop="588.325000"><strong class="speaker-name">Sacha:</strong>  Yeah, I know how to do this now.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="588.345000" data-stop="588.786000">This is good.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="589.247000" data-stop="591.370000">I have two monitors so I can control.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="594.374000" data-stop="595.696000"><strong class="speaker-name">Raymond:</strong>  Where's my screen?</span> <span class="audio-time caption" data-speaker="Raymond" data-start="596.757000" data-stop="597.358000">Oh boy.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="599.140000" data-stop="601.003000">So what I'm showing here</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="601.405000" data-stop="605.369000"><strong class="speaker-name">Sacha:</strong>  I put it back so people can see.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="606.000000">10:06</span> <strong>Including other diary files
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-raymond-zeitler/ec23-raymond-zeitler-00-10-09-867.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-raymond-zeitler/ec23-raymond-zeitler-00-10-09-867.jpg" alt="image from video 00:10:09.867" data-time="00:10:09.867"></a><span class="audio-time caption" data-speaker="Raymond" data-start="606.430000" data-stop="608.933000"><strong class="speaker-name">Raymond:</strong>  My main diary is just diary.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="610.074000" data-stop="612.958000">What I'm doing is I'm using includes, because I</span> <span class="audio-time caption" data-speaker="Raymond" data-start="613.018000" data-stop="618.464000">like to break it up into various files that I can</span> <span class="audio-time caption" data-speaker="Raymond" data-start="619.124000" data-stop="624.150000">comment them out if I don't want something so</span> <span class="audio-time caption" data-speaker="Raymond" data-start="624.230000" data-stop="624.570000">busy.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="628.735000" data-stop="630.737000">The reason I'm doing that is because</span> <span class="audio-time caption" data-speaker="Raymond" data-start="631.139000" data-stop="634.607000">I was tooling around in calendar in the calendar</span> <span class="audio-time caption" data-speaker="Raymond" data-start="634.667000" data-stop="638.315000">functions and there's actually cal-tex-cursor</span> <span class="audio-time caption" data-speaker="Raymond" data-start="638.375000" data-stop="641.943000">functions that so when you go into calendar, for</span> <span class="audio-time caption" data-speaker="Raymond" data-start="642.003000" data-stop="649.620000">example... That's also small, right?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="650.292000" data-stop="650.813000"><strong class="speaker-name">Sacha:</strong>  It's okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="651.313000" data-stop="652.254000">Everyone has seen calendar.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="652.274000" data-stop="653.736000">Well, most people have seen calendar at this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="653.776000" data-stop="656.019000">point, so we know what the calendar is.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="656.039000" data-stop="656.299000">Okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="656.379000" data-stop="657.681000">What are we showing?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="657.721000" data-stop="658.662000">What are we seeing?</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="658.682000" data-stop="661.305000"><strong class="speaker-name">Raymond:</strong>  So if I wanted to, let's say for next</span> <span class="audio-time caption" data-speaker="Raymond" data-start="661.365000" data-stop="669.736000">week, what I could do is create a, let's see,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="669.756000" data-stop="670.256000">cursor...</span> <span class="audio-time caption" data-speaker="Raymond" data-start="670.396000" data-stop="671.298000">I forgot the command.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="673.320000" data-stop="674.782000"><strong class="speaker-name">Sacha:</strong>  I'm surprised you don't have completion</span> <span class="audio-time caption" data-speaker="Sacha" data-start="674.822000" data-stop="677.185000">set up.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="677.425000" data-stop="679.067000"><strong class="speaker-name">Raymond:</strong>  Yes.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="686.000000">11:26</span> <strong>cal-tex-cursor-week-iso, printing planner pages on index cards
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-raymond-zeitler/ec23-raymond-zeitler-00-14-04-867.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-raymond-zeitler/ec23-raymond-zeitler-00-14-04-867.jpg" alt="image from video 00:14:04.867" data-time="00:14:04.867"></a><span class="audio-time caption" data-speaker="Raymond" data-start="686.759000" data-stop="688.320000"><strong class="speaker-name">Raymond:</strong> Okay, so this is what I like to do.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="688.761000" data-stop="694.566000">So this function, cal-tex-cursor-week-iso</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="697.989000" data-stop="698.610000"><strong class="speaker-name">Sacha:</strong>  It's okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="698.630000" data-stop="699.871000">It's the curse of the live demo.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="702.493000" data-stop="706.577000"><strong class="speaker-name">Raymond:</strong>  All right, I'll create mine.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="706.597000" data-stop="707.738000"><strong class="speaker-name">Sacha:</strong>  Change cursor shape, huh...</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="709.439000" data-stop="711.141000"><strong class="speaker-name">Raymond:</strong>  All right, so for some reason that's</span> <span class="audio-time caption" data-speaker="Raymond" data-start="711.201000" data-stop="711.782000">not working.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="711.802000" data-stop="716.766000">But what you end up doing is you can create</span> <span class="audio-time caption" data-speaker="Raymond" data-start="717.438000" data-stop="719.721000">a weekly planner,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="720.902000" data-stop="723.045000">kind of like a page in a date book,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="724.226000" data-stop="730.895000">and it will show everything from your diary if</span> <span class="audio-time caption" data-speaker="Raymond" data-start="730.935000" data-stop="733.459000">you want...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="733.460000" data-stop="735.821000"><strong class="speaker-name">Sacha:</strong>  In a nice printed format or like a nice</span> <span class="audio-time caption" data-speaker="Sacha" data-start="736.041000" data-stop="736.982000">visual format.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="737.002000" data-stop="739.765000"><strong class="speaker-name">Raymond:</strong>  Yeah, I have to... How do I get that?</span> <span class="audio-time caption" data-speaker="Raymond" data-start="740.046000" data-stop="742.309000">I don't know why it's not working here.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="742.329000" data-stop="749.999000">So...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="750.000000" data-stop="753.460000"><strong class="speaker-name">Sacha:</strong>  Certainly the layouts of things, the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="753.520000" data-stop="755.403000">layouts of date planners is something that I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="755.483000" data-stop="759.088000">sometimes envy about my paper planner days.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="760.270000" data-stop="761.311000">Like you could see things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="763.854000" data-stop="766.218000">I also wanted to point out something that I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="766.258000" data-stop="767.119000">hadn't considered.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="767.199000" data-stop="770.103000">You were using diary for diary entries, it looks</span> <span class="audio-time caption" data-speaker="Sacha" data-start="770.143000" data-stop="770.704000">like also</span> <span class="audio-time caption" data-speaker="Sacha" data-start="771.104000" data-stop="773.628000">not just appointments and reminders, but also</span> <span class="audio-time caption" data-speaker="Sacha" data-start="774.088000" data-stop="775.110000">this is what happened that day.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="775.450000" data-stop="776.672000">Ooh, that is pretty.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="778.120000" data-stop="780.042000">Do you actually print these out or like read them</span> <span class="audio-time caption" data-speaker="Sacha" data-start="780.102000" data-stop="782.164000">on an e-reader or just look at them?</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="782.184000" data-stop="782.324000"><strong class="speaker-name">Raymond:</strong>  I did.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="782.905000" data-stop="785.948000">Yeah, I found out that my printer can print</span> <span class="audio-time caption" data-speaker="Raymond" data-start="786.349000" data-stop="788.871000">double-sided on index cards.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="788.891000" data-stop="790.273000"><strong class="speaker-name">Sacha:</strong>  Oh yeah, double-sided.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="790.893000" data-stop="792.595000"><strong class="speaker-name">Raymond:</strong>  So I actually created my own little</span> <span class="audio-time caption" data-speaker="Raymond" data-start="792.635000" data-stop="793.956000">book here.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="794.337000" data-stop="797.540000">So what's nice about this is, you know, when you</span> <span class="audio-time caption" data-speaker="Raymond" data-start="797.560000" data-stop="800.944000">go into a store to look for some planner, many of</span> <span class="audio-time caption" data-speaker="Raymond" data-start="801.044000" data-stop="802.565000">them, like half of them, don't even have the</span> <span class="audio-time caption" data-speaker="Raymond" data-start="802.645000" data-stop="805.108000">lunar phases.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="805.128000" data-stop="809.679000">And let's see if this has a lunar phase.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="809.680000" data-stop="812.017000"><strong class="speaker-name">Sacha:</strong>  So printing planner pages on index cards.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="812.057000" data-stop="812.898000">Very cool.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="813.598000" data-stop="814.680000"><strong class="speaker-name">Raymond:</strong>  So you've got your full moon there.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="814.940000" data-stop="817.983000">And because I was very active in photography,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="818.043000" data-stop="820.325000">nature photography in particular, and doing</span> <span class="audio-time caption" data-speaker="Raymond" data-start="820.385000" data-stop="821.366000">landscapes and stuff.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="821.887000" data-stop="824.390000">So it's really helpful to know when the full moon</span> <span class="audio-time caption" data-speaker="Raymond" data-start="824.510000" data-stop="831.597000">is, more so sunrise and sunset, which I have here.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="831.697000" data-stop="833.539000">Because you get, especially in the winter, you</span> <span class="audio-time caption" data-speaker="Raymond" data-start="833.579000" data-stop="837.523000">get great shots at around sunset.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="838.297000" data-stop="840.160000">Yeah, so that was something that I was really</span> <span class="audio-time caption" data-speaker="Raymond" data-start="840.220000" data-stop="840.901000">interested in.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="842.062000" data-stop="842.964000"><strong class="speaker-name">Sacha:</strong>  Oh, it's so cool.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="843.144000" data-stop="845.207000">It's something I'd never considered using Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="845.547000" data-stop="848.351000">to generate your custom, you know, calendar</span> <span class="audio-time caption" data-speaker="Sacha" data-start="848.812000" data-stop="851.215000">planner thing that you then take offline because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="851.255000" data-stop="852.437000">you're out there in the field.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="852.477000" data-stop="853.438000">You're taking pictures.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="853.498000" data-stop="855.441000">You don't want to open your laptop or look at</span> <span class="audio-time caption" data-speaker="Sacha" data-start="855.481000" data-stop="856.342000">your phone or whatever.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="856.623000" data-stop="857.824000">It's just your index card.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="858.225000" data-stop="858.525000">Nice.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="859.146000" data-stop="860.488000"><strong class="speaker-name">Raymond:</strong>  And there's some astrology in there.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="860.508000" data-stop="862.479000"><strong class="speaker-name">Sacha:</strong>  [cut due to password] We're back to streaming.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="862.480000" data-stop="864.053000">Yeah, birthdays. Gotcha.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="864.294000" data-stop="865.756000"><strong class="speaker-name">Raymond:</strong>  Birthdays.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="866.016000" data-stop="868.219000">And then, so I'll just...</span> <span class="audio-time caption" data-speaker="Raymond" data-start="868.823000" data-stop="870.446000">I wonder if I could do this safely.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="873.432000" data-stop="874.915000"><strong class="speaker-name">Sacha:</strong>  Give me a heads up, I'll move the screen</span> <span class="audio-time caption" data-speaker="Sacha" data-start="875.055000" data-stop="876.658000">off and then I can move it back when you give me</span> <span class="audio-time caption" data-speaker="Sacha" data-start="876.678000" data-stop="877.319000">the heads up again.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="878.722000" data-stop="882.529000"><strong class="speaker-name">Raymond:</strong>  I'm pretty sure my .emacs is pretty...</span> <span class="audio-time caption" data-speaker="Raymond" data-start="883.994000" data-stop="889.443000">If anyone wants to see this and download it, it's</span> <span class="audio-time caption" data-speaker="Raymond" data-start="889.783000" data-stop="891.947000">on emacswiki.org.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="893.008000" data-stop="895.512000">Just look for the page RaymondZeitler.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="895.532000" data-stop="897.555000"><strong class="speaker-name">Sacha:</strong>  Yeah, it's in the related links now for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="897.595000" data-stop="898.277000">the blog post.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="898.357000" data-stop="898.817000">Gotcha.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="899.000000">14:59</span> <strong>Holidays
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-raymond-zeitler/ec23-raymond-zeitler-00-15-07-533.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-raymond-zeitler/ec23-raymond-zeitler-00-15-07-533.jpg" alt="image from video 00:15:07.533" data-time="00:15:07.533"></a><span class="audio-time caption" data-speaker="Raymond" data-start="899.579000" data-stop="902.603000"><strong class="speaker-name">Raymond:</strong>  So what I was looking for here is my</span> <span class="audio-time caption" data-speaker="Raymond" data-start="902.663000" data-stop="904.346000">list of holidays.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="905.648000" data-stop="908.753000">So what you could do with...</span> <span class="audio-time caption" data-speaker="Raymond" data-start="909.593000" data-stop="914.840000">This is basically a calendar thing, but you can</span> <span class="audio-time caption" data-speaker="Raymond" data-start="915.180000" data-stop="916.282000">set up all your holidays.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="916.502000" data-stop="919.827000">For example, Towel Day is coming up.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="919.847000" data-stop="922.450000">It will be Monday for you Hitchhiker's Guide</span> <span class="audio-time caption" data-speaker="Raymond" data-start="922.691000" data-stop="923.612000">geeks.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="924.132000" data-stop="926.856000">You've got your Star Wars Day, you've got Pi Day,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="927.517000" data-stop="929.540000">which you won't find on a regular calendar, of</span> <span class="audio-time caption" data-speaker="Raymond" data-start="929.600000" data-stop="932.023000">course.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="932.392000" data-stop="935.317000">And that's an atrocious thing here.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="935.337000" data-stop="936.759000"><strong class="speaker-name">Sacha:</strong>  I was just admiring that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="937.139000" data-stop="939.243000">It's a very complicated expression, but you can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="939.283000" data-stop="939.583000">do it.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="940.345000" data-stop="941.186000"><strong class="speaker-name">Raymond:</strong>  You can, right.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="941.206000" data-stop="943.329000">So that's what I came up for Election Day.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="945.212000" data-stop="947.656000">And if anyone's a Seinfeld fan, you've got your</span> <span class="audio-time caption" data-speaker="Raymond" data-start="947.736000" data-stop="949.920000">Festivus.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="950.701000" data-stop="953.185000">So that's a neat thing.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="953.205000" data-stop="955.028000">Yeah, and don't worry about the</span> <span class="audio-time caption" data-speaker="Raymond" data-start="955.068000" data-stop="956.049000">longitude-latitude.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="957.872000" data-stop="959.074000">Everyone knows where I am.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="961.518000" data-stop="965.233000"><strong class="speaker-name">Sacha:</strong>  [another password hiccup] ... dealing with the panic,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="965.234000" data-stop="968.833000">it's good. It's good practice. And also everyone is very nice,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="968.834000" data-stop="970.700000">so afterwards, I'll just probably make</span> <span class="audio-time caption" data-speaker="Sacha" data-start="970.701000" data-stop="972.267000">this unlisted and then see if there's anything</span> <span class="audio-time caption" data-speaker="Sacha" data-start="972.268000" data-stop="973.100000">that actually needs scrubbing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="973.101000" data-stop="975.499000">But probably it's all good.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="975.500000" data-stop="977.156000">Yes, so you've got calendar, you've got</span> <span class="audio-time caption" data-speaker="Sacha" data-start="977.237000" data-stop="979.442000">holidays, you print them out.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="979.912000" data-stop="982.656000">Are there other ways that you use Emacs, kind of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="982.736000" data-stop="985.159000">in this online-offline way?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="985.900000" data-stop="987.502000">Are there any other things that you like to print</span> <span class="audio-time caption" data-speaker="Sacha" data-start="987.662000" data-stop="989.865000">out, or do you do the rest of the things in your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="989.905000" data-stop="990.326000">computer?</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="991.347000" data-stop="992.529000"><strong class="speaker-name">Raymond:</strong>  It's all on computer, yeah.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="992.549000" data-stop="995.173000">So the only thing that's printed out is the</span> <span class="audio-time caption" data-speaker="Raymond" data-start="995.213000" data-stop="996.815000">planner datebook.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="998.437000" data-stop="1000.440000">By planner, I mean this thing.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1002.462000" data-stop="1004.405000">Okay.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1004.425000" data-stop="1005.126000">So...</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1005.000000">16:45</span> <strong>Making calendars for other people</strong></div><p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1005.713000" data-stop="1006.374000"><strong class="speaker-name">Raymond:</strong> Oh, yeah.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1006.594000" data-stop="1009.698000">Anyway, getting back to why I break up my diary</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1009.838000" data-stop="1015.565000">into multiple files is eventually I may want to</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1016.346000" data-stop="1019.410000">create these things for other people, right?</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1019.871000" data-stop="1021.913000">Print out a date book for my wife, for example.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1022.013000" data-stop="1024.236000">So she's going to want to know when Towel Day is,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1024.256000" data-stop="1025.077000">right?</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1025.097000" data-stop="1026.858000">Well, that's a different thing, but she's not</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1026.878000" data-stop="1029.983000">going to want a lot of other things.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1029.963000" data-stop="1031.385000"><strong class="speaker-name">Sacha:</strong>  Yeah, it's very customizable.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1031.425000" data-stop="1033.367000">You can just say, okay, include these, you know,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1033.387000" data-stop="1034.990000">modules in the calendar.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1035.550000" data-stop="1036.452000">Yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1036.472000" data-stop="1036.632000">Yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1036.652000" data-stop="1036.811000">Yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1036.832000" data-stop="1037.333000">Cool.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1038.054000" data-stop="1042.280000"><strong class="speaker-name">Raymond:</strong>  So, and then getting back to the diary again, yes.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1042.300000" data-stop="1045.699000"><strong class="speaker-name">Sacha:</strong>  I can move this.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1045.700000" data-stop="1046.200000">We're safe.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1046.201000" data-stop="1045.544000">Yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1045.784000" data-stop="1046.786000">We're safe.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1046.806000" data-stop="1047.733000"><strong class="speaker-name">Raymond:</strong>  Okay.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1047.000000">17:27</span> <strong>Keeping track of when things were done on the house</strong></div><p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1047.734000" data-stop="1051.532000"><strong class="speaker-name">Raymond:</strong> So one thing I like to do is keep track of when</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1052.761000" data-stop="1054.944000">things were done on the house.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1057.748000" data-stop="1060.571000"><strong class="speaker-name">Sacha:</strong>  You've got a license plate?</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1060.792000" data-stop="1064.176000"><strong class="speaker-name">Raymond:</strong>  No, there's really nothing bad here.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1065.878000" data-stop="1068.221000">For example, if you want to know when you have to</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1068.281000" data-stop="1071.626000">register your car, you can put that in there and</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1071.686000" data-stop="1073.769000">it'll show up on your little planner.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1074.850000" data-stop="1076.372000">So I thought that was pretty neat.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1076.605000" data-stop="1079.291000"><strong class="speaker-name">Sacha:</strong>  And I like that you can say a number of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1079.371000" data-stop="1081.737000">years ago, so it automatically keeps track of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1081.777000" data-stop="1081.997000">that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1082.398000" data-stop="1084.403000">You can wish somebody a specific number of years,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1084.443000" data-stop="1086.508000">happy birthday, instead of just a generic happy</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1086.528000" data-stop="1086.909000">birthday.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1086.929000" data-stop="1088.072000">You don't have to do math.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1089.094000" data-stop="1089.916000">Nice, nice.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1091.219000" data-stop="1093.905000">Diary, I think it's underutilized.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1094.408000" data-stop="1095.510000"><strong class="speaker-name">Raymond:</strong>  It is, yeah.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1095.750000" data-stop="1098.835000">And what I like about Emacs is that the people</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1098.975000" data-stop="1103.202000">who are, you know, creating functions and adding</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1103.262000" data-stop="1108.771000">to it use it and have really good design ideas.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1109.512000" data-stop="1113.218000">So, oh, this is, let's go back to something else</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1113.278000" data-stop="1113.499000">here.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1114.921000" data-stop="1118.667000">Okay, so back to my .Emacs.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1118.687000" data-stop="1119.268000">Let's see.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1120.450000" data-stop="1121.091000">Let me just...</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1121.324000" data-stop="1124.048000">In the interim, before we come up with something</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1124.108000" data-stop="1126.552000">else to talk about, I'll just talk about some of</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1126.732000" data-stop="1129.897000">the modifications.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1129.000000">18:49</span> <strong>My first customizations: backspace, buffers</strong></div><p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1129.917000" data-stop="1131.960000"><strong class="speaker-name">Raymond:</strong> And by the way, when I first started using Emacs,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1132.040000" data-stop="1133.482000">I decided not to do anything.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1133.602000" data-stop="1138.209000">I'm a Windows user, so naturally you might want</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1138.229000" data-stop="1142.155000">to use CUA mode, but I never did that.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1142.175000" data-stop="1145.239000">And the first customization I did was...</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1145.658000" data-stop="1150.207000">For some reason the backspace key was doing the</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1150.267000" data-stop="1151.149000">delete function.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1154.737000" data-stop="1156.260000">I think that was Emacs 19.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1157.362000" data-stop="1161.270000">So that was the one thing I changed.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1163.309000" data-stop="1167.097000">And then the other thing I changed is very soon I</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1167.157000" data-stop="1168.600000">had multiple buffers.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1168.620000" data-stop="1170.825000">Like if you're using Emacs for any amount of</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1170.905000" data-stop="1173.371000">time, even like 10 minutes, you'll have multiple</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1173.391000" data-stop="1174.654000">buffers.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1174.674000" data-stop="1178.161000">And I was using a tabbed web browser at the time,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1178.221000" data-stop="1179.985000">so it's easy.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1179.965000" data-stop="1184.574000">To switch tabs by just pressing the Ctrl-Tab key</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1184.614000" data-stop="1189.884000">or Shift-Ctrl-Tab key to switch between tabs.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1190.525000" data-stop="1194.152000">And I figured, let me do that with the buffers.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1194.232000" data-stop="1196.556000">And so that's somewhere in here.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1199.202000" data-stop="1201.385000"><strong class="speaker-name">Sacha:</strong>  Oh yeah, there's a control tab, control</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1201.426000" data-stop="1203.549000">shift tab, next buffer, and previous buffer.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1204.050000" data-stop="1207.435000"><strong class="speaker-name">Raymond:</strong>  Yeah, so that was one of the first</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1207.756000" data-stop="1213.024000">things besides the delete key modification that I did.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1213.044000" data-stop="1216.890000">But I'm also now, since I have multiple windows</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1217.351000" data-stop="1221.177000">open as well, I'm using the windows...</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1221.275000" data-stop="1226.262000">Next and Windows Prior.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1226.943000" data-stop="1231.068000">Next is, I think, the page down key, I believe.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1231.669000" data-stop="1233.051000">And Prior is the page up key.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1233.000000">20:33</span> <strong>Windows and super key
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-raymond-zeitler/ec23-raymond-zeitler-00-21-50-033.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-raymond-zeitler/ec23-raymond-zeitler-00-21-50-033.jpg" alt="image from video 00:21:50.033" data-time="00:21:50.033"></a><span class="audio-time caption" data-speaker="Raymond" data-start="1233.652000" data-stop="1239.460000"><strong class="speaker-name">Raymond:</strong> And how you can get to use the Windows key is, I</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1239.500000" data-stop="1243.545000">got that from Xah Lee's website.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1244.627000" data-stop="1246.510000">And where is that now?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1246.530000" data-stop="1248.312000"><strong class="speaker-name">Sacha:</strong>  Yeah, you make it the super key.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1248.595000" data-stop="1251.899000">I use Xmodmap but other people can use different</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1251.939000" data-stop="1253.802000">things depending on their setup.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1254.443000" data-stop="1256.545000">Although lately I've been experimenting with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1256.646000" data-stop="1260.651000">using Kanata so that my modifiers are one-shot</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1260.691000" data-stop="1261.312000">modifiers.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1261.492000" data-stop="1264.776000">I can tap the super key and then I can let go of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1264.876000" data-stop="1268.241000">it and then I can press whatever key is next so I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1268.281000" data-stop="1269.442000">don't have to hold them at the same time.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1270.343000" data-stop="1273.067000">Oh hey look at that it's actually an option!</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1273.216000" data-stop="1274.858000">I didn't even know that it was.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1274.878000" data-stop="1277.442000">You can change it right from Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1278.984000" data-stop="1279.325000">Nice.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1280.246000" data-stop="1281.588000"><strong class="speaker-name">Raymond:</strong>  Yeah, so this is what I set up.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1281.608000" data-stop="1283.130000">I lifted this from the website.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1283.150000" data-stop="1284.212000">There's the URL.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1285.073000" data-stop="1289.759000">And if you're curious, you can go to that Emacs</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1289.779000" data-stop="1292.163000">wiki website and see this.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1292.183000" data-stop="1294.987000">The only thing that I wasn't able to get this to</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1295.127000" data-stop="1298.952000">work until I added this statement, which I found</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1300.054000" data-stop="1302.177000">in Stack Overflow or something like that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1302.815000" data-stop="1303.756000"><strong class="speaker-name">Sacha:</strong>  That is interesting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1304.577000" data-stop="1305.739000">Yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1305.759000" data-stop="1306.720000">All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1306.740000" data-stop="1309.383000">So does it mean that Emacs is entirely</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1309.443000" data-stop="1311.386000">responsible for the Windows key?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1311.486000" data-stop="1314.390000">You don't do anything else with it outside Emacs?</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1315.792000" data-stop="1316.052000"><strong class="speaker-name">Raymond:</strong>  Right.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1316.112000" data-stop="1319.076000">So yes, it intercepts the Windows key before</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1319.116000" data-stop="1323.662000">Windows does somehow magically, which can be kind</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1323.702000" data-stop="1325.884000">of frustrating because sometimes I do want to</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1326.165000" data-stop="1328.428000">open the start menu from within Emacs and I'm</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1328.828000" data-stop="1332.653000">pressing it and saying, why isn't this working?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1333.223000" data-stop="1334.985000"><strong class="speaker-name">Sacha:</strong>  This is where you just get used to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1335.025000" data-stop="1337.007000">having your own launchers within Emacs.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1338.088000" data-stop="1339.110000"><strong class="speaker-name">Raymond:</strong>  Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1339.130000" data-stop="1343.074000">Well, you know that you're a good Emacs user if</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1343.595000" data-stop="1346.498000">you start using the Emacs key bindings in other</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1346.558000" data-stop="1347.118000">programs.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1347.699000" data-stop="1350.282000">You know, how many times I've used C-y to</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1350.342000" data-stop="1354.226000">paste something in, you know, my web browser.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1354.907000" data-stop="1355.428000">Oh, boy.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1356.309000" data-stop="1357.890000"><strong class="speaker-name">Sacha:</strong>  Yeah, it's not the C-y that gets</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1357.951000" data-stop="1358.051000">me.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1358.091000" data-stop="1360.754000">It's the C-w because that closes your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1360.794000" data-stop="1362.015000">browser down.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1361.995000" data-stop="1364.782000"><strong class="speaker-name">Raymond:</strong>  Yeah, oh yes, that can be dangerous.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1365.884000" data-stop="1368.230000">But actually C-y can be bad too,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1368.290000" data-stop="1372.380000">because it's like the redo function in a lot of</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1372.420000" data-stop="1372.942000">programs.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1373.162000" data-stop="1375.127000">So if you've undone something,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1376.491000" data-stop="1377.793000">and then you redo it,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1377.813000" data-stop="1380.457000">you can get very confused very quickly.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1380.698000" data-stop="1383.663000">Anyway, so this is a neat thing to do.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1384.103000" data-stop="1385.706000">Some people might want to try that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1386.728000" data-stop="1387.669000"><strong class="speaker-name">Sacha:</strong>  Yeah, for sure.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1388.410000" data-stop="1391.035000">Having a super key means you can then go on and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1391.115000" data-stop="1392.537000">do other things with it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1392.637000" data-stop="1394.841000">You can have all these key bindings because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1394.941000" data-stop="1396.403000">nothing binds to the super key.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1396.524000" data-stop="1398.927000">So you can have all the single character key</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1398.948000" data-stop="1399.769000">bindings you like.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1400.430000" data-stop="1402.954000"><strong class="speaker-name">Raymond:</strong>  Exactly, yeah.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1403.000000">23:23</span> <strong>Org Mode class on Udemy, agenda custom commands</strong></div><p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1403.744000" data-stop="1407.690000"><strong class="speaker-name">Raymond:</strong> So I was taking, believe it or not, there's an</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1407.910000" data-stop="1409.732000">Org Mode class on Udemy.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1411.134000" data-stop="1414.920000">And it's... Rainer König did it.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1415.000000" data-stop="1416.522000">I don't know if I pronounced his name right.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1417.483000" data-stop="1426.997000">But he inspired me to do custom commands.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1428.679000" data-stop="1431.603000">So for example, if I want to look at all my bills</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1431.724000" data-stop="1432.705000">for the week,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1432.988000" data-stop="1435.091000">I would just press the b w.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1435.532000" data-stop="1436.734000"><strong class="speaker-name">Sacha:</strong>  Do you want me to move the window?</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1437.475000" data-stop="1437.796000"><strong class="speaker-name">Raymond:</strong>  I don't know.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1437.836000" data-stop="1439.779000">Is there anything dangerous here?</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1440.500000" data-stop="1443.685000">I'm not going to do it, but I'm just trying to</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1443.745000" data-stop="1445.548000">point out my thing.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1445.989000" data-stop="1446.770000"><strong class="speaker-name">Sacha:</strong>  Yeah, yeah, yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1446.790000" data-stop="1449.614000">Different agendas for slicing and dicing your Org</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1449.694000" data-stop="1450.796000">data in different ways.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1451.517000" data-stop="1453.340000"><strong class="speaker-name">Raymond:</strong>  Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1453.761000" data-stop="1456.585000">Remember you pointed out earlier that my agenda</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1456.625000" data-stop="1459.570000">was jam-packed with stuff.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1459.718000" data-stop="1463.002000">The way I manage that is I came up with a way to</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1463.302000" data-stop="1469.329000">easily apply the today tag to all those things.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1469.349000" data-stop="1473.514000">And I came up with some functions somewhere which</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1473.594000" data-stop="1480.642000">I bind to C-M-S-t. Let's see if I can find it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1481.883000" data-stop="1482.704000"><strong class="speaker-name">Sacha:</strong>  That is interesting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1482.764000" data-stop="1484.706000">So you're using a tag for the things you want to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1484.746000" data-stop="1485.507000">do today.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1485.824000" data-stop="1486.725000"><strong class="speaker-name">Raymond:</strong>  Yes.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1486.745000" data-stop="1488.508000"><strong class="speaker-name">Sacha:</strong>  Versus scheduling them, because if you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1488.548000" data-stop="1490.071000">schedule them for today, then they will still</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1490.091000" data-stop="1490.812000">show up tomorrow.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1492.494000" data-stop="1493.516000"><strong class="speaker-name">Raymond:</strong>  Well, yes, that's true.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1493.000000">24:53</span> <strong>Toggling tags
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-raymond-zeitler/ec23-raymond-zeitler-00-25-00-400.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-raymond-zeitler/ec23-raymond-zeitler-00-25-00-400.jpg" alt="image from video 00:25:00.400" data-time="00:25:00.400"></a><span class="audio-time caption" data-speaker="Raymond" data-start="1493.856000" data-stop="1496.380000"><strong class="speaker-name">Raymond:</strong> So yes, so these are the two functions I came up</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1496.440000" data-stop="1496.621000">with.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1497.722000" data-stop="1498.664000">Oh, you're toggling.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1499.685000" data-stop="1500.006000">What's that?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1500.386000" data-stop="1501.147000"><strong class="speaker-name">Sacha:</strong>  You toggle that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1501.228000" data-stop="1503.852000">You have something that lets you add or remove a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1503.892000" data-stop="1504.112000">tag.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1504.873000" data-stop="1507.698000"><strong class="speaker-name">Raymond:</strong>  Yes, yes.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1507.718000" data-stop="1508.399000">Yes, exactly.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1508.659000" data-stop="1511.403000">And maybe I could demonstrate that without</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1512.285000" data-stop="1513.907000">displaying too much stuff here.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1515.406000" data-stop="1521.277000">Okay, so here, so in the agenda, I'm a little bit</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1522.459000" data-stop="1524.302000">worried about updating.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1526.806000" data-stop="1528.710000">See, okay, so I don't know if you can see it, but</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1528.750000" data-stop="1531.174000">I just invoked it and then down here in a little.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1532.577000" data-stop="1532.957000"><strong class="speaker-name">Sacha:</strong>  Oh, yeah.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1533.839000" data-stop="1537.165000"><strong class="speaker-name">Raymond:</strong>  It says you have to press s r to save</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1537.225000" data-stop="1538.848000">and refresh the screen.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1539.740000" data-stop="1542.925000">And the reason why I didn't automatically refresh</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1542.985000" data-stop="1545.048000">and save files is because I think that's a</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1545.148000" data-stop="1545.989000">dangerous thing.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1546.370000" data-stop="1548.814000"><strong class="speaker-name">Sacha:</strong>  Yeah, because you've been removing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1548.874000" data-stop="1549.154000">things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1549.515000" data-stop="1550.075000">Okay, okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1550.436000" data-stop="1554.202000">But the idea there is you can turn the tag on and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1554.342000" data-stop="1557.607000">off from your agenda directly, which is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1557.667000" data-stop="1558.087000">interesting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1558.828000" data-stop="1560.150000">Yeah, it's there.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1560.531000" data-stop="1563.756000">And you have a different view that shows you just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1563.796000" data-stop="1565.899000">the stuff you're focusing on for today.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1567.212000" data-stop="1571.016000"><strong class="speaker-name">Raymond:</strong>  And I have that bound to "C-c a .".</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1571.237000" data-stop="1572.398000">This is going to be small.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1574.000000" data-stop="1581.508000">So there on the top are my things for today.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1582.189000" data-stop="1584.692000"><strong class="speaker-name">Sacha:</strong>  Yeah, so different ways of prioritizing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1584.952000" data-stop="1588.897000">So your agenda is the stuff that you want to keep</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1588.997000" data-stop="1589.718000">on your radar.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1590.579000" data-stop="1593.582000">And the today stuff is the stuff like, okay, you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1593.602000" data-stop="1594.163000">got some time.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1594.223000" data-stop="1596.105000">This is what you're actually going to work on.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1596.305000" data-stop="1597.288000"><strong class="speaker-name">Raymond:</strong>  Right, so.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1599.646000" data-stop="1601.348000"><strong class="speaker-name">Sacha:</strong>  Yeah, there are different ways to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1601.368000" data-stop="1601.768000">approach it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1601.808000" data-stop="1604.271000">Some people have a much more minimalist, okay, if</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1604.331000" data-stop="1606.212000">it's on the agenda, it's because I want to do it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1606.253000" data-stop="1606.713000">that day.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1607.033000" data-stop="1608.855000">And then they have a different view showing them</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1608.895000" data-stop="1610.677000">the stuff that they want to keep on their radar.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1610.997000" data-stop="1612.539000">But the nice thing about Org Mode is that it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1612.579000" data-stop="1615.081000">accommodates all these different ways of working.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1615.101000" data-stop="1616.002000"><strong class="speaker-name">Raymond:</strong>  Yeah.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1616.000000">26:56</span> <strong>TODO states</strong></div><p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1616.022000" data-stop="1619.906000"><strong class="speaker-name">Raymond:</strong> And getting back to the Rainer's class on Org</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1619.926000" data-stop="1621.266000">Mode, you know, it's not like the way</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1621.267000" data-stop="1628.995000">Carsten Dominik set it up with the default tags of to-dos.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1628.975000" data-stop="1629.736000">What is it?</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1629.756000" data-stop="1631.739000">To do, started, waiting.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1632.580000" data-stop="1636.765000">He does something a little bit different, but it</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1636.825000" data-stop="1637.386000">works for him.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1637.666000" data-stop="1640.470000">So I think that's kind of cool too.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1641.000000">27:21</span> <strong>Functions for Org Agenda
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-raymond-zeitler/ec23-raymond-zeitler-00-28-06-200.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-raymond-zeitler/ec23-raymond-zeitler-00-28-06-200.jpg" alt="image from video 00:28:06.200" data-time="00:28:06.200"></a><span class="audio-time caption" data-speaker="Raymond" data-start="1641.211000" data-stop="1642.793000"><strong class="speaker-name">Raymond:</strong> And by the way, you need two functions.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1643.153000" data-stop="1646.257000">You need one that works in an Org file and</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1646.337000" data-stop="1649.982000">another one in the agenda because they don't work</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1650.042000" data-stop="1650.763000">the same way.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1651.334000" data-stop="1656.542000"><strong class="speaker-name">Sacha:</strong>  I have some functions that act that way,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1656.562000" data-stop="1658.846000">and I usually end up checking if the major mode</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1659.427000" data-stop="1661.230000">is derived from the Org agenda.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1661.250000" data-stop="1663.994000">And then there's an with Org agenda.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1664.415000" data-stop="1667.159000">There's a macro that lets you run the code in the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1667.200000" data-stop="1668.281000">context of the task.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1668.882000" data-stop="1671.647000">So if you needed to kind of switch those</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1671.687000" data-stop="1672.909000">together, it's possible.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1673.470000" data-stop="1675.212000">But you already have something that works, so</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1675.253000" data-stop="1676.194000">it's fine.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1676.174000" data-stop="1678.216000"><strong class="speaker-name">Raymond:</strong>  Yeah, and it's easy because, you know,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1678.236000" data-stop="1682.161000">I copied this from some existing function like,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1682.701000" data-stop="1685.825000">you know, when you press Z, for example, it</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1686.205000" data-stop="1687.146000">creates a note.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1687.166000" data-stop="1690.790000">So you can leverage that code and write your own</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1690.850000" data-stop="1692.212000">code instead.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1692.932000" data-stop="1697.597000"><strong class="speaker-name">Sacha:</strong>  It's called org-agenda-with-point-at-orig-entry.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1697.617000" data-stop="1698.619000">It does the thing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1699.419000" data-stop="1701.181000">You know, this part that you're doing at the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1701.221000" data-stop="1703.564000">moment with manually finding the marker and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1703.944000" data-stop="1705.506000">jumping to it and all that stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1706.718000" data-stop="1708.520000">In the future, if you find yourself writing one</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1708.540000" data-stop="1709.602000">of these agenda functions.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1711.884000" data-stop="1712.005000"><strong class="speaker-name">Raymond:</strong>  Yeah.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1714.000000">28:34</span> <strong>exeln, shellfn: executing things in DOS
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-raymond-zeitler/ec23-raymond-zeitler-00-29-15-767.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-raymond-zeitler/ec23-raymond-zeitler-00-29-15-767.jpg" alt="image from video 00:29:15.767" data-time="00:29:15.767"></a><span class="audio-time caption" data-speaker="Raymond" data-start="1714.428000" data-stop="1716.230000"><strong class="speaker-name">Raymond:</strong> So what else do I have here?</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1717.932000" data-stop="1720.655000">Oh, so sometimes I just like to execute.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1720.936000" data-stop="1724.800000">So I do a lot of batch files or scripts, and I'll</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1724.881000" data-stop="1731.268000">just do C-c x to send that particular line</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1731.429000" data-stop="1734.953000">to the DOS prompt just to execute it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1735.760000" data-stop="1736.942000"><strong class="speaker-name">Sacha:</strong>  Oh, execute line.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1736.962000" data-stop="1739.725000">Okay, so that's what EXELN means.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1740.206000" data-stop="1740.587000">That's cool.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1740.607000" data-stop="1745.634000">So it's basically you can evaluate things without</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1745.694000" data-stop="1747.636000">having to switch and paste and switch and paste</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1747.676000" data-stop="1748.858000">and all that stuff.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1748.878000" data-stop="1749.259000"><strong class="speaker-name">Raymond:</strong>  Yes.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1749.879000" data-stop="1752.263000">And just to demonstrate, if I wanted to do the</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1752.323000" data-stop="1753.264000">dir command.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1756.308000" data-stop="1760.434000"><strong class="speaker-name">Sacha:</strong>  It's like an eval-last-sexp, but for DOS.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1760.735000" data-stop="1764.420000">Yeah, so this is... And hats off to you for,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1764.440000" data-stop="1766.563000">like, batch scripting with DOS.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1766.884000" data-stop="1769.428000">I'm very spoiled with my bash and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1769.508000" data-stop="1771.411000">zsh, but you're in Windows and you're making</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1771.471000" data-stop="1771.791000">it work.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1772.552000" data-stop="1772.833000"><strong class="speaker-name">Raymond:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1774.074000" data-stop="1778.260000">Which is like a handicap, isn't it?</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1778.701000" data-stop="1785.912000">And then I can just send the whole buffer to the</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1785.972000" data-stop="1788.375000">command prompt, which I think now there's a</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1788.435000" data-stop="1788.936000">function</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1789.372000" data-stop="1791.735000">that don't really does that, you know, out of the</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1791.776000" data-stop="1795.800000">box. Maybe not.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1795.801000" data-stop="1799.467000">And then if I wanted to insert the date, you</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1799.487000" data-stop="1801.289000">know, just some easy stuff like that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1801.430000" data-stop="1803.913000"><strong class="speaker-name">Sacha:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1803.933000" data-stop="1804.274000">Yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1804.294000" data-stop="1805.556000">Yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1805.796000" data-stop="1806.657000">I recently added this insert date and time</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1806.717000" data-stop="1808.400000">thing as an abbrev,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1808.420000" data-stop="1810.863000">So I just type it and that frees up more of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1810.903000" data-stop="1812.165000">my key bindings for other things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1812.926000" data-stop="1813.027000">Yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1813.047000" data-stop="1814.308000">But it's surprising.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1814.328000" data-stop="1816.612000">You always find yourself wanting to refer to the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1816.652000" data-stop="1827.759000">time and that way you don't have to look.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1827.000000">30:27</span> <strong>Middle mouse click</strong></div><p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1827.760000" data-stop="1829.635000"><strong class="speaker-name">Raymond:</strong>  I don't remember how Emacs treated the</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1830.296000" data-stop="1833.099000">scroll wheel or the middle mouse button, but I</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1833.180000" data-stop="1834.641000">found that this was very useful.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1837.585000" data-stop="1842.631000">I believe what you can do is click the mouse.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1842.731000" data-stop="1843.652000">Let's see what happens.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1845.014000" data-stop="1848.218000">It pasted what I had there.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1848.400000" data-stop="1849.061000"><strong class="speaker-name">Sacha:</strong>  Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1849.081000" data-stop="1852.185000">I think middle is usually paste, but it sounds</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1852.266000" data-stop="1854.328000">like you've got it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1854.549000" data-stop="1855.009000">Oh, okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1855.049000" data-stop="1858.494000">So, so you, you can scroll if you're dragging,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1858.595000" data-stop="1861.358000">but you can also click, just middle click to paste.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1861.579000" data-stop="1861.959000">Yes.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1863.021000" data-stop="1863.221000"><strong class="speaker-name">Raymond:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1863.241000" data-stop="1863.842000">So it's fun.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1864.563000" data-stop="1871.492000">There are some things that down-mouse-2 does,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1871.493000" data-stop="1874.357000">and I'm not able to do that now.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1874.337000" data-stop="1879.789000">I think, for example, spell checking, if you</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1879.829000" data-stop="1881.994000">want to correct a word at point, I think the</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1882.034000" data-stop="1885.441000">command is to do the mouse-2 button, but I no</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1885.501000" data-stop="1890.051000">longer can do that. But that's okay.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1891.128000" data-stop="1894.091000"><strong class="speaker-name">Sacha:</strong>  Over 20 plus years of Emacs, I'm sure</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1894.832000" data-stop="1897.094000">parts of your workflow have come in and out of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1898.235000" data-stop="1900.297000">viability as things change.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1901.278000" data-stop="1905.422000">I feel like Emacs does make more of an effort to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1905.462000" data-stop="1908.885000">keep things pretty stable for the most part,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1909.146000" data-stop="1911.768000">hence all the contortions that new Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1911.808000" data-stop="1914.031000">development has to do in order to keep things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1914.071000" data-stop="1919.899000">working but also adapt to the times.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1919.000000">31:59</span> <strong>Keybindings in other apps: Vivaldi</strong></div><p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1919.900000" data-stop="1922.304000"><strong class="speaker-name">Raymond:</strong>  I think I mentioned before how I</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1923.806000" data-stop="1927.311000">co-opted the ability to switch tabs.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1927.352000" data-stop="1931.037000">I got the idea from the web browser and</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1931.377000" data-stop="1932.899000">incorporated it into Emacs.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1932.919000" data-stop="1935.343000">But I've started to do the opposite.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1935.904000" data-stop="1942.253000">So if you do C-k, which deletes anything</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1942.293000" data-stop="1945.958000">from point to the end of the line...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1946.360000" data-stop="1949.163000"><strong class="speaker-name">Sacha:</strong>  Yeah, you've up-cased a bunch of things.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1949.184000" data-stop="1951.106000"><strong class="speaker-name">Raymond:</strong>  Yes, I am going to have to close this</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1951.266000" data-stop="1953.148000">because I'm really scared now.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1953.189000" data-stop="1954.410000"><strong class="speaker-name">Sacha:</strong>  revert-buffer, maybe?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1957.093000" data-stop="1957.594000">Or undo?</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="1959.476000" data-stop="1960.878000"><strong class="speaker-name">Raymond:</strong>  Yes, I'm trying to do undo.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1960.898000" data-stop="1963.161000">That's what I meant to do.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1963.181000" data-stop="1963.582000">We're back.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1964.242000" data-stop="1964.663000">There we go.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1965.544000" data-stop="1969.769000">So, yeah, because I did C-x C-u</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1969.829000" data-stop="1970.410000">instead of...</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1971.655000" data-stop="1972.015000">whatever.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1973.056000" data-stop="1978.001000">So what I've decided to do then is if you're</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1978.101000" data-stop="1980.963000">using a web browser and you're opening new tabs,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1981.043000" data-stop="1988.750000">which I do, so I am able to bind a key and I'm</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1988.850000" data-stop="1993.555000">using control shift K to close all the tabs to</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1993.575000" data-stop="1994.756000">the right of the current tab.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1996.397000" data-stop="1998.679000">So that's sort of like borrowing an Emacs</span> <span class="audio-time caption" data-speaker="Raymond" data-start="1998.960000" data-stop="2001.662000">keystroke and using it in my browser.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2004.086000" data-stop="2008.200000">[Sacha] How are you doing that? Are you using AutoHotkey</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2008.201000" data-stop="2011.560000">or does Vivaldi let you do that automatically?</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2011.561000" data-stop="2014.033000"></span> <span class="audio-time caption" data-speaker="Raymond" data-start="2014.034000" data-stop="2021.302000">into the Settings - Keyboard shortcuts...</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2021.960000" data-stop="2025.063000">So actually, I don't know how to increase the</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2025.163000" data-stop="2026.044000">size of this.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2025.780000" data-stop="2026.864000"><strong class="speaker-name">Sacha:</strong>  That's fine. We can see it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2026.985000" data-stop="2029.407000">People can go open up Vivaldi if they're curious.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2029.767000" data-stop="2031.288000">But the idea there is you get used to these</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2031.369000" data-stop="2034.511000">conveniences or these ideas from Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2034.591000" data-stop="2036.233000">And now you're like, OK, I want to make my other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2036.393000" data-stop="2040.277000">apps feel at least a little bit this way.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2041.137000" data-stop="2042.178000"><strong class="speaker-name">Raymond:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2042.198000" data-stop="2045.481000">Yeah, so.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2046.162000" data-stop="2047.904000"><strong class="speaker-name">Sacha:</strong>  Yeah?</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2048.024000" data-stop="2048.844000"><strong class="speaker-name">Raymond:</strong>  And I still keep learning stuff about</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2048.985000" data-stop="2050.565000">Emacs.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2050.000000">34:10</span> <strong>M-s M-w, eww-search-words</strong></div><p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2050.900000" data-stop="2053.203000"><strong class="speaker-name">Raymond:</strong> Believe it or not, I didn't know that you could</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2053.322000" data-stop="2058.270000">select a region and then do an internet search on</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2058.331000" data-stop="2059.753000">it, right?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2062.777000" data-stop="2063.697000"><strong class="speaker-name">Sacha:</strong>  Today I am learning.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2064.600000" data-stop="2067.824000">How do you select a region and do an internet</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2067.844000" data-stop="2068.304000">search on it?</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2068.324000" data-stop="2074.994000"><strong class="speaker-name">Raymond:</strong>  So M-s M-w (Alt s and Alt w) is loading in EWW.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2075.695000" data-stop="2079.000000">And this is what Atomic Chrome Start Server is.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2079.368000" data-stop="2085.596000">And that's actually a Chrome extension that you</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2085.676000" data-stop="2092.885000">can... Okay, so if I go to some... Okay, okay.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2093.005000" data-stop="2095.248000"><strong class="speaker-name">Sacha:</strong>  It is EWW Search Words.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2096.668000" data-stop="2101.135000">Okay, good.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2101.155000" data-stop="2101.696000">Cool.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2102.737000" data-stop="2105.140000"><strong class="speaker-name">Raymond:</strong>  So if I go to your website now</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2105.677000" data-stop="2109.101000">and I want to type a comment, which I think I can</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2109.141000" data-stop="2109.561000">do, right?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2110.102000" data-stop="2111.903000"><strong class="speaker-name">Sacha:</strong>  Oh, I switched to just doing comments</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2111.923000" data-stop="2112.504000">through email.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2114.626000" data-stop="2117.229000">Because Disqus was getting all ads-y and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2118.010000" data-stop="2120.512000">annoying and tracking JavaScript and stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2120.532000" data-stop="2122.835000">So now it's like every post has an email me if</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2122.875000" data-stop="2123.415000">you have thoughts.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2123.816000" data-stop="2125.758000">Sometimes it has a Mastodon link if I've</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2125.838000" data-stop="2127.680000">remembered to post it to Mastodon beforehand.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2129.161000" data-stop="2129.862000"><strong class="speaker-name">Raymond:</strong>  So...</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2130.871000" data-stop="2134.116000">What I'm trying to do is find a window that I can</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2134.176000" data-stop="2134.717000">type into.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2134.737000" data-stop="2136.579000"><strong class="speaker-name">Sacha:</strong>  There's a search box up there to the top.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2136.599000" data-stop="2139.023000">But basically, you're going to show us how you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2139.063000" data-stop="2142.448000">can take stuff from the browser and put it into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2143.089000" data-stop="2145.272000">Emacs for easier editing.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2145.292000" data-stop="2147.235000"><strong class="speaker-name">Raymond:</strong>  Yes.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2147.496000" data-stop="2149.719000"><strong class="speaker-name">Sacha:</strong>  All right.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2150.000000">35:50</span> <strong>Saving links with Org-store-link</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2150.480000" data-stop="2151.482000"><strong class="speaker-name">Sacha:</strong> Charlie has a question.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2151.562000" data-stop="2155.107000">So Charlie asks, do you use Org Mode protocol at</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2155.288000" data-stop="2157.691000">all for browser to Emacs interaction?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2157.711000" data-stop="2160.255000">If so, were there any complications to set it up</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2160.977000" data-stop="2161.678000">on Windows?</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2163.781000" data-stop="2165.183000"><strong class="speaker-name">Raymond:</strong>  I don't.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2165.203000" data-stop="2167.667000"><strong class="speaker-name">Sacha:</strong>  Is there like bookmarklets for capturing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2167.968000" data-stop="2168.989000">or doing things?</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2170.071000" data-stop="2171.433000"><strong class="speaker-name">Raymond:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2171.713000" data-stop="2172.354000">So, oh yeah.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2172.435000" data-stop="2173.636000">So capture is just a wonderful tool.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2173.817000" data-stop="2174.177000">Okay.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2174.197000" data-stop="2175.880000">So I'm not sure I'm</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2176.535000" data-stop="2180.406000">I can answer the question, but what I would say</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2180.908000" data-stop="2186.565000">is, let's say if I wanted to... Alright, let's</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2186.605000" data-stop="2187.026000">try this.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2187.086000" data-stop="2188.350000">This might not be too bad.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2190.187000" data-stop="2197.296000">So let's say I wanted to create a link to some ad.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2197.837000" data-stop="2202.583000">So no, I don't use EWW to capture the link.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2202.603000" data-stop="2205.567000">But I just learned out how you can do it.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2206.087000" data-stop="2214.318000">But if I wanted to go to another, all right,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2214.338000" data-stop="2216.361000">well, this is a silly example.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2216.421000" data-stop="2219.805000">But if I were to do just a help,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2222.519000" data-stop="2231.411000">Let's say, if I just wanted to find a place in</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2231.431000" data-stop="2239.341000">the info, in info, if I do C-c-L, it'll create</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2240.282000" data-stop="2243.366000">a link for me, and then if I wanted to here, put</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2243.406000" data-stop="2243.887000">that link.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2246.450000" data-stop="2249.134000">So it's already there in the mode line.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2249.536000" data-stop="2250.178000"></span> <span class="audio-time caption" data-speaker="Raymond" data-start="2250.479000" data-stop="2256.376000"></span> <span class="audio-time caption" data-speaker="Raymond" data-start="2256.396000" data-stop="2257.499000">And I can have that there.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2257.719000" data-stop="2262.553000">So this will go, and I'll close this help.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2262.573000" data-stop="2262.673000"><strong class="speaker-name">Sacha:</strong>  Okay.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2262.694000" data-stop="2264.238000"><strong class="speaker-name">Raymond:</strong>  And then if I click this, it'll open</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2264.278000" data-stop="2264.980000">back up.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2265.263000" data-stop="2267.486000"><strong class="speaker-name">Sacha:</strong>  So you use the org-store-link a lot.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2267.887000" data-stop="2270.571000">Do you use org-capture as well?</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2271.672000" data-stop="2271.993000"><strong class="speaker-name">Raymond:</strong>  Yes.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2272.654000" data-stop="2275.418000"><strong class="speaker-name">Sacha:</strong>  I saw your keyboard, your key binding</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2275.478000" data-stop="2276.239000">for it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2276.259000" data-stop="2280.185000">But you don't necessarily have bookmarks or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2280.745000" data-stop="2285.172000">extensions in Vivaldi to do the capturing with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2285.192000" data-stop="2287.495000">the context from your browser.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2287.515000" data-stop="2289.398000">You'll just copy and paste the link manually.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2290.087000" data-stop="2290.767000"><strong class="speaker-name">Raymond:</strong>  Exactly.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2290.768000" data-stop="2293.939000">That sounds like fun, though.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2293.940000" data-stop="2295.594000">[Sacha] That's a nice thing about Emacs.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2295.614000" data-stop="2297.717000">There's always one more thing to tweak,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2297.797000" data-stop="2300.100000">one more thing to learn. You've been tweaking your</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2300.200000" data-stop="2302.203000">Emacs for a long time, and yet there's still more</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2302.243000" data-stop="2304.224000">to do, to fiddle with and explore.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2304.000000">38:24</span> <strong>How I got into Emacs</strong></div><p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2304.225000" data-stop="2310.253000"><strong class="speaker-name">Raymond:</strong> Yeah if you can think way, way, way, back, how did you</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2310.293000" data-stop="2311.555000">get into Emacs in the first place?</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2312.395000" data-stop="2313.316000"></span> <span class="audio-time caption" data-speaker="Raymond" data-start="2313.336000" data-stop="2317.943000">So, you know, I was thinking about how my career,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2318.103000" data-stop="2321.148000">like the first half of my career, I've been using</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2321.168000" data-stop="2326.856000">an IBM PC and MS-DOS, and it was all command line</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2327.297000" data-stop="2328.338000">based.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2328.358000" data-stop="2331.643000">And as well, those machines were quite slow.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2331.663000" data-stop="2335.028000">So what we would often do is</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2335.008000" data-stop="2338.832000">Write batch files and basically have things</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2339.733000" data-stop="2341.935000">happen while we were away.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2342.896000" data-stop="2345.779000">Go and get a cup of coffee or leave for the day</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2345.839000" data-stop="2347.761000">and come back the next day and hope it was done.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2349.823000" data-stop="2355.088000">I was working with text files for 20 years.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2357.310000" data-stop="2359.732000">I had a really good text editor.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2359.772000" data-stop="2361.454000">It was called Brief.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2361.603000" data-stop="2365.813000">And it had a lot of nice features.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2365.913000" data-stop="2368.579000">It was, of course... You could record and playback</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2368.719000" data-stop="2370.704000">keystroke macros, right?</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2370.744000" data-stop="2371.405000">Sounds familiar.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2372.067000" data-stop="2375.094000">It also had a scripting language.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2375.435000" data-stop="2376.577000">Of course, it had undo.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2376.878000" data-stop="2379.063000">But the nice thing I really liked about it is</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2379.083000" data-stop="2380.827000">that you could do column editing,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2381.330000" data-stop="2384.134000">right? So you could delete columns of text, or add</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2384.174000" data-stop="2386.717000">columns, or cut and paste and move them around, and</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2386.758000" data-stop="2390.262000">stuff like that. Because if you're using a lot of</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2390.403000" data-stop="2395.149000">csv files, it's really columnar</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2395.329000" data-stop="2398.534000">in nature. I guess I can't pronounce</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2398.574000" data-stop="2402.820000">that word. But when I moved to Windows,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2403.280000" data-stop="2406.104000">that text editor didn't work so well. It wasn't</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2406.164000" data-stop="2408.788000">very happy in a multitasking environment</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2409.595000" data-stop="2412.241000">And so I started looking around for stuff.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2413.565000" data-stop="2417.334000">I did find an editor actually that it had the</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2417.374000" data-stop="2421.985000">same key bindings as brief, but it had one</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2422.065000" data-stop="2422.586000">problem.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2422.606000" data-stop="2425.393000">And if you open, for example, if you opened a</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2426.215000" data-stop="2427.418000">binary file,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2427.652000" data-stop="2431.236000">that had a null character, it would crash.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2432.056000" data-stop="2434.919000">So I don't know if that bothered me.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2434.999000" data-stop="2437.262000">So then I started looking around for another one.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2438.062000" data-stop="2441.786000">And then I guess it was in Usenet that somebody</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2441.846000" data-stop="2443.147000">said, why don't you try Emacs?</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2443.948000" data-stop="2446.070000">As if I heard of it and decided not to.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2448.152000" data-stop="2450.335000">So I did, and I really liked it.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2450.815000" data-stop="2454.739000">So maybe I'm going to go back and search for that</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2455.293000" data-stop="2458.819000">conversation and thank the person.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2458.820000" data-stop="2465.919000">That'd be something I could put on my Org agenda.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2465.000000">41:05</span> <strong>Did it click for you right away or is it something that grew on you over time?</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2465.920000" data-stop="2468.383000"><strong class="speaker-name">Sacha:</strong>  Did it click for you right away or is it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2468.423000" data-stop="2470.087000">something that grew on you over time?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2472.232000" data-stop="2474.297000">I started right away with the tutorial</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2474.918000" data-stop="2479.322000">And I said, ah, this is crazy to have to do.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2480.083000" data-stop="2481.845000">And I don't even know how to navigate with the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2481.885000" data-stop="2483.206000">original key bindings.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2484.247000" data-stop="2487.771000">So I expected to be able to use the arrow keys.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2487.911000" data-stop="2489.492000">And I don't think it was set up that way.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2490.653000" data-stop="2493.156000">But then I stuck with it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2493.176000" data-stop="2496.699000">And like I said, I didn't adopt the CUA binding</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2497.440000" data-stop="2500.223000">or anything like that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2500.243000" data-stop="2504.487000">Yeah, and I just grew to learn it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2505.000000">41:45</span> <strong>Maybe my own theme?</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2505.310000" data-stop="2509.421000"><strong class="speaker-name">Sacha:</strong> I had thought about coming up with a theme for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2509.461000" data-stop="2511.406000">it, a different color theme.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2511.426000" data-stop="2513.090000">And I tried that for a while, but then when I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2513.190000" data-stop="2515.577000">would use a different mode, it just looked</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2515.617000" data-stop="2516.118000">terrible.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2516.238000" data-stop="2520.349000">So I'm keeping the same mode now.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2520.937000" data-stop="2523.240000"></span> <span class="audio-time caption" data-speaker="Sacha" data-start="2523.280000" data-stop="2525.122000">doing is they'll take something like</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2525.123000" data-stop="2528.368000">modus themes and then they can change the colors of it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2528.408000" data-stop="2530.351000">without necessarily having to make all the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2530.811000" data-stop="2533.315000">mappings of, okay, this thing in this mode, you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2533.335000" data-stop="2534.577000">should use this kind of face.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2535.018000" data-stop="2536.900000">So if you still want to have your customized</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2536.940000" data-stop="2539.725000">colors, that might be an approach to consider.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2542.308000" data-stop="2543.750000"><strong class="speaker-name">Raymond:</strong>  Yeah. Going to stop sharing for a second.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2544.492000" data-stop="2546.839000"><strong class="speaker-name">Sacha:</strong>  Sure.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2546.000000">42:26</span> <strong>Other editors? Always Emacs</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2546.840000" data-stop="2549.811000"><strong class="speaker-name">Sacha:</strong> Did you ever flirt with other editors again after</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2550.231000" data-stop="2551.113000">getting into Emacs?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2551.213000" data-stop="2553.476000">Or has it basically been mostly Emacs for the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2553.516000" data-stop="2554.037000">last while?</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2554.638000" data-stop="2556.380000"><strong class="speaker-name">Raymond:</strong>  Oh my gosh, how could you even say</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2556.440000" data-stop="2557.001000">such a thing?</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2557.321000" data-stop="2560.085000">No, it never occurred to me to do that.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2560.406000" data-stop="2565.172000">But some of the guys were using Notepad++, which,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2566.154000" data-stop="2570.740000">you know, mine is the only computer with Emacs.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2570.760000" data-stop="2572.763000">But if I go to another computer, they have</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2573.013000" data-stop="2574.075000">No pad++.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2574.315000" data-stop="2575.357000">I would be using that.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2575.417000" data-stop="2576.378000">And it's nice.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2576.479000" data-stop="2579.083000">It has a tabbed interface so you can switch</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2579.183000" data-stop="2581.767000">between files very easily.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2581.787000" data-stop="2584.311000">But I've never considered switching to something</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2584.371000" data-stop="2584.511000">else.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2584.551000" data-stop="2588.618000">And even, you know, I took a vibe coding class.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2588.638000" data-stop="2593.546000">So they have you use VS code or anti-gravity or</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2593.586000" data-stop="2594.247000">something like that.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2595.068000" data-stop="2599.375000">And I'm thinking, wouldn't it be nice if I could</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2599.355000" data-stop="2603.065000">You know, switch to my Emacs editor and do the</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2603.105000" data-stop="2605.411000">typing there and then switch back to anti-gravity.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2606.153000" data-stop="2607.457000">I don't know.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2607.477000" data-stop="2610.705000">But I hear some people are vibe coding with</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2610.826000" data-stop="2613.212000">Emacs, so I might look into that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2614.357000" data-stop="2616.500000"><strong class="speaker-name">Sacha:</strong>  Yeah, there's been an explosion of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2616.560000" data-stop="2618.442000">different ways that people are interacting with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2618.462000" data-stop="2619.123000">these systems.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2619.964000" data-stop="2622.226000">And of course, people are also totally welcome to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2622.266000" data-stop="2623.508000">keep using Emacs without it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2623.528000" data-stop="2627.012000">But if people are curious, as the usual Emacs way</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2627.052000" data-stop="2630.096000">of doing things, there are more than a handful of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2630.176000" data-stop="2632.979000">packages all with their different workflows.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2633.760000" data-stop="2634.901000">You'll find something that fits.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2635.702000" data-stop="2637.624000"><strong class="speaker-name">Raymond:</strong>  Yeah.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2637.000000">43:57</span> <strong>Package names</strong></div><p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2637.645000" data-stop="2642.090000"><strong class="speaker-name">Raymond:</strong> I wanted to ask you, speaking about EWW, do</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2642.110000" data-stop="2643.992000">people pronounce that ew?</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2645.508000" data-stop="2648.915000">The thing about a lot of these packages, they</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2648.975000" data-stop="2652.061000">have these wonderfully self-effacing names.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2653.844000" data-stop="2656.970000">There's one called Dismal.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2657.892000" data-stop="2659.155000">That's the acronym for it.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2659.175000" data-stop="2661.539000">And it's Dismode Ain't Lotus.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2661.559000" data-stop="2663.363000">It's basically a spreadsheet.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2664.024000" data-stop="2667.010000">So I was just curious about that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2667.462000" data-stop="2669.145000"><strong class="speaker-name">Sacha:</strong>  I think we spend so much of our time</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2669.325000" data-stop="2671.749000">reading rather than you know hearing or talking</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2671.810000" data-stop="2674.214000">to people so then it's only in the middle of a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2674.294000" data-stop="2676.578000">conversation of a very rare conversation one can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2676.618000" data-stop="2679.603000">have about Emacs either on stream or in person</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2679.623000" data-stop="2682.588000">when you're like okay is it Magit or magic you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2682.628000" data-stop="2686.395000">know do I say ew but that that seems so rude ew</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2686.976000" data-stop="2691.023000">ew ew the Emacs web thing yeah sure</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2692.083000" data-stop="2694.005000"><strong class="speaker-name">Raymond:</strong>  And that's pretty new, isn't it?</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2694.085000" data-stop="2694.605000">That mode?</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2694.646000" data-stop="2698.129000">Because I remember doing W3 and then WW3.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2698.910000" data-stop="2699.791000"><strong class="speaker-name">Sacha:</strong>  There was a w3m</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2701.432000" data-stop="2702.573000">and elinks.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2703.394000" data-stop="2704.295000">I remember that too.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2705.076000" data-stop="2708.919000"><strong class="speaker-name">Raymond:</strong>  Links, I had a version of that on my,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2710.421000" data-stop="2713.404000">you know, like a DOS version of it, believe it or not.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2715.466000" data-stop="2717.668000">But it was very utilitarian, you know.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2718.138000" data-stop="2718.899000"><strong class="speaker-name">Sacha:</strong>  Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2718.919000" data-stop="2721.983000">Sometimes you just want to browse the web or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2722.043000" data-stop="2724.686000">get the information without all the clutter that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2724.766000" data-stop="2727.249000">goes on and, you know, just like all the layouts</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2727.309000" data-stop="2728.711000">and the cookie pop ups and whatever.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2728.831000" data-stop="2730.873000">Just get me the stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2730.893000" data-stop="2731.074000">Yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2731.795000" data-stop="2732.115000">Yeah.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2732.696000" data-stop="2734.017000"><strong class="speaker-name">Raymond:</strong>  Well, I do think I'm going to be</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2734.137000" data-stop="2739.484000">incorporating EWW more as I think it was Charles</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2739.524000" data-stop="2742.087000">who said, you know, creating a link</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2742.893000" data-stop="2747.143000">using C-c l to create that link and it</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2747.163000" data-stop="2749.549000">basically copies what's around it.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2751.654000" data-stop="2754.000000">I do see the usefulness of that.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2754.000000">45:54</span> <strong>What's next? Maybe auto maintenance</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2754.993000" data-stop="2757.935000"><strong class="speaker-name">Sacha:</strong>  Yeah, yeah, because org-capture and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2757.936000" data-stop="2760.339000">org-store-link can just pick up the context for you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2760.459000" data-stop="2762.261000">and then it's so easy to go back to things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2762.402000" data-stop="2762.822000">afterwards.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2763.142000" data-stop="2765.866000">I've also heard good things about org-remark.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2766.967000" data-stop="2769.370000">So that's something that's on my to-do list as</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2769.410000" data-stop="2769.630000">well.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2770.251000" data-stop="2772.493000">There are always all these things to be curious</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2772.533000" data-stop="2773.274000">about and learn.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2774.115000" data-stop="2776.038000">What are you looking forward to exploring?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2776.058000" data-stop="2777.219000">So there's EWW.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2777.519000" data-stop="2779.602000">What's next for you in this Emacs journey?</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2780.803000" data-stop="2782.485000"><strong class="speaker-name">Raymond:</strong>  Oh boy.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2783.157000" data-stop="2786.862000">I was thinking of using Org as a car maintenance</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2786.942000" data-stop="2788.624000">tool.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2789.245000" data-stop="2792.889000">And as you know, Org is great for scheduling and</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2793.350000" data-stop="2794.531000">projecting out things.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2795.392000" data-stop="2798.636000">The thing about auto maintenance, though, is a</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2798.697000" data-stop="2802.521000">lot of times something has to be done at a</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2802.581000" data-stop="2803.382000">certain mileage.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2803.402000" data-stop="2806.126000">Like every 5,000 miles, you have to rotate the</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2806.166000" data-stop="2807.848000">tires, for example.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2807.828000" data-stop="2811.477000">If you're driving regularly, like maybe 100 miles</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2811.537000" data-stop="2813.562000">a week, you could say, oh, that's going to happen</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2813.642000" data-stop="2814.825000">in a year.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2814.845000" data-stop="2819.857000">But if you're driving as erratic, then you'll</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2819.937000" data-stop="2821.180000">probably want a way to</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2821.936000" data-stop="2824.700000">download your mileage from the car.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2824.701000" data-stop="2826.433000">Cars are basically just computers, aren't they?</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2826.434000" data-stop="2828.633000">I mean, they're computers that we drive around,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2828.634000" data-stop="2832.300000">or sometimes they drive us around, frighteningly so.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2832.301000" data-stop="2839.300000">I'm sure someone is thinking about or has already</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2839.301000" data-stop="2844.872000">come up with a link between a desktop computer and a car.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2846.067000" data-stop="2847.329000">Okay, I'm not seeing.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2847.970000" data-stop="2849.292000">Well, maybe.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2849.312000" data-stop="2851.395000">Maybe that's giving somebody an idea there.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2851.916000" data-stop="2855.502000">But maybe Lori Wired or something can come up</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2855.542000" data-stop="2856.704000">with that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2856.724000" data-stop="2859.088000"><strong class="speaker-name">Sacha:</strong>  And even, you know, even a manually</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2859.148000" data-stop="2861.331000">scheduled reminder, hey, you know, just write</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2861.371000" data-stop="2864.115000">down what your odometer says, and then some kind</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2864.156000" data-stop="2866.419000">of logic that takes a look at that reading and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2866.459000" data-stop="2869.163000">says, okay, it's past this threshold, schedule</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2869.203000" data-stop="2870.185000">this task.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2870.165000" data-stop="2872.307000">And have that done semi-automatically.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2872.327000" data-stop="2873.889000">Sounds really interesting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2874.470000" data-stop="2876.412000">Because then you could have all sorts of things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2876.452000" data-stop="2880.016000">to say, all right, I have this manually scheduled</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2881.838000" data-stop="2884.041000">recurring task to manually log something.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2884.462000" data-stop="2888.907000">But then it kicks off these processes that then</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2889.547000" data-stop="2891.430000">surface all these other tasks that I should do.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2892.070000" data-stop="2892.531000">Could be fun.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2893.372000" data-stop="2895.294000">How would you do that?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2895.314000" data-stop="2896.155000">That sounds really cool.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2898.616000" data-stop="2900.257000"><strong class="speaker-name">Raymond:</strong>  So I don't know if I'll ever do that</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2900.317000" data-stop="2902.920000">because I'm pretty lax with my car maintenance</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2903.020000" data-stop="2905.782000">anyway.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2905.802000" data-stop="2907.784000"><strong class="speaker-name">Sacha:</strong>  It could be like every six months check</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2907.824000" data-stop="2909.606000">to see whether, you know, it's time.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2910.506000" data-stop="2910.987000"><strong class="speaker-name">Raymond:</strong>  Yeah, yeah.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2911.000000">48:31</span> <strong>Vibe-coding?</strong></div><p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2911.607000" data-stop="2915.130000"><strong class="speaker-name">Raymond:</strong> But I probably would try the vibe coding with</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2915.211000" data-stop="2916.292000">Emacs eventually.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2917.593000" data-stop="2919.775000">You know, every so often I see it on Reddit or</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2920.375000" data-stop="2922.077000">Stack Overflow.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2922.097000" data-stop="2923.958000">You know, somebody is trying this package or that</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2924.018000" data-stop="2924.399000">package.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2925.379000" data-stop="2927.121000">Yeah, it might be worth trying.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2927.962000" data-stop="2930.304000"><strong class="speaker-name">Sacha:</strong>  What are the challenges that people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2930.685000" data-stop="2932.947000">sometimes find when it comes to vibe-coded stuff?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2933.368000" data-stop="2937.332000">It's great for the initial prototype, but once</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2937.372000" data-stop="2939.674000">you start digging into it, it's hard to modify it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2939.734000" data-stop="2942.036000">yourself, so then you become dependent on it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2942.056000" data-stop="2944.579000">And then, of course, the large language model</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2944.639000" data-stop="2946.341000">can't quite get some things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2948.643000" data-stop="2949.964000">How are you finding this so far?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2950.024000" data-stop="2951.806000">I mean, this is very early in your journey.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2951.926000" data-stop="2954.509000">I think you're still experimenting with it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2954.489000" data-stop="2958.248000">But do you find that it's working out for you?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2959.052000" data-stop="2961.343000">How is it with Emacs?</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="2964.378000" data-stop="2966.081000"><strong class="speaker-name">Raymond:</strong>  It was just like you said, like it</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2966.121000" data-stop="2967.043000">just can't get it.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2967.063000" data-stop="2969.387000">Like I told it, well, fix this because I don't</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2969.427000" data-stop="2971.230000">like that format, and then it will do it</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2971.290000" data-stop="2971.851000">differently.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2972.572000" data-stop="2975.577000">And then, no, but it changed something else that</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2975.617000" data-stop="2978.002000">it was doing correctly, and I just couldn't get</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2978.062000" data-stop="2979.464000">it to work.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2980.265000" data-stop="2985.134000">And the other thing is, so the course that I was</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2985.214000" data-stop="2986.977000">taking, they wanted...</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2986.957000" data-stop="2996.308000">Next.js</span> <span class="audio-time caption" data-speaker="Raymond" data-start="2997.065000" data-stop="3000.628000">And I just can't describe it.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3001.949000" data-stop="3004.071000">So I was trying to back up my computer one day</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3004.131000" data-stop="3008.094000">after installing it, and it's doing on and on in</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3008.114000" data-stop="3009.095000">like 20 minutes.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3010.316000" data-stop="3013.399000">Just because there's so many files and it's just</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3013.479000" data-stop="3013.859000">crazy.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3013.899000" data-stop="3019.003000">So I thought it was fun to try it, but I think</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3019.043000" data-stop="3021.365000">I'll just stick with what I know best.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3022.306000" data-stop="3023.267000"><strong class="speaker-name">Sacha:</strong>  In a way, I'm delighted.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3023.307000" data-stop="3024.368000">We've come full circle.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3024.448000" data-stop="3026.970000">Emacs is now the lightweight solution.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3028.283000" data-stop="3034.252000">It is a lot of fun.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3035.354000" data-stop="3036.997000">Emacs, less AI.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3037.177000" data-stop="3040.803000">AI is not quite at the fun point yet, I think.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3040.823000" data-stop="3044.348000">But I'm glad that there's still more to tinker</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3044.388000" data-stop="3045.250000">with and explore.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3046.011000" data-stop="3049.717000">I have about eight minutes before the kiddo runs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3049.797000" data-stop="3051.760000">out and starts lunch break.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3052.000000">50:52</span> <strong>Where people can find me</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3052.043000" data-stop="3058.014000"><strong class="speaker-name">Sacha:</strong> I'm guessing if people want to keep up with your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3058.074000" data-stop="3061.480000">adventures they can check your EmacsWiki page</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3061.520000" data-stop="3062.061000">for updates.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3062.142000" data-stop="3068.012000">You have some code shared on Codeberg and you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3068.052000" data-stop="3069.856000">mentioned your LinkedIn profile which is in my</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3070.377000" data-stop="3073.542000">thing, but how can people keep up with what you're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3073.582000" data-stop="3073.883000">learning?</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="3075.044000" data-stop="3078.228000"><strong class="speaker-name">Raymond:</strong>  I'm surprised that people would want to.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3078.368000" data-stop="3079.169000"><strong class="speaker-name">Sacha:</strong>  I want to.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3079.409000" data-stop="3083.274000">I do not have an auto to maintain, but I have a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3083.314000" data-stop="3086.677000">cargo bike that I've got to keep up with also.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3086.738000" data-stop="3091.583000">So I'm very interested in these mileage-based task</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3091.643000" data-stop="3093.465000">reminders, if you work something out.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="3095.408000" data-stop="3097.049000"><strong class="speaker-name">Raymond:</strong>  Yeah, I'm not pretty good about</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3097.991000" data-stop="3098.992000">publishing stuff.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3100.634000" data-stop="3101.074000">I don't know.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3101.134000" data-stop="3101.975000">That's a good question.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3102.235000" data-stop="3103.617000">I'll come up with something.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3103.968000" data-stop="3107.513000">Maybe I'll be more diligent pushing my updates to</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3107.553000" data-stop="3110.077000">the Lisp Codeberg repository.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3110.478000" data-stop="3110.919000">I don't know.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3112.281000" data-stop="3114.063000"><strong class="speaker-name">Sacha:</strong>  Sometimes it just takes somebody saying,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3114.123000" data-stop="3116.327000">your stuff is interesting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3116.347000" data-stop="3118.150000">I'm telling you, your stuff is interesting.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="3118.570000" data-stop="3119.432000"><strong class="speaker-name">Raymond:</strong>  Okay.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3119.452000" data-stop="3120.373000">Thank you so much.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3122.000000">52:02</span> <strong>Org Mode source blocks</strong></div><p></p><span class="audio-time caption" data-speaker="Raymond" data-start="3122.378000" data-stop="3125.303000"><strong class="speaker-name">Raymond:</strong> By the way, I am using source code</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3125.343000" data-stop="3125.984000">blocks now.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3126.145000" data-stop="3129.170000">So like we talked earlier about executing the</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3129.210000" data-stop="3132.917000">batch file, I can now put a little batch file</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3133.057000" data-stop="3136.303000">inside a source code and execute it that way.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3136.537000" data-stop="3140.726000"><strong class="speaker-name">Sacha:</strong>  You have those links in your heading and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3141.508000" data-stop="3144.615000">in your Org task bodies.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3145.076000" data-stop="3149.766000">I've been enjoying using Elisp and Shell link</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3149.826000" data-stop="3153.013000">types so that I can put in those partially</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3153.114000" data-stop="3154.697000">automatable things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3154.677000" data-stop="3158.168000">In my workflows, because sometimes you're like, I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3158.208000" data-stop="3159.131000">do have to do it manually.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3159.151000" data-stop="3161.077000">I just can't write a function to do everything.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3161.459000" data-stop="3163.485000">But at least they can document it step by step</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3163.545000" data-stop="3166.535000">and say, okay, do this, run this code block, you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3166.575000" data-stop="3168.180000">know, just do all that stuff.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3169.000000">52:49</span> <strong>Slideshows?</strong></div><p></p><span class="audio-time caption" data-speaker="Raymond" data-start="3169.443000" data-stop="3171.046000"><strong class="speaker-name">Raymond:</strong>  And the other thing I'd like to try to</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3171.166000" data-stop="3176.254000">do is I know some people can create slideshows</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3176.655000" data-stop="3178.178000">with Emacs.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3178.578000" data-stop="3183.466000">And so that looks like it would be worth pursuing.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3183.526000" data-stop="3184.428000">I'd like to try that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3185.550000" data-stop="3186.572000"><strong class="speaker-name">Sacha:</strong>  Oh, yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3186.872000" data-stop="3190.157000">Are you thinking of it for the history stuff that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3190.558000" data-stop="3192.441000">you're involved with or other things that you're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3192.461000" data-stop="3192.902000">teaching?</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="3193.186000" data-stop="3195.770000"><strong class="speaker-name">Raymond:</strong>  So I'm starting to present my</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3195.850000" data-stop="3198.113000">photography as a slideshow.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3198.133000" data-stop="3199.354000">And I thought I would try that.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3199.495000" data-stop="3203.620000">And now I see that Emacs can support images.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3204.081000" data-stop="3206.524000">I don't know how it would work as an export, but</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3206.845000" data-stop="3208.587000">I look into that now.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3209.148000" data-stop="3210.570000"><strong class="speaker-name">Sacha:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3210.590000" data-stop="3213.053000">And even, you know, the couple of times that I've</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3213.494000" data-stop="3215.637000">wanted to use Emacs to create, you know, even</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3215.677000" data-stop="3219.502000">just a PDF of these pictures, just being able to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3219.582000" data-stop="3220.864000">automate that instead of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3221.317000" data-stop="3224.433000">pasting and resizing, it's like, ugh, don't do that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3224.434000" data-stop="3226.600000">that way, just have the computer do it for you,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3226.601000" data-stop="3230.233000">and Emacs is great for it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3230.000000">53:50</span> <strong>Emacs Chats?</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3230.234000" data-stop="3232.900000"><strong class="speaker-name">Sacha:</strong> I've been meaning to ask you, what is your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3233.020000" data-stop="3235.144000">viewership with these Emacs chats?</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="3235.164000" data-stop="3237.028000"><strong class="speaker-name">Raymond:</strong>  Are you starting to see a lot of</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3237.749000" data-stop="3239.072000">traction with that?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3239.238000" data-stop="3240.080000"><strong class="speaker-name">Sacha:</strong>  I have no idea.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3242.865000" data-stop="3244.689000">My goal here is just to get stuff out of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3244.729000" data-stop="3245.711000">interesting people's heads.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3245.852000" data-stop="3247.535000">Interesting stuff out of, yes, interesting</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3247.575000" data-stop="3248.056000">people's heads.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3249.098000" data-stop="3253.728000">And I think mainly I'm using it as a way to keep</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3253.808000" data-stop="3255.732000">improving my transcription workflow.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3256.353000" data-stop="3257.937000">I guess I like to train everything into text</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3258.037000" data-stop="3259.019000">afterwards.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3259.039000" data-stop="3260.622000">That way it's searchable.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3260.602000" data-stop="3264.168000">But it's been really fun getting a sense of how</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3264.208000" data-stop="3266.672000">people are using it because we all have such</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3266.752000" data-stop="3268.075000">different workflows.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3268.095000" data-stop="3270.459000">And as I was saying in the beginning, you don't</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3270.599000" data-stop="3272.382000">see that when you're looking at someone's config.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3272.402000" data-stop="3275.527000">You're like, okay, I see that the code that sets</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3275.567000" data-stop="3278.653000">the key bindings, but how does it work together?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3278.673000" data-stop="3280.095000">And then seeing your Org file, I'm like,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3280.278000" data-stop="3282.423000">Oh yeah, why am I not putting the links right</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3282.523000" data-stop="3284.508000">there so that I can just get to them from the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3284.568000" data-stop="3285.050000">agenda?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3285.591000" data-stop="3287.315000">Diary can do that?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3287.576000" data-stop="3293.089000">All that stuff is really, really interesting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3293.879000" data-stop="3297.464000">It's been great revisiting it after such a long</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3297.504000" data-stop="3299.626000">break, taking care of the kiddo.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3299.726000" data-stop="3301.328000">Now the kiddo is slightly more independent and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3301.529000" data-stop="3304.633000">even has moments where she's like, bye mom, I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3305.073000" data-stop="3305.894000">don't need any help.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3305.914000" data-stop="3307.777000">Like, okay, yes, I'm just going to do my Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3307.817000" data-stop="3308.538000">thing.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="3308.678000" data-stop="3311.141000"><strong class="speaker-name">Raymond:</strong>  Asking for the car keys yet or not?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3311.161000" data-stop="3311.702000"><strong class="speaker-name">Sacha:</strong>  No, no, no.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3311.882000" data-stop="3313.804000">Also no car, but someday she's going to, you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3313.824000" data-stop="3316.127000">know, and she actually already likes to bike to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3316.288000" data-stop="3317.229000">the park on her own.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3317.769000" data-stop="3318.430000">So she's 10.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3318.490000" data-stop="3320.853000">She's not at the car level yet, but definitely in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3320.873000" data-stop="3323.236000">the biking and walking by herself, she's keen on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3323.317000" data-stop="3323.717000">that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3323.933000" data-stop="3328.860000">Gradually, independence for both of us and the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3328.880000" data-stop="3329.942000">ability to explore things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3330.282000" data-stop="3331.925000">I'm really liking these Emacs chats.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3333.066000" data-stop="3335.710000">With you and Shay Arison, who's also been a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3335.750000" data-stop="3338.434000">long-time reader, it's like this continuation of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3338.454000" data-stop="3342.360000">a conversation we've been having over decades now.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3342.480000" data-stop="3348.408000">I can't wait to see where this goes next.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3348.428000" data-stop="3352.354000">I've picked up a lot that I, again, would not have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3353.532000" data-stop="3356.667000">really understood just by looking at your EmacsWiki page</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3356.668000" data-stop="3358.700000">and I hope that other people watching</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3358.701000" data-stop="3361.333000">can also get a sense of, like, this is what it looks like</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3361.334000" data-stop="3364.833000">in use. Sometimes people think oh, I need to make a video</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3364.834000" data-stop="3367.967000">that's going to be a snazzy demonstration</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3367.968000" data-stop="3370.300000">of this really technical setup,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3370.301000" data-stop="3373.836000">but sometimes it's just the little things that make your life better.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="3375.537000" data-stop="3377.299000"><strong class="speaker-name">Raymond:</strong>  Well, I really want to thank you for</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3377.379000" data-stop="3381.804000">doing this, not just this Emacs chat, but just</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3381.944000" data-stop="3385.508000">having your web page and organizing all the Emacs</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3386.028000" data-stop="3386.709000">information.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3387.950000" data-stop="3389.992000">It's just been a wonderful resource.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3391.534000" data-stop="3391.955000"><strong class="speaker-name">Sacha:</strong>  Thank you.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3393.716000" data-stop="3397.140000">In the last two minutes I have before I get like,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3397.160000" data-stop="3399.543000">"mom!",</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3399.000000">56:39</span> <strong>Other resources that would be nice to have</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3399.563000" data-stop="3401.585000"><strong class="speaker-name">Sacha:</strong> what kind of resources would you like to see</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3401.945000" data-stop="3402.646000">going forward?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3402.726000" data-stop="3405.409000">What would make your learning even better?</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="3406.368000" data-stop="3409.132000"><strong class="speaker-name">Raymond:</strong>  Well, you know, it's just, you know,</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3409.152000" data-stop="3410.854000">just saying something that you did...</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3411.796000" data-stop="3415.561000">For example, when you were... So when I visited</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3415.601000" data-stop="3418.666000">your site and you showed how you could show the</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3419.307000" data-stop="3424.494000">time in someone's native time zone, right?</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3424.514000" data-stop="3426.537000">Which is a wonderful thing, right?</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3426.557000" data-stop="3429.962000">But I had my own time thing that I was wondering.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3430.042000" data-stop="3431.464000">Like, I wanted to know</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3432.355000" data-stop="3436.401000">if someone had a date, like May 21, what day of</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3436.461000" data-stop="3438.985000">the week is that?</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3439.446000" data-stop="3442.030000">I know that I can't go on a meeting on Tuesday.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3442.090000" data-stop="3443.792000">I'm trippable.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3444.553000" data-stop="3447.959000">So I figured out a way you could select it and</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3448.079000" data-stop="3451.183000">send it to a custom search engine that searches</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3451.304000" data-stop="3455.350000">on DuckDuckGo AI and says, what day of the week</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3455.410000" data-stop="3456.091000">is this?</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3456.111000" data-stop="3457.393000">And just include the date.</span> <span class="audio-time caption" data-speaker="Raymond" data-start="3457.553000" data-stop="3458.835000">And it tells you.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3458.950000" data-stop="3460.432000"><strong class="speaker-name">Sacha:</strong>  Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3460.452000" data-stop="3462.716000">It's nice to be able to modify things, not just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3462.796000" data-stop="3465.420000">in Emacs, but in browsers or anything else.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3466.121000" data-stop="3467.803000">And my personal approach for that date thing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3467.823000" data-stop="3469.185000">would be like, okay, I'm just going to do an</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3469.305000" data-stop="3474.794000">insert date, like a C-c C-! in Org.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3475.294000" data-stop="3477.217000">Because if I type in, you know, the part of the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3477.257000" data-stop="3480.102000">date that will get it to show up, it will include</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3480.142000" data-stop="3480.963000">the day of the week.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3480.983000" data-stop="3482.425000">But that only works in Emacs, of course.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3482.846000" data-stop="3484.468000">Everything should be in Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3485.849000" data-stop="3489.194000">So yeah, I guess one of these little workflows,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3489.294000" data-stop="3492.098000">oh, I just figured out something, sort of posts</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3492.218000" data-stop="3496.784000">can ripple out into other people imagining other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3496.844000" data-stop="3497.845000">things that they can do.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3498.266000" data-stop="3499.788000">And on that note, I'm going to wrap this up very</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3499.848000" data-stop="3500.209000">nicely.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3500.389000" data-stop="3503.133000">I will try to mark this as unlisted so I can see</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3503.173000" data-stop="3506.517000">if I accidentally let any of your passwords slip</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3506.577000" data-stop="3509.882000">past my 10-second panic window.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3510.503000" data-stop="3511.768000">You're okay with your coordinates.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3511.868000" data-stop="3512.370000">That's okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3513.494000" data-stop="3514.157000">Yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3514.177000" data-stop="3514.538000">All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3514.658000" data-stop="3515.823000">Thank you so much, Ray.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="3516.465000" data-stop="3516.987000"><strong class="speaker-name">Raymond:</strong>  Oh, thank you.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3517.128000" data-stop="3518.754000"><strong class="speaker-name">Sacha:</strong>  And I look forward to more conversations.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="3519.236000" data-stop="3520.099000"><strong class="speaker-name">Raymond:</strong>  Yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3520.540000" data-stop="3520.922000"><strong class="speaker-name">Sacha:</strong>  All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3521.082000" data-stop="3521.384000">Bye.</span> <p></p><span class="audio-time caption" data-speaker="Raymond" data-start="3521.765000" data-stop="3522.066000"><strong class="speaker-name">Raymond:</strong>  Bye bye.</span></div>
<p></p>


<a name="end-ec23-transcript"></a></details>
</div>
</div>
<div id="outline-container-emacs-chats-emacs-chat-23-emacs-chat-with-raymond-zeitler-chat" class="outline-3">
<h3 id="emacs-chats-emacs-chat-23-emacs-chat-with-raymond-zeitler-chat"><a href="https://sachachua.com/blog/feed/index.xml#emacs-chats-emacs-chat-23-emacs-chat-with-raymond-zeitler-chat">Chat</a></h3>
<div class="outline-text-3" id="text-emacs-chats-emacs-chat-23-emacs-chat-with-raymond-zeitler-chat">
<ul class="org-ul">
<li>charliemcmackin4859: ​:D</li>
<li>charliemcmackin4859: ​do you use org-mode protocol at all for browser -&gt; emacs interaction? If so, was there any complication to set it up on windows?</li>
<li>charliemcmackin4859: ​I did slideshows a few times at a previous job with org-reveal. I liked it decently.</li>
<li>mtendethecreator: ​Hello sacha</li>
<li>phyzixlab: ​​Thank you both. Great interview</li>
</ul>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-raymond-zeitler/index.org">View Org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F05%2Femacs-chat-with-raymond-zeitler%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>Emacs Chat 22: Shae Erisson</title>
		<link>https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Thu, 07 May 2026 18:55:38 GMT</pubDate>
    <category>emacs</category>
<category>emacs-chat-podcast</category>
<category>emacs-chat</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/</guid><enclosure url="https://archive.org/download/ec22-shae-erisson/ec22-shae-erisson.mp3"
               length="60081151"
               type="audio/mpeg" />
		<description><![CDATA[<div class="update" id="org249d216">
<p>
<span class="timestamp-wrapper"><time class="timestamp" datetime="2026-05-08">[2026-05-08 Fri]</time></span>: Transcript, yay!
</p>

</div>

<p>
I chatted with Shae Erisson about Emacs, keyboards, Org Mode, and life.
<video preload="none" controls="1" src="https://archive.org/download/ec22-shae-erisson/ec22-shae-erisson.mp4" type="video/mp4"><track kind="subtitles" label="Captions" src="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/ec22-shae-erisson.vtt" srclang="en" default=""></video>
</p>

<p>
<a href="https://archive.org/details/ec22-shae-erisson">View it via the Internet Archive</a>, <a href="https://youtube.com/live/Ovya0O2otbU">watch/comment on YouTube</a>, <a href="https://sachachua.com/blog/feed/index.xml#ID-ec22-transcript">read the transcript online</a>, <a href="https://archive.org/download/ec22-shae-erisson/ec22-shae-erisson.mp4">download the video</a> / <a href="https://archive.org/download/ec22-shae-erisson/ec22-shae-erisson.mp3">MP3</a> / <a href="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/ec22-shae-erisson.vtt">transcript</a>, or <a href="mailto:sacha@sachachua.com">e-mail me</a> your thoughts!
</p>

<ul class="org-ul">
<li>Shae Erisson: Haskell, Python, Swedish, knitting, mountain unicycling, contact juggling</li>
<li><a href="http://www.scannedinavian.com">Shae Erisson's blog - 1. DO SOMETHING 2. BRAG ABOUT IT</a></li>
<li><a href="https://recurse.social/@shapr">Shae Erisson (@shapr@recurse.social) - recurse.social</a></li>
<li><a href="https://www.scannedinavian.com/programmers-want-flow-when-programming-light-turns-red.html">Shae Erisson's blog - Programmers want flow. when programming, light turns RED</a></li>
<li><a href="https://github.com/shapr/markovkeyboard">shapr/markovkeyboard: keyboard layout that changes by markov frequency · GitHub</a></li>
</ul>
<div id="outline-container-emacs-chat-22-shae-erisson-chapters" class="outline-3">
<h3 id="emacs-chat-22-shae-erisson-chapters"><a href="https://sachachua.com/blog/feed/index.xml#emacs-chat-22-shae-erisson-chapters">Chapters</a></h3>
<div class="outline-text-3" id="text-emacs-chat-22-shae-erisson-chapters">
<p>
</p><ul class="org-ul">
<li><span class="audio-time" data-start="0.000" data-stop="7.759">0:00</span> Intro</li>
<li><span class="audio-time" data-start="57.200" data-stop="61.159">0:57</span> 1999, IRC, community building in Haskell</li>
<li><span class="audio-time" data-start="118.960" data-stop="122.959">1:58</span> Emacs as a light-weight build-your-own-editor toolkit</li>
<li><span class="audio-time" data-start="171.480" data-stop="175.679">2:51</span> LSP, treesitter, Magit, jujutsu, C++, Python, Haskell, rust</li>
<li><span class="audio-time" data-start="215.780" data-stop="218.319">3:35</span> how does a new person experience Emacs? Emacs is always fun.</li>
<li><span class="audio-time" data-start="243.800" data-stop="247.199">4:03</span> Markov keyboard project, moving to Finland, right-handed Dvorak, split keyboard; Jeff Raskin; I am not a koala</li>
<li><span class="audio-time" data-start="403.368" data-stop="405.159">6:43</span> Purpose-specific function keys</li>
<li><span class="audio-time" data-start="450.920" data-stop="454.039">7:30</span> Trackballs, scroll</li>

<li><span class="audio-time" data-start="494.160" data-stop="497.119">8:14</span> 1" trackpad rings</li>
<li><span class="audio-time" data-start="534.140" data-stop="538.559">8:54</span> Pair programming: ttyshare, shwim</li>
<li><span class="audio-time" data-start="793.040" data-stop="800.479">13:13</span> Recurse Center, "What is that keyboard? What is that editor?!", Emacs bankruptcy and starter kits</li>
<li><span class="audio-time" data-start="966.000" data-stop="969.359">16:06</span> hippie-expand</li>
<li><span class="audio-time" data-start="1034.320" data-stop="1038.999">17:14</span> yasnippet</li>
<li><span class="audio-time" data-start="1132.840" data-stop="1141.199">18:52</span> Function keys</li>
<li><span class="audio-time" data-start="1202.141" data-stop="1205.159">20:02</span> Org Mode</li>

<li><span class="audio-time" data-start="1274.500" data-stop="1277.800">21:14</span> Show Org agenda when idle</li>

<li><span class="audio-time" data-start="1318.120" data-stop="1323.760">21:58</span> Programmers want flow. When programming, light turns red</li>

<li><span class="audio-time" data-start="1465.840" data-stop="1467.000">24:25</span> ef-themes and modus-themes, season</li>
<li><span class="audio-time" data-start="1556.960" data-stop="1558.840">25:56</span> htmlize (does this still work on Wayland?)</li>
<li><span class="audio-time" data-start="1597.634" data-stop="1600.300">26:37</span> lsp-ui-imenu, jumping through rust code</li>

<li><span class="audio-time" data-start="1705.480" data-stop="1710.719">28:25</span> laptop with 126GB of RAM</li>
<li><span class="audio-time" data-start="1786.040" data-stop="1788.479">29:46</span> LSP coolness, Haskell, treesitter</li>
<li><span class="audio-time" data-start="1918.920" data-stop="1922.279">31:58</span> Combobulate</li>
<li><span class="audio-time" data-start="1966.200" data-stop="1972.259">32:46</span> What else are you using your 126 gigabytes of RAM for?</li>
<li><span class="audio-time" data-start="2005.521" data-stop="2007.859">33:25</span> TalonVoice</li>
<li><span class="audio-time" data-start="2085.020" data-stop="2086.119">34:45</span> NixOS, following Steve Purcell about 5 years behind</li>
<li><span class="audio-time" data-start="2103.440" data-stop="2106.639">35:03</span> envrc</li>
<li><span class="audio-time" data-start="2152.620" data-stop="2154.279">35:52</span> time-tracking</li>
<li><span class="audio-time" data-start="2221.060" data-stop="2225.232">37:01</span> taxes with Org Mode, remote lookup</li>

<li><span class="audio-time" data-start="2455.500" data-stop="2462.599">40:55</span> finding notes with C-s</li>
<li><span class="audio-time" data-start="2555.200" data-stop="2558.679">42:35</span> Org Mode, managing inbox</li>
<li><span class="audio-time" data-start="2788.180" data-stop="2790.099">46:28</span> Timestamps</li>
<li><span class="audio-time" data-start="2952.860" data-stop="2954.579">49:12</span> Org timers</li>

<li><span class="audio-time" data-start="3233.640" data-stop="3236.779">53:53</span> Org Mode snippets</li>
<li><span class="audio-time" data-start="3435.460" data-stop="3436.733">57:15</span> Compilation finish function: handle success</li>
</ul>

<p></p>
</div>
</div>
<div id="outline-container-org9521271" class="outline-3">
<h3 id="org9521271"><a href="https://sachachua.com/blog/feed/index.xml#org9521271">Transcript</a></h3>
<div class="outline-text-3" id="text-org9521271">
<details class="code-details"><a name="ID-ec22-transcript"></a><summary>Transcript</summary>
<p>
</p><div class="full-transcript"><p></p><div class="transcript-heading"><span class="audio-time" data-start="0.000000">0:00</span> <strong>Intro</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="0.000000" data-stop="7.759000"><strong class="speaker-name">Sacha:</strong>  Okay, so I'm going to actually remember to hit go live.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7.760000" data-stop="17.479000">I've got a 10 second delay, so if we need to panic, we can panic.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="17.480000" data-stop="20.199000">Okay, so let's see.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="20.200000" data-stop="22.159000">I think we are live.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="22.160000" data-stop="24.199000">Hi, everyone.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="24.200000" data-stop="28.359000">This is Emacs Chat number 22 after a long hiatus.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="28.360000" data-stop="33.679000">And today, I'm here with Shae Erisson, who is also like</span> <span class="audio-time caption" data-speaker="Sacha" data-start="33.680000" data-stop="35.359000">an Emacs friend from a long time back.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="35.360000" data-stop="36.439000">So this is it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="36.440000" data-stop="40.999000">As you were just saying, this is the first time we're actually</span> <span class="audio-time caption" data-speaker="Sacha" data-start="41.000000" data-stop="42.919000">talking live.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="42.920000" data-stop="46.479000">And I'm looking forward to hearing about your configuration, how you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="46.480000" data-stop="47.919000">use Emacs, Shae.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="47.920000" data-stop="50.999000">But before we dive into that, can you give us a little bit of context?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="51.000000" data-stop="54.108000">Who you are, what sorts of things you do,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="54.109000" data-stop="57.199000">and how you use Emacs for that?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="57.000000">0:57</span> <strong>1999, IRC, community building in Haskell</strong></div><p></p><span class="audio-time caption" data-speaker="Shae" data-start="57.200000" data-stop="61.159000"><strong class="speaker-name">Shae:</strong>  I would say that...</span> <span class="audio-time caption" data-speaker="Shae" data-start="61.160000" data-stop="69.679000">I guess I started using Emacs in 1999 when I moved to Finland.</span> <span class="audio-time caption" data-speaker="Shae" data-start="69.680000" data-stop="74.399000">And I remember about the same time I was on IRC and I was really</span> <span class="audio-time caption" data-speaker="Shae" data-start="74.400000" data-stop="74.879000">frustrated.</span> <span class="audio-time caption" data-speaker="Shae" data-start="74.880000" data-stop="77.159000">I remember I got on the Perl IRC channel and I was like, hey, I want</span> <span class="audio-time caption" data-speaker="Shae" data-start="77.160000" data-stop="79.039000">an editor that has syntax highlighting.</span> <span class="audio-time caption" data-speaker="Shae" data-start="79.040000" data-stop="81.359000">I want to see colors to these words when I'm typing them.</span> <span class="audio-time caption" data-speaker="Shae" data-start="81.360000" data-stop="83.879000">And they were like, noob, and they kick-banned me.</span> <span class="audio-time caption" data-speaker="Shae" data-start="83.880000" data-stop="88.279000">And I was like, well, maybe I don't want to learn Perl, which I never</span> <span class="audio-time caption" data-speaker="Shae" data-start="88.280000" data-stop="88.399000">did.</span> <span class="audio-time caption" data-speaker="Shae" data-start="88.400000" data-stop="91.519000">And I guess that was an early introduction into I wanted to be part</span> <span class="audio-time caption" data-speaker="Shae" data-start="91.520000" data-stop="96.239000">of communities where people were sharing positive things and building</span> <span class="audio-time caption" data-speaker="Shae" data-start="96.240000" data-stop="97.679000">up each other.</span> <span class="audio-time caption" data-speaker="Shae" data-start="97.680000" data-stop="101.119000">Actually, I ended up starting the Haskell IRC channel a couple of</span> <span class="audio-time caption" data-speaker="Shae" data-start="101.120000" data-stop="104.239000">years later, and that became a very big thing.</span> <span class="audio-time caption" data-speaker="Shae" data-start="104.240000" data-stop="107.919000">I would say that I'm mostly known for my work in community building</span> <span class="audio-time caption" data-speaker="Shae" data-start="107.920000" data-stop="111.519000">in the Haskell programming language community, because I did that</span> <span class="audio-time caption" data-speaker="Shae" data-start="111.520000" data-stop="116.399000">for, I don't know, 15 or 20 years.</span> <span class="audio-time caption" data-speaker="Shae" data-start="116.400000" data-stop="118.959000">But I really like Emacs.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="118.000000">1:58</span> <strong>Emacs as a light-weight build-your-own-editor toolkit</strong></div><p></p><span class="audio-time caption" data-speaker="Shae" data-start="118.960000" data-stop="122.959000"><strong class="speaker-name">Shae:</strong> So like last week at the same time I had the standing chat with a</span> <span class="audio-time caption" data-speaker="Shae" data-start="122.960000" data-stop="127.199000">friend of mine who is also a programmer and he said oh so you're</span> <span class="audio-time caption" data-speaker="Shae" data-start="127.200000" data-stop="129.079000">going to do this thing in a week do you want to give me like a</span> <span class="audio-time caption" data-speaker="Shae" data-start="129.080000" data-stop="132.959000">preview of the talk and I was like yeah I guess so and some of the</span> <span class="audio-time caption" data-speaker="Shae" data-start="132.960000" data-stop="135.479000">things that were really interesting was he was like I've never really</span> <span class="audio-time caption" data-speaker="Shae" data-start="135.480000" data-stop="139.319000">tried Emacs I don't know much about it I kind of have this impression</span> <span class="audio-time caption" data-speaker="Shae" data-start="139.320000" data-stop="145.439000">that it is a very lightweight build your own editor toolkit and I</span> <span class="audio-time caption" data-speaker="Shae" data-start="145.440000" data-stop="151.239000">I was kind of taken aback because, you know, I guess I still have</span> <span class="audio-time caption" data-speaker="Shae" data-start="151.240000" data-stop="153.359000">this long ago and far away.</span> <span class="audio-time caption" data-speaker="Shae" data-start="153.360000" data-stop="156.159000">I don't know if you remember 8 Megs and Constantly Swapping is what</span> <span class="audio-time caption" data-speaker="Shae" data-start="156.160000" data-stop="159.439000">people used to call Emacs and things like that.</span> <span class="audio-time caption" data-speaker="Shae" data-start="159.440000" data-stop="163.399000">And I was, it was just kind of, I realized I'm still in my little</span> <span class="audio-time caption" data-speaker="Shae" data-start="163.400000" data-stop="164.039000">echo chamber.</span> <span class="audio-time caption" data-speaker="Shae" data-start="164.040000" data-stop="166.919000">And this is why I like to talk to other people all the time is</span> <span class="audio-time caption" data-speaker="Shae" data-start="166.920000" data-stop="171.479000">because I want to have some exposure to what other people are doing.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="171.000000">2:51</span> <strong>LSP, treesitter, Magit, jujutsu, C++, Python, Haskell, rust</strong></div><p></p><span class="audio-time caption" data-speaker="Shae" data-start="171.480000" data-stop="175.679000"><strong class="speaker-name">Shae:</strong> I guess things about Emacs that really changed stuff for me is</span> <span class="audio-time caption" data-speaker="Shae" data-start="175.680000" data-stop="180.919000">language server protocol, TreeSitter.</span> <span class="audio-time caption" data-speaker="Shae" data-start="180.920000" data-stop="183.999000">Those, I think, are two very powerful tools that are much more</span> <span class="audio-time caption" data-speaker="Shae" data-start="184.000000" data-stop="187.799000">generic than, I mean, Magit, of course, is like magic.</span> <span class="audio-time caption" data-speaker="Shae" data-start="187.800000" data-stop="191.119000">Although I've mostly switched to jujitsu lately instead for the last</span> <span class="audio-time caption" data-speaker="Shae" data-start="191.120000" data-stop="192.319000">year.</span> <span class="audio-time caption" data-speaker="Shae" data-start="192.320000" data-stop="197.799000">Let's see, I had, I guess, let's see, I did C++, I did Python, I did</span> <span class="audio-time caption" data-speaker="Shae" data-start="197.800000" data-stop="201.319000">a whole lot of Python.</span> <span class="audio-time caption" data-speaker="Shae" data-start="201.320000" data-stop="205.719000">And then I had Haskell jobs for five or six years.</span> <span class="audio-time caption" data-speaker="Shae" data-start="205.720000" data-stop="208.959000">And then I switched to Rust about a year and a half ago.</span> <span class="audio-time caption" data-speaker="Shae" data-start="208.960000" data-stop="211.079000">I now have a Rust job.</span> <span class="audio-time caption" data-speaker="Shae" data-start="211.080000" data-stop="214.759000">And one of the things that Prot had asked, I think, or you had asked,</span> <span class="audio-time caption" data-speaker="Shae" data-start="214.760000" data-stop="215.779000">and I forget exactly how this went.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="215.000000">3:35</span> <strong>how does a new person experience Emacs? Emacs is always fun.</strong></div><p></p><span class="audio-time caption" data-speaker="Shae" data-start="215.780000" data-stop="218.319000"><strong class="speaker-name">Shae:</strong> It was great fun watching your livestream.</span> <span class="audio-time caption" data-speaker="Shae" data-start="218.320000" data-stop="220.319000">And it was, how does a new person</span> <span class="audio-time caption" data-speaker="Shae" data-start="220.320000" data-stop="224.839000">kind of get comfortable with using Emacs for a particular purpose.</span> <span class="audio-time caption" data-speaker="Shae" data-start="224.840000" data-stop="229.559000">And I look for things, in fact, like how do I use Emacs for Rust,</span> <span class="audio-time caption" data-speaker="Shae" data-start="229.560000" data-stop="230.199000">Rust development?</span> <span class="audio-time caption" data-speaker="Shae" data-start="230.200000" data-stop="233.999000">And I found a couple of good guides on, and I was able to follow most</span> <span class="audio-time caption" data-speaker="Shae" data-start="234.000000" data-stop="236.679000">of them, although my Yesnitit stuff is broken and I don't exactly</span> <span class="audio-time caption" data-speaker="Shae" data-start="236.680000" data-stop="238.439000">know why tab doesn't work, right?</span> <span class="audio-time caption" data-speaker="Shae" data-start="238.440000" data-stop="242.679000">But, you know, like there's always, Emacs is always fun, right?</span> <span class="audio-time caption" data-speaker="Shae" data-start="242.680000" data-stop="243.799000">There's so many cool things you could do with it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="243.000000">4:03</span> <strong>Markov keyboard project, moving to Finland, right-handed Dvorak, split keyboard; Jeff Raskin; I am not a koala</strong></div><p></p><span class="audio-time caption" data-speaker="Shae" data-start="243.800000" data-stop="247.199000"><strong class="speaker-name">Shae:</strong> I noticed, I actually hadn't seen your preview page and I noticed</span> <span class="audio-time caption" data-speaker="Shae" data-start="247.200000" data-stop="251.619000">that you found my Markov keyboard.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="251.620000" data-stop="254.679000"><strong class="speaker-name">Sacha:</strong>  When you say Emacs is fun, I'm reminded of all of your fun,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="254.680000" data-stop="258.439000">crazy keyboard experiments.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="258.440000" data-stop="260.639000">It's like, what?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="260.640000" data-stop="265.499000">I have a feeling you like to tinker with things.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="265.500000" data-stop="271.599000"><strong class="speaker-name">Shae:</strong>  Yeah, so I think actually the influences as to how I got to</span> <span class="audio-time caption" data-speaker="Shae" data-start="271.600000" data-stop="275.099000">where I am are pretty interesting.</span> <span class="audio-time caption" data-speaker="Shae" data-start="275.100000" data-stop="280.479000">So the person that I ended up moving to Finland to for dating her, we</span> <span class="audio-time caption" data-speaker="Shae" data-start="280.480000" data-stop="285.839000">started a company, we did projects, and I was the programmer. We had</span> <span class="audio-time caption" data-speaker="Shae" data-start="285.840000" data-stop="289.359000">this pretty big project. I guess it was like 350,000 euros.</span> <span class="audio-time caption" data-speaker="Shae" data-start="289.360000" data-stop="292.000000">And I mean, that was going to be over four years</span> <span class="audio-time caption" data-speaker="Shae" data-start="292.001000" data-stop="293.033000">and we had to kind of complete the whole thing,</span> <span class="audio-time caption" data-speaker="Shae" data-start="293.034000" data-stop="297.239000">and I was the programmer and we'd had the lowest bid...</span> <span class="audio-time caption" data-speaker="Shae" data-start="297.240000" data-stop="300.879000">I had an IBM model M, you know, the super clicky with like all the...</span> <span class="audio-time caption" data-speaker="Shae" data-start="300.880000" data-stop="305.319000">And about three years into it, my arm started really hurting a lot.</span> <span class="audio-time caption" data-speaker="Shae" data-start="305.320000" data-stop="307.719000">But I was the only programmer.</span> <span class="audio-time caption" data-speaker="Shae" data-start="307.720000" data-stop="308.959000">And nobody else knew all the code.</span> <span class="audio-time caption" data-speaker="Shae" data-start="308.960000" data-stop="310.519000">And we had to ship it, because that's how we got paid.</span> <span class="audio-time caption" data-speaker="Shae" data-start="310.520000" data-stop="312.399000">And so I ended up pushing through.</span> <span class="audio-time caption" data-speaker="Shae" data-start="312.400000" data-stop="316.119000">And at the end of it, my arm just didn't work anymore.</span> <span class="audio-time caption" data-speaker="Shae" data-start="316.120000" data-stop="321.479000">So for about a year and three months, what I did was I actually</span> <span class="audio-time caption" data-speaker="Shae" data-start="321.480000" data-stop="323.159000">taught myself to type right hand.</span> <span class="audio-time caption" data-speaker="Shae" data-start="323.160000" data-stop="325.367000">...Dvorak, because I was already using two-hand Dvorak,</span> <span class="audio-time caption" data-speaker="Shae" data-start="325.368000" data-stop="327.933000">and so I kept programming, but I just...</span> <span class="audio-time caption" data-speaker="Shae" data-start="327.934000" data-stop="330.500000">One of the things was... like, I like programming,</span> <span class="audio-time caption" data-speaker="Shae" data-start="330.501000" data-stop="332.900000">I like using computers, I don't want to wear out my arms again,</span> <span class="audio-time caption" data-speaker="Shae" data-start="332.901000" data-stop="333.933000">I don't want to blow them out,</span> <span class="audio-time caption" data-speaker="Shae" data-start="333.934000" data-stop="337.000000">so I ended up switching to split keyboards,</span> <span class="audio-time caption" data-speaker="Shae" data-start="337.001000" data-stop="338.533000">and I will show you.</span> <span class="audio-time caption" data-speaker="Shae" data-start="338.534000" data-stop="342.033000">This is very much the kind of thing that I like to use,</span> <span class="audio-time caption" data-speaker="Shae" data-start="342.034000" data-stop="344.467000">and that is like this.</span> <p></p><a href="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/mpv-shot0060.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/mpv-shot0060.jpg" alt="image from video 00:05:44.800" data-time="00:05:44.800"></a><span class="audio-time caption" data-speaker="Shae" data-start="344.780000" data-stop="347.133000"><strong class="speaker-name">Shae:</strong> This is an Ergodox Infinity,</span> <span class="audio-time caption" data-speaker="Shae" data-start="347.134000" data-stop="349.367000">but there's a lot of other keyboard flavors like this.</span> <span class="audio-time caption" data-speaker="Shae" data-start="349.368000" data-stop="352.867000">And one of the things that I particularly like about this...</span> <span class="audio-time caption" data-speaker="Shae" data-start="352.868000" data-stop="354.900000">So around the same time I met Jeff Raskin,</span> <span class="audio-time caption" data-speaker="Shae" data-start="354.901000" data-stop="375.239000">who wrote the Inhumane Interface.</span> <span class="audio-time caption" data-speaker="Shae" data-start="375.240000" data-stop="380.679000">And so for this particular thing, this is like Control and Alt and</span> <span class="audio-time caption" data-speaker="Shae" data-start="363.500000" data-stop="363.500000">Hyper and Super and Shift.</span> <span class="audio-time caption" data-speaker="Shae" data-start="363.501000" data-stop="369.433000">And this means that under one thumb, I have a lot more modifier keys</span> <span class="audio-time caption" data-speaker="Shae" data-start="369.434000" data-stop="371.933000">than you get off of a standard.</span> <span class="audio-time caption" data-speaker="Shae" data-start="371.934000" data-stop="372.700000">And it also means...</span> <span class="audio-time caption" data-speaker="Shae" data-start="372.701000" data-stop="374.733000">A lot of my problems started with Emacs pinky,</span> <span class="audio-time caption" data-speaker="Shae" data-start="374.734000" data-stop="378.519000">the dreaded, the infamous...</span> <span class="audio-time caption" data-speaker="Shae" data-start="378.520000" data-stop="382.567000">I think that one of my... I made a keyboard layout</span> <span class="audio-time caption" data-speaker="Shae" data-start="382.568000" data-stop="384.867000">called "I am not koala." You may not know this,</span> <span class="audio-time caption" data-speaker="Shae" data-start="384.868000" data-stop="387.033000">but koalas have two thumbs. They have one on each side.</span> <span class="audio-time caption" data-speaker="Shae" data-start="387.034000" data-stop="389.600000">And that's cool, but I don't have two thumbs,</span> <span class="audio-time caption" data-speaker="Shae" data-start="389.601000" data-stop="392.367000">and I realized that when I was trying to grab something,</span> <span class="audio-time caption" data-speaker="Shae" data-start="392.368000" data-stop="394.067000">I didn't put my pinky on it. That would be silly, right?</span> <span class="audio-time caption" data-speaker="Shae" data-start="394.068000" data-stop="395.719000">I want to put my thumb around it.</span> <span class="audio-time caption" data-speaker="Shae" data-start="395.720000" data-stop="396.993000">And so I decided I would move</span> <span class="audio-time caption" data-speaker="Shae" data-start="396.994000" data-stop="400.299000">all of my chording keys under my thumbs.</span> <span class="audio-time caption" data-speaker="Shae" data-start="400.300000" data-stop="403.367000">And that's kind of how I...</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="403.000000">6:43</span> <strong>Purpose-specific function keys</strong></div><p></p><span class="audio-time caption" data-speaker="Shae" data-start="403.368000" data-stop="405.159000"><strong class="speaker-name">Shae:</strong> And another thing I did was when I was</span> <span class="audio-time caption" data-speaker="Shae" data-start="405.160000" data-stop="407.479000">really only able to use one hand,</span> <span class="audio-time caption" data-speaker="Shae" data-start="407.480000" data-stop="411.719000">was I made my function keys mostly purpose-specific.</span> <span class="audio-time caption" data-speaker="Shae" data-start="411.720000" data-stop="414.519000">And that was from Jeff Raskin's writings in The Humane Interface.</span> <span class="audio-time caption" data-speaker="Shae" data-start="414.520000" data-stop="421.559000">So I guess I'm a programmer who really likes writing code, doesn't</span> <span class="audio-time caption" data-speaker="Shae" data-start="421.560000" data-stop="426.199000">want to wear out my arms, and likes to do fun keyboard things, yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="426.200000" data-stop="428.340000"><strong class="speaker-name">Sacha:</strong>  Definitely. You're in it for the long term.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="428.341000" data-stop="434.367000">You don't want to use up all of your arm capacity now</span> <span class="audio-time caption" data-speaker="Sacha" data-start="434.368000" data-stop="436.719000">and not be able to keep programming in the future.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="436.720000" data-stop="439.079000">And now there's hardware to make that easier.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="439.080000" data-stop="440.039000">So I'm glad.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="440.040000" data-stop="444.559000">Split keyboards with extra thumb keys seem to be very popular in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="444.560000" data-stop="445.599000">the Emacs community.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="445.600000" data-stop="450.919000">I'm now tempted to find space in my desk in order to make that happen.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="450.000000">7:30</span> <strong>Trackballs, scroll
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/ec22-shae-erisson-00-07-37-067.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/ec22-shae-erisson-00-07-37-067.jpg" alt="image from video 00:07:37.067" data-time="00:07:37.067"></a><span class="audio-time caption" data-speaker="Shae" data-start="450.920000" data-stop="454.039000"><strong class="speaker-name">Shae:</strong>  Another thing I ended up switching to was I started using</span> <span class="audio-time caption" data-speaker="Shae" data-start="454.040000" data-stop="455.239000">trackballs.</span> <span class="audio-time caption" data-speaker="Shae" data-start="455.240000" data-stop="455.799000">Oh yeah, yeah.</span> <span class="audio-time caption" data-speaker="Shae" data-start="455.800000" data-stop="461.479000">I tend to go completely overboard when trying out new things, so I</span> <span class="audio-time caption" data-speaker="Shae" data-start="461.480000" data-stop="466.439000">bought 20 different models of trackballs and ended up settling on</span> <span class="audio-time caption" data-speaker="Shae" data-start="466.440000" data-stop="467.599000">this one.</span> <span class="audio-time caption" data-speaker="Shae" data-start="467.600000" data-stop="475.799000">The nice thing about this one is that this is how you scroll, and it</span> <span class="audio-time caption" data-speaker="Shae" data-start="475.800000" data-stop="475.379000">has four buttons.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="475.380000" data-stop="479.767000"><strong class="speaker-name">Sacha:</strong>  That is really cool. I like using ThinkPads,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="479.768000" data-stop="481.679000">so I've been just living off the tiny little</span> <span class="audio-time caption" data-speaker="Sacha" data-start="481.680000" data-stop="483.319000">mouse in the middle of the keyboard.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="483.320000" data-stop="486.959000">But back in the day, I also used a trackball.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="486.960000" data-stop="490.199000">If I can get to the point where I want to take my hands off the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="490.200000" data-stop="492.479000">keyboard again in order to do mouse things, that would probably be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="492.480000" data-stop="494.159000">the direction I would go.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="494.000000">8:14</span> <strong>1" trackpad rings</strong></div><p></p><span class="audio-time caption" data-speaker="Shae" data-start="494.160000" data-stop="497.119000"><strong class="speaker-name">Shae:</strong>  I had an experiment in that area, which is where I purchased</span> <span class="audio-time caption" data-speaker="Shae" data-start="497.120000" data-stop="500.239000">a one-inch touchpad, and I strapped it to my finger.</span> <span class="audio-time caption" data-speaker="Shae" data-start="500.240000" data-stop="504.759000">And it was a PS2, and it had a USB converter plugged into it.</span> <span class="audio-time caption" data-speaker="Shae" data-start="504.760000" data-stop="508.719000">And the idea was I could keep typing, and then I could move the mouse</span> <span class="audio-time caption" data-speaker="Shae" data-start="508.720000" data-stop="511.839000">around without taking my hands off the keyboard.</span> <span class="audio-time caption" data-speaker="Shae" data-start="511.840000" data-stop="514.719000">And now they actually have touchpad rings.</span> <span class="audio-time caption" data-speaker="Shae" data-start="514.720000" data-stop="518.039000">They came out six months or a year ago.</span> <span class="audio-time caption" data-speaker="Shae" data-start="518.040000" data-stop="519.839000">It's relatively recent.</span> <span class="audio-time caption" data-speaker="Shae" data-start="519.840000" data-stop="522.019000">But the idea is no change in context.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="522.020000" data-stop="523.933000"><strong class="speaker-name">Sacha:</strong>  I've only seen the scroll rings,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="523.934000" data-stop="526.199000">but now there's a touchpad version.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="526.200000" data-stop="527.479000">That is interesting.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="527.480000" data-stop="530.639000"><strong class="speaker-name">Shae:</strong>  Yeah, I think that's pretty cool stuff.</span> <span class="audio-time caption" data-speaker="Shae" data-start="530.640000" data-stop="534.139000">Hardware is actually improving things.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="534.000000">8:54</span> <strong>Pair programming: ttyshare, shwim</strong></div><p></p><span class="audio-time caption" data-speaker="Shae" data-start="534.140000" data-stop="538.559000"><strong class="speaker-name">Shae:</strong> Oh, another thing, one of the things you talked about with Prot was</span> <span class="audio-time caption" data-speaker="Shae" data-start="538.560000" data-stop="540.559000">how do you learn other people's stuff?</span> <span class="audio-time caption" data-speaker="Shae" data-start="540.560000" data-stop="545.119000">And one of the things that I use for pairing, so I have one coworker,</span> <span class="audio-time caption" data-speaker="Shae" data-start="545.120000" data-stop="546.799000">and it's a strange, interesting job.</span> <span class="audio-time caption" data-speaker="Shae" data-start="546.800000" data-stop="549.919000">I like it a lot.</span> <span class="audio-time caption" data-speaker="Shae" data-start="549.920000" data-stop="555.679000">And I met this coworker at a previous job, and one of the things,</span> <span class="audio-time caption" data-speaker="Shae" data-start="555.680000" data-stop="558.479000">let's see if I can find it.</span> <span class="audio-time caption" data-speaker="Shae" data-start="558.480000" data-stop="560.406000">So we used to, at the previous job,</span> <span class="audio-time caption" data-speaker="Shae" data-start="560.407000" data-stop="562.439000">we used this thing called ttyshare.</span> <span class="audio-time caption" data-speaker="Shae" data-start="562.440000" data-stop="563.079000">Have you heard of it?</span> <span class="audio-time caption" data-speaker="Shae" data-start="563.080000" data-stop="565.959000">ttyshare.</span> <span class="audio-time caption" data-speaker="Shae" data-start="565.960000" data-stop="566.879000">It's great.</span> <span class="audio-time caption" data-speaker="Shae" data-start="566.880000" data-stop="569.599000">You can run it in a terminal and then you can effectively share your</span> <span class="audio-time caption" data-speaker="Shae" data-start="569.600000" data-stop="571.399000">terminal with someone else.</span> <span class="audio-time caption" data-speaker="Shae" data-start="571.400000" data-stop="574.879000">And so you have multiplayer terminals and that's neat.</span> <span class="audio-time caption" data-speaker="Shae" data-start="574.880000" data-stop="577.639000">It was kind of a pain to set up.</span> <span class="audio-time caption" data-speaker="Shae" data-start="577.640000" data-stop="579.116000">You had to make sure that you weren't NATed,</span> <span class="audio-time caption" data-speaker="Shae" data-start="579.117000" data-stop="580.675000">you know, like you had to have effectively...</span> <span class="audio-time caption" data-speaker="Shae" data-start="580.676000" data-stop="581.759000">someone had to have a public IP.</span> <span class="audio-time caption" data-speaker="Shae" data-start="581.760000" data-stop="582.839000">You had to do a couple of other things.</span> <span class="audio-time caption" data-speaker="Shae" data-start="582.840000" data-stop="587.639000">And as part of my job, I'm now, I guess, part maintainer for Magic</span> <span class="audio-time caption" data-speaker="Shae" data-start="587.640000" data-stop="588.839000">Wormhole, the software.</span> <p></p><a href="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/mpv-shot0059.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/mpv-shot0059.jpg" alt="image from video 00:09:58.467" data-time="00:09:58.467"></a><span class="audio-time caption" data-speaker="Shae" data-start="588.840000" data-stop="596.159000"><strong class="speaker-name">Shae:</strong> And so one of the things that my coworker wrote was this nifty thing</span> <span class="audio-time caption" data-speaker="Shae" data-start="596.160000" data-stop="598.439000">called ShWiM.</span> <span class="audio-time caption" data-speaker="Shae" data-start="598.440000" data-stop="599.719000">And it's basically "shell with me."</span> <span class="audio-time caption" data-speaker="Shae" data-start="599.720000" data-stop="604.199000">And it's a wrapper around TTY share so that with one single command,</span> <span class="audio-time caption" data-speaker="Shae" data-start="604.200000" data-stop="606.239000">you can share a terminal.</span> <span class="audio-time caption" data-speaker="Shae" data-start="606.240000" data-stop="609.559000">And the way that we use this is...</span> <span class="audio-time caption" data-speaker="Shae" data-start="609.560000" data-stop="617.359000">We both run Emacs as a server, and then we use emacsclient in the</span> <span class="audio-time caption" data-speaker="Shae" data-start="617.360000" data-stop="618.639000">terminal to connect.</span> <p></p><a href="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/mpv-shot0058.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/mpv-shot0058.jpg" alt="image from video 00:10:41.967" data-time="00:10:41.967"></a><span class="audio-time caption" data-speaker="Shae" data-start="618.640000" data-stop="621.919000"><strong class="speaker-name">Shae:</strong> I don't know if you've ever done this, but I can have a terminal</span> <span class="audio-time caption" data-speaker="Shae" data-start="621.920000" data-stop="628.119000">right next to this, and if I run emacsclient in a window, then I'm</span> <span class="audio-time caption" data-speaker="Shae" data-start="628.120000" data-stop="629.399000">sharing the same thing.</span> <span class="audio-time caption" data-speaker="Shae" data-start="629.400000" data-stop="634.800000">This is a graphical chat with Sacha,</span> <span class="audio-time caption" data-speaker="Shae" data-start="634.801000" data-stop="642.699000">in the terminal or in the UI, and both of them are updated.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="642.680000" data-stop="644.200000"><strong class="speaker-name">Sacha:</strong>  That's fantastic.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="644.200000" data-stop="647.360000">I remember people were using tmate for something similar before</span> <span class="audio-time caption" data-speaker="Sacha" data-start="647.360000" data-stop="648.920000">where you could share that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="648.920000" data-stop="653.320000">But yeah, it's just making it seamless, making it frictionless.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="653.320000" data-stop="656.800000">And on the other side, I have also just been</span> <span class="audio-time caption" data-speaker="Sacha" data-start="656.800000" data-stop="659.600000">using wormhole to send large files</span> <span class="audio-time caption" data-speaker="Sacha" data-start="659.600000" data-stop="664.240000">back and forth between Karthik and John Wiegley because we have this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="664.240000" data-stop="667.360000">other Emacs chat thing where we're going to post it eventually,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="667.360000" data-stop="668.760000">once I finish figuring out how to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="668.760000" data-stop="671.440000">redact all the personal information and Org files.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="671.440000" data-stop="674.600000">But yeah, it's great for being able to send things without having to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="674.600000" data-stop="677.120000">worry about, oh, you know, what's my public IP?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="677.120000" data-stop="680.960000">Can I tunnel all the different things to get past whatever firewalls</span> <span class="audio-time caption" data-speaker="Sacha" data-start="680.960000" data-stop="681.800000">there are?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="681.800000" data-stop="686.200000">So if this also works for terminal things plus Emacs client, that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="686.200000" data-stop="691.640000">sounds really, really exciting.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="691.640000" data-stop="692.000000"><strong class="speaker-name">Shae:</strong>  We've tried some other experiments.</span> <span class="audio-time caption" data-speaker="Shae" data-start="692.040000" data-stop="696.919000">One of the things we tried to do was, and the only downside is like,</span> <span class="audio-time caption" data-speaker="Shae" data-start="696.920000" data-stop="699.839000">what if my terminal has a different size, then you have to kind of</span> <span class="audio-time caption" data-speaker="Shae" data-start="699.840000" data-stop="701.559000">shrink and match.</span> <span class="audio-time caption" data-speaker="Shae" data-start="701.560000" data-stop="705.599000">And so we tried to honestly directly bridge to Emacs clients.</span> <span class="audio-time caption" data-speaker="Shae" data-start="705.600000" data-stop="709.039000">And because I don't know if you're aware that there's effectively a</span> <span class="audio-time caption" data-speaker="Shae" data-start="709.040000" data-stop="712.479000">local socket for the Emacs client that you can have multiple things</span> <span class="audio-time caption" data-speaker="Shae" data-start="712.480000" data-stop="713.039000">connect to.</span> <span class="audio-time caption" data-speaker="Shae" data-start="713.040000" data-stop="716.799000">But it turns out there's some sort of like system so I couldn't like</span> <span class="audio-time caption" data-speaker="Shae" data-start="716.800000" data-stop="721.119000">reach across the network and directly use my co-workers Emacs session</span> <span class="audio-time caption" data-speaker="Shae" data-start="721.120000" data-stop="722.279000">and he couldn't use mine.</span> <span class="audio-time caption" data-speaker="Shae" data-start="722.280000" data-stop="725.559000">Weird things happened when we tried to do this cross host.</span> <span class="audio-time caption" data-speaker="Shae" data-start="725.560000" data-stop="729.499000">As far as I can tell the Emacs client only works in the same host.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="729.500000" data-stop="730.679000"><strong class="speaker-name">Sacha:</strong>  That's interesting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="730.680000" data-stop="735.199000">Lately, I've also been experimenting with CRDT, which has that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="735.200000" data-stop="736.439000">Emacs-less plant as well.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="736.440000" data-stop="737.719000">So that's been nice.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="737.720000" data-stop="742.559000">But yeah, of course, a lot of people will be kind of stuck with the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="742.560000" data-stop="749.979000">first challenge of finding someone that they can pair in Emacs with.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="749.980000" data-stop="751.039000"><strong class="speaker-name">Shae:</strong>  I understand.</span> <span class="audio-time caption" data-speaker="Shae" data-start="751.040000" data-stop="755.359000">And I think I'm honestly very happy that my one single coworker at</span> <span class="audio-time caption" data-speaker="Shae" data-start="755.360000" data-stop="757.679000">this job is also a big Emacs user.</span> <span class="audio-time caption" data-speaker="Shae" data-start="757.680000" data-stop="761.359000">And so we exchanged cool ideas and worked on stuff.</span> <span class="audio-time caption" data-speaker="Shae" data-start="761.360000" data-stop="764.579000">And I'm very happy about that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="764.580000" data-stop="768.399000"><strong class="speaker-name">Sacha:</strong>  Were they already an Emacs person before they joined?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="768.400000" data-stop="773.539000">Or did you pick the coworker because they were an Emacs person?</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="773.540000" data-stop="774.333000"><strong class="speaker-name">Shae:</strong>  They picked me.</span> <span class="audio-time caption" data-speaker="Shae" data-start="774.334000" data-stop="778.199000">They were pretty much the person who started this thing.</span> <span class="audio-time caption" data-speaker="Shae" data-start="778.200000" data-stop="782.199000">And they picked me because they'd worked with me at the previous job.</span> <span class="audio-time caption" data-speaker="Shae" data-start="782.200000" data-stop="784.639000">Although I did have an experience like that.</span> <span class="audio-time caption" data-speaker="Shae" data-start="784.640000" data-stop="789.199000">I had this massive Emacs config file, like 20,000 lines, and half of</span> <span class="audio-time caption" data-speaker="Shae" data-start="789.200000" data-stop="793.039000">it was comments because it had accrued over 20 years.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="793.000000">13:13</span> <strong>Recurse Center, "What is that keyboard? What is that editor?!", Emacs bankruptcy and starter kits</strong></div><p></p><span class="audio-time caption" data-speaker="Shae" data-start="793.040000" data-stop="800.479000"><strong class="speaker-name">Shae:</strong> And in 2019, when I first went to the Recurse Center, well, my first</span> <span class="audio-time caption" data-speaker="Shae" data-start="800.480000" data-stop="802.879000">batch, I just was extremely extroverted and social.</span> <span class="audio-time caption" data-speaker="Shae" data-start="802.880000" data-stop="805.639000">But my second immediate following batch, which is not the common</span> <span class="audio-time caption" data-speaker="Shae" data-start="805.640000" data-stop="808.399000">pattern, I was like, okay, my goal is to write a bunch of Haskell,</span> <span class="audio-time caption" data-speaker="Shae" data-start="808.400000" data-stop="809.959000">get some Haskell jobs,</span> <span class="audio-time caption" data-speaker="Shae" data-start="809.960000" data-stop="813.159000">And so I went to the quiet room on the quiet floor.</span> <span class="audio-time caption" data-speaker="Shae" data-start="813.160000" data-stop="816.639000">But then someone else came in, Marianne, my favorite programming</span> <span class="audio-time caption" data-speaker="Shae" data-start="816.640000" data-stop="817.159000">friend.</span> <span class="audio-time caption" data-speaker="Shae" data-start="817.160000" data-stop="819.559000">And she was like, what is that keyboard you're using?</span> <span class="audio-time caption" data-speaker="Shae" data-start="819.560000" data-stop="822.199000">And I was like, ah, this is an Ergodox thing.</span> <span class="audio-time caption" data-speaker="Shae" data-start="822.200000" data-stop="824.159000">And then she's like, what is this editor you're using?</span> <span class="audio-time caption" data-speaker="Shae" data-start="824.160000" data-stop="825.879000">And I was like, oh, that's Emacs.</span> <span class="audio-time caption" data-speaker="Shae" data-start="825.880000" data-stop="828.919000">And I was kind of a grumpy, like, I'm trying to get stuff done.</span> <span class="audio-time caption" data-speaker="Shae" data-start="828.920000" data-stop="830.159000">But she was persistent.</span> <span class="audio-time caption" data-speaker="Shae" data-start="830.160000" data-stop="832.879000">She was like, show me this thing.</span> <span class="audio-time caption" data-speaker="Shae" data-start="832.880000" data-stop="834.919000">And so I was like, I'll show you Emacs.</span> <span class="audio-time caption" data-speaker="Shae" data-start="834.920000" data-stop="836.439000">And she was like, this is great.</span> <span class="audio-time caption" data-speaker="Shae" data-start="836.440000" data-stop="837.799000">And I was like.</span> <span class="audio-time caption" data-speaker="Shae" data-start="837.800000" data-stop="838.399000">This thing?</span> <span class="audio-time caption" data-speaker="Shae" data-start="838.400000" data-stop="840.959000">OK, cool.</span> <span class="audio-time caption" data-speaker="Shae" data-start="840.960000" data-stop="844.159000">And I was like, I don't think you want my config.</span> <span class="audio-time caption" data-speaker="Shae" data-start="844.160000" data-stop="845.919000">You'll probably want a starter kit.</span> <span class="audio-time caption" data-speaker="Shae" data-start="845.920000" data-stop="848.239000">And she was like, well, what are starter kits?</span> <span class="audio-time caption" data-speaker="Shae" data-start="848.240000" data-stop="850.159000">And I was like, well, I've heard about Spacemacs.</span> <span class="audio-time caption" data-speaker="Shae" data-start="850.160000" data-stop="851.119000">I've heard about Doom.</span> <span class="audio-time caption" data-speaker="Shae" data-start="851.120000" data-stop="852.679000">And I would try one of those.</span> <span class="audio-time caption" data-speaker="Shae" data-start="852.680000" data-stop="854.119000">So she tried Spacemacs.</span> <span class="audio-time caption" data-speaker="Shae" data-start="854.120000" data-stop="857.159000">And I guess this next part happened over several months.</span> <span class="audio-time caption" data-speaker="Shae" data-start="857.160000" data-stop="858.199000">She tried Spacemacs.</span> <span class="audio-time caption" data-speaker="Shae" data-start="858.200000" data-stop="860.199000">And then she was like, I like it, but it's slow.</span> <span class="audio-time caption" data-speaker="Shae" data-start="860.200000" data-stop="861.399000">So I'm switching to Doom Emacs.</span> <span class="audio-time caption" data-speaker="Shae" data-start="861.400000" data-stop="862.279000">And I would pair with her.</span> <span class="audio-time caption" data-speaker="Shae" data-start="862.280000" data-stop="866.479000">And I was like, wow, look at all these cool things that the starter</span> <span class="audio-time caption" data-speaker="Shae" data-start="866.480000" data-stop="867.519000">kits can do.</span> <span class="audio-time caption" data-speaker="Shae" data-start="867.520000" data-stop="873.119000">I ended up flushing my entire 20-year-old config and kind of starting</span> <span class="audio-time caption" data-speaker="Shae" data-start="873.120000" data-stop="876.519000">over and stealing a lot of great ideas from the starter kits.</span> <span class="audio-time caption" data-speaker="Shae" data-start="876.520000" data-stop="883.839000">And Marianne is very ambitious, independent, hardworking, very</span> <span class="audio-time caption" data-speaker="Shae" data-start="883.840000" data-stop="884.279000">focused.</span> <span class="audio-time caption" data-speaker="Shae" data-start="884.280000" data-stop="885.239000">I'm not very focused.</span> <span class="audio-time caption" data-speaker="Shae" data-start="885.240000" data-stop="889.039000">But I've learned a lot of things from her and watching her kind of...</span> <span class="audio-time caption" data-speaker="Shae" data-start="889.040000" data-stop="894.159000">I haven't done C in Emacs in a long time so it's great fun to watch</span> <span class="audio-time caption" data-speaker="Shae" data-start="894.160000" data-stop="898.079000">her learn these new things and then I learned stuff too and yeah it's</span> <span class="audio-time caption" data-speaker="Shae" data-start="898.080000" data-stop="902.319000">good to have collaborative people to work with.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="902.320000" data-stop="905.039000"><strong class="speaker-name">Sacha:</strong>  So it sounds like if people would like to encourage more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="905.040000" data-stop="908.199000">people to talk to them about Emacs, feel free to use your strange</span> <span class="audio-time caption" data-speaker="Sacha" data-start="908.200000" data-stop="911.079000">keyboards out in public.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="911.080000" data-stop="911.839000"><strong class="speaker-name">Shae:</strong>  I like that.</span> <span class="audio-time caption" data-speaker="Shae" data-start="911.840000" data-stop="914.039000">That's good.</span> <span class="audio-time caption" data-speaker="Shae" data-start="914.040000" data-stop="915.719000">That is good.</span> <span class="audio-time caption" data-speaker="Shae" data-start="915.720000" data-stop="918.759000">Yeah I think that's reasonable.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="918.760000" data-stop="921.719000"><strong class="speaker-name">Sacha:</strong>  Yeah, and I've just recently started digging into the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="921.720000" data-stop="924.519000">starter kits too, because I realized I don't know much about them.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="924.520000" data-stop="927.999000">It is really interesting going through them and discovering all these</span> <span class="audio-time caption" data-speaker="Sacha" data-start="928.000000" data-stop="932.679000">Emacs 31 options that you can enable to simplify your config or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="932.680000" data-stop="934.759000">improve your workflow and all that stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="934.760000" data-stop="937.639000">So there's a lot of good stuff in starter kits, even for people who</span> <span class="audio-time caption" data-speaker="Sacha" data-start="937.640000" data-stop="939.939000">are not newcomers.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="939.940000" data-stop="940.879000"><strong class="speaker-name">Shae:</strong>  I agree.</span> <span class="audio-time caption" data-speaker="Shae" data-start="940.880000" data-stop="946.319000">And I think there's nothing wrong with just learning a bunch of new</span> <span class="audio-time caption" data-speaker="Shae" data-start="946.320000" data-stop="949.639000">things, trying them out, and also throwing them away if you don't</span> <span class="audio-time caption" data-speaker="Shae" data-start="949.640000" data-stop="950.199000">like them.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="950.200000" data-stop="954.679000"><strong class="speaker-name">Sacha:</strong>  Now that you've declared Emacs bankruptcy and rebuilt your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="954.680000" data-stop="958.999000">Emacs on top of other people's starter kits, what has made it into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="959.000000" data-stop="959.999000">your config?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="960.000000" data-stop="963.519000">What have you kept from those 20 years of tinkering with Emacs that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="963.520000" data-stop="965.999000">you really wanted to stick around?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="966.000000">16:06</span> <strong>hippie-expand</strong></div><p></p><span class="audio-time caption" data-speaker="Shae" data-start="966.000000" data-stop="969.359000"><strong class="speaker-name">Shae:</strong>  I think the only thing that has absolutely stuck around is my</span> <span class="audio-time caption" data-speaker="Shae" data-start="969.360000" data-stop="972.519000">use of hippie-expand, which is, I believe, a very old...</span> <span class="audio-time caption" data-speaker="Shae" data-start="972.520000" data-stop="976.159000">an ancient tool from a different time.</span> <span class="audio-time caption" data-speaker="Shae" data-start="976.160000" data-stop="980.519000">Most of the other stuff is kind of gone.</span> <span class="audio-time caption" data-speaker="Shae" data-start="980.520000" data-stop="981.759000">Gone to the wayside.</span> <span class="audio-time caption" data-speaker="Shae" data-start="981.760000" data-stop="985.519000">But I really like, I honestly really like hippie-expand.</span> <span class="audio-time caption" data-speaker="Shae" data-start="985.520000" data-stop="989.159000">And I know that like, I have rarely heard of other people who use</span> <span class="audio-time caption" data-speaker="Shae" data-start="989.160000" data-stop="990.159000">hippie-expand.</span> <span class="audio-time caption" data-speaker="Shae" data-start="990.160000" data-stop="991.039000">But you use it?</span> <span class="audio-time caption" data-speaker="Shae" data-start="991.040000" data-stop="995.679000">I think you just muted yourself.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="995.680000" data-stop="997.959000"><strong class="speaker-name">Sacha:</strong>  I also vote for hippie-expand.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="997.960000" data-stop="1002.519000">It's a nice way to try different functions and just say, I just want</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1002.520000" data-stop="1006.659000">all these different possible completions to go in there.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="1006.660000" data-stop="1007.239000"><strong class="speaker-name">Shae:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1007.240000" data-stop="1013.439000">The thing for me that really sold me on hippie-expand is that most of</span> <span class="audio-time caption" data-speaker="Shae" data-start="1013.440000" data-stop="1014.919000">the time when I am...</span> <span class="audio-time caption" data-speaker="Shae" data-start="1014.920000" data-stop="1018.159000">When I'm doing something, I want to say, like, I can already see that</span> <span class="audio-time caption" data-speaker="Shae" data-start="1018.160000" data-stop="1019.759000">word, just pick that one.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1019.760000" data-stop="1022.919000">And so I'll type the first characters and hit, like, meta forward</span> <span class="audio-time caption" data-speaker="Shae" data-start="1022.920000" data-stop="1024.919000">slash, and ta-da, it's usually there.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1024.920000" data-stop="1027.879000">But then sometimes I do really want, like, some Elisp or some other</span> <span class="audio-time caption" data-speaker="Shae" data-start="1027.880000" data-stop="1028.279000">stuff.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1028.280000" data-stop="1034.319000">And so I actually spent a lot of time tuning this the first time.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1034.000000">17:14</span> <strong>yasnippet</strong></div><p></p><span class="audio-time caption" data-speaker="Shae" data-start="1034.320000" data-stop="1038.999000"><strong class="speaker-name">Shae:</strong> I actually only changed it for the first time recently because I was</span> <span class="audio-time caption" data-speaker="Shae" data-start="1039.000000" data-stop="1044.599000">reading a how to write Rust well inside Emacs and they said oh well</span> <span class="audio-time caption" data-speaker="Shae" data-start="1044.600000" data-stop="1049.719000">you want to use yasnippet and so I you know the funny thing is that</span> <span class="audio-time caption" data-speaker="Shae" data-start="1049.720000" data-stop="1053.759000">yasnippet I believe is the thing that got me into Emacs like in 1999</span> <span class="audio-time caption" data-speaker="Shae" data-start="1053.760000" data-stop="1059.079000">I met this Finnish person Erno Kuusela in Oulu, Finland.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1059.080000" data-stop="1060.199000">Really cool guy.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1060.200000" data-stop="1062.959000">I was like, wow, how do you do this?</span> <span class="audio-time caption" data-speaker="Shae" data-start="1062.960000" data-stop="1067.839000">As soon as you open a file, it's got a substructure and a skeleton.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1067.840000" data-stop="1069.849000">And when you type part of a function or something,</span> <span class="audio-time caption" data-speaker="Shae" data-start="1069.850000" data-stop="1071.467000">it just populates it.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1071.468000" data-stop="1073.759000">And he was like, I'm using this snippet command in Emacs.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1073.760000" data-stop="1075.559000">That's why I was like, what's Emacs?</span> <span class="audio-time caption" data-speaker="Shae" data-start="1075.560000" data-stop="1077.879000">It was very exciting.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1077.880000" data-stop="1081.199000">And at the time, I was using Vim.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1081.200000" data-stop="1088.539000">And Vim was not as, I don't want to say, automatable.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1088.540000" data-stop="1092.959000"><strong class="speaker-name">Sacha:</strong>  Yeah, now with Neovim and Lua, people are writing more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1092.960000" data-stop="1094.039000">extensions for it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1094.040000" data-stop="1099.619000">But before, you had to know a lot of magic in order to customize Vim.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="1099.620000" data-stop="1100.639000"><strong class="speaker-name">Shae:</strong>  Right, right.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1100.640000" data-stop="1101.279000">I agree.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1101.280000" data-stop="1103.839000">Let's see, what else do I do?</span> <span class="audio-time caption" data-speaker="Shae" data-start="1103.840000" data-stop="1108.559000">I run my own email server, and I, of course, read my email in Emacs.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1108.560000" data-stop="1110.159000">In GNU, no less.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1110.160000" data-stop="1119.119000">Which is, I know, an NNTP reader, but it's still also a great...</span> <span class="audio-time caption" data-speaker="Shae" data-start="1119.120000" data-stop="1123.199000">I used to use twiddle compile and I think that stopped working like</span> <span class="audio-time caption" data-speaker="Shae" data-start="1123.200000" data-stop="1130.999000">six years ago, so I need to get rid of this comment, but there's</span> <span class="audio-time caption" data-speaker="Shae" data-start="1131.000000" data-stop="1132.839000">still a lot of kind of cruft from earlier times.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1132.000000">18:52</span> <strong>Function keys</strong></div><p></p><span class="audio-time caption" data-speaker="Shae" data-start="1132.840000" data-stop="1141.199000"><strong class="speaker-name">Shae:</strong> Remember how I said that I use function keys to have like purpose</span> <span class="audio-time caption" data-speaker="Shae" data-start="1141.200000" data-stop="1143.039000">specific stuff?</span> <span class="audio-time caption" data-speaker="Shae" data-start="1143.040000" data-stop="1150.879000">This was especially true because, I mean, I had my left arm strapped</span> <span class="audio-time caption" data-speaker="Shae" data-start="1150.880000" data-stop="1158.559000">to my chest for like a year and three months before I even started</span> <span class="audio-time caption" data-speaker="Shae" data-start="1158.560000" data-stop="1164.959000">regaining any flexibility, and that meant that...</span> <span class="audio-time caption" data-speaker="Shae" data-start="1164.960000" data-stop="1171.279000">I'm amazed that you could just map them directly to single commands</span> <span class="audio-time caption" data-speaker="Shae" data-start="1171.280000" data-stop="1174.999000">instead of giving in to the temptation to make them prefixes for</span> <span class="audio-time caption" data-speaker="Shae" data-start="1175.000000" data-stop="1176.319000">longer keystrokes.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1176.320000" data-stop="1181.079000">I didn't really have the choice because I had only one arm that</span> <span class="audio-time caption" data-speaker="Shae" data-start="1181.080000" data-stop="1185.200000">worked. It was just a lot harder to do any chording at the time.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1185.201000" data-stop="1188.267000">I still have a lot of these.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1188.268000" data-stop="1192.133000">F3 I use a lot, which is like, oh, what am I working on right now?</span> <span class="audio-time caption" data-speaker="Shae" data-start="1192.134000" data-stop="1195.300000">That is org-clock-goto.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1195.301000" data-stop="1198.133000">A lot of times, I want to have a terminal</span> <span class="audio-time caption" data-speaker="Shae" data-start="1198.134000" data-stop="1202.140000">that's in Emacs, so that's vterm,</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1202.000000">20:02</span> <strong>Org Mode
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/ec22-shae-erisson-00-20-17-133.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/ec22-shae-erisson-00-20-17-133.jpg" alt="image from video 00:20:17.133" data-time="00:20:17.133"></a><span class="audio-time caption" data-speaker="Shae" data-start="1202.141000" data-stop="1205.159000"><strong class="speaker-name">Shae:</strong> And I actually really do use the calendar all the time. This is like</span> <span class="audio-time caption" data-speaker="Shae" data-start="1205.160000" data-stop="1211.119000">just switch to whatever it is. Of course, my email is here. You know</span> <span class="audio-time caption" data-speaker="Shae" data-start="1211.120000" data-stop="1217.119000">what, let's see... So this... I don't know, have you seen this</span> <span class="audio-time caption" data-speaker="Shae" data-start="1217.120000" data-stop="1223.939000">before? Have you seen this thing called STARTED in an Org mode file?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1223.940000" data-stop="1227.339000"><strong class="speaker-name">Sacha:</strong>  I use a STARTED state, yes.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="1227.340000" data-stop="1232.579000"><strong class="speaker-name">Shae:</strong>  Well, I got it from you!</span> <span class="audio-time caption" data-speaker="Shae" data-start="1232.580000" data-stop="1235.067000">So if I look at like, my Org Mode configuration,</span> <span class="audio-time caption" data-speaker="Shae" data-start="1235.068000" data-stop="1238.333000">a lot of this STARTED stuff I have from you,</span> <span class="audio-time caption" data-speaker="Shae" data-start="1238.334000" data-stop="1239.467000">I don't know when,</span> <span class="audio-time caption" data-speaker="Shae" data-start="1239.468000" data-stop="1241.839000">but you were the person who introduced me to it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1241.840000" data-stop="1246.367000"><strong class="speaker-name">Sacha:</strong>  It's the reminder that I did start working on this.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1246.368000" data-stop="1249.933000">I tend to get distracted by intermediate tasks, so it's nice to be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1249.934000" data-stop="1253.067000">able to say, try to finish these ones first before you move on to the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1253.068000" data-stop="1254.700000">next thing, maybe?</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="1254.680000" data-stop="1257.967000"><strong class="speaker-name">Shae:</strong>  I agree. I have the same thing, yeah.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1257.968000" data-stop="1261.233000">And I keep meaning, because this is...</span> <span class="audio-time caption" data-speaker="Shae" data-start="1261.234000" data-stop="1264.300000">I know that you can put Org Mode configuration into the first</span> <span class="audio-time caption" data-speaker="Shae" data-start="1264.301000" data-stop="1267.267000">TODO item. I would really like to move it into the elisp</span> <span class="audio-time caption" data-speaker="Shae" data-start="1267.268000" data-stop="1269.133000">and I just haven't gotten around to it.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1269.134000" data-stop="1270.600000">And it's been 10 years. I mean,</span> <span class="audio-time caption" data-speaker="Shae" data-start="1270.601000" data-stop="1274.499000">maybe I should just do it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1274.000000">21:14</span> <strong>Show Org agenda when idle
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/ec22-shae-erisson-00-21-23-933.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/ec22-shae-erisson-00-21-23-933.jpg" alt="image from video 00:21:23.933" data-time="00:21:23.933"></a><span class="audio-time caption" data-speaker="Shae" data-start="1274.500000" data-stop="1277.800000"><strong class="speaker-name">Shae:</strong> One of the things I did that I found fun...</span> <span class="audio-time caption" data-speaker="Shae" data-start="1277.801000" data-stop="1280.767000">I really have written almost zero Elisp,</span> <span class="audio-time caption" data-speaker="Shae" data-start="1280.760000" data-stop="1286.280000">but I did actually puzzle my way through this a year ago.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1286.280000" data-stop="1291.320000">Since so much of my life is in Org Mode, I learned how to make timers.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1291.320000" data-stop="1295.320000">This is very close to what you get directly out of how to do timers</span> <span class="audio-time caption" data-speaker="Shae" data-start="1295.320000" data-stop="1296.560000">in Emacs.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1296.560000" data-stop="1303.400000">After some amount of time, I want my Org agenda to pop up because I</span> <span class="audio-time caption" data-speaker="Shae" data-start="1303.400000" data-stop="1305.600000">want to say like, oh, what is the stuff I'm supposed to be doing?</span> <span class="audio-time caption" data-speaker="Shae" data-start="1305.600000" data-stop="1306.720000">And what am I forgetting?</span> <span class="audio-time caption" data-speaker="Shae" data-start="1306.720000" data-stop="1307.800000">What has been scheduled?</span> <span class="audio-time caption" data-speaker="Shae" data-start="1307.800000" data-stop="1308.760000">And what is on my to-do list?</span> <span class="audio-time caption" data-speaker="Shae" data-start="1308.760000" data-stop="1310.120000">And I also like to look at</span> <span class="audio-time caption" data-speaker="Shae" data-start="1310.120000" data-stop="1312.680000">what is the stuff I've been working on lately?</span> <span class="audio-time caption" data-speaker="Shae" data-start="1312.680000" data-stop="1318.040000">And I really like that a lot.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1318.000000">21:58</span> <strong>Programmers want flow. When programming, light turns red
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/ec22-shae-erisson-00-22-16-067.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/ec22-shae-erisson-00-22-16-067.jpg" alt="image from video 00:22:16.067" data-time="00:22:16.067"></a><span class="audio-time caption" data-speaker="Shae" data-start="1318.120000" data-stop="1323.760000"><strong class="speaker-name">Shae:</strong> Another thing that I realized is that I had a blog post</span> <span class="audio-time caption" data-speaker="Shae" data-start="1323.760000" data-stop="1325.960000">that was wildly popular.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1325.960000" data-stop="1327.120000">Where did I put it?</span> <span class="audio-time caption" data-speaker="Shae" data-start="1327.120000" data-stop="1328.720000">And it was all about Emacs.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1328.720000" data-stop="1332.720000">I don't know if you saw the... Here we go.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1332.720000" data-stop="1335.200000">It was... Ah, here it is.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1335.200000" data-stop="1338.567000">So here it is in... This is very much an Emacs...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1338.568000" data-stop="1340.400000"><strong class="speaker-name">Sacha:</strong>  Oh, yeah, I remember that one.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1340.920000" data-stop="1341.960000">I put it in Emacs News.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1341.960000" data-stop="1343.520000">I thought it was great.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="1343.520000" data-stop="1344.800000"><strong class="speaker-name">Shae:</strong>  All right, cool.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1344.800000" data-stop="1348.221000"><strong class="speaker-name">Sacha:</strong>  I would like the kiddo to sometimes be able to acknowledge this,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1348.222000" data-stop="1349.840000">but this is not happening.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1349.840000" data-stop="1351.979000">Still, yes.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="1351.980000" data-stop="1352.840000"><strong class="speaker-name">Shae:</strong>  Right, right.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1352.868000" data-stop="1355.839000">Yeah, and so this was really fun because, like...</span> <span class="audio-time caption" data-speaker="Shae" data-start="1355.840000" data-stop="1361.639000">I had a friend who was in development and there was like millions of</span> <span class="audio-time caption" data-speaker="Shae" data-start="1361.640000" data-stop="1364.719000">dollars spent on how do you detect whether a programmer is in flow</span> <span class="audio-time caption" data-speaker="Shae" data-start="1364.720000" data-stop="1369.159000">and it came down to if they're typing they're probably in flow so and</span> <span class="audio-time caption" data-speaker="Shae" data-start="1369.160000" data-stop="1373.679000">that was it because they tried to look at EGs and doing all kinds of</span> <span class="audio-time caption" data-speaker="Shae" data-start="1373.680000" data-stop="1377.599000">other stuff but it was like if they're typing don't interrupt them.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1377.600000" data-stop="1379.900000">And I don't know, because I do so much in Emacs, I'm not sure how</span> <span class="audio-time caption" data-speaker="Shae" data-start="1379.901000" data-stop="1381.433000">accurate this was. But basically,</span> <span class="audio-time caption" data-speaker="Shae" data-start="1381.434000" data-stop="1383.000000">that's where I learned to do timers the first time.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1383.001000" data-stop="1385.133000">Or maybe... I don't remember which one I did first.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1385.134000" data-stop="1390.767000">And the idea then was as soon as basically my average typing into</span> <span class="audio-time caption" data-speaker="Shae" data-start="1390.768000" data-stop="1392.900000">Emacs has gone up a certain amount,</span> <span class="audio-time caption" data-speaker="Shae" data-start="1392.901000" data-stop="1394.833000">then it will actually switch to busy.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1394.834000" data-stop="1401.179000">And it works just fine. It was a lot of fun to write.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1401.180000" data-stop="1405.679000"><strong class="speaker-name">Sacha:</strong>  So yeah, interesting use of getting the activity.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1405.680000" data-stop="1408.519000">I've seen other fun implementations of this.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1408.520000" data-stop="1412.279000">I think there's a c-c-c-combo package that makes some fun</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1412.280000" data-stop="1415.479000">animation appear if you're typing really quickly.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="1415.480000" data-stop="1417.279000"><strong class="speaker-name">Shae:</strong>  Oh, oh, yeah.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1417.280000" data-stop="1421.239000">I'm guessing because I think Atom, the Atom editor had that for a</span> <span class="audio-time caption" data-speaker="Shae" data-start="1421.240000" data-stop="1421.759000">while.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1421.760000" data-stop="1424.859000">I guess that's where it came from.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1424.860000" data-stop="1428.133000"><strong class="speaker-name">Sacha:</strong>  So yeah, because you can instrument Emacs and play around</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1428.134000" data-stop="1430.767000">with it, you can certainly do all sorts of things based on that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1430.768000" data-stop="1433.040000">information.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1433.040000" data-stop="1435.720000">Okay, so you've got it, you've got it set up so that when you come</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1435.720000" data-stop="1438.040000">back to your computer, it'll show you the stuff that you've been</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1438.040000" data-stop="1438.560000">working on.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1438.560000" data-stop="1441.700000">And when you're working on the things, you can tell it to tell the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1441.701000" data-stop="1443.167000">rest of the world not to bug you.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1443.168000" data-stop="1444.279000">Gotcha.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="1444.280000" data-stop="1446.779000"><strong class="speaker-name">Shae:</strong>  That's right.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1446.780000" data-stop="1449.400000">[Sacha: What other fun stuff do you have in there?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1465.000000">24:25</span> <strong>ef-themes and modus-themes, season</strong></div><p></p><span class="audio-time caption" data-speaker="Shae" data-start="1465.840000" data-stop="1467.000000"><strong class="speaker-name">Shae:</strong>  I discovered that I love the EF themes.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1467.000000" data-stop="1468.960000">I love the Modus themes.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1468.960000" data-stop="1470.400000">They make me very happy.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1470.400000" data-stop="1472.100000">They're just unreasonably pleasant.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1472.101000" data-stop="1476.167000">As someone who has tried every single Emacs theme ever, they're just</span> <span class="audio-time caption" data-speaker="Shae" data-start="1476.168000" data-stop="1477.033000">my favorite themes.</span> <p></p><a href="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/ec22-shae-erisson-00-24-41-000.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/ec22-shae-erisson-00-24-41-000.jpg" alt="image from video 00:24:41.000" data-time="00:24:41.000"></a><span class="audio-time caption" data-speaker="Shae" data-start="1477.034000" data-stop="1481.000000"><strong class="speaker-name">Shae:</strong> And so, at the moment, it's</span> <span class="audio-time caption" data-speaker="Shae" data-start="1481.001000" data-stop="1489.999000">summer... Where did my summer go? How can this be? There we go.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1490.000000" data-stop="1493.600000">How come I'm in spring? Wait, isn't spring over?</span> <span class="audio-time caption" data-speaker="Shae" data-start="1493.601000" data-stop="1494.767000">Hasn't summer just started?</span> <span class="audio-time caption" data-speaker="Shae" data-start="1494.768000" data-stop="1498.033000">You know what I was thinking would be fun would be take the time of</span> <span class="audio-time caption" data-speaker="Shae" data-start="1498.034000" data-stop="1502.480000">day, and you know that the EF themes has spring, summer, autumn,</span> <span class="audio-time caption" data-speaker="Shae" data-start="1502.480000" data-stop="1506.267000">and winter, and I'm not sure if there are dark versions of each of</span> <span class="audio-time caption" data-speaker="Shae" data-start="1506.268000" data-stop="1509.360000">those, but I thought, like I know that Modus themes will do this like</span> <span class="audio-time caption" data-speaker="Shae" data-start="1509.360000" data-stop="1513.333000">check for the local time of when it turns dark, and then it</span> <span class="audio-time caption" data-speaker="Shae" data-start="1513.334000" data-stop="1516.067000">will go from the light theme to the dark theme as soon as the sun</span> <span class="audio-time caption" data-speaker="Shae" data-start="1516.068000" data-stop="1518.100000">hits, and I was like, well, what if I do that for seasons, you know,</span> <span class="audio-time caption" data-speaker="Shae" data-start="1518.101000" data-stop="1519.867000">wouldn't that be cool?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1519.868000" data-stop="1529.399000"><strong class="speaker-name">Sacha:</strong>  There's this subtle sense of change as you go through the year.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1529.400000" data-stop="1531.033000">But of course you also have this thing there</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1531.034000" data-stop="1533.099000">where you just randomize it.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="1533.100000" data-stop="1534.100000"><strong class="speaker-name">Shae:</strong>  Well, I like that.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1534.101000" data-stop="1537.467000">Sometimes it's like I'm just kind of like, ah, I'm bored.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1537.468000" data-stop="1538.640000">I'm just bored of what I'm looking at.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1538.640000" data-stop="1541.880000">And so I will just change my thing.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1541.880000" data-stop="1544.200000">And it's just time for something.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1544.200000" data-stop="1544.720000">I don't know.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1544.720000" data-stop="1545.600000">It seems to work.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1545.600000" data-stop="1548.640000">It's like it gives me a little brain break from what I was staring at.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1548.640000" data-stop="1554.200000">And I did not know I was going to reset the effects scale, but that's</span> <span class="audio-time caption" data-speaker="Shae" data-start="1554.200000" data-stop="1554.800000">fine.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1554.800000" data-stop="1555.480000">Interesting.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1555.480000" data-stop="1556.960000">What else do I have in here?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1556.000000">25:56</span> <strong>htmlize (does this still work on Wayland?)</strong></div><p></p><span class="audio-time caption" data-speaker="Shae" data-start="1556.960000" data-stop="1558.840000"><strong class="speaker-name">Shae:</strong> Oh, Emacs HTMLize.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1558.840000" data-stop="1560.080000">I'm a little sad.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1560.080000" data-stop="1561.520000">I switched to Wayland.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1561.520000" data-stop="1565.520000">And if I remember correctly, HTMLize only works with, or maybe</span> <span class="audio-time caption" data-speaker="Shae" data-start="1565.520000" data-stop="1569.400000">HTMLize still works, and it's the SVG one that doesn't work.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1569.400000" data-stop="1574.560000">Emacs SVG is a thing that if you're running with an X11 backend, you</span> <span class="audio-time caption" data-speaker="Shae" data-start="1574.560000" data-stop="1578.280000">can turn your current screen directly into an SVG, which is really</span> <span class="audio-time caption" data-speaker="Shae" data-start="1578.280000" data-stop="1578.720000">cute.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1578.720000" data-stop="1579.640000">It does not work in Wayland.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1579.640000" data-stop="1581.920000">I think HTMLize does still work.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1581.920000" data-stop="1584.680000">What other things do I have in here?</span> <span class="audio-time caption" data-speaker="Shae" data-start="1584.680000" data-stop="1585.880000">I don't know.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1585.880000" data-stop="1589.160000">I guess a lot of it lately has been trying to make Rust things work</span> <span class="audio-time caption" data-speaker="Shae" data-start="1589.160000" data-stop="1590.280000">smoothly.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1590.280000" data-stop="1596.400000">I've been trying to do some... I wonder does... Oh, cool.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1596.400000" data-stop="1597.633000">That was not what I expected.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1597.000000">26:37</span> <strong>lsp-ui-imenu, jumping through rust code
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/ec22-shae-erisson-00-26-41-100.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/ec22-shae-erisson-00-26-41-100.jpg" alt="image from video 00:26:41.100" data-time="00:26:41.100"></a><span class="audio-time caption" data-speaker="Shae" data-start="1597.634000" data-stop="1600.300000"><strong class="speaker-name">Shae:</strong> I just started doing this thing with imenu.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1600.301000" data-stop="1603.133000">imenu integrates nicely with LSP.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1603.134000" data-stop="1606.833000"><strong class="speaker-name">Sacha:</strong>  That is a very pretty sidebar thing, and I need to learn how</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1606.834000" data-stop="1611.359000">to do that.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="1611.360000" data-stop="1615.639000"><strong class="speaker-name">Shae:</strong>  So because I have all these extra modifiers, my s-i is</span> <span class="audio-time caption" data-speaker="Shae" data-start="1615.640000" data-stop="1617.039000">lsp-ui-imenu.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1617.040000" data-stop="1622.119000">And the reason that what I mostly use that for is when I have like a</span> <span class="audio-time caption" data-speaker="Shae" data-start="1622.120000" data-stop="1625.859000">bunch of Rust code and I want to quickly jump through the structure</span> <span class="audio-time caption" data-speaker="Shae" data-start="1625.860000" data-stop="1630.579000">of it.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1630.580000" data-stop="1633.719000">Basically that integrates with LSP, finds all the definitions, and I</span> <span class="audio-time caption" data-speaker="Shae" data-start="1633.720000" data-stop="1635.079000">can quickly jump through it.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1635.080000" data-stop="1638.879000">I used to use lsp-treemacs for that, but lsp-treemacs puts things in</span> <span class="audio-time caption" data-speaker="Shae" data-start="1638.880000" data-stop="1645.079000">its own order, not quite the same order I want, although treemacs is</span> <span class="audio-time caption" data-speaker="Shae" data-start="1645.080000" data-stop="1647.679000">quite nice.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1647.680000" data-stop="1651.319000">I think that the thing to do is that you and I at some time maybe the</span> <span class="audio-time caption" data-speaker="Shae" data-start="1651.320000" data-stop="1653.759000">next time if we do this again we should set up with a Shwim</span> <span class="audio-time caption" data-speaker="Shae" data-start="1653.760000" data-stop="1657.279000">connection and you and I can both share our Emacs and then you can</span> <span class="audio-time caption" data-speaker="Shae" data-start="1657.280000" data-stop="1660.039000">show me cool things that you do and I can show you cool things that I</span> <span class="audio-time caption" data-speaker="Shae" data-start="1660.040000" data-stop="1662.359000">do and then we can start filing over some of the things.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1662.360000" data-stop="1663.899000">How about that?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1663.900000" data-stop="1664.919000"><strong class="speaker-name">Sacha:</strong>  That sounds fantastic.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1664.920000" data-stop="1668.439000">I know we'd wanted to experiment with pair programming a long time</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1668.440000" data-stop="1672.959000">ago so that sounds like a seamless way to do it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1672.960000" data-stop="1675.839000">And therefore I will go and figure out how to install shim and get it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1675.840000" data-stop="1676.399000">working.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1676.400000" data-stop="1678.679000">I will probably need your help to actually test it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1678.680000" data-stop="1680.839000">I don't know, I think I can rustle up.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1680.840000" data-stop="1682.359000">Maybe it'll work off my phone.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1682.360000" data-stop="1685.679000">You haven't tried that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1685.680000" data-stop="1691.679000">But lspui, okay, so I've just been using straight up imenu, like on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1691.680000" data-stop="1696.159000">Neanderthal, but lsp-ui has this fancy grouping of things and colors</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1696.160000" data-stop="1700.159000">and stuff, so I definitely want to check that out.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="1700.160000" data-stop="1701.439000"><strong class="speaker-name">Shae:</strong>  I'm a fan, yeah.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1701.440000" data-stop="1703.599000">I don't know.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1703.600000" data-stop="1705.479000">Do I have anything else exciting that goes with this in here?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1705.000000">28:25</span> <strong>laptop with 126GB of RAM</strong></div><p></p><span class="audio-time caption" data-speaker="Shae" data-start="1705.480000" data-stop="1710.719000"><strong class="speaker-name">Shae:</strong> I will say that at the moment, the system I'm working on, I like</span> <span class="audio-time caption" data-speaker="Shae" data-start="1710.720000" data-stop="1715.839000">buying unreasonably powerful laptops.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1715.840000" data-stop="1726.599000">And so, like, this system has 128 gigs of RAM and 24 cores.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1726.600000" data-stop="1730.479000">My previous laptop has 192 gigs of RAM.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1730.480000" data-stop="1737.279000">Long story short, I end up in a lot of cases where I want to use more</span> <span class="audio-time caption" data-speaker="Shae" data-start="1737.280000" data-stop="1738.279000">memory.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1738.280000" data-stop="1739.559000">I've got all these cores.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1739.560000" data-stop="1741.319000">Can you do something with them?</span> <span class="audio-time caption" data-speaker="Shae" data-start="1741.320000" data-stop="1748.319000">Perhaps you've already seen things like LSP doctor, which will say,</span> <span class="audio-time caption" data-speaker="Shae" data-start="1748.320000" data-stop="1750.079000">have you tried this thing?</span> <span class="audio-time caption" data-speaker="Shae" data-start="1750.080000" data-stop="1751.119000">Have you done this other thing?</span> <span class="audio-time caption" data-speaker="Shae" data-start="1751.120000" data-stop="1754.679000">LSP has really changed</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1754.680000" data-stop="1755.999000"><strong class="speaker-name">Sacha:</strong>  I have not.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1756.000000" data-stop="1758.719000">Sorry, would you like to show me this LSP doctor thing?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1758.720000" data-stop="1760.859000">Because I have not ever seen it.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="1760.860000" data-stop="1761.319000"><strong class="speaker-name">Shae:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1761.320000" data-stop="1765.559000">Do you use language servers much for your development?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1765.560000" data-stop="1769.079000"><strong class="speaker-name">Sacha:</strong>  I am only just getting used to having a relatively modern</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1769.080000" data-stop="1773.119000">2018 instead of 2010 laptop.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1773.120000" data-stop="1776.279000">And so I have the red squigglies and various things, but I don't know</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1776.280000" data-stop="1778.519000">what to do with them yet.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="1778.520000" data-stop="1782.639000"><strong class="speaker-name">Shae:</strong>  Well, I mean, I'm doing a lot of this.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1782.640000" data-stop="1786.039000">So I have...</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1786.000000">29:46</span> <strong>LSP coolness, Haskell, treesitter</strong></div><p></p><span class="audio-time caption" data-speaker="Shae" data-start="1786.040000" data-stop="1788.479000"><strong class="speaker-name">Shae:</strong> Originally for me it was like I spent a lot of time with the Haskell</span> <span class="audio-time caption" data-speaker="Shae" data-start="1788.480000" data-stop="1791.319000">language server because I was doing so much Haskell and it was a</span> <span class="audio-time caption" data-speaker="Shae" data-start="1791.320000" data-stop="1792.359000">super powerful thing.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1792.360000" data-stop="1796.039000">In fact, somebody decided to hammer in half of a proof assistant into</span> <span class="audio-time caption" data-speaker="Shae" data-start="1796.040000" data-stop="1798.199000">the Haskell language server and that was magic.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1798.200000" data-stop="1800.999000">You could do incredible stuff with that because you could just grab</span> <span class="audio-time caption" data-speaker="Shae" data-start="1801.000000" data-stop="1803.399000">all of your local variables and transform the whole shape of your</span> <span class="audio-time caption" data-speaker="Shae" data-start="1803.400000" data-stop="1806.119000">function and you could just write little snippets and just have it</span> <span class="audio-time caption" data-speaker="Shae" data-start="1806.120000" data-stop="1806.519000">work.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1806.520000" data-stop="1808.519000">And that was amazing.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1808.520000" data-stop="1812.039000">It wasn't quite... One of the goals that I believe is...</span> <span class="audio-time caption" data-speaker="Shae" data-start="1812.040000" data-stop="1817.159000">For future development of all programming editors, I believe that</span> <span class="audio-time caption" data-speaker="Shae" data-start="1817.160000" data-stop="1821.479000">something like Emacs macros, but instead for abstract syntax trees, I</span> <span class="audio-time caption" data-speaker="Shae" data-start="1821.480000" data-stop="1824.439000">believe this is an essential ingredient that we do not yet have.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1824.440000" data-stop="1827.719000">And I think that TreeSitter is the first step towards there.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1827.720000" data-stop="1829.159000">We now have one of the hats, right?</span> <span class="audio-time caption" data-speaker="Shae" data-start="1829.160000" data-stop="1833.239000">Which is where we can take... TreeSitter is, you know, if you've used</span> <span class="audio-time caption" data-speaker="Shae" data-start="1833.240000" data-stop="1835.799000">it...</span> <span class="audio-time caption" data-speaker="Shae" data-start="1835.800000" data-stop="1839.839000">It is like you write some effectively C code to produce a really fast</span> <span class="audio-time caption" data-speaker="Shae" data-start="1839.840000" data-stop="1840.279000">parser.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1840.280000" data-stop="1843.359000">Or is it like JavaScript that then compiles to C code?</span> <span class="audio-time caption" data-speaker="Shae" data-start="1843.360000" data-stop="1844.959000">I forget exactly how it works.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1844.960000" data-stop="1848.119000">But the nice thing about TreeSitter is, I don't know if you remember,</span> <span class="audio-time caption" data-speaker="Shae" data-start="1848.120000" data-stop="1851.159000">I'm sure you do remember, that if you were writing Python code and</span> <span class="audio-time caption" data-speaker="Shae" data-start="1851.160000" data-stop="1853.639000">you used a triple-quoted string, you had to then add a comment with</span> <span class="audio-time caption" data-speaker="Shae" data-start="1853.640000" data-stop="1857.279000">another quote because regular expressions is how Emacs was doing all</span> <span class="audio-time caption" data-speaker="Shae" data-start="1857.280000" data-stop="1858.859000">the syntax highlighting.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1858.860000" data-stop="1860.399000">And honestly, that was kind of crap.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1860.400000" data-stop="1865.239000">And then there were projects like the Semantic Bovinator that made a</span> <span class="audio-time caption" data-speaker="Shae" data-start="1865.240000" data-stop="1871.519000">full parsing suite in Elisp, which to me is half brilliant and half</span> <span class="audio-time caption" data-speaker="Shae" data-start="1871.520000" data-stop="1872.599000">insane.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1872.600000" data-stop="1876.799000">And then there was TreeSitter, which kind of took over the world</span> <span class="audio-time caption" data-speaker="Shae" data-start="1876.800000" data-stop="1880.239000">because it was... I think that the language server and TreeSitter are</span> <span class="audio-time caption" data-speaker="Shae" data-start="1880.240000" data-stop="1884.959000">the first two of these editor generic pieces, and I suspect there</span> <span class="audio-time caption" data-speaker="Shae" data-start="1884.960000" data-stop="1885.519000">will be more.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1885.520000" data-stop="1889.159000">I think that something where you can modify the abstract syntax tree</span> <span class="audio-time caption" data-speaker="Shae" data-start="1889.160000" data-stop="1890.559000">and then put back to the source</span> <span class="audio-time caption" data-speaker="Shae" data-start="1890.560000" data-stop="1892.759000">is one of those potential paths forward.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1892.760000" data-stop="1894.539000">I hope so.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1894.540000" data-stop="1896.239000"><strong class="speaker-name">Sacha:</strong>  Yeah, that would be great if you could just do the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1896.240000" data-stop="1899.039000">manipulations and then roundtrip it back into source code.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1899.040000" data-stop="1903.199000">Just regenerate the changed part of your code.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1903.200000" data-stop="1904.359000">That sounds fantastic.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1904.360000" data-stop="1908.599000">So it sounds like you were able to do some kind of manipulation with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1908.600000" data-stop="1911.199000">the Haskell use case that you were describing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1911.200000" data-stop="1914.739000">Any chance you can show us like the awesomeness?</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="1914.740000" data-stop="1915.279000"><strong class="speaker-name">Shae:</strong>  Sadly,</span> <span class="audio-time caption" data-speaker="Shae" data-start="1915.280000" data-stop="1918.919000">that sadly does not work anymore.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1918.000000">31:58</span> <strong>Combobulate</strong></div><p></p><span class="audio-time caption" data-speaker="Shae" data-start="1918.920000" data-stop="1922.279000"><strong class="speaker-name">Shae:</strong> But you know, if you're looking for something in that area, have you</span> <span class="audio-time caption" data-speaker="Shae" data-start="1922.280000" data-stop="1926.179000">heard of a Emacs library called Combobulate?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1926.180000" data-stop="1927.159000"><strong class="speaker-name">Sacha:</strong>  I have heard of it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1927.160000" data-stop="1928.819000">I haven't dug into it.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="1928.820000" data-stop="1934.719000"><strong class="speaker-name">Shae:</strong>  So it uses TreeSitter for source code manipulation by, and</span> <span class="audio-time caption" data-speaker="Shae" data-start="1934.720000" data-stop="1937.479000">it's a lot closer to the way that like, you know, in Org Mode, you</span> <span class="audio-time caption" data-speaker="Shae" data-start="1937.480000" data-stop="1941.519000">can like hold meta and arrow to kind of move things around.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1941.520000" data-stop="1946.719000">It uses TreeSitter to let you both move around in the context as well</span> <span class="audio-time caption" data-speaker="Shae" data-start="1946.720000" data-stop="1949.119000">as actually alter the shape.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1949.120000" data-stop="1954.119000">And to me, this is the first step towards this tool that I want,</span> <span class="audio-time caption" data-speaker="Shae" data-start="1954.120000" data-stop="1957.999000">which is where I can write a keyboard macro and have it edit an</span> <span class="audio-time caption" data-speaker="Shae" data-start="1958.000000" data-stop="1961.959000">abstract syntax tree and then spit the results back into the buffer.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1961.960000" data-stop="1965.299000">Yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1965.300000" data-stop="1966.199000"><strong class="speaker-name">Sacha:</strong>  All right.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1966.000000">32:46</span> <strong>What else are you using your 126 gigabytes of RAM for?</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1966.200000" data-stop="1972.259000"><strong class="speaker-name">Sacha:</strong> What else are you using your 126 gigabytes of RAM for?</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="1972.260000" data-stop="1974.499000"><strong class="speaker-name">Shae:</strong>  Let's see.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1974.500000" data-stop="1977.239000">Honestly, I'm going to tell you that Rust Analyzer can take a lot of</span> <span class="audio-time caption" data-speaker="Shae" data-start="1977.240000" data-stop="1977.839000">memory.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1977.840000" data-stop="1980.479000">And a Rust compilation can take a lot of cores.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1980.480000" data-stop="1986.479000">And I'm okay with that because I actually, I do like, and I will say</span> <span class="audio-time caption" data-speaker="Shae" data-start="1986.480000" data-stop="1988.719000">that this laptop is actually from this year.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1988.720000" data-stop="1992.079000">So it's a brand new, like, top of the line.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1992.080000" data-stop="1996.399000">But then like, how would I, because I've got like, which I think is a</span> <span class="audio-time caption" data-speaker="Shae" data-start="1996.400000" data-stop="1998.199000">bunch of matrix multiplication hardware.</span> <span class="audio-time caption" data-speaker="Shae" data-start="1998.200000" data-stop="2000.159000">How do I use that from Emacs?</span> <span class="audio-time caption" data-speaker="Shae" data-start="2000.160000" data-stop="2005.520000">I don't know. I'm sure I can find something, you know.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2005.000000">33:25</span> <strong>TalonVoice</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2005.521000" data-stop="2007.859000"><strong class="speaker-name">Sacha:</strong>  Maybe voice computing?</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="2007.860000" data-stop="2012.333000"><strong class="speaker-name">Shae:</strong>  Oh, that's an idea. Yeah, one of my friends, she's using Talon.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2012.334000" data-stop="2012.334000">Have you heard of Talon?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2010.280000" data-stop="2014.499000"><strong class="speaker-name">Sacha:</strong>  Yeah, I've heard of Talon.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2014.500000" data-stop="2017.399000">There are a couple of videos about people using Talon to code by</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2017.400000" data-stop="2022.159000">voice, usually involving memorizing kind of a different alphabet for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2022.160000" data-stop="2025.199000">very quickly accessing different shortcuts.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2025.200000" data-stop="2027.799000">But it sounds really cool, and you sound like you've got the hardware</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2027.800000" data-stop="2029.159000">to do something amazing with it.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="2029.160000" data-stop="2030.799000"><strong class="speaker-name">Shae:</strong>  That's true.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2030.800000" data-stop="2034.399000">Well, you know, Talon actually lets you do something very similar to</span> <span class="audio-time caption" data-speaker="Shae" data-start="2034.400000" data-stop="2037.999000">Combobulate, where you can navigate the AST of your source code.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2038.000000" data-stop="2040.479000">You can kind of move around very quickly.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2040.480000" data-stop="2043.919000">I don't know, like, are we like at the end of our?</span> <span class="audio-time caption" data-speaker="Shae" data-start="2043.920000" data-stop="2046.519000">No, no, we're halfway through, right?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2046.520000" data-stop="2047.599000"><strong class="speaker-name">Sacha:</strong>  We're halfway through.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2047.600000" data-stop="2051.279000">I have about 28 minutes before the kiddo runs out and starts</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2051.280000" data-stop="2053.599000">demanding lunch.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="2053.600000" data-stop="2057.119000"><strong class="speaker-name">Shae:</strong>  Okay, well, I feel like I've been driving the structure of</span> <span class="audio-time caption" data-speaker="Shae" data-start="2057.120000" data-stop="2059.119000">our just kind of like dumping random things.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2059.120000" data-stop="2062.079000">Did you have any questions or anything you wanted to cover?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2062.080000" data-stop="2063.919000"><strong class="speaker-name">Sacha:</strong>  This is all amazing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2063.920000" data-stop="2066.239000">I come in with no preconceived notions.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2066.240000" data-stop="2069.279000">I'm just like, okay, shapr does cool things with Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2069.280000" data-stop="2071.239000">Let's hear about it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2071.240000" data-stop="2072.719000">Let's go, let's go.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="2072.720000" data-stop="2074.939000"><strong class="speaker-name">Shae:</strong>  That works for me.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2074.940000" data-stop="2077.199000">Yeah.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2077.200000" data-stop="2079.879000">I mean, a lot of it's been focused on Rust development lately.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2083.500000" data-stop="2085.019000">Rust and Jujutsu.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2085.000000">34:45</span> <strong>NixOS, following Steve Purcell about 5 years behind</strong></div><p></p><span class="audio-time caption" data-speaker="Shae" data-start="2085.020000" data-stop="2086.119000"><strong class="speaker-name">Shae:</strong> I've been doing a lot of Nix.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2086.120000" data-stop="2087.199000">I'm running NixOS.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2087.200000" data-stop="2093.279000">I don't know if you're familiar, but that's been great fun.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2093.280000" data-stop="2097.079000">It's funny, I feel like I've been following Steve Purcell around from</span> <span class="audio-time caption" data-speaker="Shae" data-start="2097.080000" data-stop="2098.879000">a technical perspective.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2098.880000" data-stop="2103.439000">I'm always about five years behind Steve.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2103.000000">35:03</span> <strong>envrc</strong></div><p></p><span class="audio-time caption" data-speaker="Shae" data-start="2103.440000" data-stop="2106.639000"><strong class="speaker-name">Shae:</strong> I was like, oh, you know, NixOS is kind of a pain with Emacs.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2106.640000" data-stop="2111.039000">And just like this, what was it, NixOS?</span> <span class="audio-time caption" data-speaker="Shae" data-start="2111.040000" data-stop="2111.679000">I forget.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2111.680000" data-stop="2115.679000">Anyway, Steve was like, oh, well, have you tried my library, envrc?</span> <span class="audio-time caption" data-speaker="Shae" data-start="2115.680000" data-stop="2116.719000">And I was like, what's that?</span> <span class="audio-time caption" data-speaker="Shae" data-start="2116.720000" data-stop="2119.079000">And he was like, well, now each buffer can have its own envrc.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2119.080000" data-stop="2121.119000">And I was like, it's perfect.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2121.120000" data-stop="2122.199000">That's exactly what I need.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2122.200000" data-stop="2126.559000">Because previously, every time I switched buffers, it would then go</span> <span class="audio-time caption" data-speaker="Shae" data-start="2126.560000" data-stop="2127.639000">load all of the local</span> <span class="audio-time caption" data-speaker="Shae" data-start="2127.640000" data-stop="2129.879000">everything in Nix.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2129.880000" data-stop="2133.399000">And sometimes that could take a long time, especially if I'm doing</span> <span class="audio-time caption" data-speaker="Shae" data-start="2133.400000" data-stop="2137.519000">Haskell, that could take 10 seconds, and I really don't want that</span> <span class="audio-time caption" data-speaker="Shae" data-start="2137.520000" data-stop="2138.039000">sort of lag.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2138.040000" data-stop="2142.679000">And so Steve Purcell's brilliant library, envrc, says, you know what?</span> <span class="audio-time caption" data-speaker="Shae" data-start="2142.680000" data-stop="2146.279000">Every single buffer can just keep such a thing, and then you can only</span> <span class="audio-time caption" data-speaker="Shae" data-start="2146.280000" data-stop="2146.959000">relit it when you need to.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2146.960000" data-stop="2149.259000">And that's pretty awesome.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2149.260000" data-stop="2152.619000"><strong class="speaker-name">Sacha:</strong>  That sounds cool, and I should check that out too.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2152.000000">35:52</span> <strong>time-tracking</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2152.620000" data-stop="2154.279000"><strong class="speaker-name">Sacha:</strong> @JacksonScholberg has a question.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2154.280000" data-stop="2157.399000">He says, "I was curious about what you were tracking your time working</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2157.400000" data-stop="2158.839000">on, how you track it."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2158.840000" data-stop="2160.999000">Is it just Org Clock?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2161.000000" data-stop="2165.839000">So this is how you keep track of the things you're working on and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2165.840000" data-stop="2171.119000">what got interrupted by the new thing that you just added to the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2171.120000" data-stop="2172.639000">stack and so forth?</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="2172.640000" data-stop="2172.759000"><strong class="speaker-name">Shae:</strong>  Right.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2172.760000" data-stop="2174.399000">In fact, I have this thing.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2174.400000" data-stop="2175.639000">Honestly, when I sit down on my computer,</span> <span class="audio-time caption" data-speaker="Shae" data-start="2175.640000" data-stop="2177.079000">Just clock in.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2177.080000" data-stop="2182.359000">You'll notice in the bottom right here, we have chat with Sacha,</span> <span class="audio-time caption" data-speaker="Shae" data-start="2182.360000" data-stop="2183.039000">right?</span> <span class="audio-time caption" data-speaker="Shae" data-start="2183.040000" data-stop="2184.999000">And so like, I just kind of clock in stuff.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2185.000000" data-stop="2191.279000">And like, I'm not always, I really kind of need to reorganize my Org</span> <span class="audio-time caption" data-speaker="Shae" data-start="2191.280000" data-stop="2194.559000">mode files because I've been naming them per host because I</span> <span class="audio-time caption" data-speaker="Shae" data-start="2194.560000" data-stop="2197.719000">previously had like a work Org mode and I had a home Org mode.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2197.720000" data-stop="2202.559000">now that my home hardware is also my work hardware I guess and so</span> <span class="audio-time caption" data-speaker="Shae" data-start="2202.560000" data-stop="2206.319000">like I still have my previous laptops things where I'm keeping my</span> <span class="audio-time caption" data-speaker="Shae" data-start="2206.320000" data-stop="2210.439000">events I really need to reorganize things but I mean yeah I schedule</span> <span class="audio-time caption" data-speaker="Shae" data-start="2210.440000" data-stop="2221.059000">things I oh you know I've got a weird thing to show you</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2221.000000">37:01</span> <strong>taxes with Org Mode, remote lookup
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/ec22-shae-erisson-00-37-09-900.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/ec22-shae-erisson-00-37-09-900.jpg" alt="image from video 00:37:09.900" data-time="00:37:09.900"></a><span class="audio-time caption" data-speaker="Shae" data-start="2221.060000" data-stop="2225.232000"><strong class="speaker-name">Shae:</strong> I decided that it would be great fun to do my taxes.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2225.233000" data-stop="2227.839000"><strong class="speaker-name">Sacha:</strong>  You are showing me your taxes, do I need to like black out</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2227.840000" data-stop="2229.899000">this whole thing?</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="2229.900000" data-stop="2233.279000"><strong class="speaker-name">Shae:</strong>  Well, this is actually just an example from the docs.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2233.280000" data-stop="2238.799000">So I could actually share my taxes on it because I mostly don't care.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2238.800000" data-stop="2243.959000">But I think in fact you can figure out exactly how much money I'm</span> <span class="audio-time caption" data-speaker="Shae" data-start="2243.960000" data-stop="2246.559000">making by looking at the open whatever.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2246.560000" data-stop="2251.799000">So the thing about this is that I decided to file all of my tax forms</span> <span class="audio-time caption" data-speaker="Shae" data-start="2251.800000" data-stop="2256.559000">directly into Org Mode spreadsheets and then do remote lookups.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2256.560000" data-stop="2260.279000">So basically each spreadsheet was one particular form.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2260.280000" data-stop="2263.439000">And then once I'd gotten to the bottom, like I need this result, like</span> <span class="audio-time caption" data-speaker="Shae" data-start="2263.440000" data-stop="2265.519000">what's my estimated income?</span> <span class="audio-time caption" data-speaker="Shae" data-start="2265.520000" data-stop="2270.199000">And then I would use the lookup, kind of this cross spreadsheet</span> <span class="audio-time caption" data-speaker="Shae" data-start="2270.200000" data-stop="2270.879000">lookup.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2270.880000" data-stop="2272.839000">And that's how I did my taxes for last year.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2272.840000" data-stop="2279.959000">And then my de facto mother-in-law, she's an accountant, and she</span> <span class="audio-time caption" data-speaker="Shae" data-start="2279.960000" data-stop="2282.439000">didn't exactly do this thing, but it was pretty close.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2282.440000" data-stop="2285.279000">She was like, you've got all your taxes in the spreadsheet.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2285.280000" data-stop="2286.439000">I was like, yeah.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2286.440000" data-stop="2288.639000">And then she looked at it and she was like, what is that?</span> <span class="audio-time caption" data-speaker="Shae" data-start="2288.640000" data-stop="2290.239000">And I was like, anyway.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2290.240000" data-stop="2295.879000">So I got to kind of file everything back out into TurboTax, but that</span> <span class="audio-time caption" data-speaker="Shae" data-start="2295.880000" data-stop="2296.919000">was a fun thing to build.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2296.920000" data-stop="2301.079000"><strong class="speaker-name">Sacha:</strong>  Yeah, I have something like that too.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2301.080000" data-stop="2305.959000">So for example, whenever I do my tax paperwork, I just have to have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2305.960000" data-stop="2308.239000">like, you know, the step by step checklist.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2308.240000" data-stop="2310.199000">Okay, this is where I need to go to get this number.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2310.200000" data-stop="2312.079000">This is where I can put it in.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2312.080000" data-stop="2315.279000">And then eventually it spits out a table that says, okay, put this in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2315.280000" data-stop="2319.839000">box 11, put this in box 13, so that I don't have to do the steps by</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2319.840000" data-stop="2321.079000">hand.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2321.080000" data-stop="2325.719000">Because even before the, you know, for me, I use like simple stacks</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2325.720000" data-stop="2327.659000">or whatever, it's web based.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2327.660000" data-stop="2330.239000">But before you get to the point where you can put the numbers in the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2330.240000" data-stop="2334.119000">form, you gotta go to this website, calculate this thing, and Org</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2334.120000" data-stop="2338.079000">just makes all of that so much easier.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="2338.080000" data-stop="2338.759000"><strong class="speaker-name">Shae:</strong>  I agree.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2338.760000" data-stop="2341.139000">Yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2341.140000" data-stop="2345.359000"><strong class="speaker-name">Sacha:</strong>  And this remote lookup thing is something I'm always looking</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2345.360000" data-stop="2349.199000">up because Org tables are so powerful, but also I need more examples</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2349.200000" data-stop="2351.959000">in my life to remember how to use them.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="2351.960000" data-stop="2355.479000"><strong class="speaker-name">Shae:</strong>  Well, I think it took me four hours the first time to get it</span> <span class="audio-time caption" data-speaker="Shae" data-start="2355.480000" data-stop="2356.399000">all figured out.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2356.400000" data-stop="2359.199000">But I can send you an example without showing it here.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2359.200000" data-stop="2363.719000">I can send you an example because I figured out, I think I've</span> <span class="audio-time caption" data-speaker="Shae" data-start="2363.720000" data-stop="2366.619000">hammered the remote lookup down very thoroughly.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2366.620000" data-stop="2370.919000"><strong class="speaker-name">Sacha:</strong>  And once you've got it right, you can just keep filling that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2370.920000" data-stop="2372.439000">in or copy and paste it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2372.440000" data-stop="2377.979000">You have an example of the syntax and that's already all you need.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="2377.980000" data-stop="2378.399000"><strong class="speaker-name">Shae:</strong>  Right.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2378.400000" data-stop="2382.039000">I did run across some limitations of the</span> <span class="audio-time caption" data-speaker="Shae" data-start="2382.040000" data-stop="2386.833000">evaluation method of Org mode spreadsheets.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2386.834000" data-stop="2389.667000">But maybe I've been using them a little too hard,</span> <span class="audio-time caption" data-speaker="Shae" data-start="2389.668000" data-stop="2391.100000">if that makes any sense.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2391.101000" data-stop="2393.000000"><strong class="speaker-name">Sacha:</strong>  Oh, what kind of limitation?</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="2393.001000" data-stop="2400.267000"><strong class="speaker-name">Shae:</strong>  Honestly, I think I finally found a way to say every</span> <span class="audio-time caption" data-speaker="Shae" data-start="2400.268000" data-stop="2402.439000">single... Because it was...</span> <span class="audio-time caption" data-speaker="Shae" data-start="2402.440000" data-stop="2408.439000">So really the way that spreadsheets work is they're much more like</span> <span class="audio-time caption" data-speaker="Shae" data-start="2408.440000" data-stop="2408.959000">Dataflow.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2408.960000" data-stop="2411.999000">And that is just that you end up with, like, either you work from the</span> <span class="audio-time caption" data-speaker="Shae" data-start="2412.000000" data-stop="2415.599000">endpoint, which is like much more Haskell style evaluation, which is</span> <span class="audio-time caption" data-speaker="Shae" data-start="2415.600000" data-stop="2416.959000">where you're like, I need to start here.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2416.960000" data-stop="2418.279000">What depends on this?</span> <span class="audio-time caption" data-speaker="Shae" data-start="2418.280000" data-stop="2421.599000">But in the case where you have a whole bunch of different Org Mode</span> <span class="audio-time caption" data-speaker="Shae" data-start="2421.600000" data-stop="2426.919000">spreadsheets, I think I ended up with this little text style hack</span> <span class="audio-time caption" data-speaker="Shae" data-start="2426.920000" data-stop="2428.159000">where I just ran it a bunch of times.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2428.160000" data-stop="2429.759000">So it's like evaluate, evaluate, evaluate.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2429.760000" data-stop="2431.439000">Because remote lookups</span> <span class="audio-time caption" data-speaker="Shae" data-start="2431.440000" data-stop="2434.719000">I ran, you know, I don't remember.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2434.720000" data-stop="2436.559000">And I think I took notes, but I don't remember.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2436.560000" data-stop="2439.439000">That's one of the great things about Org Mode is that I swear it's</span> <span class="audio-time caption" data-speaker="Shae" data-start="2439.440000" data-stop="2442.319000">my, like, half of my brain is in my Org Mode notes.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2442.320000" data-stop="2446.679000">And whenever I had, I'm like, oh, what was that thing?</span> <span class="audio-time caption" data-speaker="Shae" data-start="2446.680000" data-stop="2449.639000">I'm like, well, fortunately, with my terrible short-term memory, I</span> <span class="audio-time caption" data-speaker="Shae" data-start="2449.640000" data-stop="2452.519000">took copious notes because otherwise I would never be able to get</span> <span class="audio-time caption" data-speaker="Shae" data-start="2452.520000" data-stop="2455.499000">back to it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2455.000000">40:55</span> <strong>finding notes with C-s</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2455.500000" data-stop="2462.599000"><strong class="speaker-name">Sacha:</strong>  What is your favorite way of finding those notes?</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="2462.600000" data-stop="2466.279000"><strong class="speaker-name">Shae:</strong>  I actually use a lot of C-s just because I kind of have</span> <span class="audio-time caption" data-speaker="Shae" data-start="2466.280000" data-stop="2470.919000">some idea of where they are in my tree structure and I'll also say I</span> <span class="audio-time caption" data-speaker="Shae" data-start="2470.920000" data-stop="2474.879000">use a lot of my Org capture templates and they're not super</span> <span class="audio-time caption" data-speaker="Shae" data-start="2474.880000" data-stop="2475.559000">complicated.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2475.560000" data-stop="2479.359000">I have like a to-do, I have a journal, I have ideas and like random</span> <span class="audio-time caption" data-speaker="Shae" data-start="2479.360000" data-stop="2483.279000">ideas will float into my head like you saw Markov keyboard right it</span> <span class="audio-time caption" data-speaker="Shae" data-start="2483.280000" data-stop="2486.119000">is like the weirdest art piece you've seen all day right and</span> <span class="audio-time caption" data-speaker="Shae" data-start="2486.120000" data-stop="2492.279000">Markup keyboard shows up on the front page of Hacker News once a year</span> <span class="audio-time caption" data-speaker="Shae" data-start="2492.280000" data-stop="2492.719000">or so.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2492.720000" data-stop="2496.159000">And people are like, programmers have gone too far.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2496.160000" data-stop="2499.999000">This cannot possibly be usable by humans or something.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2500.000000" data-stop="2502.719000">And I'm like, well, I don't know.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2502.720000" data-stop="2503.999000">I think it was art.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2504.000000" data-stop="2506.719000">And so a lot of times those things will drop into my head, something</span> <span class="audio-time caption" data-speaker="Shae" data-start="2506.720000" data-stop="2508.679000">like that, where I'm trying to do something else.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2508.680000" data-stop="2511.359000">And so I will quickly write down the idea and then just gotten it out</span> <span class="audio-time caption" data-speaker="Shae" data-start="2511.360000" data-stop="2513.999000">of my head enough that I can continue with what I was doing.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2514.000000" data-stop="2516.599000">And so I have a long list of strange ideas.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2516.600000" data-stop="2520.959000">A recent one was like, you've probably had your teeth worked on once</span> <span class="audio-time caption" data-speaker="Shae" data-start="2520.960000" data-stop="2521.479000">or twice.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2521.480000" data-stop="2524.239000">And you know that the dentist always had to move the light around.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2524.240000" data-stop="2526.479000">And I'm like, but we have really good eye tracking.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2526.480000" data-stop="2530.639000">Wouldn't it make sense to figure out where the dentist or the car</span> <span class="audio-time caption" data-speaker="Shae" data-start="2530.640000" data-stop="2532.319000">mechanic is what they're looking at?</span> <span class="audio-time caption" data-speaker="Shae" data-start="2532.320000" data-stop="2536.719000">And then have the light move around behind them to figure out how to</span> <span class="audio-time caption" data-speaker="Shae" data-start="2536.720000" data-stop="2538.999000">actually light up the place they're looking at, right?</span> <span class="audio-time caption" data-speaker="Shae" data-start="2539.000000" data-stop="2539.519000">We've got vision tracking.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2539.520000" data-stop="2540.679000">Why don't we do this?</span> <span class="audio-time caption" data-speaker="Shae" data-start="2540.680000" data-stop="2542.599000">But I don't really, yeah.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2542.600000" data-stop="2545.759000">I decided maybe I don't want to work on that one right now.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2545.760000" data-stop="2548.399000"><strong class="speaker-name">Sacha:</strong>  It sounds like an involved project.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2548.400000" data-stop="2549.119000">Yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2549.120000" data-stop="2550.719000">Yeah, yeah, yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2550.720000" data-stop="2554.599000">Okay, so you're capturing, you're stuffing a lot of these ideas into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2554.600000" data-stop="2555.199000">an inbox.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2555.000000">42:35</span> <strong>Org Mode, managing inbox</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2555.200000" data-stop="2558.679000"><strong class="speaker-name">Sacha:</strong> A lot of people are probably in the same boat where they've got these</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2558.680000" data-stop="2560.399000">inboxes full of ideas.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2560.400000" data-stop="2564.279000">How do you deal?</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="2564.280000" data-stop="2565.599000"><strong class="speaker-name">Shae:</strong>  I archive stuff when I'm done with it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2566.140000" data-stop="2567.520000"><strong class="speaker-name">Sacha:</strong>  Oh yeah?</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="2567.521000" data-stop="2572.199000"><strong class="speaker-name">Shae:</strong>  Yeah, so a lot of times, and I find this very valuable, is</span> <span class="audio-time caption" data-speaker="Shae" data-start="2572.200000" data-stop="2575.199000">like if I look at... Do I have it?</span> <span class="audio-time caption" data-speaker="Shae" data-start="2575.200000" data-stop="2578.119000">Oops, that was not what I meant to do.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2578.120000" data-stop="2581.879000"><strong class="speaker-name">Sacha:</strong>  Alright, so you basically just do aggressive speed commands,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2581.880000" data-stop="2584.839000">archive, archive, archive, or look at the agenda and just mark a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2584.840000" data-stop="2586.759000">whole bunch of things and say, that's it, that's gone.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2586.760000" data-stop="2590.519000">It was written down and then it can go.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="2590.520000" data-stop="2593.319000"><strong class="speaker-name">Shae:</strong>  Yeah, well, when I'm really done with something, when the</span> <span class="audio-time caption" data-speaker="Shae" data-start="2593.320000" data-stop="2595.759000">thing is finished, then I will just archive it.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2595.760000" data-stop="2597.859000">I mean, do you use Archive much?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2597.860000" data-stop="2598.839000"><strong class="speaker-name">Sacha:</strong>  I do.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2598.840000" data-stop="2602.559000">I have a function that goes through my inbox file and just archives</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2602.560000" data-stop="2603.879000">anything that was marked as done.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="2603.880000" data-stop="2606.119000"><strong class="speaker-name">Shae:</strong>  Oh, nice!</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2606.120000" data-stop="2608.319000"><strong class="speaker-name">Sacha:</strong>  Because that way it clears it up, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2608.320000" data-stop="2613.239000">So I'll refile things where I'm like, okay, it's done, but it has</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2613.240000" data-stop="2614.359000">important information.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2614.360000" data-stop="2615.919000">I want to put it somewhere else.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2615.920000" data-stop="2619.639000">But if it's just a transitory task that I'm using to remind myself,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2619.640000" data-stop="2623.439000">tomorrow I have to do this, go find the water bottle when it's done,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2623.440000" data-stop="2626.279000">I don't need to know about it in the future.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2626.280000" data-stop="2629.999000">So it's left in my inbox because I checked it off, and then</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2630.000000" data-stop="2632.119000">periodically I'll say, clean up inbox.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2632.120000" data-stop="2635.999000">Not only will it remove all of the done things, but if I leave a tag</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2636.000000" data-stop="2641.919000">In the title of the task or if the task matches certain regular</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2641.920000" data-stop="2646.799000">expressions, it will refile it to the appropriate place in my kind of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2646.800000" data-stop="2648.439000">more permanent thing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2648.440000" data-stop="2651.519000">So I can say, okay, all of my Emacs related tasks will get</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2651.520000" data-stop="2656.267000">automatically refiled to my Emacs category without my having to do</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2656.268000" data-stop="2657.639000">that manually.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="2657.640000" data-stop="2660.599000"><strong class="speaker-name">Shae:</strong>  So you're using tagging because I kept trying to do tagging</span> <span class="audio-time caption" data-speaker="Shae" data-start="2660.600000" data-stop="2661.519000">and never quite did it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2661.520000" data-stop="2664.479000"><strong class="speaker-name">Sacha:</strong>  I use tagging sometimes when I remember it, but this is also</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2664.480000" data-stop="2665.279000">why I use the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2665.280000" data-stop="2669.519000">The regular expression match against the title.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2669.520000" data-stop="2674.599000">I'm using Orgzly on Android to capture the thing on my phone.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2674.600000" data-stop="2677.599000">I might want to say this is a consulting task.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2677.600000" data-stop="2682.299000">File it in the right place so it doesn't get lost in my inbox.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="2682.300000" data-stop="2683.967000"><strong class="speaker-name">Shae:</strong>  Wow.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2683.968000" data-stop="2688.259000">When is your interview so I can learn from your tricks?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2688.260000" data-stop="2693.500000"><strong class="speaker-name">Sacha:</strong>  This is now. Here we go! You can ask questions.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2693.501000" data-stop="2699.767000">The nice thing about conversations is that we jostle different ideas,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2699.868000" data-stop="2702.600000">and we are like, oh yeah, maybe I should write a blog post about that,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2702.601000" data-stop="2703.459000">because I take it for granted.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2703.460000" data-stop="2707.179000">So now apparently I have to write a blog post about my</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2707.180000" data-stop="2709.339000">cleaning up process.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2709.340000" data-stop="2710.979000">My inbox is very long.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2710.980000" data-stop="2714.459000">The other thing, speaking of dealing with really long lists that I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2714.460000" data-stop="2718.219000">picked up from John Wiegley was I also sometimes remember to check</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2718.220000" data-stop="2719.979000">this list of random items.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2719.980000" data-stop="2726.379000">So in my agenda, there's also like this, you know, random selection</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2726.380000" data-stop="2730.939000">of things that I have not gotten around to thinking about further,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2730.940000" data-stop="2734.939000">but it's there just in case serendipity or boredom make me do</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2734.940000" data-stop="2736.799000">something.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="2736.800000" data-stop="2741.299000"><strong class="speaker-name">Shae:</strong>  you know that's... I've thought about having...</span> <span class="audio-time caption" data-speaker="Shae" data-start="2741.300000" data-stop="2744.819000">because you know, I've got the pop-up this little timer that pops up</span> <span class="audio-time caption" data-speaker="Shae" data-start="2744.820000" data-stop="2747.579000">my agenda, but I've thought about maybe adding a section I don't know</span> <span class="audio-time caption" data-speaker="Shae" data-start="2747.580000" data-stop="2751.019000">if I could add a section here but it would be something that says</span> <span class="audio-time caption" data-speaker="Shae" data-start="2751.020000" data-stop="2754.819000">like at the bottom here's two or three random to-do's that have been</span> <span class="audio-time caption" data-speaker="Shae" data-start="2754.820000" data-stop="2755.579000">open for a while just like</span> <span class="audio-time caption" data-speaker="Shae" data-start="2755.580000" data-stop="2757.899000">for garbage collection.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2757.900000" data-stop="2760.979000">Because I know that in Jujutsu, I've got a cool little query that</span> <span class="audio-time caption" data-speaker="Shae" data-start="2760.980000" data-stop="2764.459000">says, if you have any change sets that are more than two weeks old</span> <span class="audio-time caption" data-speaker="Shae" data-start="2764.460000" data-stop="2767.659000">and are not in a permanent branch state, maybe you should do</span> <span class="audio-time caption" data-speaker="Shae" data-start="2767.660000" data-stop="2768.539000">something about them.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2768.540000" data-stop="2769.619000">It's just called to do.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2769.620000" data-stop="2773.379000">It'd be kind of nice to have that for Org Mode as well.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2773.380000" data-stop="2777.099000"><strong class="speaker-name">Sacha:</strong>  Yeah, it's just, you know, and our brains do these strange</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2777.100000" data-stop="2778.539000">things with randomness, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2778.540000" data-stop="2781.359000">They're like, oh, I want to see what's new now.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="2781.360000" data-stop="2782.979000"><strong class="speaker-name">Shae:</strong>  Right, right, yeah.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2782.980000" data-stop="2784.379000">Oh, I have a question.</span> <span class="audio-time caption" data-speaker="Shae" data-start="2784.380000" data-stop="2788.179000">You have this thing where you had...</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2788.000000">46:28</span> <strong>Timestamps</strong></div><p></p><span class="audio-time caption" data-speaker="Shae" data-start="2788.180000" data-stop="2790.099000"><strong class="speaker-name">Shae:</strong> I saw you taking notes with Prot,</span> <span class="audio-time caption" data-speaker="Shae" data-start="2790.100000" data-stop="2791.739000">and you had this timestamp.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2791.740000" data-stop="2792.579000"><strong class="speaker-name">Sacha:</strong>  Oh, yeah, yeah, yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2792.580000" data-stop="2793.979000">I'm using it now.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2793.980000" data-stop="2794.939000">Okay, okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2794.940000" data-stop="2796.619000">So I have it bound two ways now.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2796.620000" data-stop="2799.939000">I have it as a dabbrev, so dynamic abbreviation, and I also have it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2799.940000" data-stop="2806.499000">as a yasnippet because sometimes I'm using it with either SPC or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2806.500000" data-stop="2807.979000">tab to complete it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2807.980000" data-stop="2812.339000">And I don't really want to think, I just want to get the timestamp in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2812.340000" data-stop="2813.019000">and then move on.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2813.020000" data-stop="2818.979000">And so abbrevs can run functions to evaluate it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2818.980000" data-stop="2821.939000">You can insert the timestamp that way.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2821.940000" data-stop="2825.419000">Or yesnippet, of course, can evaluate the thing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2825.420000" data-stop="2826.379000">And now I have those.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2826.380000" data-stop="2829.659000">It's basically just a wall-clock time so that I can go back and plop</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2829.660000" data-stop="2834.299000">in the chapters as time offsets, which are automatically calculated</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2834.300000" data-stop="2836.299000">from the YouTube data on when the stream started.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2836.300000" data-stop="2840.019000">So I don't have to manually calculate my chapters.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2840.020000" data-stop="2843.819000">But it's super useful to have these times everywhere.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2843.820000" data-stop="2846.979000">And in this case, during a conversation, I want to be able to say,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2846.980000" data-stop="2850.139000">hey, we talked about something interesting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2850.140000" data-stop="2854.739000">And then be able to go back to that point in the video later on.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="2854.740000" data-stop="2855.859000"><strong class="speaker-name">Shae:</strong>  So you're matching?</span> <span class="audio-time caption" data-speaker="Shae" data-start="2855.860000" data-stop="2858.339000">Oh, oh, wow.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2858.340000" data-stop="2859.099000"><strong class="speaker-name">Sacha:</strong>  So my shortcut for yasnippet is "ot" because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2859.100000" data-stop="2865.739000">I never type "ot" elsewhere, and it's close enough.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2865.740000" data-stop="2870.833000">I use Dvorak, so my O is on home row, and T is close by.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2870.834000" data-stop="2874.267000">Also, on the other hand... There you go.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="2874.268000" data-stop="2875.867000"><strong class="speaker-name">Shae:</strong>  Did I already show you that this is actually Dvorak?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2875.868000" data-stop="2877.067000"><strong class="speaker-name">Sacha:</strong>  Oh, there you go.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2877.068000" data-stop="2878.779000">Now I can see the keycaps.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2878.780000" data-stop="2882.499000">Yeah, earlier it was kind of blurry, but now, yes, yes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2882.500000" data-stop="2886.139000">So yes, that is my shortcut for inserting the timestamp.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2886.140000" data-stop="2891.059000">I previously added seconds as well, but then I realized that my kind</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2891.060000" data-stop="2892.459000">might be false precision.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2892.460000" data-stop="2895.699000">So I just, you know, just use a minute at the moment and then I go</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2895.700000" data-stop="2898.699000">back and adjust the timestamps a little bit later.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2898.700000" data-stop="2902.899000">But yeah, you can use abbreviations for all sorts of things,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2902.900000" data-stop="2907.140000">including times and dates and stuff.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="2907.141000" data-stop="2910.200000"><strong class="speaker-name">Shae:</strong>  Have you ever tried Org timestamp?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2910.201000" data-stop="2911.659000"><strong class="speaker-name">Sacha:</strong>  Yeah, Org timer.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2911.660000" data-stop="2914.619000">So Org timer gives you a relative timestamp, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2914.620000" data-stop="2915.579000">You can say Org timer.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2915.580000" data-stop="2916.019000">Oh, okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2916.020000" data-stop="2919.999000">So, sorry.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2920.000000" data-stop="2924.219000">Are you talking about the C-u C-c ! or something</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2924.220000" data-stop="2926.219000">of that sort?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2926.220000" data-stop="2930.259000">So that's actually what I initially was doing, but then it was too</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2930.260000" data-stop="2934.819000">many keystroke word modifiers to remember.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2934.820000" data-stop="2937.979000">And then I had to press RET to select the, you know, thing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2937.980000" data-stop="2941.739000">So now I just have an abbreviation insert the Org mode formatted</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2941.740000" data-stop="2944.779000">timestamp for me.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2944.780000" data-stop="2949.659000">And then I have this code that searches for Org timestamp regular</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2949.660000" data-stop="2952.859000">expression and then does the calculation and conversion and stuff.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2952.000000">49:12</span> <strong>Org timers
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/ec22-shae-erisson-00-53-52-300.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/ec22-shae-erisson-00-53-52-300.jpg" alt="image from video 00:53:52.300" data-time="00:53:52.300"></a><span class="audio-time caption" data-speaker="Sacha" data-start="2952.860000" data-stop="2954.579000"><strong class="speaker-name">Sacha:</strong> So Org timer is a separate thing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2954.580000" data-stop="2959.419000">It's useful for meetings and things like that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2959.420000" data-stop="2961.619000">You would say, okay, your Org timer starts at the beginning of the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2961.620000" data-stop="2965.059000">meeting and then you can have a list and it automatically, like if</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2965.060000" data-stop="2968.019000">you alt shift enter or something like that in the list, it'll</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2968.020000" data-stop="2973.539000">automatically like insert the right timer, relative timer to it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2973.540000" data-stop="2974.059000">There you go.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2974.060000" data-stop="2975.819000">So there's an org-timer-start.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2975.820000" data-stop="2980.899000">But the reason I didn't go that approach was because then you A. have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2980.900000" data-stop="2984.819000">to remember to actually start the timer and B. then you have to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2984.820000" data-stop="2987.219000">synchronize your time with video time.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2987.220000" data-stop="2990.939000">Which might not have started at the same time.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2990.940000" data-stop="2995.619000">So now I'm just like, okay, wall clock for everything.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2995.620000" data-stop="2996.420000">And then I can do the transformation with whatever I like.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2996.421000" data-stop="3001.167000">And since I'm editing my subtitles in Emacs, I can say, hey, this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3001.168000" data-stop="3003.767000">file started at this time, according to YouTube.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3003.768000" data-stop="3008.733000">And then just, you know, map all of the wall clocks to the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3008.734000" data-stop="3012.233000">appropriate subtitle times.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="3012.234000" data-stop="3015.659000"><strong class="speaker-name">Shae:</strong>  Wow. That's really cool.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3015.660000" data-stop="3022.419000"><strong class="speaker-name">Sacha:</strong>  Anyway, so timers, relative, absolute, and using</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3022.420000" data-stop="3024.499000">abbreviations is great.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3024.500000" data-stop="3027.339000">Which I think actually is a thing that I picked up from Karl.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3027.340000" data-stop="3032.939000">Karl Voit because he also likes to use... He has an abbreviation,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3032.940000" data-stop="3037.539000">not at the Emacs level, but he has an abbreviation on his system level,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3037.540000" data-stop="3040.939000">like with his window manager, so he can use this timestamp trick</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3040.940000" data-stop="3044.967000">anywhere, including in Etherpad or wherever else where you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3044.968000" data-stop="3051.467000">want to insert the date and time. That's V-o-i-t, by the way.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3051.468000" data-stop="3057.200000">But yeah, so times are a great way to just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3057.201000" data-stop="3059.980000">leave yourself a pointer to that moment</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3059.981000" data-stop="3062.419000">so you can go back to it later.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="3062.420000" data-stop="3067.779000"><strong class="speaker-name">Shae:</strong>  Now I'm curious, how well does that integrate with this sort</span> <span class="audio-time caption" data-speaker="Shae" data-start="3067.780000" data-stop="3068.379000">of thing?</span> <span class="audio-time caption" data-speaker="Shae" data-start="3068.380000" data-stop="3072.539000">Because I really like looking back at my history agenda.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3072.540000" data-stop="3077.767000"><strong class="speaker-name">Sacha:</strong>  If you have it insert an inactive timestamp, I think it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3077.768000" data-stop="3083.119000">should still show up there.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3083.120000" data-stop="3087.380000">I think it will be a little like those.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="3087.381000" data-stop="3089.967000"><strong class="speaker-name">Shae:</strong>  Yeah, it looks like the...</span> <span class="audio-time caption" data-speaker="Shae" data-start="3089.968000" data-stop="3092.100000">Well, it looks like these two are showing up.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3092.101000" data-stop="3093.433000"><strong class="speaker-name">Sacha:</strong>  Yeah, yeah, yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3093.434000" data-stop="3099.600000">Yeah, so that's a basic thing that I would have inserted by my either</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3099.601000" data-stop="3104.267000">abbrev or... So it's not even dabbrev.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3104.268000" data-stop="3106.759000">It's just regular abbrev in Emacs.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="3106.760000" data-stop="3108.259000"><strong class="speaker-name">Shae:</strong>  What's the difference?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3108.260000" data-stop="3112.939000"><strong class="speaker-name">Sacha:</strong>  dabbrev is like hippie...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3112.940000" data-stop="3116.259000">Okay, let me just double check here.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3116.260000" data-stop="3122.579000">I feel like dabbrev is sort of hippie expand-ish.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3122.580000" data-stop="3127.800000">It looks in your buffer or possibly other buffers.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3127.801000" data-stop="3133.900000">And I think hippie-expand and dabbrev, they kind of work together.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3133.901000" data-stop="3137.633000">It's an option to have them work together.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3137.634000" data-stop="3142.619000">Okay, so hippie-expand is...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3142.620000" data-stop="3141.099000">Oh, so I see.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3141.100000" data-stop="3145.767000">Hippie-expand is the more advanced version of dabbrev.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3145.768000" data-stop="3150.160000">dabbrev was Dynamic Expand, and Hippie Expand says, yes, that, but</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3150.161000" data-stop="3152.367000">try a whole bunch of other things first.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3152.368000" data-stop="3156.100000">But my timestamp thing is actually just done by a regular abbrev,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3156.101000" data-stop="3165.500000">and I will find the thing in my config for "ot".</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3165.501000" data-stop="3174.219000">Oh, yeah. I will put it in my chat.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="3174.220000" data-stop="3177.733000"><strong class="speaker-name">Shae:</strong>  My spelling, most people say my emails are spelled really well,</span> <span class="audio-time caption" data-speaker="Shae" data-start="3177.734000" data-stop="3182.167000">but it's only because I have ispell set up.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3182.168000" data-stop="3187.767000"><strong class="speaker-name">Sacha:</strong>  Yeah, ispell is great. I am learning French and therefore...</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="3187.768000" data-stop="3191.099000"><strong class="speaker-name">Shae:</strong>  Oh, c'est très bien.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3191.100000" data-stop="3191.779000">Je parle un peu de français aussi.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3191.780000" data-stop="3192.459000"><strong class="speaker-name">Sacha:</strong>  Oh, oui.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3192.460000" data-stop="3195.667000">I'm keeping a journal in French on my blog</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3195.668000" data-stop="3200.933000">and I have the Tatoeba Project with all the example sentences</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3200.934000" data-stop="3204.000000">and I have a consult interface to look up stuff in them</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3204.001000" data-stop="3207.000000">so I can just borrow other people's words</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3207.001000" data-stop="3209.619000">and try to make it sound more natural.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3209.620000" data-stop="3211.333000">Plus of course the usual</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3211.334000" data-stop="3212.899000">searching for words in dictionaries and stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3212.900000" data-stop="3216.659000">Anyway, in the chat, I put in my global abbrev table definition for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3216.660000" data-stop="3218.259000">insert format time string.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3218.260000" data-stop="3221.260000">In case you want to steal that, it's right there.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="3221.301000" data-stop="3225.140000"><strong class="speaker-name">Shae:</strong>  I will definitely save that into my notes here.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3233.000000">53:53</span> <strong>Org Mode snippets</strong></div><p></p><span class="audio-time caption" data-speaker="Shae" data-start="3233.640000" data-stop="3236.779000"><strong class="speaker-name">Shae:</strong> Another thing I use a lot is I use</span> <span class="audio-time caption" data-speaker="Shae" data-start="3236.780000" data-stop="3240.779000">Org Mode snippets.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3240.780000" data-stop="3246.859000">I will tell you that the first time, I guess if I look back at...</span> <span class="audio-time caption" data-speaker="Shae" data-start="3246.860000" data-stop="3254.219000">This is another thing that I have done a lot of in the past, which is</span> <span class="audio-time caption" data-speaker="Shae" data-start="3254.220000" data-stop="3254.579000">where...</span> <span class="audio-time caption" data-speaker="Shae" data-start="3254.580000" data-stop="3258.433000">I love the fact that Org Mode snippets are just executable.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3258.434000" data-stop="3260.667000">I can just run them.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3260.668000" data-stop="3264.733000">I guess two jobs, three jobs ago, there was a case where, because I</span> <span class="audio-time caption" data-speaker="Shae" data-start="3264.734000" data-stop="3267.367000">would keep the results around and look at them, there was a case</span> <span class="audio-time caption" data-speaker="Shae" data-start="3267.368000" data-stop="3271.100000">where, I guess a couple of months before, something got shipped to a</span> <span class="audio-time caption" data-speaker="Shae" data-start="3271.101000" data-stop="3275.133000">customer, and I noticed our database schema had changed and I</span> <span class="audio-time caption" data-speaker="Shae" data-start="3275.134000" data-stop="3280.100000">prevented a tremendous amount of upset and emergency by being like</span> <span class="audio-time caption" data-speaker="Shae" data-start="3280.080000" data-stop="3283.240000">this doesn't look great. I got one from two weeks ago, and it does</span> <span class="audio-time caption" data-speaker="Shae" data-start="3283.240000" data-stop="3287.120000">not match. Something's wrong here. Everybody's like, I don't think</span> <span class="audio-time caption" data-speaker="Shae" data-start="3287.120000" data-stop="3288.720000">so, Shae. And I'm, like, no no no, we do have a problem, we've got to</span> <span class="audio-time caption" data-speaker="Shae" data-start="3288.720000" data-stop="3293.720000">fix this. And they were, like, oh crap! And then I was like, yeah,</span> <span class="audio-time caption" data-speaker="Shae" data-start="3293.720000" data-stop="3296.559000">solved a problem!</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3296.560000" data-stop="3300.539000"><strong class="speaker-name">Sacha:</strong>  Yeah, I basically try to do as much in a snippet instead of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3300.540000" data-stop="3304.139000">in, you know, in a scratch buffer or whatever, just because having</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3304.140000" data-stop="3308.059000">that record, the fact that I did it, and also any notes that I had</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3308.060000" data-stop="3313.739000">leading up to it and the output of it, it's just so helpful.</span> <p></p><a href="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/ec22-shae-erisson-00-55-39-300.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/ec22-shae-erisson-00-55-39-300.jpg" alt="image from video 00:55:39.300" data-time="00:55:39.300"></a><span class="audio-time caption" data-speaker="Shae" data-start="3313.740000" data-stop="3317.059000"><strong class="speaker-name">Shae:</strong>  Oh, I've got a cool thing that I'm doing for work.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3317.060000" data-stop="3324.539000">And that is that our readme file is not only a word file, but we also</span> <span class="audio-time caption" data-speaker="Shae" data-start="3324.540000" data-stop="3329.899000">have the demonstration of our actual thing is done by using like</span> <span class="audio-time caption" data-speaker="Shae" data-start="3329.900000" data-stop="3333.939000">dependent snippets.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3333.940000" data-stop="3337.539000">And so that means that like if you want that, perhaps this is</span> <span class="audio-time caption" data-speaker="Shae" data-start="3337.540000" data-stop="3342.339000">something everyone already knows, I don't know, but we basically are</span> <span class="audio-time caption" data-speaker="Shae" data-start="3342.340000" data-stop="3346.819000">using the results of earlier commands in later places.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3346.820000" data-stop="3350.259000">And the other nice thing about that is that then when we want to</span> <span class="audio-time caption" data-speaker="Shae" data-start="3350.260000" data-stop="3352.659000">check, we have to effectively dock tests, right?</span> <span class="audio-time caption" data-speaker="Shae" data-start="3352.660000" data-stop="3355.339000">When we want to check and see if our software works the way it does</span> <span class="audio-time caption" data-speaker="Shae" data-start="3355.340000" data-stop="3359.419000">in the readme, we evaluate the final Org Mode snippet, which then</span> <span class="audio-time caption" data-speaker="Shae" data-start="3359.420000" data-stop="3361.134000">calls it forward, calls it forward,</span> <span class="audio-time caption" data-speaker="Shae" data-start="3361.135000" data-stop="3363.099000">and then if something goes up or not.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3363.100000" data-stop="3366.139000">Well, I guess I need to fix something.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3366.140000" data-stop="3369.219000">And so it was pretty exciting to put Org Mode niftyness into our,</span> <span class="audio-time caption" data-speaker="Shae" data-start="3369.220000" data-stop="3371.639000">into my Word reading file, you know?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3371.640000" data-stop="3372.833000"><strong class="speaker-name">Sacha:</strong>  Nice, nice.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3372.834000" data-stop="3375.619000">And you did mention your other coworker is on board with the whole</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3375.620000" data-stop="3376.339000">Emacs thing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3376.340000" data-stop="3379.459000">So that's one of the things that people are often like, I want to use</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3379.460000" data-stop="3382.459000">Org Mode and I want to use it for like the documentation or the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3382.460000" data-stop="3385.019000">testing or whatever, but they got to get everyone else on board with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3385.020000" data-stop="3385.419000">the thing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3385.420000" data-stop="3390.239000">Otherwise it's Jupyter Notebooks or whatever else, right?</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="3390.240000" data-stop="3390.733000"><strong class="speaker-name">Shae:</strong>  Right.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3390.734000" data-stop="3393.099000">Okay, so I have a joke for you that I came up with a long time ago,</span> <span class="audio-time caption" data-speaker="Shae" data-start="3393.100000" data-stop="3396.859000">and that is, do you know the only way, there's only one way that</span> <span class="audio-time caption" data-speaker="Shae" data-start="3396.860000" data-stop="3400.139000">Sauron could have organized the invasion of Middle-earth, and do you</span> <span class="audio-time caption" data-speaker="Shae" data-start="3400.140000" data-stop="3400.939000">know what he used?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3400.940000" data-stop="3402.200000"><strong class="speaker-name">Sacha:</strong>  What?</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="3402.201000" data-stop="3408.699000"><strong class="speaker-name">Shae:</strong>  Orc Mode.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3408.700000" data-stop="3415.379000">It's a terrible joke, isn't it?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3415.380000" data-stop="3416.200000"><strong class="speaker-name">Sacha:</strong>  That's okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3416.201000" data-stop="3420.199000">I'm sure someone in the comments will come up with an even worse pun.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="3420.200000" data-stop="3421.133000"><strong class="speaker-name">Shae:</strong>  I'm excited!</span> <span class="audio-time caption" data-speaker="Shae" data-start="3421.134000" data-stop="3424.179000">It's going to be great!</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3424.180000" data-stop="3427.139000"><strong class="speaker-name">Sacha:</strong>  Never underestimate the punniness of the Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3427.140000" data-stop="3430.059000">community.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="3430.060000" data-stop="3431.300000"><strong class="speaker-name">Shae:</strong>  I completely agree.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3431.301000" data-stop="3434.259000">I don't know.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3434.260000" data-stop="3435.459000">Do I have anything else exciting in here?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3435.000000">57:15</span> <strong>Compilation finish function: handle success
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/ec22-shae-erisson-00-57-48-300.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/ec22-shae-erisson-00-57-48-300.jpg" alt="image from video 00:57:48.300" data-time="00:57:48.300"></a><span class="audio-time caption" data-speaker="Shae" data-start="3435.460000" data-stop="3436.733000"><strong class="speaker-name">Shae:</strong> I actually really like this one.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3436.734000" data-stop="3443.459000">I used to run all of my tests in compile.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3443.460000" data-stop="3446.019000">F12, I have F12 bound to compile.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3446.020000" data-stop="3449.219000">And one of the things I wanted was, I wanted something where it was,</span> <span class="audio-time caption" data-speaker="Shae" data-start="3449.220000" data-stop="3452.539000">if the compile is successful, don't show me the results, because</span> <span class="audio-time caption" data-speaker="Shae" data-start="3452.540000" data-stop="3453.299000">everything's good.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3453.300000" data-stop="3459.499000">And so since I'm doing stuff in Rust, when I run all the tests, it</span> <span class="audio-time caption" data-speaker="Shae" data-start="3459.500000" data-stop="3462.659000">leaves the buffer up, and I need to get around to actually doing</span> <span class="audio-time caption" data-speaker="Shae" data-start="3462.660000" data-stop="3465.659000">stuff like this for Rustic mode as well, where when the tests pass,</span> <span class="audio-time caption" data-speaker="Shae" data-start="3465.660000" data-stop="3467.459000">just go away, because it's all good.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3467.460000" data-stop="3469.499000">And when the tests don't pass, show me where to...</span> <span class="audio-time caption" data-speaker="Shae" data-start="3469.500000" data-stop="3472.699000">I need to look at the problem.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3472.700000" data-stop="3478.099000">And I got this from Enberg and Emacs, I don't know, 20 years ago.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3478.100000" data-stop="3483.579000">Maybe it was less than 20 years ago, but it probably wasn't.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3483.580000" data-stop="3487.059000">So yeah, there's so much good stuff.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3487.060000" data-stop="3491.779000">Yeah, there's just so much good stuff.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3491.780000" data-stop="3494.939000">And I also like to, oh, look, here we go.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3494.940000" data-stop="3497.899000">You can see that this is long gone, by the way.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3497.900000" data-stop="3501.539000">It's not there anymore.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3501.540000" data-stop="3506.099000"><strong class="speaker-name">Sacha:</strong>  I have a proper, you know, it's sachachua.com/dotemacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3506.100000" data-stop="3507.979000">A lot easier to remember.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3507.980000" data-stop="3516.699000">But yeah, and I think that's, yeah, yeah, I remember that now.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3516.700000" data-stop="3518.859000">defadvice is also obsolete.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3518.860000" data-stop="3523.366000">The new hotness is advice-add or something like that.</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="3523.367000" data-stop="3531.219000"><strong class="speaker-name">Shae:</strong>  Oh, really? I'm going to make another TODO item for there.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3531.220000" data-stop="3533.567000"><strong class="speaker-name">Sacha:</strong>  I was digging through my notes trying to find, do you share</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3533.568000" data-stop="3536.119000">your config anywhere?</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="3536.120000" data-stop="3537.619000"><strong class="speaker-name">Shae:</strong>  No, but you know, at this point if I share it on YouTube, I</span> <span class="audio-time caption" data-speaker="Shae" data-start="3537.620000" data-stop="3541.259000">might as well just throw it up somewhere.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3541.260000" data-stop="3541.699000">Why not?</span> <span class="audio-time caption" data-speaker="Shae" data-start="3541.700000" data-stop="3543.179000">It's not very exciting.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3543.180000" data-stop="3546.459000">Like if you look at someone like Ross Baker who has magic, like wow,</span> <span class="audio-time caption" data-speaker="Shae" data-start="3546.460000" data-stop="3548.659000">is there some magic coming in from Ross Baker?</span> <span class="audio-time caption" data-speaker="Shae" data-start="3548.660000" data-stop="3551.179000">I'm so excited to see more stuff from him.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3551.180000" data-stop="3557.019000">There's just like, I guess I feel like compared to almost everybody</span> <span class="audio-time caption" data-speaker="Shae" data-start="3557.020000" data-stop="3558.579000">else I know, I feel like a power user.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3558.580000" data-stop="3561.099000">Because I'm like, you know, I wish I could do this thing.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3561.100000" data-stop="3563.339000">A lot of times someone I know is like, well, I did that thing and</span> <span class="audio-time caption" data-speaker="Shae" data-start="3563.340000" data-stop="3564.179000">here's a library.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3564.180000" data-stop="3566.379000">And I'm like, yeah, I'll have to do it.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3566.380000" data-stop="3569.779000">And I just, I guess I feel like I'm a power user.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3569.780000" data-stop="3573.459000">And on the good side, I guess I kind of,</span> <span class="audio-time caption" data-speaker="Shae" data-start="3573.460000" data-stop="3577.099000">I really haven't written that much Elisp ever, like I was saying in</span> <span class="audio-time caption" data-speaker="Shae" data-start="3577.100000" data-stop="3578.779000">the comments during your interview with Prot.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3578.780000" data-stop="3582.499000">And I kind of like to, it's just I guess it's never quite gotten to</span> <span class="audio-time caption" data-speaker="Shae" data-start="3582.500000" data-stop="3583.499000">the top of my stack.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3583.500000" data-stop="3587.339000">And I did decide it was time for me to send money to Parade for at</span> <span class="audio-time caption" data-speaker="Shae" data-start="3587.340000" data-stop="3591.179000">least for themes, if not for like, please teach me some Elisp so I</span> <span class="audio-time caption" data-speaker="Shae" data-start="3591.180000" data-stop="3594.299000">can actually, because you know, it's not that Elisp is hard.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3594.300000" data-stop="3599.019000">It's more like, how do I kind of, what are the things I interact with?</span> <span class="audio-time caption" data-speaker="Shae" data-start="3599.020000" data-stop="3601.379000">What are the words?</span> <span class="audio-time caption" data-speaker="Shae" data-start="3601.380000" data-stop="3605.059000">What's the vocabulary of working with Emacs?</span> <span class="audio-time caption" data-speaker="Shae" data-start="3605.060000" data-stop="3606.499000">I don't actually really know.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3606.500000" data-stop="3608.779000">As a user, sure, I can do cool stuff.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3608.780000" data-stop="3609.939000">I can do Lisp macros.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3609.940000" data-stop="3614.319000">I've done Scheme and Lisp some of the past, but not inside Emacs.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3614.320000" data-stop="3615.979000"><strong class="speaker-name">Sacha:</strong>  Alright, so let me clarify.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3615.980000" data-stop="3620.139000">After more than 20 years of using Emacs, did you say you feel like a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3620.140000" data-stop="3622.799000">power user or do not feel like a power user?</span> <p></p><span class="audio-time caption" data-speaker="Shae" data-start="3622.800000" data-stop="3625.699000"><strong class="speaker-name">Shae:</strong>  I definitely feel like a power user, but I don't feel like</span> <span class="audio-time caption" data-speaker="Shae" data-start="3625.700000" data-stop="3627.859000">someone who does much of anything with Elisp.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3627.860000" data-stop="3630.179000">I don't really feel like someone who has much of a clue in the</span> <span class="audio-time caption" data-speaker="Shae" data-start="3630.180000" data-stop="3630.539000">internals.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3630.540000" data-stop="3632.779000">And that's not entirely true.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3632.780000" data-stop="3634.339000">I have some of the ideas.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3634.340000" data-stop="3639.059000">But for the most part, I haven't actually needed to know that much</span> <span class="audio-time caption" data-speaker="Shae" data-start="3639.060000" data-stop="3640.339000">about the internals.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3640.340000" data-stop="3644.299000">And sure, I've dug into things like how do you efficiently work with</span> <span class="audio-time caption" data-speaker="Shae" data-start="3644.300000" data-stop="3648.499000">large buffers in your ??, like the ropes data structure and</span> <span class="audio-time caption" data-speaker="Shae" data-start="3648.500000" data-stop="3649.139000">stuff like that.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3649.140000" data-stop="3650.919000">That was more for fun.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3650.920000" data-stop="3654.099000">Although it is something that Emacs does and does extremely well.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3654.100000" data-stop="3657.099000">But I'd kind of like to...</span> <span class="audio-time caption" data-speaker="Shae" data-start="3657.100000" data-stop="3660.200000">There's a lot of things I'd kind of like to change and I don't really</span> <span class="audio-time caption" data-speaker="Shae" data-start="3660.201000" data-stop="3663.359000">have enough of the understanding of the kind of how I would write the</span> <span class="audio-time caption" data-speaker="Shae" data-start="3663.360000" data-stop="3665.067000">Elisp to do it.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3665.068000" data-stop="3666.000000">Here's a good example.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3666.001000" data-stop="3669.200000">When I hit F3, it takes me to the one I'm currently clocked into.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3669.201000" data-stop="3675.833000">Unless I haven't clocked in to something since I started Emacs.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3675.834000" data-stop="3678.100000">And honestly, I would like to use something like org-ql,</span> <span class="audio-time caption" data-speaker="Shae" data-start="3678.101000" data-stop="3680.700000">the Org query language, to go find</span> <span class="audio-time caption" data-speaker="Shae" data-start="3680.701000" data-stop="3682.400000">if I've just started Emacs,</span> <span class="audio-time caption" data-speaker="Shae" data-start="3682.401000" data-stop="3685.833000">and Org does not know about something, you know,</span> <span class="audio-time caption" data-speaker="Shae" data-start="3685.834000" data-stop="3687.000000">I just want you to go search for it.</span> <span class="audio-time caption" data-speaker="Shae" data-start="3687.001000" data-stop="3689.200000">I have so many cores and so much memory,</span> <span class="audio-time caption" data-speaker="Shae" data-start="3689.201000" data-stop="3690.567000">just go find it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3690.568000" data-stop="3694.400000"><strong class="speaker-name">Sacha:</strong>  That sounds like an excellent reason to go learn Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3694.401000" data-stop="3692.339000">so that you can have it...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3692.340000" data-stop="3699.079000">If you're not currently clocked in, go find the most recent</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3699.080000" data-stop="3702.579000">clocked in task and go there, or maybe present you with a list of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3702.580000" data-stop="3707.039000">things and then go from there.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3707.040000" data-stop="3710.659000">I would love to hear about your Emacs Lisp learning journey because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3710.660000" data-stop="3714.459000">that's one of the big things that moves people from, you know, power</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3714.460000" data-stop="3722.119000">users, yes, but users, to using Emacs as a lightweight editor toolkit</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3722.120000" data-stop="3725.500000">for something that's custom fit to exactly what their workflow is.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3725.501000" data-stop="3728.400000">And on that note, I'm going to try to wrap up gracefully before the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3728.401000" data-stop="3731.700000">kiddo, you know, just like drags me out here.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3731.701000" data-stop="3735.633000">Thank you so much for doing this.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3735.634000" data-stop="3737.100000">I look forward to more conversations.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3737.101000" data-stop="3742.559000">I'm going to post the transcript and other things like that pretty</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3742.560000" data-stop="3745.619000">quickly, I think, because I have this nice workflow now that lets me</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3745.620000" data-stop="3749.410000">take screenshots and everything, but there's so much here that I want</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3749.411000" data-stop="3751.733000">to unpack. But I hear the kiddo, bye!</span></div>
<p></p>

<p>
#+begin_export 11ty
</p>

<p>
               &lt;a name="end-ec22-transcript"&gt;&lt;/a&gt;&lt;/details&gt;
#+end_exportbvt
</p>
</details></div>
</div>
<div id="outline-container-emacs-chat-22-shae-erisson-chat" class="outline-3">
<h3 id="emacs-chat-22-shae-erisson-chat"><a href="https://sachachua.com/blog/feed/index.xml#emacs-chat-22-shae-erisson-chat">Chat</a></h3>
<div class="outline-text-3" id="text-emacs-chat-22-shae-erisson-chat">
<ul class="org-ul">
<li>JacksonScholberg: ​​Emacs is fun</li>
<li>JacksonScholberg: ​Apple's touchpad is another option</li>
<li>JacksonScholberg: ​Trackpad</li>
<li>JacksonScholberg: ​Lol</li>
<li>JacksonScholberg: ​I was curious about what you are tracking your time working on</li>
<li>JacksonScholberg: ​How you track it.</li>
<li>JacksonScholberg: ​You clock in and out to what you are working on. I like that idea.</li>
<li>Bezaar.musicc: ​​That's great!</li>
<li>PuercoPop: ​​the buffer api (properties) is the hardest part for me</li>
<li>charliemcmackin4859: ​​I think you still have a timer going, btw</li>
</ul>

<p>
Find more Emacs Chats or join the fun: <a href="https://sachachua.com/emacs-chat">https://sachachua.com/emacs-chat</a></p>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/index.org">View Org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F05%2Fmay-7-emacs-chat-with-shae-erisson%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>Emacs Chat 21: Amin Bandali</title>
		<link>https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Mon, 04 May 2026 18:28:11 GMT</pubDate>
    <category>emacs</category>
<category>emacs-chat-podcast</category>
<category>emacs-chat</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/</guid><enclosure url="https://archive.org/download/ec21-amin-bandali/ec21-amin-bandali.mp3"
               length="69601008"
               type="audio/mpeg" />
		<description><![CDATA[<div class="sticky-toc" id="orge7bf929">
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="https://sachachua.com/blog/feed/index.xml#current-notes-for-next-time-emacs-chat-21-amin-bandali-rough-notes-during-our-chat">Chapters</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#current-notes-for-next-time-emacs-chat-21-amin-bandali-transcript">Transcript</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#current-notes-for-next-time-emacs-chat-21-amin-bandali-chat">Chat</a></li>
</ul>
</div>

</div>

<div class="update" id="org4c015a9">
<ul class="org-ul">
<li><span class="timestamp-wrapper"><time class="timestamp" datetime="2026-05-08">[2026-05-08 Fri]</time></span>: Updated with Amin's changes.</li>
<li><span class="timestamp-wrapper"><time class="timestamp" datetime="2026-05-07">[2026-05-07 Thu]</time></span>: Added file enclosure so that it can load as a proper podcast.</li>
</ul>

</div>

<p>
I chatted with Amin Bandali about Emacs, configuration, EXWM, keybindings, audio, and life.
<video preload="none" controls="1" src="https://archive.org/download/ec21-amin-bandali/ec21-amin-bandali.mp4" type="video/mp4"><track kind="subtitles" label="Captions" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/ec21-amin-bandali.vtt" srclang="en" default=""></video>
</p>

<p>
<a href="https://archive.org/details/ec21-amin-bandali">View it via the Internet Archive</a>, <a href="https://youtube.com/live/ZiTQt8q1Ybc">watch/comment on YouTube</a>, <a href="https://sachachua.com/blog/feed/index.xml#ID-ec21-transcript">read the transcript online</a>, <a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/ec21-amin-bandali.vtt">download the transcript</a>, or <a href="mailto:sacha@sachachua.com">e-mail me</a> your thoughts!
</p>

<p>
Links:
</p>

<ul class="org-ul">
<li><a href="https://kelar.org/~bandali/gnu/emacs/emacs-chat-202605.html">Emacs Chat with Sacha Chua - bandali</a> - Amin's blog post about this talk</li>
<li><a href="https://kelar.org/~bandali/">Amin Bandali</a>: a computing scientist, archivist, and activist for user freedom</li>
<li><a href="https://kelar.org/~bandali/gnu/emacs/dotemacs.html">bandali's GNU Emacs configuration</a></li>
<li><a href="https://git.kelar.org/~bandali/configs/tree/.emacs.d">.emacs.d - configs - My configuration for GNU Emacs and other programs</a></li>
<li><a href="https://kelar.org/~bandali/gnu/emacs/people.html">The People of Emacs - bandali</a></li>
<li><a href="https://github.com/emacs-exwm/exwm">emacs-exwm/exwm: Emacs X Window Manager · GitHub</a></li>
</ul>
<div id="outline-container-current-notes-for-next-time-emacs-chat-21-amin-bandali-rough-notes-during-our-chat" class="outline-3">
<h3 id="current-notes-for-next-time-emacs-chat-21-amin-bandali-rough-notes-during-our-chat"><a href="https://sachachua.com/blog/feed/index.xml#current-notes-for-next-time-emacs-chat-21-amin-bandali-rough-notes-during-our-chat">Chapters</a></h3>
<div class="outline-text-3" id="text-current-notes-for-next-time-emacs-chat-21-amin-bandali-rough-notes-during-our-chat">
<p>
</p><ul class="org-ul">
<li><span class="audio-time" data-start="0.000" data-stop="11.559">0:00</span> Introduction: Amin Bandali, software developer and free software activist</li>
<li><span class="audio-time" data-start="65.280" data-stop="66.399">1:05</span> Aspects of life: notetaking, editing, multiple</li>
<li><span class="audio-time" data-start="180.640" data-stop="183.919">3:00</span> Configuration: keeping things simple</li>
<li><span class="audio-time" data-start="298.640" data-stop="303.159">4:58</span> user-lisp-directory, site-lisp if you're using an older Emacs</li>
<li><span class="audio-time" data-start="392.440" data-stop="395.239">6:32</span> Organizing configuration into modules</li>
<li><span class="audio-time" data-start="465.040" data-stop="469.159">7:45</span> early-init</li>

<li><span class="audio-time" data-start="546.180" data-stop="549.479">9:06</span> ring-bell-function</li>
<li><span class="audio-time" data-start="580.000" data-stop="581.759">9:40</span> performance optimizations</li>

<li><span class="audio-time" data-start="625.300" data-stop="627.500">10:25</span> user-lisp</li>

<li><span class="audio-time" data-start="674.220" data-stop="676.279">11:14</span> ignoring byte compilation warnings</li>
<li><span class="audio-time" data-start="715.240" data-stop="718.319">11:55</span> init-file-debug = &ndash;debug-init</li>

<li><span class="audio-time" data-start="773.200" data-stop="776.359">12:53</span> Core</li>

<li><span class="audio-time" data-start="833.580" data-stop="837.199">13:53</span> no longer using bandali-configure; scoping errors, timing execution</li>

<li><span class="audio-time" data-start="1022.760" data-stop="1026.728">17:02</span> Why not use use-package</li>
<li><span class="audio-time" data-start="1117.820" data-stop="1119.067">18:37</span> Defining multiple keybindings</li>

<li><span class="audio-time" data-start="1185.900" data-stop="1188.119">19:45</span> doric-oak uses emphasis instead of colours</li>

<li><span class="audio-time" data-start="1249.160" data-stop="1252.159">20:49</span> global font scaling instead of the local ones</li>

<li><span class="audio-time" data-start="1297.120" data-stop="1299.239">21:37</span> display-fill-column-indicator</li>
<li><span class="audio-time" data-start="1373.760" data-stop="1377.439">22:53</span> emacsclient for EDITOR and VISUAL</li>

<li><span class="audio-time" data-start="1417.760" data-stop="1418.719">23:37</span> fundamental-mode-hook</li>

<li><span class="audio-time" data-start="1463.580" data-stop="1465.319">24:23</span> indicate-buffer-boundaries</li>

<li><span class="audio-time" data-start="1596.420" data-stop="1598.600">26:36</span> enabling and disabling commands</li>

<li><span class="audio-time" data-start="1657.880" data-stop="1662.999">27:37</span> package-review-policy</li>

<li><span class="audio-time" data-start="1732.800" data-stop="1738.239">28:52</span> getting the Info files from the Emacs source directory</li>

<li><span class="audio-time" data-start="1785.120" data-stop="1786.600">29:45</span> recentf, adding directories</li>

<li><span class="audio-time" data-start="1898.440" data-stop="1901.759">31:38</span> Scrolling</li>

<li><span class="audio-time" data-start="1948.600" data-stop="1956.239">32:28</span> auto revert</li>

<li><span class="audio-time" data-start="1994.060" data-stop="1996.959">33:14</span> Repeat mode</li>

<li><span class="audio-time" data-start="2091.320" data-stop="2093.799">34:51</span> EXWM</li>

<li><span class="audio-time" data-start="2283.000" data-stop="2285.559">38:03</span> Audio setup</li>
<li><span class="audio-time" data-start="2350.280" data-stop="2355.399">39:10</span> keymaps for launching different applications</li>
<li><span class="audio-time" data-start="2389.300" data-stop="2395.639">39:49</span> bandali-call-interactively-insert</li>

<li><span class="audio-time" data-start="2546.720" data-stop="2549.639">42:26</span> workspaces</li>

<li><span class="audio-time" data-start="2626.380" data-stop="2630.439">43:46</span> ZSA Voyager split keyboard, super x as a single key</li>

<li><span class="audio-time" data-start="2786.840" data-stop="2788.839">46:26</span> Keybindings</li>

<li><span class="audio-time" data-start="2885.080" data-stop="2888.079">48:05</span> Media buttons</li>

<li><span class="audio-time" data-start="2983.280" data-stop="2985.959">49:43</span> exwm-input-simulation-keys!</li>

<li><span class="audio-time" data-start="3099.340" data-stop="3103.079">51:39</span> exwm: managing floating windows</li>

<li><span class="audio-time" data-start="3191.000" data-stop="3193.879">53:11</span> exwm: application-specific local simulation keys</li>

<li><span class="audio-time" data-start="3244.220" data-stop="3249.639">54:04</span> binding C-q to exwm-input-send-next-key</li>
<li><span class="audio-time" data-start="3268.580" data-stop="3271.239">54:28</span> Renaming buffers</li>

<li><span class="audio-time" data-start="3336.280" data-stop="3338.359">55:36</span> dunst for notifications</li>

<li><span class="audio-time" data-start="3414.540" data-stop="3415.999">56:54</span> exwm xsettings and responding to screen configuration changes</li>

<li><span class="audio-time" data-start="3539.880" data-stop="3543.359">58:59</span> Slowly getting back into Org mode</li>
<li><span class="audio-time" data-start="3598.160" data-stop="3601.319">59:58</span> chat notes</li>

<li><span class="audio-time" data-start="3652.140" data-stop="3654.759">1:00:52</span> Mode line</li>
<li><span class="audio-time" data-start="3709.320" data-stop="3710.319">1:01:49</span> display-buffer-alist</li>
<li><span class="audio-time" data-start="3743.481" data-stop="3744.619">1:02:23</span> TRAMP slowness, maybe disabling VC detection?</li>
<li><span class="audio-time" data-start="3819.240" data-stop="3822.959">1:03:39</span> eat</li>
<li><span class="audio-time" data-start="3907.180" data-stop="3909.999">1:05:07</span> TRAMP completion</li>
<li><span class="audio-time" data-start="4014.300" data-stop="4015.359">1:06:54</span> ffs: form feed slides, ^L</li>

<li><span class="audio-time" data-start="4174.820" data-stop="4176.799">1:09:34</span> Speaker notes</li>
</ul>

<p></p>
</div>
</div>
<div id="outline-container-current-notes-for-next-time-emacs-chat-21-amin-bandali-transcript" class="outline-3">
<h3 id="current-notes-for-next-time-emacs-chat-21-amin-bandali-transcript"><a href="https://sachachua.com/blog/feed/index.xml#current-notes-for-next-time-emacs-chat-21-amin-bandali-transcript">Transcript</a></h3>
<div class="outline-text-3" id="text-current-notes-for-next-time-emacs-chat-21-amin-bandali-transcript">
<details class="code-details"><a name="ID-ec21-transcript"></a><a href="https://sachachua.com/blog/feed/index.xml#end-ec21-transcript">Skip to end</a><summary>Transcript</summary>
<p>
</p><div class="full-transcript"><p></p><div class="transcript-heading"><span class="audio-time" data-start="0.000000">0:00</span> <strong>Introduction: Amin Bandali, software developer and free software activist</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="0.000000" data-stop="11.559000"><strong class="speaker-name">Sacha:</strong>  Let me do the thing. Go live.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="11.560000" data-stop="14.399000">Let's check in.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="14.400000" data-stop="16.559000">Alright, hello.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="16.560000" data-stop="20.719000">This is Emacs Chat 21 coming back after a decade of not</span> <span class="audio-time caption" data-speaker="Sacha" data-start="20.720000" data-stop="22.279000">doing it, so…</span> <span class="audio-time caption" data-speaker="Sacha" data-start="22.280000" data-stop="26.759000">And today I've got Amin Bandali who's a…</span> <span class="audio-time caption" data-speaker="Sacha" data-start="26.760000" data-stop="29.279000">Is it seven years now that we've been doing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="29.280000" data-stop="31.579000">EmacsConf together?</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="31.580000" data-stop="32.267000"><strong class="speaker-name">Amin:</strong>  I think so.</span> <span class="audio-time caption" data-speaker="Amin" data-start="31.760000" data-stop="33.719000">Since fall 2019.</span> <span class="audio-time caption" data-speaker="Amin" data-start="32.268000" data-stop="32.268000">Yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="33.720000" data-stop="35.679000"><strong class="speaker-name">Sacha:</strong>  Yeah, yeah, yeah, yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="35.680000" data-stop="38.799000">But of course you also do a whole lot of other things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="38.800000" data-stop="40.519000">I was looking through your Emacs configuration and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="40.520000" data-stop="43.119000">there's like translation and other stuff in there.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="43.120000" data-stop="45.239000">So would you like to start off with a brief</span> <span class="audio-time caption" data-speaker="Sacha" data-start="45.240000" data-stop="47.559000">introduction of who you are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="47.560000" data-stop="50.259000">and how and why you use Emacs?</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="50.260000" data-stop="51.799000"><strong class="speaker-name">Amin:</strong>  Yeah, sure.</span> <span class="audio-time caption" data-speaker="Amin" data-start="51.800000" data-stop="53.439000">Yeah, first of all, hello, everyone.</span> <span class="audio-time caption" data-speaker="Amin" data-start="53.440000" data-stop="54.639000">Sorry if I'm looking to the side.</span> <span class="audio-time caption" data-speaker="Amin" data-start="54.640000" data-stop="55.879000">This is a new setup.</span> <span class="audio-time caption" data-speaker="Amin" data-start="55.880000" data-stop="58.879000">My laptop, which has my webcam, is there, but my main</span> <span class="audio-time caption" data-speaker="Amin" data-start="58.880000" data-stop="60.119000">display is here.</span> <span class="audio-time caption" data-speaker="Amin" data-start="60.120000" data-stop="63.039000">So I might be looking to the side from time to time.</span> <span class="audio-time caption" data-speaker="Amin" data-start="63.040000" data-stop="65.279000">But yeah, that aside, hello.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="65.000000">1:05</span> <strong>Aspects of life: notetaking, editing, multiple</strong></div><p></p><span class="audio-time caption" data-speaker="Amin" data-start="65.280000" data-stop="66.399000"><strong class="speaker-name">Amin:</strong> Yeah, I'm Amin Bandali.</span> <span class="audio-time caption" data-speaker="Amin" data-start="66.400000" data-stop="72.359000">I've been, I think, using Emacs since 2014 or 15, so I</span> <span class="audio-time caption" data-speaker="Amin" data-start="72.360000" data-stop="74.679000">guess more than a decade now.</span> <span class="audio-time caption" data-speaker="Amin" data-start="74.680000" data-stop="78.879000">I'm a software engineer by day, or software developer,</span> <span class="audio-time caption" data-speaker="Amin" data-start="78.880000" data-stop="82.159000">slash programmer, slash computing scientist.</span> <span class="audio-time caption" data-speaker="Amin" data-start="82.160000" data-stop="85.839000">I'm also a free software activist.</span> <span class="audio-time caption" data-speaker="Amin" data-start="85.840000" data-stop="89.279000">I volunteer on a lot of free software projects as</span> <span class="audio-time caption" data-speaker="Amin" data-start="89.280000" data-stop="90.639000">well, which Sacha mentioned.</span> <span class="audio-time caption" data-speaker="Amin" data-start="90.640000" data-stop="91.799000">I do things around GNU.</span> <span class="audio-time caption" data-speaker="Amin" data-start="91.800000" data-stop="93.319000">I volunteer with FSF.</span> <span class="audio-time caption" data-speaker="Amin" data-start="93.320000" data-stop="95.719000">I'm a Debian Developer, so I try to maintain some</span> <span class="audio-time caption" data-speaker="Amin" data-start="95.720000" data-stop="97.399000">packages in Debian.</span> <span class="audio-time caption" data-speaker="Amin" data-start="97.400000" data-stop="101.959000">I try to help run EmacsConf from time to time.</span> <span class="audio-time caption" data-speaker="Amin" data-start="101.960000" data-stop="105.239000">Hopefully this year I will be much more present.</span> <span class="audio-time caption" data-speaker="Amin" data-start="105.240000" data-stop="107.039000">But yeah, that's that.</span> <span class="audio-time caption" data-speaker="Amin" data-start="107.040000" data-stop="110.439000">So I first got into using Emacs, I guess, as a</span> <span class="audio-time caption" data-speaker="Amin" data-start="110.440000" data-stop="113.039000">programmer tool, like as a text editor.</span> <span class="audio-time caption" data-speaker="Amin" data-start="113.040000" data-stop="116.439000">But I've since then kind of integrated it into a lot</span> <span class="audio-time caption" data-speaker="Amin" data-start="116.440000" data-stop="117.839000">of other aspects of my life.</span> <span class="audio-time caption" data-speaker="Amin" data-start="117.840000" data-stop="119.959000">And I do much more with it, as I'm sure a lot of us do.</span> <span class="audio-time caption" data-speaker="Amin" data-start="119.960000" data-stop="124.239000">Yeah, so I use it for kind of note-taking, just any</span> <span class="audio-time caption" data-speaker="Amin" data-start="124.240000" data-stop="126.279000">writing, editing purposes</span> <span class="audio-time caption" data-speaker="Amin" data-start="126.280000" data-stop="129.679000">in multiple natural and programming languages.</span> <span class="audio-time caption" data-speaker="Amin" data-start="129.680000" data-stop="134.559000">Reading and sending email for chatting via IRC.</span> <span class="audio-time caption" data-speaker="Amin" data-start="134.560000" data-stop="136.779000">All of that good stuff.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="136.780000" data-stop="138.599000"><strong class="speaker-name">Sacha:</strong>  This is the sort of thing that isn't</span> <span class="audio-time caption" data-speaker="Sacha" data-start="138.600000" data-stop="140.399000">immediately obvious from your configuration.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="140.400000" data-stop="143.239000">I know you've got your Gnus setup in there and you've</span> <span class="audio-time caption" data-speaker="Sacha" data-start="143.240000" data-stop="146.519000">got your ERC setup in there, but sometimes when</span> <span class="audio-time caption" data-speaker="Sacha" data-start="146.520000" data-stop="148.959000">newcomers are trying to figure out, okay, there are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="148.960000" data-stop="151.199000">all these packages, but how do I use them</span> <span class="audio-time caption" data-speaker="Sacha" data-start="151.200000" data-stop="152.359000">to get stuff done?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="152.360000" data-stop="155.679000">That's one of the reasons why we want to do this Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="155.680000" data-stop="158.479000">chat, so that maybe you can show us</span> <span class="audio-time caption" data-speaker="Sacha" data-start="158.480000" data-stop="160.239000">some of the cool stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="160.240000" data-stop="162.879000">We are live, but if you accidentally show something</span> <span class="audio-time caption" data-speaker="Sacha" data-start="162.880000" data-stop="165.279000">personal, let me know and I can kill the stream within</span> <span class="audio-time caption" data-speaker="Sacha" data-start="165.280000" data-stop="168.279000">10 seconds and I think then we can be like, okay,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="168.280000" data-stop="170.799000">we'll just flush that out and then come back once</span> <span class="audio-time caption" data-speaker="Sacha" data-start="170.800000" data-stop="173.239000">we've hidden the top secret plans for taking over the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="173.240000" data-stop="175.399000">world, that sort of thing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="175.400000" data-stop="177.719000">Sounds good.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="177.720000" data-stop="180.639000">Where do we want to start?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="180.000000">3:00</span> <strong>Configuration: keeping things simple</strong></div><p></p><span class="audio-time caption" data-speaker="Amin" data-start="180.640000" data-stop="183.919000"><strong class="speaker-name">Amin:</strong>  I'm happy to do it however you like.</span> <span class="audio-time caption" data-speaker="Amin" data-start="183.920000" data-stop="186.679000">I can either share my screen, pull up my configuration.</span> <span class="audio-time caption" data-speaker="Amin" data-start="186.680000" data-stop="189.479000">Yeah, okay, so let's do that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="189.480000" data-stop="190.279000"><strong class="speaker-name">Sacha:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="190.280000" data-stop="193.479000">If you share your screen sometimes, I think what we</span> <span class="audio-time caption" data-speaker="Sacha" data-start="193.480000" data-stop="195.479000">did ages ago was we just started walking through the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="195.480000" data-stop="198.279000">configuration and then sometimes people say, oh yeah,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="198.280000" data-stop="199.159000">that's really interesting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="199.160000" data-stop="201.919000">Let's go and demonstrate that so that people can get a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="201.920000" data-stop="203.559000">sense of how this actually works.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="203.560000" data-stop="207.319000">And there were some things in your configuration that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="207.320000" data-stop="210.159000">I had no idea, like what is FFS?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="210.160000" data-stop="211.919000">There's like no package.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="211.920000" data-stop="214.559000">I couldn't find any information about it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="214.560000" data-stop="218.079000">But yeah, so your config, if you want to go ahead and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="218.080000" data-stop="219.639000">share your screen while I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="219.640000" data-stop="222.319000">Fill the air with hand-waving.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="222.320000" data-stop="227.719000">Amin's config tends to be more on the minimalist side.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="227.720000" data-stop="232.999000">I think you mostly rely on built-in things with a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="233.000000" data-stop="235.239000">couple of external packages.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="235.240000" data-stop="238.919000">You don't even use use-package at all.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="238.920000" data-stop="241.639000">It's all run-at-idle-time to delay the startup of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="241.640000" data-stop="245.867000">various things, and then it's all vanilla Emacs as you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="245.868000" data-stop="249.800000">can get for loading and configuring things.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="249.840000" data-stop="251.033000"><strong class="speaker-name">Amin:</strong>  Yeah, pretty much, yeah.</span> <span class="audio-time caption" data-speaker="Amin" data-start="251.034000" data-stop="253.433000">Yeah, so before I continue, quick note, Sacha, if you</span> <span class="audio-time caption" data-speaker="Amin" data-start="253.434000" data-stop="255.159000">can make me presenter because I don't have access to</span> <span class="audio-time caption" data-speaker="Amin" data-start="255.160000" data-stop="256.033000">share my screen.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="256.034000" data-stop="258.599000"><strong class="speaker-name">Sacha:</strong>  Oh, that would be important, yes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="258.600000" data-stop="260.399000">Hang on a second.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="260.400000" data-stop="261.359000">Let me see.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="261.360000" data-stop="262.359000">Okay, here we go.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="262.360000" data-stop="263.399000">Make presenter.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="263.400000" data-stop="265.559000">I might as well promote you to moderator while we're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="265.560000" data-stop="266.319000">at it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="266.320000" data-stop="267.439000">There you go.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="267.440000" data-stop="271.239000">You should now have magic powers.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="271.240000" data-stop="272.399000"><strong class="speaker-name">Amin:</strong>  Thanks.</span> <span class="audio-time caption" data-speaker="Amin" data-start="272.400000" data-stop="273.999000">Let's see.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="274.000000" data-stop="275.559000"><strong class="speaker-name">Sacha:</strong>  It's a good thing we're practicing this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="275.560000" data-stop="280.799000">before EmacsConf so I remember how all this stuff works.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="280.800000" data-stop="283.079000"><strong class="speaker-name">Amin:</strong>  Yep, for sure.</span> <span class="audio-time caption" data-speaker="Amin" data-start="283.080000" data-stop="284.079000">Okay, let's see.</span> <span class="audio-time caption" data-speaker="Amin" data-start="284.080000" data-stop="285.319000">I think I got it now.</span> <span class="audio-time caption" data-speaker="Amin" data-start="285.320000" data-stop="286.899000">Can you see my screen?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="286.900000" data-stop="290.059000"><strong class="speaker-name">Sacha:</strong>  Yes, I can see your screen.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="290.060000" data-stop="291.559000"><strong class="speaker-name">Amin:</strong>  Okay, excellent.</span> <span class="audio-time caption" data-speaker="Amin" data-start="291.560000" data-stop="293.799000">Let's see.</span> <span class="audio-time caption" data-speaker="Amin" data-start="293.800000" data-stop="298.639000">Okay.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="298.000000">4:58</span> <strong>user-lisp-directory, site-lisp if you're using an older Emacs</strong></div><p></p><span class="audio-time caption" data-speaker="Amin" data-start="298.640000" data-stop="303.159000"><strong class="speaker-name">Amin:</strong> Yeah, so as Sacha mentioned at the moment, my config</span> <span class="audio-time caption" data-speaker="Amin" data-start="303.160000" data-stop="307.919000">is kind of very minimalist and kind of conservative by</span> <span class="audio-time caption" data-speaker="Amin" data-start="307.920000" data-stop="311.439000">design, in part because I tend to work on a lot of</span> <span class="audio-time caption" data-speaker="Amin" data-start="311.440000" data-stop="314.439000">different machines, whether it's for work or</span> <span class="audio-time caption" data-speaker="Amin" data-start="314.440000" data-stop="318.119000">volunteering or whatever, and I prefer to use Emacs</span> <span class="audio-time caption" data-speaker="Amin" data-start="318.120000" data-stop="318.879000">if I can.</span> <span class="audio-time caption" data-speaker="Amin" data-start="318.880000" data-stop="322.159000">So I want my config to be fairly self-contained so I</span> <span class="audio-time caption" data-speaker="Amin" data-start="322.160000" data-stop="325.599000">can easily either git clone or rsync it over.</span> <span class="audio-time caption" data-speaker="Amin" data-start="325.600000" data-stop="327.399000">Yeah.</span> <span class="audio-time caption" data-speaker="Amin" data-start="327.400000" data-stop="332.279000">To keep it simple, I was using package.el for a while</span> <span class="audio-time caption" data-speaker="Amin" data-start="332.280000" data-stop="336.479000">for installing and managing my packages, which I don't</span> <span class="audio-time caption" data-speaker="Amin" data-start="336.480000" data-stop="338.879000">keep in my configs repository.</span> <span class="audio-time caption" data-speaker="Amin" data-start="338.880000" data-stop="343.239000">But then I decided to switch over to very manual</span> <span class="audio-time caption" data-speaker="Amin" data-start="343.240000" data-stop="346.759000">package management with the awesome new feature</span> <span class="audio-time caption" data-speaker="Amin" data-start="346.760000" data-stop="350.399000">user-lisp-directory of the next upcoming Emacs release,</span> <span class="audio-time caption" data-speaker="Amin" data-start="350.400000" data-stop="352.999000">which basically you can give it a subdirectory in your</span> <span class="audio-time caption" data-speaker="Amin" data-start="353.000000" data-stop="356.919000">~/.emacs.d or ~/.config/emacs.</span> <span class="audio-time caption" data-speaker="Amin" data-start="356.920000" data-stop="359.599000">And then it'll go through all the Emacs Lisp files</span> <span class="audio-time caption" data-speaker="Amin" data-start="359.600000" data-stop="361.519000">recursively, byte compile them, native compile them,</span> <span class="audio-time caption" data-speaker="Amin" data-start="361.520000" data-stop="363.719000">all that good stuff, and add them to the load-path.</span> <span class="audio-time caption" data-speaker="Amin" data-start="363.720000" data-stop="366.559000">And for people who are using existing or older</span> <span class="audio-time caption" data-speaker="Amin" data-start="366.560000" data-stop="371.039000">releases of Emacs, there's also site-lisp by Philip</span> <span class="audio-time caption" data-speaker="Amin" data-start="371.040000" data-stop="373.959000">Kaludercic, which is kind of the…</span> <span class="audio-time caption" data-speaker="Amin" data-start="373.960000" data-stop="377.199000">I guess first implementation of what later became</span> <span class="audio-time caption" data-speaker="Amin" data-start="377.200000" data-stop="379.079000">User Lisp and built into Emacs.</span> <span class="audio-time caption" data-speaker="Amin" data-start="379.080000" data-stop="382.559000">So you can make it conditional and fall back to</span> <span class="audio-time caption" data-speaker="Amin" data-start="382.560000" data-stop="387.159000">site-lisp if you want to be able to use User Lisp on</span> <span class="audio-time caption" data-speaker="Amin" data-start="387.160000" data-stop="389.959000">older Emacs but still have your configuration be</span> <span class="audio-time caption" data-speaker="Amin" data-start="389.960000" data-stop="390.919000">usable.</span> <span class="audio-time caption" data-speaker="Amin" data-start="390.920000" data-stop="392.439000">Yeah, anyway.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="392.000000">6:32</span> <strong>Organizing configuration into modules</strong></div><p></p><span class="audio-time caption" data-speaker="Amin" data-start="392.440000" data-stop="395.239000"><strong class="speaker-name">Amin:</strong> So I've experimented with like a couple different ways</span> <span class="audio-time caption" data-speaker="Amin" data-start="395.240000" data-stop="397.319000">of managing my configurations like single giant init</span> <span class="audio-time caption" data-speaker="Amin" data-start="397.320000" data-stop="400.199000">file of like four or five thousand lines which I know</span> <span class="audio-time caption" data-speaker="Amin" data-start="400.200000" data-stop="403.199000">is actually not very large by comparison to I think</span> <span class="audio-time caption" data-speaker="Amin" data-start="403.200000" data-stop="407.239000">like someone like Sacha's configuration and also like</span> <span class="audio-time caption" data-speaker="Amin" data-start="407.240000" data-stop="410.319000">You know, split into multiple different files, which</span> <span class="audio-time caption" data-speaker="Amin" data-start="410.320000" data-stop="411.239000">has its own benefits.</span> <span class="audio-time caption" data-speaker="Amin" data-start="411.240000" data-stop="413.879000">And I've kind of actually converged to the approach</span> <span class="audio-time caption" data-speaker="Amin" data-start="413.880000" data-stop="415.159000">that Prot uses.</span> <span class="audio-time caption" data-speaker="Amin" data-start="415.160000" data-stop="419.359000">If you actually take a look at my configuration file,</span> <span class="audio-time caption" data-speaker="Amin" data-start="419.360000" data-stop="422.239000">you see I've drawn a lot of inspiration from Prot</span> <span class="audio-time caption" data-speaker="Amin" data-start="422.240000" data-stop="422.839000">switches.</span> <span class="audio-time caption" data-speaker="Amin" data-start="422.840000" data-stop="426.839000">Having a literate single file configuration, which</span> <span class="audio-time caption" data-speaker="Amin" data-start="426.840000" data-stop="430.319000">then all of the Emacs Lisp source blocks get tangled</span> <span class="audio-time caption" data-speaker="Amin" data-start="430.320000" data-stop="431.599000">to individual files.</span> <span class="audio-time caption" data-speaker="Amin" data-start="431.600000" data-stop="435.719000">So I can maintain a single source of truth and edit it</span> <span class="audio-time caption" data-speaker="Amin" data-start="435.720000" data-stop="438.799000">all in one place, but then also easily be able to</span> <span class="audio-time caption" data-speaker="Amin" data-start="438.800000" data-stop="441.559000">share individual pieces to people if they want.</span> <span class="audio-time caption" data-speaker="Amin" data-start="441.560000" data-stop="443.879000">So yeah, that's kind of the general approach.</span> <span class="audio-time caption" data-speaker="Amin" data-start="443.880000" data-stop="446.779000">And I can dive right in.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="446.780000" data-stop="448.759000"><strong class="speaker-name">Sacha:</strong>  Yeah, that's definitely the structure that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="448.760000" data-stop="450.999000">I've also stolen from Prot.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="451.000000" data-stop="452.159000">And I like the way that you're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="452.160000" data-stop="456.759000">Your heading names are all long and descriptive, and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="456.760000" data-stop="459.159000">you've got everything broken down in detail.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="459.160000" data-stop="462.839000">So yeah, go ahead and walk us through it, please.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="462.840000" data-stop="464.679000"><strong class="speaker-name">Amin:</strong>  Yeah, sure.</span> <span class="audio-time caption" data-speaker="Amin" data-start="464.680000" data-stop="465.039000">Let's see.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="465.000000">7:45</span> <strong>early-init
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0014.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0014.jpg" alt="image from video 00:08:00.067" data-time="00:08:00.067"></a><span class="audio-time caption" data-speaker="Amin" data-start="465.040000" data-stop="469.159000"><strong class="speaker-name">Amin:</strong> So that's a brief introduction, and then I have an</span> <span class="audio-time caption" data-speaker="Amin" data-start="469.160000" data-stop="471.879000">early init section for doing the early init file.</span> <span class="audio-time caption" data-speaker="Amin" data-start="471.880000" data-stop="474.319000">There's a couple of subheadings here.</span> <span class="audio-time caption" data-speaker="Amin" data-start="474.320000" data-stop="476.559000">Actually, let me enlarge the font size a little bit to</span> <span class="audio-time caption" data-speaker="Amin" data-start="476.560000" data-stop="477.919000">make it more legible.</span> <span class="audio-time caption" data-speaker="Amin" data-start="477.920000" data-stop="479.199000">OK, great.</span> <span class="audio-time caption" data-speaker="Amin" data-start="479.200000" data-stop="483.279000">I do a couple of things here like disabling package at</span> <span class="audio-time caption" data-speaker="Amin" data-start="483.280000" data-stop="485.999000">startup because I don't use package as I mentioned.</span> <span class="audio-time caption" data-speaker="Amin" data-start="486.000000" data-stop="490.559000">I manually install and update my packages as git</span> <span class="audio-time caption" data-speaker="Amin" data-start="490.560000" data-stop="494.559000">submodules in my configurations repository.</span> <p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0015.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0015.jpg" alt="image from video 00:08:15.567" data-time="00:08:15.567"></a><span class="audio-time caption" data-speaker="Amin" data-start="494.560000" data-stop="498.039000"><strong class="speaker-name">Amin:</strong> I set load-prefer-newer to t to make sure that I</span> <span class="audio-time caption" data-speaker="Amin" data-start="498.040000" data-stop="500.199000">never load any stale code.</span> <span class="audio-time caption" data-speaker="Amin" data-start="500.200000" data-stop="503.759000">For example, I might edit some Emacs Lisp file by hand</span> <span class="audio-time caption" data-speaker="Amin" data-start="503.760000" data-stop="506.039000">and forget to byte compile or native compile it.</span> <span class="audio-time caption" data-speaker="Amin" data-start="506.040000" data-stop="509.159000">And this tells Emacs to basically just use the version</span> <span class="audio-time caption" data-speaker="Amin" data-start="509.160000" data-stop="511.679000">of these three variants that's the most recent.</span> <span class="audio-time caption" data-speaker="Amin" data-start="511.680000" data-stop="514.639000">Yeah.</span> <span class="audio-time caption" data-speaker="Amin" data-start="514.640000" data-stop="515.679000">Nothing super fancy here.</span> <p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0016.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0016.jpg" alt="image from video 00:08:35.700" data-time="00:08:35.700"></a><span class="audio-time caption" data-speaker="Amin" data-start="515.680000" data-stop="518.039000"><strong class="speaker-name">Amin:</strong> I turn off a couple of things that I find a little bit</span> <span class="audio-time caption" data-speaker="Amin" data-start="518.040000" data-stop="520.359000">distracting, like the menu bar or toolbar.</span> <span class="audio-time caption" data-speaker="Amin" data-start="520.360000" data-stop="523.359000">Although I do say here that for people who are new to</span> <span class="audio-time caption" data-speaker="Amin" data-start="523.360000" data-stop="525.479000">Emacs, they're actually super helpful.</span> <span class="audio-time caption" data-speaker="Amin" data-start="525.480000" data-stop="528.399000">Sure, it's a little bit of visual clutter, but in the</span> <span class="audio-time caption" data-speaker="Amin" data-start="528.400000" data-stop="531.599000">beginning, it's really, really helpful to help you</span> <span class="audio-time caption" data-speaker="Amin" data-start="531.600000" data-stop="534.639000">orient yourself of what mode you're in, what tools do</span> <span class="audio-time caption" data-speaker="Amin" data-start="534.640000" data-stop="537.359000">you have available in your disposal.</span> <span class="audio-time caption" data-speaker="Amin" data-start="537.360000" data-stop="539.599000">And even someone who's been using Emacs for more than</span> <span class="audio-time caption" data-speaker="Amin" data-start="539.600000" data-stop="542.119000">10 years, I also use it sometimes when I'm like…</span> <span class="audio-time caption" data-speaker="Amin" data-start="542.120000" data-stop="544.119000">just starting to use a new mode.</span> <span class="audio-time caption" data-speaker="Amin" data-start="544.120000" data-stop="546.179000">So yeah, good stuff.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="546.000000">9:06</span> <strong>ring-bell-function</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="546.180000" data-stop="549.479000"><strong class="speaker-name">Sacha:</strong>  I was very amused by the comment on the…</span> <span class="audio-time caption" data-speaker="Sacha" data-start="549.480000" data-stop="551.600000">"I don't like getting jumpscared out of my chair."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="551.601000" data-stop="555.239000">You turned off the bell.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="555.240000" data-stop="557.080000"><strong class="speaker-name">Amin:</strong>  Yeah, because that actually used to happen</span> <span class="audio-time caption" data-speaker="Amin" data-start="557.120000" data-stop="559.039000">when I first started using Emacs.</span> <span class="audio-time caption" data-speaker="Amin" data-start="559.040000" data-stop="561.679000">Like when I would, I don't know, I don't even remember</span> <span class="audio-time caption" data-speaker="Amin" data-start="561.680000" data-stop="563.639000">when it bells or rings, but</span> <span class="audio-time caption" data-speaker="Amin" data-start="563.640000" data-stop="568.359000">Maybe if you like quit like with C-g or like try to</span> <span class="audio-time caption" data-speaker="Amin" data-start="568.360000" data-stop="571.999000">backspace into like delete where there's no more</span> <span class="audio-time caption" data-speaker="Amin" data-start="572.000000" data-stop="574.959000">characters to delete so it rings a bell and it's very</span> <span class="audio-time caption" data-speaker="Amin" data-start="574.960000" data-stop="579.999000">like can be jarring so yeah I turn that off.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="580.000000">9:40</span> <strong>performance optimizations
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0017.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0017.jpg" alt="image from video 00:09:56.367" data-time="00:09:56.367"></a><span class="audio-time caption" data-speaker="Sacha" data-start="580.000000" data-stop="581.759000"><strong class="speaker-name">Sacha:</strong>  Yeah, and then you've got a whole bunch of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="581.760000" data-stop="584.719000">things where you set some variables to nil temporarily</span> <span class="audio-time caption" data-speaker="Sacha" data-start="584.720000" data-stop="587.199000">to make it faster, so that's in your startup in garbage</span> <span class="audio-time caption" data-speaker="Sacha" data-start="587.200000" data-stop="588.839000">collection.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="588.840000" data-stop="590.159000"><strong class="speaker-name">Amin:</strong>  Exactly.</span> <span class="audio-time caption" data-speaker="Amin" data-start="590.160000" data-stop="593.359000">Empirically, there is no hard and fast science</span> <span class="audio-time caption" data-speaker="Amin" data-start="593.360000" data-stop="594.639000">behind this.</span> <span class="audio-time caption" data-speaker="Amin" data-start="594.640000" data-stop="596.359000">I experimented over the years.</span> <span class="audio-time caption" data-speaker="Amin" data-start="596.360000" data-stop="600.399000">I'm pretty sure I believe the default, for example,</span> <span class="audio-time caption" data-speaker="Amin" data-start="600.400000" data-stop="602.839000">the garbage collection cons threshold is about eight</span> <span class="audio-time caption" data-speaker="Amin" data-start="602.840000" data-stop="603.839000">megabytes.</span> <span class="audio-time caption" data-speaker="Amin" data-start="603.840000" data-stop="606.559000">I tried increasing that a little bit to see how much</span> <span class="audio-time caption" data-speaker="Amin" data-start="606.560000" data-stop="610.159000">If I increase it to what point</span> <span class="audio-time caption" data-speaker="Amin" data-start="610.160000" data-stop="612.599000">will it make my startup faster?</span> <span class="audio-time caption" data-speaker="Amin" data-start="612.600000" data-stop="616.519000">And I found this 30 megabytes or mibibytes to be</span> <span class="audio-time caption" data-speaker="Amin" data-start="616.520000" data-stop="617.119000">kind of a sweet spot.</span> <span class="audio-time caption" data-speaker="Amin" data-start="617.120000" data-stop="618.719000">So I bump that up.</span> <span class="audio-time caption" data-speaker="Amin" data-start="618.720000" data-stop="621.839000">And then after Emacs has finished initializing, in the</span> <span class="audio-time caption" data-speaker="Amin" data-start="621.840000" data-stop="625.299000">after-init-hook, I just restore the defaults.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="625.000000">10:25</span> <strong>user-lisp
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0018.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0018.jpg" alt="image from video 00:10:51.900" data-time="00:10:51.900"></a><span class="audio-time caption" data-speaker="Amin" data-start="625.300000" data-stop="627.500000"><strong class="speaker-name">Amin:</strong> And then, yeah, this is the bit with</span> <span class="audio-time caption" data-speaker="Amin" data-start="627.501000" data-stop="629.599000">the user-lisp-directory that I was talking about.</span> <span class="audio-time caption" data-speaker="Amin" data-start="629.600000" data-stop="631.519000">Awesome stuff.</span> <span class="audio-time caption" data-speaker="Amin" data-start="631.520000" data-stop="634.639000">So you can basically designate a directory.</span> <span class="audio-time caption" data-speaker="Amin" data-start="634.640000" data-stop="636.461000">For example, in my configuration,</span> <span class="audio-time caption" data-speaker="Amin" data-start="636.462000" data-stop="637.799000">it's just a lisp directory.</span> <span class="audio-time caption" data-speaker="Amin" data-start="637.800000" data-stop="641.485000">And then on startup, Emacs will go through and</span> <span class="audio-time caption" data-speaker="Amin" data-start="641.486000" data-stop="644.919000">byte-compile, native-compile if necessary, and then add all</span> <span class="audio-time caption" data-speaker="Amin" data-start="644.920000" data-stop="647.159000">of that stuff to the load-path automatically.</span> <span class="audio-time caption" data-speaker="Amin" data-start="647.160000" data-stop="647.999000">So you get that.</span> <span class="audio-time caption" data-speaker="Amin" data-start="648.000000" data-stop="651.119000">Yeah, and then this is the bit about site-lisp that I</span> <span class="audio-time caption" data-speaker="Amin" data-start="651.120000" data-stop="651.879000">was talking about.</span> <span class="audio-time caption" data-speaker="Amin" data-start="651.880000" data-stop="653.879000">So if you want to use user-lisp, but you're still</span> <span class="audio-time caption" data-speaker="Amin" data-start="653.880000" data-stop="657.999000">using older Emacs versions that you maintain, you need</span> <span class="audio-time caption" data-speaker="Amin" data-start="658.000000" data-stop="660.719000">to maintain backward compatibility in your config.</span> <span class="audio-time caption" data-speaker="Amin" data-start="660.720000" data-stop="662.359000">This is how you do it, for example.</span> <span class="audio-time caption" data-speaker="Amin" data-start="662.360000" data-stop="666.239000">So you just yeah, add it to load-path, require it and</span> <span class="audio-time caption" data-speaker="Amin" data-start="666.240000" data-stop="668.079000">then call prepare-user-lisp.</span> <span class="audio-time caption" data-speaker="Amin" data-start="668.080000" data-stop="674.219000">That's about it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="674.000000">11:14</span> <strong>ignoring byte compilation warnings</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="674.220000" data-stop="676.279000"><strong class="speaker-name">Sacha:</strong>  I'm picking up that tip about using the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="676.280000" data-stop="676.999000">ignore directories.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="677.000000" data-stop="679.679000">I'm getting by with just ignoring all of the byte</span> <span class="audio-time caption" data-speaker="Sacha" data-start="679.680000" data-stop="682.519000">compilation output, but it would be nice to just say,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="682.520000" data-stop="683.799000">you know, that stuff is test.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="683.800000" data-stop="686.639000">I don't need to worry about it.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="686.640000" data-stop="689.879000"><strong class="speaker-name">Amin:</strong>  Right, right. Thanks. Yeah, I was also doing</span> <span class="audio-time caption" data-speaker="Amin" data-start="689.880000" data-stop="690.519000">that.</span> <span class="audio-time caption" data-speaker="Amin" data-start="690.520000" data-stop="693.559000">I actually have it as a comment to suppress</span> <span class="audio-time caption" data-speaker="Amin" data-start="693.560000" data-stop="696.999000">warning types, like byte compilation, but I was…</span> <span class="audio-time caption" data-speaker="Amin" data-start="697.000000" data-stop="699.159000">I plan on working on some packages,</span> <span class="audio-time caption" data-speaker="Amin" data-start="699.160000" data-stop="700.199000">whether my own or others,</span> <span class="audio-time caption" data-speaker="Amin" data-start="700.200000" data-stop="702.079000">and it would still be helpful to get those warnings,</span> <span class="audio-time caption" data-speaker="Amin" data-start="702.080000" data-stop="704.399000">so I keep them enabled. It's still a bit annoying.</span> <span class="audio-time caption" data-speaker="Amin" data-start="704.400000" data-stop="706.279000">I still get some of them when I launch emacs</span> <span class="audio-time caption" data-speaker="Amin" data-start="706.280000" data-stop="710.479000">but I don't restart or launch emacs as frequently</span> <span class="audio-time caption" data-speaker="Amin" data-start="710.480000" data-stop="715.239000">so it's pretty bearable.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="715.000000">11:55</span> <strong>init-file-debug = &#45;&#45;debug-init
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0019.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0019.jpg" alt="image from video 00:12:00.400" data-time="00:12:00.400"></a><span class="audio-time caption" data-speaker="Amin" data-start="715.240000" data-stop="718.319000"><strong class="speaker-name">Amin:</strong> Yeah, and then I have the main init file.</span> <span class="audio-time caption" data-speaker="Amin" data-start="718.320000" data-stop="720.399000">And there's not much in it.</span> <span class="audio-time caption" data-speaker="Amin" data-start="720.400000" data-stop="725.039000">It's just the debug-on-error and debug-on-quit.</span> <span class="audio-time caption" data-speaker="Amin" data-start="725.040000" data-stop="728.879000">So the debug-on-error thing, I set it to the value of</span> <span class="audio-time caption" data-speaker="Amin" data-start="728.880000" data-stop="729.999000">init-file-debug.</span> <span class="audio-time caption" data-speaker="Amin" data-start="730.000000" data-stop="733.519000">And if you look at that, the help for this variable,</span> <span class="audio-time caption" data-speaker="Amin" data-start="733.520000" data-stop="738.919000">basically if you pass or launch Emacs with</span> <span class="audio-time caption" data-speaker="Amin" data-start="738.920000" data-stop="743.039000">&#45;&#45;debug-init, this variable will be true.</span> <span class="audio-time caption" data-speaker="Amin" data-start="743.040000" data-stop="746.279000">So yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="746.280000" data-stop="746.879000"><strong class="speaker-name">Sacha:</strong>  I did not know that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="746.880000" data-stop="748.933000">Cool.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="748.934000" data-stop="750.079000"><strong class="speaker-name">Amin:</strong>  Yeah, it's pretty helpful.</span> <span class="audio-time caption" data-speaker="Amin" data-start="750.080000" data-stop="752.879000">I think, if I'm not mistaken, I took this from</span> <span class="audio-time caption" data-speaker="Amin" data-start="752.880000" data-stop="755.559000">John Wiegley's dotemacs, but I can't remember for sure.</span> <span class="audio-time caption" data-speaker="Amin" data-start="755.560000" data-stop="756.239000">It's been years.</span> <span class="audio-time caption" data-speaker="Amin" data-start="756.240000" data-stop="759.359000">Yeah, it's pretty nice.</span> <span class="audio-time caption" data-speaker="Amin" data-start="759.360000" data-stop="764.319000">And then here, I just set my name and email address.</span> <span class="audio-time caption" data-speaker="Amin" data-start="764.320000" data-stop="769.679000">And very early I set a custom-file to keep all of that</span> <span class="audio-time caption" data-speaker="Amin" data-start="769.680000" data-stop="771.959000">stuff separate from my .emacs.</span> <span class="audio-time caption" data-speaker="Amin" data-start="771.960000" data-stop="773.199000">I don't want it mixing in.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="773.000000">12:53</span> <strong>Core
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0020.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0020.jpg" alt="image from video 00:13:03.467" data-time="00:13:03.467"></a><span class="audio-time caption" data-speaker="Amin" data-start="773.200000" data-stop="776.359000"><strong class="speaker-name">Amin:</strong> And then pretty much the only other thing that's in my</span> <span class="audio-time caption" data-speaker="Amin" data-start="776.360000" data-stop="779.159000">main init file is just to require and load these</span> <span class="audio-time caption" data-speaker="Amin" data-start="779.160000" data-stop="783.439000">different modules or packages of my configuration.</span> <span class="audio-time caption" data-speaker="Amin" data-start="783.440000" data-stop="786.959000">I have these as actual packages or as actual features.</span> <span class="audio-time caption" data-speaker="Amin" data-start="786.960000" data-stop="788.599000">They provide themselves.</span> <span class="audio-time caption" data-speaker="Amin" data-start="788.600000" data-stop="790.999000">And that's just something that I've found</span> <span class="audio-time caption" data-speaker="Amin" data-start="791.000000" data-stop="792.519000">straightforward enough to do.</span> <span class="audio-time caption" data-speaker="Amin" data-start="792.520000" data-stop="796.879000">I know, for example, Prot uses a dual approach.</span> <span class="audio-time caption" data-speaker="Amin" data-start="796.880000" data-stop="800.519000">He has some of his configuration that's more readily</span> <span class="audio-time caption" data-speaker="Amin" data-start="800.520000" data-stop="802.879000">usable, available as actual packages.</span> <span class="audio-time caption" data-speaker="Amin" data-start="802.880000" data-stop="806.719000">And then the other ones, it's just Emacs Lisp code.</span> <span class="audio-time caption" data-speaker="Amin" data-start="806.720000" data-stop="808.119000">It's not actual packages.</span> <span class="audio-time caption" data-speaker="Amin" data-start="808.120000" data-stop="811.599000">But for me, I just keep it simple.</span> <span class="audio-time caption" data-speaker="Amin" data-start="811.600000" data-stop="816.779000">Everything as packages and that's about that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="816.780000" data-stop="817.479000"><strong class="speaker-name">Sacha:</strong>  Fantastic.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="817.480000" data-stop="822.479000">Let's dive into some of those configuration modules.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="822.480000" data-stop="824.359000"><strong class="speaker-name">Amin:</strong>  Sure, let's see.</span> <span class="audio-time caption" data-speaker="Amin" data-start="824.360000" data-stop="828.119000">Yeah, so this there's this like core thing which is</span> <span class="audio-time caption" data-speaker="Amin" data-start="828.120000" data-stop="831.679000">kind of included gets included in all of my other</span> <span class="audio-time caption" data-speaker="Amin" data-start="831.680000" data-stop="833.579000">files.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="833.000000">13:53</span> <strong>no longer using bandali-configure; scoping errors, timing execution
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0021.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0021.jpg" alt="image from video 00:14:27.533" data-time="00:14:27.533"></a><span class="audio-time caption" data-speaker="Amin" data-start="833.580000" data-stop="837.199000"><strong class="speaker-name">Amin:</strong> I wrote a bandali-configure macro</span> <span class="audio-time caption" data-speaker="Amin" data-start="837.200000" data-stop="840.359000">shamelessly based on prot-emacs-configure which</span> <span class="audio-time caption" data-speaker="Amin" data-start="840.360000" data-stop="845.079000">is what Prot uses and it basically is a way of kind of</span> <span class="audio-time caption" data-speaker="Amin" data-start="845.080000" data-stop="847.919000">similar to use-package for like wrapping a bunch of</span> <span class="audio-time caption" data-speaker="Amin" data-start="847.920000" data-stop="851.399000">relevant like Emacs Lisp code all together.</span> <span class="audio-time caption" data-speaker="Amin" data-start="851.400000" data-stop="857.359000">It has the benefit, if you use it, if there is an</span> <span class="audio-time caption" data-speaker="Amin" data-start="857.360000" data-stop="862.279000">error in that block or in the body basically, then it</span> <span class="audio-time caption" data-speaker="Amin" data-start="862.280000" data-stop="863.559000">won't crash everything.</span> <span class="audio-time caption" data-speaker="Amin" data-start="863.560000" data-stop="866.959000">That body will just get ignored and we display an</span> <span class="audio-time caption" data-speaker="Amin" data-start="866.960000" data-stop="867.519000">error.</span> <span class="audio-time caption" data-speaker="Amin" data-start="867.520000" data-stop="870.799000">And that's also the main reason that Prot uses it.</span> <span class="audio-time caption" data-speaker="Amin" data-start="870.800000" data-stop="875.439000">The one thing that I added extra to mine, which I took</span> <span class="audio-time caption" data-speaker="Amin" data-start="875.440000" data-stop="880.439000">with inspiration from Eshel Yaron's esy/init-step,</span> <span class="audio-time caption" data-speaker="Amin" data-start="880.440000" data-stop="887.879000">is to wrap it up in basically time the execution</span> <span class="audio-time caption" data-speaker="Amin" data-start="887.880000" data-stop="891.119000">of each of these blocks, which can be pretty helpful</span> <span class="audio-time caption" data-speaker="Amin" data-start="891.120000" data-stop="894.919000">to help you see, okay, which part of my configuration</span> <span class="audio-time caption" data-speaker="Amin" data-start="894.920000" data-stop="896.559000">is particularly slow.</span> <span class="audio-time caption" data-speaker="Amin" data-start="896.560000" data-stop="899.519000">Usage examples.</span> <span class="audio-time caption" data-speaker="Amin" data-start="899.520000" data-stop="900.799000">I just have it here.</span> <span class="audio-time caption" data-speaker="Amin" data-start="900.800000" data-stop="904.799000">You can either basically pass it like a symbol like</span> <span class="audio-time caption" data-speaker="Amin" data-start="904.800000" data-stop="908.319000">thing or you can also pass in a string as the first</span> <span class="audio-time caption" data-speaker="Amin" data-start="908.320000" data-stop="909.239000">argument.</span> <span class="audio-time caption" data-speaker="Amin" data-start="909.240000" data-stop="912.479000">And this is what will be displayed when you display a</span> <span class="audio-time caption" data-speaker="Amin" data-start="912.480000" data-stop="916.919000">list of the evaluation times for all of these</span> <span class="audio-time caption" data-speaker="Amin" data-start="916.920000" data-stop="918.979000">blocks in your configuration.</span> <p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0022.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0022.jpg" alt="image from video 00:15:22.133" data-time="00:15:22.133"></a><span class="audio-time caption" data-speaker="Amin" data-start="918.980000" data-stop="922.119000"><strong class="speaker-name">Amin:</strong> Yeah, and then I have a neat little function</span> <span class="audio-time caption" data-speaker="Amin" data-start="922.120000" data-stop="924.719000">here like bandali-configure-report-times</span> <span class="audio-time caption" data-speaker="Amin" data-start="924.720000" data-stop="928.200000">that will report these times,</span> <span class="audio-time caption" data-speaker="Amin" data-start="928.201000" data-stop="929.600000">whether in the order that it's</span> <span class="audio-time caption" data-speaker="Amin" data-start="929.601000" data-stop="931.367000">encountered them, or you can have it</span> <span class="audio-time caption" data-speaker="Amin" data-start="931.368000" data-stop="933.600000">sort by fastest to slowest,</span> <span class="audio-time caption" data-speaker="Amin" data-start="933.601000" data-stop="936.399000">slowest to fastest, blah blah blah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="936.400000" data-stop="937.559000"><strong class="speaker-name">Sacha:</strong>  You mentioned you're no longer using this.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="937.560000" data-stop="941.439000">Is it because you wanted it to be easier to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="941.440000" data-stop="943.119000">copy and paste your code?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="943.120000" data-stop="945.639000">What got you to shift back to the regular vanilla type</span> <span class="audio-time caption" data-speaker="Sacha" data-start="945.640000" data-stop="947.640000">of configuration?</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="947.680000" data-stop="953.279000"><strong class="speaker-name">Amin:</strong>  Right, as neat as it is, I didn't find it</span> <span class="audio-time caption" data-speaker="Amin" data-start="953.280000" data-stop="956.959000">super useful. For one thing, because I don't add or</span> <span class="audio-time caption" data-speaker="Amin" data-start="956.960000" data-stop="960.999000">remove a ton of stuff to my Emacs configuration</span> <span class="audio-time caption" data-speaker="Amin" data-start="961.000000" data-stop="964.759000">regularly, so if there is an error, it wouldn't cause</span> <span class="audio-time caption" data-speaker="Amin" data-start="964.760000" data-stop="966.799000">an issue for the rest of my configuration. I didn't</span> <span class="audio-time caption" data-speaker="Amin" data-start="966.800000" data-stop="971.199000">really find that very useful.</span> <span class="audio-time caption" data-speaker="Amin" data-start="971.200000" data-stop="974.279000">And then my other potential concern is that the way I</span> <span class="audio-time caption" data-speaker="Amin" data-start="974.280000" data-stop="978.159000">was structuring things, I would put all of the</span> <span class="audio-time caption" data-speaker="Amin" data-start="978.160000" data-stop="981.079000">configuration, let's say for Gnus, in one of these</span> <span class="audio-time caption" data-speaker="Amin" data-start="981.080000" data-stop="981.799000">blocks.</span> <span class="audio-time caption" data-speaker="Amin" data-start="981.800000" data-stop="985.759000">But I wanted to be able to break that down into, for</span> <span class="audio-time caption" data-speaker="Amin" data-start="985.760000" data-stop="988.279000">example, Org Mode sections more easily.</span> <span class="audio-time caption" data-speaker="Amin" data-start="988.280000" data-stop="992.759000">So far, I just decided to not use it.</span> <span class="audio-time caption" data-speaker="Amin" data-start="992.760000" data-stop="995.119000">I know I could technically break those down into</span> <span class="audio-time caption" data-speaker="Amin" data-start="995.120000" data-stop="998.559000">smaller blocks, but I haven't done that yet.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="998.560000" data-stop="1001.319000"><strong class="speaker-name">Sacha:</strong>  Ihor says, this configure macro looks a lot</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1001.320000" data-stop="1003.599000">like good old use-package, which you're not even using</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1003.600000" data-stop="1004.919000">in the rest of your config.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1004.920000" data-stop="1007.519000">And I hear you about wanting to be able to split</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1007.520000" data-stop="1010.639000">things into smaller blocks with more explanations in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1010.640000" data-stop="1011.279000">between them.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1011.280000" data-stop="1013.719000">So in my config, yeah, sure, I've got the use-package</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1013.720000" data-stop="1015.799000">there to do the ensure and all that stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1015.800000" data-stop="1019.279000">But I also have with-eval-after-load because I still</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1019.280000" data-stop="1021.719000">want, you know, the links and the screenshots in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1021.720000" data-stop="1022.759000">between.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1022.000000">17:02</span> <strong>Why not use use-package</strong></div><p></p><span class="audio-time caption" data-speaker="Amin" data-start="1022.760000" data-stop="1026.728000"><strong class="speaker-name">Amin:</strong>  Right. Yeah, exactly. use-package is awesome.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1026.729000" data-stop="1028.791000">I have used that in the past,</span> <span class="audio-time caption" data-speaker="Amin" data-start="1028.792000" data-stop="1031.479000">especially when I was using the straight.el</span> <span class="audio-time caption" data-speaker="Amin" data-start="1031.480000" data-stop="1035.999000">package manager. It pairs nicely with it. But yeah,</span> <span class="audio-time caption" data-speaker="Amin" data-start="1036.000000" data-stop="1037.999000">since then, I found it a little bit like too magical</span> <span class="audio-time caption" data-speaker="Amin" data-start="1038.000000" data-stop="1041.279000">for my tastes, kind of along the lines of</span> <span class="audio-time caption" data-speaker="Amin" data-start="1041.280000" data-stop="1043.159000">declaring an init file bankruptcy at some point I</span> <span class="audio-time caption" data-speaker="Amin" data-start="1043.160000" data-stop="1044.279000">really wanted to</span> <span class="audio-time caption" data-speaker="Amin" data-start="1044.280000" data-stop="1047.039000">understand every single line that I have in my Emacs</span> <span class="audio-time caption" data-speaker="Amin" data-start="1047.040000" data-stop="1047.839000">configuration.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1047.840000" data-stop="1051.359000">And at the time, I didn't know a whole lot about</span> <span class="audio-time caption" data-speaker="Amin" data-start="1051.360000" data-stop="1053.999000">macros or wasn't very well-versed with them.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1054.000000" data-stop="1056.879000">So I just ditched it in favor of simply using, as you</span> <span class="audio-time caption" data-speaker="Amin" data-start="1056.880000" data-stop="1058.479000">mentioned, with-eval-after-load.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1058.480000" data-stop="1062.359000">And then that causes all that code to be basically</span> <span class="audio-time caption" data-speaker="Amin" data-start="1062.360000" data-stop="1065.279000">delayed, not evaluated immediately, but when that</span> <span class="audio-time caption" data-speaker="Amin" data-start="1065.280000" data-stop="1066.679000">package is loaded.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1066.680000" data-stop="1070.439000">And then as to when to pull that package in, depending</span> <span class="audio-time caption" data-speaker="Amin" data-start="1070.440000" data-stop="1072.879000">on if I want it right from the get-go of my Emacs</span> <span class="audio-time caption" data-speaker="Amin" data-start="1072.880000" data-stop="1074.319000">start, then I would require it.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1074.320000" data-stop="1076.959000">Otherwise, I add this, as you also mentioned earlier,</span> <span class="audio-time caption" data-speaker="Amin" data-start="1076.960000" data-stop="1080.119000">this kind of timer thing where if Emacs is idle for, I</span> <span class="audio-time caption" data-speaker="Amin" data-start="1080.120000" data-stop="1083.559000">don't know, 0.2 seconds or 0.4 seconds, then go ahead</span> <span class="audio-time caption" data-speaker="Amin" data-start="1083.560000" data-stop="1086.279000">and require this package.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1086.280000" data-stop="1087.479000"><strong class="speaker-name">Sacha:</strong>  Ihor has a tip in the chat.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1087.480000" data-stop="1091.479000">Of course, Ihor has an Org way to do this.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1091.480000" data-stop="1094.919000">He uses use-package whatever config and then he has a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1094.920000" data-stop="1097.439000">noweb reference to the Babel blocks.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1097.440000" data-stop="1103.279000">Then he just says :tangle no on the source blocks so</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1103.280000" data-stop="1104.799000">that they don't actually get repeated.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1104.800000" data-stop="1107.479000">Anyway, you can look at it later when you go through.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1107.480000" data-stop="1109.039000">I'll send you the comments or whatever.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1109.040000" data-stop="1111.119000">But show us how you're actually configuring things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1111.120000" data-stop="1117.819000">since you're not using this.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1117.000000">18:37</span> <strong>Defining multiple keybindings
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0023.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0023.jpg" alt="image from video 00:18:55.133" data-time="00:18:55.133"></a><span class="audio-time caption" data-speaker="Amin" data-start="1117.820000" data-stop="1119.067000"><strong class="speaker-name">Amin:</strong>  Then I just have another</span> <span class="audio-time caption" data-speaker="Amin" data-start="1119.068000" data-stop="1122.479000">quick macro thingy here, bandali-define-keys, which</span> <span class="audio-time caption" data-speaker="Amin" data-start="1122.480000" data-stop="1127.759000">wraps around Emacs's define-key. It affords me the</span> <span class="audio-time caption" data-speaker="Amin" data-start="1127.760000" data-stop="1132.799000">convenience of defining multiple key bindings, and</span> <span class="audio-time caption" data-speaker="Amin" data-start="1132.800000" data-stop="1135.119000">Prot's version of this (I think it's</span> <span class="audio-time caption" data-speaker="Amin" data-start="1135.120000" data-stop="1140.239000">prot-emacs-keybind, or something like that) he</span> <span class="audio-time caption" data-speaker="Amin" data-start="1140.240000" data-stop="1145.399000">imposes the limitation that the keys should be valid</span> <span class="audio-time caption" data-speaker="Amin" data-start="1145.400000" data-stop="1148.199000">strings that can be passed to the kbd function,</span> <span class="audio-time caption" data-speaker="Amin" data-start="1148.200000" data-stop="1152.639000">which is very fair and valid, but I wanted to not</span> <span class="audio-time caption" data-speaker="Amin" data-start="1152.640000" data-stop="1155.559000">impose that, to keep the flexibility of using</span> <span class="audio-time caption" data-speaker="Amin" data-start="1155.560000" data-stop="1158.079000">define-key directly.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1158.080000" data-stop="1163.119000">The consequences of that, as we can see, is we can</span> <span class="audio-time caption" data-speaker="Amin" data-start="1163.120000" data-stop="1165.599000">pass in the old representation of key bindings, like</span> <span class="audio-time caption" data-speaker="Amin" data-start="1165.600000" data-stop="1169.839000">the vector or whatever syntax, which Prot's doesn't</span> <span class="audio-time caption" data-speaker="Amin" data-start="1169.840000" data-stop="1172.479000">support by choice, whereas mine does.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1172.480000" data-stop="1175.799000">Let's see.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1175.800000" data-stop="1182.279000">For example, let's look at the bandali-theme.el, which is</span> <span class="audio-time caption" data-speaker="Amin" data-start="1182.280000" data-stop="1182.719000">all about…</span> <span class="audio-time caption" data-speaker="Amin" data-start="1182.720000" data-stop="1185.899000">The appearance, I guess, of Emacs.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1185.000000">19:45</span> <strong>doric-oak uses emphasis instead of colours
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0024.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0024.jpg" alt="image from video 00:19:45.900" data-time="00:19:45.900"></a><span class="audio-time caption" data-speaker="Amin" data-start="1185.900000" data-stop="1188.119000"><strong class="speaker-name">Amin:</strong> Yeah, so I just have a conditional block where, you</span> <span class="audio-time caption" data-speaker="Amin" data-start="1188.120000" data-stop="1190.039000">know, if you're in a graphical environment, I'll just</span> <span class="audio-time caption" data-speaker="Amin" data-start="1190.040000" data-stop="1193.399000">go ahead and load Prot's doric-themes, specifically</span> <span class="audio-time caption" data-speaker="Amin" data-start="1193.400000" data-stop="1195.719000">doric-oak, which is what we're seeing right now.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1195.720000" data-stop="1199.079000">I'm using, it's very beautiful, it's very subtle, and</span> <span class="audio-time caption" data-speaker="Amin" data-start="1199.080000" data-stop="1202.159000">it uses emphasis, bolding and stuff to draw</span> <span class="audio-time caption" data-speaker="Amin" data-start="1202.160000" data-stop="1205.239000">your eye to something instead of using a million</span> <span class="audio-time caption" data-speaker="Amin" data-start="1205.240000" data-stop="1207.439000">different colours, which I find pretty nice.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1207.440000" data-stop="1214.039000">Yeah, and then for example here I set up some fonts.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1214.040000" data-stop="1217.319000">I use this Sahel font for Persian and Arabic</span> <span class="audio-time caption" data-speaker="Amin" data-start="1217.320000" data-stop="1217.759000">text.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1217.760000" data-stop="1223.359000">I set a colour emoji font here and this is like we get</span> <span class="audio-time caption" data-speaker="Amin" data-start="1223.360000" data-stop="1225.479000">a kind of preview of what I do.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1225.480000" data-stop="1228.279000">It's like with-eval-after-load 'faces and then blah</span> <span class="audio-time caption" data-speaker="Amin" data-start="1228.280000" data-stop="1230.139000">blah blah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1230.140000" data-stop="1231.536000"><strong class="speaker-name">Sacha:</strong>  Ihor would like to point out that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1231.537000" data-stop="1233.841000">with-eval-after-load is also a macro</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1233.842000" data-stop="1235.399000">that calls another macro.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1235.400000" data-stop="1239.519000">So I'm just going to mention it because it's there.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1239.520000" data-stop="1241.679000">These are your fonts.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1241.680000" data-stop="1243.879000">This is your theme.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1243.880000" data-stop="1246.799000">This is great because everyone always asks, what theme</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1246.800000" data-stop="1247.279000">is this?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1247.280000" data-stop="1248.159000">What font is this?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1248.160000" data-stop="1249.159000">All right.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1249.000000">20:49</span> <strong>global font scaling instead of the local ones
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0025.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0025.jpg" alt="image from video 00:20:59.967" data-time="00:20:59.967"></a><span class="audio-time caption" data-speaker="Sacha" data-start="1249.160000" data-stop="1252.159000"><strong class="speaker-name">Sacha:</strong> I like your text scaling tweaks that you're just about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1252.160000" data-stop="1256.459000">to go into. You've changed the global mappings.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="1256.460000" data-stop="1256.919000"><strong class="speaker-name">Amin:</strong>  Yeah, yeah, yeah.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1256.920000" data-stop="1258.439000">And I actually took this from Prot as well.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1258.440000" data-stop="1259.959000">And it makes a lot more sense.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1259.960000" data-stop="1263.239000">So by default, this, C-x C-+, -,</span> <span class="audio-time caption" data-speaker="Amin" data-start="1263.240000" data-stop="1265.759000">blah, blah, blah, it only scales the text</span> <span class="audio-time caption" data-speaker="Amin" data-start="1265.760000" data-stop="1267.679000">for the current buffer only.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1267.680000" data-stop="1272.839000">But in newer versions of Emacs, in Emacs 29, they also</span> <span class="audio-time caption" data-speaker="Amin" data-start="1272.840000" data-stop="1276.115000">added commands to adjust this globally, including</span> <span class="audio-time caption" data-speaker="Amin" data-start="1276.116000" data-stop="1277.866000">the mode line and all that stuff,</span> <span class="audio-time caption" data-speaker="Amin" data-start="1277.867000" data-stop="1279.359000">which is usually what I want,</span> <span class="audio-time caption" data-speaker="Amin" data-start="1279.360000" data-stop="1281.719000">for example, in this presentation or when I'm sharing</span> <span class="audio-time caption" data-speaker="Amin" data-start="1281.720000" data-stop="1282.559000">my screen right now.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1282.560000" data-stop="1284.479000">It scales everything up globally.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1284.480000" data-stop="1288.959000">So yeah, I just swapped these to be the default, and</span> <span class="audio-time caption" data-speaker="Amin" data-start="1288.960000" data-stop="1292.119000">then I add keybinds for the just local variants in</span> <span class="audio-time caption" data-speaker="Amin" data-start="1292.120000" data-stop="1296.359000">case I need to use that.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1296.360000" data-stop="1297.119000">Yep.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1297.000000">21:37</span> <strong>display-fill-column-indicator</strong></div><p></p><span class="audio-time caption" data-speaker="Amin" data-start="1297.120000" data-stop="1299.239000"><strong class="speaker-name">Amin:</strong> And then here I have display-fill-column-indicator.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1299.240000" data-stop="1302.559000">I don't know, maybe this is just me, but sometimes I'm</span> <span class="audio-time caption" data-speaker="Amin" data-start="1302.560000" data-stop="1305.519000">kind of OCD about keeping my text lined up at exactly,</span> <span class="audio-time caption" data-speaker="Amin" data-start="1305.520000" data-stop="1309.079000">for example, the 70 characters column.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1309.080000" data-stop="1312.479000">I care a lot about that, especially if I'm writing</span> <span class="audio-time caption" data-speaker="Amin" data-start="1312.480000" data-stop="1316.479000">code or text that I want to also visually look nice.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1316.480000" data-stop="1317.999000">And I enable this.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1318.000000" data-stop="1322.399000">And let's see, I enable it for prog-mode.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1322.400000" data-stop="1328.439000">So yeah, I guess if I, for example, do this…</span> <span class="audio-time caption" data-speaker="Amin" data-start="1328.440000" data-stop="1331.159000">This little thin line that we see here, that's the</span> <span class="audio-time caption" data-speaker="Amin" data-start="1331.160000" data-stop="1333.559000">display filler column indicator.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1333.560000" data-stop="1337.159000">I used to have it globally enabled, but then I found</span> <span class="audio-time caption" data-speaker="Amin" data-start="1337.160000" data-stop="1340.239000">that a bit too much, so I just enable it with a hook</span> <span class="audio-time caption" data-speaker="Amin" data-start="1340.240000" data-stop="1342.759000">in the modes that I want.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1342.760000" data-stop="1345.033000"><strong class="speaker-name">Sacha:</strong>  Yeah, and the theme makes it very subtle.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1345.034000" data-stop="1346.967000">It's just there as a reminder,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1346.968000" data-stop="1347.900000">don't go beyond this line.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1347.901000" data-stop="1351.367000">You can if you really want to, but just try not to.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="1351.368000" data-stop="1359.579000"><strong class="speaker-name">Amin:</strong>  Yeah, exactly. And then my essentials…</span> <span class="audio-time caption" data-speaker="Amin" data-start="1359.580000" data-stop="1362.999000">This is where I configure a lot of key</span> <span class="audio-time caption" data-speaker="Amin" data-start="1363.000000" data-stop="1366.439000">behaviours of Emacs, all built-in stuff for the most</span> <span class="audio-time caption" data-speaker="Amin" data-start="1366.440000" data-stop="1369.119000">part, or things that are key to my workflows.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1369.120000" data-stop="1372.119000">For example, I always want to start with a *scratch​*</span> <span class="audio-time caption" data-speaker="Amin" data-start="1372.120000" data-stop="1373.759000">buffer.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1373.000000">22:53</span> <strong>emacsclient for EDITOR and VISUAL
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0026.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0026.jpg" alt="image from video 00:22:53.767" data-time="00:22:53.767"></a><span class="audio-time caption" data-speaker="Amin" data-start="1373.760000" data-stop="1377.439000"><strong class="speaker-name">Amin:</strong> Start the Emacs server if it's not running.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1377.440000" data-stop="1381.599000">And this is very useful, very helpful so that then you</span> <span class="audio-time caption" data-speaker="Amin" data-start="1381.600000" data-stop="1384.959000">can call into an existing Emacs process with</span> <span class="audio-time caption" data-speaker="Amin" data-start="1384.960000" data-stop="1387.439000">emacsclient and have it edit a file.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1387.440000" data-stop="1390.079000">I don't use it for anything fancy just yet.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1390.080000" data-stop="1392.919000">I believe Prot also mentioned in his video with you,</span> <span class="audio-time caption" data-speaker="Amin" data-start="1392.920000" data-stop="1396.239000">Sacha, that he uses it for things like org-capture to</span> <span class="audio-time caption" data-speaker="Amin" data-start="1396.240000" data-stop="1400.519000">spawn a new buffer in his existing Emacs session</span> <span class="audio-time caption" data-speaker="Amin" data-start="1400.520000" data-stop="1402.039000">and things like that.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1402.040000" data-stop="1403.879000">You can do pretty cool things with it.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1403.880000" data-stop="1408.519000">But yeah, I just use it for being able to easily use</span> <span class="audio-time caption" data-speaker="Amin" data-start="1408.520000" data-stop="1411.799000">my Emacs as EDITOR and VISUAL text editors.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1411.800000" data-stop="1417.759000">So yeah, this sets that up.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1417.000000">23:37</span> <strong>fundamental-mode-hook
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0027.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0027.jpg" alt="image from video 00:23:42.200" data-time="00:23:42.200"></a><span class="audio-time caption" data-speaker="Amin" data-start="1417.760000" data-stop="1418.719000"><strong class="speaker-name">Amin:</strong> Adding a fundamental mode hook.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1418.720000" data-stop="1420.619000">Again, I took this from Prot.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1420.620000" data-stop="1422.199000"><strong class="speaker-name">Sacha:</strong>  I was surprised by that because I was like,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1422.200000" data-stop="1424.519000">oh, there isn't a fundamental-mode-hook?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1424.520000" data-stop="1427.519000">Okay, that makes sense now.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="1427.520000" data-stop="1429.067000"><strong class="speaker-name">Amin:</strong>  Right, right.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1429.068000" data-stop="1432.319000">Yeah, there isn't a fundamental-mode-hook by design.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1432.320000" data-stop="1435.119000">But I still, in the past, have found that I wanted</span> <span class="audio-time caption" data-speaker="Amin" data-start="1435.120000" data-stop="1435.319000">that.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1435.320000" data-stop="1437.959000">For example, for this display-fill-column-indicator,</span> <span class="audio-time caption" data-speaker="Amin" data-start="1437.960000" data-stop="1440.319000">when I had it enabled everywhere, I was like, it would</span> <span class="audio-time caption" data-speaker="Amin" data-start="1440.320000" data-stop="1442.639000">be nice if I could at least disable it for Fundamental</span> <span class="audio-time caption" data-speaker="Amin" data-start="1442.640000" data-stop="1442.959000">mode.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1442.960000" data-stop="1444.399000">And at the time, I didn't have this.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1444.400000" data-stop="1445.999000">I added this just recently.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1446.000000" data-stop="1448.599000">So if I decide to go back to using something globally,</span> <span class="audio-time caption" data-speaker="Amin" data-start="1448.600000" data-stop="1451.239000">but I don't want it in fundamental-mode, then I can</span> <span class="audio-time caption" data-speaker="Amin" data-start="1451.240000" data-stop="1453.919000">disable it using this.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1453.920000" data-stop="1458.359000">Yeah, and then some standard stuff like I prefer</span> <span class="audio-time caption" data-speaker="Amin" data-start="1458.360000" data-stop="1463.579000">spaces and a tab width of four characters.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1463.000000">24:23</span> <strong>indicate-buffer-boundaries
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0008.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0008.jpg" alt="image from video 00:22:02.433" data-time="00:22:02.433"></a><span class="audio-time caption" data-speaker="Amin" data-start="1463.580000" data-stop="1465.319000"><strong class="speaker-name">Amin:</strong> Visually indicate buffer boundaries.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1465.320000" data-stop="1468.801000">This is a little bit hard to see right now,</span> <span class="audio-time caption" data-speaker="Amin" data-start="1468.802000" data-stop="1471.020000">but here at the bottom left</span> <p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0009.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0009.jpg" alt="image from video 00:22:02.433" data-time="00:22:02.433"></a><span class="audio-time caption" data-speaker="Amin" data-start="1471.021000" data-stop="1473.159000"><strong class="speaker-name">Amin:</strong> you see a little down arrow</span> <p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0012.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0012.jpg" alt="image from video 00:24:33.800" data-time="00:24:33.800"></a><span class="audio-time caption" data-speaker="Amin" data-start="1473.160000" data-stop="1474.799000"><strong class="speaker-name">Amin:</strong> and then the little top arrow.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1474.800000" data-stop="1481.619000">And… Let's see if I can.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1481.620000" data-stop="1484.319000"><strong class="speaker-name">Sacha:</strong>  Oh!</span> <p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0010.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0010.jpg" alt="image from video 00:24:43.167" data-time="00:24:43.167"></a><span class="audio-time caption" data-speaker="Amin" data-start="1484.320000" data-stop="1486.559000"><strong class="speaker-name">Amin:</strong>  And also here, for example, when it all fits</span> <span class="audio-time caption" data-speaker="Amin" data-start="1486.560000" data-stop="1487.239000">in the view.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1487.240000" data-stop="1489.759000"><strong class="speaker-name">Sacha:</strong>  Huh, that is cool.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1489.760000" data-stop="1490.919000">I was looking at that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1490.920000" data-stop="1491.919000">What does it do?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1491.920000" data-stop="1494.799000">And so that tells you, you can still scroll up or you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1494.800000" data-stop="1497.039000">can still scroll down, and you don't have to look at</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1497.040000" data-stop="1498.799000">the scroll bar to see where you are.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1498.800000" data-stop="1501.679000">It just says there's more there.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="1501.680000" data-stop="1503.399000"><strong class="speaker-name">Amin:</strong>  Yeah, exactly.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1503.400000" data-stop="1503.839000">Yeah.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1503.840000" data-stop="1506.359000">And it also helps distinguish when there's a newline</span> <span class="audio-time caption" data-speaker="Amin" data-start="1506.360000" data-stop="1508.119000">character at the end of the file or not.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1508.120000" data-stop="1509.799000">So here in this buffer, there is.</span> <p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0013.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0013.jpg" alt="image from video 00:25:10.533" data-time="00:25:10.533"></a><span class="audio-time caption" data-speaker="Amin" data-start="1509.800000" data-stop="1514.199000"><strong class="speaker-name">Amin:</strong> But if I delete that, you see this indicator here</span> <span class="audio-time caption" data-speaker="Amin" data-start="1514.200000" data-stop="1515.639000">changed shape.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1515.640000" data-stop="1518.479000">But if I go back and add the new line again.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1518.480000" data-stop="1521.639000">So yeah, that's also been very helpful for me because</span> <span class="audio-time caption" data-speaker="Amin" data-start="1521.640000" data-stop="1523.959000">I added configuration files and some of these pieces</span> <span class="audio-time caption" data-speaker="Amin" data-start="1523.960000" data-stop="1526.199000">of software are sensitive to having a new line at the</span> <span class="audio-time caption" data-speaker="Amin" data-start="1526.200000" data-stop="1526.959000">end of the file.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1526.960000" data-stop="1531.099000">So yeah, it's very helpful and useful for that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1531.100000" data-stop="1534.119000"><strong class="speaker-name">Sacha:</strong>  I would not have guessed that from the very</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1534.120000" data-stop="1536.959000">short line in your config that turns that on.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1536.960000" data-stop="1538.678000">It's one line, (setq-default</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1538.679000" data-stop="1543.079000">indicate-buffer-boundaries 'left), and yet it adds this nice little</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1543.080000" data-stop="1546.219000">nuance to the way that fringe looks.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="1546.220000" data-stop="1546.719000"><strong class="speaker-name">Amin:</strong>  Right.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1546.720000" data-stop="1547.839000">Yeah, absolutely.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1547.840000" data-stop="1550.799000">Perhaps I should expand more on it at some point later</span> <span class="audio-time caption" data-speaker="Amin" data-start="1550.800000" data-stop="1552.399000">to explain these things.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1552.400000" data-stop="1554.859000">But yeah, just this one line.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1554.860000" data-stop="1559.059000"><strong class="speaker-name">Sacha:</strong>  May I recommend screenshots?</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="1559.060000" data-stop="1560.519000"><strong class="speaker-name">Amin:</strong>  Yes, you may, for sure. Yeah, I will</span> <span class="audio-time caption" data-speaker="Amin" data-start="1560.520000" data-stop="1564.959000">definitely do that as well,</span> <span class="audio-time caption" data-speaker="Amin" data-start="1564.960000" data-stop="1567.067000">because I'm also a bit of a visual person.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1567.068000" data-stop="1568.733000">I like seeing screenshots and videos,</span> <span class="audio-time caption" data-speaker="Amin" data-start="1568.734000" data-stop="1570.159000">so yeah I'll take that to heart</span> <span class="audio-time caption" data-speaker="Amin" data-start="1570.160000" data-stop="1572.299000">and do that for my own configuration as well.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1572.300000" data-stop="1575.500000"><strong class="speaker-name">Sacha:</strong>  When I post this, I'll probably… I figured</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1575.501000" data-stop="1578.033000">out how to have the transcripts and then screenshots</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1578.034000" data-stop="1579.433000">embedded into my transcript.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1579.434000" data-stop="1582.033000">I'll generate it automatically from the subtitle file.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1582.034000" data-stop="1584.633000">Our EmacsConf transcripts are going to get so fancy</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1584.634000" data-stop="1588.300000">next year. But you can pull those screenshots</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1588.301000" data-stop="1591.719000">and drop them into your config. It'll be great.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="1591.720000" data-stop="1596.419000"><strong class="speaker-name">Amin:</strong>  Nice. Yeah, for sure. Sounds good.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1596.000000">26:36</span> <strong>enabling and disabling commands
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0028.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0028.jpg" alt="image from video 00:26:36.433" data-time="00:26:36.433"></a><span class="audio-time caption" data-speaker="Amin" data-start="1596.420000" data-stop="1598.600000"><strong class="speaker-name">Amin:</strong> And then here, I just enable some of these</span> <span class="audio-time caption" data-speaker="Amin" data-start="1598.601000" data-stop="1600.733000">commands that are disabled by default.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1600.734000" data-stop="1605.800000">So yeah, it's useful, especially narrow-to-page,</span> <span class="audio-time caption" data-speaker="Amin" data-start="1605.801000" data-stop="1607.267000">for example, or narrow-to-region.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1607.268000" data-stop="1609.433000">These are commands where Emacs disables them</span> <span class="audio-time caption" data-speaker="Amin" data-start="1609.434000" data-stop="1612.833000">by default so that newcomers</span> <span class="audio-time caption" data-speaker="Amin" data-start="1612.834000" data-stop="1615.100000">don't accidentally hit them and get very</span> <span class="audio-time caption" data-speaker="Amin" data-start="1615.101000" data-stop="1617.133000">confused by what just happened.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1617.134000" data-stop="1619.500000">It doesn't disable them for good.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1619.501000" data-stop="1621.733000">It just basically prompts you for confirmation.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1621.734000" data-stop="1624.267000">Are you sure you want to run this command?</span> <span class="audio-time caption" data-speaker="Amin" data-start="1624.268000" data-stop="1626.900000">I'm sure, at least about these commands.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1626.901000" data-stop="1628.167000">So I just enable them.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1628.168000" data-stop="1631.233000">And then something like, for example, overwrite-mode,</span> <span class="audio-time caption" data-speaker="Amin" data-start="1631.234000" data-stop="1632.800000">which I never use</span> <span class="audio-time caption" data-speaker="Amin" data-start="1632.801000" data-stop="1634.267000">and I don't want to accidentally enable.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1634.268000" data-stop="1636.667000">I just put it disabled so that if I do accidentally</span> <span class="audio-time caption" data-speaker="Amin" data-start="1636.668000" data-stop="1639.300000">hit the keys, which might be, I don't know, something</span> <span class="audio-time caption" data-speaker="Amin" data-start="1639.301000" data-stop="1643.000000">insert or whatever, then it will prompt me</span> <span class="audio-time caption" data-speaker="Amin" data-start="1643.001000" data-stop="1645.899000">to make sure that I meant to do that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1645.900000" data-stop="1648.233000"><strong class="speaker-name">Sacha:</strong>  That reminds me, I should probably turn that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1648.234000" data-stop="1650.833000">off for myself and then you get a whole new keyboard</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1650.834000" data-stop="1653.979000">shortcut you can use too.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="1653.980000" data-stop="1656.933000"><strong class="speaker-name">Amin:</strong>  Right, yeah.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1656.934000" data-stop="1657.879000">Let's see.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1657.000000">27:37</span> <strong>package-review-policy
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0029.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0029.jpg" alt="image from video 00:27:37.900" data-time="00:27:37.900"></a><span class="audio-time caption" data-speaker="Amin" data-start="1657.880000" data-stop="1662.999000"><strong class="speaker-name">Amin:</strong> Yeah, I have just one line setting for package.el.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1663.000000" data-stop="1666.279000">In Emacs 31, we will be getting a package-review-policy</span> <span class="audio-time caption" data-speaker="Amin" data-start="1666.280000" data-stop="1667.439000">which is very helpful.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1667.440000" data-stop="1670.479000">So if you do use package.el for installing packages</span> <span class="audio-time caption" data-speaker="Amin" data-start="1670.480000" data-stop="1674.159000">from GNU ELPA, NonGNU ELPA, MELPA or whatever else,</span> <span class="audio-time caption" data-speaker="Amin" data-start="1674.160000" data-stop="1676.359000">you can enable this, and then whenever you update your</span> <span class="audio-time caption" data-speaker="Amin" data-start="1676.360000" data-stop="1680.679000">packages, you'll get a diff of what changed in this</span> <span class="audio-time caption" data-speaker="Amin" data-start="1680.680000" data-stop="1683.719000">new revision of the package that you're downloading</span> <span class="audio-time caption" data-speaker="Amin" data-start="1683.720000" data-stop="1685.519000">and you're about to enable.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1685.520000" data-stop="1688.039000">And you can presumably say yes or</span> <span class="audio-time caption" data-speaker="Amin" data-start="1688.040000" data-stop="1691.579000">at least see what's going on, which I'd find helpful.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1691.580000" data-stop="1693.759000"><strong class="speaker-name">Sacha:</strong>  But you're not using packages, you mentioned,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1693.760000" data-stop="1700.919000">so you're just checking everything out and then you're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1700.920000" data-stop="1701.979000">just git pulling whenever you feel like it.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="1701.980000" data-stop="1704.239000"><strong class="speaker-name">Amin:</strong>  Yeah, so right now I'm using git pulls and git</span> <span class="audio-time caption" data-speaker="Amin" data-start="1704.240000" data-stop="1706.079000">submodules, very manual.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1706.080000" data-stop="1709.999000">I put this here because I think it's generally a very</span> <span class="audio-time caption" data-speaker="Amin" data-start="1710.000000" data-stop="1713.679000">welcome change and awesome new feature that I want to</span> <span class="audio-time caption" data-speaker="Amin" data-start="1713.680000" data-stop="1714.959000">spread the word about.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1714.960000" data-stop="1718.239000">So maybe someone who's looking at my config, they use</span> <span class="audio-time caption" data-speaker="Amin" data-start="1718.240000" data-stop="1720.159000">package and that's perfectly fine.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1720.160000" data-stop="1722.199000">So this is just here to spread the word about it</span> <span class="audio-time caption" data-speaker="Amin" data-start="1722.200000" data-stop="1723.159000">mainly, I guess.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1723.160000" data-stop="1725.439000">And if I start using package at some point myself in</span> <span class="audio-time caption" data-speaker="Amin" data-start="1725.440000" data-stop="1730.839000">the future, then I will have this enabled.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1730.840000" data-stop="1732.760000">Let's see.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1732.000000">28:52</span> <strong>getting the Info files from the Emacs source directory
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0030.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0030.jpg" alt="image from video 00:28:52.800" data-time="00:28:52.800"></a><span class="audio-time caption" data-speaker="Amin" data-start="1732.800000" data-stop="1738.239000"><strong class="speaker-name">Amin:</strong> Very quickly, here I extend Info-directory-list.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1738.240000" data-stop="1741.919000">I like to, at least on some of my machines,</span> <span class="audio-time caption" data-speaker="Amin" data-start="1741.920000" data-stop="1745.399000">use Emacs that I built from source directly in the</span> <span class="audio-time caption" data-speaker="Amin" data-start="1745.400000" data-stop="1748.599000">source repository of Emacs.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1748.600000" data-stop="1752.639000">Just after doing make, I don't run make install,</span> <span class="audio-time caption" data-speaker="Amin" data-start="1752.640000" data-stop="1754.919000">even though it's very easy to do that.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1754.920000" data-stop="1757.919000">You can install to a custom location by providing</span> <span class="audio-time caption" data-speaker="Amin" data-start="1757.920000" data-stop="1760.399000">&#45;&#45;prefix when you're ./configure-ing Emacs.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1760.400000" data-stop="1762.999000">Sometimes I just find it more convenient for me to not</span> <span class="audio-time caption" data-speaker="Amin" data-start="1763.000000" data-stop="1766.039000">do that and just run make and then exit and reopen</span> <span class="audio-time caption" data-speaker="Amin" data-start="1766.040000" data-stop="1766.959000">Emacs.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1766.960000" data-stop="1770.245000">And for that kind of a setup, I just extend the</span> <span class="audio-time caption" data-speaker="Amin" data-start="1770.246000" data-stop="1773.879000">Info-directory-list to include the info subdirectory of the</span> <span class="audio-time caption" data-speaker="Amin" data-start="1773.880000" data-stop="1777.359000">Emacs source repository so that the built-in Emacs</span> <span class="audio-time caption" data-speaker="Amin" data-start="1777.360000" data-stop="1785.119000">info manuals will be available to me.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1785.000000">29:45</span> <strong>recentf, adding directories
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0031.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0031.jpg" alt="image from video 00:29:46.600" data-time="00:29:46.600"></a><span class="audio-time caption" data-speaker="Amin" data-start="1785.120000" data-stop="1786.600000"><strong class="speaker-name">Amin:</strong> And then I use recentf</span> <span class="audio-time caption" data-speaker="Amin" data-start="1786.601000" data-stop="1792.039000">for tracking recent revisited files.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1792.040000" data-stop="1794.560000">I bind it to C-c f r e</span> <span class="audio-time caption" data-speaker="Amin" data-start="1794.600000" data-stop="1800.239000">for me to get a pop-up completion for visiting a</span> <span class="audio-time caption" data-speaker="Amin" data-start="1800.240000" data-stop="1803.759000">recent file, it has completion.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1803.760000" data-stop="1808.079000">So if I hit TAB here, for example, we can see some of</span> <span class="audio-time caption" data-speaker="Amin" data-start="1808.080000" data-stop="1811.499000">these files or directories that I visited recently.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1811.500000" data-stop="1813.200000"><strong class="speaker-name">Sacha:</strong>  I see.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1813.201000" data-stop="1816.399000">And then you're adding the directory to it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1816.400000" data-stop="1819.519000">So what does that let you do?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1819.520000" data-stop="1821.999000">Because I'm assuming you're already in there in the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1822.000000" data-stop="1822.759000">directory.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1822.760000" data-stop="1826.819000">But how does that change your recentf?</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="1826.820000" data-stop="1830.279000"><strong class="speaker-name">Amin:</strong>  Right. So I need to think to remember this,</span> <span class="audio-time caption" data-speaker="Amin" data-start="1830.280000" data-stop="1834.239000">but I think the point of this was that if I</span> <span class="audio-time caption" data-speaker="Amin" data-start="1834.240000" data-stop="1839.759000">open a project in VC or in Dired, then I</span> <span class="audio-time caption" data-speaker="Amin" data-start="1839.760000" data-stop="1843.039000">would like that directory to also get added to my</span> <span class="audio-time caption" data-speaker="Amin" data-start="1843.040000" data-stop="1846.719000">recentf files list, because I think by default,</span> <span class="audio-time caption" data-speaker="Amin" data-start="1846.720000" data-stop="1854.399000">recentf only includes files, not directories.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1854.400000" data-stop="1857.319000"><strong class="speaker-name">Sacha:</strong>  You're in it, you start up Magit or whatever,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1857.320000" data-stop="1860.079000">and then you move on to something else, but you want</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1860.080000" data-stop="1863.339000">to be able to easily go back to it.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="1863.340000" data-stop="1866.239000"><strong class="speaker-name">Amin:</strong>  Yeah, for example, I like to keep my recently</span> <span class="audio-time caption" data-speaker="Amin" data-start="1866.240000" data-stop="1869.159000">visited directories in recentf as well.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1869.160000" data-stop="1871.759000">Because that's one of the main ways I jump between</span> <span class="audio-time caption" data-speaker="Amin" data-start="1871.760000" data-stop="1874.159000">projects and stuff, even though there is literally a</span> <span class="audio-time caption" data-speaker="Amin" data-start="1874.160000" data-stop="1876.319000">built-in Emacs project mode, which I still use.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1876.320000" data-stop="1879.919000">The only thing that I have here is…</span> <span class="audio-time caption" data-speaker="Amin" data-start="1879.920000" data-stop="1885.879000">I don't want to add my home directory to the recently</span> <span class="audio-time caption" data-speaker="Amin" data-start="1885.880000" data-stop="1889.599000">visited list, so the only thing that this function</span> <span class="audio-time caption" data-speaker="Amin" data-start="1889.600000" data-stop="1894.319000">does is to skip that if I'm opening the home directory.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1894.320000" data-stop="1898.439000">That's about it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1898.000000">31:38</span> <strong>Scrolling
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0033.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0033.jpg" alt="image from video 00:32:10.933" data-time="00:32:10.933"></a><span class="audio-time caption" data-speaker="Amin" data-start="1898.440000" data-stop="1901.759000"><strong class="speaker-name">Amin:</strong> And then here I configure mouse and scrolling behaviour.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1901.760000" data-stop="1907.159000">So I want Emacs to scroll very gently, one line at a</span> <span class="audio-time caption" data-speaker="Amin" data-start="1907.160000" data-stop="1907.679000">time.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1907.680000" data-stop="1910.679000">I think the default is that when you reach the end of</span> <span class="audio-time caption" data-speaker="Amin" data-start="1910.680000" data-stop="1913.799000">the page, it'll jump half a page down and then</span> <span class="audio-time caption" data-speaker="Amin" data-start="1913.800000" data-stop="1914.439000">recenter.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1914.440000" data-stop="1917.999000">I don't remember default behaviour because I don't use</span> <span class="audio-time caption" data-speaker="Amin" data-start="1918.000000" data-stop="1921.599000">it very much, but yeah, this basically makes it</span> <span class="audio-time caption" data-speaker="Amin" data-start="1921.600000" data-stop="1923.919000">very predictable. For example, when I reach</span> <span class="audio-time caption" data-speaker="Amin" data-start="1923.920000" data-stop="1927.039000">the edge of the page here and I press C-n,</span> <span class="audio-time caption" data-speaker="Amin" data-start="1927.040000" data-stop="1930.919000">it'll only scroll one line at a time, instead of</span> <span class="audio-time caption" data-speaker="Amin" data-start="1930.920000" data-stop="1933.399000">jumping and then doing something like</span> <span class="audio-time caption" data-speaker="Amin" data-start="1933.400000" data-stop="1934.800000">this.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1934.801000" data-stop="1937.359000"><strong class="speaker-name">Sacha:</strong>  Oh yeah, mine does! Mine doesn't do that, so</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1937.360000" data-stop="1939.879000">it does that jumping thing. I see what you mean</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1939.880000" data-stop="1942.200000">here. Interesting.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="1942.201000" data-stop="1945.599000"><strong class="speaker-name">Amin:</strong>  Yeah, so you can tweak that with scroll-conservatively</span> <span class="audio-time caption" data-speaker="Amin" data-start="1945.600000" data-stop="1948.599000">and then scroll-preserve-screen-position, I believe.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1948.000000">32:28</span> <strong>auto revert
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0034.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0034.jpg" alt="image from video 00:32:37.733" data-time="00:32:37.733"></a><span class="audio-time caption" data-speaker="Amin" data-start="1948.600000" data-stop="1956.239000"><strong class="speaker-name">Amin:</strong> Yeah, and then I use autorevert, which is pretty</span> <span class="audio-time caption" data-speaker="Amin" data-start="1956.240000" data-stop="1957.719000">helpful.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1957.720000" data-stop="1961.239000">So this will have Emacs watch, for example, files that</span> <span class="audio-time caption" data-speaker="Amin" data-start="1961.240000" data-stop="1963.679000">are open in your buffers.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1963.680000" data-stop="1966.799000">And if they change on disk, Emacs will automatically</span> <span class="audio-time caption" data-speaker="Amin" data-start="1966.800000" data-stop="1969.959000">refresh the buffer so that you get the latest version.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1969.960000" data-stop="1973.199000">The cool thing is you can press undo in one of these</span> <span class="audio-time caption" data-speaker="Amin" data-start="1973.200000" data-stop="1976.119000">files that's been autoreverted so that you get the</span> <span class="audio-time caption" data-speaker="Amin" data-start="1976.120000" data-stop="1978.959000">revision that was there right before the change.</span> <span class="audio-time caption" data-speaker="Amin" data-start="1978.960000" data-stop="1983.139000">So I've used that sometimes as well.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1983.140000" data-stop="1985.919000"><strong class="speaker-name">Sacha:</strong>  Yeah, and sometimes autofollow also is nice</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1985.920000" data-stop="1988.119000">for log files and things like that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1988.120000" data-stop="1992.519000">But yeah, autoreverting is great.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="1992.520000" data-stop="1994.059000"><strong class="speaker-name">Amin:</strong>  Yeah, for sure.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1994.000000">33:14</span> <strong>Repeat mode
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0035.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0035.jpg" alt="image from video 00:33:14.067" data-time="00:33:14.067"></a><span class="audio-time caption" data-speaker="Amin" data-start="1994.060000" data-stop="1996.959000"><strong class="speaker-name">Amin:</strong> repeat-mode is something that I've only recently</span> <span class="audio-time caption" data-speaker="Amin" data-start="1996.960000" data-stop="2000.639000">started using, especially with my Emacs EXWM setup,</span> <span class="audio-time caption" data-speaker="Amin" data-start="2000.640000" data-stop="2002.959000">using Emacs as my window manager.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2002.960000" data-stop="2006.599000">For example, if I hit C-x o, we see here in the</span> <span class="audio-time caption" data-speaker="Amin" data-start="2006.600000" data-stop="2011.319000">echo area where it says repeat with o or capital O. So</span> <span class="audio-time caption" data-speaker="Amin" data-start="2011.320000" data-stop="2015.159000">I can now only press o instead of saying C-x o,</span> <span class="audio-time caption" data-speaker="Amin" data-start="2015.160000" data-stop="2019.319000">C-x o to do that multiple times.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2019.320000" data-stop="2023.559000">Keymaps that have support for this basically indicate</span> <span class="audio-time caption" data-speaker="Amin" data-start="2023.560000" data-stop="2027.919000">that they want to be repeatable can declare that.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2027.920000" data-stop="2031.439000">And then once you invoke one of the keys in those</span> <span class="audio-time caption" data-speaker="Amin" data-start="2031.440000" data-stop="2034.279000">keymaps, then you can repeat it with just that single</span> <span class="audio-time caption" data-speaker="Amin" data-start="2034.280000" data-stop="2035.039000">character.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2035.040000" data-stop="2037.879000">And for example, for my setup, I have that with my</span> <span class="audio-time caption" data-speaker="Amin" data-start="2037.880000" data-stop="2041.359000">EXWM workspace switching keys.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2041.360000" data-stop="2045.599000">So I can easily go to the next and previous</span> <span class="audio-time caption" data-speaker="Amin" data-start="2045.600000" data-stop="2048.519000">workspaces, many of them at a time by just pressing p</span> <span class="audio-time caption" data-speaker="Amin" data-start="2048.520000" data-stop="2053.399000">and n instead of doing the shortcut multiple times.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2053.400000" data-stop="2056.479000"><strong class="speaker-name">Sacha:</strong>  And actually, if you don't mind jumping</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2056.480000" data-stop="2060.679000">ahead, the EXWM part of your config is fairly complex,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2060.680000" data-stop="2065.439000">and I think not a lot of people have a lot of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2065.440000" data-stop="2067.599000">experience seeing EXWM in action.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2067.600000" data-stop="2071.039000">And I don't know whether you're comfortable sharing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2071.040000" data-stop="2073.439000">you switching around to different workspaces, but if</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2073.440000" data-stop="2075.839000">that is something that you can do, how are you doing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2075.840000" data-stop="2078.719000">all this awesomeness?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2078.720000" data-stop="2083.479000">I'm still too scared to use EXWM myself.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2083.480000" data-stop="2084.359000">Stability.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2084.360000" data-stop="2091.319000">But that's a me problem, not an EXWM problem.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2091.000000">34:51</span> <strong>EXWM
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0036.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0036.jpg" alt="image from video 00:35:26.600" data-time="00:35:26.600"></a><span class="audio-time caption" data-speaker="Amin" data-start="2091.320000" data-stop="2093.799000"><strong class="speaker-name">Amin:</strong>  Yeah, EXWM was pretty awesome.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2093.800000" data-stop="2097.519000">I used it back in 2018, '19 for a while, and then I</span> <span class="audio-time caption" data-speaker="Amin" data-start="2097.520000" data-stop="2100.079000">kind of moved on to Sway and Wayland.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2100.080000" data-stop="2102.159000">But I don't know.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2102.160000" data-stop="2104.759000">It's something that I feel like once you try it, you</span> <span class="audio-time caption" data-speaker="Amin" data-start="2104.760000" data-stop="2106.479000">want to keep going back to it.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2106.480000" data-stop="2110.639000">So recently, this past month or so, I decided to give</span> <span class="audio-time caption" data-speaker="Amin" data-start="2110.640000" data-stop="2114.679000">it an earnest try and try to actually address any pain</span> <span class="audio-time caption" data-speaker="Amin" data-start="2114.680000" data-stop="2116.039000">points that I've noticed.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2116.040000" data-stop="2118.919000">So it's much more usable for me now, and I'm sticking</span> <span class="audio-time caption" data-speaker="Amin" data-start="2118.920000" data-stop="2119.479000">with it for now.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2119.480000" data-stop="2122.359000">I'm not a Wayland hater, but I'm just saying, at least</span> <span class="audio-time caption" data-speaker="Amin" data-start="2122.360000" data-stop="2124.039000">for now, I'm using EXWM.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2124.040000" data-stop="2126.599000">And I'm happy to talk about it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2126.600000" data-stop="2128.599000"><strong class="speaker-name">Sacha:</strong>  OK, what do you love about your setup for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2128.600000" data-stop="2130.939000">that one?</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="2130.940000" data-stop="2132.319000"><strong class="speaker-name">Amin:</strong>  EXWM?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2132.320000" data-stop="2135.199000"><strong class="speaker-name">Sacha:</strong>  Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2135.200000" data-stop="2136.599000">Like, you're doing a lot of rename buffers.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2136.600000" data-stop="2139.199000">Yeah, yeah, yeah.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="2139.200000" data-stop="2140.399000"><strong class="speaker-name">Amin:</strong>  Right.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2140.400000" data-stop="2141.159000">Yeah, let me think.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2141.160000" data-stop="2142.199000">There's a couple of things.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2142.200000" data-stop="2145.559000">So, for the longest time, my Emacs EXWM configuration</span> <span class="audio-time caption" data-speaker="Amin" data-start="2145.560000" data-stop="2148.959000">used super key as a prefix,</span> <span class="audio-time caption" data-speaker="Amin" data-start="2148.960000" data-stop="2151.719000">which is the Windows [key] or the one with the</span> <span class="audio-time caption" data-speaker="Amin" data-start="2151.720000" data-stop="2155.159000">logo, basically, to switch workspaces, launch</span> <span class="audio-time caption" data-speaker="Amin" data-start="2155.160000" data-stop="2156.239000">applications and such.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2156.240000" data-stop="2162.719000">And at least the way that EXWM is right now, it</span> <span class="audio-time caption" data-speaker="Amin" data-start="2162.720000" data-stop="2163.319000">doesn't…</span> <span class="audio-time caption" data-speaker="Amin" data-start="2163.320000" data-stop="2167.559000">Like the way you have to add those global key bindings</span> <span class="audio-time caption" data-speaker="Amin" data-start="2167.560000" data-stop="2171.839000">kind of slows down the EXWM startup.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2171.840000" data-stop="2173.599000">And I had many such key bindings.</span> <p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0037.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0037.jpg" alt="image from video 00:36:16.467" data-time="00:36:16.467"></a><span class="audio-time caption" data-speaker="Amin" data-start="2173.600000" data-stop="2176.439000"><strong class="speaker-name">Amin:</strong> So one thing that I did kind of recently is to</span> <span class="audio-time caption" data-speaker="Amin" data-start="2176.440000" data-stop="2184.799000">define a prefix map here, like bandali-prefix-exwm-map.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2184.800000" data-stop="2189.039000">So I bind all of the keys and commands that I want</span> <span class="audio-time caption" data-speaker="Amin" data-start="2189.040000" data-stop="2193.399000">here, and then this helps me really minimize what I'm</span> <span class="audio-time caption" data-speaker="Amin" data-start="2193.400000" data-stop="2195.439000">telling EXWM, which is here.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2195.440000" data-stop="2199.319000">For example, this is how you set global keys with</span> <span class="audio-time caption" data-speaker="Amin" data-start="2199.320000" data-stop="2204.639000">EXWM, and I just point it to my prefix map.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2204.640000" data-stop="2207.759000">C-c x and then any of those letters and</span> <span class="audio-time caption" data-speaker="Amin" data-start="2207.760000" data-stop="2208.679000">functions that we saw.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2208.680000" data-stop="2211.679000">That's kind of annoying.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2211.680000" data-stop="2217.439000">I still use the super key here, but I have it s-x</span> <span class="audio-time caption" data-speaker="Amin" data-start="2217.440000" data-stop="2218.639000">and s-,.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2218.640000" data-stop="2222.319000">On the left-hand side of my keyboard, x is right next</span> <span class="audio-time caption" data-speaker="Amin" data-start="2222.320000" data-stop="2226.279000">to super, so I can hit it in one go with one motion</span> <span class="audio-time caption" data-speaker="Amin" data-start="2226.280000" data-stop="2228.639000">almost as a single key with these two fingers.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2228.640000" data-stop="2231.460000">On the right side of my keyboard,</span> <span class="audio-time caption" data-speaker="Amin" data-start="2231.461000" data-stop="2233.109000">I don't have a super key,</span> <span class="audio-time caption" data-speaker="Amin" data-start="2233.110000" data-stop="2236.279000">but I have a control key that I remapped to super.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2236.280000" data-stop="2241.079000">On the right side, I do s-, with these two</span> <span class="audio-time caption" data-speaker="Amin" data-start="2241.080000" data-stop="2242.719000">fingers.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2242.720000" data-stop="2248.359000">It's still very convenient for me to invoke those</span> <span class="audio-time caption" data-speaker="Amin" data-start="2248.360000" data-stop="2249.079000">commands.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2249.080000" data-stop="2253.399000">And pairing this up with repeat-mode, as we can see</span> <span class="audio-time caption" data-speaker="Amin" data-start="2253.400000" data-stop="2257.879000">just here, actually, then I can hit s-, and</span> <span class="audio-time caption" data-speaker="Amin" data-start="2257.880000" data-stop="2262.319000">then p, n, or h, j, k, l many times to switch</span> <span class="audio-time caption" data-speaker="Amin" data-start="2262.320000" data-stop="2266.559000">workspaces or shift focus to different windows and</span> <span class="audio-time caption" data-speaker="Amin" data-start="2266.560000" data-stop="2269.919000">stuff without having to hit that kind of annoying</span> <span class="audio-time caption" data-speaker="Amin" data-start="2269.920000" data-stop="2273.599000">s-x or s-, repeatedly.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2273.600000" data-stop="2278.319000">Yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2278.320000" data-stop="2279.199000"><strong class="speaker-name">Sacha:</strong>  That sounds really cool.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2279.200000" data-stop="2280.279000">I should look into that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2280.280000" data-stop="2282.999000">Sorry, quick aside.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2283.000000">38:03</span> <strong>Audio setup</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2283.000000" data-stop="2285.559000"><strong class="speaker-name">Sacha:</strong> @blaiseutube would like to compliment you on your awesome</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2285.560000" data-stop="2286.359000">audio setup.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2286.360000" data-stop="2287.479000">It sounds like you're in the room with him.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2287.480000" data-stop="2290.039000">Apparently, I sound like I'm on speakerphone, but your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2290.040000" data-stop="2292.879000">audio setup is top-notch, apparently.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2292.880000" data-stop="2296.759000">But that looks like a Blue Yeti, so I have to find out</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2296.760000" data-stop="2298.159000">what's going on.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2298.160000" data-stop="2300.919000">What microphone are you using?</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="2300.920000" data-stop="2302.159000"><strong class="speaker-name">Amin:</strong>  It is indeed a Blue Yeti.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2302.160000" data-stop="2303.079000"><strong class="speaker-name">Sacha:</strong>  Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2303.080000" data-stop="2305.399000">So I just have to ask him for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2305.400000" data-stop="2307.079000">okay, what kind of boom mic?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2307.080000" data-stop="2309.159000">Anyway, we'll do that all offline because it's not</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2309.160000" data-stop="2312.399000">Emacs related.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="2312.400000" data-stop="2313.919000"><strong class="speaker-name">Amin:</strong>  Yeah, it's just the Blue Yeti.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2313.920000" data-stop="2316.279000">Yeah, I turned down the gain.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2316.280000" data-stop="2319.599000">I used to have gain higher, but then it picks up</span> <span class="audio-time caption" data-speaker="Amin" data-start="2319.600000" data-stop="2321.599000">more noise from around the room or around</span> <span class="audio-time caption" data-speaker="Amin" data-start="2321.600000" data-stop="2322.439000">the house.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2322.440000" data-stop="2325.759000">So I turned down the gain a lot and then I get</span> <span class="audio-time caption" data-speaker="Amin" data-start="2325.760000" data-stop="2328.639000">close to the mic so that it only captures my voice.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2328.640000" data-stop="2330.759000">Okay.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2330.760000" data-stop="2332.239000"><strong class="speaker-name">Sacha:</strong>  I'm gonna need the boom.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2332.240000" data-stop="2334.119000">Otherwise, I'm squished into that corner.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2334.120000" data-stop="2334.679000">All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2334.680000" data-stop="2337.599000">So you were doing repeat-map before I said oh,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2337.600000" data-stop="2340.879000">let's talk about EXWM because you've got cool stuff</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2340.880000" data-stop="2343.079000">there.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="2343.080000" data-stop="2346.599000"><strong class="speaker-name">Amin:</strong>  Yeah, and I can continue talking about the EXWM.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2346.600000" data-stop="2350.279000">There's a lot here.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2350.000000">39:10</span> <strong>keymaps for launching different applications</strong></div><p></p><span class="audio-time caption" data-speaker="Amin" data-start="2350.280000" data-stop="2355.399000"><strong class="speaker-name">Amin:</strong> I have, let's see, s-, SPC.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2355.400000" data-stop="2357.719000">I bind it to async-shell-command to use as my</span> <span class="audio-time caption" data-speaker="Amin" data-start="2357.720000" data-stop="2360.399000">simple, little, dmenu-thing for</span> <span class="audio-time caption" data-speaker="Amin" data-start="2360.400000" data-stop="2361.639000">launching applications.</span> <p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0039.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0039.jpg" alt="image from video 00:39:11.767" data-time="00:39:11.767"></a><span class="audio-time caption" data-speaker="Amin" data-start="2361.640000" data-stop="2364.959000"><strong class="speaker-name">Amin:</strong> Some of these things, like browsers, I still</span> <span class="audio-time caption" data-speaker="Amin" data-start="2364.960000" data-stop="2367.119000">do them frequently enough, and I use different</span> <span class="audio-time caption" data-speaker="Amin" data-start="2367.120000" data-stop="2368.119000">browser profiles.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2368.120000" data-stop="2374.999000">So I just define a new keymap so I can basically one-shot</span> <span class="audio-time caption" data-speaker="Amin" data-start="2375.000000" data-stop="2378.439000">launch Chromium or Firefox in a specific browser [profile] or an</span> <span class="audio-time caption" data-speaker="Amin" data-start="2378.440000" data-stop="2379.999000">incognito window and such.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2380.000000" data-stop="2384.359000">So yeah, I just do s-x b and then, for example, c</span> <span class="audio-time caption" data-speaker="Amin" data-start="2384.360000" data-stop="2386.039000">to launch Chromium and all that stuff.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2386.040000" data-stop="2389.299000">So I found this pretty convenient.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2389.000000">39:49</span> <strong>bandali-call-interactively-insert
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0040.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0040.jpg" alt="image from video 00:40:57.567" data-time="00:40:57.567"></a><span class="audio-time caption" data-speaker="Amin" data-start="2389.300000" data-stop="2395.639000"><strong class="speaker-name">Amin:</strong> Speaking of key bindings, before I get down this,</span> <span class="audio-time caption" data-speaker="Amin" data-start="2395.640000" data-stop="2401.999000">let's see if I can find… C-c h.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2402.000000" data-stop="2405.239000">I think this is just before my EXWM setup.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2405.240000" data-stop="2407.839000">I'm pretty proud of this.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2407.840000" data-stop="2409.079000">I love this.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2409.080000" data-stop="2412.759000">It really goes to show how awesome Emacs is and</span> <span class="audio-time caption" data-speaker="Amin" data-start="2412.760000" data-stop="2414.199000">extensible it is.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2414.200000" data-stop="2416.039000">Let's see.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2416.040000" data-stop="2419.799000">So as we know, these various help commands and</span> <span class="audio-time caption" data-speaker="Amin" data-start="2419.800000" data-stop="2422.319000">describe commands are under C-h prefix.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2422.320000" data-stop="2423.879000">But some of them are not bound,</span> <span class="audio-time caption" data-speaker="Amin" data-start="2423.880000" data-stop="2426.679000">for example, find-library or describe-face.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2426.680000" data-stop="2429.519000">Some of these I use pretty frequently.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2429.520000" data-stop="2433.309000">I was really having trouble coming up with</span> <span class="audio-time caption" data-speaker="Amin" data-start="2433.310000" data-stop="2435.174000">descriptive-enough keybindings</span> <span class="audio-time caption" data-speaker="Amin" data-start="2435.175000" data-stop="2438.439000">or short-enough keybindings for all of them.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2438.440000" data-stop="2441.839000">I put some of them here, for example, like</span> <span class="audio-time caption" data-speaker="Amin" data-start="2441.840000" data-stop="2443.559000">C-c f l for find-library.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2443.560000" data-stop="2447.319000">But I can't do that for all of them.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2447.320000" data-stop="2451.239000">What I did was just do C-c h a or C-c h d.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2451.240000" data-stop="2456.839000">What this will do is basically, if I show that,</span> <span class="audio-time caption" data-speaker="Amin" data-start="2456.840000" data-stop="2461.279000">It basically opens up M-x, fills in describe-,</span> <span class="audio-time caption" data-speaker="Amin" data-start="2461.280000" data-stop="2465.366000">and then I can just type, for example, face,</span> <span class="audio-time caption" data-speaker="Amin" data-start="2465.367000" data-stop="2466.079000">and that's it.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2466.080000" data-stop="2468.839000">So it basically opens up the minibuffer for me,</span> <span class="audio-time caption" data-speaker="Amin" data-start="2468.840000" data-stop="2471.759000">pre-fills it with the string that I want, and I can</span> <span class="audio-time caption" data-speaker="Amin" data-start="2471.760000" data-stop="2473.959000">type what is it that I'm looking for.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2473.960000" data-stop="2475.319000">And I found this to be</span> <span class="audio-time caption" data-speaker="Amin" data-start="2475.320000" data-stop="2478.999000">better than trying to bind a million different</span> <span class="audio-time caption" data-speaker="Amin" data-start="2479.000000" data-stop="2480.719000">keyboard things for describe this and that,</span> <span class="audio-time caption" data-speaker="Amin" data-start="2480.720000" data-stop="2483.359000">apropos this and that, find this and that.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2483.360000" data-stop="2487.439000">So yeah and the way that we do that is to just use</span> <span class="audio-time caption" data-speaker="Amin" data-start="2487.440000" data-stop="2490.679000">a minibuffer-with-setup-hook, and you just have a</span> <span class="audio-time caption" data-speaker="Amin" data-start="2490.680000" data-stop="2492.319000">little lambda to insert the string that you give</span> <span class="audio-time caption" data-speaker="Amin" data-start="2492.320000" data-stop="2496.279000">it, and then you invoke it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2496.280000" data-stop="2497.479000"><strong class="speaker-name">Sacha:</strong>  Yeah, this is pretty cool.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2497.480000" data-stop="2499.599000">When I saw that in your config, I was like,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2499.600000" data-stop="2501.132000">I'm going to steal that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2501.133000" data-stop="2502.380000">Pre-filling the minibuffer</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2502.381000" data-stop="2504.119000">but still letting you do stuff with it,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2504.120000" data-stop="2506.879000">it's such a powerful thing, not just for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2506.880000" data-stop="2509.359000">completing the command itself, but even for when</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2509.360000" data-stop="2510.934000">you're using the command,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2510.935000" data-stop="2513.741000">but you want to do something with the input before.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2513.742000" data-stop="2515.871000">You don't want to do it all the way,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2515.872000" data-stop="2517.679000">send it in and submit right away.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2517.680000" data-stop="2520.199000">You want to actually do something with it after you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2520.200000" data-stop="2521.239000">insert it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2521.240000" data-stop="2522.779000">So great tip.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="2522.780000" data-stop="2524.119000"><strong class="speaker-name">Amin:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2524.120000" data-stop="2524.719000">Thanks.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2524.720000" data-stop="2525.879000">Yeah, it's pretty useful.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2525.880000" data-stop="2527.479000">It's pretty nice.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2527.480000" data-stop="2527.959000">Yeah.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2527.960000" data-stop="2531.359000">And then back to the Emacs or EXWM stuff.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2531.360000" data-stop="2538.039000">So before I had, I used to yeah, sorry, go ahead.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2538.040000" data-stop="2540.279000"><strong class="speaker-name">Sacha:</strong>  Sorry.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2540.280000" data-stop="2541.933000">I forgot whether I was muted or unmuted.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="2541.934000" data-stop="2546.719000"><strong class="speaker-name">Amin:</strong>  Okay, no worries.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2546.000000">42:26</span> <strong>workspaces
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0041.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0041.jpg" alt="image from video 00:42:56.600" data-time="00:42:56.600"></a><span class="audio-time caption" data-speaker="Amin" data-start="2546.720000" data-stop="2549.639000"><strong class="speaker-name">Amin:</strong> For the longest time, I had 10 default</span> <span class="audio-time caption" data-speaker="Amin" data-start="2549.640000" data-stop="2553.199000">EXWM workspaces on startup, and that can slow</span> <span class="audio-time caption" data-speaker="Amin" data-start="2553.200000" data-stop="2555.399000">things down a little bit.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2555.400000" data-stop="2559.679000">So I found that okay, I don't really use</span> <span class="audio-time caption" data-speaker="Amin" data-start="2559.680000" data-stop="2561.079000">all 10 workspaces always.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2561.080000" data-stop="2562.999000">So I set it to 5.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2563.000000" data-stop="2564.879000">So I get five workspaces initially.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2564.880000" data-stop="2568.439000">But I still bind keys here.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2568.440000" data-stop="2569.879000">Like if we go down.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2569.880000" data-stop="2573.839000">Let's see.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2573.840000" data-stop="2574.639000">Here.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2574.640000" data-stop="2579.999000">So here, I define those keys for all the way from,</span> <span class="audio-time caption" data-speaker="Amin" data-start="2580.000000" data-stop="2583.599000">let's say, from 0 to 9 for all 10.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2583.600000" data-stop="2586.479000">And then if I try to switch to a workspace that</span> <span class="audio-time caption" data-speaker="Amin" data-start="2586.480000" data-stop="2589.479000">doesn't exist, then EXWM will just go ahead and</span> <span class="audio-time caption" data-speaker="Amin" data-start="2589.480000" data-stop="2590.759000">create it for me.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2590.760000" data-stop="2594.279000">Yeah, so I found that pretty cool.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2594.280000" data-stop="2595.839000">You can create workspaces on the fly.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2595.840000" data-stop="2599.219000">Yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2599.220000" data-stop="2601.239000"><strong class="speaker-name">Sacha:</strong>  Yeah, and I saw that it moves your current</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2601.240000" data-stop="2602.159000">window there, too.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2602.160000" data-stop="2603.719000">So that's just like, OK.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2603.720000" data-stop="2606.359000">Let's move it to workspace number two or whatever.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2606.360000" data-stop="2608.699000">Very cool.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="2608.700000" data-stop="2609.119000"><strong class="speaker-name">Amin:</strong>  Yeah, yeah, yeah.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2609.120000" data-stop="2611.879000">I have keys or convenience keys for moving</span> <span class="audio-time caption" data-speaker="Amin" data-start="2611.880000" data-stop="2613.079000">some window to some workspace.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2613.080000" data-stop="2614.399000">Yeah, it's nice.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2614.400000" data-stop="2616.199000">Let's see.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2616.200000" data-stop="2616.559000">Let's see.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2616.560000" data-stop="2617.519000">Yeah.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2617.520000" data-stop="2619.839000">So these are just made key bindings.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2619.840000" data-stop="2626.379000">I use hjkl here for switching windows.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2626.000000">43:46</span> <strong>ZSA Voyager split keyboard, super x as a single key
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0042.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0042.jpg" alt="image from video 00:45:46.167" data-time="00:45:46.167"></a><span class="audio-time caption" data-speaker="Amin" data-start="2626.380000" data-stop="2630.439000"><strong class="speaker-name">Amin:</strong> I also have a ZSA Voyager split</span> <span class="audio-time caption" data-speaker="Amin" data-start="2630.440000" data-stop="2633.079000">ergonomic keyboard.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2633.080000" data-stop="2639.239000">I can basically customize it infinitely.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2639.240000" data-stop="2642.839000">For example, I don't really have a super key on the</span> <span class="audio-time caption" data-speaker="Amin" data-start="2642.840000" data-stop="2643.479000">first layer.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2643.480000" data-stop="2646.559000">What I have is a key that will do the s-x thingy,</span> <span class="audio-time caption" data-speaker="Amin" data-start="2646.560000" data-stop="2649.119000">basically, my prefix.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2649.120000" data-stop="2652.279000">So that's the last missing piece is that if I'm</span> <span class="audio-time caption" data-speaker="Amin" data-start="2652.280000" data-stop="2654.959000">at home and if I have this keyboard with me, then I</span> <span class="audio-time caption" data-speaker="Amin" data-start="2654.960000" data-stop="2657.079000">just hit one key and then that's it.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2657.080000" data-stop="2658.679000">I'm in my prefix.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2658.680000" data-stop="2661.479000">But even if not, on the laptop, the s-x or the</span> <span class="audio-time caption" data-speaker="Amin" data-start="2661.480000" data-stop="2664.279000">super comma are still easy enough for me to hit</span> <span class="audio-time caption" data-speaker="Amin" data-start="2664.280000" data-stop="2666.619000">it with one hand.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2666.620000" data-stop="2668.799000"><strong class="speaker-name">Sacha:</strong>  Now I'm jealous and I definitely want</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2668.800000" data-stop="2671.759000">to assign my prefixes to their own keys.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2671.760000" data-stop="2672.319000">Very tempting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2672.320000" data-stop="2674.999000">I've started using the numpad because my laptop has</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2675.000000" data-stop="2675.879000">one.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2675.880000" data-stop="2679.679000">I only use the numpad rarely, but we all need more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2679.680000" data-stop="2682.679000">keys.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="2682.680000" data-stop="2685.039000"><strong class="speaker-name">Amin:</strong>  Yeah, ergonomic keyboards are pretty nice,</span> <span class="audio-time caption" data-speaker="Amin" data-start="2685.040000" data-stop="2688.479000">especially these ones. For example, the ZSA ones where</span> <span class="audio-time caption" data-speaker="Amin" data-start="2688.480000" data-stop="2692.879000">you can put QMK on it, the QMK firmware. You can</span> <span class="audio-time caption" data-speaker="Amin" data-start="2692.880000" data-stop="2699.239000">define keys in a C file. I can actually show that.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2699.240000" data-stop="2716.239000">Let's see… QMK Firmware, Keyboards, ZSA,</span> <span class="audio-time caption" data-speaker="Amin" data-start="2716.240000" data-stop="2726.519000">Voyager, Bandali, and then keymap.c.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2726.520000" data-stop="2732.619000"><strong class="speaker-name">Sacha:</strong>  Is this in your repository somewhere?</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="2732.620000" data-stop="2734.959000"><strong class="speaker-name">Amin:</strong>  Right. It's in a different repository, but it's</span> <span class="audio-time caption" data-speaker="Amin" data-start="2734.960000" data-stop="2738.319000">still on https://git.kelar.org next to my configs</span> <span class="audio-time caption" data-speaker="Amin" data-start="2738.320000" data-stop="2744.399000">repository. You can find this as well, but if I go</span> <span class="audio-time caption" data-speaker="Amin" data-start="2744.400000" data-stop="2746.159000">smaller…</span> <span class="audio-time caption" data-speaker="Amin" data-start="2746.160000" data-stop="2750.279000">Yeah, you can define keys here and have different</span> <span class="audio-time caption" data-speaker="Amin" data-start="2750.280000" data-stop="2751.639000">layers, like the base layer.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2751.640000" data-stop="2754.959000">And then you can define a key to switch between</span> <span class="audio-time caption" data-speaker="Amin" data-start="2754.960000" data-stop="2758.039000">different layers and put some of the keys there anyway.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2758.040000" data-stop="2762.479000">So yeah, it's a whole rabbit hole in and of itself.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2762.480000" data-stop="2765.639000">Prot also uses a split ergonomic keyboard.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2765.640000" data-stop="2768.759000">It really does help if you're typing for long</span> <span class="audio-time caption" data-speaker="Amin" data-start="2768.760000" data-stop="2770.639000">periods of time.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2770.640000" data-stop="2775.159000">I actually had these for a while, and I wasn't using</span> <span class="audio-time caption" data-speaker="Amin" data-start="2775.160000" data-stop="2778.039000">them too much, but I started slowly getting some pain</span> <span class="audio-time caption" data-speaker="Amin" data-start="2778.040000" data-stop="2779.679000">in my wrists and here.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2779.680000" data-stop="2782.639000">So I was like, okay, I have the keyboard,</span> <span class="audio-time caption" data-speaker="Amin" data-start="2782.640000" data-stop="2784.959000">might as well put it to good use, and I've started</span> <span class="audio-time caption" data-speaker="Amin" data-start="2784.960000" data-stop="2786.839000">using it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2786.000000">46:26</span> <strong>Keybindings
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0043.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0043.jpg" alt="image from video 00:46:53.767" data-time="00:46:53.767"></a><span class="audio-time caption" data-speaker="Sacha" data-start="2786.840000" data-stop="2788.839000"><strong class="speaker-name">Sacha:</strong>  Okay, so most of your keyboard shortcuts come</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2788.840000" data-stop="2793.319000">off that kind of s-x or C-c something, and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2793.320000" data-stop="2796.759000">then you have a long prefix sequence, and you just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2796.760000" data-stop="2799.759000">remember everything or you use your…</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2799.760000" data-stop="2804.959000">pre-fill some of it and then fill in the rest of the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2804.960000" data-stop="2810.859000">command.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="2810.860000" data-stop="2813.759000"><strong class="speaker-name">Amin:</strong>  Pretty much all my window management related</span> <span class="audio-time caption" data-speaker="Amin" data-start="2813.760000" data-stop="2818.079000">keys are on this s-x prefix that I'm showing here.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2818.080000" data-stop="2822.119000">And then I have a few other ones which I think I</span> <span class="audio-time caption" data-speaker="Amin" data-start="2822.120000" data-stop="2822.679000">showed earlier.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2822.680000" data-stop="2824.879000">Is it this one?</span> <span class="audio-time caption" data-speaker="Amin" data-start="2824.880000" data-stop="2828.679000">Anyway, I bind a few general keys outside of the</span> <span class="audio-time caption" data-speaker="Amin" data-start="2828.680000" data-stop="2832.600000">s-x thing, like C-c e i.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2832.601000" data-stop="2837.033000">For example, I have C-c e e for eval-last-sexp.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2837.034000" data-stop="2839.367000">I do that a lot, so it's easy to hit that.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2839.368000" data-stop="2843.379000">Making frames or deleting frames.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2843.380000" data-stop="2846.633000"><strong class="speaker-name">Sacha:</strong>  I love how Emacs uptime is something you use</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2846.634000" data-stop="2851.379000">frequently enough that you have a keyboard shortcut for it.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="2851.380000" data-stop="2852.233000"><strong class="speaker-name">Amin:</strong>  Yeah, of course.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2852.234000" data-stop="2854.100000">I mean, I'm sometimes curious to see how long has my</span> <span class="audio-time caption" data-speaker="Amin" data-start="2854.101000" data-stop="2862.019000">Emacs session been running.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2862.020000" data-stop="2864.559000">To continue with the EXWM stuff, let's see.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2864.560000" data-stop="2869.559000">This is just some keybindings I define here.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2869.560000" data-stop="2871.399000">It's all Emacs Lisp, right?</span> <span class="audio-time caption" data-speaker="Amin" data-start="2871.400000" data-stop="2872.119000">It's amazing.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2872.120000" data-stop="2875.119000">You can mapc over whatever sequence and create</span> <span class="audio-time caption" data-speaker="Amin" data-start="2875.120000" data-stop="2877.519000">keybindings like that.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2877.520000" data-stop="2879.999000">Only with Emacs we can do things like that.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2880.000000" data-stop="2882.359000">I just love it.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2882.360000" data-stop="2885.040000">Let's see.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2885.000000">48:05</span> <strong>Media buttons
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0044.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0044.jpg" alt="image from video 00:48:36.200" data-time="00:48:36.200"></a><span class="audio-time caption" data-speaker="Amin" data-start="2885.080000" data-stop="2888.079000"><strong class="speaker-name">Amin:</strong> I still keep these three other keys for raising and</span> <span class="audio-time caption" data-speaker="Amin" data-start="2888.080000" data-stop="2892.799000">lowering the volume and toggling mute off of that</span> <span class="audio-time caption" data-speaker="Amin" data-start="2892.800000" data-stop="2896.879000">prefix and just directly on my keyboard, hitting it</span> <span class="audio-time caption" data-speaker="Amin" data-start="2896.880000" data-stop="2901.359000">directly in the exwm-input-global-keys because I do</span> <span class="audio-time caption" data-speaker="Amin" data-start="2901.360000" data-stop="2904.279000">that very, very frequently.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2904.280000" data-stop="2906.599000">But I also have scripts that I can invoke.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2906.600000" data-stop="2910.239000">I should do keycast.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2910.240000" data-stop="2916.179000">So yeah, I can</span> <span class="audio-time caption" data-speaker="Amin" data-start="2916.180000" data-stop="2917.639000">invoke the prefix with semicolon.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2917.640000" data-stop="2921.919000">I can set my volume here, adjust it here, type in what</span> <span class="audio-time caption" data-speaker="Amin" data-start="2921.920000" data-stop="2927.039000">volume I want, or with the single quote, I can enter a</span> <span class="audio-time caption" data-speaker="Amin" data-start="2927.040000" data-stop="2929.079000">value for the screen brightness.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2929.080000" data-stop="2931.359000">I like these things to be exact depending on the</span> <span class="audio-time caption" data-speaker="Amin" data-start="2931.360000" data-stop="2932.039000">lighting in the room.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2932.040000" data-stop="2938.039000">I have preferred brightness values of 50 or 12 or 10</span> <span class="audio-time caption" data-speaker="Amin" data-start="2938.040000" data-stop="2940.039000">that I manually adjust.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2940.040000" data-stop="2944.999000">I guess it's a poor man's version of having something</span> <span class="audio-time caption" data-speaker="Amin" data-start="2945.000000" data-stop="2948.959000">with a light sensor that can pick up and adjust</span> <span class="audio-time caption" data-speaker="Amin" data-start="2948.960000" data-stop="2951.599000">automatically.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2951.600000" data-stop="2952.279000">I do it manually.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2952.280000" data-stop="2952.959000">Yeah.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2952.960000" data-stop="2957.179000">Sorry, you just muted yourself again.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2957.180000" data-stop="2959.799000"><strong class="speaker-name">Sacha:</strong>  You're just probably this close to writing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2959.800000" data-stop="2962.119000">the Emacs Lisp that takes your webcam image and then</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2962.120000" data-stop="2962.879000">adjusts your light.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2962.880000" data-stop="2965.639000">But I think Prot was also saying he likes to do the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2965.640000" data-stop="2967.999000">lighting changes manually as well because warmer</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2968.000000" data-stop="2970.439000">colors versus cooler colors and all of that stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2970.440000" data-stop="2972.839000">Anyway, so you have all these buttons that EXWM</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2972.840000" data-stop="2976.639000">listens to and it can launch various things for.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2976.640000" data-stop="2981.899000">That's a lot of things.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="2981.900000" data-stop="2983.279000"><strong class="speaker-name">Amin:</strong>  Yeah, those are pretty cool.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2983.000000">49:43</span> <strong>exwm-input-simulation-keys!
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0045.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0045.jpg" alt="image from video 00:50:08.267" data-time="00:50:08.267"></a><span class="audio-time caption" data-speaker="Amin" data-start="2983.280000" data-stop="2985.959000"><strong class="speaker-name">Amin:</strong> EXWM has this lovely feature called input</span> <span class="audio-time caption" data-speaker="Amin" data-start="2985.960000" data-stop="2987.239000">simulation keys where</span> <span class="audio-time caption" data-speaker="Amin" data-start="2987.240000" data-stop="2990.439000">You can basically use it to bring Emacs key bindings</span> <span class="audio-time caption" data-speaker="Amin" data-start="2990.440000" data-stop="2993.799000">to other applications like Firefox or whatever.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2993.800000" data-stop="2995.959000">And yeah, it's mind blowing when you try it for the</span> <span class="audio-time caption" data-speaker="Amin" data-start="2995.960000" data-stop="2996.639000">first time.</span> <span class="audio-time caption" data-speaker="Amin" data-start="2996.640000" data-stop="3000.719000">for example, I bind C-b to just hit</span> <span class="audio-time caption" data-speaker="Amin" data-start="3000.720000" data-stop="3002.879000">the left arrow on the keyboard.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3002.880000" data-stop="3004.999000">And it does that.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3005.000000" data-stop="3008.239000">So I can define all of these commands that I'm using</span> <span class="audio-time caption" data-speaker="Amin" data-start="3008.240000" data-stop="3010.279000">or used to using in Emacs.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3010.280000" data-stop="3014.279000">So I can get them in Firefox or other applications as</span> <span class="audio-time caption" data-speaker="Amin" data-start="3014.280000" data-stop="3014.519000">well.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3014.520000" data-stop="3016.959000">Realistically, it's mostly Firefox.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3016.960000" data-stop="3019.319000">It's the only other program that I spend any</span> <span class="audio-time caption" data-speaker="Amin" data-start="3019.320000" data-stop="3021.159000">reasonable amount of time outside of Emacs.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3021.197000" data-stop="3024.199000"><strong class="speaker-name">Sacha:</strong>  Let me point out this very important one that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3024.200000" data-stop="3025.039000">you have there.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3025.040000" data-stop="3028.239000">Under selection/cut/copy/paste, I see a C-w</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3028.240000" data-stop="3030.519000">input simulation key.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3030.520000" data-stop="3033.079000">So this is for all the people who have accidentally</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3033.080000" data-stop="3036.079000">closed their browser tab while trying to copy text.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3036.080000" data-stop="3038.239000">This is how you solve that problem.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3038.240000" data-stop="3041.879000">Use EXWM and use EXWM input simulation keys and you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3041.880000" data-stop="3045.599000">don't have to accidentally close your browser tabs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3045.600000" data-stop="3046.439000">again.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3046.440000" data-stop="3049.039000">@blaiseutube asks, hey, what about time since last save?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3049.040000" data-stop="3051.319000">Or do you have some kind of autosave magic?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3051.320000" data-stop="3055.399000">you know, in reference to the uptime thing,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3055.400000" data-stop="3056.119000">right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3056.120000" data-stop="3064.679000">You have this thing that shows you…</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="3064.680000" data-stop="3065.359000"><strong class="speaker-name">Amin:</strong>  I don't think I have anything for autosave,</span> <span class="audio-time caption" data-speaker="Amin" data-start="3065.360000" data-stop="3072.079000">but I have this habit of… I save everything pretty</span> <span class="audio-time caption" data-speaker="Amin" data-start="3072.080000" data-stop="3073.239000">regularly.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3073.240000" data-stop="3075.359000">Yeah, so I've never really needed that feature, but</span> <span class="audio-time caption" data-speaker="Amin" data-start="3075.360000" data-stop="3078.199000">I'm sure Emacs has something where you can, at the</span> <span class="audio-time caption" data-speaker="Amin" data-start="3078.200000" data-stop="3081.239000">very least, just very dumb, simple implementation of</span> <span class="audio-time caption" data-speaker="Amin" data-start="3081.240000" data-stop="3084.519000">has it been idle for one minute, then just do a save</span> <span class="audio-time caption" data-speaker="Amin" data-start="3084.520000" data-stop="3085.599000">buffer.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3085.600000" data-stop="3087.759000">You can roll your own.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3087.760000" data-stop="3089.999000">But I don't have anything.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3090.000000" data-stop="3090.360000"><strong class="speaker-name">Sacha:</strong>  All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3090.401000" data-stop="3094.359000">I'm getting really tempted now to try out EXWM, even</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3094.360000" data-stop="3097.919000">if it's just for those global keyboard remapping</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3097.920000" data-stop="3099.339000">things.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3099.000000">51:39</span> <strong>exwm: managing floating windows
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0046.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0046.jpg" alt="image from video 00:51:43.100" data-time="00:51:43.100"></a><span class="audio-time caption" data-speaker="Sacha" data-start="3099.340000" data-stop="3103.079000"><strong class="speaker-name">Sacha:</strong> How is it for windows that you've got to have floating?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3103.080000" data-stop="3106.559000">I feel like it's very good at handling tiling things,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3106.560000" data-stop="3109.599000">but how is it for sometimes the apps kind of really</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3109.600000" data-stop="3112.439000">want the floating window?</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="3112.440000" data-stop="3114.879000"><strong class="speaker-name">Amin:</strong>  Right, yeah, so you can toggle any window to</span> <span class="audio-time caption" data-speaker="Amin" data-start="3114.880000" data-stop="3118.279000">be floating or not, and you can also - actually, we're</span> <span class="audio-time caption" data-speaker="Amin" data-start="3118.280000" data-stop="3121.359000">just looking at it here. EXWM manage configurations,</span> <span class="audio-time caption" data-speaker="Amin" data-start="3121.360000" data-stop="3126.039000">to match on the instance name or the class name of a</span> <span class="audio-time caption" data-speaker="Amin" data-start="3126.040000" data-stop="3130.199000">window that you can get from xprop, to automatically</span> <span class="audio-time caption" data-speaker="Amin" data-start="3130.200000" data-stop="3134.959000">make that tiling. For example, if I do my prefix and</span> <span class="audio-time caption" data-speaker="Amin" data-start="3134.960000" data-stop="3138.159000">then capital T, it launches a floating terminal for me</span> <span class="audio-time caption" data-speaker="Amin" data-start="3138.160000" data-stop="3141.039000">here.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3141.040000" data-stop="3145.839000">And if I go back to where I set it up, I just launch</span> <span class="audio-time caption" data-speaker="Amin" data-start="3145.840000" data-stop="3147.719000">Xterm with the -name argument.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3147.720000" data-stop="3150.159000">This is where it can set the instance.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3150.160000" data-stop="3152.759000">And I just put any string you can want, like floating,</span> <span class="audio-time caption" data-speaker="Amin" data-start="3152.760000" data-stop="3153.359000">for example.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3153.360000" data-stop="3157.399000">And then here in my configuration, I just check that</span> <span class="audio-time caption" data-speaker="Amin" data-start="3157.400000" data-stop="3160.079000">if the instance name is floating, then I'll go ahead</span> <span class="audio-time caption" data-speaker="Amin" data-start="3160.080000" data-stop="3161.519000">and float the window.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3161.520000" data-stop="3163.919000">Simple as that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3163.920000" data-stop="3165.639000"><strong class="speaker-name">Sacha:</strong>  All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3165.640000" data-stop="3169.879000">This is starting to look exceedingly tempting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3169.880000" data-stop="3173.839000">Lol, I save everything regularly, so he's one of those</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3173.840000" data-stop="3180.639000">people who compulsively hit C-x C-s.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="3180.640000" data-stop="3181.639000"><strong class="speaker-name">Amin:</strong>  Yeah, I do that a lot.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3181.640000" data-stop="3182.239000">I don't know.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3182.240000" data-stop="3182.999000">It's just me.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3183.000000" data-stop="3184.759000">But, yeah.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3184.760000" data-stop="3185.239000">Yeah.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3185.240000" data-stop="3189.399000">And then, I don't know.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3189.400000" data-stop="3190.999000">EXWM is awesome.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3191.000000">53:11</span> <strong>exwm: application-specific local simulation keys
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0047.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0047.jpg" alt="image from video 00:53:11.000" data-time="00:53:11.000"></a><span class="audio-time caption" data-speaker="Amin" data-start="3191.000000" data-stop="3193.879000"><strong class="speaker-name">Amin:</strong> You can also put local simulation keys,</span> <span class="audio-time caption" data-speaker="Amin" data-start="3193.880000" data-stop="3196.999000">application-specific simulation keys, depending</span> <span class="audio-time caption" data-speaker="Amin" data-start="3197.000000" data-stop="3199.999000">on, the application, terminals, for</span> <span class="audio-time caption" data-speaker="Amin" data-start="3200.000000" data-stop="3201.559000">example, or, Zathura.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3201.560000" data-stop="3203.079000">This is a PDF viewer.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3203.080000" data-stop="3208.759000">To have application-specific custom key bindings,</span> <span class="audio-time caption" data-speaker="Amin" data-start="3208.760000" data-stop="3209.999000">how cool is that?</span> <span class="audio-time caption" data-speaker="Amin" data-start="3210.000000" data-stop="3213.199000">For example, if I'm in Xterm or something like the</span> <span class="audio-time caption" data-speaker="Amin" data-start="3213.200000" data-stop="3217.879000">Mate terminal, hitting C-c C-c twice basically,</span> <span class="audio-time caption" data-speaker="Amin" data-start="3217.880000" data-stop="3220.919000">it'll just send the C-c key to the terminal.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3220.920000" data-stop="3223.879000">Because one thing with EXWM is that you can set it to</span> <span class="audio-time caption" data-speaker="Amin" data-start="3223.880000" data-stop="3227.639000">capture a couple of Emacs prefixes, like C-x or</span> <span class="audio-time caption" data-speaker="Amin" data-start="3227.640000" data-stop="3228.079000">C-c.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3228.080000" data-stop="3232.399000">So the application by default doesn't see it because</span> <span class="audio-time caption" data-speaker="Amin" data-start="3232.400000" data-stop="3233.279000">Emacs captures it.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3233.280000" data-stop="3234.959000">But this is one of those</span> <span class="audio-time caption" data-speaker="Amin" data-start="3234.960000" data-stop="3239.599000">mechanisms by which you can send a key through.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3239.600000" data-stop="3244.219000">Let's see.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3244.000000">54:04</span> <strong>binding C-q to exwm-input-send-next-key</strong></div><p></p><span class="audio-time caption" data-speaker="Amin" data-start="3244.220000" data-stop="3249.639000"><strong class="speaker-name">Amin:</strong> The other thing is, you can set it like EXWM inputs</span> <span class="audio-time caption" data-speaker="Amin" data-start="3249.640000" data-stop="3250.999000">send next key.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3251.000000" data-stop="3253.999000">So the default is C-c C-q, but I just</span> <span class="audio-time caption" data-speaker="Amin" data-start="3254.000000" data-stop="3259.319000">bind it to C-q, and I, for example, can do</span> <span class="audio-time caption" data-speaker="Amin" data-start="3259.320000" data-stop="3261.639000">C-q C-t to send C-t to the</span> <span class="audio-time caption" data-speaker="Amin" data-start="3261.640000" data-stop="3262.679000">underlying application.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3262.680000" data-stop="3264.159000">So that's the other thing.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3264.160000" data-stop="3268.579000">Yeah, and then let's see.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3268.000000">54:28</span> <strong>Renaming buffers
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0049.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0049.jpg" alt="image from video 00:55:05.333" data-time="00:55:05.333"></a><span class="audio-time caption" data-speaker="Amin" data-start="3268.580000" data-stop="3271.239000"><strong class="speaker-name">Amin:</strong> So this thingy here, I enable EXWM and I add this</span> <span class="audio-time caption" data-speaker="Amin" data-start="3271.240000" data-stop="3275.199000">rename hook and all it does is basically to add the</span> <span class="audio-time caption" data-speaker="Amin" data-start="3275.200000" data-stop="3281.559000">window titles to the buffer that I can see on the</span> <span class="audio-time caption" data-speaker="Amin" data-start="3281.560000" data-stop="3283.479000">mode line.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3283.480000" data-stop="3285.599000">But as long as it's within a certain</span> <span class="audio-time caption" data-speaker="Amin" data-start="3285.600000" data-stop="3287.759000">reasonable length, like for example, I have 25</span> <span class="audio-time caption" data-speaker="Amin" data-start="3287.760000" data-stop="3288.239000">characters.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3288.240000" data-stop="3291.479000">If it's longer than that, it will just put dot dot dot (...).</span> <span class="audio-time caption" data-speaker="Amin" data-start="3291.480000" data-stop="3293.879000">So yeah, that's all the purpose of that.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3293.880000" data-stop="3300.599000">Let's see, for example, if I launch Xterm, it appears</span> <span class="audio-time caption" data-speaker="Amin" data-start="3300.600000" data-stop="3301.439000">there.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3301.440000" data-stop="3305.319000">The perfect example is actually here on the right-hand</span> <span class="audio-time caption" data-speaker="Amin" data-start="3305.320000" data-stop="3305.519000">side.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3305.520000" data-stop="3308.159000">On the mode line, we see Firefox ESR Emacs Chat.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3308.160000" data-stop="3311.079000">It's a bit long, so it just puts the dot dot dot there.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3311.080000" data-stop="3316.919000">So that's all that does.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3316.920000" data-stop="3319.759000"><strong class="speaker-name">Sacha:</strong>  Yeah, now being able to use Emacs to manage</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3319.760000" data-stop="3321.919000">the tiling of these things instead of my having to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3321.920000" data-stop="3326.079000">fiddle with alt-dragging things to snap nicely into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3326.080000" data-stop="3326.639000">buffers.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3326.640000" data-stop="3328.759000">Yes, very cool stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3328.760000" data-stop="3329.559000">EXWM.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3329.560000" data-stop="3332.739000">Gotta try it.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="3332.740000" data-stop="3334.399000"><strong class="speaker-name">Amin:</strong>  Yeah, for sure.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3334.400000" data-stop="3336.279000">Yeah, let's see.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3336.000000">55:36</span> <strong>dunst for notifications
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0050.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0050.jpg" alt="image from video 00:55:36.300" data-time="00:55:36.300"></a><span class="audio-time caption" data-speaker="Amin" data-start="3336.280000" data-stop="3338.359000"><strong class="speaker-name">Amin:</strong> Here I launch Dunst if the executable is</span> <span class="audio-time caption" data-speaker="Amin" data-start="3338.360000" data-stop="3340.959000">installed for getting notifications in EXWM.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3340.960000" data-stop="3344.839000">I think there's at least one or two Emacs specific</span> <span class="audio-time caption" data-speaker="Amin" data-start="3344.840000" data-stop="3348.039000">packages that implement a simple notification</span> <span class="audio-time caption" data-speaker="Amin" data-start="3348.040000" data-stop="3351.599000">daemon or backend so that Emacs itself can handle</span> <span class="audio-time caption" data-speaker="Amin" data-start="3351.600000" data-stop="3352.039000">that.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3352.040000" data-stop="3354.679000">But I found Dunst good enough for my use cases coming</span> <span class="audio-time caption" data-speaker="Amin" data-start="3354.680000" data-stop="3357.399000">from i3, Sway, like tiling window manager</span> <span class="audio-time caption" data-speaker="Amin" data-start="3357.400000" data-stop="3358.639000">background.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3358.640000" data-stop="3360.559000">I just reuse that.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3360.560000" data-stop="3365.719000">So yeah, I just start a process, keep a handle of it</span> <span class="audio-time caption" data-speaker="Amin" data-start="3365.720000" data-stop="3367.759000">in this bandali&#45;&#45;dunst-process variable here.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3367.760000" data-stop="3371.919000">And this thing I discovered recently, it's cool.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3371.920000" data-stop="3375.279000">using set-process-query-on-exit-flag, you</span> <span class="audio-time caption" data-speaker="Amin" data-start="3375.280000" data-stop="3378.159000">can basically have Emacs not ask you if you want to</span> <span class="audio-time caption" data-speaker="Amin" data-start="3378.160000" data-stop="3381.159000">exit Emacs if that process is still running.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3381.160000" data-stop="3383.359000">It'll just kill it without confirming with you.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3383.360000" data-stop="3387.199000">So just a little convenience.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3387.200000" data-stop="3389.279000"><strong class="speaker-name">Sacha:</strong>  That is also cool.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3389.280000" data-stop="3391.479000">Just a heads up, I have about 15 minutes before the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3391.480000" data-stop="3394.919000">kiddo runs out because she'll be done with school then.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3394.920000" data-stop="3397.879000">Even just the EXWM part and other things that you've</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3397.880000" data-stop="3401.599000">shown us in the config have been super awesome.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3401.600000" data-stop="3404.599000">But are there other things in the next 15 minutes that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3404.600000" data-stop="3407.519000">you would love to show people so that they can see how</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3407.520000" data-stop="3414.539000">it works in practice?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3414.000000">56:54</span> <strong>exwm xsettings and responding to screen configuration changes
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0051.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0051.jpg" alt="image from video 00:57:13.733" data-time="00:57:13.733"></a><span class="audio-time caption" data-speaker="Amin" data-start="3414.540000" data-stop="3415.999000"><strong class="speaker-name">Amin:</strong>  One thing I'll just mention, EXWM,</span> <span class="audio-time caption" data-speaker="Amin" data-start="3416.000000" data-stop="3419.319000">one more thing, and then I'll go check.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3419.320000" data-stop="3424.679000">I think this is kind of recent: EXWM xsettings, and</span> <span class="audio-time caption" data-speaker="Amin" data-start="3424.680000" data-stop="3430.439000">this allows you to dynamically at runtime change some</span> <span class="audio-time caption" data-speaker="Amin" data-start="3430.440000" data-stop="3433.719000">of these things that you would normally set in an X</span> <span class="audio-time caption" data-speaker="Amin" data-start="3433.720000" data-stop="3440.839000">resources file, like fonts. These kinds of settings</span> <span class="audio-time caption" data-speaker="Amin" data-start="3440.840000" data-stop="3444.759000">were especially commonplace back when Wayland wasn't a</span> <span class="audio-time caption" data-speaker="Amin" data-start="3444.760000" data-stop="3447.279000">thing or wasn't very popular. You would set some of</span> <span class="audio-time caption" data-speaker="Amin" data-start="3447.280000" data-stop="3448.399000">these font settings there.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3448.400000" data-stop="3451.999000">With EXWM xsettings, you can do this dynamically,</span> <span class="audio-time caption" data-speaker="Amin" data-start="3452.000000" data-stop="3459.119000">and what's awesome about that is it also lets you hook</span> <span class="audio-time caption" data-speaker="Amin" data-start="3459.120000" data-stop="3463.119000">into, for example, if your screen configuration</span> <span class="audio-time caption" data-speaker="Amin" data-start="3463.120000" data-stop="3467.839000">changes, if you plug in a monitor or unplug it, then</span> <span class="audio-time caption" data-speaker="Amin" data-start="3467.840000" data-stop="3473.399000">you can run whatever xrandr command to set it up and</span> <span class="audio-time caption" data-speaker="Amin" data-start="3473.400000" data-stop="3475.199000">also adjust those settings.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3475.200000" data-stop="3479.399000">The main thing I use it for is to change the DPI</span> <span class="audio-time caption" data-speaker="Amin" data-start="3479.400000" data-stop="3483.639000">setting. The thing with X11 or Xorg is, unfortunately,</span> <span class="audio-time caption" data-speaker="Amin" data-start="3483.640000" data-stop="3487.439000">there's no per-monitor DPI. There's one global DPI.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3487.440000" data-stop="3491.799000">But I found that on my high-DPI laptop screen, if I</span> <span class="audio-time caption" data-speaker="Amin" data-start="3491.800000" data-stop="3496.159000">set the resolution to 1920x1080 instead of the full</span> <span class="audio-time caption" data-speaker="Amin" data-start="3496.160000" data-stop="3500.079000">resolution, then the default DPI of 96 works just fine</span> <span class="audio-time caption" data-speaker="Amin" data-start="3500.080000" data-stop="3504.479000">with my external monitor as well. All this little hook</span> <span class="audio-time caption" data-speaker="Amin" data-start="3504.480000" data-stop="3508.079000">does, by calling into this function, is: if I'm</span> <span class="audio-time caption" data-speaker="Amin" data-start="3508.080000" data-stop="3510.879000">plugging in my external monitor, lower the resolution</span> <span class="audio-time caption" data-speaker="Amin" data-start="3510.880000" data-stop="3515.119000">and lower the DPI, and if I unplug it, go back to the</span> <span class="audio-time caption" data-speaker="Amin" data-start="3515.120000" data-stop="3519.359000">high thing. I just love this.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3519.360000" data-stop="3520.533000"><strong class="speaker-name">Sacha:</strong>  That's great.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3520.534000" data-stop="3522.199000">We're definitely not going to demonstrate that because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3522.200000" data-stop="3524.079000">plugging in and unplugging monitors is not a good</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3524.080000" data-stop="3527.279000">thing for screen sharing, but that sounds really cool.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3527.280000" data-stop="3530.559000">When things change, you can actually get your system</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3530.560000" data-stop="3533.399000">to adapt to the changes for you.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="3533.400000" data-stop="3534.359000"><strong class="speaker-name">Amin:</strong>  Yeah, it's lovely.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3534.360000" data-stop="3535.559000">Let's see.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3535.560000" data-stop="3539.879000">There's so much more to talk about.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3539.000000">58:59</span> <strong>Slowly getting back into Org mode</strong></div><p></p><span class="audio-time caption" data-speaker="Amin" data-start="3539.880000" data-stop="3543.359000"><strong class="speaker-name">Amin:</strong> I'm slowly getting back into Org Mode again.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3543.360000" data-stop="3548.479000">For the longest time, I didn't use it and I just used</span> <span class="audio-time caption" data-speaker="Amin" data-start="3548.480000" data-stop="3550.119000">Markdown for my website as well.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3550.120000" data-stop="3553.119000">But I found that it's kind of limited.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3553.120000" data-stop="3555.919000">For example, I was using a Markdown implementation</span> <span class="audio-time caption" data-speaker="Amin" data-start="3555.920000" data-stop="3559.199000">that was written in C and I can't easily customize it.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3559.200000" data-stop="3563.919000">Whereas with Org, I can hook into or create</span> <span class="audio-time caption" data-speaker="Amin" data-start="3563.920000" data-stop="3566.519000">my custom HTML backend that's a</span> <span class="audio-time caption" data-speaker="Amin" data-start="3566.520000" data-stop="3570.479000">derivative of ox-html, even if I don't necessarily like</span> <span class="audio-time caption" data-speaker="Amin" data-start="3570.480000" data-stop="3573.759000">the defaults or the settings for ox-html.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3573.760000" data-stop="3578.359000">I just recently started writing a new backend called</span> <span class="audio-time caption" data-speaker="Amin" data-start="3578.360000" data-stop="3581.079000">bhtml for Bandali HTML.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3581.080000" data-stop="3583.439000">It's just a boilerplate.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3583.440000" data-stop="3586.459000">I don't have much there yet, but that's the idea.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3586.460000" data-stop="3589.199000"><strong class="speaker-name">Sacha:</strong>  I love how you can hook into all of these different</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3589.200000" data-stop="3592.119000">aspects of Emacs and get it to do exactly what you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3592.120000" data-stop="3593.979000">want.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="3593.980000" data-stop="3594.679000"><strong class="speaker-name">Amin:</strong>  Yeah, so that's cool.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3594.680000" data-stop="3598.159000">Let's see.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3598.000000">59:58</span> <strong>chat notes
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0052.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0052.jpg" alt="image from video 01:00:16.067" data-time="01:00:16.067"></a><span class="audio-time caption" data-speaker="Amin" data-start="3598.160000" data-stop="3601.319000"><strong class="speaker-name">Amin:</strong> I have written some things about the prompt for this</span> <span class="audio-time caption" data-speaker="Amin" data-start="3601.320000" data-stop="3601.679000">meeting.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3601.680000" data-stop="3608.999000">Yeah, so I talked about that stuff briefly.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3609.000000" data-stop="3611.639000">Minibuffer setup.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3611.640000" data-stop="3614.559000">Things that I love about my setup is that it's kind of</span> <span class="audio-time caption" data-speaker="Amin" data-start="3614.560000" data-stop="3616.039000">portable, simple.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3616.040000" data-stop="3618.839000">People can easily copy things from it if they want.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3618.840000" data-stop="3620.159000">It's kind of self-contained.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3620.160000" data-stop="3623.319000">And that was kind of a big thing a while back when I</span> <span class="audio-time caption" data-speaker="Amin" data-start="3623.320000" data-stop="3627.159000">wanted to use my configurations on a couple of work</span> <span class="audio-time caption" data-speaker="Amin" data-start="3627.160000" data-stop="3628.199000">machines.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3628.200000" data-stop="3632.799000">And these don't have direct outbound internet access.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3632.800000" data-stop="3636.599000">So I couldn't do things like installing packages with</span> <span class="audio-time caption" data-speaker="Amin" data-start="3636.600000" data-stop="3639.759000">ELPA because that's done over HTTP.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3639.760000" data-stop="3642.879000">So yeah, I use submodules now.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3642.880000" data-stop="3647.439000">I recently began documenting my setup, very much</span> <span class="audio-time caption" data-speaker="Amin" data-start="3647.440000" data-stop="3652.139000">inspired by Prot and Sacha and others.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3652.000000">1:00:52</span> <strong>Mode line</strong></div><p></p><span class="audio-time caption" data-speaker="Amin" data-start="3652.140000" data-stop="3654.759000"><strong class="speaker-name">Amin:</strong> The things that I'm looking forward to tweaking next</span> <span class="audio-time caption" data-speaker="Amin" data-start="3654.760000" data-stop="3655.759000">is the mode line.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3655.760000" data-stop="3658.933000">This is basically the default mode line of Emacs.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3658.934000" data-stop="3661.879000">A couple versions ago, they added a setting for</span> <span class="audio-time caption" data-speaker="Amin" data-start="3661.880000" data-stop="3663.479000">compacting the mode line, which</span> <span class="audio-time caption" data-speaker="Amin" data-start="3663.480000" data-stop="3666.733000">improves a lot of the extraneous whitespace in it,</span> <span class="audio-time caption" data-speaker="Amin" data-start="3666.734000" data-stop="3667.700000">which is great.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3667.701000" data-stop="3670.100000">It's still… There's too much information.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3670.101000" data-stop="3672.733000">If you use multiple windows</span> <span class="audio-time caption" data-speaker="Amin" data-start="3672.734000" data-stop="3674.067000">or even especially if you use EXWM</span> <span class="audio-time caption" data-speaker="Amin" data-start="3674.068000" data-stop="3676.900000">all of those things like the date</span> <span class="audio-time caption" data-speaker="Amin" data-start="3676.901000" data-stop="3678.467000">or like the battery get repeated</span> <span class="audio-time caption" data-speaker="Amin" data-start="3678.468000" data-stop="3680.000000">in all of the windows,</span> <span class="audio-time caption" data-speaker="Amin" data-start="3680.001000" data-stop="3682.000000">so I'm looking forward to</span> <span class="audio-time caption" data-speaker="Amin" data-start="3682.001000" data-stop="3684.700000">doing my mode line in such a way that</span> <span class="audio-time caption" data-speaker="Amin" data-start="3684.701000" data-stop="3689.619000">for example, it shows most of those things.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3689.620000" data-stop="3691.500000">And Prot actually has</span> <span class="audio-time caption" data-speaker="Amin" data-start="3691.501000" data-stop="3692.900000">an excellent video about that</span> <span class="audio-time caption" data-speaker="Amin" data-start="3692.901000" data-stop="3695.667000">where he shows how you can create</span> <span class="audio-time caption" data-speaker="Amin" data-start="3695.668000" data-stop="3698.739000">your own custom mode line.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3698.740000" data-stop="3699.700000"><strong class="speaker-name">Sacha:</strong>  I've also been tempted</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3699.701000" data-stop="3701.833000">to start using the header line too</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3701.834000" data-stop="3702.833000">because that's another thing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3702.834000" data-stop="3705.799000">that you can put information in.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="3705.800000" data-stop="3709.319000"><strong class="speaker-name">Amin:</strong>  Right, yep, header-line is awesome.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3709.000000">1:01:49</span> <strong>display-buffer-alist</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3709.320000" data-stop="3710.319000"><strong class="speaker-name">Sacha:</strong>  Yeah, the display-buffer-alist</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3710.320000" data-stop="3711.799000">is particularly powerful</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3711.800000" data-stop="3714.799000">because you're combining it with EXWM, so it'd be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3714.800000" data-stop="3718.959000">interesting to see how you can manage windows and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3718.960000" data-stop="3721.479000">applications and stuff.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="3721.480000" data-stop="3722.833000"><strong class="speaker-name">Amin:</strong>  Especially, just like how we saw</span> <span class="audio-time caption" data-speaker="Amin" data-start="3722.834000" data-stop="3723.599000">in today's video call</span> <span class="audio-time caption" data-speaker="Amin" data-start="3723.600000" data-stop="3725.959000">and also a call that I had with Prot recently.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3725.960000" data-stop="3728.119000">For example, if I open a describe-variable or</span> <span class="audio-time caption" data-speaker="Amin" data-start="3728.120000" data-stop="3731.999000">something, it'll by default use the right area of the</span> <span class="audio-time caption" data-speaker="Amin" data-start="3732.000000" data-stop="3734.999000">screen right now where our video is.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3735.000000" data-stop="3735.639000">So it reuses that.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3735.640000" data-stop="3741.439000">So I'm also looking forward to reading more about and</span> <span class="audio-time caption" data-speaker="Amin" data-start="3741.440000" data-stop="3743.480000">configuring display-buffer-alist.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3743.000000">1:02:23</span> <strong>TRAMP slowness, maybe disabling VC detection?</strong></div><p></p><span class="audio-time caption" data-speaker="Amin" data-start="3743.481000" data-stop="3744.619000"><strong class="speaker-name">Amin:</strong> I'd like to figure out some TRAMP slowness.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3744.620000" data-stop="3745.679000">I recently tried using it again.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3745.680000" data-stop="3746.199000">It's awesome.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3746.200000" data-stop="3750.039000">You can seamlessly open files, SSH into other</span> <span class="audio-time caption" data-speaker="Amin" data-start="3750.040000" data-stop="3751.399000">machines and edit files there.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3751.400000" data-stop="3753.039000">But I don't know.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3753.040000" data-stop="3753.959000">It's kind of slow.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3753.960000" data-stop="3756.919000">So I want to see aside from the latency, you know, the</span> <span class="audio-time caption" data-speaker="Amin" data-start="3756.920000" data-stop="3760.759000">physical limit of the latency because of the distance.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3760.760000" data-stop="3763.479000">Is there anything slowing it down?</span> <span class="audio-time caption" data-speaker="Amin" data-start="3763.480000" data-stop="3767.439000">I think I read in the Tramp FAQ that maybe trying to</span> <span class="audio-time caption" data-speaker="Amin" data-start="3767.440000" data-stop="3773.479000">disable VC mode or VC detection for remote connections</span> <span class="audio-time caption" data-speaker="Amin" data-start="3773.480000" data-stop="3776.119000">might help speed it up, or at least having it do only</span> <span class="audio-time caption" data-speaker="Amin" data-start="3776.120000" data-stop="3780.479000">Git, for example, because by default, Emacs's VC has</span> <span class="audio-time caption" data-speaker="Amin" data-start="3780.480000" data-stop="3787.399000">support for Mercurial, CVS, SVN, Git, RCS even.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3787.400000" data-stop="3789.639000"><strong class="speaker-name">Sacha:</strong>  Anything anyone has ever wanted to use in the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3789.640000" data-stop="3790.879000">last 40 years.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3790.880000" data-stop="3793.519000">Here we go.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3793.520000" data-stop="3798.879000">I saw in your chat config actually that you were doing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3798.880000" data-stop="3803.079000">something with the SSH configs and I'd never come</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3803.080000" data-stop="3803.799000">across that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3803.800000" data-stop="3809.879000">So I was like, oh, that's something I should look into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3809.880000" data-stop="3812.639000">later.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="3812.640000" data-stop="3814.159000"><strong class="speaker-name">Amin:</strong>  I don't remember the specifics, but it's all</span> <span class="audio-time caption" data-speaker="Amin" data-start="3814.160000" data-stop="3814.839000">out there.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3814.840000" data-stop="3819.239000">Feel free to look into it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3819.000000">1:03:39</span> <strong>eat</strong></div><p></p><span class="audio-time caption" data-speaker="Amin" data-start="3819.240000" data-stop="3822.959000"><strong class="speaker-name">Amin:</strong> Especially with this EXWM setup, I still use Xterm</span> <span class="audio-time caption" data-speaker="Amin" data-start="3822.960000" data-stop="3825.919000">sometimes and I have the Emacs EAT terminal, which is</span> <span class="audio-time caption" data-speaker="Amin" data-start="3825.920000" data-stop="3829.799000">a terminal emulator written in Emacs Lisp.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3829.800000" data-stop="3833.159000">If I launch it right now, it's awesome.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3833.160000" data-stop="3837.119000">It actually is very powerful and it's a properly</span> <span class="audio-time caption" data-speaker="Amin" data-start="3837.120000" data-stop="3838.479000">capable terminal emulator.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3838.480000" data-stop="3840.719000">It just can be a little bit slow.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3840.720000" data-stop="3844.319000">It is slower than xterm, but it's still a lot faster</span> <span class="audio-time caption" data-speaker="Amin" data-start="3844.320000" data-stop="3846.119000">than whatever Emacs has built in.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3846.120000" data-stop="3847.519000">So this is pretty cool.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3847.520000" data-stop="3850.159000">But yeah, I don't want to use it a lot.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3850.160000" data-stop="3853.919000">And I kind of started testing, delegating more</span> <span class="audio-time caption" data-speaker="Amin" data-start="3853.920000" data-stop="3858.119000">things or using more async-shell-command to just</span> <span class="audio-time caption" data-speaker="Amin" data-start="3858.120000" data-stop="3860.679000">basically open this prompt and then do whatever I</span> <span class="audio-time caption" data-speaker="Amin" data-start="3860.680000" data-stop="3861.159000">want.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3861.160000" data-stop="3862.879000">anyway.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3862.880000" data-stop="3866.839000"><strong class="speaker-name">Sacha:</strong>  I've also heard things about Ghost TTY.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3866.840000" data-stop="3870.599000">Anyway, so that's another thing to look into.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3870.600000" data-stop="3876.959000">Yes, so @Paniash47 says, "With Emacs 31, there's a new</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3876.960000" data-stop="3878.759000">variable where you can hide the minor modes in the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3878.760000" data-stop="3879.079000">mode line."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3879.080000" data-stop="3881.559000">@pkal says it's mode-line-collapse-minor-modes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3881.560000" data-stop="3884.599000">And @Paniash47 also says, "I personally use the Minions</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3884.600000" data-stop="3887.679000">package by Tarsius, and it has some nice features in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3887.680000" data-stop="3888.959000">addition to the built-in features."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3888.960000" data-stop="3891.008000">So other people are tinkering around</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3891.009000" data-stop="3892.919000">with their mode lines as well.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="3898.320000" data-stop="3898.919000"><strong class="speaker-name">Amin:</strong>  Yeah, it's pretty cool.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3898.920000" data-stop="3902.479000">And then I don't know, I think maybe you touched on</span> <span class="audio-time caption" data-speaker="Amin" data-start="3902.480000" data-stop="3904.399000">something a couple of minutes ago that I was going to</span> <span class="audio-time caption" data-speaker="Amin" data-start="3904.400000" data-stop="3907.179000">go back to, but I forget.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3907.000000">1:05:07</span> <strong>TRAMP completion</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3907.180000" data-stop="3909.999000"><strong class="speaker-name">Sacha:</strong>  Tramp SSH completion out of your configs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3910.000000" data-stop="3912.919000">I was like, there's a Tramp sconfig in here that I've</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3912.920000" data-stop="3913.639000">never used.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3913.640000" data-stop="3915.119000">And that sounded interesting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3915.120000" data-stop="3920.839000">Yeah, tramp-parse-sconfig.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="3920.840000" data-stop="3924.699000"><strong class="speaker-name">Amin:</strong>  Ah, right, right, right. Yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3924.700000" data-stop="3926.599000"><strong class="speaker-name">Sacha:</strong>  Which, of course, we're not going to let go</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3926.600000" data-stop="3929.359000">because it's private stuff, but yeah.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="3929.360000" data-stop="3929.999000"><strong class="speaker-name">Amin:</strong>  Right.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3930.000000" data-stop="3931.199000">Yeah, you're welcome to try this.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3931.200000" data-stop="3933.319000">I'm pretty sure, actually, I took this from the Tramp</span> <span class="audio-time caption" data-speaker="Amin" data-start="3933.320000" data-stop="3934.159000">manual itself.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3934.160000" data-stop="3937.679000">And it's one of those things where it's set and</span> <span class="audio-time caption" data-speaker="Amin" data-start="3937.680000" data-stop="3940.719000">forget, I don't remember.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3940.720000" data-stop="3941.639000">But yeah, it's here.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3941.640000" data-stop="3945.519000">There was something else that I also wanted to show,</span> <span class="audio-time caption" data-speaker="Amin" data-start="3945.520000" data-stop="3946.159000">but I forget.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3946.160000" data-stop="3949.759000">Let me see if looking at the outlines will remind me</span> <span class="audio-time caption" data-speaker="Amin" data-start="3949.760000" data-stop="3952.539000">or if I will see it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3952.540000" data-stop="3953.799000"><strong class="speaker-name">Sacha:</strong>  And that's one of the things I love about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3953.800000" data-stop="3956.199000">literate configuration is, you know, just kind of look</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3956.200000" data-stop="3959.479000">at the structure and skim it and try to find something</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3959.480000" data-stop="3963.839000">with keywords and ordered lists and all that stuff.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="3963.840000" data-stop="3967.799000"><strong class="speaker-name">Amin:</strong>  Right. Yup. Exactly.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3967.800000" data-stop="3970.039000"><strong class="speaker-name">Sacha:</strong>  Oh, and you know, people will have access to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3970.040000" data-stop="3972.119000">your full configuration because it is in your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3972.120000" data-stop="3974.999000">repository and you have that lovely HTML export for it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3975.000000" data-stop="3975.559000">as well.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3975.560000" data-stop="3980.159000">So if you, uh, if, if people want to follow up, they</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3980.160000" data-stop="3980.799000">can go through that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3980.800000" data-stop="3984.319000">at length. At some point, you're going to add some more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3984.320000" data-stop="3987.919000">screenshots and possibly even video clips to it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3987.920000" data-stop="3994.539000">so that's there you at https://git.kelar.org</span> <p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0053.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0053.jpg" alt="image from video 01:06:34.567" data-time="01:06:34.567"></a><span class="audio-time caption" data-speaker="Amin" data-start="3994.540000" data-stop="3996.159000"><strong class="speaker-name">Amin:</strong>  This is my configurations repository.</span> <span class="audio-time caption" data-speaker="Amin" data-start="3996.160000" data-stop="4001.159000">If you go here to treeview .emacs.d, this is the org</span> <span class="audio-time caption" data-speaker="Amin" data-start="4001.160000" data-stop="4001.919000">file.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4001.920000" data-stop="4005.639000">I also export all of those individual components into</span> <span class="audio-time caption" data-speaker="Amin" data-start="4005.640000" data-stop="4007.279000">this lisp subdirectory.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4007.280000" data-stop="4009.319000">All that stuff is here.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4009.320000" data-stop="4014.299000">The QMK thingy that was mentioned.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4014.000000">1:06:54</span> <strong>ffs: form feed slides, ^L
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0054.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0054.jpg" alt="image from video 01:08:15.933" data-time="01:08:15.933"></a><span class="audio-time caption" data-speaker="Amin" data-start="4014.300000" data-stop="4015.359000"><strong class="speaker-name">Amin:</strong> Oh, I wanted to mention FFS.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4015.360000" data-stop="4016.399000">Okay, I'll do that as well.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4016.400000" data-stop="4017.959000">Yeah, what's up with that?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4017.960000" data-stop="4019.199000"><strong class="speaker-name">Sacha:</strong>  I was trying to find information.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4019.200000" data-stop="4020.559000">It was like, there's no package.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4020.560000" data-stop="4025.539000">It's not what is this thing?</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="4025.540000" data-stop="4027.959000"><strong class="speaker-name">Amin:</strong>  It's FormFeed Slides and it's going to soon be</span> <span class="audio-time caption" data-speaker="Amin" data-start="4027.960000" data-stop="4028.359000">a package.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4028.360000" data-stop="4030.519000">I was actually talking to Prot about it and I'm hoping</span> <span class="audio-time caption" data-speaker="Amin" data-start="4030.520000" data-stop="4033.399000">to submit it for inclusion in GNU ELPA within, I don't</span> <span class="audio-time caption" data-speaker="Amin" data-start="4033.400000" data-stop="4035.279000">know, the next couple of weeks.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4035.280000" data-stop="4038.759000">It's basically very similar to Prot's Logos package.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4038.760000" data-stop="4042.999000">Turns out we both had the same kind of idea at the</span> <span class="audio-time caption" data-speaker="Amin" data-start="4043.000000" data-stop="4046.599000">exact same time in 2022, and we both used it for our</span> <span class="audio-time caption" data-speaker="Amin" data-start="4046.600000" data-stop="4050.319000">LibrePlanet 2022 presentations.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4050.320000" data-stop="4053.119000">Of course, Prot being the diligent person that he is,</span> <span class="audio-time caption" data-speaker="Amin" data-start="4053.120000" data-stop="4055.428000">he polished his work, documented it,</span> <span class="audio-time caption" data-speaker="Amin" data-start="4055.429000" data-stop="4056.479000">put it on GNU ELPA.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4056.480000" data-stop="4058.622000">I still haven't gotten around to doing it yet,</span> <span class="audio-time caption" data-speaker="Amin" data-start="4058.623000" data-stop="4060.719000">but better late than never.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4060.720000" data-stop="4062.359000">Yeah, let's see.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4062.360000" data-stop="4064.559000">I can maybe show a quick demonstration of that.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4064.560000" data-stop="4067.719000">So let's see.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4067.720000" data-stop="4069.399000">Let's see.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4069.400000" data-stop="4077.439000">Anyway, so if I go to my website sources and</span> <span class="audio-time caption" data-speaker="Amin" data-start="4077.440000" data-stop="4080.159000">net-beyond-web.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4080.160000" data-stop="4083.759000">So I had the LibrePlanet talk a couple years ago.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4083.760000" data-stop="4087.959000">So what FFS is basically, it looks for a</span> <span class="audio-time caption" data-speaker="Amin" data-start="4087.960000" data-stop="4088.867000">particular character in this case,</span> <span class="audio-time caption" data-speaker="Amin" data-start="4088.868000" data-stop="4092.919000">or the default case,</span> <span class="audio-time caption" data-speaker="Amin" data-start="4092.920000" data-stop="4095.929000">it's the page-delimiter, ^L,</span> <span class="audio-time caption" data-speaker="Amin" data-start="4095.930000" data-stop="4099.079000">which you can insert by hitting C-q C-l.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4099.080000" data-stop="4103.759000">It basically then designates each of these areas</span> <span class="audio-time caption" data-speaker="Amin" data-start="4103.760000" data-stop="4108.959000">as one slide. So, very, very simple slideshow</span> <span class="audio-time caption" data-speaker="Amin" data-start="4108.960000" data-stop="4111.439000">that you don't even have to use Org or outline or any</span> <span class="audio-time caption" data-speaker="Amin" data-start="4111.440000" data-stop="4115.599000">other major or minor mode. If I launch ffs,</span> <span class="audio-time caption" data-speaker="Amin" data-start="4115.600000" data-stop="4122.239000">by default, it's in a mode where it binds a couple of</span> <span class="audio-time caption" data-speaker="Amin" data-start="4122.240000" data-stop="4124.919000">convenience keys, like p and n, to go into the next</span> <span class="audio-time caption" data-speaker="Amin" data-start="4124.920000" data-stop="4125.639000">and previous slide.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4125.640000" data-stop="4129.999000">You can hit e to edit a slide, similar to Org source, and</span> <span class="audio-time caption" data-speaker="Amin" data-start="4130.000000" data-stop="4132.639000">then make your changes and all of that.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4132.640000" data-stop="4137.899000">And then you can start a presentation by hitting s.</span> <p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0055.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0055.jpg" alt="image from video 01:08:58.767" data-time="01:08:58.767"></a><span class="audio-time caption" data-speaker="Amin" data-start="4137.900000" data-stop="4141.439000"><strong class="speaker-name">Amin:</strong> It has hooks for, for example, bumping up the font size</span> <span class="audio-time caption" data-speaker="Amin" data-start="4141.440000" data-stop="4144.599000">or whatever, hiding the mode line.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4144.600000" data-stop="4147.599000">I can toggle the mode line by hitting m here.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4147.600000" data-stop="4150.959000">Let's see.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4150.960000" data-stop="4156.399000">I can also toggle the cursor with c, to make the cursor</span> <span class="audio-time caption" data-speaker="Amin" data-start="4156.400000" data-stop="4157.199000">visible or not.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4157.200000" data-stop="4158.439000">So, yeah.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4158.440000" data-stop="4163.479000">And then I'm just hitting p and n.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4163.480000" data-stop="4165.119000"><strong class="speaker-name">Sacha:</strong>  Very simple, very minimalist.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4165.120000" data-stop="4168.399000">You have a file, you've got page markers, and that's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4168.400000" data-stop="4171.859000">all you got.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="4171.860000" data-stop="4172.919000"><strong class="speaker-name">Amin:</strong>  Yeah, pretty much.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4172.920000" data-stop="4174.819000">And then…</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4174.000000">1:09:34</span> <strong>Speaker notes</strong></div><p></p><span class="audio-time caption" data-speaker="Amin" data-start="4174.820000" data-stop="4176.799000"><strong class="speaker-name">Amin:</strong> The neat thing that it has that I also liked</span> <span class="audio-time caption" data-speaker="Amin" data-start="4176.800000" data-stop="4179.799000">implementing at the time is it has a speaker notes</span> <span class="audio-time caption" data-speaker="Amin" data-start="4179.800000" data-stop="4180.639000">feature.</span> <p></p><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0056.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/mpv-shot0056.jpg" alt="image from video 01:09:47.767" data-time="01:09:47.767"></a><span class="audio-time caption" data-speaker="Amin" data-start="4180.640000" data-stop="4184.999000"><strong class="speaker-name">Amin:</strong> So you can designate a file as being the speaker</span> <span class="audio-time caption" data-speaker="Amin" data-start="4185.000000" data-stop="4187.759000">notes where it has the same structure separators with</span> <span class="audio-time caption" data-speaker="Amin" data-start="4187.760000" data-stop="4190.679000">^L. But you can type your notes over here,</span> <span class="audio-time caption" data-speaker="Amin" data-start="4190.680000" data-stop="4190.959000">whatever.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4190.960000" data-stop="4194.639000">And you can basically open these in two different</span> <span class="audio-time caption" data-speaker="Amin" data-start="4194.640000" data-stop="4197.879000">windows or two different frames on separate displays.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4197.880000" data-stop="4201.159000">And then in whichever one of those you advance the</span> <span class="audio-time caption" data-speaker="Amin" data-start="4201.160000" data-stop="4205.779000">slides, like p n n, it also does the other one.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4205.780000" data-stop="4206.967000"><strong class="speaker-name">Sacha:</strong>  That's brilliant.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4206.968000" data-stop="4209.319000">I was looking for a way to do that so I can pretend to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4209.320000" data-stop="4211.279000">know what I'm talking about when I have something on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4211.280000" data-stop="4215.159000">screen, but I can just read my notes or even just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4215.160000" data-stop="4216.839000">remember what points I wanted to make.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4216.840000" data-stop="4218.039000">So this is great.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4218.040000" data-stop="4219.119000">You have speaker notes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4219.120000" data-stop="4220.639000">You've got the main screen.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4220.640000" data-stop="4221.999000">They can be in two different frames.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4222.000000" data-stop="4224.679000">You can have your frame that you're sharing and your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4224.680000" data-stop="4227.199000">frame that you're not sharing that has all of your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4227.200000" data-stop="4227.799000">cheat sheets.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4227.800000" data-stop="4229.079000">Excellent.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4229.080000" data-stop="4231.119000">And on that note, in about one minute, the kid is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4231.120000" data-stop="4234.039000">going to come running out and want to have snack and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4234.040000" data-stop="4234.599000">all that stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4234.600000" data-stop="4237.959000">Thank you so much for walking through parts of your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4237.960000" data-stop="4238.279000">config.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4238.280000" data-stop="4239.559000">There is more.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4239.560000" data-stop="4242.559000">And so everyone who wants to find out more can go</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4242.560000" data-stop="4243.759000">check out your setup.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4243.760000" data-stop="4247.359000">I have a great many things that I want to try out,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4247.360000" data-stop="4253.039000">starting from EXWM to little things like figuring out</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4253.040000" data-stop="4255.799000">a boom mic setup because apparently your audio setup</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4255.800000" data-stop="4257.159000">is making me very jealous.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4257.160000" data-stop="4260.279000">Yes, thank you for doing this.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4260.280000" data-stop="4262.839000">I'm going to post the transcript and the chapters.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4262.840000" data-stop="4264.479000">I have a chapter every minute.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4264.480000" data-stop="4268.319000">It's going to be a long time.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4268.320000" data-stop="4269.399000">But it was good.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4269.400000" data-stop="4270.359000">Lots of cool stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4270.360000" data-stop="4273.199000">Thank you again.</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="4273.200000" data-stop="4274.233000"><strong class="speaker-name">Amin:</strong>  Sounds great.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4274.234000" data-stop="4275.159000">And yeah, you're very welcome.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4275.160000" data-stop="4276.959000">And thank you so much for having me as well, Sacha.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4276.960000" data-stop="4279.159000">I'm very delighted to be here, especially, I think,</span> <span class="audio-time caption" data-speaker="Amin" data-start="4279.160000" data-stop="4280.359000">just by chance.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4280.360000" data-stop="4283.079000">I think I'm the first person who you're doing this</span> <span class="audio-time caption" data-speaker="Amin" data-start="4283.080000" data-stop="4284.759000">with after the long hiatus.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4284.760000" data-stop="4286.679000">So that's an extra honor for me.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4286.680000" data-stop="4288.759000">But yeah, it's been fun.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4288.760000" data-stop="4292.479000">I could go on for hours.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4292.480000" data-stop="4293.719000">I'm sure we both could.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4293.720000" data-stop="4297.219000">This has been fun.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4297.220000" data-stop="4299.233000"><strong class="speaker-name">Sacha:</strong>  If we wanted to go on for hours,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4299.234000" data-stop="4300.933000">Prot has more flexible scheduling,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4300.934000" data-stop="4303.033000">so he can chat with people for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4303.034000" data-stop="4304.667000">two hours and stuff, and you already have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4304.668000" data-stop="4306.159000">conversations going on with him.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4306.160000" data-stop="4308.959000">But I unfortunately have a small mammal who's 10</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4308.960000" data-stop="4312.119000">years old and loves me very much, and likes to not let</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4312.120000" data-stop="4313.799000">me concentrate for very long.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4313.800000" data-stop="4316.319000">But thank you everyone for joining.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4316.320000" data-stop="4317.799000">Thank you for the chat.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4317.800000" data-stop="4318.959000">And thank you also, stream,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4318.960000" data-stop="4320.319000">for all the interesting questions.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4320.320000" data-stop="4322.519000">I will send you all the information</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4322.520000" data-stop="4323.479000">and update the post.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4323.480000" data-stop="4326.599000">And we'll see you all on Thursday.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4326.600000" data-stop="4328.279000">I've got another chat.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4328.280000" data-stop="4330.719000">All of a sudden, all these Emacs chats</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4330.720000" data-stop="4331.719000">are going to happen.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4331.720000" data-stop="4332.119000">Thanks.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4332.120000" data-stop="4336.119000">Oh, and you said you're happy to be on the hook for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4336.120000" data-stop="4340.259000">doing another EmacsConf this year, right?</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="4340.260000" data-stop="4341.868000"><strong class="speaker-name">Amin:</strong>  Yes. You can hold me to that.</span> <span class="audio-time caption" data-speaker="Amin" data-start="4341.480000" data-stop="4343.200000">There will be another EmacsConf this year</span> <span class="audio-time caption" data-speaker="Amin" data-start="4343.201000" data-stop="4344.933000">and I will be active in it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4344.934000" data-stop="4346.567000"><strong class="speaker-name">Sacha:</strong>  Alright then, I'm going to end that broadcast.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4346.568000" data-stop="4349.159000">Thanks everyone, bye!</span> <p></p><span class="audio-time caption" data-speaker="Amin" data-start="4349.160000" data-stop="4350.000000"><strong class="speaker-name">Amin:</strong>  Thank you, bye bye!</span></div>
<p></p>


<a name="end-ec21-transcript"></a></details>
</div>
</div>
<div id="outline-container-current-notes-for-next-time-emacs-chat-21-amin-bandali-chat" class="outline-3">
<h3 id="current-notes-for-next-time-emacs-chat-21-amin-bandali-chat"><a href="https://sachachua.com/blog/feed/index.xml#current-notes-for-next-time-emacs-chat-21-amin-bandali-chat">Chat</a></h3>
<div class="outline-text-3" id="text-current-notes-for-next-time-emacs-chat-21-amin-bandali-chat">
<ul class="org-ul">
<li>sachactube: This is a test message</li>
<li>sachactube: Getting ready for Emacs Chat 21 with Amin Bandali, <a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/">https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/</a></li>
<li>JacksonScholberg: Yo</li>
<li>sachactube: Yo yo yo, we are live!</li>
<li>IhorRadchenkoyantar92: &hellip; and the list can continue until the end of the stream? :)</li>
<li>IhorRadchenkoyantar92: do you compile those packages?</li>
<li>sachactube: Automatically compiled by prepare-user-lisp because of user-lisp-directory, I think</li>
<li>IhorRadchenkoyantar92: makes sense</li>
<li>IhorRadchenkoyantar92: this configure macro looks a lot like good old use-package</li>
<li>IhorRadchenkoyantar92: I just do (use-package foo :config <a id="orga0d3d30"></a>) and then :tangle no in actual src block</li>
<li>IhorRadchenkoyantar92: what is funny, with-eval-after-load is itself a macro</li>
<li>sachactube: hahaha, it's much smaller though</li>
<li>IhorRadchenkoyantar92: not smaller at all! Because there is recursion with-eval-after-load (macro) -&gt; eval-after-load (also macro!)</li>
<li>IhorRadchenkoyantar92: hmm. wrong</li>
<li>IhorRadchenkoyantar92: ok. let me not do two things at the same time</li>
<li>blaiseutube: yay, I made it!</li>
<li>blaiseutube: screenshots and also asciicinema</li>
<li>blaiseutube: asciinema ?</li>
<li>blaiseutube: whatever</li>
<li>sachactube: and gif-screencast</li>
<li>blaiseutube: nice</li>
<li>blaiseutube: Sacha, your mic volume is just a bit lower than his so it's a bit harder (for me) to hear you.</li>
<li>sachactube: Hmm, let me try turning my dial, let's see if this next one is better</li>
<li>blaiseutube: better, I think</li>
<li>blaiseutube: it's also that Amin has an awesome microphone. The result sounds like Amin is in the room with me and we are both listening to you on speakerphone. it's not terrible</li>
<li>blaiseutube: we're all friends her</li>
<li>blaiseutube: here</li>
<li>sachactube: I think we have the same mic, but he has an awesome setup, so I'm going to bug him for tips =D</li>
<li>paniash47: Hello there! Nice to see this chat. :)</li>
<li>blaiseutube: yes, low gain and close mic is good. Sacha if prefer to avoid a boom, you can use a microphone with a tight pattern and increase gain. LMK if you want to unleash my inner audio engineer.</li>
<li>sachactube: oooh. my mic is right next to my laptop though, so I'm not sure I can get away from the typing noises</li>
<li>sachactube: I'll just have to get cozy with y'all</li>
<li>blaiseutube: mini buffet is an underrated superpower. I think Kakoune adopted that also</li>
<li>blaiseutube: helpful for a11y and users with sequential processing/ ADHD issues</li>
<li>blaiseutube: (I noticed that the comments are recorded so I'm trying to add value 🥴)</li>
<li>paniash47: Split keyboards make sense with vanilla keybindings. I'd like to switch but moving from evil is difficult :(</li>
<li>sachactube: much appreciated!</li>
<li>blaiseutube: what about "time since last save" or do you have some auto save magic?</li>
<li>blaiseutube: 🤯</li>
<li>blaiseutube: emacs all the things</li>
<li>blaiseutube: LOL, "I save everything regularly" &hellip;so he's one of <mark>those</mark> people.</li>
<li>paniash47: I think with emacs 31, there's a new variable where you can hide the minor modes in the modeline</li>
<li>pkal_: mode-line-collapse-minor-modes</li>
<li>paniash47: I personally use the minions package by tarsius (Magit author) and it has some nice features in addition to the built-in feature.</li>
<li>paniash47: ghostel is the package :)</li>
<li>blaiseutube: BRB</li>
</ul>

<p>
Find more Emacs Chats or join the fun: <a href="https://sachachua.com/emacs-chat">https://sachachua.com/emacs-chat</a></p>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/index.org">View Org source for this post</a></div>
<p>You can <a href="https://social.sachachua.com/@sacha/statuses/01KQSRZ5PF37X0VDHJMMFZPNWT" target="_blank" rel="noopener noreferrer">comment on Mastodon</a> or <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F05%2Femacs-chat-with-amin-bandali%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>June 18: Emacs Chat with Ross A. Baker</title>
		<link>https://sachachua.com/blog/2026/04/june-18-emacs-chat-with-ross-a-baker/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Wed, 22 Apr 2026 18:28:45 GMT</pubDate>
    <category>emacs</category>
<category>emacs-chat-podcast</category>
<category>emacs-chat</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/04/june-18-emacs-chat-with-ross-a-baker/</guid>
		<description><![CDATA[<p>
</p><div class="yt-video"><iframe width="456" height="315" title="YouTube video player" src="https://www.youtube-nocookie.com/embed/_tEcqbi_2o8?enablejsapi=1" frameborder="0" allowfullscreen="">nil</iframe><a href="https://youtube.com/live/_tEcqbi_2o8">Watch on YouTube</a></div>
<p></p>

<p>
<span class="timestamp-wrapper"><time class="timestamp" datetime="2026-06-18T10:30:00-0400">&lt;2026-06-18 Thu 10:30&gt;&ndash;&lt;2026-06-18 Thu 11:30&gt;</time></span> America/Toronto = Thu Jun 18 1030H EDT / 0930H CDT / 0830H MDT / 0730H PDT / 1430H UTC / 1630H CEST / 1730H EEST / 2000H IST / 2230H +08 / 2330H JST
</p>

<p>
On June 18, I'll chat with <a href="https://rossabaker.com/">Ross Baker</a> about Emacs and life.
</p>

<ul class="org-ul">
<li><a href="https://rossabaker.com/blog/">Blog</a>
<ul class="org-ul">
<li><a href="https://rossabaker.com/tags/emacs/">Posts tagged #emacs</a></li>
</ul></li>
<li><a href="https://rossabaker.com/configs/emacs/">Emacs config</a>
<ul class="org-ul">
<li><a href="https://rossabaker.com/configs/emacs/early-init/">Emacs Early Init</a></li>
<li><a href="https://rossabaker.com/configs/emacs/khlav-kalash/">Khlav Kalash Emacs</a></li>
<li><a href="https://rossabaker.com/configs/emacs/crab-juice/">Crab Juice Emacs</a></li>
<li><a href="https://rossabaker.com/configs/emacs/rab-starter/">Starter Emacs configuration</a></li>
</ul></li>
</ul>

<p>
This session will be recorded, and I'll update this blog post with notes.
<a href="https://sachachua.com/blog/2026/04/june-18-emacs-chat-with-ross-a-baker/">https://sachachua.com/blog/2026/04/june-18-emacs-chat-with-ross-a-baker/</a>
</p>

<p>
Find more Emacs Chats or join the fun: <a href="https://sachachua.com/emacs-chat">https://sachachua.com/emacs-chat</a>
</p>
<div><a href="https://sachachua.com/blog/2026/04/june-18-emacs-chat-with-ross-a-baker/index.org">View Org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F04%2Fjune-18-emacs-chat-with-ross-a-baker%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item>
	</channel>
</rss>