<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/assets/atom.xsl" type="text/xsl"?><feed
	xmlns="http://www.w3.org/2005/Atom"
	xmlns:thr="http://purl.org/syndication/thread/1.0"
	xml:lang="en-US"
	><title>Sacha Chua - category - podcast</title>
	<subtitle>Emacs, sketches, and life</subtitle>
	<link rel="self" type="application/atom+xml" href="https://sachachua.com/blog/category/podcast/feed/atom/index.xml" />
  <link rel="alternate" type="text/html" href="https://sachachua.com/blog/category/podcast" />
  <id>https://sachachua.com/blog/category/podcast/feed/atom/index.xml</id>
  <generator uri="https://11ty.dev">11ty</generator>
	<updated>2026-07-27T12:13:37Z</updated>
<entry>
		<title type="html">13 août: Emacs Chat: Fabrice Niessen</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/08/13-aout-emacs-chat-fabrice-niessen/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-07-27T12:13:37Z</updated>
    <published>2026-07-27T12:13:37Z</published>
    <category term="emacs-chat" />
<category term="emacs-chat-podcast" />
<category term="emacs" />
<category term="french" />
		<id>https://sachachua.com/blog/2026/08/13-aout-emacs-chat-fabrice-niessen/</id>
		<content type="html"><![CDATA[<p>
Nous allons parler en direct avec <a href="https://github.com/fniessen">Fabrice Niessen</a> (<a href="https://emacsboost.com/">Formation Emacs Boost</a>) d'Emacs, de ses flux de travail, de sa configuration, et d'autres sujets en français. Je suis un peu intimidée, mais si vous posez vos questions dans le chat, je pense que nous pouvons survivre à mon faible niveau de français. =)
</p>

<p>
</p><div class="yt-video"><iframe width="456" height="315" title="YouTube video player" src="https://www.youtube-nocookie.com/embed/b4lwD2QS_6c?enablejsapi=1" frameborder="0" allowfullscreen=""></iframe><a href="https://youtube.com/live/b4lwD2QS_6c">Watch on YouTube</a></div>
<p></p>

<p>
La diffusion en direct aura lieu le <span class="timestamp-wrapper"><time class="timestamp" datetime="2026-08-13T07:30:00-0400">[2026-08-13 Thu 07:30]&ndash;[2026-08-13 Thu 08:30]</time></span> dans le fuseau horaire America/Toronto, soit 0730H EDT / 0630H CDT / 0530H MDT / 0430H PDT / 1130H UTC / 1330H CEST / 1430H EEST / 1700H IST / 1930H +08 / 2030H JST.
</p>

<p>
Si <a href="https://sachachua.com/blog/2026/07/voulez-vous-parler-d-emacs-avec-prot-et-moi/">vous voulez parler d'Emacs avec Prot et moi</a> en français, n'hésitez pas à m'envoyer un courriel !
</p>
<div><a href="https://sachachua.com/blog/2026/08/13-aout-emacs-chat-fabrice-niessen/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%2F08%2F13-aout-emacs-chat-fabrice-niessen%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>]]></content>
		</entry><entry>
		<title type="html">6 août: Emacs Chat: Richard Bonichon</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/08/6-aout-emacs-chat-richard-bonichon/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-07-18T13:53:46Z</updated>
    <published>2026-07-18T13:53:46Z</published>
    <category term="emacs-chat" />
<category term="emacs-chat-podcast" />
<category term="emacs" />
<category term="french" />
		<id>https://sachachua.com/blog/2026/08/6-aout-emacs-chat-richard-bonichon/</id>
		<content type="html"><![CDATA[<p>
Nous allons parler en direct avec <a href="https://rbonichon.github.io/non-posts/about/">Richard Bonichon</a> (<a href="https://github.com/rbonichon/emacs.d/">emacs.d</a>, <a href="https://github.com/rbonichon">Github</a>) d'Emacs, de ses flux de travail, de sa configuration, et d'autres sujets en français. Je suis un peu intimidée, mais si vous posez vos questions dans le chat, je pense que nous pouvons survivre à mon faible niveau de français. =)
</p>

<p>
</p><div class="yt-video"><iframe width="456" height="315" title="YouTube video player" src="https://www.youtube-nocookie.com/embed/GzoBGwqDvL8?enablejsapi=1" frameborder="0" allowfullscreen=""></iframe><a href="https://youtube.com/live/GzoBGwqDvL8">Watch on YouTube</a></div>
<p></p>

<p>
La diffusion en direct aura lieu le <span class="timestamp-wrapper"><time class="timestamp" datetime="2026-08-06T07:30:00-0400">[2026-08-06 Thu 07:30]&ndash;[2026-08-06 Thu 08:30]</time></span> dans le fuseau horaire America/Toronto, soit 0730H EDT / 0630H CDT / 0530H MDT / 0430H PDT / 1130H UTC / 1330H CEST / 1430H EEST / 1700H IST / 1930H +08 / 2030H JST.
</p>

<p>
Si <a href="https://sachachua.com/blog/2026/07/voulez-vous-parler-d-emacs-avec-prot-et-moi/">vous voulez parler d'Emacs avec Prot et moi</a> en français, n'hésitez pas à m'envoyer un courriel !
</p>
<div><a href="https://sachachua.com/blog/2026/08/6-aout-emacs-chat-richard-bonichon/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%2F08%2F6-aout-emacs-chat-richard-bonichon%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>]]></content>
		</entry><entry>
		<title type="html">20 août: Emacs Chat: Abdallah Maouche</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/08/20-aout-emacs-chat-abdallah-maouche/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-07-18T13:53:00Z</updated>
    <published>2026-07-18T13:53:00Z</published>
    <category term="emacs-chat" />
<category term="emacs-chat-podcast" />
<category term="emacs" />
<category term="french" />
		<id>https://sachachua.com/blog/2026/08/20-aout-emacs-chat-abdallah-maouche/</id>
		<content type="html"><![CDATA[<p>
Nous allons parler en direct avec <a href="https://heiwiper.com/">Abdallah Maouche (heiwiper)</a> (<a href="https://github.com/heiwiper/emacs.d">heiwiper/emacs.d</a>, <a href="https://gitlab.com/heiwiper">Gitlab</a>, <a href="https://github.com/heiwiper">Github</a>) d'Emacs, de ses flux de travail, de sa configuration, et d'autres sujets en français. Je suis un peu intimidée, mais si vous posez vos questions dans le chat, je pense que nous pouvons survivre à mon faible niveau de français. =)
</p>

<p>
</p><div class="yt-video"><iframe width="456" height="315" title="YouTube video player" src="https://www.youtube-nocookie.com/embed/p8CQViK-_XY?enablejsapi=1" frameborder="0" allowfullscreen=""></iframe><a href="https://youtube.com/live/p8CQViK-_XY">Watch on YouTube</a></div>
<p></p>

<p>
La diffusion en direct aura lieu le <span class="timestamp-wrapper"><time class="timestamp" datetime="2026-08-20T07:30:00-0400">[2026-08-20 Thu 07:30]&ndash;[2026-08-20 Thu 08:30]</time></span> dans le fuseau horaire America/Toronto, soit 0730H EDT / 0630H CDT / 0530H MDT / 0430H PDT / 1130H UTC / 1330H CEST / 1430H EEST / 1700H IST / 1930H +08 / 2030H JST
</p>

<p>
Si <a href="https://sachachua.com/blog/2026/07/voulez-vous-parler-d-emacs-avec-prot-et-moi/">vous voulez parler d'Emacs avec Prot et moi</a> en français, n'hésitez pas à m'envoyer un courriel !
</p>
<div><a href="https://sachachua.com/blog/2026/08/20-aout-emacs-chat-abdallah-maouche/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%2F08%2F20-aout-emacs-chat-abdallah-maouche%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>]]></content>
		</entry><entry>
		<title type="html">Emacs Chat 26: Ross A. Baker</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-06-22T00:00:19Z</updated>
    <published>2026-06-18T18:28:45Z</published>
    <category term="emacs" />
<category term="emacs-chat-podcast" />
<category term="emacs-chat" />
		<id>https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/</id>
		<content type="html"><![CDATA[<div class="update" id="org74dd95d">
<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/atom/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>

<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-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/atom/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/atom/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>
</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/atom/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>]]></content>
		</entry><entry>
		<title type="html">Emacs Chat 25: Ben Zanin (@gnomon@mastodon.social)</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-06-10T17:03:47Z</updated>
    <published>2026-06-04T12:50:07Z</published>
    <category term="emacs" />
<category term="emacs-chat" />
<category term="emacs-chat-podcast" />
		<id>https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/</id>
		<content type="html"><![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/atom/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/atom/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/atom/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/atom/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/atom/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>]]></content>
		</entry><entry>
		<title type="html">Emacs Chat 24: Omar Antolin Camarena</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-05-31T22:36:02Z</updated>
    <published>2026-05-29T22:02:50Z</published>
    <category term="emacs" />
<category term="emacs-chat-podcast" />
<category term="emacs-chat" />
		<id>https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/</id>
		<content type="html"><![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/atom/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/atom/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/atom/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/atom/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>]]></content>
		</entry><entry>
		<title type="html">Emacs Chat 23: Emacs Chat with Raymond Zeitler</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/05/emacs-chat-with-raymond-zeitler/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-05-25T12:10:55Z</updated>
    <published>2026-05-21T14:30:32Z</published>
    <category term="emacs" />
<category term="emacs-chat-podcast" />
<category term="emacs-chat" />
		<id>https://sachachua.com/blog/2026/05/emacs-chat-with-raymond-zeitler/</id>
		<content type="html"><![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/atom/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/atom/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/atom/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>]]></content>
		</entry>
</feed>