<?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 - emacs</title>
	<subtitle>Emacs, sketches, and life</subtitle>
	<link rel="self" type="application/atom+xml" href="https://sachachua.com/blog/category/emacs/feed/atom/index.xml" />
  <link rel="alternate" type="text/html" href="https://sachachua.com/blog/category/emacs" />
  <id>https://sachachua.com/blog/category/emacs/feed/atom/index.xml</id>
  <generator uri="https://11ty.dev">11ty</generator>
	<updated>2026-07-09T00:30:29Z</updated>
<entry>
		<title type="html">Chatting with John Wiegley about personal information management and Karthik Chikmagalur</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-07-09T00:30:29Z</updated>
    <published>2026-07-09T00:30:29Z</published>
    <category term="emacs" />
		<id>https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/</id>
		<content type="html"><![CDATA[<p>
<a href="https://karthinks.com">Karthik Chikmagalur</a> suggested that we chat with <a href="https://newartisans.com/">John Wiegley</a> to find out about the interesting things he's been doing with Org Mode. It was a really cool look at a heavy-duty workflow that dealt with thousands of open items.
Since John was sharing his actual Org files instead of a simplified toy example, there was a fair bit of redaction to do. I got all the way to redacting these screenshots, but my brain didn't want to get around to figuring out how to redact the information in a live video where John was scrolling around and stuff. Instead of waiting for either me or Karthik to figure that part out someday, we figured we'd just post the audio, the transcript, and the screenshots. Here you go!
</p>

<p>
</p><div class="audio"><audio controls="1" preload="metadata" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687.opus?2026-07-08" type="audio/ogg"><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687.opus">Download the audio</a><track kind="captions" label="Captions" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687.vtt" srclang="en" default=""></audio><div class="captions" style="display: none"></div></div>
<p></p>
<div id="outline-container-org090e828" class="outline-3">
<h3 id="org090e828"><a href="https://sachachua.com/blog/category/emacs/feed/atom/index.xml#org090e828">Chapters</a></h3>
<div class="outline-text-3" id="text-org090e828">
<p>
</p><ul class="org-ul">
<li><span class="audio-time" data-start="0.000" data-stop="6.359">0:00</span> Getting set up with Zoom, chatting</li>

<li><span class="audio-time" data-start="154.800" data-stop="161.399">2:34</span> Increasing font size globally with C-x C-M-=</li>
<li><span class="audio-time" data-start="227.160" data-stop="231.119">3:47</span> Redacting information when sharing Org demos</li>
<li><span class="audio-time" data-start="281.400" data-stop="286.920">4:41</span> Daily Org Mode workflow for handling 40,000 entries</li>
<li><span class="audio-time" data-start="384.140" data-stop="386.679">6:24</span> Outlines for Focus and Home</li>

<li><span class="audio-time" data-start="454.860" data-stop="457.399">7:34</span> Column view</li>

<li><span class="audio-time" data-start="524.180" data-stop="526.279">8:44</span> Home is a collection of links</li>

<li><span class="audio-time" data-start="562.240" data-stop="565.319">9:22</span> C-c C-o opens one or all links in the Org Mode entry</li>

<li><span class="audio-time" data-start="578.640" data-stop="581.399">9:38</span> Example: Claude settings.json on multiple machines</li>

<li><span class="audio-time" data-start="701.380" data-stop="705.079">11:41</span> org-super-agenda is divided into topical categories</li>

<li><span class="audio-time" data-start="774.340" data-stop="779.399">12:54</span> Org-ql filters tasks</li>

<li><span class="audio-time" data-start="800.220" data-stop="803.559">13:20</span> Other agenda reports help review tasks</li>

<li><span class="audio-time" data-start="809.640" data-stop="812.519">13:29</span> Custom reports identify things that need to be filed</li>

<li><span class="audio-time" data-start="817.280" data-stop="821.519">13:37</span> I keep files in a flat directory and use search instead of categorizing files</li>
<li><span class="audio-time" data-start="854.100" data-stop="857.039">14:14</span> Make meaningful distinctions</li>
<li><span class="audio-time" data-start="968.860" data-stop="971.119">16:08</span> Color indicates agenda category</li>

<li><span class="audio-time" data-start="1020.960" data-stop="1022.959">17:00</span> Simplifying meaningful distinctions</li>
<li><span class="audio-time" data-start="1081.980" data-stop="1083.679">18:01</span> Capturing a task</li>
<li><span class="audio-time" data-start="1262.320" data-stop="1263.919">21:02</span> Task metadata is mostly automatic</li>

<li><span class="audio-time" data-start="1315.320" data-stop="1316.759">21:55</span> Task hash detects modifications</li>
<li><span class="audio-time" data-start="1344.260" data-stop="1349.679">22:24</span> Categorizing tasks</li>

<li><span class="audio-time" data-start="1376.120" data-stop="1379.819">22:56</span> Daily reports should be short; reschedule or unschedule aggressively</li>

<li><span class="audio-time" data-start="1541.240" data-stop="1544.099">25:41</span> Note from Karthik: John is an old-school Org user</li>
<li><span class="audio-time" data-start="1624.540" data-stop="1630.299">27:04</span> Continuing with the lifecycle: capture, file, schedule, review</li>

<li><span class="audio-time" data-start="1668.660" data-stop="1671.939">27:48</span> Habits</li>

<li><span class="audio-time" data-start="1689.140" data-stop="1693.419">28:09</span> org-review and items needing review; randomization</li>

<li><span class="audio-time" data-start="1789.680" data-stop="1791.819">29:49</span> org-review task properties</li>

<li><span class="audio-time" data-start="1908.600" data-stop="1909.739">31:48</span> It's all just plain text</li>
<li><span class="audio-time" data-start="1998.140" data-stop="2000.819">33:18</span> Capturing to the current point with M-0</li>

<li><span class="audio-time" data-start="2039.140" data-stop="2041.979">33:59</span> A different set of Org Roam capture templates</li>

<li><span class="audio-time" data-start="2058.940" data-stop="2060.880">34:18</span> Capturing by name</li>

<li><span class="audio-time" data-start="2078.660" data-stop="2082.819">34:38</span> An after-save hook automatically renames the files</li>

<li><span class="audio-time" data-start="2094.380" data-stop="2097.219">34:54</span> org-ql in the template provides a meeting agenda</li>

<li><span class="audio-time" data-start="2149.300" data-stop="2151.859">35:49</span> The "Review by" argument for the column view block filters the tasks</li>

<li><span class="audio-time" data-start="2196.020" data-stop="2200.379">36:36</span> Copying from Slack to paste into tasks</li>
<li><span class="audio-time" data-start="2293.480" data-stop="2295.739">38:13</span> Using gptel and large language models to generate titles and identify tasks</li>
<li><span class="audio-time" data-start="2403.920" data-stop="2406.019">40:03</span> after-save-hook adds a TODO file tag; the TODO file tag adds it to the list of org-agenda files</li>

<li><span class="audio-time" data-start="2433.040" data-stop="2434.979">40:33</span> Reviewing the task</li>
<li><span class="audio-time" data-start="2524.560" data-stop="2527.579">42:04</span> Karthik: "Things I capture in Org never get done."</li>
<li><span class="audio-time" data-start="2560.380" data-stop="2563.259">42:40</span> Grazing through tasks</li>

<li><span class="audio-time" data-start="2616.120" data-stop="2618.579">43:36</span> This is an advanced Org workflow</li>
<li><span class="audio-time" data-start="2711.700" data-stop="2714.499">45:11</span> Drafts: write down the text and then decide what to do with it</li>

<li><span class="audio-time" data-start="2807.540" data-stop="2809.579">46:47</span> My lab notebook collects notes and ideas throughout the day</li>
<li><span class="audio-time" data-start="2957.500" data-stop="2959.979">49:17</span> org-jw: normalizing structured data</li>
<li><span class="audio-time" data-start="3077.280" data-stop="3079.019">51:17</span> Copying structured Org data into a PostgreSQL database</li>
<li><span class="audio-time" data-start="3192.900" data-stop="3195.939">53:12</span> OpenClaw enables conversations with the data</li>
<li><span class="audio-time" data-start="3409.820" data-stop="3411.720">56:49</span> Avoid drift by using only one TODO system</li>

<li><span class="audio-time" data-start="3539.620" data-stop="3540.699">58:59</span> Capturing with Drafts on the Mac or Apple Watch</li>
<li><span class="audio-time" data-start="3661.780" data-stop="3662.419">1:01:01</span> A foot pedal makes speech-to-text even more convenient; whisperflow, handy</li>
<li><span class="audio-time" data-start="3999.760" data-stop="4002.819">1:06:39</span> Looking to the future</li>

<li><span class="audio-time" data-start="4027.361" data-stop="4029.899">1:07:07</span> John is running local models on a Mac Studio</li>
<li><span class="audio-time" data-start="4092.280" data-stop="4096.419">1:08:12</span> Using AI to facilitate getting data into PostgreSQL; structural limitations?</li>
<li><span class="audio-time" data-start="4264.640" data-stop="4266.020">1:11:04</span> Habits are better than goals</li>
<li><span class="audio-time" data-start="4284.400" data-stop="4285.339">1:11:24</span> Breaking down tasks with a large language model</li>

<li><span class="audio-time" data-start="4333.440" data-stop="4336.580">1:12:13</span> Inferring tasks with a large language model</li>
<li><span class="audio-time" data-start="4535.100" data-stop="4538.839">1:15:35</span> johnw/prompt-deploy has the prompts</li>

<li><span class="audio-time" data-start="4622.840" data-stop="4625.559">1:17:02</span> Summarizing our conversation so far</li>
<li><span class="audio-time" data-start="4753.740" data-stop="4756.759">1:19:13</span> Karthik's completing-read version of C-c C-o</li>
<li><span class="audio-time" data-start="4796.381" data-stop="4803.460">1:19:56</span> Karthik's thoughts on the demo so far</li>
<li><span class="audio-time" data-start="4889.880" data-stop="4890.500">1:21:29</span> Categories are subject areas</li>
<li><span class="audio-time" data-start="4978.760" data-stop="4981.819">1:22:58</span> TODO keywords use a fixed vocabulary</li>

<li><span class="audio-time" data-start="5088.700" data-stop="5089.879">1:24:48</span> Tags are context: person, place, or thing needed for the task</li>

<li><span class="audio-time" data-start="5174.760" data-stop="5182.619">1:26:14</span> Priority: A means must do, C means optional</li>
<li><span class="audio-time" data-start="5251.600" data-stop="5252.679">1:27:31</span> Properties are mostly automatically assigned metadata</li>

<li><span class="audio-time" data-start="5289.280" data-stop="5290.759">1:28:09</span> The hash</li>

<li><span class="audio-time" data-start="5331.340" data-stop="5333.199">1:28:51</span> Assigning the tags when refiling</li>
<li><span class="audio-time" data-start="5447.880" data-stop="5456.079">1:30:47</span> Per-file tags and tag validation</li>

<li><span class="audio-time" data-start="5489.420" data-stop="5492.199">1:31:29</span> Starting tasks with a restricted set of verbs and validating them</li>

<li><span class="audio-time" data-start="5588.881" data-stop="5592.879">1:33:08</span> Searching items: ripgrep, vector embedding, openclaw</li>
<li><span class="audio-time" data-start="5736.920" data-stop="5740.260">1:35:36</span> Linting and normalizing data in a pre-commit hook using Lefthook</li>

<li><span class="audio-time" data-start="5800.820" data-stop="5802.919">1:36:40</span> LLM-generated RFC-style specifications of the format</li>

<li><span class="audio-time" data-start="5837.540" data-stop="5839.839">1:37:17</span> The heading grammar</li>

<li><span class="audio-time" data-start="5872.460" data-stop="5874.999">1:37:52</span> A TODO example with everything</li>

<li><span class="audio-time" data-start="5907.340" data-stop="5909.599">1:38:27</span> Locating objects in the physical world with {text}</li>
<li><span class="audio-time" data-start="6037.360" data-stop="6041.019">1:40:37</span> Managing attachments: DEVONthink for long-lived files, org-attach for temporary ones</li>
<li><span class="audio-time" data-start="6105.280" data-stop="6108.399">1:41:45</span> Tags hint at where you can find more information</li>
<li><span class="audio-time" data-start="6151.440" data-stop="6157.319">1:42:31</span> :LINK: tags indicate that there is a link; LINK state says this note is only a link</li>

<li><span class="audio-time" data-start="6210.000" data-stop="6213.039">1:43:30</span> Some other code turns Firefox bookmarks into an Org Mode file</li>
<li><span class="audio-time" data-start="6246.780" data-stop="6250.959">1:44:06</span> The format specifications are LLM-generated</li>
<li><span class="audio-time" data-start="6330.201" data-stop="6330.719">1:45:30</span> Quick recap</li>
<li><span class="audio-time" data-start="6388.400" data-stop="6391.979">1:46:28</span> A quick look at Github repositories: org2jsonl</li>

<li><span class="audio-time" data-start="6436.920" data-stop="6440.620">1:47:16</span> org-gptel: chat with AI within Org Mode instead of having to leave it</li>

<li><span class="audio-time" data-start="6455.460" data-stop="6456.959">1:47:35</span> obr: fork of Rust port of Beads to use Org Mode for issue lists</li>

<li><span class="audio-time" data-start="6465.760" data-stop="6467.759">1:47:45</span> org-context saves metadata when refiling to allow restoring the task to its original location afterwards</li>
<li><span class="audio-time" data-start="6553.280" data-stop="6554.900">1:49:13</span> org-context use case: moving packing lists to the phone and back</li>
<li><span class="audio-time" data-start="6682.700" data-stop="6684.319">1:51:22</span> org-agenda-overlay</li>

<li><span class="audio-time" data-start="6785.120" data-stop="6785.799">1:53:05</span> john-wiegley-theme defines a palette</li>

<li><span class="audio-time" data-start="6976.420" data-stop="6977.559">1:56:16</span> Some numbers: 83 packages just related to Org Mode</li>
<li><span class="audio-time" data-start="7085.880" data-stop="7086.959">1:58:05</span> Org Mode inspiration</li>
<li><span class="audio-time" data-start="7131.920" data-stop="7133.119">1:58:51</span> Statistics</li>
<li><span class="audio-time" data-start="7218.021" data-stop="7218.560">2:00:18</span> Most-common properties: ID, CREATED</li>

<li><span class="audio-time" data-start="7233.180" data-stop="7234.499">2:00:33</span> Log entries are useful for notes by date</li>
<li><span class="audio-time" data-start="7308.541" data-stop="7310.519">2:01:48</span> Transcripts are great too</li>
</ul>

<p></p>
</div>
</div>
<div id="outline-container-org6a53dbc" class="outline-3">
<h3 id="org6a53dbc"><a href="https://sachachua.com/blog/category/emacs/feed/atom/index.xml#org6a53dbc">Transcript</a></h3>
<div class="outline-text-3" id="text-org6a53dbc">
<details class="code-details"><summary>Expand this for 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>Getting set up with Zoom, chatting
</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="0.000000" data-stop="6.359000"><strong class="speaker-name">Sacha:</strong>  Recorded. There you go. Fantastic. Karthik was just telling me</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6.360000" data-stop="11.479000">that you and Karthik have been having cozy chats on Discord</span> <span class="audio-time caption" data-speaker="Sacha" data-start="11.480000" data-stop="14.719000">about all the cool things you've been doing on the road.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="14.720000" data-stop="15.360000"><strong class="speaker-name">John:</strong>  That's right.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="15.361000" data-stop="18.339000"><strong class="speaker-name">Sacha:</strong>  Here we are.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="18.340000" data-stop="19.839000"><strong class="speaker-name">Karthik:</strong>  Okay. Hi, John.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="19.840000" data-stop="21.439000"><strong class="speaker-name">John:</strong>  Hey there, Karthik.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="21.440000" data-stop="24.399000"><strong class="speaker-name">Sacha:</strong>  Okay, I'm going to figure this out.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="24.400000" data-stop="25.599000">There's probably a gallery view that I can use</span> <span class="audio-time caption" data-speaker="Sacha" data-start="25.600000" data-stop="29.599000">to show everybody on screen. Sorry, Zoom is—</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="29.600000" data-stop="31.759000"><strong class="speaker-name">John:</strong>  That little nine-boxes icon in the upper right</span> <span class="audio-time caption" data-speaker="John" data-start="31.760000" data-stop="34.639000">should give you that option.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="34.640000" data-stop="41.799000"><strong class="speaker-name">Sacha:</strong>  Nine boxes. I'm not seeing it. Nine boxes.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="41.800000" data-stop="43.719000"><strong class="speaker-name">John:</strong>  Oh, you might be on a Linux machine.</span> <span class="audio-time caption" data-speaker="John" data-start="43.720000" data-stop="44.599000">I don't know how it works.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="44.600000" data-stop="47.999000"><strong class="speaker-name">Karthik:</strong>  It says "view." For me,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="48.000000" data-stop="52.959000">it's a button on the top right that says "view."</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="52.960000" data-stop="54.999000"><strong class="speaker-name">Sacha:</strong>  I'm just on the little screen</span> <span class="audio-time caption" data-speaker="Sacha" data-start="55.000000" data-stop="55.759000">and I'm in the web browser,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="55.760000" data-stop="56.959000">so I don't see it. But I'm going to leave</span> <span class="audio-time caption" data-speaker="Sacha" data-start="56.960000" data-stop="62.019000">and I'll come right back.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="62.020000" data-stop="62.919000"><strong class="speaker-name">John:</strong>  Okay. It's been a while</span> <span class="audio-time caption" data-speaker="John" data-start="62.920000" data-stop="67.159000">since we've seen each other in person, Karthik.</span> <span class="audio-time caption" data-speaker="John" data-start="67.160000" data-stop="69.559000">How's the new job?</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="69.560000" data-stop="73.719000"><strong class="speaker-name">Karthik:</strong>  Oh, it's busy. It's getting busier and busier.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="73.720000" data-stop="78.919000">Just managing this two hours in the afternoon today</span> <span class="audio-time caption" data-speaker="Karthik" data-start="78.920000" data-stop="80.639000">was quite a deal.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="80.640000" data-stop="82.479000"><strong class="speaker-name">John:</strong>  Oh, I'm sorry to have been late.</span> <span class="audio-time caption" data-speaker="John" data-start="82.480000" data-stop="84.999000">I did not mean to.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="85.000000" data-stop="86.919000"><strong class="speaker-name">Karthik:</strong>  Oh, no, no, it's fine.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="86.920000" data-stop="96.159000">I'm glad we can finally capture your amazeballs Org setup.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="96.160000" data-stop="97.959000"><strong class="speaker-name">John:</strong>  We'll see what we can cover.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="97.960000" data-stop="100.159000"><strong class="speaker-name">Karthik:</strong>  So yeah, roughly speaking,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="100.160000" data-stop="103.799000">I want to spend half an hour where you just show</span> <span class="audio-time caption" data-speaker="Karthik" data-start="103.800000" data-stop="105.359000">the various things you do with Org</span> <span class="audio-time caption" data-speaker="Karthik" data-start="105.360000" data-stop="106.919000">and how you use it to track your life.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="106.920000" data-stop="108.759000">The other half hour, I'm going to badger you</span> <span class="audio-time caption" data-speaker="Karthik" data-start="108.760000" data-stop="111.399000">with philosophical questions</span> <span class="audio-time caption" data-speaker="Karthik" data-start="111.400000" data-stop="114.479000">about what it means to track your life.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="114.480000" data-stop="116.739000"><strong class="speaker-name">John:</strong>  Okay, that sounds fair.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="116.740000" data-stop="122.479000"><strong class="speaker-name">Karthik:</strong>  Right? Where Org will be a participant but not the focus.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="122.480000" data-stop="128.239000">That's kind of my plan, but I'm going to let Sacha take it away</span> <span class="audio-time caption" data-speaker="Karthik" data-start="128.240000" data-stop="131.359000">because she's the consummate interviewer here.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="131.360000" data-stop="134.119000">I will pipe in with questions. That's the plan.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="134.120000" data-stop="138.319000">Okay, can we check if you can share your screen,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="138.320000" data-stop="144.119000">your Emacs window, because I imagine we'll be seeing that a lot.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="144.120000" data-stop="154.799000">Let me see here. My Emacs window. Okay.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="154.000000">2:34</span> <strong>Increasing font size globally with C-x C-M-=</strong></div><p></p><span class="audio-time caption" data-speaker="Karthik" data-start="154.800000" data-stop="161.399000"><strong class="speaker-name">Karthik:</strong> 
John, could you increase the font size by a little bit?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="161.400000" data-stop="163.319000">Because I'm imagining people watching this on YouTube.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="163.320000" data-stop="166.259000">I'm going to end up having to do that a lot.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="166.260000" data-stop="169.179000"><strong class="speaker-name">John:</strong>  I don't know how to do it globally.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="169.180000" data-stop="173.919000"><strong class="speaker-name">Karthik:</strong>  I can tell you. Get your fingers warmed up</span> <span class="audio-time caption" data-speaker="Karthik" data-start="173.920000" data-stop="181.439000">because it's C-x C-M-=.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="181.440000" data-stop="185.299000"><strong class="speaker-name">John:</strong>  Yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="185.300000" data-stop="189.760000"><strong class="speaker-name">Sacha:</strong>  And then—okay. Yes, all right.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="189.761000" data-stop="191.159000"><strong class="speaker-name">John:</strong>  Wow, look at that.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="191.160000" data-stop="194.999000"><strong class="speaker-name">Karthik:</strong>  And then you can just keep pressing equals to keep increasing it.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="195.000000" data-stop="198.279000"><strong class="speaker-name">John:</strong>  So which size? Is this size good?</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="198.280000" data-stop="203.879000"><strong class="speaker-name">Karthik:</strong>  Yeah, this size. Sacha, do you think this is big enough?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="203.880000" data-stop="212.619000"><strong class="speaker-name">Sacha:</strong>  It looks great. It looks fine to me. Let's give it a try.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="212.620000" data-stop="218.839000"><strong class="speaker-name">John:</strong>  It's going to be a lot of text to blur out, Karthik.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="218.840000" data-stop="221.359000"><strong class="speaker-name">Sacha:</strong>  Do you want it bigger?</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="221.360000" data-stop="227.159000"><strong class="speaker-name">Karthik:</strong>  I can draw big windows in the video editor.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="227.000000">3:47</span> <strong>Redacting information when sharing Org demos</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="227.160000" data-stop="231.119000"><strong class="speaker-name">Sacha:</strong>  I guess someday we will fix this with some kind of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="231.120000" data-stop="236.959000">redaction global minor mode that just replaces everything</span> <span class="audio-time caption" data-speaker="Sacha" data-start="236.960000" data-stop="238.239000">with plausible-sounding text.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="238.240000" data-stop="242.839000">I have something like that locally—it just replaces</span> <span class="audio-time caption" data-speaker="Sacha" data-start="242.840000" data-stop="247.139000">email addresses and phone numbers and stuff. But yes.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="247.140000" data-stop="249.279000"><strong class="speaker-name">John:</strong>  I wonder if Sora could do that actually</span> <span class="audio-time caption" data-speaker="John" data-start="249.280000" data-stop="252.739000">to the whole video.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="252.740000" data-stop="256.019000"><strong class="speaker-name">Karthik:</strong>  You would be sharing all your data.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="256.020000" data-stop="259.439000"><strong class="speaker-name">John:</strong>  Oh, that's true. Never mind.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="259.440000" data-stop="261.399000"><strong class="speaker-name">Sacha:</strong>  One thing that we were talking about before is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="261.400000" data-stop="263.279000">you could also consider sharing the transcript</span> <span class="audio-time caption" data-speaker="Sacha" data-start="263.280000" data-stop="265.799000">and then either screenshots or short clips,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="265.800000" data-stop="268.839000">because that way we can just focus on the parts</span> <span class="audio-time caption" data-speaker="Sacha" data-start="268.840000" data-stop="272.319000">that demonstrate the workflow that you've developed</span> <span class="audio-time caption" data-speaker="Sacha" data-start="272.320000" data-stop="274.839000">without necessarily having to edit every single frame</span> <span class="audio-time caption" data-speaker="Sacha" data-start="274.840000" data-stop="278.739000">to make sure that everything is always covered.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="278.740000" data-stop="281.399000"><strong class="speaker-name">John:</strong>  Sure. Yes.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="281.000000">4:41</span> <strong>Daily Org Mode workflow for handling 40,000 entries</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="281.400000" data-stop="286.920000"><strong class="speaker-name">Sacha:</strong>  So thank you for joining me and  Karthik.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="286.921000" data-stop="289.439000">I'm looking forward to finding out about all the cool things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="289.440000" data-stop="291.799000">that you've been developing in your Org-mode workflow</span> <span class="audio-time caption" data-speaker="Sacha" data-start="291.800000" data-stop="293.639000">over the past two years</span> <span class="audio-time caption" data-speaker="Sacha" data-start="293.640000" data-stop="294.919000">since our last conversation</span> <span class="audio-time caption" data-speaker="Sacha" data-start="294.920000" data-stop="297.279000">about Org and personal information management.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="297.280000" data-stop="302.739000">So what does your daily Org workflow look like now?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="302.740000" data-stop="307.319000"><strong class="speaker-name">John:</strong>  I've actually evolved several different tools</span> <span class="audio-time caption" data-speaker="John" data-start="307.320000" data-stop="312.599000">on top of Org-mode itself. Now that we're in 2026,</span> <span class="audio-time caption" data-speaker="John" data-start="312.600000" data-stop="317.359000">I have just under 40,000 Org-mode entries in my system.</span> <span class="audio-time caption" data-speaker="John" data-start="317.360000" data-stop="323.839000">About 9,700 of those are tasks, and right now there are</span> <span class="audio-time caption" data-speaker="John" data-start="323.840000" data-stop="327.319000">something like 1,200 of those tasks that are open.</span> <span class="audio-time caption" data-speaker="John" data-start="327.320000" data-stop="331.919000">So my whole system is meant now to help me pay attention</span> <span class="audio-time caption" data-speaker="John" data-start="331.920000" data-stop="334.079000">to what I need to pay attention to,</span> <span class="audio-time caption" data-speaker="John" data-start="334.080000" data-stop="335.519000">because there's too much information.</span> <span class="audio-time caption" data-speaker="John" data-start="335.520000" data-stop="339.079000">I could never, even if I wanted to, review it all</span> <span class="audio-time caption" data-speaker="John" data-start="339.080000" data-stop="341.319000">or even just browse through it all.</span> <span class="audio-time caption" data-speaker="John" data-start="341.320000" data-stop="345.439000">So Org-mode has to be the one to really condense everything</span> <span class="audio-time caption" data-speaker="John" data-start="345.440000" data-stop="348.839000">into lists that are appropriate for when I'm working</span> <span class="audio-time caption" data-speaker="John" data-start="348.840000" data-stop="349.799000">and what I'm working on.</span> <span class="audio-time caption" data-speaker="John" data-start="349.800000" data-stop="351.839000">That's kind of the object of</span> <span class="audio-time caption" data-speaker="John" data-start="351.840000" data-stop="354.199000">all the different things that I have:</span> <span class="audio-time caption" data-speaker="John" data-start="354.200000" data-stop="358.519000">how do I make use of this sea of data?</span> <span class="audio-time caption" data-speaker="John" data-start="358.520000" data-stop="360.479000">And I'm sure there's a whole bunch of stuff in my life</span> <span class="audio-time caption" data-speaker="John" data-start="360.480000" data-stop="364.879000">that isn't even captured yet. That's the real rub here—</span> <span class="audio-time caption" data-speaker="John" data-start="364.880000" data-stop="366.559000">despite this complexity,</span> <span class="audio-time caption" data-speaker="John" data-start="366.560000" data-stop="368.319000">it's not that there's too much complexity,</span> <span class="audio-time caption" data-speaker="John" data-start="368.320000" data-stop="371.159000">it's that there's not even enough yet.</span> <span class="audio-time caption" data-speaker="John" data-start="371.160000" data-stop="373.799000">There are still things that live only in my mind,</span> <span class="audio-time caption" data-speaker="John" data-start="373.800000" data-stop="375.479000">and as much as I can,</span> <span class="audio-time caption" data-speaker="John" data-start="375.480000" data-stop="377.679000">I try to move them from my mind into Org-mode.</span> <span class="audio-time caption" data-speaker="John" data-start="377.680000" data-stop="380.439000">But then I need to have Org-mode show it to me</span> <span class="audio-time caption" data-speaker="John" data-start="380.440000" data-stop="381.359000">when I need to see it.</span> <span class="audio-time caption" data-speaker="John" data-start="381.360000" data-stop="384.139000">Otherwise, it's no better than my memory.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="384.000000">6:24</span> <strong>Outlines for Focus and Home
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-06-23.160.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-06-23.160.jpg" alt="image from video 00:06:23.160" data-time="00:06:23.160"></a><span class="audio-time caption" data-speaker="John" data-start="384.140000" data-stop="386.679000"><strong class="speaker-name">John:</strong>  When I first go into Emacs,</span> <span class="audio-time caption" data-speaker="John" data-start="386.680000" data-stop="389.479000">I always see these two pages.</span> <span class="audio-time caption" data-speaker="John" data-start="389.480000" data-stop="392.639000">I use Org-roam on top of Org-mode</span> <span class="audio-time caption" data-speaker="John" data-start="392.640000" data-stop="394.799000">in order to move tasks and notes</span> <span class="audio-time caption" data-speaker="John" data-start="394.800000" data-stop="396.799000">into separate Org-mode files</span> <span class="audio-time caption" data-speaker="John" data-start="396.800000" data-stop="399.799000">and have those be interlinked and organized well.</span> <span class="audio-time caption" data-speaker="John" data-start="399.800000" data-stop="402.319000">I interlink everything by ID,</span> <span class="audio-time caption" data-speaker="John" data-start="402.320000" data-stop="404.199000">which is sort of an Org-roam philosophy,</span> <span class="audio-time caption" data-speaker="John" data-start="404.200000" data-stop="406.319000">and I've taken that on.</span> <span class="audio-time caption" data-speaker="John" data-start="406.320000" data-stop="408.919000">I come into the focus page on the left,</span> <span class="audio-time caption" data-speaker="John" data-start="408.920000" data-stop="410.039000">which is all of the stuff</span> <span class="audio-time caption" data-speaker="John" data-start="410.040000" data-stop="412.479000">that I want to focus on project-wise right now.</span> <span class="audio-time caption" data-speaker="John" data-start="412.480000" data-stop="415.079000">Every heading should either be</span> <span class="audio-time caption" data-speaker="John" data-start="415.080000" data-stop="418.119000">a link to the project that the focus is about,</span> <span class="audio-time caption" data-speaker="John" data-start="418.120000" data-stop="424.679000">or if I go ahead and look at the body of one of these entries,</span> <span class="audio-time caption" data-speaker="John" data-start="424.680000" data-stop="429.119000">it will be a column view that pulls in a report—</span> <span class="audio-time caption" data-speaker="John" data-start="429.120000" data-stop="433.359000">basically an embedded report for that category.</span> <span class="audio-time caption" data-speaker="John" data-start="433.360000" data-stop="440.799000">I use categories a lot, and I use projects a lot,</span> <span class="audio-time caption" data-speaker="John" data-start="440.800000" data-stop="445.079000">where projects are hierarchies that contain tasks,</span> <span class="audio-time caption" data-speaker="John" data-start="445.080000" data-stop="447.159000">and categories are just names</span> <span class="audio-time caption" data-speaker="John" data-start="447.160000" data-stop="449.799000">that might cut across many, many tasks.</span> <span class="audio-time caption" data-speaker="John" data-start="449.800000" data-stop="452.999000">I also use tags, but tags are a whole separate thing</span> <span class="audio-time caption" data-speaker="John" data-start="453.000000" data-stop="454.599000">that doesn't have to do with this.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="454.000000">7:34</span> <strong>Column view
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-07-37.400.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-07-37.400.jpg" alt="image from video 00:07:37.400" data-time="00:07:37.400"></a><span class="audio-time caption" data-speaker="John" data-start="454.860000" data-stop="457.399000"><strong class="speaker-name">John:</strong> So anyway, you can see here a column view—</span> <span class="audio-time caption" data-speaker="John" data-start="457.400000" data-stop="461.439000">this is a special version of column view.</span> <span class="audio-time caption" data-speaker="John" data-start="461.440000" data-stop="465.679000">It's based on org-ql in order for it to be fast enough,</span> <span class="audio-time caption" data-speaker="John" data-start="465.680000" data-stop="468.679000">but this column view doesn't exist out in the wild.</span> <span class="audio-time caption" data-speaker="John" data-start="468.680000" data-stop="471.359000">This is in my own private dot-emacs repository.</span> <span class="audio-time caption" data-speaker="John" data-start="471.360000" data-stop="474.439000">I wrote an org-ql column view function.</span> <span class="audio-time caption" data-speaker="John" data-start="474.440000" data-stop="477.879000">Of course, it's very customized to my data format,</span> <span class="audio-time caption" data-speaker="John" data-start="477.880000" data-stop="481.479000">but I have a <code>:who</code> field, and if you put a word here,</span> <span class="audio-time caption" data-speaker="John" data-start="481.480000" data-stop="487.399000">that means if this shows up as either a category or a tag,</span> <span class="audio-time caption" data-speaker="John" data-start="487.400000" data-stop="490.079000">then include that item in the report.</span> <span class="audio-time caption" data-speaker="John" data-start="490.080000" data-stop="493.239000">Then I want it to sort by column three,</span> <span class="audio-time caption" data-speaker="John" data-start="493.240000" data-stop="495.679000">and column three here ends up being the tags.</span> <span class="audio-time caption" data-speaker="John" data-start="495.680000" data-stop="498.759000">That way I can see things sorted by tag.</span> <span class="audio-time caption" data-speaker="John" data-start="498.760000" data-stop="501.799000">Anyway, each of these is linked to</span> <span class="audio-time caption" data-speaker="John" data-start="501.800000" data-stop="503.559000">the corresponding issue by identity.</span> <span class="audio-time caption" data-speaker="John" data-start="503.560000" data-stop="506.039000">So if I just do <code>C-c C-o</code>,</span> <span class="audio-time caption" data-speaker="John" data-start="506.040000" data-stop="509.599000">then it will take me over to that item</span> <span class="audio-time caption" data-speaker="John" data-start="509.600000" data-stop="512.919000">in that Org-mode file—that Org-roam file, sorry.</span> <span class="audio-time caption" data-speaker="John" data-start="512.920000" data-stop="516.359000">So that's the purpose of the focus file:</span> <span class="audio-time caption" data-speaker="John" data-start="516.360000" data-stop="519.399000">I can have a 10,000-foot overview</span> <span class="audio-time caption" data-speaker="John" data-start="519.400000" data-stop="522.119000">of what I'm currently working on</span> <span class="audio-time caption" data-speaker="John" data-start="522.120000" data-stop="524.179000">and what I want to focus on.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="524.000000">8:44</span> <strong>Home is a collection of links
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-08-45.680.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-08-45.680.jpg" alt="image from video 00:08:45.680" data-time="00:08:45.680"></a><span class="audio-time caption" data-speaker="John" data-start="524.180000" data-stop="526.279000"><strong class="speaker-name">John:</strong> Then on the right is the homepage.</span> <span class="audio-time caption" data-speaker="John" data-start="526.280000" data-stop="530.279000">This homepage basically is a collection of links,</span> <span class="audio-time caption" data-speaker="John" data-start="530.280000" data-stop="536.079000">kind of like Linux utilities such as Glances or Cockpit—</span> <span class="audio-time caption" data-speaker="John" data-start="536.080000" data-stop="538.359000">something that allows you to have one page</span> <span class="audio-time caption" data-speaker="John" data-start="538.360000" data-stop="540.599000">that you jump to all kinds of different things from.</span> <span class="audio-time caption" data-speaker="John" data-start="540.600000" data-stop="543.679000">This is my jumping-off page to a bunch of other pages</span> <span class="audio-time caption" data-speaker="John" data-start="543.680000" data-stop="546.279000">that themselves serve as indexes</span> <span class="audio-time caption" data-speaker="John" data-start="546.280000" data-stop="550.919000">within my Org-mode/Org-roam repository.</span> <span class="audio-time caption" data-speaker="John" data-start="550.920000" data-stop="552.639000">This way I don't have to remember,</span> <span class="audio-time caption" data-speaker="John" data-start="552.640000" data-stop="555.679000">"Oh yeah, how did I get to such-and-such a project?"</span> <span class="audio-time caption" data-speaker="John" data-start="555.680000" data-stop="558.959000">I can just look in—it's a bookmarks list,</span> <span class="audio-time caption" data-speaker="John" data-start="558.960000" data-stop="562.239000">but it's a meta-bookmarks list.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="562.000000">9:22</span> <strong>C-c C-o opens one or all links in the Org Mode entry
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-09-32.720.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-09-32.720.jpg" alt="image from video 00:09:32.720" data-time="00:09:32.720"></a><span class="audio-time caption" data-speaker="John" data-start="562.240000" data-stop="565.319000"><strong class="speaker-name">John:</strong> The other nice thing about Org-mode is that</span> <span class="audio-time caption" data-speaker="John" data-start="565.320000" data-stop="568.039000">if you're on an entry that has links</span> <span class="audio-time caption" data-speaker="John" data-start="568.040000" data-stop="570.999000">inside the entry like this one does,</span> <span class="audio-time caption" data-speaker="John" data-start="571.000000" data-stop="573.239000">and you do C-c C-o,</span> <span class="audio-time caption" data-speaker="John" data-start="573.240000" data-stop="575.119000">it'll show you all of the links,</span> <span class="audio-time caption" data-speaker="John" data-start="575.120000" data-stop="578.639000">and then you can hit return to open them all.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="578.000000">9:38</span> <strong>Example: Claude settings.json on multiple machines
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-09-44.800.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-09-44.800.jpg" alt="image from video 00:09:44.800" data-time="00:09:44.800"></a><span class="audio-time caption" data-speaker="John" data-start="578.640000" data-stop="581.399000"><strong class="speaker-name">John:</strong> This way, what I do in the homepage is,</span> <span class="audio-time caption" data-speaker="John" data-start="581.400000" data-stop="584.799000">I have a whole bunch of settings files for Claude</span> <span class="audio-time caption" data-speaker="John" data-start="584.800000" data-stop="587.639000">because I use Claude in a lot of different places.</span> <span class="audio-time caption" data-speaker="John" data-start="587.640000" data-stop="590.039000">I have different accounts and I have different machines</span> <span class="audio-time caption" data-speaker="John" data-start="590.040000" data-stop="591.959000">and different accounts on those machines.</span> <span class="audio-time caption" data-speaker="John" data-start="591.960000" data-stop="594.079000">Sometimes I need to make an edit</span> <span class="audio-time caption" data-speaker="John" data-start="594.080000" data-stop="596.119000">to every single one of those files</span> <span class="audio-time caption" data-speaker="John" data-start="596.120000" data-stop="598.279000">but I don't want to have to remember</span> <span class="audio-time caption" data-speaker="John" data-start="598.280000" data-stop="599.639000">how to open up each one.</span> <span class="audio-time caption" data-speaker="John" data-start="599.640000" data-stop="601.919000">Even an Emacs bookmark wouldn't be quick enough,</span> <span class="audio-time caption" data-speaker="John" data-start="601.920000" data-stop="604.639000">but if I have the whole list of links</span> <span class="audio-time caption" data-speaker="John" data-start="604.640000" data-stop="606.319000">as I do here in my Org-mode file,</span> <span class="audio-time caption" data-speaker="John" data-start="606.320000" data-stop="608.839000">then I can just C-c C-o RET</span> <span class="audio-time caption" data-speaker="John" data-start="608.840000" data-stop="612.039000">and it will open all of these in my browser at once.</span> <span class="audio-time caption" data-speaker="John" data-start="612.040000" data-stop="615.319000">I do this a lot to open sets of pages</span> <span class="audio-time caption" data-speaker="John" data-start="615.320000" data-stop="618.319000">when I need to do bulk editing in the browser</span> <span class="audio-time caption" data-speaker="John" data-start="618.320000" data-stop="621.599000">or even in Emacs because, as you know,</span> <span class="audio-time caption" data-speaker="John" data-start="621.600000" data-stop="625.839000">with the right add-ons, Org-mode links can be empowered</span> <span class="audio-time caption" data-speaker="John" data-start="625.840000" data-stop="627.439000">to open all kinds of different things.</span> <span class="audio-time caption" data-speaker="John" data-start="627.440000" data-stop="629.439000">I have Org-mode links that jump to</span> <span class="audio-time caption" data-speaker="John" data-start="629.440000" data-stop="633.239000">Magit status pages for different projects in Git.</span> <span class="audio-time caption" data-speaker="John" data-start="633.240000" data-stop="636.239000">I have ones that open dired buffers.</span> <span class="audio-time caption" data-speaker="John" data-start="636.240000" data-stop="641.199000">I have ones that open Gnus, all kinds of different apps.</span> <span class="audio-time caption" data-speaker="John" data-start="641.200000" data-stop="645.799000">I navigate to these through Org-mode links.</span> <span class="audio-time caption" data-speaker="John" data-start="645.800000" data-stop="650.279000">In this way, Org-mode becomes the master dashboard</span> <span class="audio-time caption" data-speaker="John" data-start="650.280000" data-stop="652.999000">of my information ecology.</span> <span class="audio-time caption" data-speaker="John" data-start="653.000000" data-stop="657.059000">Yeah, so... go ahead.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="657.060000" data-stop="660.359000"><strong class="speaker-name">Sacha:</strong>  No, no. So to recapitulate: instead of using</span> <span class="audio-time caption" data-speaker="Sacha" data-start="660.360000" data-stop="662.639000">a gazillion agendas where you have to remember</span> <span class="audio-time caption" data-speaker="Sacha" data-start="662.640000" data-stop="664.919000">the keystrokes to open each custom agenda,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="664.920000" data-stop="668.999000">you use Org-mode outlines in your focus and your homepage</span> <span class="audio-time caption" data-speaker="Sacha" data-start="669.000000" data-stop="673.479000">that have links to or reports for the different things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="673.480000" data-stop="675.379000">that you're focusing on.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="675.380000" data-stop="677.639000"><strong class="speaker-name">John:</strong>  Yes, but not instead of.</span> <span class="audio-time caption" data-speaker="John" data-start="677.640000" data-stop="680.759000">I also use tons of Org-mode agenda links as well.</span> <span class="audio-time caption" data-speaker="John" data-start="680.760000" data-stop="684.959000">But Org-mode agenda links have a very specific focus.</span> <span class="audio-time caption" data-speaker="John" data-start="684.960000" data-stop="688.159000">Usually when I start the day, when I start Emacs,</span> <span class="audio-time caption" data-speaker="John" data-start="688.160000" data-stop="689.359000">I come to these two pages.</span> <span class="audio-time caption" data-speaker="John" data-start="689.360000" data-stop="691.479000">I've set it up so that after startup,</span> <span class="audio-time caption" data-speaker="John" data-start="691.480000" data-stop="693.239000">it always shows me these two pages.</span> <span class="audio-time caption" data-speaker="John" data-start="693.240000" data-stop="695.439000">But usually the first thing I do</span> <span class="audio-time caption" data-speaker="John" data-start="695.440000" data-stop="701.379000">is hit <code>C-c a a</code> to go to my agenda for today.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="701.000000">11:41</span> <strong>org-super-agenda is divided into topical categories
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-11-40.720.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-11-40.720.jpg" alt="image from video 00:11:40.720" data-time="00:11:40.720"></a><span class="audio-time caption" data-speaker="John" data-start="701.380000" data-stop="705.079000"><strong class="speaker-name">John:</strong> I use org-super-agenda to divide this into categories—</span> <span class="audio-time caption" data-speaker="John" data-start="705.080000" data-stop="708.999000">not category categories, but topical categories—</span> <span class="audio-time caption" data-speaker="John" data-start="709.000000" data-stop="711.999000">so that I can see things segregated by</span> <span class="audio-time caption" data-speaker="John" data-start="712.000000" data-stop="714.279000">which are the high-priority items,</span> <span class="audio-time caption" data-speaker="John" data-start="714.280000" data-stop="717.039000">which are the things that are currently in progress,</span> <span class="audio-time caption" data-speaker="John" data-start="717.040000" data-stop="721.119000">and then if they have a context where they need to happen</span> <span class="audio-time caption" data-speaker="John" data-start="721.120000" data-stop="723.119000">(phone calls, errands, blah blah blah),</span> <span class="audio-time caption" data-speaker="John" data-start="723.120000" data-stop="724.639000">then I see them all.</span> <span class="audio-time caption" data-speaker="John" data-start="724.640000" data-stop="727.079000">This is just one of the agenda reports I use;</span> <span class="audio-time caption" data-speaker="John" data-start="727.080000" data-stop="728.319000">this is the daily report.</span> <span class="audio-time caption" data-speaker="John" data-start="728.320000" data-stop="729.919000">If I look at my agenda here,</span> <span class="audio-time caption" data-speaker="John" data-start="729.920000" data-stop="733.799000">you can see I have the standard agenda reports,</span> <span class="audio-time caption" data-speaker="John" data-start="733.800000" data-stop="736.199000">but then I have subcategories.</span> <span class="audio-time caption" data-speaker="John" data-start="736.200000" data-stop="740.119000">I have a whole set of org-ql-powered agenda queries.</span> <span class="audio-time caption" data-speaker="John" data-start="740.120000" data-stop="744.739000">If I look at these, I can look at</span> <span class="audio-time caption" data-speaker="John" data-start="744.740000" data-stop="747.160000">all my open-source tasks, all my work tasks.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="747.161000" data-stop="752.039000"><strong class="speaker-name">Sacha:</strong>  Your screen is shifted sideways for me.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="752.040000" data-stop="753.079000">I'm not really sure.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="753.080000" data-stop="757.239000"><strong class="speaker-name">Karthik:</strong>  Same here. So it's a little bit on the left.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="757.240000" data-stop="759.719000">You may need to reshare your screen.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="759.720000" data-stop="765.779000"><strong class="speaker-name">John:</strong>  That's weird. I've never seen that happen before.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="765.780000" data-stop="767.599000"><strong class="speaker-name">Sacha:</strong>  So you've got your agenda.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="767.600000" data-stop="769.439000"><strong class="speaker-name">John:</strong>  I'm sharing a process window.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="769.440000" data-stop="771.479000"><strong class="speaker-name">Sacha:</strong>  Okay, here we are.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="771.480000" data-stop="774.339000">Yes, I see it now. Okay, so these are the other things you've got.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="774.000000">12:54</span> <strong>Org-ql filters tasks
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-12-55.920.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-12-55.920.jpg" alt="image from video 00:12:55.920" data-time="00:12:55.920"></a><span class="audio-time caption" data-speaker="John" data-start="774.340000" data-stop="779.399000"><strong class="speaker-name">John:</strong>  These are basically queries that I have created for org-ql,</span> <span class="audio-time caption" data-speaker="John" data-start="779.400000" data-stop="782.039000">and then the tasks-for that mirrors</span> <span class="audio-time caption" data-speaker="John" data-start="782.040000" data-stop="785.399000">that org-ql column view "who tag"</span> <span class="audio-time caption" data-speaker="John" data-start="785.400000" data-stop="788.519000">where I can give something that will match</span> <span class="audio-time caption" data-speaker="John" data-start="788.520000" data-stop="793.499000">either a category or a tag,</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-13-12.240.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-13-12.240.jpg" alt="image from video 00:13:12.240" data-time="00:13:12.240"></a><span class="audio-time caption" data-speaker="John" data-start="793.500000" data-stop="796.439000"><strong class="speaker-name">John:</strong> and it will show me here in the org-agenda report</span> <span class="audio-time caption" data-speaker="John" data-start="796.440000" data-stop="798.039000">the same information it would have shown</span> <span class="audio-time caption" data-speaker="John" data-start="798.040000" data-stop="800.219000">in that org-ql column view report.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="800.000000">13:20</span> <strong>Other agenda reports help review tasks
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-13-26.760.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-13-26.760.jpg" alt="image from video 00:13:26.760" data-time="00:13:26.760"></a><span class="audio-time caption" data-speaker="John" data-start="800.220000" data-stop="803.559000"><strong class="speaker-name">John:</strong> I also have different reports in the agenda</span> <span class="audio-time caption" data-speaker="John" data-start="803.560000" data-stop="804.839000">for reviewing my tasks,</span> <span class="audio-time caption" data-speaker="John" data-start="804.840000" data-stop="806.759000">and I'll have to come back to that</span> <span class="audio-time caption" data-speaker="John" data-start="806.760000" data-stop="809.639000">because that's a big part of this whole process as well.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="809.000000">13:29</span> <strong>Custom reports identify things that need to be filed
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-13-29.200.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-13-29.200.jpg" alt="image from video 00:13:29.200" data-time="00:13:29.200"></a><span class="audio-time caption" data-speaker="John" data-start="809.640000" data-stop="812.519000"><strong class="speaker-name">John:</strong> Then at the bottom, you can see I have other custom reports</span> <span class="audio-time caption" data-speaker="John" data-start="812.520000" data-stop="814.599000">for seeing things that haven't been filed—</span> <span class="audio-time caption" data-speaker="John" data-start="814.600000" data-stop="817.279000">they're in my inbox, they need to be filed away.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="817.000000">13:37</span> <strong>I keep files in a flat directory and use search instead of categorizing files</strong></div><p></p><span class="audio-time caption" data-speaker="John" data-start="817.280000" data-stop="821.519000"><strong class="speaker-name">John:</strong>  I do like to file tasks in the file system.</span> <span class="audio-time caption" data-speaker="John" data-start="821.520000" data-stop="825.999000">I've lost the battle of introducing any kind of structure</span> <span class="audio-time caption" data-speaker="John" data-start="826.000000" data-stop="828.759000">because I just have too many files.</span> <span class="audio-time caption" data-speaker="John" data-start="828.760000" data-stop="831.919000">My database on functional programming alone</span> <span class="audio-time caption" data-speaker="John" data-start="831.920000" data-stop="834.119000">now has over 10,000 PDFs in it.</span> <span class="audio-time caption" data-speaker="John" data-start="834.120000" data-stop="836.759000">I just can't categorize those.</span> <span class="audio-time caption" data-speaker="John" data-start="836.760000" data-stop="839.719000">So they're all in one flat directory,</span> <span class="audio-time caption" data-speaker="John" data-start="839.720000" data-stop="842.839000">and I search for them by using AI</span> <span class="audio-time caption" data-speaker="John" data-start="842.840000" data-stop="846.239000">and by keyword search, because that's all I really can do.</span> <span class="audio-time caption" data-speaker="John" data-start="846.240000" data-stop="849.919000">But for Org-mode, I haven't given up</span> <span class="audio-time caption" data-speaker="John" data-start="849.920000" data-stop="852.239000">on having a hierarchy to my data.</span> <span class="audio-time caption" data-speaker="John" data-start="852.240000" data-stop="854.099000">That's still helpful.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="854.000000">14:14</span> <strong>Make meaningful distinctions</strong></div><p></p><span class="audio-time caption" data-speaker="John" data-start="854.100000" data-stop="857.039000"><strong class="speaker-name">John:</strong> By the way, we're going to talk philosophy in a little bit,</span> <span class="audio-time caption" data-speaker="John" data-start="857.040000" data-stop="859.599000">but I will say that all the decisions I make</span> <span class="audio-time caption" data-speaker="John" data-start="859.600000" data-stop="862.439000">about which reports to create, which tags to create,</span> <span class="audio-time caption" data-speaker="John" data-start="862.440000" data-stop="867.439000">which categories to create, are driven by a philosophical principle</span> <span class="audio-time caption" data-speaker="John" data-start="867.440000" data-stop="869.519000">which I call meaningful distinctions.</span> <span class="audio-time caption" data-speaker="John" data-start="869.520000" data-stop="873.279000">We all interact with basically</span> <span class="audio-time caption" data-speaker="John" data-start="873.280000" data-stop="875.639000">an uncountably large sea of information,</span> <span class="audio-time caption" data-speaker="John" data-start="875.640000" data-stop="878.639000">and part of our job as knowledge workers</span> <span class="audio-time caption" data-speaker="John" data-start="878.640000" data-stop="881.879000">is to impose criteria on that information</span> <span class="audio-time caption" data-speaker="John" data-start="881.880000" data-stop="884.559000">so that we can make distinctions and say,</span> <span class="audio-time caption" data-speaker="John" data-start="884.560000" data-stop="886.999000">"Okay, this relates to this, this relates to this."</span> <span class="audio-time caption" data-speaker="John" data-start="887.000000" data-stop="890.199000">But there's all kinds of stuff we could be doing</span> <span class="audio-time caption" data-speaker="John" data-start="890.200000" data-stop="891.319000">in making those distinctions,</span> <span class="audio-time caption" data-speaker="John" data-start="891.320000" data-stop="892.719000">and not all of them are meaningful.</span> <span class="audio-time caption" data-speaker="John" data-start="892.720000" data-stop="895.159000">Sometimes we spend energy—</span> <span class="audio-time caption" data-speaker="John" data-start="895.160000" data-stop="897.959000">and all maintaining distinctions takes energy,</span> <span class="audio-time caption" data-speaker="John" data-start="897.960000" data-stop="899.159000">because first you have to do it</span> <span class="audio-time caption" data-speaker="John" data-start="899.160000" data-stop="901.159000">and then you have to maintain it.</span> <span class="audio-time caption" data-speaker="John" data-start="901.160000" data-stop="903.799000">So it's very, very important to economize</span> <span class="audio-time caption" data-speaker="John" data-start="903.800000" data-stop="906.279000">the work you spend making distinctions.</span> <span class="audio-time caption" data-speaker="John" data-start="906.280000" data-stop="909.079000">I economize by trying to answer the question:</span> <span class="audio-time caption" data-speaker="John" data-start="909.080000" data-stop="910.519000">is this distinction meaningful?</span> <span class="audio-time caption" data-speaker="John" data-start="910.520000" data-stop="913.079000">What makes a distinction meaningful to me</span> <span class="audio-time caption" data-speaker="John" data-start="913.080000" data-stop="914.759000">is that I use it in some way.</span> <span class="audio-time caption" data-speaker="John" data-start="914.760000" data-stop="917.559000">It either has to help me in my job of</span> <span class="audio-time caption" data-speaker="John" data-start="917.560000" data-stop="921.119000">maintaining focus on the appropriate information,</span> <span class="audio-time caption" data-speaker="John" data-start="921.120000" data-stop="924.199000">or it has to help me with finding information.</span> <span class="audio-time caption" data-speaker="John" data-start="924.200000" data-stop="926.719000">If it's not doing one of those two things,</span> <span class="audio-time caption" data-speaker="John" data-start="926.720000" data-stop="928.319000">there's no reason to have the distinction.</span> <span class="audio-time caption" data-speaker="John" data-start="928.320000" data-stop="930.999000">Even if a distinction screams out loud,</span> <span class="audio-time caption" data-speaker="John" data-start="931.000000" data-stop="932.799000">"Hey, there's a distinction between your wife</span> <span class="audio-time caption" data-speaker="John" data-start="932.800000" data-stop="933.639000">and your mother-in-law!"—</span> <span class="audio-time caption" data-speaker="John" data-start="933.640000" data-stop="935.999000">does it matter that I draw that distinction?</span> <span class="audio-time caption" data-speaker="John" data-start="936.000000" data-stop="939.359000">Probably not in most cases.</span> <span class="audio-time caption" data-speaker="John" data-start="939.360000" data-stop="940.919000">So I have a "family" group</span> <span class="audio-time caption" data-speaker="John" data-start="940.920000" data-stop="942.919000">rather than distinguishing those two people.</span> <span class="audio-time caption" data-speaker="John" data-start="942.920000" data-stop="947.359000">Do I need to distinguish between all my co-workers?</span> <span class="audio-time caption" data-speaker="John" data-start="947.360000" data-stop="951.439000">Probably—those are all distinctions</span> <span class="audio-time caption" data-speaker="John" data-start="951.440000" data-stop="952.959000">that have some kind of meaning,</span> <span class="audio-time caption" data-speaker="John" data-start="952.960000" data-stop="955.119000">but they're not meaningful to the purpose</span> <span class="audio-time caption" data-speaker="John" data-start="955.120000" data-stop="956.479000">for which I use Org-mode,</span> <span class="audio-time caption" data-speaker="John" data-start="956.480000" data-stop="958.519000">which is to assist my focus.</span> <span class="audio-time caption" data-speaker="John" data-start="958.520000" data-stop="962.399000">So it's really important to know</span> <span class="audio-time caption" data-speaker="John" data-start="962.400000" data-stop="963.999000">what you want Org-mode to do for you</span> <span class="audio-time caption" data-speaker="John" data-start="964.000000" data-stop="966.519000">in order to make good use of Org-mode,</span> <span class="audio-time caption" data-speaker="John" data-start="966.520000" data-stop="968.859000">especially at scale.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="968.000000">16:08</span> <strong>Color indicates agenda category
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-16-18.040.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-16-18.040.jpg" alt="image from video 00:16:18.040" data-time="00:16:18.040"></a><span class="audio-time caption" data-speaker="Sacha" data-start="968.860000" data-stop="971.119000"><strong class="speaker-name">Sacha:</strong>  I noticed one of the things that's changed</span> <span class="audio-time caption" data-speaker="Sacha" data-start="971.120000" data-stop="972.479000">since I last saw your agenda</span> <span class="audio-time caption" data-speaker="Sacha" data-start="972.480000" data-stop="973.119000">is now you're using color</span> <span class="audio-time caption" data-speaker="Sacha" data-start="973.120000" data-stop="975.119000">to make a lot of things more salient.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="975.120000" data-stop="978.039000">So how do the colors in your agenda</span> <span class="audio-time caption" data-speaker="Sacha" data-start="978.040000" data-stop="981.339000">kind of build on the distinctions that you're making?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="981.340000" data-stop="984.439000"><strong class="speaker-name">John:</strong>  The colors here are based on category.</span> <span class="audio-time caption" data-speaker="John" data-start="984.440000" data-stop="987.999000">I also show the category in words on the left</span> <span class="audio-time caption" data-speaker="John" data-start="988.000000" data-stop="990.239000">because many categories share colors.</span> <span class="audio-time caption" data-speaker="John" data-start="990.240000" data-stop="993.719000">Everything that's personal is one color,</span> <span class="audio-time caption" data-speaker="John" data-start="993.720000" data-stop="996.119000">everything that's work-related is another color,</span> <span class="audio-time caption" data-speaker="John" data-start="996.120000" data-stop="1000.719000">everything that's family, faith, open-source-related—</span> <span class="audio-time caption" data-speaker="John" data-start="1000.720000" data-stop="1002.399000">they each have their own color.</span> <span class="audio-time caption" data-speaker="John" data-start="1002.400000" data-stop="1005.119000">That way, when I look at the agenda,</span> <span class="audio-time caption" data-speaker="John" data-start="1005.120000" data-stop="1007.159000">I see whether a color is dominating,</span> <span class="audio-time caption" data-speaker="John" data-start="1007.160000" data-stop="1011.359000">or it draws my attention.</span> <span class="audio-time caption" data-speaker="John" data-start="1011.360000" data-stop="1013.479000">If I see colors that I know are work,</span> <span class="audio-time caption" data-speaker="John" data-start="1013.480000" data-stop="1016.839000">I will see if those need rescheduling</span> <span class="audio-time caption" data-speaker="John" data-start="1016.840000" data-stop="1020.959000">into the next day first.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1020.000000">17:00</span> <strong>Simplifying meaningful distinctions</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1020.960000" data-stop="1022.959000"><strong class="speaker-name">Sacha:</strong>  All right. And it looks like</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1022.960000" data-stop="1025.199000">the rest of your agenda is fairly light</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1025.200000" data-stop="1029.039000">in terms of showing those meaningful distinctions.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1029.040000" data-stop="1031.199000">So I guess you're just using the filtering</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1031.200000" data-stop="1033.639000">of the different agendas and other blocks</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1033.640000" data-stop="1038.639000">in your outline to do that kind of filtering of things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1038.640000" data-stop="1040.439000">based on the distinctions you've already made.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="1040.440000" data-stop="1044.119000"><strong class="speaker-name">John:</strong>  Yeah. I do still have lots of distinctions,</span> <span class="audio-time caption" data-speaker="John" data-start="1044.120000" data-stop="1048.159000">but I have now narrowed it down. I used to have more,</span> <span class="audio-time caption" data-speaker="John" data-start="1048.160000" data-stop="1050.759000">and then when I realized this concept,</span> <span class="audio-time caption" data-speaker="John" data-start="1050.760000" data-stop="1056.479000">I started getting rid of as many of them</span> <span class="audio-time caption" data-speaker="John" data-start="1056.480000" data-stop="1059.959000">as I could possibly get rid of.</span> <span class="audio-time caption" data-speaker="John" data-start="1059.960000" data-stop="1062.519000">Otherwise it's just too—if you have to sit down</span> <span class="audio-time caption" data-speaker="John" data-start="1062.520000" data-stop="1065.319000">and spend hours combing your data,</span> <span class="audio-time caption" data-speaker="John" data-start="1065.320000" data-stop="1066.639000">it's just never going to happen.</span> <span class="audio-time caption" data-speaker="John" data-start="1066.640000" data-stop="1068.839000">It's going to end up piling up on you</span> <span class="audio-time caption" data-speaker="John" data-start="1068.840000" data-stop="1070.919000">and you'll never get to it.</span> <span class="audio-time caption" data-speaker="John" data-start="1070.920000" data-stop="1074.599000">So this has to be a manageable amount of distinction,</span> <span class="audio-time caption" data-speaker="John" data-start="1074.600000" data-stop="1076.959000">and every single one of those distinctions</span> <span class="audio-time caption" data-speaker="John" data-start="1076.960000" data-stop="1081.979000">has to have precious value in helping me manage my focus.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1081.000000">18:01</span> <strong>Capturing a task</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1081.980000" data-stop="1083.679000"><strong class="speaker-name">Sacha:</strong>  Is it possible for you to walk us through</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1083.680000" data-stop="1086.359000">an example of when you're capturing something</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1086.360000" data-stop="1090.439000">and any structure you have to support making those distinctions?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="1090.440000" data-stop="1093.759000"><strong class="speaker-name">John:</strong>  Usually I'd capture everything into drafts.</span> <span class="audio-time caption" data-speaker="John" data-start="1093.760000" data-stop="1098.759000">So if I want to create an item, I use org-capture.</span> <span class="audio-time caption" data-speaker="John" data-start="1098.760000" data-stop="1100.839000">Actually, I capture it in two ways,</span> <span class="audio-time caption" data-speaker="John" data-start="1100.840000" data-stop="1102.359000">so I'll show you both of them.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="1102.360000" data-stop="1104.559000"><strong class="speaker-name">John:</strong> For capturing a task—</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="1104.560000" data-stop="1105.879000"><strong class="speaker-name">Karthik:</strong>  Sorry, John, before that,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1105.880000" data-stop="1110.019000">Sacha, do you see the window having shifted again?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1110.020000" data-stop="1111.279000"><strong class="speaker-name">Sacha:</strong>  It's doing the thing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1111.280000" data-stop="1113.239000">I don't like seeing the thing.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="1113.240000" data-stop="1114.919000"><strong class="speaker-name">John:</strong>  It's not moving at all over here.</span> <span class="audio-time caption" data-speaker="John" data-start="1114.920000" data-stop="1121.459000">So this has to be something wrong happening with the Zoom client.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1121.460000" data-stop="1122.740000"><strong class="speaker-name">Sacha:</strong>  I don't know.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="1122.741000" data-stop="1123.719000"><strong class="speaker-name">John:</strong>  We're just going to have to</span> <span class="audio-time caption" data-speaker="John" data-start="1123.720000" data-stop="1125.319000">keep resharing it at intervals.</span> <span class="audio-time caption" data-speaker="John" data-start="1125.320000" data-stop="1128.619000">Because nothing is moving here.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1128.620000" data-stop="1130.319000"><strong class="speaker-name">Sacha:</strong>  What if we don't make it full screen</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1130.320000" data-stop="1131.839000">and we just make it slightly...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1131.840000" data-stop="1133.999000">Are you sharing the window or are you sharing the screen?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="1134.000000" data-stop="1136.079000"><strong class="speaker-name">John:</strong>  I'm sharing the window.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1136.080000" data-stop="1137.799000"><strong class="speaker-name">Sacha:</strong>  Okay. You might consider sharing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1137.800000" data-stop="1139.919000">the whole screen if that's not too weird.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="1139.920000" data-stop="1144.079000"><strong class="speaker-name">John:</strong>  I prefer not to, only because lots of notifications pop up.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1144.080000" data-stop="1146.319000"><strong class="speaker-name">Sacha:</strong>  Oh, yes. Okay, that makes sense too.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="1146.320000" data-stop="1148.119000"><strong class="speaker-name">John:</strong>  And then we would have to blur those out as well.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1148.120000" data-stop="1150.119000"><strong class="speaker-name">Sacha:</strong>  Okay, then. All right.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="1150.120000" data-stop="1159.899000"><strong class="speaker-name">John:</strong>  What I can try to do is share the window as a full-screen window.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1159.900000" data-stop="1163.619000"><strong class="speaker-name">Sacha:</strong>  Oh yeah, okay, well, we can work with that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1163.620000" data-stop="1167.539000">Probably in post we can just—oh yeah, oh look at that, it's zooming in.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="1167.540000" data-stop="1173.979000"><strong class="speaker-name">Karthik:</strong>  Okay. This is perfect.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1173.980000" data-stop="1176.199000"><strong class="speaker-name">Sacha:</strong>  We were talking about how...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1176.200000" data-stop="1177.919000"><strong class="speaker-name">Sacha:</strong>  Let's say you're creating a new task.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1177.920000" data-stop="1180.919000">Do you just type in the text and all that stuff by hand?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1180.920000" data-stop="1184.519000">Or do you have something to help you make those distinctions?</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-19-48.920.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-19-48.920.jpg" alt="image from video 00:19:48.920" data-time="00:19:48.920"></a><span class="audio-time caption" data-speaker="John" data-start="1184.520000" data-stop="1186.479000"><strong class="speaker-name">John:</strong>  What I do is hit M-m,</span> <span class="audio-time caption" data-speaker="John" data-start="1186.480000" data-stop="1188.919000">because that wasn't being used for anything else,</span> <span class="audio-time caption" data-speaker="John" data-start="1188.920000" data-stop="1193.039000">and that pops up a capture template for what I want to add.</span> <span class="audio-time caption" data-speaker="John" data-start="1193.040000" data-stop="1201.519000">So let's add a TODO. I'm going to say "send an email to Sacha."</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-19-58.280.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-19-58.280.jpg" alt="image from video 00:19:58.280" data-time="00:19:58.280"></a><span class="audio-time caption" data-speaker="John" data-start="1201.520000" data-stop="1207.559000"><strong class="speaker-name">John:</strong> I try not to do any of that organization of the task at capture time.</span> <span class="audio-time caption" data-speaker="John" data-start="1207.560000" data-stop="1211.519000">The idea with capture is that it gets onto paper</span> <span class="audio-time caption" data-speaker="John" data-start="1211.520000" data-stop="1216.519000">as quickly as humanly possible. So I just hit C-c C-c,</span> <span class="audio-time caption" data-speaker="John" data-start="1216.520000" data-stop="1217.959000">and it writes it out.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-20-21.800.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-20-21.800.jpg" alt="image from video 00:20:21.800" data-time="00:20:21.800"></a><span class="audio-time caption" data-speaker="John" data-start="1217.960000" data-stop="1221.799000"><strong class="speaker-name">John:</strong> What will happen, because this is now in my drafts,</span> <span class="audio-time caption" data-speaker="John" data-start="1221.800000" data-stop="1225.799000">is that it will appear at the top of my items needing review,</span> <span class="audio-time caption" data-speaker="John" data-start="1225.800000" data-stop="1230.519000">and it will be in this very bright fuchsia-color background,</span> <span class="audio-time caption" data-speaker="John" data-start="1230.520000" data-stop="1233.879000">which is extremely loud and always says to me,</span> <span class="audio-time caption" data-speaker="John" data-start="1233.880000" data-stop="1236.279000">"You have items in your drafts that need reviewing."</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-20-41.520.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-20-41.520.jpg" alt="image from video 00:20:41.520" data-time="00:20:41.520"></a><span class="audio-time caption" data-speaker="John" data-start="1236.280000" data-stop="1241.519000"><strong class="speaker-name">John:</strong> So I go to the item—here I'm in my drafts.org file,</span> <span class="audio-time caption" data-speaker="John" data-start="1241.520000" data-stop="1245.519000">which has an inbox and a collection of drafts.</span> <span class="audio-time caption" data-speaker="John" data-start="1245.520000" data-stop="1248.399000">(That's the other thing I'm going to tell you about.)</span> <span class="audio-time caption" data-speaker="John" data-start="1248.400000" data-stop="1252.399000">Now I look at, "Oh, send..." I don't like using filler words.</span> <span class="audio-time caption" data-speaker="John" data-start="1252.400000" data-stop="1255.159000">I actually have a report that finds entries that have filler words.</span> <span class="audio-time caption" data-speaker="John" data-start="1255.160000" data-stop="1258.159000">So I always get rid of "a" and "the," stuff like that.</span> <span class="audio-time caption" data-speaker="John" data-start="1258.160000" data-stop="1262.319000">So: "Send email to Sacha."</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1262.000000">21:02</span> <strong>Task metadata is mostly automatic
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-21-03.920.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-21-03.920.jpg" alt="image from video 00:21:03.920" data-time="00:21:03.920"></a><span class="audio-time caption" data-speaker="John" data-start="1262.320000" data-stop="1263.919000"><strong class="speaker-name">John:</strong> It comes with a lot of metadata.</span> <span class="audio-time caption" data-speaker="John" data-start="1263.920000" data-stop="1267.399000">All of my tasks get a lot of metadata to start out.</span> <span class="audio-time caption" data-speaker="John" data-start="1267.400000" data-stop="1270.239000">They get a notion of when I need to next review them.</span> <span class="audio-time caption" data-speaker="John" data-start="1270.240000" data-stop="1273.159000">They always get a unique identifier—</span> <span class="audio-time caption" data-speaker="John" data-start="1273.160000" data-stop="1276.239000">everything has a unique identifier, every entry, every file.</span> <span class="audio-time caption" data-speaker="John" data-start="1276.240000" data-stop="1278.359000">They get the created timestamp,</span> <span class="audio-time caption" data-speaker="John" data-start="1278.360000" data-stop="1282.319000">the GPS location of where I was when I created the task.</span> <span class="audio-time caption" data-speaker="John" data-start="1282.320000" data-stop="1288.439000">The task itself is hashed so that I can know in the future</span> <span class="audio-time caption" data-speaker="John" data-start="1288.440000" data-stop="1291.999000">when it changes, for a reason I will also explain shortly.</span> <span class="audio-time caption" data-speaker="John" data-start="1292.000000" data-stop="1296.719000">The modified date is the last time the hash was updated,</span> <span class="audio-time caption" data-speaker="John" data-start="1296.720000" data-stop="1298.499000">and that way I know...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1298.500000" data-stop="1302.159000"><strong class="speaker-name">Sacha:</strong>  I'm curious, what do you use GPS for?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="1302.160000" data-stop="1304.959000"><strong class="speaker-name">John:</strong>  It's just information. Why not collect it?</span> <span class="audio-time caption" data-speaker="John" data-start="1304.960000" data-stop="1307.479000">Any information I can collect</span> <span class="audio-time caption" data-speaker="John" data-start="1307.480000" data-stop="1311.039000">that requires zero energy from me, I collect.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1311.040000" data-stop="1312.999000"><strong class="speaker-name">Sacha:</strong>  Okay, fair, fair. All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1313.000000" data-stop="1315.319000">So you're saying hash. Okay, you got a hash.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1315.000000">21:55</span> <strong>Task hash detects modifications</strong></div><p></p><span class="audio-time caption" data-speaker="John" data-start="1315.320000" data-stop="1316.759000"><strong class="speaker-name">John:</strong>  So I have a hash of the content,</span> <span class="audio-time caption" data-speaker="John" data-start="1316.760000" data-stop="1319.559000">which includes all the property values other than the hash,</span> <span class="audio-time caption" data-speaker="John" data-start="1319.560000" data-stop="1321.679000">of course, and the title and the body</span> <span class="audio-time caption" data-speaker="John" data-start="1321.680000" data-stop="1322.679000">and all that kind of stuff.</span> <span class="audio-time caption" data-speaker="John" data-start="1322.680000" data-stop="1325.599000">It just lets me know when the item has changed.</span> <span class="audio-time caption" data-speaker="John" data-start="1325.600000" data-stop="1329.559000">I have a procedure in my Git pre-commit hook</span> <span class="audio-time caption" data-speaker="John" data-start="1329.560000" data-stop="1331.599000">which will ensure that the hash is correct,</span> <span class="audio-time caption" data-speaker="John" data-start="1331.600000" data-stop="1335.839000">and the hash updates whenever the file is saved.</span> <span class="audio-time caption" data-speaker="John" data-start="1335.840000" data-stop="1340.239000">This is all being done by a module I wrote called org-hash,</span> <span class="audio-time caption" data-speaker="John" data-start="1340.240000" data-stop="1344.259000">and org-hash will do this all for you.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1344.000000">22:24</span> <strong>Categorizing tasks
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-22-32.200.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-22-32.200.jpg" alt="image from video 00:22:32.200" data-time="00:22:32.200"></a><span class="audio-time caption" data-speaker="John" data-start="1344.260000" data-stop="1349.679000"><strong class="speaker-name">John:</strong> So now what I'll do is—this doesn't really need much categorization.</span> <span class="audio-time caption" data-speaker="John" data-start="1349.680000" data-stop="1351.319000">I will just put it under "friends,"</span> <span class="audio-time caption" data-speaker="John" data-start="1351.320000" data-stop="1354.599000">so I just file it under friends.</span> <span class="audio-time caption" data-speaker="John" data-start="1354.600000" data-stop="1356.879000">I didn't give it a scheduled date,</span> <span class="audio-time caption" data-speaker="John" data-start="1356.880000" data-stop="1362.679000">so that'll appear in my review list rather than any daily agenda.</span> <span class="audio-time caption" data-speaker="John" data-start="1362.680000" data-stop="1368.759000">This one is a reminder to me to download an AI model</span> <span class="audio-time caption" data-speaker="John" data-start="1368.760000" data-stop="1371.999000">once the quantizations are available for my machine,</span> <span class="audio-time caption" data-speaker="John" data-start="1372.000000" data-stop="1376.119000">so I'll just put that into the AI category.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1376.000000">22:56</span> <strong>Daily reports should be short; reschedule or unschedule aggressively
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-22-59.720.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-22-59.720.jpg" alt="image from video 00:22:59.720" data-time="00:22:59.720"></a><span class="audio-time caption" data-speaker="John" data-start="1376.120000" data-stop="1379.819000"><strong class="speaker-name">John:</strong> Now my inbox is empty and I can go back to my daily report.</span> <span class="audio-time caption" data-speaker="John" data-start="1379.820000" data-stop="1382.019000">This daily report, by the way, is too long.</span> <span class="audio-time caption" data-speaker="John" data-start="1382.020000" data-stop="1385.139000">In general, daily reports don't work</span> <span class="audio-time caption" data-speaker="John" data-start="1385.140000" data-stop="1387.139000">unless they're less than ten items long.</span> <span class="audio-time caption" data-speaker="John" data-start="1387.140000" data-stop="1389.419000">I haven't done it yet today,</span> <span class="audio-time caption" data-speaker="John" data-start="1389.420000" data-stop="1392.699000">but I try to aggressively reschedule or unschedule things</span> <span class="audio-time caption" data-speaker="John" data-start="1392.700000" data-stop="1395.579000">that don't fit within ten items in a day,</span> <span class="audio-time caption" data-speaker="John" data-start="1395.580000" data-stop="1399.019000">because I just will never do more than ten items in a day.</span> <span class="audio-time caption" data-speaker="John" data-start="1399.020000" data-stop="1401.939000">Like, I talked with my wife about this item,</span> <span class="audio-time caption" data-speaker="John" data-start="1401.940000" data-stop="1404.019000">so I'm just going to move that to the next day</span> <span class="audio-time caption" data-speaker="John" data-start="1404.020000" data-stop="1405.299000">so I can revisit it.</span> <span class="audio-time caption" data-speaker="John" data-start="1405.300000" data-stop="1408.939000">These work items are going to have to go to Monday now.</span> <span class="audio-time caption" data-speaker="John" data-start="1408.940000" data-stop="1410.619000">I'll just get them out.</span> <span class="audio-time caption" data-speaker="John" data-start="1410.620000" data-stop="1417.199000">I reschedule or unschedule pretty aggressively.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1417.200000" data-stop="1418.019000"><strong class="speaker-name">Sacha:</strong>  Okay, so what I'm hearing is:</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1418.020000" data-stop="1419.539000">you capture it very quickly,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1419.540000" data-stop="1423.299000">every so often you look over the bright fuchsia items</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1423.300000" data-stop="1424.459000">in your review inbox, and say,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1424.460000" data-stop="1426.779000">"Okay, let me refile that to the categories"—</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1426.780000" data-stop="1430.579000">the files, basically, or actually the places in your outline</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1430.580000" data-stop="1434.779000">where they make sense. Then you have this list shown to you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1434.780000" data-stop="1437.459000">properly categorized now, but then you reschedule things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1437.460000" data-stop="1440.419000">until things look more manageable.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="1440.420000" data-stop="1447.539000"><strong class="speaker-name">John:</strong>  Yeah, the ideal scenario is that on a given day,</span> <span class="audio-time caption" data-speaker="John" data-start="1447.540000" data-stop="1450.779000">Org-mode is showing me ten or fewer items,</span> <span class="audio-time caption" data-speaker="John" data-start="1450.780000" data-stop="1454.019000">and those ten items are the things I should be thinking about</span> <span class="audio-time caption" data-speaker="John" data-start="1454.020000" data-stop="1457.619000">and doing on that day. That is not the case right now,</span> <span class="audio-time caption" data-speaker="John" data-start="1457.620000" data-stop="1460.059000">which means I need to curate this.</span> <span class="audio-time caption" data-speaker="John" data-start="1460.060000" data-stop="1464.739000">But that is the objective function for this entire system.</span> <span class="audio-time caption" data-speaker="John" data-start="1464.740000" data-stop="1467.259000">If the system can do that, it is succeeding.</span> <span class="audio-time caption" data-speaker="John" data-start="1467.260000" data-stop="1471.899000">So I just work as hard as I can to get the system to</span> <span class="audio-time caption" data-speaker="John" data-start="1471.900000" data-stop="1474.179000">approximate that behavior.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1474.180000" data-stop="1477.219000"><strong class="speaker-name">Sacha:</strong>  Last time we talked, in 2024,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1477.220000" data-stop="1480.099000">you waxed nostalgic about LlamaGraphics Life Balance</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1480.100000" data-stop="1483.219000">and some kind of automatic prioritization.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1483.220000" data-stop="1486.539000">You also briefly mentioned that you use AI sometimes</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1486.540000" data-stop="1489.539000">to do sorting and reviewing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1489.540000" data-stop="1492.819000">Is your workflow for prioritization still manual,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1492.820000" data-stop="1497.939000">or have you found something that works to help you?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="1497.940000" data-stop="1501.739000"><strong class="speaker-name">John:</strong>  I did start writing an org-balance thing—</span> <span class="audio-time caption" data-speaker="John" data-start="1501.740000" data-stop="1505.459000">you and I talked about it a while back—</span> <span class="audio-time caption" data-speaker="John" data-start="1505.460000" data-stop="1507.419000">I have not continued that.</span> <span class="audio-time caption" data-speaker="John" data-start="1507.420000" data-stop="1509.779000">I don't try to do automated balancing.</span> <span class="audio-time caption" data-speaker="John" data-start="1509.780000" data-stop="1514.099000">I just look at the daily list and pick and choose.</span> <span class="audio-time caption" data-speaker="John" data-start="1514.100000" data-stop="1516.619000">That generally ends up being what happens.</span> <span class="audio-time caption" data-speaker="John" data-start="1516.620000" data-stop="1519.899000">As far as the task management in an AI-friendly way,</span> <span class="audio-time caption" data-speaker="John" data-start="1519.900000" data-stop="1521.099000">we'll have to come back to that</span> <span class="audio-time caption" data-speaker="John" data-start="1521.100000" data-stop="1522.979000">because that's another thing I want to show you.</span> <span class="audio-time caption" data-speaker="John" data-start="1522.980000" data-stop="1527.099000">I don't think, Karthik, that 30 minutes is going to be</span> <span class="audio-time caption" data-speaker="John" data-start="1527.100000" data-stop="1529.019000">anywhere near enough to even just show you</span> <span class="audio-time caption" data-speaker="John" data-start="1529.020000" data-stop="1533.019000">the outline of how it is a system.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1533.020000" data-stop="1537.239000"><strong class="speaker-name">Sacha:</strong>  Yeah. That's why we have ongoing conversations.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="1537.240000" data-stop="1541.239000"><strong class="speaker-name">John:</strong>  Yeah, this will just be the 10,000-foot overview for today.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1541.000000">25:41</span> <strong>Note from Karthik: John is an old-school Org user</strong></div><p></p><span class="audio-time caption" data-speaker="Karthik" data-start="1541.240000" data-stop="1544.099000"><strong class="speaker-name">Karthik:</strong>  If I may jump in,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1544.100000" data-stop="1546.499000">I'm thinking about this from the perspective of</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1546.500000" data-stop="1548.059000">someone who knows what Org-mode is</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1548.060000" data-stop="1554.019000">and maybe has used it once or twice</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1554.020000" data-stop="1558.739000">and is now watching this on a video hosting platform</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1558.740000" data-stop="1561.899000">and is going, "What? What's happening here?"</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1561.900000" data-stop="1564.619000">So can we zoom out a bit?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1564.620000" data-stop="1568.099000">Maybe I should start by saying that</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1568.100000" data-stop="1571.499000">John is an old-school Org user.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1571.500000" data-stop="1573.139000">I mean, he's also new-school</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1573.140000" data-stop="1574.939000">as we'll see when we get to the AI stuff.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1574.940000" data-stop="1578.259000">But John is a veteran Org user</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1578.260000" data-stop="1579.899000">who's been using it for 20-plus years,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1579.900000" data-stop="1583.019000">if I'm not wrong. There are functions in Emacs Org-mode</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1583.020000" data-stop="1585.139000">that are named after John,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1585.140000" data-stop="1588.459000">or at least mention John in their docstring</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1588.460000" data-stop="1590.339000">as the reason for their existence.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1590.340000" data-stop="1593.459000">This is what you're looking at,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1593.460000" data-stop="1597.419000">and what you were probably confused by, dear viewer,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1597.420000" data-stop="1604.299000">is the result of 20 years of using Org</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1604.300000" data-stop="1607.259000">and organizing your life with Org</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1607.260000" data-stop="1613.539000">and then optimizing and improving the workflow incrementally.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1613.540000" data-stop="1618.539000">This is kind of where you end up.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1618.540000" data-stop="1622.219000">Okay, maybe that should go in the intro,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1622.220000" data-stop="1624.539000">but now it's fine.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1624.000000">27:04</span> <strong>Continuing with the lifecycle: capture, file, schedule, review
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-27-44.520.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-27-44.520.jpg" alt="image from video 00:27:44.520" data-time="00:27:44.520"></a><span class="audio-time caption" data-speaker="Karthik" data-start="1624.540000" data-stop="1630.299000"><strong class="speaker-name">Karthik:</strong> Maybe we can continue with the capture example</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1630.300000" data-stop="1632.899000">that you were showing—the typical lifecycle</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1632.900000" data-stop="1634.859000">of a piece of information, right?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1634.860000" data-stop="1638.259000">It starts as a capture and then shows up in the agenda.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1638.260000" data-stop="1644.659000">Well, it shows up in the agenda very brightly saying "pay attention to me,"</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1644.660000" data-stop="1646.859000">and then eventually gets filed somewhere.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1646.860000" data-stop="1649.779000">Let's continue from there. What happens next?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1649.780000" data-stop="1653.539000">What happens to the email that you haven't written to Sacha?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="1654.220000" data-stop="1656.939000"><strong class="speaker-name">John:</strong>  Well, either I schedule the task at that time</span> <span class="audio-time caption" data-speaker="John" data-start="1656.940000" data-stop="1660.379000">and then it's going to appear in one of these daily agendas, or—</span> <span class="audio-time caption" data-speaker="John" data-start="1660.380000" data-stop="1662.379000">as I'm looking at my agenda here,</span> <span class="audio-time caption" data-speaker="John" data-start="1662.380000" data-stop="1664.499000">you'll see I have my items for today</span> <span class="audio-time caption" data-speaker="John" data-start="1664.500000" data-stop="1668.659000">all grouped out by org-super-agenda.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1668.000000">27:48</span> <strong>Habits
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-27-48.680.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-27-48.680.jpg" alt="image from video 00:27:48.680" data-time="00:27:48.680"></a><span class="audio-time caption" data-speaker="John" data-start="1668.660000" data-stop="1671.939000"><strong class="speaker-name">John:</strong> Then I have habits, which is a different type of task</span> <span class="audio-time caption" data-speaker="John" data-start="1671.940000" data-stop="1674.979000">where I'm trying to track consistency rather than completion.</span> <span class="audio-time caption" data-speaker="John" data-start="1674.980000" data-stop="1679.379000">I use habits a lot, especially because</span> <span class="audio-time caption" data-speaker="John" data-start="1679.380000" data-stop="1682.699000">I really love the book <b>Atomic Habits</b>.</span> <span class="audio-time caption" data-speaker="John" data-start="1682.700000" data-stop="1685.099000">It makes some really good arguments about</span> <span class="audio-time caption" data-speaker="John" data-start="1685.100000" data-stop="1687.699000">the importance of behaviors and processes</span> <span class="audio-time caption" data-speaker="John" data-start="1687.700000" data-stop="1689.139000">to getting things really done.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1689.000000">28:09</span> <strong>org-review and items needing review; randomization
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-28-09.160.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-28-09.160.jpg" alt="image from video 00:28:09.160" data-time="00:28:09.160"></a><span class="audio-time caption" data-speaker="John" data-start="1689.140000" data-stop="1693.419000"><strong class="speaker-name">John:</strong> Then at the bottom of every agenda view is this section,</span> <span class="audio-time caption" data-speaker="John" data-start="1693.420000" data-stop="1700.339000">"items needing review." I have close to a thousand items</span> <span class="audio-time caption" data-speaker="John" data-start="1700.340000" data-stop="1703.019000">currently needing review. I can't review them—</span> <span class="audio-time caption" data-speaker="John" data-start="1703.020000" data-stop="1704.139000">that's too many to review.</span> <span class="audio-time caption" data-speaker="John" data-start="1704.140000" data-stop="1705.859000">Even if I just looked at the work ones,</span> <span class="audio-time caption" data-speaker="John" data-start="1705.860000" data-stop="1707.179000">it would still be too many to review.</span> <span class="audio-time caption" data-speaker="John" data-start="1707.180000" data-stop="1709.339000">So what I choose to do instead</span> <span class="audio-time caption" data-speaker="John" data-start="1709.340000" data-stop="1712.099000">is that every time I refresh my agenda view,</span> <span class="audio-time caption" data-speaker="John" data-start="1712.100000" data-stop="1718.819000">it picks 38 unreviewed or unscheduled items at random</span> <span class="audio-time caption" data-speaker="John" data-start="1718.820000" data-stop="1721.459000">and puts them here in this list.</span> <span class="audio-time caption" data-speaker="John" data-start="1721.460000" data-stop="1725.459000">What I do is I just sort of scan it to say,</span> <span class="audio-time caption" data-speaker="John" data-start="1725.460000" data-stop="1726.659000">"Is there anything in this list</span> <span class="audio-time caption" data-speaker="John" data-start="1726.660000" data-stop="1728.339000">that really I should be doing?</span> <span class="audio-time caption" data-speaker="John" data-start="1728.340000" data-stop="1730.259000">Should I be scheduling something?"</span> <span class="audio-time caption" data-speaker="John" data-start="1730.260000" data-stop="1732.859000">I don't even try to read the whole list</span> <span class="audio-time caption" data-speaker="John" data-start="1732.860000" data-stop="1736.419000">because that is too much. I just cherry-pick.</span> <span class="audio-time caption" data-speaker="John" data-start="1736.420000" data-stop="1739.379000">I say, "Oh, is there anything? Oh, look at this—</span> <span class="audio-time caption" data-speaker="John" data-start="1739.380000" data-stop="1742.659000">'set up active voice chat with OpenClaw.'</span> <span class="audio-time caption" data-speaker="John" data-start="1742.660000" data-stop="1745.219000">Well, that's going to be priority C,</span> <span class="audio-time caption" data-speaker="John" data-start="1745.220000" data-stop="1747.779000">that's not very important." Or this one,</span> <span class="audio-time caption" data-speaker="John" data-start="1747.780000" data-stop="1750.419000">"front braking on my bike is not very responsive."</span> <span class="audio-time caption" data-speaker="John" data-start="1750.420000" data-stop="1753.699000">You know what? I don't really care about that right now,</span> <span class="audio-time caption" data-speaker="John" data-start="1753.700000" data-stop="1757.939000">so I'm going to tell it to show it to me for review</span> <span class="audio-time caption" data-speaker="John" data-start="1757.940000" data-stop="1760.019000">later in the summer.</span> <span class="audio-time caption" data-speaker="John" data-start="1760.020000" data-stop="1763.059000">I have a bunch of key bindings behind the key r,</span> <span class="audio-time caption" data-speaker="John" data-start="1763.060000" data-stop="1767.079000">which allow me to change when it will be reviewed by.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="1767.080000" data-stop="1770.419000"><strong class="speaker-name">Karthik:</strong>  Okay, so to clarify, this idea of a review</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1770.420000" data-stop="1773.339000">is different from anything that Org provides you</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1773.340000" data-stop="1777.059000">out of the box, right? This is not scheduling the task</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1777.060000" data-stop="1778.619000">to be completed at a certain time.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1778.620000" data-stop="1782.499000">This is not a timestamp in the sense of an event in a calendar.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1782.500000" data-stop="1786.099000">This is not a deadline. This is like a different concept</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1786.100000" data-stop="1789.679000">that means show this to me after this time. Is that correct?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1789.000000">29:49</span> <strong>org-review task properties
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-29-55.000.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-29-55.000.jpg" alt="image from video 00:29:55.000" data-time="00:29:55.000"></a><span class="audio-time caption" data-speaker="John" data-start="1789.680000" data-stop="1791.819000"><strong class="speaker-name">John:</strong>  Yes. If we look at the task itself,</span> <span class="audio-time caption" data-speaker="John" data-start="1791.820000" data-stop="1794.219000">we will see in the properties for that task</span> <span class="audio-time caption" data-speaker="John" data-start="1794.220000" data-stop="1798.299000">it has these three properties: <code>LAST​_​REVIEW</code>,
<code>NEXT​_​REVIEW</code>, and <code>REVIEWS</code>.</span> <span class="audio-time caption" data-speaker="John" data-start="1798.300000" data-stop="1801.579000">These are added by the org-review package,</span> <span class="audio-time caption" data-speaker="John" data-start="1801.580000" data-stop="1805.379000">which is an add-on to Org-mode that's not part of the stock distribution.</span> <span class="audio-time caption" data-speaker="John" data-start="1805.380000" data-stop="1810.099000"><code>LAST_REVIEW</code> is the last time it was reviewed, of
course.</span> <span class="audio-time caption" data-speaker="John" data-start="1810.100000" data-stop="1812.379000"><code>NEXT_REVIEW</code> is the next time I want to see it</span> <span class="audio-time caption" data-speaker="John" data-start="1812.380000" data-stop="1816.259000">in the reports that gather tasks to be reviewed.</span> <span class="audio-time caption" data-speaker="John" data-start="1816.260000" data-stop="1819.819000">That's the only time that date ever comes into play.</span> <span class="audio-time caption" data-speaker="John" data-start="1819.820000" data-stop="1822.339000">If that date <code>NEXT_REVIEW</code> is in the future,</span> <span class="audio-time caption" data-speaker="John" data-start="1822.340000" data-stop="1824.619000">it won't show up in those 38 items</span> <span class="audio-time caption" data-speaker="John" data-start="1824.620000" data-stop="1827.419000">that are randomly selected underneath my tasks.</span> <span class="audio-time caption" data-speaker="John" data-start="1827.420000" data-stop="1831.099000">So if I've reviewed every task and they're all in the future,</span> <span class="audio-time caption" data-speaker="John" data-start="1831.100000" data-stop="1834.139000">then that list at the bottom of my to-do list would be empty.</span> <span class="audio-time caption" data-speaker="John" data-start="1834.140000" data-stop="1837.459000">It has been empty sometimes when I'm on vacation</span> <span class="audio-time caption" data-speaker="John" data-start="1837.460000" data-stop="1839.619000">and I have the time to actually review tasks.</span> <span class="audio-time caption" data-speaker="John" data-start="1839.620000" data-stop="1843.939000"><code>REVIEWS</code> is something I added to keep track of</span> <span class="audio-time caption" data-speaker="John" data-start="1843.940000" data-stop="1846.619000">how many times I have pushed that into the future,</span> <span class="audio-time caption" data-speaker="John" data-start="1846.620000" data-stop="1849.339000">because then I can create an agenda</span> <span class="audio-time caption" data-speaker="John" data-start="1849.340000" data-stop="1855.339000">report for the redheaded stepchildren in my Org-mode database—</span> <span class="audio-time caption" data-speaker="John" data-start="1855.340000" data-stop="1857.979000">who are the people that are just keep getting pushed and pushed</span> <span class="audio-time caption" data-speaker="John" data-start="1857.980000" data-stop="1862.379000">and pushed and never getting any attention?</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="1862.380000" data-stop="1865.099000"><strong class="speaker-name">Karthik:</strong>  Okay, so this is like a whole subsystem</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1865.100000" data-stop="1868.299000">that you added to Org to handle the kinds of tasks</span> <span class="audio-time caption" data-speaker="Karthik" data-start="1868.300000" data-stop="1872.459000">that are maybe important but not urgent?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="1872.460000" data-stop="1874.459000"><strong class="speaker-name">John:</strong>  Right. Because there has to be a midway</span> <span class="audio-time caption" data-speaker="John" data-start="1874.460000" data-stop="1877.299000">between "these are the focus tasks for today"</span> <span class="audio-time caption" data-speaker="John" data-start="1877.300000" data-stop="1879.459000">and "these are all the guys that aren't scheduled."</span> <span class="audio-time caption" data-speaker="John" data-start="1879.460000" data-stop="1881.539000">There has to be something in between those two,</span> <span class="audio-time caption" data-speaker="John" data-start="1881.540000" data-stop="1885.619000">because the gap is too large.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1885.620000" data-stop="1888.099000"><strong class="speaker-name">Sacha:</strong>  All right, so instead of just relying on scheduling,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1888.100000" data-stop="1891.259000">you use reviews to give you that extra level of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1891.260000" data-stop="1894.099000">"I want this to come back on my radar every so often."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1894.100000" data-stop="1897.099000">You will actually have a randomized subset of these</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1897.100000" data-stop="1899.499000">things to come back on your radar every so often,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1899.500000" data-stop="1902.139000">but you're not necessarily scheduling it for that day,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1902.140000" data-stop="1905.899000">so that your scheduled tasks still focus on your priorities.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1905.900000" data-stop="1908.599000">Right.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1908.000000">31:48</span> <strong>It's all just plain text</strong></div><p></p><span class="audio-time caption" data-speaker="John" data-start="1908.600000" data-stop="1909.739000"><strong class="speaker-name">John:</strong>  Now, at the end of the day,</span> <span class="audio-time caption" data-speaker="John" data-start="1909.740000" data-stop="1912.379000">Org-mode files are just text files.</span> <span class="audio-time caption" data-speaker="John" data-start="1912.380000" data-stop="1914.339000">That's one of the beauties of the whole system:</span> <span class="audio-time caption" data-speaker="John" data-start="1914.340000" data-stop="1916.379000">they're really nothing special.</span> <span class="audio-time caption" data-speaker="John" data-start="1916.380000" data-stop="1919.579000">Because it's Org-roam on top of Org-mode,</span> <span class="audio-time caption" data-speaker="John" data-start="1919.580000" data-stop="1922.539000">I have many files. I have hundreds and hundreds of</span> <span class="audio-time caption" data-speaker="John" data-start="1922.540000" data-stop="1925.419000">Org-mode files. Many of them contain tasks,</span> <span class="audio-time caption" data-speaker="John" data-start="1925.420000" data-stop="1926.819000">many of them do not.</span> <span class="audio-time caption" data-speaker="John" data-start="1926.820000" data-stop="1930.619000">I use some advice from the internet</span> <span class="audio-time caption" data-speaker="John" data-start="1930.620000" data-stop="1933.979000">on how to optimize the collection of tasks for the agenda</span> <span class="audio-time caption" data-speaker="John" data-start="1933.980000" data-stop="1937.219000">so that it only opens the files that have tasks in them.</span> <span class="audio-time caption" data-speaker="John" data-start="1937.220000" data-stop="1940.259000">That way it stays nice and responsive,</span> <span class="audio-time caption" data-speaker="John" data-start="1940.260000" data-stop="1942.979000">even though the number of files is constantly growing.</span> <span class="audio-time caption" data-speaker="John" data-start="1942.980000" data-stop="1947.059000">The reason I use separate Org-mode files is, yes,</span> <span class="audio-time caption" data-speaker="John" data-start="1947.060000" data-stop="1950.179000">I do separate by topic sometimes—</span> <span class="audio-time caption" data-speaker="John" data-start="1950.180000" data-stop="1952.979000">I have a file for work and a file for personal—</span> <span class="audio-time caption" data-speaker="John" data-start="1952.980000" data-stop="1957.419000">but I also like to have an individual file for every meeting.</span> <span class="audio-time caption" data-speaker="John" data-start="1957.420000" data-stop="1961.419000">At work, if I have a one-on-one meeting, a team meeting,</span> <span class="audio-time caption" data-speaker="John" data-start="1961.420000" data-stop="1963.579000">a project meeting, an all-hands meeting,</span> <span class="audio-time caption" data-speaker="John" data-start="1963.580000" data-stop="1966.219000">I will create a file for that meeting.</span> <span class="audio-time caption" data-speaker="John" data-start="1966.220000" data-stop="1968.459000">I will put into it who the attendees are</span> <span class="audio-time caption" data-speaker="John" data-start="1968.460000" data-stop="1970.059000">and what was the agenda.</span> <span class="audio-time caption" data-speaker="John" data-start="1970.060000" data-stop="1973.819000">I will have an AI note-taker (usually Gemini or Fireflies</span> <span class="audio-time caption" data-speaker="John" data-start="1973.820000" data-stop="1976.859000">or something like that) on during that meeting,</span> <span class="audio-time caption" data-speaker="John" data-start="1976.860000" data-stop="1979.539000">so that I can include the summary, the action items,</span> <span class="audio-time caption" data-speaker="John" data-start="1979.540000" data-stop="1981.699000">and the transcript from the AI note-taker</span> <span class="audio-time caption" data-speaker="John" data-start="1981.700000" data-stop="1984.059000">inside that file when the meeting is done.</span> <span class="audio-time caption" data-speaker="John" data-start="1984.060000" data-stop="1987.139000">I also have a notes section where I collect</span> <span class="audio-time caption" data-speaker="John" data-start="1987.140000" data-stop="1989.379000">all of the Org-mode tasks and notes.</span> <span class="audio-time caption" data-speaker="John" data-start="1989.380000" data-stop="1992.019000">I don't use the drafts mechanism</span> <span class="audio-time caption" data-speaker="John" data-start="1992.020000" data-stop="1994.379000">to capture in those instances;</span> <span class="audio-time caption" data-speaker="John" data-start="1994.380000" data-stop="1998.139000">I capture them directly into the file.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1998.000000">33:18</span> <strong>Capturing to the current point with M-0
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-33-21.560.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-33-21.560.jpg" alt="image from video 00:33:21.560" data-time="00:33:21.560"></a><span class="audio-time caption" data-speaker="John" data-start="1998.140000" data-stop="2000.819000"><strong class="speaker-name">John:</strong> One of the nice things about Org-mode is that</span> <span class="audio-time caption" data-speaker="John" data-start="2000.820000" data-stop="2003.699000">when I hit M-m to select the capture template,</span> <span class="audio-time caption" data-speaker="John" data-start="2003.700000" data-stop="2006.179000">that's going to go into my drafts file.</span> <span class="audio-time caption" data-speaker="John" data-start="2006.180000" data-stop="2008.859000">But if I hit M-0 M-m,</span> <span class="audio-time caption" data-speaker="John" data-start="2008.860000" data-stop="2012.499000">then it's going to capture it where I currently am.</span> <span class="audio-time caption" data-speaker="John" data-start="2012.500000" data-stop="2015.219000">So I could say M-0 M-m a,</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-33-35.640.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-33-35.640.jpg" alt="image from video 00:33:35.640" data-time="00:33:35.640"></a><span class="audio-time caption" data-speaker="John" data-start="2015.220000" data-stop="2018.059000"><strong class="speaker-name">John:</strong> and then I could say "send email to Sacha" again—</span> <span class="audio-time caption" data-speaker="John" data-start="2018.060000" data-stop="2021.459000">you're going to get lots of emails, Sacha—</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-33-42.040.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-33-42.040.jpg" alt="image from video 00:33:42.040" data-time="00:33:42.040"></a><span class="audio-time caption" data-speaker="John" data-start="2021.460000" data-stop="2024.259000"><strong class="speaker-name">John:</strong> and as you can see, it's right here in the file</span> <span class="audio-time caption" data-speaker="John" data-start="2024.260000" data-stop="2025.499000">where I was a moment ago.</span> <span class="audio-time caption" data-speaker="John" data-start="2025.500000" data-stop="2028.299000">That's what I use to capture stuff</span> <span class="audio-time caption" data-speaker="John" data-start="2028.300000" data-stop="2030.379000">into the one-on-one files.</span> <span class="audio-time caption" data-speaker="John" data-start="2030.380000" data-stop="2034.299000">So I use M-m if I'm using the Org-mode capture,</span> <span class="audio-time caption" data-speaker="John" data-start="2034.300000" data-stop="2036.499000">which is for individual items</span> <span class="audio-time caption" data-speaker="John" data-start="2036.500000" data-stop="2039.139000">that either are in my current location or in the drafts.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2039.000000">33:59</span> <strong>A different set of Org Roam capture templates
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-34-01.640.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-34-01.640.jpg" alt="image from video 00:34:01.640" data-time="00:34:01.640"></a><span class="audio-time caption" data-speaker="John" data-start="2039.140000" data-stop="2041.979000"><strong class="speaker-name">John:</strong> Then I use C-c M-m</span> <span class="audio-time caption" data-speaker="John" data-start="2041.980000" data-stop="2043.579000">for a different set of capture templates,</span> <span class="audio-time caption" data-speaker="John" data-start="2043.580000" data-stop="2045.219000">which are for Org-roam files.</span> <span class="audio-time caption" data-speaker="John" data-start="2045.220000" data-stop="2050.619000">If I do C-c M-m, then I can go to my work templates,</span> <span class="audio-time caption" data-speaker="John" data-start="2050.620000" data-stop="2053.219000">my Bahá'í templates. I could capture a note,</span> <span class="audio-time caption" data-speaker="John" data-start="2053.220000" data-stop="2055.299000">which is an independent empty file.</span> <span class="audio-time caption" data-speaker="John" data-start="2055.300000" data-stop="2058.939000">I could capture a blog for one of my two blogs.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2058.000000">34:18</span> <strong>Capturing by name
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-34-20.880.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-34-20.880.jpg" alt="image from video 00:34:20.880" data-time="00:34:20.880"></a><span class="audio-time caption" data-speaker="John" data-start="2058.940000" data-stop="2060.880000"><strong class="speaker-name">John:</strong> So let's do work. I'll say "work,"</span> <span class="audio-time caption" data-speaker="John" data-start="2060.881000" data-stop="2063.019000">I'll say "O" for one-on-ones,</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-34-24.640.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-34-24.640.jpg" alt="image from video 00:34:24.640" data-time="00:34:24.640"></a><span class="audio-time caption" data-speaker="John" data-start="2063.020000" data-stop="2065.019000"><strong class="speaker-name">John:</strong> I'll say "D" for names that begin with D,</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-34-27.680.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-34-27.680.jpg" alt="image from video 00:34:27.680" data-time="00:34:27.680"></a><span class="audio-time caption" data-speaker="John" data-start="2065.020000" data-stop="2067.499000"><strong class="speaker-name">John:</strong> and I'll say "W" and it will be my manager.</span> <span class="audio-time caption" data-speaker="John" data-start="2067.500000" data-stop="2071.379000">What that will do is now it pops me into an Org-roam file</span> <span class="audio-time caption" data-speaker="John" data-start="2071.380000" data-stop="2074.899000">where all the metadata for this file has been set up:</span> <span class="audio-time caption" data-speaker="John" data-start="2074.900000" data-stop="2078.659000">the right category, the right file tags, creation date, everything.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2078.000000">34:38</span> <strong>An after-save hook automatically renames the files
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-34-42.600.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-34-42.600.jpg" alt="image from video 00:34:42.600" data-time="00:34:42.600"></a><span class="audio-time caption" data-speaker="John" data-start="2078.660000" data-stop="2082.819000"><strong class="speaker-name">John:</strong> I like to add the meeting time to the date.</span> <span class="audio-time caption" data-speaker="John" data-start="2082.820000" data-stop="2086.316000">When I save the file, then there is an after-save hook</span> <span class="audio-time caption" data-speaker="John" data-start="2086.317000" data-stop="2089.099000">that will automatically rename the file</span> <span class="audio-time caption" data-speaker="John" data-start="2089.100000" data-stop="2094.379000">so it has the correct date and time in the filename.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2094.000000">34:54</span> <strong>org-ql in the template provides a meeting agenda
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-34-57.200.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-34-57.200.jpg" alt="image from video 00:34:57.200" data-time="00:34:57.200"></a><span class="audio-time caption" data-speaker="John" data-start="2094.380000" data-stop="2097.219000"><strong class="speaker-name">John:</strong> Then you can see that it has pre-populated</span> <span class="audio-time caption" data-speaker="John" data-start="2097.220000" data-stop="2098.779000">an empty org-ql column view,</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-34-59.920.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-34-59.920.jpg" alt="image from video 00:34:59.920" data-time="00:34:59.920"></a><span class="audio-time caption" data-speaker="John" data-start="2098.780000" data-stop="2101.379000"><strong class="speaker-name">John:</strong> which I then hit C-c C-c on.</span> <span class="audio-time caption" data-speaker="John" data-start="2101.380000" data-stop="2104.339000">So now, if the person I'm meeting with</span> <span class="audio-time caption" data-speaker="John" data-start="2104.340000" data-stop="2105.859000">has not provided me with an agenda,</span> <span class="audio-time caption" data-speaker="John" data-start="2105.860000" data-stop="2108.779000">I have an automatically constructed agenda</span> <span class="audio-time caption" data-speaker="John" data-start="2108.780000" data-stop="2110.779000">for that person based on what I know</span> <span class="audio-time caption" data-speaker="John" data-start="2110.780000" data-stop="2114.859000">I have to do for them in my Org-mode data.</span> <span class="audio-time caption" data-speaker="John" data-start="2114.860000" data-stop="2117.939000">When I was a manager for several employees</span> <span class="audio-time caption" data-speaker="John" data-start="2117.940000" data-stop="2121.619000">and would use Fireflies to capture all the action items</span> <span class="audio-time caption" data-speaker="John" data-start="2121.620000" data-stop="2122.899000">from all of our meetings,</span> <span class="audio-time caption" data-speaker="John" data-start="2122.900000" data-stop="2126.339000">this was how I followed up on all those action items</span> <span class="audio-time caption" data-speaker="John" data-start="2126.340000" data-stop="2129.859000">with all the people. I had one-on-ones with every direct every week,</span> <span class="audio-time caption" data-speaker="John" data-start="2129.860000" data-stop="2134.539000">and I would auto-populate agendas for those meetings from Org-mode.</span> <span class="audio-time caption" data-speaker="John" data-start="2134.540000" data-stop="2137.499000">Then I would just go through the agenda with them and say,</span> <span class="audio-time caption" data-speaker="John" data-start="2137.500000" data-stop="2138.939000">"What's the status? What's the status?"</span> <span class="audio-time caption" data-speaker="John" data-start="2138.940000" data-stop="2141.259000">and just keep that moving forward.</span> <span class="audio-time caption" data-speaker="John" data-start="2141.260000" data-stop="2145.979000">That ended up being a really nice system for making sure</span> <span class="audio-time caption" data-speaker="John" data-start="2145.980000" data-stop="2149.299000">that all the action items we committed to were being completed.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2149.000000">35:49</span> <strong>The "Review by" argument for the column view block filters the tasks
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-35-52.000.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-35-52.000.jpg" alt="image from video 00:35:52.000" data-time="00:35:52.000"></a><span class="audio-time caption" data-speaker="John" data-start="2149.300000" data-stop="2151.859000"><strong class="speaker-name">John:</strong> You can see here on this org-ql column view</span> <span class="audio-time caption" data-speaker="John" data-start="2151.860000" data-stop="2154.659000">I have this <code>:REVIEW_BY</code> tag.</span> <span class="audio-time caption" data-speaker="John" data-start="2154.660000" data-stop="2158.299000">That says, "If the <code>NEXT_REVIEW</code> date for the item</span> <span class="audio-time caption" data-speaker="John" data-start="2158.300000" data-stop="2160.299000">is beyond this date, don't put it here.</span> <span class="audio-time caption" data-speaker="John" data-start="2160.300000" data-stop="2162.339000">It doesn't belong in this agenda."</span> <span class="audio-time caption" data-speaker="John" data-start="2162.340000" data-stop="2164.859000">That way, if a person says, "Oh, I'm working on this,</span> <span class="audio-time caption" data-speaker="John" data-start="2164.860000" data-stop="2166.219000">but it's going to take me two months,"</span> <span class="audio-time caption" data-speaker="John" data-start="2166.220000" data-stop="2168.259000">I'll say, "Well, I'm going to check back with you</span> <span class="audio-time caption" data-speaker="John" data-start="2168.260000" data-stop="2170.059000">in two months." Then I'll just set</span> <span class="audio-time caption" data-speaker="John" data-start="2170.060000" data-stop="2171.899000">the <code>NEXT_REVIEW</code> for that item</span> <span class="audio-time caption" data-speaker="John" data-start="2171.900000" data-stop="2176.979000">to be two months into the future.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2176.980000" data-stop="2179.059000"><strong class="speaker-name">Sacha:</strong>  And then for the ones that are there</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2179.060000" data-stop="2181.899000">that you're reviewing, as you're sitting in the meeting with them,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2181.900000" data-stop="2183.339000">you're opening up the other tasks in another window</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2183.340000" data-stop="2185.139000">and updating your status?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="2185.140000" data-stop="2186.579000"><strong class="speaker-name">John:</strong>  Usually, yeah, I'll do this.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-36-25.720.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-36-25.720.jpg" alt="image from video 00:36:25.720" data-time="00:36:25.720"></a><span class="audio-time caption" data-speaker="John" data-start="2186.580000" data-stop="2189.539000"><strong class="speaker-name">John:</strong> I'll open it up and see whether there's any supporting information.</span> <span class="audio-time caption" data-speaker="John" data-start="2189.540000" data-stop="2196.019000">There may be links to files, links to URLs, a description.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2196.000000">36:36</span> <strong>Copying from Slack to paste into tasks</strong></div><p></p><span class="audio-time caption" data-speaker="John" data-start="2196.020000" data-stop="2200.379000"><strong class="speaker-name">John:</strong> I like to copy and paste from Slack into tasks.</span> <span class="audio-time caption" data-speaker="John" data-start="2200.380000" data-stop="2204.259000">In fact, I have a whole pipeline for that.</span> <span class="audio-time caption" data-speaker="John" data-start="2204.260000" data-stop="2206.819000">I use Slack through Firefox</span> <span class="audio-time caption" data-speaker="John" data-start="2206.820000" data-stop="2212.179000">because Firefox has a "Copy as Org-mode" plugin.</span> <span class="audio-time caption" data-speaker="John" data-start="2212.180000" data-stop="2217.019000">So what I do is I drag and drop over the entire conversation</span> <span class="audio-time caption" data-speaker="John" data-start="2217.020000" data-stop="2221.419000">that I want to make a task out of. I hit Home on my keyboard,</span> <span class="audio-time caption" data-speaker="John" data-start="2221.420000" data-stop="2226.939000">which uses Keyboard Maestro on my Mac to copy that as Org-mode,</span> <span class="audio-time caption" data-speaker="John" data-start="2226.940000" data-stop="2231.419000">switch to the Emacs application, capture a task,</span> <span class="audio-time caption" data-speaker="John" data-start="2231.420000" data-stop="2236.859000">insert the Org-mode Slack text that it just captured,</span> <span class="audio-time caption" data-speaker="John" data-start="2236.860000" data-stop="2241.859000">and then run an Emacs Lisp function called org-fixup-slack,</span> <span class="audio-time caption" data-speaker="John" data-start="2241.860000" data-stop="2245.619000">which will rewrite all of the links and all of the markup</span> <span class="audio-time caption" data-speaker="John" data-start="2245.620000" data-stop="2248.419000">to match what I want in my Org-mode files.</span> <span class="audio-time caption" data-speaker="John" data-start="2248.420000" data-stop="2252.859000">Then I ask Claude to review that content</span> <span class="audio-time caption" data-speaker="John" data-start="2252.860000" data-stop="2257.319000">and synthesize a title for that to-do item for me.</span> <span class="audio-time caption" data-speaker="John" data-start="2257.320000" data-stop="2264.579000">Then I will tag it with the person I need to work on this with—</span> <span class="audio-time caption" data-speaker="John" data-start="2264.580000" data-stop="2267.779000">or I'll switch it from TODO to TASK,</span> <span class="audio-time caption" data-speaker="John" data-start="2267.780000" data-stop="2269.699000">which means it's delegated to them,</span> <span class="audio-time caption" data-speaker="John" data-start="2269.700000" data-stop="2271.899000">and then I'll tag it with their name,</span> <span class="audio-time caption" data-speaker="John" data-start="2271.900000" data-stop="2274.299000">which means they're the ones working on it.</span> <span class="audio-time caption" data-speaker="John" data-start="2274.300000" data-stop="2276.739000">I have to check in with them on our next one-on-one</span> <span class="audio-time caption" data-speaker="John" data-start="2276.740000" data-stop="2280.219000">to see whether this was completed.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2280.220000" data-stop="2282.819000"><strong class="speaker-name">Sacha:</strong>  All right, so that's how you get external information</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2282.820000" data-stop="2284.979000">such as Slack conversations into your notes,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2284.980000" data-stop="2289.099000">formatted the way that you like to format them,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2289.100000" data-stop="2293.479000">and into your whole agenda review meeting process.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2293.000000">38:13</span> <strong>Using gptel and large language models to generate titles and identify tasks</strong></div><p></p><span class="audio-time caption" data-speaker="John" data-start="2293.480000" data-stop="2295.739000"><strong class="speaker-name">John:</strong>  Right. And Karthik is the author of</span> <span class="audio-time caption" data-speaker="John" data-start="2295.740000" data-stop="2298.459000">the wonderful gptel Emacs interface—</span> <span class="audio-time caption" data-speaker="John" data-start="2298.460000" data-stop="2303.299000">that's the interface whose API I use to do the title synthesizing.</span> <span class="audio-time caption" data-speaker="John" data-start="2303.300000" data-stop="2308.339000">I do a lot of title synthesizing. I do not write Org-mode titles.</span> <span class="audio-time caption" data-speaker="John" data-start="2308.340000" data-stop="2311.059000">I just paste in lots of information</span> <span class="audio-time caption" data-speaker="John" data-start="2311.060000" data-stop="2314.179000">and then ask Claude to create the title for me,</span> <span class="audio-time caption" data-speaker="John" data-start="2314.180000" data-stop="2317.739000">because I've taught it what kind of titles I like.</span> <span class="audio-time caption" data-speaker="John" data-start="2317.740000" data-stop="2320.459000">In fact, I could do that right now.</span> <span class="audio-time caption" data-speaker="John" data-start="2320.460000" data-stop="2323.819000">I could go into notes, I could create a TODO here.</span> <span class="audio-time caption" data-speaker="John" data-start="2323.820000" data-stop="2325.320000">That didn't work.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-38-46.320.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-38-46.320.jpg" alt="image from video 00:38:46.320" data-time="00:38:46.320"></a><span class="audio-time caption" data-speaker="John" data-start="2325.321000" data-stop="2326.339000"><strong class="speaker-name">John:</strong> I could create a TODO—</span> <span class="audio-time caption" data-speaker="John" data-start="2326.340000" data-stop="2328.619000">I'm using yasnippet to create the TODO.</span> <span class="audio-time caption" data-speaker="John" data-start="2328.620000" data-stop="2331.499000">I have to fix my org-review today,</span> <span class="audio-time caption" data-speaker="John" data-start="2331.500000" data-stop="2335.939000">so one second here while I make a task to fix that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2335.940000" data-stop="2338.659000"><strong class="speaker-name">Sacha:</strong>  Of course.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="2338.660000" data-stop="2341.739000"><strong class="speaker-name">John:</strong>  And that will be scheduled for today.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2341.740000" data-stop="2344.419000"><strong class="speaker-name">Sacha:</strong>  That sounds like a good opportunity</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2344.420000" data-stop="2346.099000">to copy the error message, paste it in,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2346.100000" data-stop="2348.979000">and demonstrate how Claude will do the thing for us.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="2348.980000" data-stop="2352.019000"><strong class="speaker-name">John:</strong>  Yeah, well, it might. I could do it this way.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-39-12.640.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-39-12.640.jpg" alt="image from video 00:39:12.640" data-time="00:39:12.640"></a><span class="audio-time caption" data-speaker="John" data-start="2352.020000" data-stop="2358.739000"><strong class="speaker-name">John:</strong> I type C-x c t — C-x c is my prefix</span> <span class="audio-time caption" data-speaker="John" data-start="2358.740000" data-stop="2362.139000">for all things AI, and T is "make an Org-mode title."</span> <span class="audio-time caption" data-speaker="John" data-start="2362.140000" data-stop="2366.919000">Actually, it's not using Claude, it's using my local AI.</span> <span class="audio-time caption" data-speaker="John" data-start="2367.620000" data-stop="2369.699000">This is going to take a little bit longer.</span> <span class="audio-time caption" data-speaker="John" data-start="2369.700000" data-stop="2373.699000">So while it does that, I'll tell you about other things.</span> <span class="audio-time caption" data-speaker="John" data-start="2373.700000" data-stop="2376.099000">It can do it asynchronously, so I can come back here</span> <span class="audio-time caption" data-speaker="John" data-start="2376.100000" data-stop="2380.659000">and tell you about this. So I'm here. What was I saying?</span> <span class="audio-time caption" data-speaker="John" data-start="2380.660000" data-stop="2386.699000">What was I going to do in this file?</span> <span class="audio-time caption" data-speaker="John" data-start="2386.700000" data-stop="2391.779000">I think I was just going to show you the creation of a TODO here.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2391.780000" data-stop="2394.099000"><strong class="speaker-name">Sacha:</strong>  Yeah, we were talking about copying the information</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2394.100000" data-stop="2396.659000">from somewhere else. You've got this big paste,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2396.660000" data-stop="2400.059000">and then you're getting the AI to give you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2400.060000" data-stop="2403.919000">a title that summarizes the action item.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2403.000000">40:03</span> <strong>after-save-hook adds a TODO file tag; the TODO file tag adds it to the list of org-agenda files
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-40-18.040.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-40-18.040.jpg" alt="image from video 00:40:18.040" data-time="00:40:18.040"></a><span class="audio-time caption" data-speaker="John" data-start="2403.920000" data-stop="2406.019000"><strong class="speaker-name">John:</strong>  Since I've created a TODO,</span> <span class="audio-time caption" data-speaker="John" data-start="2406.020000" data-stop="2408.979000">and since I saved the file (which is what caused it</span> <span class="audio-time caption" data-speaker="John" data-start="2408.980000" data-stop="2410.059000">to then create the hash),</span> <span class="audio-time caption" data-speaker="John" data-start="2410.060000" data-stop="2413.539000">you'll see that it has added "TODO" to the file tags.</span> <span class="audio-time caption" data-speaker="John" data-start="2413.540000" data-stop="2416.299000">This is how the system knows to add it</span> <span class="audio-time caption" data-speaker="John" data-start="2416.300000" data-stop="2418.019000">to the set of org-agenda files,</span> <span class="audio-time caption" data-speaker="John" data-start="2418.020000" data-stop="2421.539000">so that the org-agenda will now get the TODOs</span> <span class="audio-time caption" data-speaker="John" data-start="2421.540000" data-stop="2425.159000">from this file as well.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2425.160000" data-stop="2428.179000"><strong class="speaker-name">Sacha:</strong>  Okay, adding to the agenda. Gotcha.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2428.180000" data-stop="2433.039000">All right. Now, you mentioned the hash a few times. Go ahead.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2433.000000">40:33</span> <strong>Reviewing the task</strong></div><p></p><span class="audio-time caption" data-speaker="Karthik" data-start="2433.040000" data-stop="2434.979000"><strong class="speaker-name">Karthik:</strong>  If I may jump in briefly,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2434.980000" data-stop="2439.219000">I feel like I'm trying to catch up to an F1 car on a bike.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2439.220000" data-stop="2446.019000">I want to go back to the flow of that one task</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2446.020000" data-stop="2449.699000">about writing an email to Sacha very briefly.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2449.700000" data-stop="2455.099000">You said you filed it and then it shows up</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2455.100000" data-stop="2457.979000">in the list of things to review, right?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2457.980000" data-stop="2462.019000">What happens from there is that either you schedule it,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2462.020000" data-stop="2464.019000">or you just do it at some point,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2464.020000" data-stop="2468.399000">or you push it forward into the future. Is that right?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="2468.400000" data-stop="2470.440000"><strong class="speaker-name">John:</strong>  Say that one more time?</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="2470.441000" data-stop="2476.419000"><strong class="speaker-name">Karthik:</strong>  The task about writing an email to Sacha</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2476.420000" data-stop="2482.059000">that you captured and then moved into the friends category—</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2482.060000" data-stop="2487.939000">I want to know how the task actually gets done.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2487.940000" data-stop="2490.859000">How are you reminded of it two weeks from now, let's say?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="2490.860000" data-stop="2496.339000"><strong class="speaker-name">John:</strong>  Well, it'll have to show up down here in the tasks to be reviewed.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="2496.340000" data-stop="2497.239000"><strong class="speaker-name">Karthik:</strong>  Uh-huh.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="2497.240000" data-stop="2500.799000"><strong class="speaker-name">John:</strong>  But randomly.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2500.800000" data-stop="2501.499000"><strong class="speaker-name">Sacha:</strong>  Let's pretend you're scheduling it for today,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2501.500000" data-stop="2504.899000">because it's very important you send me an email today.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2504.900000" data-stop="2507.419000">So if you want to refile it to find it again,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2507.420000" data-stop="2509.979000">we can schedule that and you can send it in.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2509.980000" data-stop="2514.739000">Because I think Karthik just really wants to see the task marked done.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="2514.740000" data-stop="2518.059000"><strong class="speaker-name">Karthik:</strong>  No, you don't even have to write an email to Sacha—</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2518.060000" data-stop="2519.459000"><strong class="speaker-name">Sacha:</strong>  Oh, you can.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="2519.460000" data-stop="2524.559000"><strong class="speaker-name">Karthik:</strong>  I mean, you can if you really want to.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2524.000000">42:04</span> <strong>Karthik: "Things I capture in Org never get done."</strong></div><p></p><span class="audio-time caption" data-speaker="Karthik" data-start="2524.560000" data-stop="2527.579000"><strong class="speaker-name">Karthik:</strong>  So okay, I'll tell you the reason why I keep focusing on this.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2527.580000" data-stop="2532.299000">It's because everyone knows how to capture in Org, right?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2532.300000" data-stop="2535.699000">And then everyone also knows how to get a list of all TODOs.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2535.700000" data-stop="2539.739000">But things I capture in Org never get done, right?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2539.740000" data-stop="2543.419000">So I want to know what the mechanism is to force your hand</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2543.420000" data-stop="2545.579000">into actually sitting down and writing this email.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2545.580000" data-stop="2549.699000">Of course, if it's urgent and there's a deadline, it gets done, right?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2549.700000" data-stop="2551.299000">But it's the things like this where, oh,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2551.300000" data-stop="2555.179000">it would be nice to write this email and then follow up on this.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2555.180000" data-stop="2560.379000"><strong class="speaker-name">Sacha:</strong>  I think the problem, as you said earlier, the problem is the human.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2560.000000">42:40</span> <strong>Grazing through tasks
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-42-39.640.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-42-39.640.jpg" alt="image from video 00:42:39.640" data-time="00:42:39.640"></a><span class="audio-time caption" data-speaker="John" data-start="2560.380000" data-stop="2563.259000"><strong class="speaker-name">John:</strong>  Yeah, the truth is it may never happen, Karthik,</span> <span class="audio-time caption" data-speaker="John" data-start="2563.260000" data-stop="2565.899000">but it will be here as an open task.</span> <span class="audio-time caption" data-speaker="John" data-start="2565.900000" data-stop="2570.859000">As I have time in my life, I do graze through my tasks.</span> <span class="audio-time caption" data-speaker="John" data-start="2570.860000" data-stop="2574.819000">I cut it in different ways to try to refresh myself</span> <span class="audio-time caption" data-speaker="John" data-start="2574.820000" data-stop="2577.699000">on what hasn't been done, and there will come a day</span> <span class="audio-time caption" data-speaker="John" data-start="2577.700000" data-stop="2580.919000">when I will see this task again.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2580.920000" data-stop="2583.299000"><strong class="speaker-name">Sacha:</strong>  Okay, yeah. Anything that's got a time on it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2583.300000" data-stop="2585.179000">goes into the priority queue,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2585.180000" data-stop="2588.019000">and anything that would be nice to have goes into—</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2588.020000" data-stop="2592.179000">someday it will show up in John's lottery of random tasks</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2592.180000" data-stop="2595.379000">and then he'll be like, "You know, I'd rather do that task</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2595.380000" data-stop="2597.859000">than all the other tasks. Let's do that one instead."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2597.860000" data-stop="2604.459000">Just a quick question, because we're coming up...</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="2604.460000" data-stop="2606.579000"><strong class="speaker-name">John:</strong>  Oh, we haven't even really scratched the surface.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2606.580000" data-stop="2607.539000"><strong class="speaker-name">Sacha:</strong>  I know.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="2607.540000" data-stop="2610.139000"><strong class="speaker-name">John:</strong>  There are major, major things underneath this</span> <span class="audio-time caption" data-speaker="John" data-start="2610.140000" data-stop="2612.199000">that I haven't even mentioned yet.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2612.200000" data-stop="2616.119000"><strong class="speaker-name">Sacha:</strong>  I can keep going if you can keep going. So up to you.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2616.000000">43:36</span> <strong>This is an advanced Org workflow</strong></div><p></p><span class="audio-time caption" data-speaker="Karthik" data-start="2616.120000" data-stop="2618.579000"><strong class="speaker-name">Karthik:</strong>  Also, I know more than I'm letting on</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2618.580000" data-stop="2621.539000">about John's Org workflow, right?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2621.540000" data-stop="2624.139000">I'm just trying to ease the viewer into it gently because—</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2624.140000" data-stop="2626.619000">what's the goal here?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2626.620000" data-stop="2628.299000">I don't think that this presentation is</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2628.300000" data-stop="2630.539000">for people newly introduced to Org-mode.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="2630.540000" data-stop="2633.539000"><strong class="speaker-name">John:</strong>  I just don't think you can.</span> <span class="audio-time caption" data-speaker="John" data-start="2633.540000" data-stop="2635.579000">I don't think they want my system.</span> <span class="audio-time caption" data-speaker="John" data-start="2635.580000" data-stop="2637.579000">This is too complex.</span> <span class="audio-time caption" data-speaker="John" data-start="2637.580000" data-stop="2641.619000">What I'm hoping is that people who already use Org-mode</span> <span class="audio-time caption" data-speaker="John" data-start="2641.620000" data-stop="2643.539000">will cherry-pick out ideas</span> <span class="audio-time caption" data-speaker="John" data-start="2643.540000" data-stop="2646.059000">that could advance their system a tiny bit.</span> <span class="audio-time caption" data-speaker="John" data-start="2646.060000" data-stop="2648.739000">But nobody should do everything that I do,</span> <span class="audio-time caption" data-speaker="John" data-start="2648.740000" data-stop="2650.459000">because I can barely survive it.</span> <span class="audio-time caption" data-speaker="John" data-start="2650.460000" data-stop="2655.239000">It's too much information.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="2655.240000" data-stop="2658.299000"><strong class="speaker-name">Karthik:</strong>  There's no way that I was expecting this</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2658.300000" data-stop="2664.659000">to be a tutorial. Not at all.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2664.660000" data-stop="2669.699000">It's just that I want the viewer to come away from this</span> <span class="audio-time caption" data-speaker="Karthik" data-start="2669.700000" data-stop="2675.179000">knowing what's possible and understanding what you're actually doing. Right.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2675.180000" data-stop="2677.379000"><strong class="speaker-name">Sacha:</strong>  This is definitely aspirational.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2677.380000" data-stop="2680.779000">This is the thing that helps people think,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2680.780000" data-stop="2682.299000">"Oh, you know what? That's possible.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2682.300000" data-stop="2684.419000">Now I can go look up org-review</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2684.420000" data-stop="2688.419000">or think about writing validation functions for my Org-mode,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2688.420000" data-stop="2695.579000">before-save hooks or actually after-save, that rename my files."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2695.580000" data-stop="2697.059000">So they can look through it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2697.060000" data-stop="2700.259000">They're not going to be able to just pull the whole thing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2700.260000" data-stop="2704.339000">from your repository and plop it into their system right off the bat,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2704.340000" data-stop="2711.699000">but they can look at it for ideas, seeing how it all comes together.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2711.000000">45:11</span> <strong>Drafts: write down the text and then decide what to do with it
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-45-15.480.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-45-15.480.jpg" alt="image from video 00:45:15.480" data-time="00:45:15.480"></a><span class="audio-time caption" data-speaker="John" data-start="2711.700000" data-stop="2714.499000"><strong class="speaker-name">John:</strong>  I mentioned that I was going to show in the drafts</span> <span class="audio-time caption" data-speaker="John" data-start="2714.500000" data-stop="2715.480000">how I have an inbox</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-45-16.520.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-45-16.520.jpg" alt="image from video 00:45:16.520" data-time="00:45:16.520"></a><span class="audio-time caption" data-speaker="John" data-start="2715.481000" data-stop="2716.979000"><strong class="speaker-name">John:</strong> and a draft section.</span> <span class="audio-time caption" data-speaker="John" data-start="2716.980000" data-stop="2720.819000">I've just recently added a new thing to my workflow,</span> <span class="audio-time caption" data-speaker="John" data-start="2720.820000" data-stop="2722.899000">which is, instead of collecting drafts here...</span> <span class="audio-time caption" data-speaker="John" data-start="2722.900000" data-stop="2726.659000">So what is a draft? A lot of times when I'm going to capture,</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-45-28.320.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-45-28.320.jpg" alt="image from video 00:45:28.320" data-time="00:45:28.320"></a><span class="audio-time caption" data-speaker="John" data-start="2726.660000" data-stop="2732.139000"><strong class="speaker-name">John:</strong> I hit M-m and I pick from the options of what I want to capture.</span> <span class="audio-time caption" data-speaker="John" data-start="2732.140000" data-stop="2735.019000">That creates a template for that type of item.</span> <span class="audio-time caption" data-speaker="John" data-start="2735.020000" data-stop="2738.699000">But sometimes that's too much thinking up front.</span> <span class="audio-time caption" data-speaker="John" data-start="2738.700000" data-stop="2741.339000">I don't want to have to distinguish between a TODO</span> <span class="audio-time caption" data-speaker="John" data-start="2741.340000" data-stop="2743.659000">or a note or a link or anything else.</span> <span class="audio-time caption" data-speaker="John" data-start="2743.660000" data-stop="2748.139000">What I want is to just get the text out of my mind</span> <span class="audio-time caption" data-speaker="John" data-start="2748.140000" data-stop="2750.259000">absolutely as fast as possible.</span> <span class="audio-time caption" data-speaker="John" data-start="2750.260000" data-stop="2753.659000">For this purpose, I wrote org-drafts.</span> <span class="audio-time caption" data-speaker="John" data-start="2753.660000" data-stop="2757.699000">I named it after a Mac application that I've been using for years</span> <span class="audio-time caption" data-speaker="John" data-start="2757.700000" data-stop="2759.219000">that does exactly the same thing.</span> <span class="audio-time caption" data-speaker="John" data-start="2759.220000" data-stop="2764.339000">Drafts lets you write first, act on the information later.</span> <span class="audio-time caption" data-speaker="John" data-start="2764.340000" data-stop="2769.699000">In Drafts, the Mac app, you can write some text</span> <span class="audio-time caption" data-speaker="John" data-start="2769.700000" data-stop="2772.019000">and then decide you want to send it as an email,</span> <span class="audio-time caption" data-speaker="John" data-start="2772.020000" data-stop="2776.659000">send it as a message, send it as a WhatsApp—you know,</span> <span class="audio-time caption" data-speaker="John" data-start="2776.660000" data-stop="2779.219000">but you shouldn't have to be thinking about</span> <span class="audio-time caption" data-speaker="John" data-start="2779.220000" data-stop="2780.459000">the mechanism of action</span> <span class="audio-time caption" data-speaker="John" data-start="2780.460000" data-stop="2784.379000">when you first just want to think about the creative act.</span> <span class="audio-time caption" data-speaker="John" data-start="2784.380000" data-stop="2787.299000">I have changed it so that, instead of just M-m,</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-46-32.160.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-46-32.160.jpg" alt="image from video 00:46:32.160" data-time="00:46:32.160"></a><span class="audio-time caption" data-speaker="John" data-start="2787.300000" data-stop="2791.219000"><strong class="speaker-name">John:</strong> if I do M-S-m, it creates a draft.</span> <span class="audio-time caption" data-speaker="John" data-start="2791.220000" data-stop="2796.499000">It used to create the draft using the org-capture interface,</span> <span class="audio-time caption" data-speaker="John" data-start="2796.500000" data-stop="2803.339000">and then it would go into that drafts subheading in my drafts.org file.</span> <span class="audio-time caption" data-speaker="John" data-start="2803.340000" data-stop="2807.539000">But now what it does is it goes into my lab notebook.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2807.000000">46:47</span> <strong>My lab notebook collects notes and ideas throughout the day</strong></div><p></p><span class="audio-time caption" data-speaker="John" data-start="2807.540000" data-stop="2809.579000"><strong class="speaker-name">John:</strong> So the lab notebook is where</span> <span class="audio-time caption" data-speaker="John" data-start="2809.580000" data-stop="2812.179000">I want to collect notes and ideas throughout the day.</span> <span class="audio-time caption" data-speaker="John" data-start="2812.180000" data-stop="2815.779000">I don't know that I want it to be in the lab notebook—</span> <span class="audio-time caption" data-speaker="John" data-start="2815.780000" data-stop="2817.779000">the point is, I don't want to think about it.</span> <span class="audio-time caption" data-speaker="John" data-start="2817.780000" data-stop="2819.819000">So when I do M-S-m,</span> <span class="audio-time caption" data-speaker="John" data-start="2819.820000" data-stop="2823.219000">then what it does is it creates a draft instantly</span> <span class="audio-time caption" data-speaker="John" data-start="2823.220000" data-stop="2824.699000">at the bottom of my lab notebook,</span> <span class="audio-time caption" data-speaker="John" data-start="2824.700000" data-stop="2827.939000">and it puts me in the body of that draft to write it.</span> <span class="audio-time caption" data-speaker="John" data-start="2827.940000" data-stop="2830.819000">So I could then say, "Send an email to Sacha."</span> <span class="audio-time caption" data-speaker="John" data-start="2830.820000" data-stop="2834.259000">That's all I have to do. I don't have to hit C-c C-c.</span> <span class="audio-time caption" data-speaker="John" data-start="2834.260000" data-stop="2836.699000">I don't even have to save the file.</span> <span class="audio-time caption" data-speaker="John" data-start="2836.700000" data-stop="2839.499000">I could just go straight on to what I was doing.</span> <span class="audio-time caption" data-speaker="John" data-start="2839.500000" data-stop="2842.219000">But the idea with org-drafts is that,</span> <span class="audio-time caption" data-speaker="John" data-start="2842.220000" data-stop="2844.099000">once you have written a draft,</span> <span class="audio-time caption" data-speaker="John" data-start="2844.100000" data-stop="2846.859000">now or at any time in the future,</span> <span class="audio-time caption" data-speaker="John" data-start="2846.860000" data-stop="2850.840000">you're going to want to act on that draft in some way.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-47-32.680.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-47-32.680.jpg" alt="image from video 00:47:32.680" data-time="00:47:32.680"></a><span class="audio-time caption" data-speaker="John" data-start="2850.841000" data-stop="2852.659000"><strong class="speaker-name">John:</strong> So if I hit C-c C-c,</span> <span class="audio-time caption" data-speaker="John" data-start="2852.660000" data-stop="2857.099000">it pops up a little submenu of things I can do with this draft.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-47-41.800.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-47-41.800.jpg" alt="image from video 00:47:41.800" data-time="00:47:41.800"></a><span class="audio-time caption" data-speaker="John" data-start="2857.100000" data-stop="2861.979000"><strong class="speaker-name">John:</strong> If I hit t, it'll take the first line of the body of the draft</span> <span class="audio-time caption" data-speaker="John" data-start="2861.980000" data-stop="2866.019000">and turn it into a TODO with that line as the title of the TODO.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-47-50.080.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-47-50.080.jpg" alt="image from video 00:47:50.080" data-time="00:47:50.080"></a><span class="audio-time caption" data-speaker="John" data-start="2866.020000" data-stop="2872.819000"><strong class="speaker-name">John:</strong> If I hit C-c C-c c, it will copy the body of the draft</span> <span class="audio-time caption" data-speaker="John" data-start="2872.820000" data-stop="2878.859000">onto my clipboard and then change the keyword of the draft to SCRAP.</span> <span class="audio-time caption" data-speaker="John" data-start="2878.860000" data-stop="2882.299000">SCRAP is just a keyword that I use to identify drafts</span> <span class="audio-time caption" data-speaker="John" data-start="2882.300000" data-stop="2884.539000">that I don't need to act on anymore</span> <span class="audio-time caption" data-speaker="John" data-start="2884.540000" data-stop="2887.099000">but I like to keep the information.</span> <span class="audio-time caption" data-speaker="John" data-start="2887.100000" data-stop="2888.859000">Maybe I want the information in the future.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-48-11.920.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-48-11.920.jpg" alt="image from video 00:48:11.920" data-time="00:48:11.920"></a><span class="audio-time caption" data-speaker="John" data-start="2888.860000" data-stop="2893.179000"><strong class="speaker-name">John:</strong> Another thing I can do with it: I could do C-S-c,</span> <span class="audio-time caption" data-speaker="John" data-start="2893.180000" data-stop="2897.259000">and what that will do—you don't see it because it didn't show up there—</span> <span class="audio-time caption" data-speaker="John" data-start="2897.260000" data-stop="2901.539000">but it starts up a webpage into Claude.ai</span> <span class="audio-time caption" data-speaker="John" data-start="2901.540000" data-stop="2904.899000">and inserts the body of the draft as the text</span> <span class="audio-time caption" data-speaker="John" data-start="2904.900000" data-stop="2907.699000">to submit for the prompt to that webpage.</span> <span class="audio-time caption" data-speaker="John" data-start="2907.700000" data-stop="2911.659000">This is extensible. You can add new actions to this.</span> <span class="audio-time caption" data-speaker="John" data-start="2911.660000" data-stop="2914.459000">I can draft an email with this.</span> <span class="audio-time caption" data-speaker="John" data-start="2914.460000" data-stop="2918.659000">I don't have it set up to send Apple Messages, but I could.</span> <span class="audio-time caption" data-speaker="John" data-start="2918.660000" data-stop="2921.139000">I could set up that interaction as well.</span> <span class="audio-time caption" data-speaker="John" data-start="2921.140000" data-stop="2925.779000">This is now a preferable way for me to collect</span> <span class="audio-time caption" data-speaker="John" data-start="2925.780000" data-stop="2927.899000">ideas and thoughts and notes throughout the day.</span> <span class="audio-time caption" data-speaker="John" data-start="2927.900000" data-stop="2930.739000">So when I'm using Claude Code, which is what I'm generally using,</span> <span class="audio-time caption" data-speaker="John" data-start="2930.740000" data-stop="2934.019000">and I write a really long prompt and I think,</span> <span class="audio-time caption" data-speaker="John" data-start="2934.020000" data-stop="2937.139000">"I may want to use that prompt again in the future,"</span> <span class="audio-time caption" data-speaker="John" data-start="2937.140000" data-stop="2939.179000">I will copy and paste it and then make it a draft,</span> <span class="audio-time caption" data-speaker="John" data-start="2939.180000" data-stop="2941.459000">and not do anything with it.</span> <span class="audio-time caption" data-speaker="John" data-start="2941.460000" data-stop="2944.979000">Actually, I just turn it into SCRAP right away with another keybinding,</span> <span class="audio-time caption" data-speaker="John" data-start="2944.980000" data-stop="2949.019000">but I want to retain it within my lab notebook</span> <span class="audio-time caption" data-speaker="John" data-start="2949.020000" data-stop="2951.459000">so that I can use other forms of search,</span> <span class="audio-time caption" data-speaker="John" data-start="2951.460000" data-stop="2952.979000">which I'm going to talk about in a moment,</span> <span class="audio-time caption" data-speaker="John" data-start="2952.980000" data-stop="2957.499000">to try and recover that information and find it later.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2957.000000">49:17</span> <strong>org-jw: normalizing structured data</strong></div><p></p><span class="audio-time caption" data-speaker="John" data-start="2957.500000" data-stop="2959.979000"><strong class="speaker-name">John:</strong> I said that Org-mode is text,</span> <span class="audio-time caption" data-speaker="John" data-start="2959.980000" data-stop="2961.939000">and that is a strength of Org-mode.</span> <span class="audio-time caption" data-speaker="John" data-start="2961.940000" data-stop="2963.659000">It is also a weakness of Org-mode,</span> <span class="audio-time caption" data-speaker="John" data-start="2963.660000" data-stop="2967.899000">because really Org-mode is a database—</span> <span class="audio-time caption" data-speaker="John" data-start="2967.900000" data-stop="2971.059000">but it is a super-unstructured database.</span> <span class="audio-time caption" data-speaker="John" data-start="2971.060000" data-stop="2974.739000">I have spent more than a year</span> <span class="audio-time caption" data-speaker="John" data-start="2974.740000" data-stop="2977.859000">now layering a system on top of Org-mode</span> <span class="audio-time caption" data-speaker="John" data-start="2977.860000" data-stop="2980.699000">I call org-jw, simply because it is</span> <span class="audio-time caption" data-speaker="John" data-start="2980.700000" data-stop="2982.619000">so specific to my workflow that</span> <span class="audio-time caption" data-speaker="John" data-start="2982.620000" data-stop="2984.939000">I didn't think it would ever be of general use.</span> <span class="audio-time caption" data-speaker="John" data-start="2984.940000" data-stop="2986.779000">What org-jw is,</span> <span class="audio-time caption" data-speaker="John" data-start="2986.780000" data-stop="2989.979000">is a separate Haskell application</span> <span class="audio-time caption" data-speaker="John" data-start="2989.980000" data-stop="2994.099000">that parses Org-mode files into an internal</span> <span class="audio-time caption" data-speaker="John" data-start="2994.100000" data-stop="2995.619000">representation in memory</span> <span class="audio-time caption" data-speaker="John" data-start="2995.620000" data-stop="2999.379000">of those files that's entirely complete. When</span> <span class="audio-time caption" data-speaker="John" data-start="2999.380000" data-stop="3001.819000">I say "entirely complete," I mean that if</span> <span class="audio-time caption" data-speaker="John" data-start="3001.820000" data-stop="3004.059000">I take that in-memory representation</span> <span class="audio-time caption" data-speaker="John" data-start="3004.060000" data-stop="3007.299000">and write it back out as an Org-mode file, it</span> <span class="audio-time caption" data-speaker="John" data-start="3007.300000" data-stop="3008.779000">is byte-for-byte identical</span> <span class="audio-time caption" data-speaker="John" data-start="3008.780000" data-stop="3010.699000">to the Org-mode file that went in.</span> <span class="audio-time caption" data-speaker="John" data-start="3010.700000" data-stop="3015.139000">It checks this property by doing a round trip.</span> <span class="audio-time caption" data-speaker="John" data-start="3015.140000" data-stop="3017.419000">If the file fails the round trip,</span> <span class="audio-time caption" data-speaker="John" data-start="3017.420000" data-stop="3019.419000">it raises an error saying your data</span> <span class="audio-time caption" data-speaker="John" data-start="3019.420000" data-stop="3020.939000">is not conformant.</span> <span class="audio-time caption" data-speaker="John" data-start="3020.940000" data-stop="3025.179000">I make this a pre-commit hook before anything</span> <span class="audio-time caption" data-speaker="John" data-start="3025.180000" data-stop="3027.259000">can be committed to Git as a change</span> <span class="audio-time caption" data-speaker="John" data-start="3027.260000" data-stop="3029.859000">to my Org-mode files, to ensure that if it's</span> <span class="audio-time caption" data-speaker="John" data-start="3029.860000" data-stop="3032.379000">in Git, it is normalized.</span> <span class="audio-time caption" data-speaker="John" data-start="3032.380000" data-stop="3035.219000">This fully normalized data now</span> <span class="audio-time caption" data-speaker="John" data-start="3035.220000" data-stop="3038.059000">is accessible in new ways.</span> <span class="audio-time caption" data-speaker="John" data-start="3038.060000" data-stop="3040.339000">I wrote a whole linting process</span> <span class="audio-time caption" data-speaker="John" data-start="3040.340000" data-stop="3042.739000">that checks hundreds of different properties</span> <span class="audio-time caption" data-speaker="John" data-start="3042.740000" data-stop="3044.859000">of my Org-mode data to make sure</span> <span class="audio-time caption" data-speaker="John" data-start="3044.860000" data-stop="3046.939000">that those properties are always maintained.</span> <span class="audio-time caption" data-speaker="John" data-start="3046.940000" data-stop="3049.419000">For example, if there is a URL property</span> <span class="audio-time caption" data-speaker="John" data-start="3049.420000" data-stop="3052.179000">in an entry, it must have a "link" tag,</span> <span class="audio-time caption" data-speaker="John" data-start="3052.180000" data-stop="3054.899000">and vice versa. Those two things have</span> <span class="audio-time caption" data-speaker="John" data-start="3054.900000" data-stop="3056.739000">to go together, because the link tag is there</span> <span class="audio-time caption" data-speaker="John" data-start="3056.740000" data-stop="3059.779000">to be a reminder to me that there is a URL</span> <span class="audio-time caption" data-speaker="John" data-start="3059.780000" data-stop="3060.899000">and it would be meaningful</span> <span class="audio-time caption" data-speaker="John" data-start="3060.900000" data-stop="3064.079000">to use C-c C-o on that entry.</span> <span class="audio-time caption" data-speaker="John" data-start="3064.080000" data-stop="3067.179000">Likewise, I don't want it to have a link tag</span> <span class="audio-time caption" data-speaker="John" data-start="3067.180000" data-stop="3069.899000">but not have a URL. The two always have</span> <span class="audio-time caption" data-speaker="John" data-start="3069.900000" data-stop="3071.939000">to come together. There are a whole bunch</span> <span class="audio-time caption" data-speaker="John" data-start="3071.940000" data-stop="3073.499000">of linting rules that I have,</span> <span class="audio-time caption" data-speaker="John" data-start="3073.500000" data-stop="3075.859000">but they're all specific to me and how I like</span> <span class="audio-time caption" data-speaker="John" data-start="3075.860000" data-stop="3077.279000">to use Org-mode.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3077.000000">51:17</span> <strong>Copying structured Org data into a PostgreSQL database</strong></div><p></p><span class="audio-time caption" data-speaker="John" data-start="3077.280000" data-stop="3079.019000"><strong class="speaker-name">John:</strong> Another thing org-jw does,</span> <span class="audio-time caption" data-speaker="John" data-start="3079.020000" data-stop="3081.859000">now that it has this internal memory representation,</span> <span class="audio-time caption" data-speaker="John" data-start="3081.860000" data-stop="3085.259000">is it can write all of that data out</span> <span class="audio-time caption" data-speaker="John" data-start="3085.260000" data-stop="3088.939000">to a highly relational database. So it's,</span> <span class="audio-time caption" data-speaker="John" data-start="3088.940000" data-stop="3090.539000">I think, a third-normal-form</span> <span class="audio-time caption" data-speaker="John" data-start="3090.540000" data-stop="3093.099000">or fourth-normal-form Postgres database</span> <span class="audio-time caption" data-speaker="John" data-start="3093.100000" data-stop="3095.779000">that collects all of the information. When</span> <span class="audio-time caption" data-speaker="John" data-start="3095.780000" data-stop="3098.339000">I say third normal form, I mean that tags are</span> <span class="audio-time caption" data-speaker="John" data-start="3098.340000" data-stop="3100.059000">in their own table, categories are</span> <span class="audio-time caption" data-speaker="John" data-start="3100.060000" data-stop="3102.099000">in their own table—every little piece</span> <span class="audio-time caption" data-speaker="John" data-start="3102.100000" data-stop="3103.979000">of information is in its own table.</span> <span class="audio-time caption" data-speaker="John" data-start="3103.980000" data-stop="3107.459000">Then there are correlating tables.</span> <span class="audio-time caption" data-speaker="John" data-start="3107.460000" data-stop="3110.659000">So each entry is identified by its UUID, and</span> <span class="audio-time caption" data-speaker="John" data-start="3110.660000" data-stop="3114.339000">then the tag knows what entry it goes with</span> <span class="audio-time caption" data-speaker="John" data-start="3114.340000" data-stop="3116.339000">by basically referencing that UUID.</span> <span class="audio-time caption" data-speaker="John" data-start="3116.340000" data-stop="3119.219000">All the data is interlinked like this.</span> <span class="audio-time caption" data-speaker="John" data-start="3119.220000" data-stop="3122.339000">In addition to storing the data</span> <span class="audio-time caption" data-speaker="John" data-start="3122.340000" data-stop="3124.579000">in this database—and this is the text</span> <span class="audio-time caption" data-speaker="John" data-start="3124.580000" data-stop="3127.099000">of every property, the text of every note,</span> <span class="audio-time caption" data-speaker="John" data-start="3127.100000" data-stop="3129.939000">the text of all the body paragraphs,</span> <span class="audio-time caption" data-speaker="John" data-start="3129.940000" data-stop="3132.499000">everything is in there—because all of</span> <span class="audio-time caption" data-speaker="John" data-start="3132.500000" data-stop="3135.939000">that data is now so nicely structured within the database,</span> <span class="audio-time caption" data-speaker="John" data-start="3135.940000" data-stop="3139.499000">Postgres has the ability to do vector search.</span> <span class="audio-time caption" data-speaker="John" data-start="3139.500000" data-stop="3141.419000">Anyone that's been playing</span> <span class="audio-time caption" data-speaker="John" data-start="3141.420000" data-stop="3143.939000">in the AI space knows about vector search.</span> <span class="audio-time caption" data-speaker="John" data-start="3143.940000" data-stop="3147.819000">When I use org-jw to reflect all entries</span> <span class="audio-time caption" data-speaker="John" data-start="3147.820000" data-stop="3150.539000">that have recently changed back into the</span> <span class="audio-time caption" data-speaker="John" data-start="3150.540000" data-stop="3154.779000">Postgres database, I also use an AI model</span> <span class="audio-time caption" data-speaker="John" data-start="3154.780000" data-stop="3158.739000">to calculate a vector embedding for every piece</span> <span class="audio-time caption" data-speaker="John" data-start="3158.740000" data-stop="3161.499000">of text that's related to every entry.</span> <span class="audio-time caption" data-speaker="John" data-start="3161.500000" data-stop="3165.699000">These get stored as vectors in Postgres,</span> <span class="audio-time caption" data-speaker="John" data-start="3165.700000" data-stop="3168.259000">so that later I can ask the database,</span> <span class="audio-time caption" data-speaker="John" data-start="3168.260000" data-stop="3172.139000">"Show me entries that are related to a leak</span> <span class="audio-time caption" data-speaker="John" data-start="3172.140000" data-stop="3173.299000">that I'm searching for</span> <span class="audio-time caption" data-speaker="John" data-start="3173.300000" data-stop="3175.939000">in my pool." It will search for</span> <span class="audio-time caption" data-speaker="John" data-start="3175.940000" data-stop="3178.139000">that semantically within the database,</span> <span class="audio-time caption" data-speaker="John" data-start="3178.140000" data-stop="3180.659000">and it will find me everything that is</span> <span class="audio-time caption" data-speaker="John" data-start="3180.660000" data-stop="3184.659000">in the area of pools and leaks and all of</span> <span class="audio-time caption" data-speaker="John" data-start="3184.660000" data-stop="3186.499000">that kind of thing. This is very effective.</span> <span class="audio-time caption" data-speaker="John" data-start="3186.500000" data-stop="3189.259000">I can do it on the command line</span> <span class="audio-time caption" data-speaker="John" data-start="3189.260000" data-stop="3191.099000">with <code>org-db-search</code>—that’s the name</span> <span class="audio-time caption" data-speaker="John" data-start="3191.100000" data-stop="3192.899000">of the command that I run to do this.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3192.000000">53:12</span> <strong>OpenClaw enables conversations with the data</strong></div><p></p><span class="audio-time caption" data-speaker="John" data-start="3192.900000" data-stop="3195.939000"><strong class="speaker-name">John:</strong> But I also taught OpenClaw how to use this tool.</span> <span class="audio-time caption" data-speaker="John" data-start="3195.940000" data-stop="3198.539000">So OpenClaw is an AI agent</span> <span class="audio-time caption" data-speaker="John" data-start="3198.540000" data-stop="3201.819000">that will do work on your behalf.</span> <span class="audio-time caption" data-speaker="John" data-start="3201.820000" data-stop="3204.339000">I have it linked up to a local LLM that I run,</span> <span class="audio-time caption" data-speaker="John" data-start="3204.340000" data-stop="3207.059000">and I get to talk to it over Discord.</span> <span class="audio-time caption" data-speaker="John" data-start="3207.060000" data-stop="3208.699000">It's really locked down—</span> <span class="audio-time caption" data-speaker="John" data-start="3208.700000" data-stop="3211.779000">I have it all bound within its own Linux microVM</span> <span class="audio-time caption" data-speaker="John" data-start="3211.780000" data-stop="3213.339000">so that it can't really do anything</span> <span class="audio-time caption" data-speaker="John" data-start="3213.340000" data-stop="3214.939000">but the few capabilities I've given it.</span> <span class="audio-time caption" data-speaker="John" data-start="3214.940000" data-stop="3216.459000">But what it means is that,</span> <span class="audio-time caption" data-speaker="John" data-start="3216.460000" data-stop="3219.739000">when I'm on the airplane, I can use my phone</span> <span class="audio-time caption" data-speaker="John" data-start="3219.740000" data-stop="3222.339000">and my WhatsApp or my Discord app, and</span> <span class="audio-time caption" data-speaker="John" data-start="3222.340000" data-stop="3226.139000">I can say, "What tasks do I have coming up</span> <span class="audio-time caption" data-speaker="John" data-start="3226.140000" data-stop="3227.299000">in the next week</span> <span class="audio-time caption" data-speaker="John" data-start="3227.300000" data-stop="3230.059000">that involve calling somebody?"</span> <span class="audio-time caption" data-speaker="John" data-start="3230.060000" data-stop="3233.779000">Then it can do both a full-text search,</span> <span class="audio-time caption" data-speaker="John" data-start="3233.780000" data-stop="3236.219000">a structural search for tasks,</span> <span class="audio-time caption" data-speaker="John" data-start="3236.220000" data-stop="3239.099000">and also a vector embedding search</span> <span class="audio-time caption" data-speaker="John" data-start="3239.100000" data-stop="3242.899000">to find similarity. So I could ask OpenClaw,</span> <span class="audio-time caption" data-speaker="John" data-start="3242.900000" data-stop="3245.219000">"Do I have anything coming up having to do</span> <span class="audio-time caption" data-speaker="John" data-start="3245.220000" data-stop="3246.419000">with Christmas ornaments?"</span> <span class="audio-time caption" data-speaker="John" data-start="3246.420000" data-stop="3248.979000">and it will find for me the items that deal</span> <span class="audio-time caption" data-speaker="John" data-start="3248.980000" data-stop="3249.979000">with Christmas ornaments.</span> <span class="audio-time caption" data-speaker="John" data-start="3249.980000" data-stop="3251.739000">What this has all done,</span> <span class="audio-time caption" data-speaker="John" data-start="3251.740000" data-stop="3253.979000">by starting with Org-mode and</span> <span class="audio-time caption" data-speaker="John" data-start="3253.980000" data-stop="3255.899000">then creating basically what</span> <span class="audio-time caption" data-speaker="John" data-start="3255.900000" data-stop="3256.819000">I call "strict Org-mode"</span> <span class="audio-time caption" data-speaker="John" data-start="3256.820000" data-stop="3258.979000">or "structured Org-mode," from</span> <span class="audio-time caption" data-speaker="John" data-start="3258.980000" data-stop="3260.459000">that creating a database, from</span> <span class="audio-time caption" data-speaker="John" data-start="3260.460000" data-stop="3263.219000">that creating these vector embeddings, and</span> <span class="audio-time caption" data-speaker="John" data-start="3263.220000" data-stop="3266.579000">then from that tying it into an AI agent, I</span> <span class="audio-time caption" data-speaker="John" data-start="3266.580000" data-stop="3269.899000">now have the ability to dialogue with my data.</span> <span class="audio-time caption" data-speaker="John" data-start="3269.900000" data-stop="3274.819000">I can ask my whole entire Org-mode sea of data</span> <span class="audio-time caption" data-speaker="John" data-start="3274.820000" data-stop="3277.840000">questions like, "What problems at work have</span> <span class="audio-time caption" data-speaker="John" data-start="3277.841000" data-stop="3279.819000">I not been paying much attention to lately?"</span> <span class="audio-time caption" data-speaker="John" data-start="3279.820000" data-stop="3281.548000">and it can give me an answer.</span> <span class="audio-time caption" data-speaker="John" data-start="3281.549000" data-stop="3284.539000">Then I can query that answer and refine it further.</span> <span class="audio-time caption" data-speaker="John" data-start="3284.540000" data-stop="3286.379000">I can say, "Well, do any of those have to do</span> <span class="audio-time caption" data-speaker="John" data-start="3286.380000" data-stop="3287.259000">with this project?" or,</span> <span class="audio-time caption" data-speaker="John" data-start="3287.260000" data-stop="3290.659000">"Do they seem like they're very high priority?"</span> <span class="audio-time caption" data-speaker="John" data-start="3290.660000" data-stop="3293.099000">I can keep going until I get</span> <span class="audio-time caption" data-speaker="John" data-start="3293.100000" data-stop="3295.179000">to a more refined set of items</span> <span class="audio-time caption" data-speaker="John" data-start="3295.180000" data-stop="3297.379000">that represent a focus for the day,</span> <span class="audio-time caption" data-speaker="John" data-start="3297.380000" data-stop="3299.099000">as an alternative to</span> <span class="audio-time caption" data-speaker="John" data-start="3299.100000" data-stop="3302.219000">using the scheduled dates</span> <span class="audio-time caption" data-speaker="John" data-start="3302.220000" data-stop="3303.899000">and the org-agenda reports.</span> <span class="audio-time caption" data-speaker="John" data-start="3303.900000" data-stop="3306.779000">But I also have an org-agenda report</span> <span class="audio-time caption" data-speaker="John" data-start="3306.780000" data-stop="3308.619000">which does a vector query.</span> <span class="audio-time caption" data-speaker="John" data-start="3308.620000" data-stop="3312.299000">They all tie together, so</span> <span class="audio-time caption" data-speaker="John" data-start="3312.300000" data-stop="3316.379000">I can do it from whatever direction. If I say,</span> <span class="audio-time caption" data-speaker="John" data-start="3316.380000" data-stop="3319.299000">here, "org-semantic-search," and</span> <span class="audio-time caption" data-speaker="John" data-start="3319.300000" data-stop="3322.659000">then say "go out for a coffee</span> <span class="audio-time caption" data-speaker="John" data-start="3322.660000" data-stop="3325.659000">with Karthik," what it will do</span> <span class="audio-time caption" data-speaker="John" data-start="3325.660000" data-stop="3329.539000">is run the org-db-search command-line tool</span> <span class="audio-time caption" data-speaker="John" data-start="3329.540000" data-stop="3336.199000">and then feed the data into an org-agenda query.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3336.200000" data-stop="3338.819000"><strong class="speaker-name">Sacha:</strong>  So I'm hearing: you've got your Org plain-text</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3338.820000" data-stop="3339.979000">data, you make sure</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3339.980000" data-stop="3341.819000">that it's all formatted nicely</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3341.820000" data-stop="3343.339000">using your normalization functions,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3343.340000" data-stop="3345.299000">you take that and put it into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3345.300000" data-stop="3348.059000">a structured PostgreSQL database,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3348.060000" data-stop="3349.219000">which then allows you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3349.220000" data-stop="3351.459000">to do a full-text search as well as vector search.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3351.460000" data-stop="3352.699000">Then you take that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3352.700000" data-stop="3355.459000">and you hook an AI into it through something</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3355.460000" data-stop="3356.499000">like OpenClaw,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3356.500000" data-stop="3358.579000">so then you can have conversations.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3358.580000" data-stop="3359.939000">Even when you're away from your computer,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3359.940000" data-stop="3362.499000">you can query it for stuff and do something</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3362.500000" data-stop="3366.059000">with the results. Even just the semantic search</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3366.060000" data-stop="3368.179000">is something I'm very interested in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3368.180000" data-stop="3370.019000">because it's hard to find things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3370.020000" data-stop="3371.699000">if you need exact word match,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3371.700000" data-stop="3374.299000">so this is great for being able</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3374.300000" data-stop="3376.129000">to find stuff that's related to something</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3376.130000" data-stop="3377.626000">without having to worry about making sure</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3377.627000" data-stop="3379.939000">you've got the right words in it.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="3379.940000" data-stop="3380.139000"><strong class="speaker-name">John:</strong>  Right.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="3380.140000" data-stop="3383.259000"><strong class="speaker-name">Karthik:</strong>  This is like five levels of crazy,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="3383.260000" data-stop="3385.359000">each building on another.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="3385.360000" data-stop="3387.979000"><strong class="speaker-name">John:</strong>  Yeah, it's all about making this data work for me.</span> <span class="audio-time caption" data-speaker="John" data-start="3387.980000" data-stop="3391.099000">I've spent all this time collecting it—how can</span> <span class="audio-time caption" data-speaker="John" data-start="3391.100000" data-stop="3392.259000">I make this data work for me?</span> <span class="audio-time caption" data-speaker="John" data-start="3392.260000" data-stop="3395.419000">I don't know why the CLI search is not working.</span> <span class="audio-time caption" data-speaker="John" data-start="3395.420000" data-stop="3396.939000">It might be some problem</span> <span class="audio-time caption" data-speaker="John" data-start="3396.940000" data-stop="3397.579000">with the local model.</span> <span class="audio-time caption" data-speaker="John" data-start="3397.580000" data-stop="3398.939000">So many changes.</span> <span class="audio-time caption" data-speaker="John" data-start="3398.940000" data-stop="3402.059000">So many. Yeah, it's the demo phenomenon.</span> <span class="audio-time caption" data-speaker="John" data-start="3402.060000" data-stop="3404.499000">Also, so many things change in my environment</span> <span class="audio-time caption" data-speaker="John" data-start="3404.500000" data-stop="3407.499000">so fast that, unless I use things constantly,</span> <span class="audio-time caption" data-speaker="John" data-start="3407.500000" data-stop="3409.819000">they easily break.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3409.000000">56:49</span> <strong>Avoid drift by using only one TODO system
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-56-54.200.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-56-54.200.jpg" alt="image from video 00:56:54.200" data-time="00:56:54.200"></a><span class="audio-time caption" data-speaker="Sacha" data-start="3409.820000" data-stop="3411.720000"><strong class="speaker-name">Sacha:</strong>  Which actually is an interesting thing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3411.721000" data-stop="3415.179000">that touches on the conversation that Karthik</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3415.180000" data-stop="3416.699000">and I were having before you joined.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3416.700000" data-stop="3420.699000">How do you keep the ideal of your tasks</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3420.700000" data-stop="3422.939000">or whatever synchronized with the reality</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3422.940000" data-stop="3425.539000">of your current focus, or the things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3425.540000" data-stop="3427.419000">that have broken or changed?</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="3427.420000" data-stop="3430.019000"><strong class="speaker-name">Karthik:</strong>  Yeah, it's the drift. I call it the drift problem,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="3430.020000" data-stop="3433.339000">where the state of your life—well, the portion</span> <span class="audio-time caption" data-speaker="Karthik" data-start="3433.340000" data-stop="3435.579000">of your life that you want to capture</span> <span class="audio-time caption" data-speaker="Karthik" data-start="3435.580000" data-stop="3436.459000">in this case</span> <span class="audio-time caption" data-speaker="Karthik" data-start="3436.460000" data-stop="3439.739000">in Org—has drifted from what's actually happening.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="3439.740000" data-stop="3442.219000">Then when you look at your agenda, you go, "No,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="3442.220000" data-stop="3444.339000">this is not relevant to me anymore.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="3444.340000" data-stop="3445.739000">The things that are bothering me right</span> <span class="audio-time caption" data-speaker="Karthik" data-start="3445.740000" data-stop="3446.899000">now are not here."</span> <span class="audio-time caption" data-speaker="Karthik" data-start="3446.900000" data-stop="3450.179000">So it's like the Venn diagrams—I mean,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="3450.180000" data-stop="3454.939000">the two blobs—the overlap is getting smaller</span> <span class="audio-time caption" data-speaker="Karthik" data-start="3454.940000" data-stop="3458.899000">and smaller. So is that a problem you have,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="3458.900000" data-stop="3460.879000">and if you do, how do you deal with it?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="3460.880000" data-stop="3463.099000"><strong class="speaker-name">John:</strong>  I deal with it by not using any other systems</span> <span class="audio-time caption" data-speaker="John" data-start="3463.100000" data-stop="3465.219000">but Org-mode. So you have to always be</span> <span class="audio-time caption" data-speaker="John" data-start="3465.220000" data-stop="3467.579000">in Org-mode, seeing that data somehow.</span> <span class="audio-time caption" data-speaker="John" data-start="3467.580000" data-stop="3471.419000">You have to just be interacting with it</span> <span class="audio-time caption" data-speaker="John" data-start="3471.420000" data-stop="3473.379000">to combat that drift constantly.</span> <span class="audio-time caption" data-speaker="John" data-start="3473.380000" data-stop="3477.139000">You can't have even two to-do lists. For me,</span> <span class="audio-time caption" data-speaker="John" data-start="3477.140000" data-stop="3478.819000">even just one other</span> <span class="audio-time caption" data-speaker="John" data-start="3478.820000" data-stop="3480.899000">to-do list makes the drift unmanageable.</span> <span class="audio-time caption" data-speaker="John" data-start="3480.900000" data-stop="3484.019000">So if somebody puts something for me on another</span> <span class="audio-time caption" data-speaker="John" data-start="3484.020000" data-stop="3486.299000">to-do list, I'll make an Org-mode task</span> <span class="audio-time caption" data-speaker="John" data-start="3486.300000" data-stop="3488.859000">and I'll put a link to that to-do list. It has</span> <span class="audio-time caption" data-speaker="John" data-start="3488.860000" data-stop="3491.539000">to be in Org-mode.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3491.540000" data-stop="3494.799000"><strong class="speaker-name">Sacha:</strong>  Do you sometimes find yourself— go ahead.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="3494.800000" data-stop="3497.659000"><strong class="speaker-name">Karthik:</strong>  What about the to-do list in your mind?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="3497.660000" data-stop="3499.539000"><strong class="speaker-name">John:</strong>  I don't keep a to-do list in my mind.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="3499.540000" data-stop="3501.600000"><strong class="speaker-name">Karthik:</strong>  You don't have a to-do list in your mind.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="3501.601000" data-stop="3503.219000"></span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3503.220000" data-stop="3505.779000"><strong class="speaker-name">Sacha:</strong>  I was just saying, as we saw earlier,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3505.780000" data-stop="3508.419000">if you do come across—if there's a thought</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3508.420000" data-stop="3510.619000">and it's not in your current review list</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3510.620000" data-stop="3513.419000">and it's not in your current agenda,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3513.420000" data-stop="3514.899000">your semantic search</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3514.900000" data-stop="3517.539000">and your org-ql will help you find</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3517.540000" data-stop="3521.419000">that thing relatively quickly, I think.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="3521.420000" data-stop="3524.939000"><strong class="speaker-name">John:</strong>  Yeah, if it's in the Org-mode file anywhere,</span> <span class="audio-time caption" data-speaker="John" data-start="3524.940000" data-stop="3527.619000">a combination of either ripgrep</span> <span class="audio-time caption" data-speaker="John" data-start="3527.620000" data-stop="3529.819000">or Postgres full-text search</span> <span class="audio-time caption" data-speaker="John" data-start="3529.820000" data-stop="3533.019000">or semantic search, there will be a way</span> <span class="audio-time caption" data-speaker="John" data-start="3533.020000" data-stop="3537.179000">to find it. Then if it's not in there,</span> <span class="audio-time caption" data-speaker="John" data-start="3537.180000" data-stop="3539.619000">I just use the capture interface to put it in there.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3539.000000">58:59</span> <strong>Capturing with Drafts on the Mac or Apple Watch</strong></div><p></p><span class="audio-time caption" data-speaker="John" data-start="3539.620000" data-stop="3540.699000"><strong class="speaker-name">John:</strong> Oh, by the way,</span> <span class="audio-time caption" data-speaker="John" data-start="3540.700000" data-stop="3543.259000">I also should mention how I capture.</span> <span class="audio-time caption" data-speaker="John" data-start="3543.260000" data-stop="3545.379000">I've been showing you Org-mode commands</span> <span class="audio-time caption" data-speaker="John" data-start="3545.380000" data-stop="3547.499000">to capture, but that's not actually how</span> <span class="audio-time caption" data-speaker="John" data-start="3547.500000" data-stop="3548.979000">I typically capture tasks.</span> <span class="audio-time caption" data-speaker="John" data-start="3548.980000" data-stop="3553.539000">I use the Drafts app on macOS, as I mentioned,</span> <span class="audio-time caption" data-speaker="John" data-start="3553.540000" data-stop="3558.099000">and I have it set up so that in the Drafts app,</span> <span class="audio-time caption" data-speaker="John" data-start="3558.100000" data-stop="3561.339000">if I hit C-c, it will write the item that</span> <span class="audio-time caption" data-speaker="John" data-start="3561.340000" data-stop="3563.579000">I captured in Drafts to a file</span> <span class="audio-time caption" data-speaker="John" data-start="3563.580000" data-stop="3567.179000">that Org-mode will turn into a task the next</span> <span class="audio-time caption" data-speaker="John" data-start="3567.180000" data-stop="3569.659000">time I run any agenda command. So</span> <span class="audio-time caption" data-speaker="John" data-start="3569.660000" data-stop="3571.899000">I have something that's the after-agenda,</span> <span class="audio-time caption" data-speaker="John" data-start="3571.900000" data-stop="3574.899000">the before-agenda setup hook.</span> <span class="audio-time caption" data-speaker="John" data-start="3574.900000" data-stop="3575.819000">Let me do that.</span> <span class="audio-time caption" data-speaker="John" data-start="3575.820000" data-stop="3577.179000">I'll go over to my Mac and I'll say,</span> <span class="audio-time caption" data-speaker="John" data-start="3577.180000" data-stop="3580.979000">"Send an email to Sacha." I'll then submit it.</span> <span class="audio-time caption" data-speaker="John" data-start="3580.980000" data-stop="3583.179000">It goes to iCloud Drive, gets synced</span> <span class="audio-time caption" data-speaker="John" data-start="3583.180000" data-stop="3584.059000">to all my machines.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-59-45.080.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-00-59-45.080.jpg" alt="image from video 00:59:45.080" data-time="00:59:45.080"></a><span class="audio-time caption" data-speaker="John" data-start="3584.060000" data-stop="3587.139000"><strong class="speaker-name">John:</strong> Now I'll regenerate my Org-mode agenda. And</span> <span class="audio-time caption" data-speaker="John" data-start="3587.140000" data-stop="3591.219000">now here it is—this fuchsia guy just came</span> <span class="audio-time caption" data-speaker="John" data-start="3591.220000" data-stop="3593.259000">in from the Mac Drafts app.</span> <span class="audio-time caption" data-speaker="John" data-start="3593.260000" data-stop="3595.699000">The Drafts app on</span> <span class="audio-time caption" data-speaker="John" data-start="3595.700000" data-stop="3598.019000">the Mac runs on my phone and it runs on my watch.</span> <span class="audio-time caption" data-speaker="John" data-start="3598.020000" data-stop="3602.339000">So what I do to create tasks is I tell my watch—</span> <span class="audio-time caption" data-speaker="John" data-start="3602.340000" data-stop="3607.819000">I just talk to Siri and I say, "Remind me</span> <span class="audio-time caption" data-speaker="John" data-start="3607.820000" data-stop="3609.179000">to do such-and-such."</span> <span class="audio-time caption" data-speaker="John" data-start="3609.180000" data-stop="3611.299000">Then the Drafts app knows</span> <span class="audio-time caption" data-speaker="John" data-start="3611.300000" data-stop="3612.659000">to automatically suck</span> <span class="audio-time caption" data-speaker="John" data-start="3612.660000" data-stop="3616.699000">in anything that's on my Reminders list, and</span> <span class="audio-time caption" data-speaker="John" data-start="3616.700000" data-stop="3618.259000">that ends up becoming something that's</span> <span class="audio-time caption" data-speaker="John" data-start="3618.260000" data-stop="3622.619000">auto-sucked into Org-mode. This way I use voice</span> <span class="audio-time caption" data-speaker="John" data-start="3622.620000" data-stop="3626.579000">to capture things as they happen wherever I am.</span> <span class="audio-time caption" data-speaker="John" data-start="3626.580000" data-stop="3627.819000">I don't have to have my computer.</span> <span class="audio-time caption" data-speaker="John" data-start="3627.820000" data-stop="3629.139000">I don't even have to have my phone.</span> <span class="audio-time caption" data-speaker="John" data-start="3629.140000" data-stop="3631.659000">I just need my watch at the very least,</span> <span class="audio-time caption" data-speaker="John" data-start="3631.660000" data-stop="3635.419000">and I'm capturing tasks by voice like this,</span> <span class="audio-time caption" data-speaker="John" data-start="3635.420000" data-stop="3636.899000">dozens of them a day.</span> <span class="audio-time caption" data-speaker="John" data-start="3636.900000" data-stop="3640.779000">This is probably the most frequent way that I do it.</span> <span class="audio-time caption" data-speaker="John" data-start="3640.780000" data-stop="3644.659000">Oh, and also, I taught OpenClaw how</span> <span class="audio-time caption" data-speaker="John" data-start="3644.660000" data-stop="3646.339000">to add stuff to Drafts.</span> <span class="audio-time caption" data-speaker="John" data-start="3646.340000" data-stop="3649.739000">So I can also ask OpenClaw via Discord, "Hey,</span> <span class="audio-time caption" data-speaker="John" data-start="3649.740000" data-stop="3652.899000">remind me to do such-and-such." But why do that?</span> <span class="audio-time caption" data-speaker="John" data-start="3652.900000" data-stop="3656.659000">I just did it as an alternate way. I prefer</span> <span class="audio-time caption" data-speaker="John" data-start="3656.660000" data-stop="3659.239000">to do it with my watch.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3659.240000" data-stop="3661.779000"><strong class="speaker-name">Sacha:</strong>  Yeah, just because you can.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3661.000000">1:01:01</span> <strong>A foot pedal makes speech-to-text even more convenient; whisperflow, handy</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3661.780000" data-stop="3662.419000"><strong class="speaker-name">Sacha:</strong>  As I was mentioning,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3662.420000" data-stop="3665.979000">voice computing—just speech-to-text—</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3665.980000" data-stop="3668.179000">is very interesting because it allows you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3668.180000" data-stop="3669.859000">to capture your thoughts so much faster</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3669.860000" data-stop="3672.299000">than typing. So I was wondering if you're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3672.300000" data-stop="3674.859000">using any of that in your drafts,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3674.860000" data-stop="3676.699000">not just for quick tasks</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3676.700000" data-stop="3678.019000">that you're capturing from your phone, but</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3678.020000" data-stop="3679.619000">when you're at your computer, are you using</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3679.620000" data-stop="3680.959000">that at all yet?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="3680.960000" data-stop="3683.939000"><strong class="speaker-name">John:</strong>  Yes. In fact, I am using it so much that</span> <span class="audio-time caption" data-speaker="John" data-start="3683.940000" data-stop="3686.959000">I bought a foot pedal for myself.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3686.960000" data-stop="3687.520000"><strong class="speaker-name">Sacha:</strong>  Yeah?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="3687.521000" data-stop="3689.939000"><strong class="speaker-name">John:</strong>  Yeah. I use two different apps.</span> <span class="audio-time caption" data-speaker="John" data-start="3689.940000" data-stop="3692.579000">I use one that's commercial called WhisperFlow</span> <span class="audio-time caption" data-speaker="John" data-start="3692.580000" data-stop="3696.859000">that sends your voice out to the internet</span> <span class="audio-time caption" data-speaker="John" data-start="3696.860000" data-stop="3699.259000">and uses their AI models.</span> <span class="audio-time caption" data-speaker="John" data-start="3699.260000" data-stop="3701.123000">First they transcribe it,</span> <span class="audio-time caption" data-speaker="John" data-start="3701.124000" data-stop="3702.637000">and then they process it—</span> <span class="audio-time caption" data-speaker="John" data-start="3702.638000" data-stop="3704.699000">they remove all the uhs and the ums</span> <span class="audio-time caption" data-speaker="John" data-start="3704.700000" data-stop="3706.059000">and they rewrite it into correct grammar</span> <span class="audio-time caption" data-speaker="John" data-start="3706.060000" data-stop="3707.379000">and all that kind of stuff.</span> <span class="audio-time caption" data-speaker="John" data-start="3707.380000" data-stop="3710.019000">That's extremely fast, so usually</span> <span class="audio-time caption" data-speaker="John" data-start="3710.020000" data-stop="3712.059000">when I'm talking to Claude and prompting it,</span> <span class="audio-time caption" data-speaker="John" data-start="3712.060000" data-stop="3714.939000">I'm prompting it by voice using my foot pedal.</span> <span class="audio-time caption" data-speaker="John" data-start="3714.940000" data-stop="3717.179000">That's the right pedal.</span> <span class="audio-time caption" data-speaker="John" data-start="3717.180000" data-stop="3719.019000">The left pedal uses a</span> <span class="audio-time caption" data-speaker="John" data-start="3719.020000" data-stop="3721.219000">free open-source app called Handy.</span> <span class="audio-time caption" data-speaker="John" data-start="3721.220000" data-stop="3725.619000">Handy uses a local transcription model, which</span> <span class="audio-time caption" data-speaker="John" data-start="3725.620000" data-stop="3727.059000">I use Whisper Transcribe for,</span> <span class="audio-time caption" data-speaker="John" data-start="3727.060000" data-stop="3729.259000">because it's super fast and super accurate.</span> <span class="audio-time caption" data-speaker="John" data-start="3729.260000" data-stop="3734.379000">Then I use Qwen 3.5 9-billion-parameter as my local</span> <span class="audio-time caption" data-speaker="John" data-start="3734.380000" data-stop="3737.619000">LLM model to post-process the transcription,</span> <span class="audio-time caption" data-speaker="John" data-start="3737.620000" data-stop="3739.539000">so that it does the same things</span> <span class="audio-time caption" data-speaker="John" data-start="3739.540000" data-stop="3740.419000">that WhisperFlow does.</span> <span class="audio-time caption" data-speaker="John" data-start="3740.420000" data-stop="3743.179000">It can accomplish everything WhisperFlow does;</span> <span class="audio-time caption" data-speaker="John" data-start="3743.180000" data-stop="3745.819000">it just takes about ten times as long to do it.</span> <span class="audio-time caption" data-speaker="John" data-start="3745.820000" data-stop="3748.899000">Sometimes I don't like that delay in the flow.</span> <span class="audio-time caption" data-speaker="John" data-start="3748.900000" data-stop="3751.299000">But it's also entirely open source</span> <span class="audio-time caption" data-speaker="John" data-start="3751.300000" data-stop="3754.299000">and entirely local, so I know</span> <span class="audio-time caption" data-speaker="John" data-start="3754.300000" data-stop="3756.379000">that whatever I'm transcribing, none of</span> <span class="audio-time caption" data-speaker="John" data-start="3756.380000" data-stop="3757.379000">that data is going out</span> <span class="audio-time caption" data-speaker="John" data-start="3757.380000" data-stop="3761.939000">to any third-party services.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3761.940000" data-stop="3763.600000"><strong class="speaker-name">Sacha:</strong>  Fantastic. Okay, so that gets you—</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3763.601000" data-stop="3765.659000">when you're brain-dumping a whole bunch</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3765.660000" data-stop="3767.259000">of things into a prompt for an AI</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3767.260000" data-stop="3770.019000">or into your notes before a meeting or whatever,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3770.020000" data-stop="3773.299000">you can just blurt a lot of information</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3773.300000" data-stop="3775.819000">and the AI will clean it up nicely</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3775.820000" data-stop="3777.339000">and make it more presentable.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="3777.340000" data-stop="3780.699000"><strong class="speaker-name">John:</strong>  Let's do this. "Send an email to Sacha."</span> <span class="audio-time caption" data-speaker="John" data-start="3780.700000" data-stop="3784.379000">Now, it just finished transcribing.</span> <span class="audio-time caption" data-speaker="John" data-start="3784.380000" data-stop="3786.819000">Transcribing only takes like half a second,</span> <span class="audio-time caption" data-speaker="John" data-start="3786.820000" data-stop="3788.379000">but now it's processing.</span> <span class="audio-time caption" data-speaker="John" data-start="3788.380000" data-stop="3790.579000">It may take longer the first time because</span> <span class="audio-time caption" data-speaker="John" data-start="3790.580000" data-stop="3792.739000">that 9-billion-parameter model may not be</span> <span class="audio-time caption" data-speaker="John" data-start="3792.740000" data-stop="3794.259000">currently loaded—I had</span> <span class="audio-time caption" data-speaker="John" data-start="3794.260000" data-stop="3797.339000">to reboot my machine recently.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="3797.340000" data-stop="3799.759000"><strong class="speaker-name">Karthik:</strong>  Sacha, you're going to get so many emails.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3799.760000" data-stop="3802.680000"><strong class="speaker-name">Sacha:</strong>  I don't know, it's fine. It's fine.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3802.681000" data-stop="3808.719000">I get emails sometimes. Go ahead.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="3808.720000" data-stop="3811.219000"><strong class="speaker-name">John:</strong>  Oh, there we go. So it said, "Send an email</span> <span class="audio-time caption" data-speaker="John" data-start="3811.220000" data-stop="3813.939000">to Sacha." It nicely added a period at the end</span> <span class="audio-time caption" data-speaker="John" data-start="3813.940000" data-stop="3815.259000">of it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3815.260000" data-stop="3816.500000"><strong class="speaker-name">Sacha:</strong>  Yeah.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="3816.501000" data-stop="3817.739000"><strong class="speaker-name">John:</strong>  Let's see. Now that it's warmed up,</span> <span class="audio-time caption" data-speaker="John" data-start="3817.740000" data-stop="3818.739000">let's do a longer one.</span> <span class="audio-time caption" data-speaker="John" data-start="3819.560000" data-stop="3822.739000">"This email should say something about Org-mode</span> <span class="audio-time caption" data-speaker="John" data-start="3822.740000" data-stop="3824.819000">and it should be related to the conversation</span> <span class="audio-time caption" data-speaker="John" data-start="3824.820000" data-stop="3829.399000">that we all had on our Zoom call together."</span> <span class="audio-time caption" data-speaker="John" data-start="3829.400000" data-stop="3830.299000">You could hear that I had—</span> <span class="audio-time caption" data-speaker="John" data-start="3830.300000" data-stop="3831.579000">I don't know if you heard me, but</span> <span class="audio-time caption" data-speaker="John" data-start="3831.580000" data-stop="3833.480000">I had some uhs and ums in that.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-03-54.960.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-03-54.960.jpg" alt="image from video 01:03:54.960" data-time="01:03:54.960"></a><span class="audio-time caption" data-speaker="John" data-start="3833.481000" data-stop="3835.960000"><strong class="speaker-name">John:</strong> But this is what it came out with.</span> <span class="audio-time caption" data-speaker="John" data-start="3835.961000" data-stop="3837.379000">The only thing it didn't know how</span> <span class="audio-time caption" data-speaker="John" data-start="3837.380000" data-stop="3840.819000">to do was put a hyphen between "Org" and "mode."</span> <span class="audio-time caption" data-speaker="John" data-start="3840.820000" data-stop="3841.939000">I have complete control</span> <span class="audio-time caption" data-speaker="John" data-start="3841.940000" data-stop="3844.579000">with Handy over the post-processing prompt.</span> <span class="audio-time caption" data-speaker="John" data-start="3844.580000" data-stop="3846.819000">In the post-processing prompt,</span> <span class="audio-time caption" data-speaker="John" data-start="3846.820000" data-stop="3848.699000">I can give it an Emacs section</span> <span class="audio-time caption" data-speaker="John" data-start="3848.700000" data-stop="3851.579000">and tell it about vocabulary that's special</span> <span class="audio-time caption" data-speaker="John" data-start="3851.580000" data-stop="3853.299000">to Emacs that I want it to be aware of.</span> <span class="audio-time caption" data-speaker="John" data-start="3853.300000" data-stop="3856.779000">I've done that for all of my work topics, but</span> <span class="audio-time caption" data-speaker="John" data-start="3856.780000" data-stop="3860.039000">I haven't done it for the Emacs topics.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3860.040000" data-stop="3861.459000"><strong class="speaker-name">Sacha:</strong>  I have something similar where</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3861.460000" data-stop="3862.979000">I do the post-processing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3862.980000" data-stop="3865.259000">of the speech-recognition output in Emacs,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3865.260000" data-stop="3867.699000">so I can just run a list of functions on it,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3867.700000" data-stop="3869.739000">including fixing common errors</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3869.740000" data-stop="3872.579000">and processing speech commands.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3872.580000" data-stop="3875.719000">So I'm gradually playing around with that too.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="3875.720000" data-stop="3876.980000"><strong class="speaker-name">John:</strong>  It's invaluable.</span> <span class="audio-time caption" data-speaker="John" data-start="3876.981000" data-stop="3878.979000">The other nice thing about voice transcription</span> <span class="audio-time caption" data-speaker="John" data-start="3878.980000" data-stop="3881.619000">is that you end up saying more than you type,</span> <span class="audio-time caption" data-speaker="John" data-start="3881.620000" data-stop="3884.059000">because I think we just naturally economize—</span> <span class="audio-time caption" data-speaker="John" data-start="3884.060000" data-stop="3886.559000">typing takes more energy.</span> <span class="audio-time caption" data-speaker="John" data-start="3886.560000" data-stop="3888.839000">When I talk, I'm just a blabbermouth</span> <span class="audio-time caption" data-speaker="John" data-start="3888.840000" data-stop="3891.000000">and I end up giving all this information</span> <span class="audio-time caption" data-speaker="John" data-start="3891.001000" data-stop="3893.260000">that ends up being better for AI.</span> <span class="audio-time caption" data-speaker="John" data-start="3893.261000" data-stop="3894.499000">In fact, they've shown that</span> <span class="audio-time caption" data-speaker="John" data-start="3894.500000" data-stop="3897.379000">if you just add 40 more periods at the end of your sentence,</span> <span class="audio-time caption" data-speaker="John" data-start="3897.380000" data-stop="3899.779000">that improves the quality of your response,</span> <span class="audio-time caption" data-speaker="John" data-start="3899.780000" data-stop="3903.659000">because all of those additional tokens cause attention</span> <span class="audio-time caption" data-speaker="John" data-start="3903.660000" data-stop="3905.979000">to be recomputed for the existing tokens</span> <span class="audio-time caption" data-speaker="John" data-start="3905.980000" data-stop="3907.539000">many, many more times,</span> <span class="audio-time caption" data-speaker="John" data-start="3907.540000" data-stop="3911.379000">and that computation helps it find its way through</span> <span class="audio-time caption" data-speaker="John" data-start="3911.380000" data-stop="3913.619000">the feed-forward networks more accurately.</span> <span class="audio-time caption" data-speaker="John" data-start="3913.620000" data-stop="3917.779000">So more text is actually better, especially</span> <span class="audio-time caption" data-speaker="John" data-start="3917.780000" data-stop="3920.099000">when you're only talking about maybe 20% longer</span> <span class="audio-time caption" data-speaker="John" data-start="3920.100000" data-stop="3922.569000">due to voice transcription.</span> <span class="audio-time caption" data-speaker="John" data-start="3922.570000" data-stop="3925.640000">So I prefer to talk to AIs through voice.</span> <span class="audio-time caption" data-speaker="John" data-start="3925.641000" data-stop="3929.221000">What I do is I like to create—let's see here—</span> <span class="audio-time caption" data-speaker="John" data-start="3929.222000" data-stop="3931.779000">I like to create the body of the TODO</span> <span class="audio-time caption" data-speaker="John" data-start="3931.780000" data-stop="3934.379000">using voice transcription, and then after that</span> <span class="audio-time caption" data-speaker="John" data-start="3934.380000" data-stop="3936.899000">I like to create the title using AI as well.</span> <span class="audio-time caption" data-speaker="John" data-start="3936.900000" data-stop="3939.579000">Now that it's warmed up,</span> <span class="audio-time caption" data-speaker="John" data-start="3939.580000" data-stop="3942.360000">it should not take quite so long.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-05-42.360.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-05-42.360.jpg" alt="image from video 01:05:42.360" data-time="01:05:42.360"></a><span class="audio-time caption" data-speaker="John" data-start="3942.361000" data-stop="3943.619000"><strong class="speaker-name">John:</strong> There we go.</span> <span class="audio-time caption" data-speaker="John" data-start="3943.620000" data-stop="3946.059000">We will just say to Qwen—</span> <span class="audio-time caption" data-speaker="John" data-start="3946.060000" data-stop="3950.299000">that was Qwen 9B giving me the transcription—</span> <span class="audio-time caption" data-speaker="John" data-start="3950.300000" data-stop="3953.179000">now we're going to use Qwen 27B</span> <span class="audio-time caption" data-speaker="John" data-start="3953.180000" data-stop="3955.539000">to give me the title.</span> <span class="audio-time caption" data-speaker="John" data-start="3955.540000" data-stop="3958.859000">It may not be warmed up as well. I try</span> <span class="audio-time caption" data-speaker="John" data-start="3958.860000" data-stop="3961.099000">to keep four different models always loaded</span> <span class="audio-time caption" data-speaker="John" data-start="3961.100000" data-stop="3963.699000">so that they'll be quick to respond, but as</span> <span class="audio-time caption" data-speaker="John" data-start="3963.700000" data-stop="3967.259000">I said, I had to reboot the machine recently.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3967.260000" data-stop="3971.059000"><strong class="speaker-name">Sacha:</strong>  All right. So you've got your outline for focus</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3971.060000" data-stop="3974.040000">and your home, they have the blocks in it,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3974.041000" data-stop="3978.779000">you can use that to drill down into whatever subset of your tasks.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3978.780000" data-stop="3980.819000">You also have your agenda with the reviews.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3980.820000" data-stop="3982.960000">You can go into any of those tasks,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3982.961000" data-stop="3988.040000">use AI to fill out the text based on your speech recognition,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3988.041000" data-stop="3991.160000">or you can send it to Claude</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3991.161000" data-stop="3999.759000">or other AI for executing the task, for all that stuff.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3999.000000">1:06:39</span> <strong>Looking to the future
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-06-53.281.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-06-53.281.jpg" alt="image from video 01:06:53.281" data-time="01:06:53.281"></a><span class="audio-time caption" data-speaker="Sacha" data-start="3999.760000" data-stop="4002.819000"><strong class="speaker-name">Sacha:</strong>  If you're looking three to six months out,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4002.820000" data-stop="4004.400000">your workflow is pretty polished,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4004.401000" data-stop="4005.840000">but where do you want to take it?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4005.841000" data-stop="4007.680000">What are your future needs that you'd like</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4007.681000" data-stop="4009.240000">to work towards?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="4009.241000" data-stop="4010.640000"><strong class="speaker-name">John:</strong>  I just need to be able</span> <span class="audio-time caption" data-speaker="John" data-start="4010.641000" data-stop="4015.479000">to get these big old long lists shorter.</span> <span class="audio-time caption" data-speaker="John" data-start="4015.480000" data-stop="4016.819000">That's all I want to say.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4016.820000" data-stop="4018.720000"><strong class="speaker-name">Sacha:</strong>  Yeah, that is a getting-things-done thing,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4018.721000" data-stop="4021.919000">not a tooling thing, right?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="4021.920000" data-stop="4023.960000"><strong class="speaker-name">John:</strong>  <p>
Yeah. <b>Atomic Habits</b>, I think, helped me more</p>
</span> <span class="audio-time caption" data-speaker="John" data-start="4023.961000" data-stop="4027.360000">than anything else in the way that I break up tasks.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4027.000000">1:07:07</span> <strong>John is running local models on a Mac Studio</strong></div><p></p><span class="audio-time caption" data-speaker="John" data-start="4027.361000" data-stop="4029.899000"><strong class="speaker-name">John:</strong> I'll give you another AI example here.</span> <span class="audio-time caption" data-speaker="John" data-start="4029.900000" data-stop="4035.459000">For some reason, Qwen is not working.</span> <span class="audio-time caption" data-speaker="John" data-start="4035.460000" data-stop="4045.039000">Let me check my OMLX— I use OMLX these days for running.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="4045.040000" data-stop="4047.499000"><strong class="speaker-name">Karthik:</strong>  So you're running all these local models on a</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4047.500000" data-stop="4048.059000">Mac Studio?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="4048.880000" data-stop="4050.580000"><strong class="speaker-name">John:</strong>  Yes.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="4050.581000" data-stop="4051.980000"><strong class="speaker-name">Karthik:</strong>  Okay.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="4051.981000" data-stop="4054.379000"><strong class="speaker-name">John:</strong>  Oh, it looks like OMLX might not be running.</span> <span class="audio-time caption" data-speaker="John" data-start="4054.380000" data-stop="4059.579000">No, I have it.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="4059.580000" data-stop="4061.859000"><strong class="speaker-name">Karthik:</strong>  Okay. In the meantime,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4061.860000" data-stop="4066.739000">I had a question about the whole database mirror</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4066.740000" data-stop="4071.879000">of your corpus.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="4071.880000" data-stop="4076.240000"><strong class="speaker-name">John:</strong>  Okay, sorry, one sec.</span> <span class="audio-time caption" data-speaker="John" data-start="4076.241000" data-stop="4078.819000">The reason it wasn't working is</span> <span class="audio-time caption" data-speaker="John" data-start="4078.820000" data-stop="4084.539000">because I'm also working on another AI-powered</span> <span class="audio-time caption" data-speaker="John" data-start="4084.540000" data-stop="4085.899000">app for doing stock analysis,</span> <span class="audio-time caption" data-speaker="John" data-start="4085.900000" data-stop="4088.059000">and it was taking over the port.</span> <span class="audio-time caption" data-speaker="John" data-start="4088.060000" data-stop="4092.279000">So what was your question?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4092.000000">1:08:12</span> <strong>Using AI to facilitate getting data into PostgreSQL; structural limitations?</strong></div><p></p><span class="audio-time caption" data-speaker="Karthik" data-start="4092.280000" data-stop="4096.419000"><strong class="speaker-name">Karthik:</strong>  Yeah, so the question was: you have a mirror</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4096.420000" data-stop="4101.139000">of your Org corpus in Postgres, right?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4101.140000" data-stop="4104.579000">I was thinking, one of the reasons</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4104.580000" data-stop="4107.059000">that people like Org-mode is</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4107.060000" data-stop="4110.579000">because it's easier to work with as text,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4110.580000" data-stop="4112.379000">but also because it's flexible.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4112.380000" data-stop="4115.499000">So you can set up whatever system you want</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4115.500000" data-stop="4119.059000">corresponding to whatever schema in the database.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4119.060000" data-stop="4120.819000">You can also change it easily</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4120.820000" data-stop="4122.979000">because it's just text, right?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4122.980000" data-stop="4128.259000">But your Org subset specification,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4128.260000" data-stop="4131.979000">by your own admission, is rigid, right?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4131.980000" data-stop="4133.619000">You've settled on it for now,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4133.620000" data-stop="4136.699000">and that's why you can have a database that's</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4136.700000" data-stop="4138.459000">like this with a one-to-one connection.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4138.460000" data-stop="4140.779000">What happens if you change something?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4140.780000" data-stop="4142.859000">Like if you change what a category means</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4142.860000" data-stop="4145.899000">or if you add more things, you have to</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4145.900000" data-stop="4149.059000">then update all the tables in the database</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4149.060000" data-stop="4150.379000">and update the schema. You have</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4150.380000" data-stop="4152.939000">to do a migration of the database.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="4152.940000" data-stop="4154.459000"><strong class="speaker-name">John:</strong>  Yeah, but I just have AI do that for me.</span> <span class="audio-time caption" data-speaker="John" data-start="4154.460000" data-stop="4156.299000">I didn't create a schema.</span> <span class="audio-time caption" data-speaker="John" data-start="4156.300000" data-stop="4157.899000">I didn't even create the code</span> <span class="audio-time caption" data-speaker="John" data-start="4157.900000" data-stop="4159.659000">that did the Postgres migration.</span> <span class="audio-time caption" data-speaker="John" data-start="4159.660000" data-stop="4161.619000">That was all written for me.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="4161.620000" data-stop="4164.459000"><strong class="speaker-name">Karthik:</strong>  I suspected that, yeah,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4164.460000" data-stop="4165.859000">that's probably what you do.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4165.860000" data-stop="4168.219000">You don't worry about it. That is neat,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4168.220000" data-stop="4172.099000">the idea that you can have all the flexibility</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4172.100000" data-stop="4176.059000">of Org-mode—flexibility to change things,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4176.060000" data-stop="4179.739000">change the system as your needs change—and</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4179.740000" data-stop="4183.459000">then also have the database do all the things it</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4183.460000" data-stop="4187.099000">does, like very fast search, semantic search.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4187.100000" data-stop="4188.499000">You get all of that for free,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4188.500000" data-stop="4190.459000">if you have someone who can go</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4190.460000" data-stop="4191.659000">and change the database</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4191.660000" data-stop="4193.980000">when you change your Org system,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4193.981000" data-stop="4195.779000">if you have someone who can do that for you.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4195.780000" data-stop="4198.539000"><strong class="speaker-name">Sacha:</strong>  It actually prompts me to think of this question</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4198.540000" data-stop="4200.939000">I had about stuffing the Org entries</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4200.940000" data-stop="4203.179000">into the database. Let's say, for example,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4203.180000" data-stop="4203.899000">you have an Org tree</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4203.900000" data-stop="4205.779000">and you have sub-entries within it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4205.780000" data-stop="4207.099000">that you also want to be able to work</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4207.100000" data-stop="4208.699000">with on a more granular basis.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4208.700000" data-stop="4218.339000">If you have subheadings, how do you like</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4218.340000" data-stop="4219.840000">to put it in your database?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4219.841000" data-stop="4221.360000">Do you have a copy of everything,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4221.361000" data-stop="4224.899000">and then each sub-entry has its own entry as well,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4224.900000" data-stop="4226.539000">and then each subheading under</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4226.540000" data-stop="4228.859000">that has its own row in the database?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4228.860000" data-stop="4230.539000">Or are you only working</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4230.540000" data-stop="4232.779000">with the most granular ones?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="4232.780000" data-stop="4234.600000"><strong class="speaker-name">John:</strong>  I don't even know, actually.</span> <span class="audio-time caption" data-speaker="John" data-start="4234.601000" data-stop="4236.899000"></span> <span class="audio-time caption" data-speaker="John" data-start="4236.900000" data-stop="4240.379000">how the AI decided to organize it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4240.380000" data-stop="4242.859000"><strong class="speaker-name">Sacha:</strong>  Okay, yeah. So basically, when you do a search,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4242.860000" data-stop="4245.539000">for example, can you find something where the keywords are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4245.540000" data-stop="4249.059000">in multiple subtrees of a larger entry?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="4249.060000" data-stop="4253.259000"><strong class="speaker-name">John:</strong>  I could do a join and find that information,</span> <span class="audio-time caption" data-speaker="John" data-start="4253.260000" data-stop="4256.600000">because every entry knows what its parent entry is,</span> <span class="audio-time caption" data-speaker="John" data-start="4256.601000" data-stop="4258.980000">and it could find out what the keywords for those parents</span> <span class="audio-time caption" data-speaker="John" data-start="4258.981000" data-stop="4264.039000">and for any siblings would be as well.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4264.040000" data-stop="4264.639000"><strong class="speaker-name">Sacha:</strong>  Interesting.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4264.000000">1:11:04</span> <strong>Habits are better than goals</strong></div><p></p><span class="audio-time caption" data-speaker="John" data-start="4264.640000" data-stop="4266.020000"><strong class="speaker-name">John:</strong>  All the data is there.</span> <span class="audio-time caption" data-speaker="John" data-start="4266.021000" data-stop="4267.924000">I was going to mention, by the way,</span> <span class="audio-time caption" data-speaker="John" data-start="4267.925000" data-stop="4272.299000">that I was talking about <b>Atomic Habits</b> and</span> <span class="audio-time caption" data-speaker="John" data-start="4272.300000" data-stop="4275.779000">how much that has affected the way</span> <span class="audio-time caption" data-speaker="John" data-start="4275.780000" data-stop="4278.019000">I break tasks down. I try to get them</span> <span class="audio-time caption" data-speaker="John" data-start="4278.020000" data-stop="4279.619000">to be smaller, and I also try</span> <span class="audio-time caption" data-speaker="John" data-start="4279.620000" data-stop="4282.379000">to rely more on habits than on goals</span> <span class="audio-time caption" data-speaker="John" data-start="4282.380000" data-stop="4284.399000">to accomplish things.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4284.000000">1:11:24</span> <strong>Breaking down tasks with a large language model
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-11-33.000.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-11-33.000.jpg" alt="image from video 01:11:33.000" data-time="01:11:33.000"></a><span class="audio-time caption" data-speaker="John" data-start="4284.400000" data-stop="4285.339000"><strong class="speaker-name">John:</strong> So another thing that</span> <span class="audio-time caption" data-speaker="John" data-start="4285.340000" data-stop="4288.266000">I built up in Org-mode using gptel is—</span> <span class="audio-time caption" data-speaker="John" data-start="4288.267000" data-stop="4292.168000">let me find an entry that's long enough for this to work.</span> <span class="audio-time caption" data-speaker="John" data-start="4292.169000" data-stop="4294.299000">Okay, so here we have a relatively long entry.</span> <span class="audio-time caption" data-speaker="John" data-start="4294.300000" data-stop="4295.499000">It's a note here,</span> <span class="audio-time caption" data-speaker="John" data-start="4295.500000" data-stop="4299.739000">and it's about bridging non-switching ports on</span> <span class="audio-time caption" data-speaker="John" data-start="4299.740000" data-stop="4301.008000">an OPNsense router.</span> <span class="audio-time caption" data-speaker="John" data-start="4301.009000" data-stop="4304.219000">Let's say that this was something I actually had to do now.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-11-46.240.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-11-46.240.jpg" alt="image from video 01:11:46.240" data-time="01:11:46.240"></a><span class="audio-time caption" data-speaker="John" data-start="4304.220000" data-stop="4308.939000"><strong class="speaker-name">John:</strong> I have this C-x c prefix that</span> <span class="audio-time caption" data-speaker="John" data-start="4308.940000" data-stop="4312.099000">I use for talking to AI. One of the things</span> <span class="audio-time caption" data-speaker="John" data-start="4312.100000" data-stop="4315.899000">that it can do is called a "task breakdown." So</span> <span class="audio-time caption" data-speaker="John" data-start="4315.900000" data-stop="4320.599000">I do C-x c, and there are two of them:</span> <span class="audio-time caption" data-speaker="John" data-start="4320.600000" data-stop="4322.280000">capital B and capital T.</span> <span class="audio-time caption" data-speaker="John" data-start="4322.281000" data-stop="4324.624000">Capital B is designed to take something</span> <span class="audio-time caption" data-speaker="John" data-start="4324.625000" data-stop="4325.739000">that is already a task</span> <span class="audio-time caption" data-speaker="John" data-start="4325.740000" data-stop="4329.219000">and identify what the component tasks would be,</span> <span class="audio-time caption" data-speaker="John" data-start="4329.220000" data-stop="4331.059000">probably, that need to be done and</span> <span class="audio-time caption" data-speaker="John" data-start="4331.060000" data-stop="4333.439000">in what order to get this thing done.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4333.000000">1:12:13</span> <strong>Inferring tasks with a large language model</strong></div><p></p><span class="audio-time caption" data-speaker="John" data-start="4333.440000" data-stop="4336.580000"><strong class="speaker-name">John:</strong> Capital T is "you've just got a sea of text—</span> <span class="audio-time caption" data-speaker="John" data-start="4336.581000" data-stop="4339.699000">infer the tasks that are implied by</span> <span class="audio-time caption" data-speaker="John" data-start="4339.700000" data-stop="4341.779000">that text." I wrote that one</span> <span class="audio-time caption" data-speaker="John" data-start="4341.780000" data-stop="4342.539000">because sometimes</span> <span class="audio-time caption" data-speaker="John" data-start="4342.540000" data-stop="4344.699000">when you use these voice transcriptions</span> <span class="audio-time caption" data-speaker="John" data-start="4344.700000" data-stop="4347.299000">of meetings, all I have is the transcript, and</span> <span class="audio-time caption" data-speaker="John" data-start="4347.300000" data-stop="4348.379000">I want to know, well,</span> <span class="audio-time caption" data-speaker="John" data-start="4348.380000" data-stop="4350.171000">what were the action items?</span> <span class="audio-time caption" data-speaker="John" data-start="4350.172000" data-stop="4351.259000">So I wrote "infer tasks"</span> <span class="audio-time caption" data-speaker="John" data-start="4351.260000" data-stop="4352.619000">to get the action items.</span> <span class="audio-time caption" data-speaker="John" data-start="4352.620000" data-stop="4353.659000">Let's infer the tasks</span> <span class="audio-time caption" data-speaker="John" data-start="4353.660000" data-stop="4358.579000">out of this OPNsense router. So I will run that.</span> <span class="audio-time caption" data-speaker="John" data-start="4358.580000" data-stop="4361.659000">I'm using now the Claude Sonnet model—</span> <span class="audio-time caption" data-speaker="John" data-start="4361.660000" data-stop="4363.779000">I think I'm using the Claude Sonnet model.</span> <span class="audio-time caption" data-speaker="John" data-start="4363.780000" data-stop="4367.159000">We're about to find out.</span> <span class="audio-time caption" data-speaker="John" data-start="4367.160000" data-stop="4371.979000">Let me actually see which model that uses.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-12-52.480.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-12-52.480.jpg" alt="image from video 01:12:52.480" data-time="01:12:52.480"></a><span class="audio-time caption" data-speaker="John" data-start="4371.980000" data-stop="4376.739000"><strong class="speaker-name">John:</strong> So that uses the "infer tasks" preset.</span> <span class="audio-time caption" data-speaker="John" data-start="4376.740000" data-stop="4379.059000">The infer tasks—oh yeah,</span> <span class="audio-time caption" data-speaker="John" data-start="4379.060000" data-stop="4389.299000">it uses the Sonnet model. I do not know—oh,</span> <span class="audio-time caption" data-speaker="John" data-start="4389.300000" data-stop="4391.320000">maybe I have to block out the text.</span> <span class="audio-time caption" data-speaker="John" data-start="4391.321000" data-stop="4397.819000">I mean, select the region. There we go.</span> <span class="audio-time caption" data-speaker="John" data-start="4397.820000" data-stop="4399.139000">So what that did—you know,</span> <span class="audio-time caption" data-speaker="John" data-start="4399.140000" data-stop="4404.939000">for some reason Claude was changed recently</span> <span class="audio-time caption" data-speaker="John" data-start="4404.940000" data-stop="4410.499000">and it does not work for these types of tasks anymore.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-13-31.680.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-13-31.680.jpg" alt="image from video 01:13:31.680" data-time="01:13:31.680"></a><span class="audio-time caption" data-speaker="John" data-start="4410.500000" data-stop="4414.480000"><strong class="speaker-name">John:</strong> "No actionable tasks identified in this text."</span> <span class="audio-time caption" data-speaker="John" data-start="4414.481000" data-stop="4416.640000">Let's go somewhere else.</span> <span class="audio-time caption" data-speaker="John" data-start="4416.641000" data-stop="4422.200000">Let's go to a work meeting.</span> <span class="audio-time caption" data-speaker="John" data-start="4422.201000" data-stop="4426.159000">This is my directory that has all the meetings in it.</span> <span class="audio-time caption" data-speaker="John" data-start="4426.160000" data-stop="4429.840000">Let's find one that has a transcript.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-13-49.841.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-13-49.841.jpg" alt="image from video 01:13:49.841" data-time="01:13:49.841"></a><span class="audio-time caption" data-speaker="John" data-start="4429.941000" data-stop="4432.159000"><strong class="speaker-name">John:</strong> This one has a transcript. So we're just going</span> <span class="audio-time caption" data-speaker="John" data-start="4432.160000" data-stop="4434.399000">to select the whole transcript,</span> <span class="audio-time caption" data-speaker="John" data-start="4434.400000" data-stop="4439.140000">and the transcript got sent to Claude.</span> <span class="audio-time caption" data-speaker="John" data-start="4439.141000" data-stop="4443.340000">We'll see what it comes up with.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4443.341000" data-stop="4448.719000"><strong class="speaker-name">Sacha:</strong>  All right. So AI help for identifying the tasks</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4448.720000" data-stop="4451.439000">and also asking you questions, I guess,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4451.440000" data-stop="4453.079000">to break down tasks.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="4453.080000" data-stop="4455.559000"><strong class="speaker-name">John:</strong>  It doesn't ask me questions.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-14-17.200.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-14-17.200.jpg" alt="image from video 01:14:17.200" data-time="01:14:17.200"></a><span class="audio-time caption" data-speaker="John" data-start="4455.560000" data-stop="4458.039000"><strong class="speaker-name">John:</strong>  So these are the seven tasks</span> <span class="audio-time caption" data-speaker="John" data-start="4458.040000" data-stop="4461.239000">that it inferred from the body of the transcript.</span> <span class="audio-time caption" data-speaker="John" data-start="4461.240000" data-stop="4463.919000">It even identified that two of them were tasks</span> <span class="audio-time caption" data-speaker="John" data-start="4463.920000" data-stop="4466.119000">to be done by the person that I met with,</span> <span class="audio-time caption" data-speaker="John" data-start="4466.120000" data-stop="4469.039000">and the other five are the ones to be done by me.</span> <span class="audio-time caption" data-speaker="John" data-start="4469.040000" data-stop="4473.119000">They have descriptive text, possibly,</span> <span class="audio-time caption" data-speaker="John" data-start="4473.120000" data-stop="4477.319000">showing the context that it used</span> <span class="audio-time caption" data-speaker="John" data-start="4477.320000" data-stop="4481.299000">to determine that that text should be there.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-14-41.480.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-14-41.480.jpg" alt="image from video 01:14:41.480" data-time="01:14:41.480"></a><span class="audio-time caption" data-speaker="John" data-start="4481.300000" data-stop="4484.159000"><strong class="speaker-name">John:</strong> It even has the time codes as a property, so</span> <span class="audio-time caption" data-speaker="John" data-start="4484.160000" data-stop="4485.479000">I can go back to where</span> <span class="audio-time caption" data-speaker="John" data-start="4485.480000" data-stop="4487.439000">in the transcript it got that task from.</span> <span class="audio-time caption" data-speaker="John" data-start="4487.440000" data-stop="4489.839000">That ends up being extremely valuable,</span> <span class="audio-time caption" data-speaker="John" data-start="4489.840000" data-stop="4494.699000">especially when I'm dealing with—</span> <span class="audio-time caption" data-speaker="John" data-start="4494.700000" data-stop="4497.159000">like I said—a sea of information, and I want</span> <span class="audio-time caption" data-speaker="John" data-start="4497.160000" data-stop="4500.317000">to pick from that sea which fish I intend to catch.</span> <span class="audio-time caption" data-speaker="John" data-start="4500.318000" data-stop="4502.079000">I've been using AI with gptel</span> <span class="audio-time caption" data-speaker="John" data-start="4502.080000" data-stop="4507.439000">and Org-mode more and more connectedly to try</span> <span class="audio-time caption" data-speaker="John" data-start="4507.440000" data-stop="4510.199000">and help me manage—not just manage that sea</span> <span class="audio-time caption" data-speaker="John" data-start="4510.200000" data-stop="4511.519000">of information, not just search it</span> <span class="audio-time caption" data-speaker="John" data-start="4511.520000" data-stop="4513.999000">and categorize it, but also refine it,</span> <span class="audio-time caption" data-speaker="John" data-start="4514.000000" data-stop="4516.559000">break things down into more manageable pieces,</span> <span class="audio-time caption" data-speaker="John" data-start="4516.560000" data-stop="4519.719000">help me find which things I should work on today.</span> <span class="audio-time caption" data-speaker="John" data-start="4519.720000" data-stop="4522.679000">All of that is coming together rather nicely</span> <span class="audio-time caption" data-speaker="John" data-start="4522.680000" data-stop="4524.799000">to help combat the drift problem</span> <span class="audio-time caption" data-speaker="John" data-start="4524.800000" data-stop="4527.339000">that Karthik was talking about.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4527.340000" data-stop="4528.319000"><strong class="speaker-name">Sacha:</strong>  And it's so easy to work with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4528.320000" data-stop="4529.039000">because it's all text,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4529.040000" data-stop="4531.839000">and you can just give it that along</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4531.840000" data-stop="4532.599000">with your prompts.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4532.600000" data-stop="4535.099000">Do you share your prompts anywhere?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4535.000000">1:15:35</span> <strong>johnw/prompt-deploy has the prompts
</strong></div><p></p><span class="audio-time caption" data-speaker="John" data-start="4535.100000" data-stop="4538.839000"><strong class="speaker-name">John:</strong>  My prompts are all on GitHub. There's a project</span> <span class="audio-time caption" data-speaker="John" data-start="4538.840000" data-stop="4540.759000">that I wrote called Prompt Deploy,</span> <span class="audio-time caption" data-speaker="John" data-start="4540.760000" data-stop="4543.359000">and you'll find all of my prompts in there.</span> <span class="audio-time caption" data-speaker="John" data-start="4543.360000" data-stop="4546.999000">Prompt Deploy is both a set of prompts, agents,</span> <span class="audio-time caption" data-speaker="John" data-start="4547.000000" data-stop="4550.239000">skills, MCP tools, and models, and</span> <span class="audio-time caption" data-speaker="John" data-start="4550.240000" data-stop="4554.239000">then a Python script that will deploy it</span> <span class="audio-time caption" data-speaker="John" data-start="4554.240000" data-stop="4556.639000">to all of your agentic frameworks.</span> <span class="audio-time caption" data-speaker="John" data-start="4556.640000" data-stop="4562.079000">It knows about Factories, Droid, OpenCode,</span> <span class="audio-time caption" data-speaker="John" data-start="4562.080000" data-stop="4568.159000">Claude Code, Codex, Gemini—and it knows how</span> <span class="audio-time caption" data-speaker="John" data-start="4568.160000" data-stop="4572.039000">to rewrite that information so that the prompt</span> <span class="audio-time caption" data-speaker="John" data-start="4572.040000" data-stop="4574.580000">is usable in every one of these</span> <span class="audio-time caption" data-speaker="John" data-start="4574.581000" data-stop="4577.579000">for every machine that you use all of these things on.</span> <span class="audio-time caption" data-speaker="John" data-start="4577.580000" data-stop="4578.939000">When I do a Prompt Deploy,</span> <span class="audio-time caption" data-speaker="John" data-start="4578.940000" data-stop="4581.999000">it writes out 896 different files</span> <span class="audio-time caption" data-speaker="John" data-start="4582.000000" data-stop="4584.220000">to all of these different tools</span> <span class="audio-time caption" data-speaker="John" data-start="4584.221000" data-stop="4586.340000">in all of their different locations.</span> <span class="audio-time caption" data-speaker="John" data-start="4586.341000" data-stop="4590.659000">Because I only want to define the prompt once.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4590.660000" data-stop="4594.359000"><strong class="speaker-name">Sacha:</strong>  I'm looking forward to having a good poke around.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4594.360000" data-stop="4597.599000">Now, interestingly, in our last conversation,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4597.600000" data-stop="4599.639000">I think one of the ideas was to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4599.640000" data-stop="4602.159000">then take the transcript of that conversation</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4602.160000" data-stop="4606.319000">and see if a meeting summarizer could do</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4606.320000" data-stop="4607.479000">something with it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4607.480000" data-stop="4610.039000">I don't think we actually went through with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4610.040000" data-stop="4612.159000">that last time in 2024,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4612.160000" data-stop="4614.599000">but maybe this year it'll do a better job</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4614.600000" data-stop="4616.039000">of pulling out the key topics.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4616.040000" data-stop="4617.719000">I will still probably edit the transcript</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4617.720000" data-stop="4621.159000">manually, because transcripts are fun. Yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4621.160000" data-stop="4622.839000">But okay—</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4622.000000">1:17:02</span> <strong>Summarizing our conversation so far</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4622.840000" data-stop="4625.559000"><strong class="speaker-name">Sacha:</strong>  Today, the conversation was mainly about your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4625.560000" data-stop="4632.599000">kind of Org task lifecycle, including using AI</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4632.600000" data-stop="4634.912000">to help you refine the tasks further.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4634.913000" data-stop="4637.599000">Karthik, do you have anything that you want</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4637.600000" data-stop="4640.019000">to dig into a little bit more?</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="4640.020000" data-stop="4641.839000"><strong class="speaker-name">Karthik:</strong>  I don't think we'll have time</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4641.840000" data-stop="4644.559000">to discuss philosophy today—the philosophy</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4644.560000" data-stop="4647.479000">of task management. But I do want to say,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4647.480000" data-stop="4652.843000">I think we covered how things go into the system</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4652.844000" data-stop="4655.639000">and then how things surface, right?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4655.640000" data-stop="4660.159000">Things go into the system using manual captures,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4660.160000" data-stop="4664.521000">using voice or whatever, or they're created by LLMs.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4664.522000" data-stop="4667.319000">Then things come out of the system</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4667.320000" data-stop="4672.224000">or are surfaced using the various agenda views, right?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4672.225000" data-stop="4675.879000">I hope that that's a somewhat complete picture</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4675.880000" data-stop="4680.399000">of just the ins and outs—tasks go in and</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4680.400000" data-stop="4689.239000">then they show up in various ways.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4689.240000" data-stop="4691.139000">There's a lot to take in.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4691.140000" data-stop="4695.679000">I knew some of this, but this is still too much.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4695.680000" data-stop="4699.399000">I've been using Org for nearly 20 years and</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4699.400000" data-stop="4704.239000">I can't even wrap my head around it.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4704.240000" data-stop="4709.079000">It's easy to think of these as cool things</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4709.080000" data-stop="4711.619000">that might be possible,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4711.620000" data-stop="4713.359000">but to actually see them being used—</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4713.360000" data-stop="4722.119000">and usefully—there's a huge gap between the two.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4722.120000" data-stop="4726.660000">The fact that John actually uses this productively</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4726.661000" data-stop="4728.220000">is pretty crazy to me.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4728.221000" data-stop="4729.740000"><strong class="speaker-name">Sacha:</strong>  I think we can break it down into a couple</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4729.741000" data-stop="4731.639000">of practices that people might be interested</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4731.640000" data-stop="4733.879000">in experimenting with. Like, for example,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4733.880000" data-stop="4736.639000">that idea of using those kinds of focus</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4736.640000" data-stop="4741.319000">or home dashboards—an Org file where everything</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4741.320000" data-stop="4744.839000">is organized by your hierarchy of importance,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4744.840000" data-stop="4747.239000">and includes the dynamic blocks</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4747.240000" data-stop="4749.759000">to list the actual tasks for that section,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4749.760000" data-stop="4753.739000">or the links that you can open with C-c C-o.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4753.000000">1:19:13</span> <strong>Karthik's completing-read version of C-c C-o</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4753.740000" data-stop="4756.759000"><strong class="speaker-name">Sacha:</strong>  Karthik, did you know that C-c C-o could open all the links,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4756.760000" data-stop="4758.479000">Because I did not.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="4758.480000" data-stop="4758.980000"><strong class="speaker-name">Karthik:</strong>  Yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4758.981000" data-stop="4759.639000"><strong class="speaker-name">Sacha:</strong>  So let's go.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="4759.640000" data-stop="4762.620000"><strong class="speaker-name">Karthik:</strong>  I knew that, and I also wrote—</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4762.621000" data-stop="4765.180000">I didn't like the way Org does it,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4765.181000" data-stop="4767.679000">so I wrote a completing-read version of that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4767.680000" data-stop="4768.580000"><strong class="speaker-name">Sacha:</strong>  Oh, very cool.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="4768.581000" data-stop="4769.900000"><strong class="speaker-name">Karthik:</strong>  That's what I use,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4769.901000" data-stop="4773.439000">and I use it from the agenda.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4773.440000" data-stop="4775.079000">So if I do C-c C-o in the agenda,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4775.080000" data-stop="4779.959000">it shows me a completing-read interface</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4779.960000" data-stop="4782.780000">with all the links in that entry.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4782.781000" data-stop="4785.919000">The reason I did this is because now</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4785.920000" data-stop="4788.239000">I can do other things with the links.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4788.240000" data-stop="4792.960000">I can use Embark. I can export the links, just the links.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4792.961000" data-stop="4796.380000">You're not limited to just opening them.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4796.000000">1:19:56</span> <strong>Karthik's thoughts on the demo so far</strong></div><p></p><span class="audio-time caption" data-speaker="Karthik" data-start="4796.381000" data-stop="4803.460000"><strong class="speaker-name">Karthik:</strong> But anyway, it's just difficult for me</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4803.461000" data-stop="4804.377000">to wrap my head around the fact that</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4804.378000" data-stop="4805.519000">all of this comes together</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4805.520000" data-stop="4808.239000">in a way where it shows you what you need</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4808.240000" data-stop="4810.780000">to see when you need to see it.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4810.781000" data-stop="4816.979000">Yeah, it's like magic to me.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4816.980000" data-stop="4819.540000">I don't know how else to describe it.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4819.541000" data-stop="4824.140000">As proofs of concept, all of this makes sense—</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4824.141000" data-stop="4825.119000">every individual feature.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4825.120000" data-stop="4829.239000">But the idea that it actually works—and then</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4829.240000" data-stop="4831.279000">when you see it, you're not like, "Oh,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4831.280000" data-stop="4832.919000">I see what you're showing me,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4832.920000" data-stop="4835.199000">but that's not what I want</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4835.200000" data-stop="4838.839000">to think about right now." The fact that</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4838.840000" data-stop="4841.799000">that doesn't happen, or if it does happen,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4841.800000" data-stop="4846.359000">it's in a minimal way—it's pretty impressive.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4846.360000" data-stop="4850.319000"><strong class="speaker-name">Sacha:</strong>  It's something that people will have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4850.320000" data-stop="4852.999000">to ease into as they try out different parts</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4853.000000" data-stop="4855.319000">of this workflow. Things like</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4855.320000" data-stop="4857.239000">using the org-capture, even just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4857.240000" data-stop="4859.039000">with the menu that you have,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4859.040000" data-stop="4860.719000">where it breaks it down into lots</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4860.720000" data-stop="4862.439000">of levels—names starting from A to D,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4862.440000" data-stop="4865.319000">that sort of thing. Yeah, it's a lot</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4865.320000" data-stop="4867.439000">of cool stuff, which we will try</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4867.440000" data-stop="4869.279000">to write about and index,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4869.280000" data-stop="4872.019000">and maybe use screenshots for,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4872.020000" data-stop="4874.479000">because otherwise I think Karthik goes slightly crazy</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4874.480000" data-stop="4875.900000">with the blurring.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="4875.901000" data-stop="4878.820000"><strong class="speaker-name">Karthik:</strong>  No, for the most part...</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4878.821000" data-stop="4882.020000">The only challenging moments are</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4882.021000" data-stop="4885.379000">when you were scrolling line by line, because that gets...</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4885.380000" data-stop="4886.739000">But most of the time it was static,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4886.740000" data-stop="4889.879000">so it's easy to draw rectangles.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4889.000000">1:21:29</span> <strong>Categories are subject areas</strong></div><p></p><span class="audio-time caption" data-speaker="Karthik" data-start="4889.880000" data-stop="4890.500000"><strong class="speaker-name">Karthik:</strong>  There's one other thing</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4890.501000" data-stop="4891.839000">I wanted to ask you, which is</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4891.840000" data-stop="4894.519000">how you break down... So Org has a few affordances.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4894.520000" data-stop="4896.719000">It has TODO keywords, categories, properties,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4896.720000" data-stop="4901.279000">and tags, right? I just wanted</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4901.280000" data-stop="4903.519000">to know what meanings—you're free</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4903.520000" data-stop="4905.439000">to assign whatever meanings you want to all</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4905.440000" data-stop="4907.319000">of these, right? There are different ways</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4907.320000" data-stop="4908.759000">to break this down. I just wanted to know,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4908.760000" data-stop="4911.839000">for the record, how do you think about each</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4911.840000" data-stop="4914.019000">of these things?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="4914.020000" data-stop="4916.639000"><strong class="speaker-name">John:</strong>  For me, categories are subject areas.</span> <span class="audio-time caption" data-speaker="John" data-start="4916.640000" data-stop="4920.799000">So if I want to see everything that I currently have</span> <span class="audio-time caption" data-speaker="John" data-start="4920.800000" data-stop="4922.599000">in my TODOs related to AI—</span> <span class="audio-time caption" data-speaker="John" data-start="4922.600000" data-stop="4925.039000">because those are usually fun tasks—</span> <span class="audio-time caption" data-speaker="John" data-start="4925.040000" data-stop="4928.119000">then anything that is in the AI category,</span> <span class="audio-time caption" data-speaker="John" data-start="4928.120000" data-stop="4930.420000">or under the AI category</span> <span class="audio-time caption" data-speaker="John" data-start="4930.421000" data-stop="4932.860000">(one of the subcategories),</span> <span class="audio-time caption" data-speaker="John" data-start="4932.861000" data-stop="4935.039000">I can just do a category report for AI and</span> <span class="audio-time caption" data-speaker="John" data-start="4935.040000" data-stop="4937.679000">I will see all of those tasks. Sometimes when</span> <span class="audio-time caption" data-speaker="John" data-start="4937.680000" data-stop="4939.639000">I have an evening and I just want to play,</span> <span class="audio-time caption" data-speaker="John" data-start="4939.640000" data-stop="4943.779000">that's the report I'll do.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="4943.780000" data-stop="4946.959000"><strong class="speaker-name">Karthik:</strong>  But sorry, categories are mutually exclusive though, right?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4946.960000" data-stop="4950.959000">When you assign a category, it owns that task.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4950.960000" data-stop="4956.820000"></span> <p></p><span class="audio-time caption" data-speaker="John" data-start="4956.821000" data-stop="4959.879000"><strong class="speaker-name">John:</strong>  AI is a child of the Computer category, which</span> <span class="audio-time caption" data-speaker="John" data-start="4959.880000" data-stop="4961.679000">is a child of the Personal category.</span> <span class="audio-time caption" data-speaker="John" data-start="4961.680000" data-stop="4964.779000">So they're hierarchical.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="4964.780000" data-stop="4966.699000"><strong class="speaker-name">Karthik:</strong>  Oh, categories can have children?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="4966.700000" data-stop="4968.499000"><strong class="speaker-name">John:</strong>  Yes.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4968.500000" data-stop="4971.119000"><strong class="speaker-name">Sacha:</strong>  Because you can specify it as a property.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="4971.120000" data-stop="4973.599000"><strong class="speaker-name">John:</strong>  So an entry has multiple categories—</span> <span class="audio-time caption" data-speaker="John" data-start="4973.600000" data-stop="4978.759000">it's every parent that it has up the hierarchy.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4978.000000">1:22:58</span> <strong>TODO keywords use a fixed vocabulary
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-23-25.080.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-23-25.080.jpg" alt="image from video 01:23:25.080" data-time="01:23:25.080"></a><span class="audio-time caption" data-speaker="Karthik" data-start="4978.760000" data-stop="4981.819000"><strong class="speaker-name">Karthik:</strong>  Okay. The next is TODO keywords.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4981.820000" data-stop="4984.020000">I saw even HABIT was a TODO keyword for you,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="4984.021000" data-stop="4985.819000">so I was wondering...</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="4985.820000" data-stop="4989.079000"><strong class="speaker-name">John:</strong>  Oh yeah, I have a very fixed vocabulary of TODO keywords.</span> <span class="audio-time caption" data-speaker="John" data-start="4989.080000" data-stop="4994.479000">If I share my screen again,</span> <span class="audio-time caption" data-speaker="John" data-start="4994.480000" data-stop="4997.119000">the way that I manage my TODO keywords is that</span> <span class="audio-time caption" data-speaker="John" data-start="4997.120000" data-stop="5000.420000">I have a dot-file.</span> <span class="audio-time caption" data-speaker="John" data-start="5000.421000" data-stop="5003.439000">This dot-file defines my keyword hierarchy</span> <span class="audio-time caption" data-speaker="John" data-start="5003.440000" data-stop="5005.159000">and how they're all related.</span> <span class="audio-time caption" data-speaker="John" data-start="5005.160000" data-stop="5009.319000">The Org Haskell utility that I wrote</span> <span class="audio-time caption" data-speaker="John" data-start="5009.320000" data-stop="5014.799000">that does the data normalization—this is how</span> <span class="audio-time caption" data-speaker="John" data-start="5014.800000" data-stop="5018.879000">I tell it what my keywords are.</span> <span class="audio-time caption" data-speaker="John" data-start="5018.880000" data-stop="5020.919000">I don't yet have Elisp code</span> <span class="audio-time caption" data-speaker="John" data-start="5020.920000" data-stop="5025.079000">that also populates Emacs's Org-mode definitions</span> <span class="audio-time caption" data-speaker="John" data-start="5025.080000" data-stop="5028.479000">based on this file, but I do it by hand—</span> <span class="audio-time caption" data-speaker="John" data-start="5028.480000" data-stop="5030.319000">I guess because that data was older</span> <span class="audio-time caption" data-speaker="John" data-start="5030.320000" data-stop="5033.399000">and it was already mostly there.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="5033.400000" data-stop="5036.119000"><strong class="speaker-name">Karthik:</strong>  And these are global across your whole corpus?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5036.120000" data-stop="5038.299000"><strong class="speaker-name">John:</strong>  Yes, they're global.</span> <span class="audio-time caption" data-speaker="John" data-start="5038.300000" data-stop="5042.439000">I don't ever use keywords outside of this set.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="5042.440000" data-stop="5044.039000"><strong class="speaker-name">Karthik:</strong>  Per-file keywords?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5044.040000" data-stop="5046.499000"><strong class="speaker-name">John:</strong>  No, I don't use per-file keywords.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="5046.500000" data-stop="5050.559000"><strong class="speaker-name">Sacha:</strong>  Because you have your validation smacking it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5050.560000" data-stop="5053.619000">if it gets mistyped, for example.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5053.620000" data-stop="5055.339000"><strong class="speaker-name">John:</strong>  Right.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="5055.340000" data-stop="5055.799000"><strong class="speaker-name">Karthik:</strong>  So to be clear,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5055.800000" data-stop="5061.293000">your TODO keywords represent the state of a task, right?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5061.294000" data-stop="5063.799000">Like, what state is it in?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5063.800000" data-stop="5066.399000">Hence the state machine right here, right?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5066.400000" data-stop="5067.579000"><strong class="speaker-name">John:</strong>  Exactly.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="5067.580000" data-stop="5069.399000"><strong class="speaker-name">Karthik:</strong>  Okay. And the states include things</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5069.400000" data-stop="5073.379000">like SCRAP or LINK. Why is LINK a state?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5073.380000" data-stop="5075.159000"><strong class="speaker-name">John:</strong>  LINK is because it's a different kind of a note.</span> <span class="audio-time caption" data-speaker="John" data-start="5075.160000" data-stop="5080.339000">A LINK is a note that only has a URL.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="5080.340000" data-stop="5081.999000"><strong class="speaker-name">Sacha:</strong>  So it doesn't require—yeah, your action</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5082.000000" data-stop="5085.259000">is just look at the thing or do something with it.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5085.260000" data-stop="5088.699000"><strong class="speaker-name">John:</strong>  Yeah, it has no body.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="5088.000000">1:24:48</span> <strong>Tags are context: person, place, or thing needed for the task
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-25-17.160.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-25-17.160.jpg" alt="image from video 01:25:17.160" data-time="01:25:17.160"></a><span class="audio-time caption" data-speaker="Karthik" data-start="5088.700000" data-stop="5089.879000"><strong class="speaker-name">Karthik:</strong>  The next question is tags.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5089.880000" data-stop="5092.299000">How do you think of tags in Org?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5092.300000" data-stop="5094.599000"><strong class="speaker-name">John:</strong>  Tags for me are context.</span> <span class="audio-time caption" data-speaker="John" data-start="5094.600000" data-stop="5097.159000">They indicate the person, place, or thing</span> <span class="audio-time caption" data-speaker="John" data-start="5097.160000" data-stop="5099.479000">that has to be present in order for me</span> <span class="audio-time caption" data-speaker="John" data-start="5099.480000" data-stop="5103.059000">to be able to make progress on that task.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="5103.060000" data-stop="5104.159000"><strong class="speaker-name">Karthik:</strong>  And how is that different from—</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5104.160000" data-stop="5106.399000">oh, okay, I can see</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5106.400000" data-stop="5108.959000">how it's different from the category, I guess.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5108.960000" data-stop="5113.399000">So what are some examples of tags you use?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5113.400000" data-stop="5115.679000">I understand people's names are tags,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5115.680000" data-stop="5117.879000">but what else do you have there?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5117.880000" data-stop="5120.319000"><strong class="speaker-name">John:</strong>  I have "call" as a tag, so it has</span> <span class="audio-time caption" data-speaker="John" data-start="5120.320000" data-stop="5121.799000">to be during the times of the day when</span> <span class="audio-time caption" data-speaker="John" data-start="5121.800000" data-stop="5123.119000">I could make a phone call.</span> <span class="audio-time caption" data-speaker="John" data-start="5123.120000" data-stop="5125.559000">I have "errand" as a tag—it has</span> <span class="audio-time caption" data-speaker="John" data-start="5125.560000" data-stop="5126.759000">to be during a time of the day</span> <span class="audio-time caption" data-speaker="John" data-start="5126.760000" data-stop="5127.759000">that things would be open and</span> <span class="audio-time caption" data-speaker="John" data-start="5127.760000" data-stop="5129.359000">I could drive out of the house.</span> <span class="audio-time caption" data-speaker="John" data-start="5129.360000" data-stop="5133.199000">I have tags for individual people, so that</span> <span class="audio-time caption" data-speaker="John" data-start="5133.200000" data-stop="5137.199000">I have to be able to be in contact with them.</span> <span class="audio-time caption" data-speaker="John" data-start="5137.200000" data-stop="5140.999000">Org-mode has a nice feature:</span> <span class="audio-time caption" data-speaker="John" data-start="5141.000000" data-stop="5142.599000">if I hit \ RET,</span> <span class="audio-time caption" data-speaker="John" data-start="5142.600000" data-stop="5146.799000">it will examine my environment based on the</span> <span class="audio-time caption" data-speaker="John" data-start="5146.800000" data-stop="5149.599000"><code>name-mask-list-at</code> Emacs Lisp function that I wrote,</span> <span class="audio-time caption" data-speaker="John" data-start="5149.600000" data-stop="5152.639000">and it will auto-filter out the tags</span> <span class="audio-time caption" data-speaker="John" data-start="5152.640000" data-stop="5154.279000">that don't currently apply. So if</span> <span class="audio-time caption" data-speaker="John" data-start="5154.280000" data-stop="5158.319000">I have a tag based on "call" and it's outside</span> <span class="audio-time caption" data-speaker="John" data-start="5158.320000" data-stop="5161.199000">of the time of when it could happen—like at 7 AM—</span> <span class="audio-time caption" data-speaker="John" data-start="5161.200000" data-stop="5164.119000">then it will filter all the call items out</span> <span class="audio-time caption" data-speaker="John" data-start="5164.120000" data-stop="5166.159000">of my daily agenda. They're still</span> <span class="audio-time caption" data-speaker="John" data-start="5166.160000" data-stop="5167.119000">in the daily agenda;</span> <span class="audio-time caption" data-speaker="John" data-start="5167.120000" data-stop="5169.639000">they just won't appear until later when it</span> <span class="audio-time caption" data-speaker="John" data-start="5169.640000" data-stop="5172.559000">is time to make calls.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="5172.560000" data-stop="5174.759000"><strong class="speaker-name">Karthik:</strong>  Ooh. Okay.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="5174.000000">1:26:14</span> <strong>Priority: A means must do, C means optional</strong></div><p></p><span class="audio-time caption" data-speaker="Karthik" data-start="5174.760000" data-stop="5182.619000"><strong class="speaker-name">Karthik:</strong> So the next affordance is priority.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5182.620000" data-stop="5184.338000">I guess you use priority the normal way—</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5184.339000" data-stop="5186.940000">just A, B, C—for importance.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5186.941000" data-stop="5190.539000"><strong class="speaker-name">John:</strong>  Well, I only use A and C. I don't use B.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="5190.540000" data-stop="5193.399000"><strong class="speaker-name">Karthik:</strong>  Okay, so you only need two, I guess.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5193.400000" data-stop="5196.259000">So what does it mean if it doesn't have a priority?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5196.260000" data-stop="5197.819000">Is that the lowest?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5197.820000" data-stop="5199.559000"><strong class="speaker-name">John:</strong>  No. If it doesn't have a priority, that's just...</span> <span class="audio-time caption" data-speaker="John" data-start="5199.560000" data-stop="5202.599000">So to me it's "must," "should,"</span> <span class="audio-time caption" data-speaker="John" data-start="5202.600000" data-stop="5204.919000">and "optional"—those are the meanings</span> <span class="audio-time caption" data-speaker="John" data-start="5204.920000" data-stop="5209.999000">of the three priorities. "Must" means there</span> <span class="audio-time caption" data-speaker="John" data-start="5210.000000" data-stop="5213.259000">is a consequence if you don't do it.</span> <span class="audio-time caption" data-speaker="John" data-start="5213.260000" data-stop="5215.915000">"Should" means maybe you're missing out on</span> <span class="audio-time caption" data-speaker="John" data-start="5215.916000" data-stop="5217.999000">an opportunity if you don't do it.</span> <span class="audio-time caption" data-speaker="John" data-start="5218.000000" data-stop="5220.079000">But really, it's up to you.</span> <span class="audio-time caption" data-speaker="John" data-start="5220.080000" data-stop="5224.780000">"Optional" means there's really no good or bad here;</span> <span class="audio-time caption" data-speaker="John" data-start="5224.781000" data-stop="5228.659000">it's just an item you may want to do.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="5228.660000" data-stop="5231.679000"><strong class="speaker-name">Karthik:</strong>  So if it doesn't have an explicit priority,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5231.680000" data-stop="5233.219000">is it optional?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5233.220000" data-stop="5236.639000"><strong class="speaker-name">John:</strong>  If it has no explicit priority, it's a "should."</span> <span class="audio-time caption" data-speaker="John" data-start="5236.640000" data-stop="5239.719000"></span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="5239.720000" data-stop="5240.999000"><strong class="speaker-name">Karthik:</strong>  Okay.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5241.000000" data-stop="5247.599000"><strong class="speaker-name">John:</strong>  I assume that if I made a TODO entry,</span> <span class="audio-time caption" data-speaker="John" data-start="5247.600000" data-stop="5248.919000">it's something I should do.</span> <span class="audio-time caption" data-speaker="John" data-start="5248.920000" data-stop="5251.599000">That's the assumption.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="5251.000000">1:27:31</span> <strong>Properties are mostly automatically assigned metadata
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-27-49.120.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-27-49.120.jpg" alt="image from video 01:27:49.120" data-time="01:27:49.120"></a><span class="audio-time caption" data-speaker="Sacha" data-start="5251.600000" data-stop="5252.679000"><strong class="speaker-name">Sacha:</strong>  Do you use properties for anything?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5252.680000" data-stop="5255.479000">Aside from the review property, of course,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5255.480000" data-stop="5258.299000">do you have any other custom properties you like?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5258.300000" data-stop="5260.199000"><strong class="speaker-name">John:</strong>  Just the ones I showed after we did the capture,</span> <span class="audio-time caption" data-speaker="John" data-start="5260.200000" data-stop="5263.999000">like the ID, the location, when it was created,</span> <span class="audio-time caption" data-speaker="John" data-start="5264.000000" data-stop="5266.719000">when it was modified.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="5266.720000" data-stop="5267.719000"><strong class="speaker-name">Sacha:</strong>  Yeah, so those seem</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5267.720000" data-stop="5270.679000">to be more automatically assigned.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5270.680000" data-stop="5274.199000"><strong class="speaker-name">John:</strong>  I very rarely use manually assigned properties.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="5274.200000" data-stop="5276.160000"><strong class="speaker-name">Sacha:</strong>  Okay.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5276.161000" data-stop="5278.180000"><strong class="speaker-name">John:</strong>  To me, properties are metadata,</span> <span class="audio-time caption" data-speaker="John" data-start="5278.181000" data-stop="5279.559000">so I'd rather just never look at them</span> <span class="audio-time caption" data-speaker="John" data-start="5279.560000" data-stop="5284.059000">and have the system automatically manage them.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="5284.060000" data-stop="5285.719000"><strong class="speaker-name">Sacha:</strong>  I don't think we actually touched on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5285.720000" data-stop="5286.599000">what you do with a hash.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5286.600000" data-stop="5289.279000">Did we talk about that one yet?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="5289.000000">1:28:09</span> <strong>The hash
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-28-13.160.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-28-13.160.jpg" alt="image from video 01:28:13.160" data-time="01:28:13.160"></a><span class="audio-time caption" data-speaker="John" data-start="5289.280000" data-stop="5290.759000"><strong class="speaker-name">John:</strong>  The hash is how the database knows</span> <span class="audio-time caption" data-speaker="John" data-start="5290.760000" data-stop="5293.239000">that an entry needs to be fully updated.</span> <span class="audio-time caption" data-speaker="John" data-start="5293.240000" data-stop="5297.319000">If the hash has changed—the database has the</span> <span class="audio-time caption" data-speaker="John" data-start="5297.320000" data-stop="5298.159000">hashes in it as well,</span> <span class="audio-time caption" data-speaker="John" data-start="5298.160000" data-stop="5301.999000">and it has the last modification dates as well—</span> <span class="audio-time caption" data-speaker="John" data-start="5302.000000" data-stop="5306.639000">first I do a search for all items whose modification</span> <span class="audio-time caption" data-speaker="John" data-start="5306.640000" data-stop="5308.519000">date is different from the modification date</span> <span class="audio-time caption" data-speaker="John" data-start="5308.520000" data-stop="5309.359000">in the Org-mode file,</span> <span class="audio-time caption" data-speaker="John" data-start="5309.360000" data-stop="5311.519000">and then I check the hash values,</span> <span class="audio-time caption" data-speaker="John" data-start="5311.520000" data-stop="5314.719000">because maybe I changed an item but I changed it back,</span> <span class="audio-time caption" data-speaker="John" data-start="5314.720000" data-stop="5320.499000">and now the database doesn't need to be updated for that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="5320.500000" data-stop="5322.959000"><strong class="speaker-name">Sacha:</strong>  Very cool. All right,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5322.960000" data-stop="5326.679000">so that's all the different Org features and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5326.680000" data-stop="5328.299000">how they support your workflow.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5328.300000" data-stop="5331.339000"><strong class="speaker-name">John:</strong>  Yeah.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="5331.000000">1:28:51</span> <strong>Assigning the tags when refiling</strong></div><p></p><span class="audio-time caption" data-speaker="Karthik" data-start="5331.340000" data-stop="5333.199000"><strong class="speaker-name">Karthik:</strong>  Yeah, the one that's most interesting to me is tags,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5333.200000" data-stop="5337.159000">because I understand in the abstract what you mean by</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5337.160000" data-stop="5339.919000">"a tag is a context or a resource that you need."</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5339.920000" data-stop="5342.359000">But somehow I can never seem to implement it.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5342.360000" data-stop="5347.199000">It's not that I end up with a pile of tags</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5347.200000" data-stop="5348.199000">that don't mean anything;</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5348.200000" data-stop="5350.439000">it's that entries just don't get the tags</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5350.440000" data-stop="5352.479000">that they need, so they don't show up later.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5352.480000" data-stop="5357.479000">Is there some way you ensure—when you capture,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5357.480000" data-stop="5359.359000">I know that you don't assign tags,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5359.360000" data-stop="5360.799000">you just want to get stuff in—</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5360.800000" data-stop="5367.019000">at what point does it get assigned the right tags, and how?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5367.020000" data-stop="5368.999000"><strong class="speaker-name">John:</strong>  Usually when I'm refiling it from the inbox</span> <span class="audio-time caption" data-speaker="John" data-start="5369.000000" data-stop="5370.639000">into the appropriate category,</span> <span class="audio-time caption" data-speaker="John" data-start="5370.640000" data-stop="5373.359000">into the appropriate heading.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="5373.360000" data-stop="5375.119000"><strong class="speaker-name">Karthik:</strong>  So do you do that by hand?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5375.120000" data-stop="5376.879000"><strong class="speaker-name">John:</strong>  Yes, I always do that by hand.</span> <span class="audio-time caption" data-speaker="John" data-start="5376.880000" data-stop="5380.679000">That's my main way of interacting with the task.</span> <span class="audio-time caption" data-speaker="John" data-start="5380.680000" data-stop="5387.559000">I go to the inbox and then I give it the tags</span> <span class="audio-time caption" data-speaker="John" data-start="5387.560000" data-stop="5390.159000">or the properties I want it to have.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="5390.160000" data-stop="5393.719000"><strong class="speaker-name">Sacha:</strong>  Are you using the standard Org completion for tags,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5393.720000" data-stop="5395.319000">or typing it in manually,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5395.320000" data-stop="5397.199000">or doing something to help you select</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5397.200000" data-stop="5400.079000">from the gazillions of tags you probably have?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5400.080000" data-stop="5402.079000"><strong class="speaker-name">John:</strong>  Yeah, I use—let's see, where is it</span> <span class="audio-time caption" data-speaker="John" data-start="5402.080000" data-stop="5404.519000">in my Org-mode file here?</span> <span class="audio-time caption" data-speaker="John" data-start="5404.520000" data-stop="5415.399000">I use the Org-mode feature... where are tags?</span> <span class="audio-time caption" data-speaker="John" data-start="5415.400000" data-stop="5422.799000">Let me see where tags get defined, because</span> <span class="audio-time caption" data-speaker="John" data-start="5422.800000" data-stop="5428.799000">I know I have the shortcut defined somewhere here</span> <span class="audio-time caption" data-speaker="John" data-start="5428.800000" data-stop="5432.559000">in my Org-mode file. It says that "call"</span> <span class="audio-time caption" data-speaker="John" data-start="5432.560000" data-stop="5436.279000">is the letter C.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="5436.280000" data-stop="5436.959000"><strong class="speaker-name">Sacha:</strong>  Oh, yeah.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5436.960000" data-stop="5439.619000"><strong class="speaker-name">John:</strong>  I forget how Org defines that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="5439.620000" data-stop="5440.439000"><strong class="speaker-name">Sacha:</strong>  That looks like</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5440.440000" data-stop="5442.759000">that <code>org-tag-persistent-alist</code> there.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="5442.760000" data-stop="5443.759000"><strong class="speaker-name">Karthik:</strong>  That's C, yeah.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5443.760000" data-stop="5447.879000"><strong class="speaker-name">John:</strong>  Yeah, but that's only a couple of tags.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="5447.000000">1:30:47</span> <strong>Per-file tags and tag validation
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-31-01.040.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-31-01.040.jpg" alt="image from video 01:31:01.040" data-time="01:31:01.040"></a><span class="audio-time caption" data-speaker="John" data-start="5447.880000" data-stop="5456.079000"><strong class="speaker-name">John:</strong>  Tags are one thing where I do tend to use in-file.</span> <span class="audio-time caption" data-speaker="John" data-start="5456.080000" data-stop="5460.279000">If I want to have shortcuts for tags, I tend</span> <span class="audio-time caption" data-speaker="John" data-start="5460.280000" data-stop="5463.239000">to use—so I have some tags that are truly global,</span> <span class="audio-time caption" data-speaker="John" data-start="5463.240000" data-stop="5465.919000">and then I have per-file tags because</span> <span class="audio-time caption" data-speaker="John" data-start="5465.920000" data-stop="5468.679000">I want the tags to be related</span> <span class="audio-time caption" data-speaker="John" data-start="5468.680000" data-stop="5470.519000">to the categories that I'm tagging.</span> <span class="audio-time caption" data-speaker="John" data-start="5470.520000" data-stop="5475.337000">My org-jw Haskell utility recognizes</span> <span class="audio-time caption" data-speaker="John" data-start="5475.338000" data-stop="5479.159000">a file property called <code>tags-all</code>.</span> <span class="audio-time caption" data-speaker="John" data-start="5479.160000" data-stop="5482.779000">If that file property is set,</span> <span class="audio-time caption" data-speaker="John" data-start="5482.780000" data-stop="5489.419000">it will mandate that the tag has to be within that vocabulary.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="5489.000000">1:31:29</span> <strong>Starting tasks with a restricted set of verbs and validating them
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-31-23.540.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-31-23.540.jpg" alt="image from video 01:31:23.540" data-time="01:31:23.540"></a><span class="audio-time caption" data-speaker="John" data-start="5489.420000" data-stop="5492.199000"><strong class="speaker-name">John:</strong> The same with <code>verb-all</code>. Verbs are words</span> <span class="audio-time caption" data-speaker="John" data-start="5492.200000" data-stop="5493.639000">that can be at the beginning</span> <span class="audio-time caption" data-speaker="John" data-start="5493.640000" data-stop="5500.299000">of an entry title that are followed by a colon.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-31-51.760.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-31-51.760.jpg" alt="image from video 01:31:51.760" data-time="01:31:51.760"></a><span class="audio-time caption" data-speaker="John" data-start="5500.300000" data-stop="5504.839000"><strong class="speaker-name">John:</strong> So I might have, instead of "send an email to Sacha,"</span> <span class="audio-time caption" data-speaker="John" data-start="5504.840000" data-stop="5509.319000">I might say "Reply: Sacha's email." Instead</span> <span class="audio-time caption" data-speaker="John" data-start="5509.320000" data-stop="5511.839000">of saying "reply to,"</span> <span class="audio-time caption" data-speaker="John" data-start="5511.840000" data-stop="5515.879000">I just make it a command verb. That verb has</span> <span class="audio-time caption" data-speaker="John" data-start="5515.880000" data-stop="5520.859000">to be within that constrained vocabulary.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="5520.860000" data-stop="5521.759000"><strong class="speaker-name">Sacha:</strong>  That's interesting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5521.760000" data-stop="5525.859000">Do you use those verbs for further filtering?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5525.860000" data-stop="5526.639000"><strong class="speaker-name">John:</strong>  Yeah, because then you can search.</span> <span class="audio-time caption" data-speaker="John" data-start="5526.640000" data-stop="5528.759000">They stand out a little bit better</span> <span class="audio-time caption" data-speaker="John" data-start="5528.760000" data-stop="5530.479000">because they represent actions</span> <span class="audio-time caption" data-speaker="John" data-start="5530.480000" data-stop="5531.359000">that need to be taken,</span> <span class="audio-time caption" data-speaker="John" data-start="5531.360000" data-stop="5533.199000">and it's very clear what the action is.</span> <span class="audio-time caption" data-speaker="John" data-start="5533.200000" data-stop="5536.879000">You could also query for all of the items</span> <span class="audio-time caption" data-speaker="John" data-start="5536.880000" data-stop="5538.599000">that have a certain verb type.</span> <span class="audio-time caption" data-speaker="John" data-start="5538.600000" data-stop="5540.239000">Like if I'm sitting down</span> <span class="audio-time caption" data-speaker="John" data-start="5540.240000" data-stop="5541.119000">to write a bunch of emails,</span> <span class="audio-time caption" data-speaker="John" data-start="5541.120000" data-stop="5543.599000">I don't have a tag for writing email and</span> <span class="audio-time caption" data-speaker="John" data-start="5543.600000" data-stop="5545.639000">I don't have a category for writing email,</span> <span class="audio-time caption" data-speaker="John" data-start="5545.640000" data-stop="5548.039000">but if I were to search for all items</span> <span class="audio-time caption" data-speaker="John" data-start="5548.040000" data-stop="5550.399000">that have a "Reply" verb, I would find all</span> <span class="audio-time caption" data-speaker="John" data-start="5550.400000" data-stop="5551.719000">of the emails that I need</span> <span class="audio-time caption" data-speaker="John" data-start="5551.720000" data-stop="5554.319000">to write today.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="5554.320000" data-stop="5555.279000"><strong class="speaker-name">Karthik:</strong>  Is that just a text search,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5555.280000" data-stop="5557.139000">or do you search for...?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5557.140000" data-stop="5559.143000"><strong class="speaker-name">John:</strong>  It's just a text search.</span> <span class="audio-time caption" data-speaker="John" data-start="5559.144000" data-stop="5562.079000">Yeah, because colons don't get used in any other way.</span> <span class="audio-time caption" data-speaker="John" data-start="5562.080000" data-stop="5564.239000">That's also a constraint</span> <span class="audio-time caption" data-speaker="John" data-start="5564.240000" data-stop="5567.999000">of the system: where other people would use</span> <span class="audio-time caption" data-speaker="John" data-start="5568.000000" data-stop="5572.039000">colons, I just use em dashes.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="5572.040000" data-stop="5573.479000"><strong class="speaker-name">Karthik:</strong>  Okay. And if I understand your system right,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5573.480000" data-stop="5576.439000">you wouldn't tag this entry with "Sacha," right?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5576.440000" data-stop="5579.079000">Because you don't need Sacha for this task.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5579.080000" data-stop="5580.760000"><strong class="speaker-name">John:</strong>  That's correct.</span> <span class="audio-time caption" data-speaker="John" data-start="5580.761000" data-stop="5583.259000">Unless Sacha would be the one writing the email,</span> <span class="audio-time caption" data-speaker="John" data-start="5583.260000" data-stop="5587.019000">I don't need Sacha to write the email.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="5587.020000" data-stop="5588.880000"><strong class="speaker-name">Sacha:</strong>  Okay. Very interesting.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="5588.000000">1:33:08</span> <strong>Searching items: ripgrep, vector embedding, openclaw</strong></div><p></p><span class="audio-time caption" data-speaker="Karthik" data-start="5588.881000" data-stop="5592.879000"><strong class="speaker-name">Karthik:</strong>  So if you want to get a list</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5592.880000" data-stop="5594.959000">of all your interactions with Sacha</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5594.960000" data-stop="5598.559000">that have been captured in your Org database,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5598.560000" data-stop="5601.719000">would you just use full-text search with a name,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5601.720000" data-stop="5604.499000">or a semantic search with a name?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5604.500000" data-stop="5607.779000"><strong class="speaker-name">John:</strong>  That's a really good question.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="5607.780000" data-stop="5609.339000"><strong class="speaker-name">Sacha:</strong>  You just removed two of the tasks,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5609.340000" data-stop="5611.239000">so we can put some back</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5611.240000" data-stop="5612.860000">so that there's something to search.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-33-32.640.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-33-32.640.jpg" alt="image from video 01:33:32.640" data-time="01:33:32.640"></a><span class="audio-time caption" data-speaker="John" data-start="5612.861000" data-stop="5614.319000"><strong class="speaker-name">John:</strong>  Well, I would first use ripgrep,</span> <span class="audio-time caption" data-speaker="John" data-start="5614.320000" data-stop="5617.639000">because that's the fastest.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-33-38.120.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-33-38.120.jpg" alt="image from video 01:33:38.120" data-time="01:33:38.120"></a><span class="audio-time caption" data-speaker="John" data-start="5617.640000" data-stop="5620.799000"><strong class="speaker-name">John:</strong> But it all really depends on what it is</span> <span class="audio-time caption" data-speaker="John" data-start="5620.800000" data-stop="5622.999000">that I'm looking for, because I have lots</span> <span class="audio-time caption" data-speaker="John" data-start="5623.000000" data-stop="5626.959000">of—Sacha occurs a lot of times in my database.</span> <span class="audio-time caption" data-speaker="John" data-start="5626.960000" data-stop="5630.099000">I don't have any way of saying, "What are all</span> <span class="audio-time caption" data-speaker="John" data-start="5630.100000" data-stop="5632.439000">of my tasks related to Sacha?" unless she were a category.</span> <span class="audio-time caption" data-speaker="John" data-start="5632.440000" data-stop="5636.199000">If she were a category, I could do it.</span> <span class="audio-time caption" data-speaker="John" data-start="5636.200000" data-stop="5637.319000">But I don't have categories</span> <span class="audio-time caption" data-speaker="John" data-start="5637.320000" data-stop="5639.979000">for every single person that I know.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="5639.980000" data-stop="5642.279000"><strong class="speaker-name">Karthik:</strong>  Okay.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="5642.280000" data-stop="5643.399000"><strong class="speaker-name">Sacha:</strong>  Okay, cool.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="5643.400000" data-stop="5645.519000"><strong class="speaker-name">Karthik:</strong>  So even with this extensive system,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5645.520000" data-stop="5650.439000">there are views that are not readily available?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5650.440000" data-stop="5652.919000"><strong class="speaker-name">John:</strong>  I mean, I would probably at this point ask OpenClaw,</span> <span class="audio-time caption" data-speaker="John" data-start="5652.920000" data-stop="5657.159000">"What are all my tasks related to Sacha?"</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="5657.160000" data-stop="5661.239000"><strong class="speaker-name">Karthik:</strong>  Yeah. That's the semantic search doing its job.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5661.240000" data-stop="5664.279000"><strong class="speaker-name">John:</strong>  Semantic plus full-text.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="5664.280000" data-stop="5665.039000"><strong class="speaker-name">Karthik:</strong>  Yeah.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5665.040000" data-stop="5672.479000"><strong class="speaker-name">John:</strong>  Actually, let's see what it says.</span> <span class="audio-time caption" data-speaker="John" data-start="5672.480000" data-stop="5678.719000">You know what? Actually, I shouldn't just have</span> <span class="audio-time caption" data-speaker="John" data-start="5678.720000" data-stop="5680.799000">semantic search doing vector embedding here.</span> <span class="audio-time caption" data-speaker="John" data-start="5680.800000" data-stop="5681.999000">I should actually have this able</span> <span class="audio-time caption" data-speaker="John" data-start="5682.000000" data-stop="5687.139000">to engage a local LLM from Emacs,</span> <span class="audio-time caption" data-speaker="John" data-start="5687.140000" data-stop="5690.019000">instead of just from OpenClaw.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="5690.020000" data-stop="5691.959000"><strong class="speaker-name">Sacha:</strong>  We see a TODO appearing real-time</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5691.960000" data-stop="5693.439000">as John thinks, "Okay,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5693.440000" data-stop="5695.799000">I've got to add this to the system."</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5695.800000" data-stop="5699.139000"><strong class="speaker-name">John:</strong>  Yeah, I'll wait until the need increases.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="5699.140000" data-stop="5700.039000"><strong class="speaker-name">Sacha:</strong>  Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5700.040000" data-stop="5700.839000">But yeah, once you have the data,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5700.840000" data-stop="5702.279000">especially if you've got it indexed</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5702.280000" data-stop="5703.639000">in something like Postgres</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5703.640000" data-stop="5709.139000">that can do things a little bit faster, then yeah.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-35-07.600.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-35-07.600.jpg" alt="image from video 01:35:07.600" data-time="01:35:07.600"></a><span class="audio-time caption" data-speaker="John" data-start="5709.140000" data-stop="5710.199000"><strong class="speaker-name">John:</strong>  So this was its list</span> <span class="audio-time caption" data-speaker="John" data-start="5710.200000" data-stop="5712.759000">of all tasks related to Sacha Chua.</span> <span class="audio-time caption" data-speaker="John" data-start="5712.760000" data-stop="5716.259000">It didn't do a very good job.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="5716.260000" data-stop="5718.239000"><strong class="speaker-name">Sacha:</strong>  Because semantic—you know,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5718.240000" data-stop="5721.159000">vector search and names doesn't make sense.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5721.160000" data-stop="5723.919000">But if you're doing something more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5723.920000" data-stop="5727.199000">concept-related, that might work.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5727.200000" data-stop="5728.279000"><strong class="speaker-name">John:</strong>  Yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="5728.280000" data-stop="5731.599000"><strong class="speaker-name">Sacha:</strong>  Full text would be great. I think org-ql</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5731.600000" data-stop="5733.839000">is something that people often use for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5733.840000" data-stop="5736.919000">that sort of thing anyway.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="5736.000000">1:35:36</span> <strong>Linting and normalizing data in a pre-commit hook using Lefthook
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-35-56.760.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-35-56.760.jpg" alt="image from video 01:35:56.760" data-time="01:35:56.760"></a><span class="audio-time caption" data-speaker="John" data-start="5736.920000" data-stop="5740.260000"><strong class="speaker-name">John:</strong>  Then finally, I use Lefthook,</span> <span class="audio-time caption" data-speaker="John" data-start="5740.261000" data-stop="5743.179000">which is a Git hooks manager,</span> <span class="audio-time caption" data-speaker="John" data-start="5743.180000" data-stop="5744.700000">so that when I type "changes"—</span> <span class="audio-time caption" data-speaker="John" data-start="5744.701000" data-stop="5746.759000">which is going to make a commit whose subject line</span> <span class="audio-time caption" data-speaker="John" data-start="5746.760000" data-stop="5747.780000">is just "changes"</span> <span class="audio-time caption" data-speaker="John" data-start="5747.781000" data-stop="5751.140000">(I don't try to give descriptive commits for my thing)—</span> <span class="audio-time caption" data-speaker="John" data-start="5751.141000" data-stop="5756.860000">it will use Lefthook to run the pre-commit hook,</span> <span class="audio-time caption" data-speaker="John" data-start="5756.861000" data-stop="5759.820000">which is going to use the linter</span> <span class="audio-time caption" data-speaker="John" data-start="5759.821000" data-stop="5762.679000">and use the org-jw Haskell.</span> <span class="audio-time caption" data-speaker="John" data-start="5762.680000" data-stop="5765.999000">So it's now doing full round-trip lint on just the files</span> <span class="audio-time caption" data-speaker="John" data-start="5766.000000" data-stop="5769.399000">that changed, by the way, not on all of them.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-36-10.280.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-36-10.280.jpg" alt="image from video 01:36:10.280" data-time="01:36:10.280"></a><span class="audio-time caption" data-speaker="John" data-start="5769.400000" data-stop="5771.659000"><strong class="speaker-name">John:</strong> That succeeded, so it made the commit.</span> <span class="audio-time caption" data-speaker="John" data-start="5771.660000" data-stop="5774.339000">Now that it's made the commit, it's going</span> <span class="audio-time caption" data-speaker="John" data-start="5774.340000" data-stop="5776.679000">to store all of the changed entries</span> <span class="audio-time caption" data-speaker="John" data-start="5776.680000" data-stop="5779.039000">in the database. Then it's going</span> <span class="audio-time caption" data-speaker="John" data-start="5779.040000" data-stop="5780.359000">to do vector embeddings on all</span> <span class="audio-time caption" data-speaker="John" data-start="5780.360000" data-stop="5782.559000">of the text regions that need</span> <span class="audio-time caption" data-speaker="John" data-start="5782.560000" data-stop="5786.059000">up-to-date embeddings.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="5786.060000" data-stop="5788.439000"><strong class="speaker-name">Sacha:</strong>  I think this whole normalization piece</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5788.440000" data-stop="5790.679000">is something that I would love</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5790.680000" data-stop="5792.919000">to see if we can get into a form</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5792.920000" data-stop="5795.199000">that somebody other than you can run,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5795.200000" data-stop="5797.799000">because it's one of the things I've envied</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5797.800000" data-stop="5800.819000">about your system for a while.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="5800.000000">1:36:40</span> <strong>LLM-generated RFC-style specifications of the format
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-36-49.000.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-36-49.000.jpg" alt="image from video 01:36:49.000" data-time="01:36:49.000"></a><span class="audio-time caption" data-speaker="John" data-start="5800.820000" data-stop="5802.919000"><strong class="speaker-name">John:</strong>  I did finally write it all.</span> <span class="audio-time caption" data-speaker="John" data-start="5802.920000" data-stop="5808.079000">I had AI help me create an RFC-format document</span> <span class="audio-time caption" data-speaker="John" data-start="5808.080000" data-stop="5810.599000">for the entire Org-mode format.</span> <span class="audio-time caption" data-speaker="John" data-start="5810.600000" data-stop="5813.279000">So this documents as a standard</span> <span class="audio-time caption" data-speaker="John" data-start="5813.280000" data-stop="5818.119000">the Org-mode text format. Then this document</span> <span class="audio-time caption" data-speaker="John" data-start="5818.120000" data-stop="5821.359000">is an RFC-format document which</span> <span class="audio-time caption" data-speaker="John" data-start="5821.360000" data-stop="5824.719000">is the delta—everything that I do that</span> <span class="audio-time caption" data-speaker="John" data-start="5824.720000" data-stop="5828.559000">is different or adds on to the Org-mode format</span> <span class="audio-time caption" data-speaker="John" data-start="5828.560000" data-stop="5831.559000">is in this document. We could see, like,</span> <span class="audio-time caption" data-speaker="John" data-start="5831.560000" data-stop="5837.539000">keywords. Not keywords, what do I call them... Verbs.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="5837.000000">1:37:17</span> <strong>The heading grammar
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-37-18.160.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-37-18.160.jpg" alt="image from video 01:37:18.160" data-time="01:37:18.160"></a><span class="audio-time caption" data-speaker="John" data-start="5837.540000" data-stop="5839.839000"><strong class="speaker-name">John:</strong> So like here, this is the extended heading grammar.</span> <span class="audio-time caption" data-speaker="John" data-start="5839.840000" data-stop="5843.199000">This shows exactly what can be in the heading</span> <span class="audio-time caption" data-speaker="John" data-start="5843.200000" data-stop="5845.359000">of an Org-mode entry in what order.</span> <span class="audio-time caption" data-speaker="John" data-start="5845.360000" data-stop="5848.799000">There is no syntax for headings</span> <span class="audio-time caption" data-speaker="John" data-start="5848.800000" data-stop="5851.439000">in the Org-mode standard, but there is one</span> <span class="audio-time caption" data-speaker="John" data-start="5851.440000" data-stop="5853.919000">in the JW extensions.</span> <span class="audio-time caption" data-speaker="John" data-start="5853.920000" data-stop="5857.679000">So my org-jw Haskell project really</span> <span class="audio-time caption" data-speaker="John" data-start="5857.680000" data-stop="5859.319000">is just an implementation</span> <span class="audio-time caption" data-speaker="John" data-start="5859.320000" data-stop="5862.759000">of this RFC document.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="5862.760000" data-stop="5863.799000"><strong class="speaker-name">Sacha:</strong>  I see, because you've constrained</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5863.800000" data-stop="5865.639000">your vocabulary so that, for example,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5865.640000" data-stop="5867.479000">your headings are verb-colon-whatever,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5867.480000" data-stop="5870.519000">and that can be verified</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5870.520000" data-stop="5872.459000">by your Haskell program.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="5872.000000">1:37:52</span> <strong>A TODO example with everything
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-38-11.040.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-38-11.040.jpg" alt="image from video 01:38:11.040" data-time="01:38:11.040"></a><span class="audio-time caption" data-speaker="John" data-start="5872.460000" data-stop="5874.999000"><strong class="speaker-name">John:</strong>  Exactly. You can see down here an example</span> <span class="audio-time caption" data-speaker="John" data-start="5875.000000" data-stop="5877.599000">that uses every feature. It's got the keyword,</span> <span class="audio-time caption" data-speaker="John" data-start="5877.600000" data-stop="5882.079000">the priority. It's got the context, which</span> <span class="audio-time caption" data-speaker="John" data-start="5882.080000" data-stop="5885.279000">is a special type of context—usually relating</span> <span class="audio-time caption" data-speaker="John" data-start="5885.280000" data-stop="5891.119000">to accounts or things like that.</span> <span class="audio-time caption" data-speaker="John" data-start="5891.120000" data-stop="5892.759000">If it's related to a bank,</span> <span class="audio-time caption" data-speaker="John" data-start="5892.760000" data-stop="5896.679000">or actually if Sacha were the one who asked me</span> <span class="audio-time caption" data-speaker="John" data-start="5896.680000" data-stop="5898.299000">to write the email,</span> <span class="audio-time caption" data-speaker="John" data-start="5898.300000" data-stop="5902.219000">I might make Sacha be the context of the task.</span> <span class="audio-time caption" data-speaker="John" data-start="5902.220000" data-stop="5904.579000">Then there's the verb, then there's the title,</span> <span class="audio-time caption" data-speaker="John" data-start="5904.580000" data-stop="5907.339000">then there's the locator.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="5907.000000">1:38:27</span> <strong>Locating objects in the physical world with {text}</strong></div><p></p><span class="audio-time caption" data-speaker="John" data-start="5907.340000" data-stop="5909.599000"><strong class="speaker-name">John:</strong> The reason I use a locator is that in my closet</span> <span class="audio-time caption" data-speaker="John" data-start="5909.600000" data-stop="5914.259000">I have a hanging files folder,</span> <span class="audio-time caption" data-speaker="John" data-start="5914.260000" data-stop="5917.099000">and every file has a letter of the alphabet on it,</span> <span class="audio-time caption" data-speaker="John" data-start="5917.100000" data-stop="5918.020000">A through Z.</span> <span class="audio-time caption" data-speaker="John" data-start="5918.021000" data-stop="5927.159000">So if the task has—let's see here—if the task</span> <span class="audio-time caption" data-speaker="John" data-start="5927.160000" data-stop="5931.380000">was "send email to Sacha" like this,</span> <span class="audio-time caption" data-speaker="John" data-start="5931.381000" data-stop="5934.740000">this is an indicator to me that there</span> <span class="audio-time caption" data-speaker="John" data-start="5934.741000" data-stop="5937.100000">is information related to this task</span> <span class="audio-time caption" data-speaker="John" data-start="5937.101000" data-stop="5941.540000">that's in folder A of the hanging files folder.</span> <span class="audio-time caption" data-speaker="John" data-start="5941.541000" data-stop="5942.919000">So sometimes if I have</span> <span class="audio-time caption" data-speaker="John" data-start="5942.920000" data-stop="5947.500000">to send my property taxes into the county—</span> <span class="audio-time caption" data-speaker="John" data-start="5947.501000" data-stop="5950.380000">well, they sent me a form to fill out and post</span> <span class="audio-time caption" data-speaker="John" data-start="5950.381000" data-stop="5952.980000">with my check, so that form has</span> <span class="audio-time caption" data-speaker="John" data-start="5952.981000" data-stop="5954.759000">to live somewhere while the task is open.</span> <span class="audio-time caption" data-speaker="John" data-start="5954.760000" data-stop="5957.319000">Closed tasks, it's okay</span> <span class="audio-time caption" data-speaker="John" data-start="5957.320000" data-stop="5959.979000">that their locator becomes invalid,</span> <span class="audio-time caption" data-speaker="John" data-start="5959.980000" data-stop="5961.359000">because then I take the item out</span> <span class="audio-time caption" data-speaker="John" data-start="5961.360000" data-stop="5963.519000">of the hanging folder and I shred it.</span> <span class="audio-time caption" data-speaker="John" data-start="5963.520000" data-stop="5965.399000">But while the task is open,</span> <span class="audio-time caption" data-speaker="John" data-start="5965.400000" data-stop="5970.139000">the locator locates related information,</span> <span class="audio-time caption" data-speaker="John" data-start="5970.140000" data-stop="5973.139000">even if that information is physical.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="5973.140000" data-stop="5974.519000"><strong class="speaker-name">Sacha:</strong>  I'm always very interested</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5974.520000" data-stop="5976.159000">in the interaction between digital</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5976.160000" data-stop="5978.579000">and physical systems.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-39-40.320.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-39-40.320.jpg" alt="image from video 01:39:40.320" data-time="01:39:40.320"></a><span class="audio-time caption" data-speaker="John" data-start="5978.580000" data-stop="5981.579000"><strong class="speaker-name">John:</strong>  Yeah, I might say "garage"</span> <span class="audio-time caption" data-speaker="John" data-start="5981.580000" data-stop="5983.099000">to locate something in my house,</span> <span class="audio-time caption" data-speaker="John" data-start="5983.100000" data-stop="5986.599000">that there's an item in the garage.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="5986.600000" data-stop="5988.659000"><strong class="speaker-name">Karthik:</strong>  The typical approach</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5988.660000" data-stop="5990.300000">to this would be to use an Org property</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5990.301000" data-stop="5992.519000">that says "location" or "physical location,"</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5992.520000" data-stop="5994.999000">but I guess because you require properties</span> <span class="audio-time caption" data-speaker="Karthik" data-start="5995.000000" data-stop="5997.079000">to be managed...</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="5997.080000" data-stop="5999.079000"><strong class="speaker-name">John:</strong>  Yeah, I don't see properties.</span> <span class="audio-time caption" data-speaker="John" data-start="5999.080000" data-stop="6003.439000">To me, they can't hold actionable information.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="6003.440000" data-stop="6004.559000"><strong class="speaker-name">Sacha:</strong>  So what I'm taking away from this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6004.560000" data-stop="6009.460000">is "stuff more useful metadata into titles."</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="6009.461000" data-stop="6011.980000"><strong class="speaker-name">John:</strong>  Or put a tag in the title</span> <span class="audio-time caption" data-speaker="John" data-start="6011.981000" data-stop="6014.220000">that tells me that there is useful metadata,</span> <span class="audio-time caption" data-speaker="John" data-start="6014.221000" data-stop="6015.539000">like the link tag.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="6015.540000" data-stop="6016.359000"><strong class="speaker-name">Sacha:</strong>  Yeah, yeah.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="6016.360000" data-stop="6020.759000"><strong class="speaker-name">John:</strong>  I could have a "phys" tag, which says</span> <span class="audio-time caption" data-speaker="John" data-start="6020.760000" data-stop="6023.319000">that there's a locator to a physical something</span> <span class="audio-time caption" data-speaker="John" data-start="6023.320000" data-stop="6026.079000">in the property. Or what's another one I use?</span> <span class="audio-time caption" data-speaker="John" data-start="6026.080000" data-stop="6030.279000">It just occurred to me a second ago, but</span> <span class="audio-time caption" data-speaker="John" data-start="6030.280000" data-stop="6034.939000">now I've forgotten it. Whatever.</span> <span class="audio-time caption" data-speaker="John" data-start="6034.940000" data-stop="6037.359000">But yes, I could use that more too.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="6037.000000">1:40:37</span> <strong>Managing attachments: DEVONthink for long-lived files, org-attach for temporary ones</strong></div><p></p><span class="audio-time caption" data-speaker="John" data-start="6037.360000" data-stop="6041.019000"><strong class="speaker-name">John:</strong> Oh, attachments.</span> <span class="audio-time caption" data-speaker="John" data-start="6041.020000" data-stop="6041.199000">I also use Org attachments.</span> <span class="audio-time caption" data-speaker="John" data-start="6041.200000" data-stop="6043.380000">If somebody sends me a PDF,</span> <span class="audio-time caption" data-speaker="John" data-start="6043.381000" data-stop="6045.460000">if that PDF is long-lived,</span> <span class="audio-time caption" data-speaker="John" data-start="6045.461000" data-stop="6048.620000">I'll put it into a file-retrieval database</span> <span class="audio-time caption" data-speaker="John" data-start="6048.621000" data-stop="6050.020000">called DEVONthink.</span> <span class="audio-time caption" data-speaker="John" data-start="6050.021000" data-stop="6053.500000">Then I have a package for Org-mode, of course,</span> <span class="audio-time caption" data-speaker="John" data-start="6053.501000" data-stop="6054.940000">called org-devonthink.</span> <span class="audio-time caption" data-speaker="John" data-start="6054.941000" data-stop="6057.940000">If I just have the item selected in that database,</span> <span class="audio-time caption" data-speaker="John" data-start="6057.941000" data-stop="6060.300000">I can hit a key which will associate a link</span> <span class="audio-time caption" data-speaker="John" data-start="6060.301000" data-stop="6063.540000">that goes to that unique entry within the database.</span> <span class="audio-time caption" data-speaker="John" data-start="6063.541000" data-stop="6068.799000">But if it's short-lived, meaning that</span> <span class="audio-time caption" data-speaker="John" data-start="6068.800000" data-stop="6073.060000">I only need the PDF as long as I need the task</span> <span class="audio-time caption" data-speaker="John" data-start="6073.061000" data-stop="6075.700000">to be open—kind of like with locators—</span> <span class="audio-time caption" data-speaker="John" data-start="6075.701000" data-stop="6078.860000">then I will put it into an Org attachment,</span> <span class="audio-time caption" data-speaker="John" data-start="6078.861000" data-stop="6083.700000">and that lives within a git-annex-controlled Git</span> <span class="audio-time caption" data-speaker="John" data-start="6083.701000" data-stop="6086.919000">data directory within my Org-mode,</span> <span class="audio-time caption" data-speaker="John" data-start="6086.920000" data-stop="6090.239000">sea of Org-mode data files. It gets a tag,</span> <span class="audio-time caption" data-speaker="John" data-start="6090.240000" data-stop="6093.339000">which is capital <code>FILE</code> instead of capital
<code>LINK</code>,</span> <span class="audio-time caption" data-speaker="John" data-start="6093.340000" data-stop="6096.539000">which tells me if I open the attachments directory</span> <span class="audio-time caption" data-speaker="John" data-start="6096.540000" data-stop="6102.899000">for this task, I will see something related to the task.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="6102.900000" data-stop="6105.279000"><strong class="speaker-name">Sacha:</strong>  Interesting.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="6105.000000">1:41:45</span> <strong>Tags hint at where you can find more information</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="6105.280000" data-stop="6108.399000"><strong class="speaker-name">Sacha:</strong>  So the tags also include hints about where you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6108.400000" data-stop="6110.659000">can go for more information.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="6110.660000" data-stop="6112.239000"><strong class="speaker-name">John:</strong>  Yeah, and those tend to be all uppercase—</span> <span class="audio-time caption" data-speaker="John" data-start="6112.240000" data-stop="6115.039000">those sort of metadata-awareness tags—</span> <span class="audio-time caption" data-speaker="John" data-start="6115.040000" data-stop="6119.479000">whereas the "call," "errand," blah blah blah</span> <span class="audio-time caption" data-speaker="John" data-start="6119.480000" data-stop="6122.719000">are all capitalized words, as are all</span> <span class="audio-time caption" data-speaker="John" data-start="6122.720000" data-stop="6125.879000">of the ones for people.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="6125.880000" data-stop="6126.839000"><strong class="speaker-name">Karthik:</strong>  About the link tag,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6126.840000" data-stop="6130.079000">sorry—you have LINK as the TODO keyword.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6130.080000" data-stop="6131.959000">You also have a link tag. Yes.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6131.960000" data-stop="6135.099000">Do they mean different things?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="6135.100000" data-stop="6136.239000"><strong class="speaker-name">John:</strong>  The LINK keyword means</span> <span class="audio-time caption" data-speaker="John" data-start="6136.240000" data-stop="6138.879000">this is equivalent to a note</span> <span class="audio-time caption" data-speaker="John" data-start="6138.880000" data-stop="6145.599000">that has a link tag but no body.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="6145.600000" data-stop="6148.899000"><strong class="speaker-name">Karthik:</strong>  Sorry, what am I looking at on your screen?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="6148.900000" data-stop="6149.879000"><strong class="speaker-name">John:</strong>  Oh, you're not looking.</span> <span class="audio-time caption" data-speaker="John" data-start="6149.880000" data-stop="6151.439000">I'm not showing you anything.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="6151.000000">1:42:31</span> <strong>:LINK: tags indicate that there is a link; LINK state says this note is only a link
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-42-45.120.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-42-45.120.jpg" alt="image from video 01:42:45.120" data-time="01:42:45.120"></a><span class="audio-time caption" data-speaker="John" data-start="6151.440000" data-stop="6157.319000"><strong class="speaker-name">John:</strong>  So if I have a note that has a body and it has a URL,</span> <span class="audio-time caption" data-speaker="John" data-start="6157.320000" data-stop="6165.979000">then it has to have a link tag.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="6165.980000" data-stop="6166.839000"><strong class="speaker-name">Karthik:</strong>  Oh, okay. This is just putting it into practice.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-42-49.040.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-42-49.040.jpg" alt="image from video 01:42:49.040" data-time="01:42:49.040"></a><span class="audio-time caption" data-speaker="John" data-start="6166.840000" data-stop="6170.879000"><strong class="speaker-name">John:</strong>  If there is no body, then it's this.</span> <span class="audio-time caption" data-speaker="John" data-start="6170.880000" data-stop="6174.219000">It's just a contraction.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="6174.220000" data-stop="6175.879000"><strong class="speaker-name">Sacha:</strong>  It says, "Don't bother looking</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6175.880000" data-stop="6177.499000">in here for a body."</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="6177.500000" data-stop="6178.420000"><strong class="speaker-name">John:</strong>  Yeah, right.</span> <span class="audio-time caption" data-speaker="John" data-start="6178.421000" data-stop="6179.519000">There's no supporting information here.</span> <span class="audio-time caption" data-speaker="John" data-start="6179.520000" data-stop="6180.399000">This is a bookmark link.</span> <span class="audio-time caption" data-speaker="John" data-start="6180.400000" data-stop="6186.359000">But if it's a note,</span> <span class="audio-time caption" data-speaker="John" data-start="6186.360000" data-stop="6189.159000">then it's a note with a link attached.</span> <span class="audio-time caption" data-speaker="John" data-start="6189.160000" data-stop="6190.579000">It's a question of:</span> <span class="audio-time caption" data-speaker="John" data-start="6190.580000" data-stop="6192.879000">is the link the principal piece of information,</span> <span class="audio-time caption" data-speaker="John" data-start="6192.880000" data-stop="6198.459000">or is the link the ancillary information?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="6198.460000" data-stop="6200.079000"><strong class="speaker-name">Sacha:</strong>  So the link tag says you can use</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6200.080000" data-stop="6203.159000">C-c C-o on this and have something useful happen.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6203.160000" data-stop="6206.559000">The LINK type, or the LINK TODO state, says,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6206.560000" data-stop="6209.999000">"I'm just the link, I don't have any other notes."</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="6210.000000">1:43:30</span> <strong>Some other code turns Firefox bookmarks into an Org Mode file</strong></div><p></p><span class="audio-time caption" data-speaker="John" data-start="6210.000000" data-stop="6213.039000"><strong class="speaker-name">John:</strong>  Right. I have some other code—</span> <span class="audio-time caption" data-speaker="John" data-start="6213.040000" data-stop="6214.839000">I believe it's written in Python—</span> <span class="audio-time caption" data-speaker="John" data-start="6214.840000" data-stop="6218.399000">that will turn my Firefox bookmarks file</span> <span class="audio-time caption" data-speaker="John" data-start="6218.400000" data-stop="6221.839000">into an Org-mode file with a bunch of link entries.</span> <span class="audio-time caption" data-speaker="John" data-start="6221.840000" data-stop="6228.679000">It does this so it keeps that file in sync.</span> <span class="audio-time caption" data-speaker="John" data-start="6228.680000" data-stop="6241.659000">That way I can use Firefox as a bookmark manager if I want.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="6241.660000" data-stop="6246.779000"><strong class="speaker-name">Sacha:</strong>  Cool.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="6246.000000">1:44:06</span> <strong>The format specifications are LLM-generated</strong></div><p></p><span class="audio-time caption" data-speaker="Karthik" data-start="6246.780000" data-stop="6250.959000"><strong class="speaker-name">Karthik:</strong>  So I looked at the RFC and it's 3,600 lines.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6250.960000" data-stop="6257.299000">That's the delta. How long did that take you?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="6257.300000" data-stop="6258.519000"><strong class="speaker-name">John:</strong>  It didn't take me any time at all.</span> <span class="audio-time caption" data-speaker="John" data-start="6258.520000" data-stop="6261.139000">I just asked Claude to write it.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="6261.140000" data-stop="6262.479000"><strong class="speaker-name">Karthik:</strong>  Okay. But then</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6262.480000" data-stop="6264.699000">how do you know it got it right?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="6264.700000" data-stop="6267.739000"><strong class="speaker-name">John:</strong>  I don't know that. Even if I wrote it,</span> <span class="audio-time caption" data-speaker="John" data-start="6267.740000" data-stop="6269.399000">I wouldn't know that I'd gotten it right.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="6269.400000" data-stop="6270.639000"><strong class="speaker-name">Karthik:</strong>  That's true. Yeah.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6270.640000" data-stop="6277.279000">But I was wondering, is that intended for humans?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="6277.280000" data-stop="6278.380000"><strong class="speaker-name">John:</strong>  Probably not.</span> <span class="audio-time caption" data-speaker="John" data-start="6278.381000" data-stop="6279.039000">It's intended for people</span> <span class="audio-time caption" data-speaker="John" data-start="6279.040000" data-stop="6281.039000">who are writing such a process for themselves,</span> <span class="audio-time caption" data-speaker="John" data-start="6281.040000" data-stop="6283.839000">and they would only be reading one specific</span> <span class="audio-time caption" data-speaker="John" data-start="6283.840000" data-stop="6286.359000">section of interest. There's no human being</span> <span class="audio-time caption" data-speaker="John" data-start="6286.360000" data-stop="6289.839000">that would ever read that document front to back.</span> <span class="audio-time caption" data-speaker="John" data-start="6289.840000" data-stop="6290.879000">Or you could feed it to an AI</span> <span class="audio-time caption" data-speaker="John" data-start="6290.880000" data-stop="6293.159000">and have it create the same thing for you</span> <span class="audio-time caption" data-speaker="John" data-start="6293.160000" data-stop="6298.199000">in Python or Rust or whatever language you prefer.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="6298.200000" data-stop="6299.980000"><strong class="speaker-name">Sacha:</strong>  It's a specification.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="6299.981000" data-stop="6302.319000"><strong class="speaker-name">John:</strong>  Yeah, and AIs do very well with specifications.</span> <span class="audio-time caption" data-speaker="John" data-start="6302.320000" data-stop="6308.479000">One thing that I could do that would be interesting</span> <span class="audio-time caption" data-speaker="John" data-start="6308.480000" data-stop="6312.839000">is to use that specification to create a compliance test,</span> <span class="audio-time caption" data-speaker="John" data-start="6312.840000" data-stop="6316.479000">and then any application which is able</span> <span class="audio-time caption" data-speaker="John" data-start="6316.480000" data-stop="6317.999000">to pass the compliance test would be</span> <span class="audio-time caption" data-speaker="John" data-start="6318.000000" data-stop="6324.439000">an implementation of the spec.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="6324.440000" data-stop="6325.279000"><strong class="speaker-name">Sacha:</strong>  It also helps with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6325.280000" data-stop="6327.179000">your validation code, probably.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6327.180000" data-stop="6330.200000">Yeah, that makes sense.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="6330.000000">1:45:30</span> <strong>Quick recap</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="6330.201000" data-stop="6330.719000"><strong class="speaker-name">Sacha:</strong>  Cool, cool. Okay,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6330.720000" data-stop="6333.119000">so a whole bunch of things here that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6333.120000" data-stop="6334.999000">I am definitely looking forward</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6335.000000" data-stop="6338.039000">to digging into further. I particularly like</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6338.040000" data-stop="6340.919000">that idea of a draft—you know, kind</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6340.920000" data-stop="6342.359000">of just capture the text and then have a menu</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6342.360000" data-stop="6344.319000">of actions that you can do with the text,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6344.320000" data-stop="6346.799000">such as turning it into an email message</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6346.800000" data-stop="6350.239000">or copying to your clipboard while saving a copy of it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6350.240000" data-stop="6353.679000">That sounds very interesting. And then</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6353.680000" data-stop="6356.199000">I can dig into all the other cool things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6356.200000" data-stop="6358.319000">that you do with breaking down tasks</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6358.320000" data-stop="6360.239000">and identifying tasks out of transcripts.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6360.240000" data-stop="6362.839000">Many, many things to explore.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6362.840000" data-stop="6366.819000">Karthik, is your brain full too?</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="6366.820000" data-stop="6368.239000"><strong class="speaker-name">Karthik:</strong>  Yes, my brain overflowed</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6368.240000" data-stop="6372.359000">with both information and ideas.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6372.360000" data-stop="6374.639000">I knew about the Drafts thing</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6374.640000" data-stop="6375.599000">because John told me last year,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6375.600000" data-stop="6376.839000">but I didn't get it.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6376.840000" data-stop="6379.039000">The demo really helped with</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6379.040000" data-stop="6382.899000">that in particular.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6382.900000" data-stop="6388.399000">Yeah, this was a whirlwind tour of...</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="6388.000000">1:46:28</span> <strong>A quick look at Github repositories: org2jsonl
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-46-45.160.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-46-45.160.jpg" alt="image from video 01:46:45.160" data-time="01:46:45.160"></a><span class="audio-time caption" data-speaker="John" data-start="6388.400000" data-stop="6391.979000"><strong class="speaker-name">John:</strong>  So in my GitHub,</span> <span class="audio-time caption" data-speaker="John" data-start="6391.980000" data-stop="6393.759000">you will find—if you look for "org-this"</span> <span class="audio-time caption" data-speaker="John" data-start="6393.760000" data-stop="6396.959000">and other utilities that</span> <span class="audio-time caption" data-speaker="John" data-start="6396.960000" data-stop="6399.239000">I use for managing Org-mode—</span> <span class="audio-time caption" data-speaker="John" data-start="6399.240000" data-stop="6400.799000">there's another one</span> <span class="audio-time caption" data-speaker="John" data-start="6400.800000" data-stop="6402.599000">I wrote called org2jsonl,</span> <span class="audio-time caption" data-speaker="John" data-start="6402.600000" data-stop="6405.239000">which will take any Org-mode file</span> <span class="audio-time caption" data-speaker="John" data-start="6405.240000" data-stop="6407.599000">and turn it into a list of JSON objects.</span> <span class="audio-time caption" data-speaker="John" data-start="6407.600000" data-stop="6411.639000">That's because there are certain utilities</span> <span class="audio-time caption" data-speaker="John" data-start="6411.640000" data-stop="6413.999000">like Beads for managing tasks for AIs,</span> <span class="audio-time caption" data-speaker="John" data-start="6414.000000" data-stop="6416.359000">and this allows you</span> <span class="audio-time caption" data-speaker="John" data-start="6416.360000" data-stop="6420.999000">to use Org-mode as the data format for that.</span> <span class="audio-time caption" data-speaker="John" data-start="6421.000000" data-stop="6423.759000">I have a Rust implementation of Beads that</span> <span class="audio-time caption" data-speaker="John" data-start="6423.760000" data-stop="6426.239000">I cloned from somebody else that I modified</span> <span class="audio-time caption" data-speaker="John" data-start="6426.240000" data-stop="6427.759000">to use org2jsonl,</span> <span class="audio-time caption" data-speaker="John" data-start="6427.760000" data-stop="6430.999000">so it manages the tasks database there.</span> <span class="audio-time caption" data-speaker="John" data-start="6431.000000" data-stop="6436.919000">We talked about org-hash, org-drafts.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="6436.000000">1:47:16</span> <strong>org-gptel: chat with AI within Org Mode instead of having to leave it
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-47-16.840.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-47-16.840.jpg" alt="image from video 01:47:16.840" data-time="01:47:16.840"></a><span class="audio-time caption" data-speaker="John" data-start="6436.920000" data-stop="6440.620000"><strong class="speaker-name">John:</strong> I use ob-gptel so that</span> <span class="audio-time caption" data-speaker="John" data-start="6440.621000" data-stop="6441.599000">in my lab notebook especially,</span> <span class="audio-time caption" data-speaker="John" data-start="6441.600000" data-stop="6445.159000">I can dialogue with AI within Org-mode,</span> <span class="audio-time caption" data-speaker="John" data-start="6445.160000" data-stop="6447.799000">not having to leave Org-mode and go</span> <span class="audio-time caption" data-speaker="John" data-start="6447.800000" data-stop="6449.519000">to some other client. I have a</span> <span class="audio-time caption" data-speaker="John" data-start="6449.520000" data-stop="6451.279000">now a running dialogue with the AI</span> <span class="audio-time caption" data-speaker="John" data-start="6451.280000" data-stop="6455.459000">in my Org-mode file.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="6455.000000">1:47:35</span> <strong>obr: fork of Rust port of Beads to use Org Mode for issue lists
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-47-35.360.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-47-35.360.jpg" alt="image from video 01:47:35.360" data-time="01:47:35.360"></a><span class="audio-time caption" data-speaker="John" data-start="6455.460000" data-stop="6456.959000"><strong class="speaker-name">John:</strong> obr is the task management tool</span> <span class="audio-time caption" data-speaker="John" data-start="6456.960000" data-stop="6461.039000">that uses Org-mode as the storage format.</span> <span class="audio-time caption" data-speaker="John" data-start="6461.040000" data-stop="6465.759000">We talked about org-devonthink.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="6465.000000">1:47:45</span> <strong>org-context saves metadata when refiling to allow restoring the task to its original location afterwards</strong></div><p></p><span class="audio-time caption" data-speaker="John" data-start="6465.760000" data-stop="6467.759000"><strong class="speaker-name">John:</strong> Oh yes, I use org-context a lot as well.</span> <span class="audio-time caption" data-speaker="John" data-start="6467.760000" data-stop="6469.039000">I never mentioned that one.</span> <span class="audio-time caption" data-speaker="John" data-start="6469.040000" data-stop="6471.279000">This is another way that I use metadata.</span> <span class="audio-time caption" data-speaker="John" data-start="6471.280000" data-stop="6475.679000">If I'm on a task, I can be on the stars of</span> <span class="audio-time caption" data-speaker="John" data-start="6475.680000" data-stop="6477.559000">that task and type a short key.</span> <span class="audio-time caption" data-speaker="John" data-start="6477.560000" data-stop="6481.359000">So w will refile a task somewhere else into</span> <span class="audio-time caption" data-speaker="John" data-start="6481.360000" data-stop="6484.679000">another Org-mode file. When you refile a task</span> <span class="audio-time caption" data-speaker="John" data-start="6484.680000" data-stop="6487.199000">in my system, it will supply it</span> <span class="audio-time caption" data-speaker="John" data-start="6487.200000" data-stop="6489.599000">with a rich set of metadata</span> <span class="audio-time caption" data-speaker="John" data-start="6489.600000" data-stop="6491.839000">identifying where the task came from.</span> <span class="audio-time caption" data-speaker="John" data-start="6491.840000" data-stop="6494.119000">That's what org-context does.</span> <span class="audio-time caption" data-speaker="John" data-start="6494.120000" data-stop="6497.959000">It doesn't do that for items that you refile</span> <span class="audio-time caption" data-speaker="John" data-start="6497.960000" data-stop="6500.599000">out of the drafts inbox, because I assume</span> <span class="audio-time caption" data-speaker="John" data-start="6500.600000" data-stop="6502.599000">that everybody came from the drafts inbox.</span> <span class="audio-time caption" data-speaker="John" data-start="6502.600000" data-stop="6505.319000">But if it goes from the inbox to another file</span> <span class="audio-time caption" data-speaker="John" data-start="6505.320000" data-stop="6506.479000">and then to another file,</span> <span class="audio-time caption" data-speaker="John" data-start="6506.480000" data-stop="6509.839000">it'll know it came from that previous file.</span> <span class="audio-time caption" data-speaker="John" data-start="6509.840000" data-stop="6512.199000">This can happen, for example,</span> <span class="audio-time caption" data-speaker="John" data-start="6512.200000" data-stop="6514.559000">if a work task becomes an open-source task.</span> <span class="audio-time caption" data-speaker="John" data-start="6514.560000" data-stop="6519.319000">Using org-context, this process is reversible.</span> <span class="audio-time caption" data-speaker="John" data-start="6519.320000" data-stop="6521.879000">You can go to a task and say, "You know what?</span> <span class="audio-time caption" data-speaker="John" data-start="6521.880000" data-stop="6523.599000">Unrefile yourself back</span> <span class="audio-time caption" data-speaker="John" data-start="6523.600000" data-stop="6526.919000">to where you were." It uses that metadata</span> <span class="audio-time caption" data-speaker="John" data-start="6526.920000" data-stop="6529.899000">to put itself back.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="6529.900000" data-stop="6531.039000"><strong class="speaker-name">Karthik:</strong>  Does this also work</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6531.040000" data-stop="6533.279000">when you archive entries?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="6533.280000" data-stop="6537.279000"><strong class="speaker-name">John:</strong>  org-context advises on top of the archive mechanism</span> <span class="audio-time caption" data-speaker="John" data-start="6537.280000" data-stop="6539.879000">to do the same thing for archiving</span> <span class="audio-time caption" data-speaker="John" data-start="6539.880000" data-stop="6542.039000">that it does for refiling, by thinking</span> <span class="audio-time caption" data-speaker="John" data-start="6542.040000" data-stop="6543.639000">of archiving as a form of refiling.</span> <span class="audio-time caption" data-speaker="John" data-start="6543.640000" data-stop="6546.759000">So it allows you to unarchive a task back</span> <span class="audio-time caption" data-speaker="John" data-start="6546.760000" data-stop="6550.459000">to where you archived it from.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="6550.460000" data-stop="6553.279000"><strong class="speaker-name">Karthik:</strong>  Yeah, because that's...</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="6553.000000">1:49:13</span> <strong>org-context use case: moving packing lists to the phone and back</strong></div><p></p><span class="audio-time caption" data-speaker="John" data-start="6553.280000" data-stop="6554.900000"><strong class="speaker-name">John:</strong>  The main reason I wrote it</span> <span class="audio-time caption" data-speaker="John" data-start="6554.901000" data-stop="6557.659000">and that I use this system is that</span> <span class="audio-time caption" data-speaker="John" data-start="6557.660000" data-stop="6561.519000">I use the iPhone app Plain Org for maintaining</span> <span class="audio-time caption" data-speaker="John" data-start="6561.520000" data-stop="6563.959000">a list of items that I want to have access to</span> <span class="audio-time caption" data-speaker="John" data-start="6563.960000" data-stop="6566.359000">as Org entries on my phone.</span> <span class="audio-time caption" data-speaker="John" data-start="6566.360000" data-stop="6569.839000">So I have a special file called mobile.org</span> <span class="audio-time caption" data-speaker="John" data-start="6569.840000" data-stop="6572.319000">that has its own little tiny hierarchy</span> <span class="audio-time caption" data-speaker="John" data-start="6572.320000" data-stop="6574.639000">of just the items I want to see on my phone.</span> <span class="audio-time caption" data-speaker="John" data-start="6574.640000" data-stop="6577.519000">But an Org entry can't live in two places,</span> <span class="audio-time caption" data-speaker="John" data-start="6577.520000" data-stop="6580.759000">and it doesn't make sense for the phone version</span> <span class="audio-time caption" data-speaker="John" data-start="6580.760000" data-stop="6582.479000">to be a link to the computer version</span> <span class="audio-time caption" data-speaker="John" data-start="6582.480000" data-stop="6584.239000">because it doesn't have access to the computer.</span> <span class="audio-time caption" data-speaker="John" data-start="6584.240000" data-stop="6585.479000">So what I do is,</span> <span class="audio-time caption" data-speaker="John" data-start="6585.480000" data-stop="6587.359000">for the duration of time</span> <span class="audio-time caption" data-speaker="John" data-start="6587.360000" data-stop="6588.959000">that I want it on the phone—</span> <span class="audio-time caption" data-speaker="John" data-start="6588.960000" data-stop="6591.079000">and usually this is packing lists, actually,</span> <span class="audio-time caption" data-speaker="John" data-start="6591.080000" data-stop="6594.079000">because I want to do the packing list on my phone—</span> <span class="audio-time caption" data-speaker="John" data-start="6594.080000" data-stop="6597.039000">I will refile it into mobile.org.</span> <span class="audio-time caption" data-speaker="John" data-start="6597.040000" data-stop="6600.559000">Then when I mark it done, I will unrefile it back</span> <span class="audio-time caption" data-speaker="John" data-start="6600.560000" data-stop="6602.959000">to where it came from, which is typically a trip.</span> <span class="audio-time caption" data-speaker="John" data-start="6602.960000" data-stop="6607.039000">One of the capture templates I have is for trips,</span> <span class="audio-time caption" data-speaker="John" data-start="6607.040000" data-stop="6609.879000">where it will include "get a hotel,"</span> <span class="audio-time caption" data-speaker="John" data-start="6609.880000" data-stop="6611.879000">"get a flight," "do this," "do that"—</span> <span class="audio-time caption" data-speaker="John" data-start="6611.880000" data-stop="6614.519000">it just is like a stock body of ten tasks</span> <span class="audio-time caption" data-speaker="John" data-start="6614.520000" data-stop="6616.999000">that are associated with every trip</span> <span class="audio-time caption" data-speaker="John" data-start="6617.000000" data-stop="6619.639000">that I ever take. Every time I do a trip,</span> <span class="audio-time caption" data-speaker="John" data-start="6619.640000" data-stop="6622.079000">one of those tasks is a packing list task</span> <span class="audio-time caption" data-speaker="John" data-start="6622.080000" data-stop="6624.999000">with a huge checklist underneath it.</span> <span class="audio-time caption" data-speaker="John" data-start="6625.000000" data-stop="6627.759000">I will file that into mobile.org</span> <span class="audio-time caption" data-speaker="John" data-start="6627.760000" data-stop="6630.939000">and unrefile it back.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="6630.940000" data-stop="6633.479000"><strong class="speaker-name">Karthik:</strong>  I see what you meant</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6633.480000" data-stop="6636.439000">by "don't ever have only one system,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6636.440000" data-stop="6639.199000">only ever use Org, put everything in Org."</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6639.200000" data-stop="6640.279000">You can't have a packing list</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6640.280000" data-stop="6644.059000">somewhere else that's full of things to do.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="6644.060000" data-stop="6646.599000"><strong class="speaker-name">John:</strong>  I wouldn't have two. It has to live in this.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="6646.600000" data-stop="6647.399000"><strong class="speaker-name">Karthik:</strong>  Yeah, yeah, I know. I mean,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6647.400000" data-stop="6651.159000">that's one of the—I mean, that is a tooling problem.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6651.160000" data-stop="6655.839000">So there's a psychological problem, I think,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6655.840000" data-stop="6657.999000">with me trying to do things with Org,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6658.000000" data-stop="6661.159000">where present-me and future-me don't agree on</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6661.160000" data-stop="6664.159000">what needs to be done and when, right?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6664.160000" data-stop="6666.159000">Org can't help with that.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6666.160000" data-stop="6667.999000">Then there's a tooling problem,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6668.000000" data-stop="6670.719000">which is just how do I see the things I need</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6670.720000" data-stop="6672.799000">to see on my phone when I need to see them?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6672.800000" data-stop="6675.759000">At least as far as the tooling problem</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6675.760000" data-stop="6678.919000">is concerned, you've got it all sorted.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="6678.920000" data-stop="6682.699000"><strong class="speaker-name">John:</strong>  I'm getting there! Little bit by little bit.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="6682.000000">1:51:22</span> <strong>org-agenda-overlay
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-51-24.240.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-51-24.240.jpg" alt="image from video 01:51:24.240" data-time="01:51:24.240"></a><span class="audio-time caption" data-speaker="John" data-start="6682.700000" data-stop="6684.319000"><strong class="speaker-name">John:</strong>  Then lastly, org-agenda-overlay.</span> <span class="audio-time caption" data-speaker="John" data-start="6684.320000" data-stop="6686.599000">This is what causes the background colors</span> <span class="audio-time caption" data-speaker="John" data-start="6686.600000" data-stop="6688.839000">to differ among my org-agenda items.</span> <span class="audio-time caption" data-speaker="John" data-start="6688.840000" data-stop="6692.239000">org-agenda-overlay allows you—as a property,</span> <span class="audio-time caption" data-speaker="John" data-start="6692.240000" data-stop="6694.279000">or as a file property,</span> <span class="audio-time caption" data-speaker="John" data-start="6694.280000" data-stop="6697.919000">or as a defined Org-mode variable—</span> <span class="audio-time caption" data-speaker="John" data-start="6697.920000" data-stop="6701.599000">to associate categories. I don't...</span> <span class="audio-time caption" data-speaker="John" data-start="6701.600000" data-stop="6704.519000">maybe I even can associate tags.</span> <span class="audio-time caption" data-speaker="John" data-start="6704.520000" data-stop="6705.839000">It might be arbitrary items,</span> <span class="audio-time caption" data-speaker="John" data-start="6705.840000" data-stop="6709.639000">but you can associate it with a face property.</span> <span class="audio-time caption" data-speaker="John" data-start="6709.640000" data-stop="6713.399000">Then you can specify in the face property</span> <span class="audio-time caption" data-speaker="John" data-start="6713.400000" data-stop="6717.799000">any modifications to the Emacs face that you want to make.</span> <span class="audio-time caption" data-speaker="John" data-start="6717.800000" data-stop="6721.599000">I have it set so that—I think I do this by...</span> <span class="audio-time caption" data-speaker="John" data-start="6721.600000" data-stop="6724.439000">yeah, I do it by...</span> <span class="audio-time caption" data-speaker="John" data-start="6724.440000" data-stop="6729.359000">Are you seeing my Emacs at the moment?</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="6729.360000" data-stop="6731.100000"><strong class="speaker-name">Karthik:</strong>  Not yet.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="6731.101000" data-stop="6733.140000"><strong class="speaker-name">John:</strong>  Let me show you the Emacs.</span> <span class="audio-time caption" data-speaker="John" data-start="6733.141000" data-stop="6735.359000">So I do it with org-todo-keyword-faces.</span> <span class="audio-time caption" data-speaker="John" data-start="6735.360000" data-stop="6737.399000">Then I also do it with—oh,</span> <span class="audio-time caption" data-speaker="John" data-start="6737.400000" data-stop="6741.039000">I think that's the only one I do it for.</span> <span class="audio-time caption" data-speaker="John" data-start="6741.040000" data-stop="6743.239000">But you can see here—no, that's the colors</span> <span class="audio-time caption" data-speaker="John" data-start="6743.240000" data-stop="6745.199000">of the keywords. Sorry, let me go here.</span> <span class="audio-time caption" data-speaker="John" data-start="6745.200000" data-stop="6747.039000">It's under, of course,</span> <span class="audio-time caption" data-speaker="John" data-start="6747.040000" data-stop="6749.999000">my org-agenda-overlay use-package declaration.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-52-26.960.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-52-26.960.jpg" alt="image from video 01:52:26.960" data-time="01:52:26.960"></a><span class="audio-time caption" data-speaker="John" data-start="6750.000000" data-stop="6753.599000"><strong class="speaker-name">John:</strong> So I have org-agenda-overlay-by-file-tag.</span> <span class="audio-time caption" data-speaker="John" data-start="6753.600000" data-stop="6756.199000">If the file has this file tag,</span> <span class="audio-time caption" data-speaker="John" data-start="6756.200000" data-stop="6758.079000">then it will apply this background</span> <span class="audio-time caption" data-speaker="John" data-start="6758.080000" data-stop="6760.479000">and foreground to any task from that file.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-52-43.400.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-52-43.400.jpg" alt="image from video 01:52:43.400" data-time="01:52:43.400"></a><span class="audio-time caption" data-speaker="John" data-start="6760.480000" data-stop="6763.479000"><strong class="speaker-name">John:</strong> Then this is overlay-by-olp, which</span> <span class="audio-time caption" data-speaker="John" data-start="6763.480000" data-stop="6767.839000">is the outline-level path. If it's</span> <span class="audio-time caption" data-speaker="John" data-start="6767.840000" data-stop="6770.999000">in a heading called "inbox" (and</span> <span class="audio-time caption" data-speaker="John" data-start="6771.000000" data-stop="6774.219000">of course this supports slashes</span> <span class="audio-time caption" data-speaker="John" data-start="6774.220000" data-stop="6776.100000">so that you can be more specific),</span> <span class="audio-time caption" data-speaker="John" data-start="6776.101000" data-stop="6777.759000">then alter the face. But you could do this</span> <span class="audio-time caption" data-speaker="John" data-start="6777.760000" data-stop="6780.279000">with properties on the individual entries as well,</span> <span class="audio-time caption" data-speaker="John" data-start="6780.280000" data-stop="6785.119000">if you wanted to.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="6785.000000">1:53:05</span> <strong>john-wiegley-theme defines a palette
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-53-15.041.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-53-15.041.jpg" alt="image from video 01:53:15.041" data-time="01:53:15.041"></a><span class="audio-time caption" data-speaker="John" data-start="6785.120000" data-stop="6785.799000"><strong class="speaker-name">John:</strong> I created—let me see,</span> <span class="audio-time caption" data-speaker="John" data-start="6785.800000" data-stop="6794.179000">what did I call it?—oh, john-wiegley-theme.</span> <span class="audio-time caption" data-speaker="John" data-start="6794.180000" data-stop="6795.140000">I love to use rainbow-mode</span> <span class="audio-time caption" data-speaker="John" data-start="6795.141000" data-stop="6797.068000">to help me edit this file.</span> <span class="audio-time caption" data-speaker="John" data-start="6797.069000" data-stop="6801.059000">I wanted to create a consistent color vocabulary</span> <span class="audio-time caption" data-speaker="John" data-start="6801.060000" data-stop="6803.100000">for everything that is in Org-mode.</span> <span class="audio-time caption" data-speaker="John" data-start="6803.101000" data-stop="6805.119000">So all Org-mode tags, keywords,</span> <span class="audio-time caption" data-speaker="John" data-start="6805.120000" data-stop="6809.639000">background colors, everything is harmonized</span> <span class="audio-time caption" data-speaker="John" data-start="6809.640000" data-stop="6812.919000">to use these sets of colors. I have dark,</span> <span class="audio-time caption" data-speaker="John" data-start="6812.920000" data-stop="6816.399000">darker, and darkest variants</span> <span class="audio-time caption" data-speaker="John" data-start="6816.400000" data-stop="6822.379000">because of my black background.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="6822.380000" data-stop="6824.219000"><strong class="speaker-name">Sacha:</strong>  Interesting.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="6824.220000" data-stop="6825.759000"><strong class="speaker-name">John:</strong>  Yeah, I used a Mac app called Paletton</span> <span class="audio-time caption" data-speaker="John" data-start="6825.760000" data-stop="6829.799000">to help me create the harmonious color wheel</span> <span class="audio-time caption" data-speaker="John" data-start="6829.800000" data-stop="6837.679000">that these are chosen from.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="6837.680000" data-stop="6838.639000"><strong class="speaker-name">Sacha:</strong>  Okay, just a quick check.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6838.640000" data-stop="6842.799000">In terms of getting stuff out of this conversation</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6842.800000" data-stop="6845.159000">in two forms that other people can learn from—</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6845.160000" data-stop="6849.799000">if we're thinking of the audio recording</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6849.800000" data-stop="6853.319000">and the transcript—we didn't talk about anything</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6853.320000" data-stop="6856.439000">really weird. So is that reasonably good to go,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6856.440000" data-stop="6859.719000">or do you want to review it first?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="6859.720000" data-stop="6861.140000"><strong class="speaker-name">John:</strong>  No, I would ask the AI</span> <span class="audio-time caption" data-speaker="John" data-start="6861.141000" data-stop="6861.999000">to let me know whether there was anything</span> <span class="audio-time caption" data-speaker="John" data-start="6862.000000" data-stop="6863.519000">in the transcript that I wouldn't want</span> <span class="audio-time caption" data-speaker="John" data-start="6863.520000" data-stop="6865.739000">to become public.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="6865.740000" data-stop="6868.639000"><strong class="speaker-name">Sacha:</strong>  All right. So basically, we do the transcript,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6868.640000" data-stop="6870.239000">we break it up into chapters</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6870.240000" data-stop="6871.559000">so that there are timestamps,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6871.560000" data-stop="6874.039000">you have your AI say whether we should need</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6874.040000" data-stop="6875.319000">to take stuff out.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6875.320000" data-stop="6878.199000">I was thinking maybe we do the transcript,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6878.200000" data-stop="6880.639000">possibly the audio recording, because it's fun</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6880.640000" data-stop="6882.399000">to hear people be excited about stuff—and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6882.400000" data-stop="6884.359000">then you can imagine your cadence as you're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6884.360000" data-stop="6885.679000">talking about things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6885.680000" data-stop="6888.279000">Then we can progressively enhance it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6888.280000" data-stop="6890.199000">with screenshots or clips</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6890.200000" data-stop="6892.119000">or whatever Karthik has patience for.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6892.120000" data-stop="6894.079000">I don't know if we're going</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6894.080000" data-stop="6895.599000">to do the full whole length video,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6895.600000" data-stop="6897.939000">but definitely bits of it.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="6897.940000" data-stop="6898.759000"><strong class="speaker-name">Karthik:</strong>  I'm going to start, and</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6898.760000" data-stop="6900.319000">then I'm going to see how it's going.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6900.320000" data-stop="6902.519000">If it looks like I just have</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6902.520000" data-stop="6906.919000">to draw rectangles over things—let me do like</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6906.920000" data-stop="6913.359000">ten minutes of the video by hand</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6913.360000" data-stop="6916.359000">and see if it took a reasonable amount of time.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6916.360000" data-stop="6918.919000">If it did, then I can extend that</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6918.920000" data-stop="6920.159000">to the whole video. Otherwise,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6920.160000" data-stop="6922.239000">we will probably have to downgrade</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6922.240000" data-stop="6924.079000">to screenshots or something where it's safe</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6924.080000" data-stop="6927.459000">and easy to redact stuff.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="6927.460000" data-stop="6929.439000"><strong class="speaker-name">Sacha:</strong>  And then we can send—</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6929.440000" data-stop="6931.619000">Karthik will coordinate with John about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6931.620000" data-stop="6933.479000">whatever else needs to be removed.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="6933.480000" data-stop="6936.039000"><strong class="speaker-name">Karthik:</strong>  Yeah. So John, I'm going to ping you and ask you,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6936.040000" data-stop="6940.039000">"Is this okay to include? Is this okay</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6940.040000" data-stop="6944.919000">to include?" I'll try to batch these queries</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6944.920000" data-stop="6950.239000">so you can give me—I'll try to be conservative,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6950.240000" data-stop="6952.239000">but yeah, let's see. In any case,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6952.240000" data-stop="6954.879000">I will share the video with you.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6954.880000" data-stop="6959.319000">No one is publishing anything until you give me the okay.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6959.320000" data-stop="6963.079000">So I think the transcript and audio stuff,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6963.080000" data-stop="6966.499000">Sacha, that's on you.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="6966.500000" data-stop="6969.539000"><strong class="speaker-name">Sacha:</strong>  And the text. Yes.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="6969.540000" data-stop="6971.959000"><strong class="speaker-name">Karthik:</strong>  And the video thing—drawing rectangles</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6971.960000" data-stop="6972.999000">and adding blur filters—</span> <span class="audio-time caption" data-speaker="Karthik" data-start="6973.000000" data-stop="6976.419000">I will get started on that.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="6976.000000">1:56:16</span> <strong>Some numbers: 83 packages just related to Org Mode</strong></div><p></p><span class="audio-time caption" data-speaker="John" data-start="6976.420000" data-stop="6977.559000"><strong class="speaker-name">John:</strong>  I just looked at my Emacs init file,</span> <span class="audio-time caption" data-speaker="John" data-start="6977.560000" data-stop="6979.439000">and I realized that</span> <span class="audio-time caption" data-speaker="John" data-start="6979.440000" data-stop="6983.159000">I have 83 different packages being configured</span> <span class="audio-time caption" data-speaker="John" data-start="6983.160000" data-stop="6984.759000">that are related just to Org-mode.</span> <span class="audio-time caption" data-speaker="John" data-start="6984.760000" data-stop="6989.879000">There's a lot being layered on to Org-mode.</span> <span class="audio-time caption" data-speaker="John" data-start="6989.880000" data-stop="6992.199000">I didn't talk about org-contacts,</span> <span class="audio-time caption" data-speaker="John" data-start="6992.200000" data-stop="6994.599000">I didn't talk about org-edna,</span> <span class="audio-time caption" data-speaker="John" data-start="6994.600000" data-stop="6998.879000">I didn't talk about vcard or inline-task—all</span> <span class="audio-time caption" data-speaker="John" data-start="6998.880000" data-stop="7002.519000">of these are things that I use very heavily.</span> <span class="audio-time caption" data-speaker="John" data-start="7002.520000" data-stop="7007.479000">Like org-noter—org-noter is my primary way</span> <span class="audio-time caption" data-speaker="John" data-start="7007.480000" data-stop="7012.039000">of taking notes on PDF files.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="7012.040000" data-stop="7013.079000"><strong class="speaker-name">Sacha:</strong>  You know, if we spend like five minutes</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7013.080000" data-stop="7015.639000">where you just rattle off this list of modules you have,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7015.640000" data-stop="7018.439000">with like a one-line description—beyond the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7018.440000" data-stop="7020.479000">package description—</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7020.480000" data-stop="7022.659000">of how it fits into your workflow...</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="7022.660000" data-stop="7025.259000"><strong class="speaker-name">John:</strong>  I don't even remember what they all do.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="7025.260000" data-stop="7027.140000"><strong class="speaker-name">Sacha:</strong>  That's true. Yeah.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="7027.141000" data-stop="7030.619000"><strong class="speaker-name">John:</strong>  org-transcription I use, like, oh my gosh.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="7030.620000" data-stop="7032.580000"><strong class="speaker-name">Sacha:</strong>  A topic for another conversation.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="7032.581000" data-stop="7033.719000"><strong class="speaker-name">John:</strong>  Yeah, I think it's another—</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="7033.720000" data-stop="7035.479000"><strong class="speaker-name">Sacha:</strong>  I think that's one of the fun things that we had</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7035.480000" data-stop="7037.479000">back when we did the first Emacs Chat:</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7037.480000" data-stop="7039.319000">just going through the configuration.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7039.320000" data-stop="7040.999000">Because when you're looking at it, you're like,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7041.000000" data-stop="7044.159000">"Oh yeah, that package, this is how I use it,"</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7044.160000" data-stop="7046.719000">or, "Oh yeah, I totally forgot about that one."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7046.720000" data-stop="7049.919000">So at some point we can do a walkthrough that's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7049.920000" data-stop="7051.239000">got config so you can say,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7051.240000" data-stop="7055.899000">"Oh yeah, this is what I use for this."</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="7055.900000" data-stop="7058.260000"><strong class="speaker-name">Karthik:</strong>  Just use-package block after use-package block.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="7058.261000" data-stop="7059.819000"><strong class="speaker-name">John:</strong>  Yes, that's right. One after the other.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="7059.820000" data-stop="7061.079000"><strong class="speaker-name">Sacha:</strong>  But it doesn't have to be today.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="7061.080000" data-stop="7064.039000"><strong class="speaker-name">Karthik:</strong>  Yeah, definitely not. Yeah.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="7064.040000" data-stop="7066.519000">I think Sacha and I have our hands full</span> <span class="audio-time caption" data-speaker="Karthik" data-start="7066.520000" data-stop="7072.139000">trying to get this video ready to be published.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="7072.140000" data-stop="7074.239000"><strong class="speaker-name">John:</strong>  Yeah. Well, at least I think we scratched the surface.</span> <span class="audio-time caption" data-speaker="John" data-start="7074.240000" data-stop="7078.599000">I think we covered some of the big, broad strokes.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="7078.600000" data-stop="7078.940000"><strong class="speaker-name">Sacha:</strong>  Yeah.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="7078.941000" data-stop="7081.539000"><strong class="speaker-name">Karthik:</strong>  Yeah, I would say so.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="7081.540000" data-stop="7082.039000"><strong class="speaker-name">Sacha:</strong>  So this was a great idea.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7082.040000" data-stop="7085.879000">And thank you for taking the time to do it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="7085.000000">1:58:05</span> <strong>Org Mode inspiration</strong></div><p></p><span class="audio-time caption" data-speaker="Karthik" data-start="7085.880000" data-stop="7086.959000"><strong class="speaker-name">Karthik:</strong>  I hope people get an idea</span> <span class="audio-time caption" data-speaker="Karthik" data-start="7086.960000" data-stop="7088.239000">of what's possible with Org-mode,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="7088.240000" data-stop="7094.279000">because the common problem is that people say,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="7094.280000" data-stop="7096.879000">"You can do everything, you can manage your life</span> <span class="audio-time caption" data-speaker="Karthik" data-start="7096.880000" data-stop="7099.359000">in Org-mode," and then when someone asks you</span> <span class="audio-time caption" data-speaker="Karthik" data-start="7099.360000" data-stop="7102.999000">to show how, you see some very anodyne,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="7103.000000" data-stop="7106.439000">pedestrian things like to-do lists,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="7106.440000" data-stop="7108.999000">and that's not what we're talking about.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="7109.000000" data-stop="7112.099000">That's not the scale of things.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="7112.100000" data-stop="7113.359000">Yeah, yeah, yeah.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="7113.360000" data-stop="7114.559000">"And don't forget the milk,"</span> <span class="audio-time caption" data-speaker="Karthik" data-start="7114.560000" data-stop="7116.799000">and this and that. No, that's not...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="7116.800000" data-stop="7118.180000"><strong class="speaker-name">Sacha:</strong>  Yeah, no, that's why we should talk about...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7118.181000" data-stop="7120.460000">40,000 entries—what were you saying...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7120.461000" data-stop="7126.580000">9,700 tasks and 1,200 of them are open.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7126.581000" data-stop="7128.139000">Yeah, that's the kind of scale we're looking at.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="7128.140000" data-stop="7131.919000"><strong class="speaker-name">Karthik:</strong>  And it's been maintained for 20 years at least.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="7131.000000">1:58:51</span> <strong>Statistics</strong></div><p></p><span class="audio-time caption" data-speaker="John" data-start="7131.920000" data-stop="7133.119000"><strong class="speaker-name">John:</strong>  Actually, let's see, talking about—</span> <span class="audio-time caption" data-speaker="John" data-start="7133.120000" data-stop="7135.959000">Let me share my terminal</span> <span class="audio-time caption" data-speaker="John" data-start="7135.960000" data-stop="7138.639000">because I haven't looked at this in a little bit.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="7138.640000" data-stop="7144.519000"><strong class="speaker-name">John:</strong> So if we go into my Org and I type <code>make stats</code>.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-59-05.480.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-59-05.480.jpg" alt="image from video 01:59:05.480" data-time="01:59:05.480"></a><span class="audio-time caption" data-speaker="John" data-start="7144.520000" data-stop="7151.159000"><strong class="speaker-name">John:</strong> So this is 3,170 files, 40 megabytes of data.</span> <span class="audio-time caption" data-speaker="John" data-start="7151.160000" data-stop="7154.699000">Oh, it is over 40,000 entries now.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="7154.700000" data-stop="7156.319000"><strong class="speaker-name">Sacha:</strong>  Yeah, yeah, yeah.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="7156.320000" data-stop="7160.499000"><strong class="speaker-name">John:</strong>  28,000 are TODO items.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="7160.500000" data-stop="7162.519000"><strong class="speaker-name">Sacha:</strong>  Okay, okay. Well, let's update that.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="7162.520000" data-stop="7166.599000"><strong class="speaker-name">John:</strong>  818 are open. So more than half</span> <span class="audio-time caption" data-speaker="John" data-start="7166.600000" data-stop="7175.639000">of my Org-mode entries are TODO items.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="7175.640000" data-stop="7177.399000"><strong class="speaker-name">Sacha:</strong>  Very cool. And somehow the combination</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7177.400000" data-stop="7180.639000">of org-ql and the Postgres database makes it easy</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7180.640000" data-stop="7182.599000">to just fly through all of those files</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7182.600000" data-stop="7186.099000">looking for the ones that you need.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="7186.100000" data-stop="7186.839000"><strong class="speaker-name">John:</strong>  I mean, "easy"</span> <span class="audio-time caption" data-speaker="John" data-start="7186.840000" data-stop="7189.559000">is a very charitable word.</span> <p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-59-49.480.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-01-59-49.480.jpg" alt="image from video 01:59:49.480" data-time="01:59:49.480"></a><span class="audio-time caption" data-speaker="Sacha" data-start="7189.560000" data-stop="7190.859000"><strong class="speaker-name">Sacha:</strong>  "Fast," at least.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="7190.860000" data-stop="7192.660000"><strong class="speaker-name">John:</strong>  Oh wow, I have three items</span> <span class="audio-time caption" data-speaker="John" data-start="7192.661000" data-stop="7194.220000">that actually have B priorities.</span> <span class="audio-time caption" data-speaker="John" data-start="7194.221000" data-stop="7196.599000">I wonder what those mean.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="7196.600000" data-stop="7197.559000"><strong class="speaker-name">Sacha:</strong>  I'm surprised that your validation</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7197.560000" data-stop="7200.459000">and normalization functions</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7200.460000" data-stop="7200.839000">let those slip past you.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="7200.840000" data-stop="7202.380000"><strong class="speaker-name">John:</strong>  I don't think I disallow B.</span> <span class="audio-time caption" data-speaker="John" data-start="7202.381000" data-stop="7204.399000">I think I had B have a specific meaning at one point,</span> <span class="audio-time caption" data-speaker="John" data-start="7204.400000" data-stop="7210.699000">because B stands out so much.</span> <span class="audio-time caption" data-speaker="John" data-start="7210.700000" data-stop="7214.779000">I had ascribed it to some special meaning.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="7214.780000" data-stop="7218.020000"><strong class="speaker-name">Sacha:</strong>  I like your stats. They're fun.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="7218.000000">2:00:18</span> <strong>Most-common properties: ID, CREATED
</strong></div><p></p><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-02-00-21.240.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/video1405524687-02-00-21.240.jpg" alt="image from video 02:00:21.240" data-time="02:00:21.240"></a><span class="audio-time caption" data-speaker="John" data-start="7218.021000" data-stop="7218.560000"><strong class="speaker-name">John:</strong>  Yeah. Look at that.</span> <span class="audio-time caption" data-speaker="John" data-start="7218.561000" data-stop="7220.319000">My most commonly occurring properties are ID</span> <span class="audio-time caption" data-speaker="John" data-start="7220.320000" data-stop="7221.719000">and CREATED. That's right,</span> <span class="audio-time caption" data-speaker="John" data-start="7221.720000" data-stop="7224.719000">that's what it should be.</span> <span class="audio-time caption" data-speaker="John" data-start="7224.720000" data-stop="7229.119000">Oh, but not every entry has a hash, clearly.</span> <span class="audio-time caption" data-speaker="John" data-start="7229.120000" data-stop="7233.179000">I wonder how that happened.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="7233.000000">2:00:33</span> <strong>Log entries are useful for notes by date</strong></div><p></p><span class="audio-time caption" data-speaker="John" data-start="7233.180000" data-stop="7234.499000"><strong class="speaker-name">John:</strong> And we didn't talk about</span> <span class="audio-time caption" data-speaker="John" data-start="7234.500000" data-stop="7236.220000">how useful log entries are.</span> <span class="audio-time caption" data-speaker="John" data-start="7236.221000" data-stop="7236.700000">That's actually—</span> <span class="audio-time caption" data-speaker="John" data-start="7236.701000" data-stop="7240.060000">I did try to veer away from Org-mode in like 2010,</span> <span class="audio-time caption" data-speaker="John" data-start="7240.061000" data-stop="7241.540000">and the reason I couldn't</span> <span class="audio-time caption" data-speaker="John" data-start="7241.541000" data-stop="7244.979000">was because log entries are too useful.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="7244.980000" data-stop="7247.619000"><strong class="speaker-name">Sacha:</strong>  Oh, now I'm really curious.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="7247.620000" data-stop="7249.719000"><strong class="speaker-name">John:</strong>  Yeah. Just the ability—while you're working on it—</span> <span class="audio-time caption" data-speaker="John" data-start="7249.720000" data-stop="7251.879000">you know, some tasks live a long time.</span> <span class="audio-time caption" data-speaker="John" data-start="7251.880000" data-stop="7254.319000">There was a time when Aetna wouldn't honor</span> <span class="audio-time caption" data-speaker="John" data-start="7254.320000" data-stop="7256.559000">one of my insurance claims</span> <span class="audio-time caption" data-speaker="John" data-start="7256.560000" data-stop="7259.199000">and it took me nine months to resolve it</span> <span class="audio-time caption" data-speaker="John" data-start="7259.200000" data-stop="7261.639000">with them. But every single time I talked</span> <span class="audio-time caption" data-speaker="John" data-start="7261.640000" data-stop="7263.039000">to them on the phone or by email,</span> <span class="audio-time caption" data-speaker="John" data-start="7263.040000" data-stop="7265.119000">I would log an Org-mode note</span> <span class="audio-time caption" data-speaker="John" data-start="7265.120000" data-stop="7267.639000">of what we talked about and who I talked to.</span> <span class="audio-time caption" data-speaker="John" data-start="7267.640000" data-stop="7269.439000">So as time went on and</span> <span class="audio-time caption" data-speaker="John" data-start="7269.440000" data-stop="7271.199000">I would get on the phone with a new person,</span> <span class="audio-time caption" data-speaker="John" data-start="7271.200000" data-stop="7273.159000">I would be like, "Well, on this date I talked</span> <span class="audio-time caption" data-speaker="John" data-start="7273.160000" data-stop="7274.839000">to this person and they said this.</span> <span class="audio-time caption" data-speaker="John" data-start="7274.840000" data-stop="7277.479000">Then on this date, this person said this."</span> <span class="audio-time caption" data-speaker="John" data-start="7277.480000" data-stop="7278.919000">I would overwhelm them with</span> <span class="audio-time caption" data-speaker="John" data-start="7278.920000" data-stop="7281.319000">so much concrete information about how much</span> <span class="audio-time caption" data-speaker="John" data-start="7281.320000" data-stop="7282.399000">I had done to resolve this,</span> <span class="audio-time caption" data-speaker="John" data-start="7282.400000" data-stop="7286.919000">that they would be like, "Okay, okay, I get it."</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="7286.920000" data-stop="7289.779000"><strong class="speaker-name">Sacha:</strong>  This person keeps receipts.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="7289.780000" data-stop="7290.720000"><strong class="speaker-name">Karthik:</strong>  How did you get</span> <span class="audio-time caption" data-speaker="Karthik" data-start="7290.721000" data-stop="7292.340000">that log into Org-mode?</span> <span class="audio-time caption" data-speaker="Karthik" data-start="7292.341000" data-stop="7294.340000">Were you on your computer</span> <span class="audio-time caption" data-speaker="Karthik" data-start="7294.341000" data-stop="7294.939000">while you were on the phone with them?</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="7294.940000" data-stop="7296.700000"><strong class="speaker-name">John:</strong>  Yes, I was on the computer</span> <span class="audio-time caption" data-speaker="John" data-start="7296.701000" data-stop="7300.839000">while I was on the phone.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="7300.840000" data-stop="7303.519000"><strong class="speaker-name">Karthik:</strong>  Okay. I'm just wondering, that's the kind of thing</span> <span class="audio-time caption" data-speaker="Karthik" data-start="7303.520000" data-stop="7304.819000">I could never manage,</span> <span class="audio-time caption" data-speaker="Karthik" data-start="7304.820000" data-stop="7306.460000">because I don't know where I'll be on the phone.</span> <span class="audio-time caption" data-speaker="Karthik" data-start="7306.461000" data-stop="7308.540000">I won't be near Org-mode.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="7308.000000">2:01:48</span> <strong>Transcripts are great too</strong></div><p></p><span class="audio-time caption" data-speaker="John" data-start="7308.541000" data-stop="7310.519000"><strong class="speaker-name">John:</strong>  Well, nowadays the iPhone lets you</span> <span class="audio-time caption" data-speaker="John" data-start="7310.520000" data-stop="7311.679000">record your phone conversations.</span> <span class="audio-time caption" data-speaker="John" data-start="7311.680000" data-stop="7313.159000">So you can ask them if it's okay to record,</span> <span class="audio-time caption" data-speaker="John" data-start="7313.160000" data-stop="7317.839000">and then—hey, AI is your friend.</span> <p></p><span class="audio-time caption" data-speaker="Karthik" data-start="7317.840000" data-stop="7318.839000"><strong class="speaker-name">Karthik:</strong>  Okay.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="7318.840000" data-stop="7320.299000"><strong class="speaker-name">John:</strong>  I love transcripts now.</span> <span class="audio-time caption" data-speaker="John" data-start="7320.300000" data-stop="7324.219000">I use them for all kinds of things.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="7324.220000" data-stop="7325.900000"><strong class="speaker-name">Sacha:</strong>  I agree. Transcripts are wonderful.</span> <p></p><span class="audio-time caption" data-speaker="John" data-start="7325.901000" data-stop="7327.380000"><strong class="speaker-name">John:</strong>  Yeah. And I record them all.</span> <span class="audio-time caption" data-speaker="John" data-start="7327.381000" data-stop="7329.720000">Every meeting file, if I can,</span> <span class="audio-time caption" data-speaker="John" data-start="7329.721000" data-stop="7331.900000">I just put the whole transcript in the file,</span> <span class="audio-time caption" data-speaker="John" data-start="7331.901000" data-stop="7337.839000">because it helps with searching in the future.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="7337.840000" data-stop="7339.439000"><strong class="speaker-name">Sacha:</strong>  Yeah. All right. And on that note, we are going</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7339.440000" data-stop="7342.360000">to turn this into a transcript and possibly [video].</span></div>
<p></p>


</details>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/07/chatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur/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%2F07%2Fchatting-with-john-wiegley-about-personal-information-management-and-karthik-chikmagalur%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">2026-07-06 Emacs news</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/07/2026-07-06-emacs-news/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-07-06T16:20:27Z</updated>
    <published>2026-07-06T16:20:27Z</published>
    <category term="emacs" />
<category term="emacs-news" />
		<id>https://sachachua.com/blog/2026/07/2026-07-06-emacs-news/</id>
		<content type="html"><![CDATA[<p>
Wow, the June Emacs Carnival gathered 22 entries on the topic of <a href="https://rossabaker.com/blog/underappreciated-emacs-built-ins/">Underappreciated Emacs built-ins</a>. Looking for something to write about next? <a href="https://plaindrops.de/blog/2026/emacscarnival2607/">"Programming"</a> is the Emacs Carnival theme for July. Thanks to Ross for hosting in June and Andy for hosting in July. Also, there was a fair bit of discussion about <a href="https://www.diva-portal.org/smash/record.jsf?pid=diva2%3A2052282&amp;dswid=9863">The GNU Emacs Architecture : Unlocking the Core</a>. Have fun!
</p>

<ul class="org-ul">
<li>Upcoming events (<a href="https://emacslife.com/calendar/emacs-calendar.ics">iCal file</a>, <a href="https://emacslife.com/calendar/">Org</a>):
<ul class="org-ul">
<li>Emacs.si (in person): Emacs.si meetup #7 2026 (v #živo) <a href="https://dogodki.kompot.si/events/88d59360-d89a-42cc-b567-ed39ac5186fb">https://dogodki.kompot.si/events/88d59360-d89a-42cc-b567-ed39ac5186fb</a> Mon Jul 6 1900 CET</li>
<li>OrgMeetup (virtual) <a href="https://orgmode.org/worg/orgmeetup.html">https://orgmode.org/worg/orgmeetup.html</a> Wed Jul 8 0900 America/Vancouver - 1100 America/Chicago - 1200 America/Toronto - 1600 Etc/GMT - 1800 Europe/Berlin - 2130 Asia/Kolkata &ndash; Thu Jul 9 0000 Asia/Singapore</li>
<li>Atelier Emacs Montpellier (in person) <a href="https://lebib.org/date/atelier-emacs">https://lebib.org/date/atelier-emacs</a> Fri Jul 10 1800 Europe/Paris</li>
<li>London Emacs (in person): Emacs London meetup <a href="https://www.meetup.com/london-emacs-hacking/events/315050696/">https://www.meetup.com/london-emacs-hacking/events/315050696/</a> Tue Jul 14 1800 Europe/London</li>
<li>Emacs Berlin: In-Person-Only Emacs-Berlin Stammtisch <a href="https://emacs-berlin.org/">https://emacs-berlin.org/</a> Tue Jul 14 1900 Europe/Berlin</li>
<li>M-x Research: TBA <a href="https://m-x-research.github.io/">https://m-x-research.github.io/</a> Wed Jul 15 0800 America/Vancouver - 1000 America/Chicago - 1100 America/Toronto - 1500 Etc/GMT - 1700 Europe/Berlin - 2030 Asia/Kolkata - 2300 Asia/Singapore</li>
<li>OrgDevMeetup <a href="https://bbb.emacsverse.org/rooms/orgdevmeetup">https://bbb.emacsverse.org/rooms/orgdevmeetup</a> Sat Jul 18 0900 America/Vancouver - 1100 America/Chicago - 1200 America/Toronto - 1600 Etc/GMT - 1800 Europe/Berlin - 2130 Asia/Kolkata &ndash; Sun Jul 19 0000 Asia/Singapore</li>
</ul></li>
<li>Beginner:
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=btAOBkcLEkg">Learning Vanilla Emacs from Scratch with Prot as a Neovim User</a> (01:54:04, <a href="https://www.youtube.com/watch?v=Yyu2UzuiGEU">highlights</a> 08:28, <a href="https://linkarzu.com/posts/emacs/prot-love-letter/">linkarzu</a>, <a href="https://protesilaos.com/codelog/2026-07-04-emacs-for-beginners-with-linkarzu/">Protesilaos</a>, <a href="https://www.reddit.com/r/emacs/comments/1uoxip0/learning_vanilla_emacs_from_scratch_with_prot_as/">Reddit</a>)</li>
<li><a href="https://youtu.be/xVmqPzYnqaw">Learning Emacs with The Professor from University of Victoria</a> (<a href="https://www.reddit.com/r/emacs/comments/1uky1wo/learning_emacs_with_the_professor_from_university/">Reddit</a>)</li>
</ul></li>
<li>Emacs configuration:
<ul class="org-ul">
<li><a href="https://emacsair.me/2026/07/03/melpa-channels">Jonas Bernoulli: Announcing two new experimental MELPA channels</a> (<a href="https://www.reddit.com/r/emacs/comments/1umm2zp/announcing_two_new_experimental_melpa_channels/">Reddit</a>, <a href="https://irreal.org/blog/?p=13920">Irreal</a>)</li>
<li><a href="https://emacsredux.com/blog/2026/07/03/automating-emacs-screenshots/">Emacs Redux: Automating Emacs Screenshots</a></li>
<li><a href="https://github.com/masutaka/dotfiles-public/blob/d1459a11188a6f8a4f5b9adfab1875f0d8d1271c/.emacs.d/init.el#L945-L972">dotfiles-public/.emacs.d/init.el</a> (<a href="https://mstdn.love/@masutaka/116867724706322494">@masutaka@mstdn.love</a>)</li>
</ul></li>
<li>Emacs Lisp:
<ul class="org-ul">
<li><a href="https://github.com/elij/graph-fa2">Introducing graph-fa2 (browser free graph rendering)</a> (<a href="https://www.reddit.com/r/emacs/comments/1umgze1/introducing_graphfa2_browser_free_graph_rendering/">Reddit</a>)</li>
</ul></li>
<li>Appearance:
<ul class="org-ul">
<li><a href="https://codeberg.org/jjba23/modusregel">modusregel: a simple, beautiful mode-line for Emacs</a> (<a href="https://www.reddit.com/r/emacs/comments/1ulvnsa/modusregel_a_simple_beautiful_modeline_for_emacs/">Reddit</a>)</li>
</ul></li>
<li>Navigation:
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=JEcDDuYlfiM">How to Search For Text in Emacs</a> (01:45)</li>
<li><a href="https://metaredux.com/posts/2026/07/01/projectile-3-0.html">Meta Redux: Projectile 3.0</a> and <a href="https://metaredux.com/posts/2026/07/04/projectile-3-1.html">3.1</a></li>
<li><a href="https://www.youtube.com/watch?v=WO6NzhJmzZc">Emacs-LinkXall Hyperlinking In Program Source Files</a> (02:36)</li>
</ul></li>
<li>Dired:
<ul class="org-ul">
<li><a href="https://emacs.dyerdwelling.family/emacs/20260515110240-emacs&#45;&#45;that-moment-dired-eats-your-file-and-why-trash-saves-you/">James Dyer: That Moment Dired Eats Your File and why Trash Saves You</a> (<a href="https://irreal.org/blog/?p=13914">Irreal</a>)</li>
<li><a href="https://eugene-andrienko.com/2026-07-05-my-emacs-configuration-dired.html">My Emacs configuration (Dired)</a> (<a href="https://mastodon.bsd.cafe/@evgandr/116869090588971490">@evgandr@bsd.cafe</a>)</li>
</ul></li>
<li>Writing:
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1uo1rmu/abbreviations_but_locally/">Abbreviations, but locally</a></li>
<li><a href="https://protesilaos.com/codelog/2026-07-02-emacs-french-input-method-jinx-spell/">Protesilaos: Emacs: write with input method (e.g. French) and Jinx for spelling</a> (<a href="https://irreal.org/blog/?p=13924">Irreal</a>, <a href="https://youtu.be/UjCbNOqUgTs">YouTube</a> 11:50, <a href="https://www.reddit.com/r/emacs/comments/1ulktr6/new_prot_video_write_with_input_method_eg_french/">Reddit</a>)</li>
</ul></li>
<li>Denote:
<ul class="org-ul">
<li><a href="https://chrismaiorana.com/god-mode-notes/">Chris Maiorana: God mode notes with Denote and Consult Notes</a> (<a href="https://www.youtube.com/watch?v=_F8c5kLQT70">YouTube</a>, 15:04)</li>
</ul></li>
<li>Org Mode:
<ul class="org-ul">
<li><a href="https://list.orgmode.org/178278315680.690764.12616208662188412656@gmx.de">Org Mode requests: [RFC] ob-core: org-babel-call &ndash; a documented way to call a block from Lisp</a></li>
<li><a href="https://whhone.com/posts/one-line-per-day-diary-in-org-mode/">Wai Hon: One-Line-Per-Day Diary in Org-mode</a></li>
<li><a href="https://github.com/haji-ali/org-clock-lock">org-clock-lock: Mandatory task focus based on org-clock</a> (<a href="https://www.reddit.com/r/emacs/comments/1ukpk3c/orgclocklock_mandatory_task_focus_based_on/">Reddit</a>)</li>
<li><a href="https://www.youtube.com/watch?v=RJqRwlVvB3E">Seamless view/editing of markdown as org-mode</a> (18:51)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1un91s6/memorize_vocabulary_on_the_go_on_emacs_android/">Memorize vocabulary on the go on Emacs Android</a> org-srs</li>
<li><a href="https://list.orgmode.org/orgmode/878q7uzip7.fsf@localhost/">[BLOG] #30 bbb:OrgMeetup on Wed, May 13, 19:00 UTC+3 - Ihor Radchenko</a> (<a href="https://fosstodon.org/@yantar92/116846070441664749">@yantar92@fosstodon.org</a>)</li>
<li>Org development:
<ul class="org-ul">
<li><a href="https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/etc/ORG-NEWS?id=13a25caeb2f71b2ddf19a8fae3316195302e8959">ox-beamer.el: add ltx-talk support</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/etc/ORG-NEWS?id=4f39f176dc0f5a71762a0279b14447c99f56fb98">lisp/ol.el: Add option `org-link-default-file-link-description'</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/etc/ORG-NEWS?id=fd5d3b1a599aad17ff67a2625a1725df520976ce">ox-latex.el: Add DocumentMetadata</a></li>
</ul></li>
</ul></li>
<li>Coding:
<ul class="org-ul">
<li><a href="https://ray-on-emacs.blogspot.com/2026/07/emacs-carnival-july-2026-programming.html">Raymond Zeitler: Emacs Carnival July 2026 &ndash; Programming</a></li>
<li><a href="https://www.youtube.com/watch?v=YV1kyVE6SvU">Browse GitHub repos directly from find-file dialog</a> (29:11)</li>
<li><a href="https://emacsair.me/2026/07/01/magit-4.6">Jonas Bernoulli: Magit 4.6 released</a> (<a href="https://irreal.org/blog/?p=13916">Irreal</a>, <a href="https://www.reddit.com/r/emacs/comments/1ukukzs/magit_v460_released/">Reddit</a>)</li>
<li><a href="https://tusharhero.codeberg.page/underappreciated-builtin-gud.html">tusharhero: Underappreciated builtin: Grand Unified Debugger</a> (<a href="https://lobste.rs/s/g6wquq/underappreciated_builtin_grand_unified">lobste.rs</a>)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1ukoy32/til_flycheck_can_explain_errors/">TIL: Flycheck can explain errors</a></li>
<li><a href="https://metaredux.com/posts/2026/07/01/sayid-redux.html">Meta Redux: Sayid Redux</a></li>
<li><a href="https://metaredux.com/posts/2026/06/30/cider-2-0-is-brewing.html">Meta Redux: CIDER 2.0 is Brewing…</a></li>
<li><a href="https://metaredux.com/posts/2026/07/05/clojurists-together-update-may-june-2026.html">Meta Redux: Clojurists Together Update: May and June 2026</a></li>
</ul></li>
<li>Shells:
<ul class="org-ul">
<li><a href="https://mastodon.social/@jamescherti/116874196681776761">How to build the Emacs vterm module with custom CFLAGS and LDFLAGS (@jamescherti)</a></li>
</ul></li>
<li>Web:
<ul class="org-ul">
<li><a href="https://www.bounga.org/emacs/2026/07/01/shpaste-a-paste-sr-ht-client-for-emacs/">Nicolas Cavigneaux: shpaste: a paste.sr.ht Client for Emacs</a> ( <a href="https://www.reddit.com/r/emacs/comments/1ul1mcp/shpaste_an_emacs_client_for_pastesrht/">Reddit</a>, <a href="https://sr.ht/~bounga/shpaste">Sourcehut</a>)</li>
<li><a href="https://sachachua.com/blog/2026/07/une-navigation-simplifiee-sur-mon-blog-grace-a-eww-et-emacs/">Sacha Chua: Une navigation simplifiée sur mon blog grâce à EWW (et Emacs !)</a></li>
</ul></li>
<li>Mail, news, and chat:
<ul class="org-ul">
<li><a href="https://www.bounga.org/emacs/2026/06/30/sign-always-encrypt-when-possible-in-mu4e/">Nicolas Cavigneaux: Sign Always, Encrypt When Possible: Automatic GPG in mu4e</a> (<a href="https://irreal.org/blog/?p=13918">Irreal</a>)</li>
<li><a href="https://joarvarndt.se/mu4e-wkd.html">Joar von Arndt: Automatically Find PGP Keys in Mu4e</a></li>
<li><a href="https://www.bounga.org/emacs/2026/07/02/emacs-mailto-open-macos-mailto-links-in-emacs/">Nicolas Cavigneaux: emacs-mailto: Open macOS mailto: Links in Emacs</a> (<a href="https://www.reddit.com/r/emacs/comments/1ul1pew/emacsmailto_make_macos_mailto_links_open_in_emacs/">Reddit</a>, <a href="https://sr.ht/~bounga/emacs-mailto">Sourcehut</a>)</li>
</ul></li>
<li>Doom Emacs:
<ul class="org-ul">
<li><a href="https://youtube.com/watch?v=HnL77t4IsBY&amp;is=cTej7C68MiOhu-Xk">Doom Emacs: Why I Chose It Over Vim and Never Looked Back</a> (<a href="https://www.reddit.com/r/emacs/comments/1ul3pv3/doom_emacs_why_i_chose_it_over_vim_and_never/">Reddit</a>)
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=s7FOH66QFU8">Neovim user Reacts to Bashbunni's Doom Emacs Video</a> (22:55)</li>
<li><a href="https://www.youtube.com/watch?v=76DxSjrBOBg">3 Neovim Users Talk About Emacs, Which One is Better?</a> (35:45)</li>
</ul></li>
</ul></li>
<li>Multimedia:
<ul class="org-ul">
<li><a href="https://github.com/LuciusChen/ytm-radio">ytm-radio is an Emacs-native YouTube Music player</a> (<a href="https://www.reddit.com/r/emacs/comments/1ulgiin/ytmradio_is_an_emacsnative_youtube_music_player/">Reddit</a>)</li>
</ul></li>
<li>LLMs:
<ul class="org-ul">
<li><a href="https://willemvandenende.com/blog/engineering/removing-a-special-cause-of-variation-in-small-steps">Removing a special cause of variation in small steps — Willem van den Ende</a> (<a href="https://mastodon.social/@mostalive/116856245273974288">@mostalive</a>)</li>
<li><a href="https://getsmall.xyz/post/cmr9fur9c0071ajx9fur7me1j">Emacs and AI, the combination you've been missing</a></li>
<li><a href="https://www.youtube.com/watch?v=T9HSTSm7i5M">New experimental feature of gptel</a> (33:20)</li>
<li><a href="https://www.youtube.com/watch?v=kIum-ciAtuY">AI-driven keyboard macros in emacs</a> (01:06)</li>
<li><a href="https://v.redd.it/7ntsi22xriah1">Glasspane: A proof of concept for a transparent bridge between mobile interaction and executing Elisp</a> (<a href="https://www.reddit.com/r/emacs/comments/1uk7m5k/glasspane_a_proof_of_concept_for_a_transparent/">Reddit</a>)
<ul class="org-ul">
<li><a href="https://v.redd.it/0v73b3yosiah1">Secondary Glasspane Demo: Composing Android Companion app using Elisp.</a></li>
</ul></li>
</ul></li>
<li>Community:
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1ujd8u1/fortnightly_tips_tricks_and_questions_20260630/">Fortnightly Tips, Tricks, and Questions — 2026-06-30 / week 26</a>: language detection, meow and ghostel, debug-on-variable-change, &hellip;</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1uljlxt/what_do_you_do_in_emacs/">What do you do in emacs?</a></li>
<li><a href="https://www.reddit.com/r/emacs/comments/1uo4t5e/new_contributors_to_gnu_emacs_over_time/">New contributors to GNU Emacs over time</a></li>
<li><a href="https://sachachua.com/blog/2026/07/re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu/">Sacha Chua: Re: React to Sacha and Prot Newbies and Starter Kits Emacs Video - linkarzu</a> (<a href="https://www.youtube.com/watch?v=Ar4c0EU4rIs">YouTube</a>, 14:26)</li>
<li><a href="https://www.youtube.com/watch?v=edAcFgkJkSA">Finish Prot and Sacha Video | Should I Take Emacs Coaching Sessions with Prot?</a> (05:09:08)</li>
<li><a href="https://planet.emacslife.com/social.org">Planet Emacslife now has Org Social output</a> (<a href="https://activity.andros.dev/@andros/statuses/01KWVRR14V5WX42ZD3KWD68PKE">@andros@activity.andros.dev</a>)</li>
</ul></li>
<li>Other:
<ul class="org-ul">
<li><a href="https://www.diva-portal.org/smash/record.jsf?pid=diva2%3A2052282&amp;dswid=9863">The GNU Emacs Architecture: Unlocking the Core</a> (<a href="https://www.diva-portal.org/smash/get/diva2:2052282/FULLTEXT01.pdf">full-text PDF</a>, <a href="https://www.reddit.com/r/emacs/comments/1uknygh/the_gnu_emacs_architecture_unlocking_the_core/">Reddit</a>, <a href="https://news.ycombinator.com/item?id=48747733">HN</a>, <a href="https://lobste.rs/s/t1rsta/gnu_emacs_architecture">lobste.rs</a>)</li>
<li><a href="https://melpa.org/#/anju">Anju 1.8.0: Right-click context menu additions like Copy Link Address</a> (<a href="https://sfba.social/@kickingvegas/116851174834229892">@kickingvegas@sfba.social</a>)</li>
<li><a href="https://mbork.pl/2026-06-29_opening_pdfs_in_pdf-tools">Marcin Borkowski: opening pdfs in pdf-tools</a> emacsclient.desktop file for making Emacs the default PDF viewer in Linux</li>
<li><a href="https://ray-on-emacs.blogspot.com/2026/06/create-date-books-planners-and.html">Raymond Zeitler: Create Date Books, Planners and Calendars with Emacs</a></li>
<li><a href="https://codeberg.org/benja2998/neofetch.el">neofetch.el</a> (<a href="https://www.reddit.com/r/emacs/comments/1ummg76/neofetchel/">Reddit</a>) - system information</li>
<li><a href="https://chaos.social/@root42/116866568649413130">Printing with Emacs under recent MacOS releases (@root42@chaos.social)</a></li>
<li><a href="https://www.youtube.com/watch?v=3rqw2XdDHIs">How to Connect Official Android Emacs to the Pixel Linux Terminal (No Root!)</a> (00:20) - toybox nc (netcat) to make a local connection</li>
<li><a href="https://www.youtube.com/watch?v=xXfvEjipmC4">Installation and Setting up Emacs on Windows 11&hellip;.</a> (15:17)</li>
</ul></li>
<li>Emacs development:
<ul class="org-ul">
<li>emacs-devel: <a href="https://yhetil.org/emacs-devel/867bna9h2a.fsf@gnu.org/">Re: SDL terminal type - Eli Zaretskii</a> - theoretical benefits of changing the way the main loop is handled</li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=c7aab69e30ffb8cd91df488d0cafe22bb7774877">Delete dir-mode VC backend method</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=02fb63f7fe9aca2974d47095e5281919d173967a">VC-Dir: Let backends supply a custom mode and key binding hints</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=35af392aee538254f92fb2386f1dd69c7d0fb82b">Keep Rmail collection buffers unibyte</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=2a2675fd3977b872d8c6b3efb8cc1d93c9e6b4fa">New macro 'elisp-scope-define-function-spec' (bug#81355)</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=8c8caa308857b89e22b2d2f9d4be2241cf0a6f67">elisp-scope.el: Support associating analyzers with multiple symbols</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=56154c939bf8f3cd7dbadeb91ef0a2fe4294ec65">Improve commit log entry creation from ChangeLog (bug#80928)</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=850cbdfa1be89f6ede45d304fb3792d1043ef2fa">Update to Android 17</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=d56e98592ef949f31687ff8adf16a12411efb1e5">Clicking mode line menus in inactive windows now switches the window</a></li>
</ul></li>
<li>New packages:
<ul class="org-ul">
<li><a target="_blank" href="https://melpa.org/#/browsel">browsel</a>: WebSocket bridge to a Chrome/Firefox extension (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/denote-solo">denote-solo</a>: Switch the active Denote directory (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/hutch">hutch</a>: AI code review for magit (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/jal">jal</a>: Java Agent Loader (JAL) for JDTLS (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/kusanagi-theme">kusanagi-theme</a>: Ghost in the Shell inspired dark theme built on Modus (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/ol-locate-file">ol-locate-file</a>: Locate-based file links for Org mode (MELPA)</li>
<li><a target="_blank" href="https://elpa.gnu.org/packages/sendai-theme.html">sendai-theme</a>: A cool blue color theme (GNU ELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/srs">srs</a>: Spaced repetition in plain text (MELPA)</li>
</ul></li>
</ul>

<p>
Links from <a href="https://www.reddit.com/r/emacs">reddit.com/r/emacs</a>, <a href="https://www.reddit.com/r/orgmode">r/orgmode</a>, <a href="https://www.reddit.com/r/spacemacs">r/spacemacs</a>, <a href="https://mastodon.social/tags/emacs">Mastodon #emacs</a>, <a href="https://bsky.app/hashtag/emacs">Bluesky #emacs</a>, <a href="https://hn.algolia.com/?query=emacs&amp;sort=byDate&amp;prefix&amp;page=0&amp;dateRange=all&amp;type=story">Hacker News</a>, <a href="https://lobste.rs/search?q=emacs&amp;what=stories&amp;order=newest">lobste.rs</a>, <a href="https://programming.dev/c/emacs?dataType=Post&amp;page=1&amp;sort=New">programming.dev</a>, <a href="https://lemmy.world/c/emacs">lemmy.world</a>, <a href="https://lemmy.ml/c/emacs?dataType=Post&amp;page=1&amp;sort=New">lemmy.ml</a>, <a href="https://planet.emacslife.com">planet.emacslife.com</a>, <a href="https://www.youtube.com/playlist?list=PL4th0AZixyREOtvxDpdxC9oMuX7Ar7Sdt">YouTube</a>, <a href="http://git.savannah.gnu.org/cgit/emacs.git/log/etc/NEWS">the Emacs NEWS file</a>, <a href="https://emacslife.com/calendar/">Emacs Calendar</a>, and <a href="https://lists.gnu.org/archive/html/emacs-devel/2026-07">emacs-devel</a>. Thanks to Andrés Ramírez for emacs-devel links. Do you have an Emacs-related link or announcement? Please e-mail me at <a href="mailto:sacha@sachachua.com">sacha@sachachua.com</a>. Thank you!</p>
<div><a href="https://sachachua.com/blog/2026/07/2026-07-06-emacs-news/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%2F07%2F2026-07-06-emacs-news%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">Une navigation simplifiée sur mon blog grâce à EWW (et Emacs !)</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/07/une-navigation-simplifiee-sur-mon-blog-grace-a-eww-et-emacs/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-07-05T12:56:17Z</updated>
    <published>2026-07-05T12:56:17Z</published>
    <category term="emacs" />
<category term="french" />
<category term="tagalog" />
		<id>https://sachachua.com/blog/2026/07/une-navigation-simplifiee-sur-mon-blog-grace-a-eww-et-emacs/</id>
		<content type="html"><![CDATA[<p>
Quick English translation: You can now navigate my blog with <code>n</code> and <code>p</code> (<code>eww-next-url</code>, <code>eww-previous-url</code>) in the EWW browser in Emacs.
</p>

<p>
(C'est aussi une traduction en tagalog après la version française pour Amin, qui est en train de l'apprend󠆻re !)
</p>

<div class="media-post" id="org0f343ec">
<p>

</p>

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

<p>
</p><div class="audio"><audio controls="1" preload="metadata" src="https://sachachua.com/blog/2026/07/une-navigation-simplifiee-sur-mon-blog-grace-a-eww-et-emacs/eww-navigation.opus?2026-07-05" type="audio/ogg"><a href="https://sachachua.com/blog/2026/07/une-navigation-simplifiee-sur-mon-blog-grace-a-eww-et-emacs/eww-navigation.opus">Download the audio</a></audio></div>
<p></p>

<p>
Pour <a href="https://www.emacswiki.org/emacs/CarnivalMay2026">le carnaval d'Emacs en mai</a>, Omar Antolin a écrit un article qui recommande vivement <a href="https://www.matem.unam.mx/~omar/apropos-emacs.html#may-i-recommend-eww-for-emacs-innovative-ui">le navigateur EWW sous Emacs</a>. Grâce au <a href="https://lobste.rs/c/xndjbf">commentaire de technomancy</a> concernant celui-ci, j'ai appris qu'il peut naviguer vers la page suivante et la page précédente avec les raccourcis clavier « n » (<code>eww-next-url</code>) et « p » (<code>eww-previous-url</code>) si la page inclut les liens dans son en-tête comme ça :
</p>


<div class="org-src-container">
<pre class="src src-html"><code>&lt;link rel="next" href="https://sachachua.com/blog/2026/06/2026-06-29-emacs-news/"&gt;
&lt;link rel="prev" href="https://sachachua.com/blog/2026/07/semaine-du-22-au-28-juin/"&gt;
</code></pre>
</div>


<p>
J'ai donc ajouté cette fonctionnalité à mon site en modifiant ma configuration du générateur de site statique 11ty. D'abord, j'ai ajouté les données à tous les articles dans mon <code>eleventy.config.js</code>.
</p>


<div class="org-src-container">
<pre class="src src-js"><code>  eleventyConfig.addCollection(<span class="org-string">'_posts'</span>, <span class="org-keyword">function</span>(<span class="org-variable-name">collectionApi</span>) {
    <span class="org-keyword">const</span> <span class="org-variable-name">posts</span> = collectionApi.getFilteredByTag(<span class="org-string">'_posts'</span>);
    <span class="org-keyword">for</span> (<span class="org-keyword">let</span> <span class="org-variable-name">i</span> = 0; i &lt; posts.length; i++) {
      <span class="org-keyword">const</span> <span class="org-variable-name">next</span> = i &gt; 0 ? posts[i - 1] : <span class="org-constant">null</span>;
      <span class="org-keyword">const</span> <span class="org-variable-name">prev</span> = i &lt; posts.length - 1 ? posts[i + 1] : <span class="org-constant">null</span>;
      posts[i].data.navLinks = {
        prev: { url: prev?.url, title: prev?.data?.title },
        next: { url: next?.url, title: next?.data?.title }
      };
    }
    <span class="org-keyword">return</span> posts;
  });
</code></pre>
</div>


<p>
Ensuite j'ai modifié l'etiquette d'en-tête.
</p>


<div class="org-src-container">
<pre class="src src-js"><code><span class="org-keyword">const</span> <span class="org-variable-name">navLinks</span> = data?.page?.url &amp;&amp; data?.navLinks ? data?.navLinks : {
  next: { url: data.pagination &amp;&amp; data.pagination.pageNumber &lt; data.pagination.hrefs.length - 1 &amp;&amp; data.pagination.hrefs[data.pagination.pageNumber + 1] },
  prev: { url: data.pagination &amp;&amp; data.pagination.pageNumber &gt; 0 &amp;&amp; data.pagination.hrefs[data.pagination.pageNumber - 1] }
};
<span class="org-keyword">const</span> <span class="org-variable-name">nextLink</span> = navLinks?.next?.url ? <span class="org-string">`&lt;link rel="next" href="${navLinks?.next?.url}" /&gt;`</span> : <span class="org-string">''</span>;
<span class="org-keyword">const</span> <span class="org-variable-name">prevLink</span> = navLinks?.prev?.url ? <span class="org-string">`&lt;link rel="prev" href="${navLinks?.prev?.url}" /&gt;`</span> : <span class="org-string">''</span>;
</code></pre>
</div>


<p>
J'avais déjà les liens vers l'article suivant et l'article précédent, il m'a juste suffi de les ajouter à l'en-tête. Si vous lisez un article spécifique sur mon blog, vous pouvez y naviguer de cette façon. Voilà !
</p>

</div>


<figure id="orgce33ba3">
<a href="https://sachachua.com/blog/2026/07/une-navigation-simplifiee-sur-mon-blog-grace-a-eww-et-emacs/output-2026-07-05-07:40:52.gif"><img src="https://sachachua.com/blog/2026/07/une-navigation-simplifiee-sur-mon-blog-grace-a-eww-et-emacs/output-2026-07-05-07:40:52.gif" alt="output-2026-07-05-07:40:52.gif"></a>

<figcaption><span class="figure-number">Figure 1: </span>Navigating with n (eww-next-url) and p (eww-previous-url) in eww</figcaption>
</figure>

<details class="code-details"><summary>in Tagalog</summary>
<p>
Para sa <a href="https://www.emacswiki.org/emacs/CarnivalMay2026">Carnival ng Emacs noong Mayo</a>, sumulat si Omar Antolin ng <a href="https://www.matem.unam.mx/~omar/apropos-emacs.html#may-i-recommend-eww-for-emacs-innovative-ui">isang artikulo tungkol sa EWW browser</a> na kasama sa Emacs. Dahil sa komento ni technomancy, nalaman ko na pwede palang mag-navigate sa susunod at nakaraang pahina gamit ang mga keyboard shortcut na "n" (eww-next-url) at "p" (eww-previous-url) kung kasama sa header ng pahina ang mga link katulad nito:
</p>


<div class="org-src-container">
<pre class="src src-html"><code>&lt;link rel="next" href="https://sachachua.com/blog/2026/06/2026-06-29-emacs-news/"&gt;
&lt;link rel="prev" href="https://sachachua.com/blog/2026/07/semaine-du-22-au-28-juin/"&gt;
</code></pre>
</div>


<p>
Gusto kong idagdag 'yung feature na 'to sa site ko. Gumagamit ako ng static site generator (11ty) para gawin yung site ko, kaya dinagdag ko 'to sa kanyang configuration:
</p>


<div class="org-src-container">
<pre class="src src-js"><code>  eleventyConfig.addCollection(<span class="org-string">'_posts'</span>, <span class="org-keyword">function</span>(<span class="org-variable-name">collectionApi</span>) {
    <span class="org-keyword">const</span> <span class="org-variable-name">posts</span> = collectionApi.getFilteredByTag(<span class="org-string">'_posts'</span>);
    <span class="org-keyword">for</span> (<span class="org-keyword">let</span> <span class="org-variable-name">i</span> = 0; i &lt; posts.length; i++) {
      <span class="org-keyword">const</span> <span class="org-variable-name">next</span> = i &gt; 0 ? posts[i - 1] : <span class="org-constant">null</span>;
      <span class="org-keyword">const</span> <span class="org-variable-name">prev</span> = i &lt; posts.length - 1 ? posts[i + 1] : <span class="org-constant">null</span>;
      posts[i].data.navLinks = {
        prev: { url: prev?.url, title: prev?.data?.title },
        next: { url: next?.url, title: next?.data?.title }
      };
    }
    <span class="org-keyword">return</span> posts;
  });
</code></pre>
</div>


<p>
Pagkatapos noon, pinalitan ko yung header tag ko.
</p>


<div class="org-src-container">
<pre class="src src-js"><code><span class="org-keyword">const</span> <span class="org-variable-name">navLinks</span> = data?.page?.url &amp;&amp; data?.navLinks ? data?.navLinks : {
  next: { url: data.pagination &amp;&amp; data.pagination.pageNumber &lt; data.pagination.hrefs.length - 1 &amp;&amp; data.pagination.hrefs[data.pagination.pageNumber + 1] },
  prev: { url: data.pagination &amp;&amp; data.pagination.pageNumber &gt; 0 &amp;&amp; data.pagination.hrefs[data.pagination.pageNumber - 1] }
};
<span class="org-keyword">const</span> <span class="org-variable-name">nextLink</span> = navLinks?.next?.url ? <span class="org-string">`&lt;link rel="next" href="${navLinks?.next?.url}" /&gt;`</span> : <span class="org-string">''</span>;
<span class="org-keyword">const</span> <span class="org-variable-name">prevLink</span> = navLinks?.prev?.url ? <span class="org-string">`&lt;link rel="prev" href="${navLinks?.prev?.url}" /&gt;`</span> : <span class="org-string">''</span>;
</code></pre>
</div>


<p>
Mayroon na 'kong mga link sa susunod at nakaraang artikulo. Kailangan ko lang silang isama sa header. Kung nagbabasa ka ng isang artikulo sa blog ko, kaya mo nang mag-navigate sa ganoong paraan. Ayan!
</p>


<figure id="orgba8cabf">
<a href="https://sachachua.com/blog/2026/07/une-navigation-simplifiee-sur-mon-blog-grace-a-eww-et-emacs/output-2026-07-05-07:40:52.gif"><img src="https://sachachua.com/blog/2026/07/une-navigation-simplifiee-sur-mon-blog-grace-a-eww-et-emacs/output-2026-07-05-07:40:52.gif" alt="output-2026-07-05-07:40:52.gif"></a>

<figcaption><span class="figure-number">Figure 2: </span>Navigating with n (eww-next-url) and p (eww-previous-url) in eww</figcaption>
</figure>


</details>
<div><a href="https://sachachua.com/blog/2026/07/une-navigation-simplifiee-sur-mon-blog-grace-a-eww-et-emacs/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%2F07%2Fune-navigation-simplifiee-sur-mon-blog-grace-a-eww-et-emacs%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">Re: React to Sacha and Prot Newbies and Starter Kits Emacs Video - linkarzu</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/07/re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-07-03T16:29:25Z</updated>
    <published>2026-07-03T12:24:23Z</published>
    <category term="emacs" />
<category term="community" />
		<id>https://sachachua.com/blog/2026/07/re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu/</id>
		<content type="html"><![CDATA[<div class="update" id="org1c58ff0">
<p>
<span class="timestamp-wrapper"><time class="timestamp" datetime="2026-07-03">[2026-07-03 Fri]</time></span>: All right, quick video form of this post is at <a href="https://www.youtube.com/live/Ar4c0EU4rIs">Yay Emacs 35: Reacting to Linkarzu's reaction to my video with Prot about newbies and starter kits - YouTube</a> in case anyone wants. That's how it works, right? =)
</p>

</div>

<p>
Hey hey hey, now I'm linkarzu-famous. =) Linkarzu (Christian Arzu) posted a <a href="https://www.youtube.com/watch?v=q9nHArgkqMA">reaction video</a> to the first part of <a href="https://sachachua.com/blog/2026/04/yay-emacs-sacha-and-prot-talk-emacs-newbies-starter-kits/">YE24: Sacha and Prot Talk Emacs - Newbies/Starter Kits</a>. Here's his vid:
</p>

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

<p>
YouTube might be holding my comment for moderation because I tried to add too many links to it. I also realized my timestamps were off in my YT comment, so here it is along with other stuff I've just added.
</p>

<div class="sticky-toc" id="orgffee1ea">
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="https://sachachua.com/blog/category/emacs/feed/atom/index.xml#re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-on-my-newbies-starter-kits-chat-with-prot">On my Newbies/Starter Kits chat with Prot</a></li>
<li><a href="https://sachachua.com/blog/category/emacs/feed/atom/index.xml#re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-learning-emacs-in-order-to-organize-your-life">Learning Emacs in order to organize your life</a></li>
<li><a href="https://sachachua.com/blog/category/emacs/feed/atom/index.xml#re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-learning-emacs-with-people">Learning Emacs with people</a></li>
<li><a href="https://sachachua.com/blog/category/emacs/feed/atom/index.xml#re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-reddit-links">Reddit links</a></li>
<li><a href="https://sachachua.com/blog/category/emacs/feed/atom/index.xml#re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-timestamps">Timestamps</a></li>
<li><a href="https://sachachua.com/blog/category/emacs/feed/atom/index.xml#re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-my-evil-plan">My evil plan</a></li>
</ul>
</div>

</div>
<div id="outline-container-re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-on-my-newbies-starter-kits-chat-with-prot" class="outline-3">
<h3 id="re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-on-my-newbies-starter-kits-chat-with-prot"><a href="https://sachachua.com/blog/category/emacs/feed/atom/index.xml#re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-on-my-newbies-starter-kits-chat-with-prot">On my Newbies/Starter Kits chat with Prot</a></h3>
<div class="outline-text-3" id="text-re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-on-my-newbies-starter-kits-chat-with-prot">
<p>
It's definitely more of a meta-discussion (how can we make the
newcomer experience better?) than something directly focused on
helping newbies, but I hope you're getting something out of it. Think
of it like a live coaching session for me so that I can figure out
what to prioritize on my TODO list to make the newcomer experience
better, with some ideas and questions thrown out there in case other
people want to work on things too.
</p>
</div>
</div>
<div id="outline-container-re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-learning-emacs-in-order-to-organize-your-life" class="outline-3">
<h3 id="re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-learning-emacs-in-order-to-organize-your-life"><a href="https://sachachua.com/blog/category/emacs/feed/atom/index.xml#re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-learning-emacs-in-order-to-organize-your-life">Learning Emacs in order to organize your life</a></h3>
<div class="outline-text-3" id="text-re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-learning-emacs-in-order-to-organize-your-life">
<blockquote>
<p>
<span class="media-time" data-start="8413.000">02:20:13</span> What do I want to do with Emacs? I think, like I've said it before, organize my life a little bit better. Try Org, pretty much. I don't care about Emacs for editing Markdown files. That wouldn't make sense, you know, because I can do that in Neovim quite well. And I don't want to replicate that in Emacs. That's just going to be a waste of time. Something that I don't do in Neovim. This is something that the professor said as well: Just use Emacs for something that you don't do in Neovim right now.
</p>
</blockquote>

<p>
If you want to learn Emacs so you can use it to organize your life,
there are more direct paths than my video about newbies/starter kits.
You might be just fine with the basic tutorial (<code>Ctrl+h t</code> within
Emacs), the <a href="https://orgmode.org/guide/">Org Mode compact guide</a>, maybe another Org Mode tutorial
that matches the way you think, and some time experimenting with the
basics until you figure out the kinds of things you'd like to improve.
The idea is to quickly get to the point where this is useful, and then
start using some of the time/energy saved to learn more. A simple
progression might start with something like this:
</p>

<ul class="org-ul">
<li><b>Opening</b>: Use Emacs to open and close your todo.org. No keyboard shortcuts needed, just open the file, type, and use the toolbar or menu bar to save. If you're in a console Emacs and you don't want to use the mouse, you can use F10 to open the menu.</li>
<li><b>Leaving Emacs open</b>: Realize you can save time by just leaving Emacs open with the file instead of opening/closing it all the time. This is probably more of a mindset change for Vim users. Set up your window manager so that you can switch to Emacs with a convenient keyboard shortcut. I use super+1.</li>
<li><b>Themes</b>? If the default theme gets on your nerves, figure out how to change it. <code>M-x customize-themes</code> is a good starting point. If you're not sure what that means, go through the tutorial (Help - Emacs Tutorial).</li>
<li><b>Keyboard shortcuts</b>: Get annoyed with using the toolbar or menu bar to save. Get the hang of <code>C-x C-s</code> (<code>save-buffer</code>). Start to get your mind used to the idea of keyboard shortcuts being different in different apps. Try not to give in to the temptation to make this <code>C-s</code> like in other apps. <code>C-s</code> is <code>isearch-forward</code>, which you will probably eventually find really useful, and if you move <i>that</i> you will end up needing to move whatever you are moving it to. Use sticky notes to remind yourself of the handful of keyboard shortcuts you're learning.</li>
<li><b>Basic Org Mode tutorial:</b> Read an Org Mode tutorial, maybe <a href="https://orgmode.org/worg/org-tutorials/org4beginners.html">this one</a>. Start with <code>* TODO ...</code> headings. You can manually type them. Change <code>TODO</code> to <code>DONE</code>. Again, this can be pretty manual.</li>
<li><b>Org markup</b>: Learn how to open links, make subheadings (<code>**</code>, <code>***</code>), etc.</li>
<li><b>Shift</b>: Get annoyed with manually typing TODO keywords. Experiment how to use shift left and shift right. (Might not work on console Emacs, depending on what keyboard shortcuts your terminal supports.)</li>
</ul>

<p>
Feel free to switch steps around depending on where the friction is.
Depending on what you want to do from here, you might want to learn
about <a href="https://orgmode.org/manual/Dates-and-Times.html">scheduling things</a> and <a href="https://orgmode.org/manual/Agenda-Views.html">displaying an agenda</a> or <a href="https://orgmode.org/manual/Capture.html">setting up capture</a>
(which gets even more useful as you do more things within Emacs, since
it can automatically pick up links to whatever you're looking at).
</p>

<p>
Also, along the way, it could be worth flipping through the
<a href="https://www.emacswiki.org/emacs/StarterKits">StarterKits page on the EmacsWiki</a> to see if one of those options
matches the way you think (totally optional), or maybe <a href="http://protesilaos.com/coaching">chat with Prot</a>
so he can help translate what you want into the keywords you can use
to find stuff or the priority to learn things in. <a href="https://www.emacswiki.org/emacs/Usergroups">Meetups are great
too</a>.
</p>
</div>
</div>
<div id="outline-container-re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-learning-emacs-with-people" class="outline-3">
<h3 id="re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-learning-emacs-with-people"><a href="https://sachachua.com/blog/category/emacs/feed/atom/index.xml#re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-learning-emacs-with-people">Learning Emacs with people</a></h3>
<div class="outline-text-3" id="text-re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-learning-emacs-with-people">
<blockquote>
<ul class="org-ul">
<li><span class="media-time" data-start="2000.000">00:33:20</span> I need a daddy that holds my hand and guides me through the process. I'm lost. And chat is even way looser. Even more lost, you know, because they're like, try Doom, try Evil and try this and try the other one, you know, and run Neovim inside Kitty and no, run Emacs inside Kitty or no, use the GUI. No. So it's pretty confusing.</li>

<li><span class="media-time" data-start="5325.000">01:28:45</span> You know what we should do, okay? We should pay Prot for his coaching sessions. He's in Greece, right? He's in Cyprus. To give something back to him. But I don't know if he's okay in transmitting this live because all of these cheap ass MFers watching that would be watching this live stream will not pay Prot. So that's bad business, brother, because the live streams are just going to stay there. But if I do it for myself, if I pay to him, we have the one-on-ones and I don't post them and I learn Emacs, you know, that is not&hellip; That's going to leave you guys behind.</li>
</ul>
</blockquote>

<p>
Yup, mentorship/coaching is totally a great way to learn Emacs. Prot is okay with people livestreaming or posting a recording of the coaching session. This livestream is actually one of those instances - I set it up as a coaching session with him! =) Amin Bandali has also posted some of his sessions with Prot (<a href="https://kelar.org/~bandali/gnu/emacs/ffs-emacs-ext-prot.html">FFS code review and Emacs extensibility with Protesilaos</a>, <a href="https://kelar.org/~bandali/gnu/emacs/ffs-code-review-prot.html">FFS code review with Protesilaos - bandali</a>). I love your recent livestreams about exploring Emacs. Learning out loud is fantastic. It lets other people help out, and you help lots of people along the way. If you're comfortable with the idea, I think livestreaming or posting a recording of a coaching session with Prot would be wonderful. You've mentioned wanting to use Emacs to organize your life, so it's of course totally okay to chat privately. That way you don't have to worry about leaking any private information. Either way works!
</p>

<p>
This thing about balancing learning from resources and learning from people is an interesting one to think about. On one hand, we don't want a flood of generic requests from help from people who haven't bothered to look things up for themselves. On the other hand, because Emacs is so large and so many things are possible (and also oddly-named), it really helps to be able to talk to people. It's like the way you <b>could</b> learn how to play the piano or speak a different language by yourself, but a piano teacher could help you pick the right pieces for your level, and a tutor can help you with the nuances and pronunciation feedback that a dictionary or a textbook can't. I think learning how to learn from both resources and people is definitely a good skill worth working on during the early days, which could include:
</p>

<ul class="org-ul">
<li>taking notes and sharing them - great way to solidify your knowledge and pay it forward</li>
<li>learning how to skim tutorials and references to pick up ideas and terminology without feeling like you're progressing too slowly</li>
<li>learning how to break the things you want into bite-sized chunks so that they can actually fit into your brain; use sticky notes and text files to help you</li>
<li>connecting with people, learning how to ask questions</li>
</ul>
</div>
</div>
<div id="outline-container-re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-reddit-links" class="outline-3">
<h3 id="re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-reddit-links"><a href="https://sachachua.com/blog/category/emacs/feed/atom/index.xml#re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-reddit-links">Reddit links</a></h3>
<div class="outline-text-3" id="text-re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-reddit-links">
<blockquote>
<p>
<span class="media-time" data-start="2132.000">00:35:32</span> I'm not an Emacs user. I'm an Emacs, I don't know, tester or trier, whatever.
If I come to the Emacs subreddit, for me, it's just a waste of time because I will not be able to find anything.
I don't know where to find stuff. Maybe if I go to the about page, but who does that? Okay. Who in their
sane mind comes here to the about page?
</p>

<p>
&hellip; Getting started, maybe here. Get Emacs. Emacs resources. Okay, but if I go to the EmacsWiki&hellip; How to edit Elisp area. Like there's a thousand links here and that is just the first link, brother. Then I have this other one. WikEmacs. OK, I trust it, so I'm just going to hit continue. WikEmacs.org. That one doesn't even load. Emacs reference. Not found. OK, so you see what I'm saying? This one has a thousand links and I just by looking at the amount of them, I'm like, nope, don't want to look at that. Maybe this one. The book, OK, the book, this is the book that Aaron recommends.
</p>

<p>
&hellip; So I think the suggestion that Prot is sharing there is quite useful, to be honest. Have them pinned here.
I have something like that in my subreddit, you know, things that I want people to see when they get there.
So when they get to the server, the first
thing that I want them to see is this: The Discord information that the podcast has been moved to a different YouTube channel. This is useful as well. &hellip; So yeah, this is actual information that I want people to know.
If those would be updated on the Emacs subreddit, I think it would be a good idea.
</p>
</blockquote>

<p>
Oooh, good catch. I've messaged the r/emacs mods about the dead links, suggested direct links to <a href="https://www.emacswiki.org/emacs/EmacsNewbie">Emacs Newbie</a> and <a href="https://www.emacswiki.org/emacs/StarterKits">Starter Kits</a> on the EmacsWiki, and suggested adding Doom Emacs and Spacemacs if Better Defaults is listed. The sidebar isn't very visible (most people miss it, especially on mobile), but every little bit helps. Usually what happens is a newbie posts about their question on r/emacs and someone replies with some helpful resources. An Automod or a sticky might help. I sent your video + timestamp to the r/emacs mods.
</p>
</div>
</div>
<div id="outline-container-re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-timestamps" class="outline-3">
<h3 id="re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-timestamps"><a href="https://sachachua.com/blog/category/emacs/feed/atom/index.xml#re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-timestamps">Timestamps</a></h3>
<div class="outline-text-3" id="text-re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-timestamps">
<blockquote>
<ul class="org-ul">
<li><span class="media-time" data-start="2641.000">44:01</span> So how does she add those timestamps? &hellip; Oh, she typed some magic there. She typed something and then a timestamp was added.</li>
<li><span class="media-time" data-start="5425.000">01:30:25</span> We could see what she typed there. Let's see. Is she in normal mode? Does she use modal navigation or something? Let's see. OT. She typed OT and then she&hellip; OT and then she presses a key, which probably expands the snippet or something.</li>
</ul>
</blockquote>

<p>
I have an abbreviation "ot" that expands to the timestamp after I press space, comma, other punctuation, tab, whatever. This is convenient for me to type because it's home-row on Dvorak. Here's the <a href="https://sachachua.com/dotemacs#completion-define-abbreviations">relevant part of my config</a>:
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">setq-default</span> abbrev-mode 1)
(define-abbrev global-abbrev-table <span class="org-string">"ot"</span> <span class="org-string">""</span>
  (<span class="org-keyword">lambda</span> () (insert (format-time-string <span class="org-string">"[%Y-%m-%d %a %H:%M]"</span>))))
</code></pre>
</div>


<p>
Big picture: I added this abbreviation for timestamps because I wanted a quick way to keep track of highlights, things to clip, possible chapter markers, etc. I <mark>could</mark> calculate it as a relative time using org-timer (there's a built-in feature), but wall-clock time is easier to use in calculations in case I want to adjust it later on. So, for example, I now have a little bit of code (<a href="https://sachachua.com/dotemacs#streaming-make-chapter-markers-and-video-time-hyperlinks-easier-to-note-while-i-livestream-calculate-an-org-timestamp-s-offset-into-a-youtube-stream">sacha-stream-org-convert-timestamps-to-youtube-offsets in my config</a>) that replaces all the timestamps in a selected region with the offsets based on the start time of the livestream that includes those timestamps. I can export the selection into a plain-text format that I can paste into the YouTube video description for quick chapter markers. Then I can bulk-add comments with those timestamps into the VTT transcription produced by WhisperX (<code>subed-vtt-insert-chapter-comments</code> in <a href="https://github.com/sachac/subed">subed</a>), move them earlier or later to match the actual times, copy the corrected chapter markers into YouTube (<code>subed-section-comments-as-chapters</code>), and use those chapter markers when publishing the transcript (using Org Mode and a custom link type). This is because I don't usually have the patience to listen to my whole video again and I don't expect people to have the patience to listen to my whole video either, so I want people to be able to quickly jump to the parts that might be interesting for them. =) I'm not sure this is a workflow you can easily pick up if you're starting from scratch (&hellip; haven't confirmed that it actually works for anyone other than me&hellip;), but I'm mentioning it to give kind of the big picture of why I have that snippet and what else it enables. Because Emacs!
</p>

<p>
Timestamps are very handy. I even have some code that schedules a YouTube livestream for the Org timestamp at point (<a href="https://sachachua.com/dotemacs##streaming-create-youtube-livestream-broadcasts-from-emacs-lisp">sacha-stream-org-schedule-livestream-for-entry-at-point</a>), using the title and body of the Org subtree and uploading the thumbnail from the Org entry <code>:THUMBNAIL:</code> property (or a default property). It inserts the YT embed. I have another function for setting up a Google Calendar entry so I can invite the guest (<a href="https://sachachua.com/dotemacs#streaming-create-a-google-calendar-event-from-an-org-mode-timestamp">sacha-emacs-chat-schedule</a>). I mess up times and timezones all the time, so the less I have to manually click on stuff, the better.
</p>
</div>
</div>
<div id="outline-container-re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-my-evil-plan" class="outline-3">
<h3 id="re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-my-evil-plan"><a href="https://sachachua.com/blog/category/emacs/feed/atom/index.xml#re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-my-evil-plan">My evil plan</a></h3>
<div class="outline-text-3" id="text-re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu-my-evil-plan">
<blockquote>
<p>
<span class="media-time" data-start="5496.000">1:31:36</span> Now why is she interested in doing all this, brother? This is a pretty good person, actually. Why is she so concerned about the experience for newcomers in Emacs? On the Neovim side of things, it's like, brother, you're just on your own. "F* yourself, go and watch some videos, and if you get it, awesome." Now, there's really amazing people as well on the Neovim side of things. I'm just talking shit, but I'm honestly curious, like&hellip; She's really concerned about new people joining into the Emacs church. Is this a church really? Like, okay, do we have to pay after once we're part of the church? Like, do we need to give like 10% of our income to the Emacs church?
</p>
</blockquote>

<p>
Hah, it's all part of my Evil Plan. (Not to be confused with evil-mode.) Sure, Emacs isn't a good fit for everyone. I think the people who seem to really click with it and with other people who use it are the ones who enjoy tinkering and who can (mostly) find the balance between getting stuff done and tweaking their setup. =) If this might be your jam, I hope you can get past the initial hump and get to the point where it gets to be fun and useful! Sometimes it takes several tries for it to stick. We have lots of stories of people who didn't get Emacs the first time around, but who eventually figured it out later. I love that there are so many people who've used Emacs to make a TODO system that actually works for them. (It's usually Org Mode, but sometimes it's something else, that's all cool.) I love that people can do little tweaks to remove friction or make new things possible step by step.
</p>

<p>
So, the evil plan:
</p>

<ol class="org-ol">
<li>If people learning Emacs can connect with resources and people who can help them enjoy figuring things out, then&hellip;</li>
<li>they'll get to the point where they can come up with ideas and make things better for themselves.</li>
<li>This often turns out to be useful for other people too,</li>
<li>and then people can bounce ideas around and make things even better.</li>
<li>So, years down the line, I'll want to do something crazy with Emacs and someone will already have written a function for doing it. ;)</li>
</ol>

<p>
See? I'm just planning ahead. Bwahaha! Also, I love seeing the kinds of cool things people come up with and share, even if I might not personally need it (yet). It's fun. I hope you get the hang of it. I think that could lead to lots of interesting conversations. Even if you decide to use something else, that's cool too. The important thing is that you're figuring out stuff that works for you! =)
</p>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/07/re-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu/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%2F07%2Fre-react-to-sacha-and-prot-newbies-and-starter-kits-emacs-video-linkarzu%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">2026-06-29 Emacs news</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/06/2026-06-29-emacs-news/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-06-29T17:04:18Z</updated>
    <published>2026-06-29T17:04:18Z</published>
    <category term="emacs" />
<category term="emacs-news" />
		<id>https://sachachua.com/blog/2026/06/2026-06-29-emacs-news/</id>
		<content type="html"><![CDATA[<p>
This week, lots of people were talking about FSF's policy of not
accepting LLM contributions to Emacs core (see the last two items in
the AI category). Comments seem generally supportive of FSF's caution.
</p>

<ul class="org-ul">
<li>Help wanted:
<ul class="org-ul">
<li><a href="https://emacsconf.org/2026/cfp/">EmacsConf - 2026 - Call for Participation</a></li>
<li><a href="https://monadicsheep.org/blog/call-for-canvas-patch-testers.html">Monadic Sheep: Canvas patch: we need testers!</a> (<a href="https://lobste.rs/s/dkky2i/canvas_patch_we_need_testers">lobste.rs</a>, <a href="https://yhetil.org/emacs-devel/87ldc6bfje.fsf@subvertising.org/">emacs-devel</a>)</li>
</ul></li>
<li>Upcoming events (<a href="https://emacslife.com/calendar/emacs-calendar.ics">iCal file</a>, <a href="https://emacslife.com/calendar/">Org</a>):
<ul class="org-ul">
<li>EmacsATX: Emacs Social <a href="https://www.meetup.com/emacsatx/events/315091677/">https://www.meetup.com/emacsatx/events/315091677/</a> Thu Jul 2 1600 America/Vancouver - 1800 America/Chicago - 1900 America/Toronto - 2300 Etc/GMT &ndash; Fri Jul 3 0100 Europe/Berlin - 0430 Asia/Kolkata - 0700 Asia/Singapore</li>
<li>M-x Research: TBA <a href="https://m-x-research.github.io/">https://m-x-research.github.io/</a> Fri Jul 3 0800 America/Vancouver - 1000 America/Chicago - 1100 America/Toronto - 1500 Etc/GMT - 1700 Europe/Berlin - 2030 Asia/Kolkata - 2300 Asia/Singapore</li>
<li>Emacs.si (in person): Emacs.si meetup #7 2026 (v #živo) <a href="https://dogodki.kompot.si/events/88d59360-d89a-42cc-b567-ed39ac5186fb">https://dogodki.kompot.si/events/88d59360-d89a-42cc-b567-ed39ac5186fb</a> Mon Jul 6 1900 CET</li>
<li>OrgMeetup (virtual) <a href="https://orgmode.org/worg/orgmeetup.html">https://orgmode.org/worg/orgmeetup.html</a> Wed Jul 8 0900 America/Vancouver - 1100 America/Chicago - 1200 America/Toronto - 1600 Etc/GMT - 1800 Europe/Berlin - 2130 Asia/Kolkata &ndash; Thu Jul 9 0000 Asia/Singapore</li>
<li>Atelier Emacs Montpellier (in person) <a href="https://lebib.org/date/atelier-emacs">https://lebib.org/date/atelier-emacs</a> Fri Jul 10 1800 Europe/Paris</li>
</ul></li>
<li>Emacs configuration:
<ul class="org-ul">
<li><a href="https://github.com/melpa/melpa/pull/10057">New transitional MELPA channels: snapshots and releases</a> (<a href="https://mastodon.world/@minad/116824647604682588">@minad@mastodon.world</a>) - version numbers will be release.0.date.count, which will be compatible with other package archives</li>
<li><a href="https://ray-on-emacs.blogspot.com/2026/06/emacs-disabled-commands.html">Raymond Zeitler: Emacs disabled Commands</a></li>
<li><a href="https://amiorin.github.io/.emacs.d/">From Doom Emacs to Vanilla/Custom Emacs — Saved by Claude Code</a> (<a href="https://www.reddit.com/r/emacs/comments/1ufifue/from_doom_emacs_to_vanillacustom_emacs_saved_by/">Reddit</a>) - annotated config</li>
<li><a href="https://v.redd.it/uwvr3fzo5v9h1">Firemacs Update</a> (<a href="https://www.reddit.com/r/emacs/comments/1uh97um/firemacs_update/">Reddit</a>)</li>
</ul></li>
<li>Emacs Lisp:
<ul class="org-ul">
<li><a href="https://dev.to/vindarel/emacs-lispy-mode-convolute-real-world-example-fe1">Emacs' lispy-mode: Convolute real-world example! - DEV Community</a> (<a href="https://framapiaf.org/@vindarel/116800661731742317">@vindarel@framapiaf.org</a>)</li>
<li><a href="https://www.johndcook.com/blog/2026/06/23/regex-everywhere/">Regular expressions that work “everywhere”</a> (<a href="https://news.ycombinator.com/item?id=48672232">HN</a>, <a href="https://lobste.rs/s/mq245g/regular_expressions_work_everywhere">lobste.rs</a>)</li>
<li><a href="http://yummymelon.com/devnull/scheduling-future-tasks-in-emacs.html">Scheduling Future Tasks in Emacs</a> (<a href="https://www.reddit.com/r/emacs/comments/1uenp4p/scheduling_future_tasks_in_emacs/">Reddit</a>, <a href="https://irreal.org/blog/?p=13901">Irreal</a>)</li>
<li><a href="https://github.com/kn66/commonmark-gfm.el">commonmark-gfm.el: a pure Emacs Lisp CommonMark/GFM renderer</a> (<a href="https://www.reddit.com/r/emacs/comments/1uhwed7/commonmarkgfmel_a_pure_emacs_lisp_commonmarkgfm/">Reddit</a>)</li>
<li><a href="https://github.com/d12frosted/vui.el">vui.el: declarative, React-style UIs in Emacs buffers (v1.2, now with inline forms and flex layout)</a> (<a href="https://www.reddit.com/r/emacs/comments/1ue7r9f/vuiel_declarative_reactstyle_uis_in_emacs_buffers/">Reddit</a>)</li>
</ul></li>
<li>Appearance:
<ul class="org-ul">
<li><a href="https://github.com/Senka07/nerv_theme.el">an attempt to create a theme inspired by Nerv from Evangelion</a> (<a href="https://www.reddit.com/r/emacs/comments/1ughyjg/an_attempt_to_create_a_theme_inspired_by_nerv/">Reddit</a>)</li>
<li><a href="https://github.com/LionyxML/kusanagi-theme">Kusanagi: a Ghost in the Shell-inspired dark theme for Emacs</a> (<a href="https://www.reddit.com/r/emacs/comments/1ugexb8/kusanagi_a_ghost_in_the_shellinspired_dark_theme/">Reddit</a>)</li>
<li><a href="https://github.com/larrasket/emacs-liquid-glass">Emacs with Ghostty-like Liquid Glass Effect</a> (<a href="https://www.reddit.com/r/emacs/comments/1uepn3x/emacs_with_ghosttylike_liquid_glass_effect/">Reddit</a>)</li>
<li><a href="https://www.chiply.dev/post-svg-margin">svg-margin: Better Gutters for Emacs</a> (<a href="https://www.reddit.com/r/emacs/comments/1ueb70t/svgmargin_better_gutters_for_emacs/">Reddit</a>)</li>
<li><a href="https://protesilaos.com/codelog/2026-06-28-emacs-doric-tiger-doric-lion/">Protesilaos: Emacs: new ‘doric-tiger’ and ‘doric-lion’ for the ‘doric-themes’</a></li>
<li><a href="https://protesilaos.com/codelog/2026-06-29-emacs-fontaine-3-1-0/">Protesilaos: Emacs: fontaine version 3.1.0</a></li>
</ul></li>
<li>Navigation:
<ul class="org-ul">
<li><a href="https://ray-on-emacs.blogspot.com/2026/06/preventing-errant-navigation.html">Raymond Zeitler: Preventing Errant Navigation</a></li>
<li><a href="https://shallowsky.com/blog/linux/editors/emacs-bookmarks-position.html">Overriding Emacs' Broken Bookmark Position Code (Updated) (Shallow Thoughts)</a> (<a href="https://fosstodon.org/@akkana/116829324463088316">@akkana@fosstodon.org</a>)</li>
<li><a href="https://randyridenour.net/posts/2026-06-23-toggle-ghostel.html">Randy Ridenour: Toggle Ghostel</a> (<a href="https://irreal.org/blog/?p=13905">Irreal</a>)</li>
</ul></li>
<li>Dired:
<ul class="org-ul">
<li><a href="https://github.com/kn66/dired-clipboard.el">dired-clipboard.el: Copy and paste files in Dired with M-w / C-y</a> (<a href="https://www.reddit.com/r/emacs/comments/1ufq0uk/diredclipboardel_copy_and_paste_files_in_dired/">Reddit</a>)</li>
</ul></li>
<li>Org Mode:
<ul class="org-ul">
<li><a href="https://ray-on-emacs.blogspot.com/2026/06/link-diary-event-to-org-heading.html">Raymond Zeitler: Link diary Event to Org Heading</a> (<a href="https://irreal.org/blog/?p=13907">Irreal</a>)</li>
<li><a href="https://github.com/yibie/chai">Chai 2.0 — Emacs reading workflow, stripped down to what actually matters</a> (<a href="https://www.reddit.com/r/emacs/comments/1ue8jvz/chai_20_emacs_reading_workflow_stripped_down_to/">Reddit</a>)</li>
<li><a href="https://www.cyan.sh/blog/posts/org-roam-orphans.html">Jakub Nowak: org-roam Orphans</a></li>
<li><a href="https://github.com/GerardoCendejas/org-roam-stats.git">I built a stats dashboard for org-roam (org-roam-stats)</a> (<a href="https://www.reddit.com/r/OrgRoam/comments/1uet3g4/i_built_a_stats_dashboard_for_orgroam_orgroamstats/">Reddit</a>)</li>
<li><a href="https://www.d12frosted.io/posts/2026-06-19-vulpea-v2-4">Vulpea v2.4: unlinked mentions, schemas, and renaming - Boris Buliga</a> (<a href="https://github.com/d12frosted/vulpea/blob/master/CHANGELOG.org">changelog</a>, <a href="https://www.reddit.com/r/emacs/comments/1ug8rkh/vulpea_24/">Reddit</a>)</li>
</ul></li>
<li>Coding:
<ul class="org-ul">
<li><a href="https://codeberg.org/gemmaro/flymake-sqlite/releases/tag/v0.3.0">flymake-sqlite v0.3.0</a> (<a href="https://mastodon.social/@gemmaro/116830158525129994">@gemmaro</a>)</li>
<li><a href="https://batsov.com/articles/2026/06/24/neocaml-0-9-repl-completion-and-robustness/">Bozhidar Batsov: Neocaml 0.9: A Better REPL, Dune/Opam Completion, and More Robustness</a></li>
<li><a href="https://ankit.earth/microblog/1782413285/">Ankit Gadiya: which-function-mode displays the current function in the mode line</a></li>
</ul></li>
<li>Web:
<ul class="org-ul">
<li><a href="http://github.com/dmgerman/browsel">Browsel: a two way communication between the web browser and emacs</a> (<a href="https://www.youtube.com/watch?v=8nSiG_hMZWI">YouTube</a> 10:28, (<a href="https://www.reddit.com/r/emacs/comments/1ugg083/browsel_a_two_way_communication_between_the_web/">Reddit</a>)</li>
</ul></li>
<li>Mail, news, and chat:
<ul class="org-ul">
<li><a href="https://www.cyan.sh/blog/posts/new-package-gomuks-el.html">Jakub Nowak: New Package: Gomuks.el</a> - Matrix client written in Go</li>
</ul></li>
<li>Multimedia:
<ul class="org-ul">
<li><a href="https://github.com/Nuno69/as-sound-switch">as-sound-switch: blazingly fast audio i/o switcher for Emacs</a> (<a href="https://www.reddit.com/r/emacs/comments/1ufn6rf/assoundswitch_blazingly_fast_audio_io_switcher/">Reddit</a>) MacOS</li>
<li><a href="https://github.com/luqtas/csound-score-emacs">luqtas/csound-score-emacs: my take on navigating the Csound score paradigm with Emacs · GitHub</a></li>
</ul></li>
<li>Fun:
<ul class="org-ul">
<li><a href="https://i.redd.it/9l1hon0a0d9h1.png">the learning cliff and the View from the Top</a> (<a href="https://www.reddit.com/r/emacs/comments/1uf0d2k/the_learning_cliff_and_the_view_from_the_top/">Reddit</a>)</li>
</ul></li>
<li>AI:
<ul class="org-ul">
<li><a href="https://i.redd.it/zmr1fdobqf9h1.jpeg">For scientists and learners: agent-shell renders equations as you chat</a> (<a href="https://www.reddit.com/r/emacs/comments/1ufbipv/for_scientists_and_learners_agentshell_renders/">Reddit</a>, <a href="https://www.youtube.com/watch?v=wGM3xH06Wso">YouTube</a>)</li>
<li><a href="https://github.com/jdormit/emacs-opencode">emacs-opencode: native Emacs client for OpenCode</a> (<a href="https://www.reddit.com/r/emacs/comments/1udlrp4/emacsopencode_native_emacs_client_for_opencode/">Reddit</a>)</li>
<li><a href="https://github.com/gavv/emacs-jail-mcp">emacs-jail-mcp: MCP server with disposable Emacs sandbox</a> (<a href="https://www.reddit.com/r/emacs/comments/1ug8u46/emacsjailmcp_mcp_server_with_disposable_emacs/">Reddit</a>)</li>
<li><a href="https://github.com/elij/macher-agent">macher-agent updates (emacs native agent orchestration)</a> (<a href="https://www.reddit.com/r/emacs/comments/1udhcnj/macheragent_updates_emacs_native_agent/">Reddit</a>)</li>
<li><a href="https://metaredux.com/posts/2026/06/26/copilot-el-0-7.html">Meta Redux: copilot.el 0.7</a></li>
<li><a href="http://en.andros.dev/blog/4b707a03/how-i-built-a-gpu-backend-for-emacs/">Andros Fenollosa: How I built a GPU backend for Emacs</a> (<a href="https://www.reddit.com/r/emacs/comments/1ufiyu3/how_i_built_a_gpu_backend_for_emacs/">Reddit</a>, <a href="https://news.ycombinator.com/item?id=48642503">HN</a>)</li>
<li><a href="https://xlii.space/eng/honesty-gets-emacs-patch-rejected/#fnref:2">Honesty gets Emacs patch rejected</a> (<a href="https://www.reddit.com/r/emacs/comments/1uhb06f/honesty_gets_emacs_patch_rejected/">Reddit</a>, <a href="https://news.ycombinator.com/item?id=48681557">HN</a>, <a href="https://lobste.rs/s/omq8rt/vibecoding_gets_emacs_patch_rejected">lobste.rs</a>)</li>
</ul></li>
<li>Community:
<ul class="org-ul">
<li><a href="https://plaindrops.de/blog/2026/emacscarnival2607/">Emacs Blog Carnival July 2026 "Programming" | Plain DrOps</a> (<a href="https://chaos.social/@SpaceCadet/116832844194274430">@SpaceCadet@chaos.social</a>)</li>
<li><a href="https://www.eliasstorms.net/notes/emacs-anniversary.html">Emacs anniversary</a> (<a href="https://mastodon.social/@EFLS/116806578556818263">@EFLS</a>)</li>
<li><a href="https://willemvandenende.com/blog/engineering/an-example-would-be-handy-right-now">An example would be handy right about now - how to shave yaks with great efficiency . — Willem van den Ende</a> (<a href="https://mastodon.social/@mostalive/116821163748437793">@mostalive</a>)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1udwq2v/do_all_emacs_veterans_that_started_from_doom/">Do all emacs veterans that started from doom eventually roll out their own vanilla config?</a></li>
<li><a href="https://www.hristos.co/blog/ten-years-of-emacs/">Hristos N. Triantafillou: Ten Years Of Emacs</a></li>
<li><a href="https://youtu.be/EnwG2zRT7BA">Neovim user trying to learn Vanilla Emacs properly, what should I focus on first?</a> (<a href="https://www.reddit.com/r/emacs/comments/1udtytx/neovim_user_trying_to_learn_vanilla_emacs/">Reddit</a>) - linkarzu
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=ooyn60c5UbA">Ok, so Now we're Really Installing it</a> (01:50:14)</li>
<li><a href="https://www.youtube.com/watch?v=iXCDQlGM_j4">Follow The Emacs Tutorial (Day 3)</a> (01:25:38)</li>
<li><a href="https://www.youtube.com/watch?v=bDVopQNscNM">Emacs Tutorial part 2 (Day 4)</a> (02:07:00)</li>
<li><a href="https://www.youtube.com/watch?v=hsPHmIMURqw">0012 | Learning Emacs with The Professor from University of Victoria</a> (01:34:35)
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=xVmqPzYnqaw">Learning Emacs with The Professor from University of Victoria</a> (12:50)</li>
</ul></li>
</ul></li>
<li><a href="https://www.youtube.com/watch?v=HnL77t4IsBY">Doom Emacs: Why I Chose It Over Vim and Never Looked Back</a> (27:03)</li>
</ul></li>
<li>Other:
<ul class="org-ul">
<li><a href="https://github.com/jixiuf/helixel-mode">Helixel - Another Helix Emulation Layer</a> (<a href="https://www.reddit.com/r/emacs/comments/1uegy1h/helixel_another_helix_emulation_layer/">Reddit</a>)</li>
</ul></li>
<li>Emacs development:
<ul class="org-ul">
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=268e055e0515ccec8159b13d4b2e97428bd63b5e">Limit VC-Dir status process output processing</a></li>
</ul></li>
<li>New packages:
<ul class="org-ul">
<li><a target="_blank" href="https://melpa.org/#/fzfa">fzfa</a>: Async fuzzy completion via `fzf-native' (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/git-overleaf">git-overleaf</a>: Clone, push, and pull full Overleaf projects with Git (MELPA)</li>
<li><a target="_blank" href="https://elpa.gnu.org/packages/lisp-ts-mode.html">lisp-ts-mode</a>: lisp-mode with tree-sitter support (GNU ELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/musicbrainz-interactive">musicbrainz-interactive</a>: Interactive commands for MusicBrainz related things (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/youtube-music">youtube-music</a>: YouTube Music client (MELPA)</li>
</ul></li>
</ul>

<p>
Links from <a href="https://www.reddit.com/r/emacs">reddit.com/r/emacs</a>, <a href="https://www.reddit.com/r/orgmode">r/orgmode</a>, <a href="https://www.reddit.com/r/spacemacs">r/spacemacs</a>, <a href="https://mastodon.social/tags/emacs">Mastodon #emacs</a>, <a href="https://bsky.app/hashtag/emacs">Bluesky #emacs</a>, <a href="https://hn.algolia.com/?query=emacs&amp;sort=byDate&amp;prefix&amp;page=0&amp;dateRange=all&amp;type=story">Hacker News</a>, <a href="https://lobste.rs/search?q=emacs&amp;what=stories&amp;order=newest">lobste.rs</a>, <a href="https://programming.dev/c/emacs?dataType=Post&amp;page=1&amp;sort=New">programming.dev</a>, <a href="https://lemmy.world/c/emacs">lemmy.world</a>, <a href="https://lemmy.ml/c/emacs?dataType=Post&amp;page=1&amp;sort=New">lemmy.ml</a>, <a href="https://planet.emacslife.com">planet.emacslife.com</a>, <a href="https://www.youtube.com/playlist?list=PL4th0AZixyREOtvxDpdxC9oMuX7Ar7Sdt">YouTube</a>, <a href="http://git.savannah.gnu.org/cgit/emacs.git/log/etc/NEWS">the Emacs NEWS file</a>, <a href="https://emacslife.com/calendar/">Emacs Calendar</a>, and <a href="https://lists.gnu.org/archive/html/emacs-devel/2026-06">emacs-devel</a>. Thanks to Andrés Ramírez for emacs-devel links. Do you have an Emacs-related link or announcement? Please e-mail me at <a href="mailto:sacha@sachachua.com">sacha@sachachua.com</a>. Thank you!</p>
<div><a href="https://sachachua.com/blog/2026/06/2026-06-29-emacs-news/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%2F2026-06-29-emacs-news%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">2026-06-22 Emacs news</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/06/2026-06-22-emacs-news/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-06-23T02:30:26Z</updated>
    <published>2026-06-23T02:30:26Z</published>
    <category term="emacs" />
<category term="emacs-news" />
		<id>https://sachachua.com/blog/2026/06/2026-06-22-emacs-news/</id>
		<content type="html"><![CDATA[<p>
There was lots of discussion around Rahul's post on Emacs 31. It's the
first link in the list below, so I won't repeat the links here. Also,
I like visualizations, so I thought these <a href="https://github.com/elij/grove-extra">force-directed graphs</a>
(<a href="https://www.reddit.com/r/emacs/comments/1u9vvt3/emacs_svg_rendering_in_force_directed_graph_sims/">Reddit</a>) and <a href="https://github.com/krvkir/org-mindmap">text-based mindmaps</a> (<a href="https://www.reddit.com/r/emacs/comments/1u82429/orgmindmap_v030/">Reddit</a>, <a href="https://lobste.rs/s/sqiyga/org_mindmap_editable_mindmaps_for_org">lobste.rs</a>) were pretty cool.
Enjoy!
</p>

<ul class="org-ul">
<li>Emacs 31:
<ul class="org-ul">
<li><a href="https://www.rahuljuliato.com/posts/emacs-31-around-the-corner">Emacs 31 Is Around the Corner: The Changes I'm Already Daily Driving</a> (<a href="https://www.reddit.com/r/emacs/comments/1u8vr3e/emacs_31_is_around_the_corner_the_changes_im/">Reddit</a>, <a href="https://news.ycombinator.com/item?id=48584135">HN</a>, <a href="https://lobste.rs/s/b0mp2e/changes_emacs_31_i_m_already_daily_driving">lobste.rs</a>, <a href="https://irreal.org/blog/?p=13889">Irreal</a>)</li>
</ul></li>
<li>Upcoming events (<a href="https://emacslife.com/calendar/emacs-calendar.ics">iCal file</a>, <a href="https://emacslife.com/calendar/">Org</a>):
<ul class="org-ul">
<li>Emacs Berlin: Emacs-Berlin Hybrid Meetup <a href="https://emacs-berlin.org/">https://emacs-berlin.org/</a> Wed Jun 24 1000 America/Vancouver - 1200 America/Chicago - 1300 America/Toronto - 1700 Etc/GMT - 1900 Europe/Berlin - 2230 Asia/Kolkata &ndash; Thu Jun 25 0100 Asia/Singapore</li>
<li>Emacs APAC: Emacs APAC meetup (virtual) <a href="https://emacs-apac.gitlab.io/announcements/">https://emacs-apac.gitlab.io/announcements/</a> Sat Jun 27 0130 America/Vancouver - 0330 America/Chicago - 0430 America/Toronto - 0830 Etc/GMT - 1030 Europe/Berlin - 1400 Asia/Kolkata - 1630 Asia/Singapore</li>
<li>EmacsATX: Emacs Social <a href="https://www.meetup.com/emacsatx/events/315091677/">https://www.meetup.com/emacsatx/events/315091677/</a> Thu Jul 2 1600 America/Vancouver - 1800 America/Chicago - 1900 America/Toronto - 2300 Etc/GMT &ndash; Fri Jul 3 0100 Europe/Berlin - 0430 Asia/Kolkata - 0700 Asia/Singapore</li>
<li>M-x Research: TBA <a href="https://m-x-research.github.io/">https://m-x-research.github.io/</a> Fri Jul 3 0800 America/Vancouver - 1000 America/Chicago - 1100 America/Toronto - 1500 Etc/GMT - 1700 Europe/Berlin - 2030 Asia/Kolkata - 2300 Asia/Singapore</li>
<li>Emacs.si (in person): Emacs.si meetup #7 2026 (v #živo) <a href="https://dogodki.kompot.si/events/88d59360-d89a-42cc-b567-ed39ac5186fb">https://dogodki.kompot.si/events/88d59360-d89a-42cc-b567-ed39ac5186fb</a> Mon Jul 6 1900 CET</li>
</ul></li>
<li>Beginner:
<ul class="org-ul">
<li><a href="https://www.chiply.dev/post-ask-emacs">Emacs Teaches Emacs: The Missing README</a> (<a href="https://www.youtube.com/watch?v=5ZZvQA0Ceb4">YouTube</a> 13:57, <a href="https://www.reddit.com/r/emacs/comments/1u9k3td/emacs_teaches_emacs_the_missing_readme/">Reddit</a>, <a href="https://irreal.org/blog/?p=13891">Irreal</a>, <a href="https://fosstodon.org/@chiply/116773411167976275">@chiply@fosstodon.org</a>)</li>
<li><a href="https://www.chiply.dev/post-june-emacs-carnival">Charlie Holland: Juneau Something? Emacs Teaches You How to Fish!</a> (<a href="https://www.youtube.com/watch?v=vnJhd-AgOBE">YouTube</a> 01:13:19, <a href="https://www.reddit.com/r/emacs/comments/1u8b0we/juneau_something_emacs_teaches_you_how_to_fish/">Reddit</a>, <a href="https://irreal.org/blog/?p=13884">Irreal</a>, <a href="https://fosstodon.org/@chiply/116766579307318213">@chiply@fosstodon.org</a>)</li>
</ul></li>
<li>Emacs configuration:
<ul class="org-ul">
<li><a href="https://mbork.pl/2026-06-22_Disabling_minor_modes_with_local_variables">Marcin Borkowski: Disabling minor modes with local variables</a></li>
<li><a href="https://github.com/alberti42/straight-overview">For straight.el people: an overview of outdated packages, and control over what gets updated</a> (<a href="https://www.reddit.com/r/emacs/comments/1u9unvy/for_straightel_people_an_overview_of_outdated/">Reddit</a>)</li>
<li><a href="https://github.com/Borderliner/Chadmacs">Updated Chadmacs</a> (<a href="https://www.reddit.com/r/emacs/comments/1u9sbki/updated_chadmacs/">Reddit</a>)</li>
<li><a href="https://github.com/66-firebat/emacs">Firemacs Review</a> (<a href="https://www.reddit.com/r/emacs/comments/1uctzm3/firemacs_review/">Reddit</a>)</li>
</ul></li>
<li>Emacs Lisp:
<ul class="org-ul">
<li><a href="https://fosstodon.org/@lucashtns/116796404126391963">Tip: debug-on-variable-change (@lucashtns)</a></li>
<li><a href="https://www.youtube.com/watch?v=WO00BWgvWro">Xah Talk Show Ep795. emacs lisp. add width height to html image thumbnails. part 2</a> (01:01:50), <a href="https://www.youtube.com/watch?v=-PpAGJ5_IsY">part 3</a> (02:19:51)</li>
<li><a href="https://www.youtube.com/watch?v=MjO74sC_10Q">Construindo um pacote do Emacs como um asteca</a> (01:33:45)</li>
</ul></li>
<li>Appearance:
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1ubltvy/ghosting_cursor_effect/">Ghosting cursor effect</a></li>
<li><a href="https://github.com/barrulus/forge-cursor">Some cursor flare</a> (<a href="https://www.reddit.com/r/emacs/comments/1uavdc5/some_cursor_flare/">Reddit</a>)</li>
<li><a href="https://blog.davep.org/2026/06/15/more-mode-line-tweaking.html">Dave Pearson: More mode line tweaking</a></li>
<li><a href="https://www.reddit.com/gallery/1u9867g">Modus Nordic (Mid-)Night: high-contrast themes using the Nord color palette using Modus Themes as the base</a></li>
<li><a href="https://protesilaos.com/codelog/2026-06-17-emacs-testing-doric-themes-common-colour-values/">Protesilaos: Emacs: testing common colour values with the doric-themes</a></li>
<li><a href="https://protesilaos.com/codelog/2026-06-21-emacs-ef-themes-2-2-0/">Protesilaos: Emacs: ef-themes version 2.2.0</a></li>
<li><a href="https://protesilaos.com/codelog/2026-06-21-emacs-modus-themes-5-3-0/">Protesilaos: Emacs: modus-themes version 5.3.0</a></li>
</ul></li>
<li>Navigation:
<ul class="org-ul">
<li><a href="https://emacsredux.com/blog/2026/06/20/essential-structured-navigation-and-editing-commands/">Emacs Redux: Essential Structured Navigation and Editing Commands</a> (<a href="https://irreal.org/blog/?p=13893">Irreal</a>)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1uafbsn/underappreciated_emacs_builtins_hideshow_60/">Underappreciated Emacs built-ins: hideshow 6.0</a></li>
<li><a href="https://www.youtube.com/watch?v=ITR_gXnV9wo">Emacs HideShow Minor Mode For Folding And Unfolding 2026_06_21_03:01:51</a> (07:02)</li>
<li><a href="https://github.com/dalanicolai/jerboa">Amazing bookmarks (or quick keymaps)</a> (<a href="https://www.reddit.com/r/emacs/comments/1uc9a9i/amazing_bookmarks_or_quick_keymaps/">Reddit</a>)</li>
<li><a href="https://mbork.pl/2026-06-15_Scrolling_pdfs_in_other_windows">Marcin Borkowski: Scrolling pdfs in other windows</a> (<a href="https://irreal.org/blog/?p=13880">Irreal</a>)</li>
<li><a href="https://www.youtube.com/watch?v=-u0xfy5JMdU">How to Split the Screen in Emacs</a> (02:02)</li>
</ul></li>
<li>Dired:
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1u9nbbg/dired_global_script_runner_a_yaziinspired_global/">Dired Global Script Runner: A Yazi-inspired global file marking system for Dired</a></li>
</ul></li>
<li>Writing:
<ul class="org-ul">
<li><a href="https://github.com/luqtas/log-mode">luqtas/log-mode: cheap copy of Logseq with some extra goods · GitHub</a></li>
</ul></li>
<li>Org Mode:
<ul class="org-ul">
<li>RFC: <a href="https://i.redd.it/p05xlhzi9i7h1.png">Ideas for clearer Org clock idle resolution prompts?</a> (<a href="https://www.reddit.com/r/orgmode/comments/1u6sewx/ideas_for_clearer_org_clock_idle_resolution/">Reddit</a>)</li>
<li><a href="https://list.orgmode.org/CH3PR84MB3424DDF3E642AB403B70D177C50F2@CH3PR84MB3424.NAMPRD84.PROD.OUTLOOK.COM">[RFC] org-agenda log-mode is very confusing - Morgan Smith</a> (<a href="https://www.reddit.com/r/orgmode/comments/1u6sewx/ideas_for_clearer_org_clock_idle_resolution/">Reddit</a>)</li>
<li><a href="https://list.orgmode.org/CAL1eYuJMqwZNPxnoGhWGSp63=Gg1iToHzKrcgVdpJfWhiS83kg@mail.gmail.com">[FR] add :company-doc-buffer, :company-kind etc properties for pcomplete in org-mode - stardiviner</a></li>
<li><a href="https://github.com/kpassapk/devops.el">devops.el - Infrastructure as an org file</a> (<a href="https://www.reddit.com/r/emacs/comments/1ucu6xp/devopsel_infrastructure_as_an_org_file/">Reddit</a>)</li>
<li><a href="https://github.com/kickingvegas/anju/discussions/156">v1.6.0 · kickingvegas/anju · context menu support for Org agenda</a> (<a href="https://sfba.social/@kickingvegas/116767945517592307">@kickingvegas@sfba.social</a>)</li>
<li><a href="https://ray-on-emacs.blogspot.com/2026/06/emacs-carnival-diary-part-2.html">Raymond Zeitler: Emacs Carnival: diary, Part 2</a> (<a href="https://irreal.org/blog/?p=13882">Irreal</a>)</li>
<li><a href="https://github.com/krvkir/org-mindmap">org-mindmap v0.3.0</a> (<a href="https://www.reddit.com/r/emacs/comments/1u82429/orgmindmap_v030/">Reddit</a>, <a href="https://lobste.rs/s/sqiyga/org_mindmap_editable_mindmaps_for_org">lobste.rs</a>)</li>
<li><a href="https://www.macs.hw.ac.uk/~rs46/posts/2026-06-12-eisvogel-org-export-pdf.html">Exporting org files to PDF with the Eisvogel latex template</a> (<a href="https://www.reddit.com/r/emacs/comments/1u7eq0g/exporting_org_files_to_pdf_with_the_eisvogel/">Reddit</a>)</li>
<li><a href="https://list.orgmode.org/87zf0me6so.fsf@gmail.com">Org Mode requests: [FR] Exporter for ltx-talk</a></li>
<li><a href="https://list.orgmode.org/8733ygi64t.fsf@localhost/T/#u">Notes on recent OrgDevMeetup</a> (<a href="https://www.reddit.com/r/orgmode/comments/1u7nntz/new_orgdevmeetup_on_saturday_lets_contribute_to/">Reddit</a>)</li>
<li>Org development: <a href="https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/etc/ORG-NEWS?id=07c6db9bc8f4626e21e3c6a275b1640f6202cf14">org-colview: Add quick help for column view</a></li>
</ul></li>
<li>Completion:
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1ub7h89/underappreciated_emacs_builtins/">Underappreciated Emacs built-ins: completion-preview-mode</a></li>
</ul></li>
<li>Coding:
<ul class="org-ul">
<li><a href="https://metaredux.com/posts/2026/06/16/cider-1-22.html">Meta Redux: CIDER 1.22 (“São Miguel”)</a></li>
<li><a href="http://box.matto.nl/start-guile-shell-script-that-listens-on-a-port-for-repl-client.html">Start Guile shell script that listens on a port for REPL client - box.matto.nl</a> (<a href="https://snac.lab8.cz/mattof/p/1781641221.269522">@mattof@snac.lab8.cz</a>)</li>
<li><a href="https://codeberg.org/hgrsd/ztags">hgrsd/ztags: Generate ctags-based tags for your Zig project, including Zig sources and stdlib.</a> (<a href="https://hachyderm.io/@hgrsd/116798677831846923">@hgrsd@hachyderm.io</a>) - now supports etags output</li>
<li><a href="https://git.sr.ht/~shoshin/ruby-khipu">~shoshin/ruby-khipu - Implementation of the Inka Khipu as a data structure in Ruby. - sourcehut git</a> (<a href="https://buzz.cicadas.surf/@shoshin/116757888253657531">@shoshin@buzz.cicadas.surf</a>) - literate programming</li>
</ul></li>
<li>Shells:
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1u9l3fp/ghostel_is_fantastic/">Ghostel is Fantastic</a> (<a href="https://github.com/dakra/ghostel">Github</a>)</li>
<li><a href="https://github.com/csheaff/tmux-control">tmux-control : control-mode client for tmux</a> (<a href="https://www.reddit.com/r/emacs/comments/1u7wgfz/tmuxcontrol_controlmode_client_for_tmux/">Reddit</a>)</li>
<li><a href="https://cashmere.rs/blog/kitty-graphicsel-v100-document-zoom-pan-and-doctor/">kitty-graphics.el 1.0.0: images, video, and documents in terminal Emacs</a> (<a href="https://www.reddit.com/r/emacs/comments/1u7f5lw/kittygraphicsel_100_images_video_and_documents_in/">Reddit</a>)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1u78ufn/eatserial_an_eat_term_based_serial_terminal/">eat-serial: An eat term based serial terminal</a></li>
</ul></li>
<li>Web:
<ul class="org-ul">
<li><a href="https://ohyecloudy.com/emacsian/2024/05/11/web-archive/">URL로부터 Title을 가져오고 Web Archive 링크를 생성하는 Emacs 함수 - (emacsian ohyecloudy)</a></li>
</ul></li>
<li>Mail, news, and chat:
<ul class="org-ul">
<li><a href="https://github.com/parenworks/clatter.el">Clatter: An IRCv3-compliant IRC client</a> (<a href="https://www.reddit.com/r/emacs/comments/1ucq5vy/clatter_an_ircv3compliant_irc_client/">Reddit</a>)</li>
<li><a href="https://www.youtube.com/watch?v=HlEuXpG992A">Elfeed 4 0 0 使用分享</a> (49:47)</li>
</ul></li>
<li>Evil mode:
<ul class="org-ul">
<li><a href="https://fosstodon.org/@rogerfarrell/116772158102613873">evil-mode tip: make \ allow one-off normal state execution (@rogerfarrell)</a></li>
</ul></li>
<li>Multimedia:
<ul class="org-ul">
<li><a href="https://en.andros.dev/blog/4b707a03/how-i-built-a-gpu-backend-for-emacs/">How I built a GPU backend for Emacs | Andros Fenollosa</a> (<a href="https://activity.andros.dev/@andros/statuses/01KVSY47V3RWJRE42MJWA6214E">@andros@activity.andros.dev</a>)
<ul class="org-ul">
<li><a href="https://andros.dev/blog/ea7a1527/como-construi-un-backend-de-gpu-para-emacs/">Cómo construí un backend de GPU para Emacs | Andros Fenollosa</a></li>
</ul></li>
<li><a href="https://github.com/elij/grove-extra">Emacs SVG rendering in force directed graph sims revisited</a> (<a href="https://www.reddit.com/r/emacs/comments/1u9vvt3/emacs_svg_rendering_in_force_directed_graph_sims/">Reddit</a>)</li>
<li><a href="https://www.youtube.com/watch?v=Btrw8g8GTjQ">Speech to text with Whisper-cpp Emacs and whisper.el</a> (55:56)</li>
<li><a href="https://xenodium.com/ytr-youtube-radio-for-emacs">Alvaro Ramirez: ytr: YouTube radio for Emacs</a> (<a href="https://www.reddit.com/r/emacs/comments/1ucwbi8/ytr_youtube_radio_for_emacs/">Reddit</a>, <a href="https://news.ycombinator.com/item?id=48636380">HN</a>, <a href="https://irreal.org/blog/?p=13895">Irreal</a>)</li>
</ul></li>
<li>AI:
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=7fdHeUoRRgg">Bending Emacs Episode 14: Prototyping iOS apps with agent-shell, artist-mode, and Claude Skills</a> (<a href="https://www.youtube.com/watch?v=7fdHeUoRRgg">YouTube</a> 26:39, <a href="https://www.reddit.com/r/emacs/comments/1u9eage/bending_emacs_episode_14_prototyping_ios_apps/">Reddit</a>)</li>
</ul></li>
<li>Community:
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1u71nm1/fortnightly_tips_tricks_and_questions_20260616/">Fortnightly Tips, Tricks, and Questions — 2026-06-16 / week 24</a></li>
<li><a href="https://blogsystem5.substack.com/p/is-anyone-still-using-emacs">Is anyone still using Emacs? - by Julio Merino</a>  (<a href="https://lobste.rs/s/s1ep1w/is_anyone_still_using_emacs">lobste.rs</a>, <a href="https://news.ycombinator.com/item?id=48615739">HN</a>, <a href="https://news.ycombinator.com/item?id=48615739">HN</a>)</li>
<li><a href="https://xvw.lol/en/articles/emacs-start.html">xvw.lol - Emacs, how it all started (for me)</a> (<a href="https://news.ycombinator.com/item?id=48542784">HN</a>, <a href="https://merveilles.town/@xvw/116754855899834357">@xvw@merveilles.town</a>)
<ul class="org-ul">
<li><a href="https://xvw.lol/pages/emacs-start.html">xvw.lol - Emacs, comment tout a démarré (pour moi)</a></li>
</ul></li>
<li><a href="https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/">Sacha Chua: Emacs Chat 26: Ross A. Baker</a> (<a href="https://www.youtube.com/watch?v=_tEcqbi_2o8">YouTube</a> 01:02:45)</li>
</ul></li>
<li>Other:
<ul class="org-ul">
<li><a href="https://ray-on-emacs.blogspot.com/2026/06/emacs-carnival-diary-part-1.html">Raymond Zeitler: Emacs Carnival: diary, Part 1</a></li>
<li><a href="https://blog.davep.org/2026/06/16/become-el-v1-4-0.html">Dave Pearson: become.el v1.4.0</a> - tidying files before saving</li>
<li><a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Document-View.html">Document View (GNU Emacs Manual)</a> (<a href="https://mathstodon.xyz/@annamalai/116758228616242732">@annamalai@mathstodon.xyz</a>) - can open PDFs as plain text</li>
<li><a href="https://monadicsheep.org/blog/hello.html">Monadic Sheep: Hello there!</a> - Emacs Reader, PALE (picture and animation), canvas patch, Insidious YouTube client</li>
<li><a href="https://masutaka.net/en/2026-06-21-1/">Switching from the Mac port Build of Emacs to the Standard NS Build | Masutaka's ChangeLog Memo</a>
<ul class="org-ul">
<li><a href="https://masutaka.net/2026-06-21-1/">Mac port 版 Emacs から、標準の NS 版に乗り換えられた | マスタカの ChangeLog メモ</a></li>
</ul></li>
</ul></li>
<li>Emacs development:
<ul class="org-ul">
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=c7b156dce38a51aff3096fb34a8fbfccfb6c077c">gv.el: Allow use of `ignore` as a place (bug#81217)</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=e13fb667a2179548a1b57bf1e345b5a1dc00bb24">Support OSC 8 hyperlinks in man pages</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=3e0915c68825ca88244ddf1f670f6dd62dcd131c">; * etc/NEWS: Document 'newsticker-treeview-copy-url' (bug#81013).</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=08f02cbae08ccd945fc09d48c3ee02dce628bee8">VC-Dir shows key binding hints</a></li>
</ul></li>
<li>New packages:
<ul class="org-ul">
<li><a target="_blank" href="https://melpa.org/#/clatter">clatter</a>: An IRCv3-compliant IRC client (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/countdown-modeline">countdown-modeline</a>: Display a color-coded countdown in the modeline (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/leadkey">leadkey</a>: Translate leader keys to key sequences (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/notmuch-multi">notmuch-multi</a>: Prettified Notmuch UI For Multiple Accounts (MELPA)</li>
</ul></li>
</ul>

<p>
Links from <a href="https://www.reddit.com/r/emacs">reddit.com/r/emacs</a>, <a href="https://www.reddit.com/r/orgmode">r/orgmode</a>, <a href="https://www.reddit.com/r/spacemacs">r/spacemacs</a>, <a href="https://mastodon.social/tags/emacs">Mastodon #emacs</a>, <a href="https://bsky.app/hashtag/emacs">Bluesky #emacs</a>, <a href="https://hn.algolia.com/?query=emacs&amp;sort=byDate&amp;prefix&amp;page=0&amp;dateRange=all&amp;type=story">Hacker News</a>, <a href="https://lobste.rs/search?q=emacs&amp;what=stories&amp;order=newest">lobste.rs</a>, <a href="https://programming.dev/c/emacs?dataType=Post&amp;page=1&amp;sort=New">programming.dev</a>, <a href="https://lemmy.world/c/emacs">lemmy.world</a>, <a href="https://lemmy.ml/c/emacs?dataType=Post&amp;page=1&amp;sort=New">lemmy.ml</a>, <a href="https://planet.emacslife.com">planet.emacslife.com</a>, <a href="https://www.youtube.com/playlist?list=PL4th0AZixyREOtvxDpdxC9oMuX7Ar7Sdt">YouTube</a>, <a href="http://git.savannah.gnu.org/cgit/emacs.git/log/etc/NEWS">the Emacs NEWS file</a>, <a href="https://emacslife.com/calendar/">Emacs Calendar</a>, and <a href="https://lists.gnu.org/archive/html/emacs-devel/2026-06">emacs-devel</a>. Thanks to Andrés Ramírez for emacs-devel links. Do you have an Emacs-related link or announcement? Please e-mail me at <a href="mailto:sacha@sachachua.com">sacha@sachachua.com</a>. Thank you!
</p>
<div><a href="https://sachachua.com/blog/2026/06/2026-06-22-emacs-news/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%2F2026-06-22-emacs-news%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/category/emacs/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/category/emacs/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/category/emacs/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/category/emacs/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>
</feed>