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

>
<channel>
	<title>Sacha Chua</title>
	<atom:link href="https://sachachua.com/blog/feed/index.xml" rel="self" type="application/rss+xml" />
	<atom:link href="https://sachachua.com" rel="alternate" type="text/html" />
	<link>https://sachachua.com/blog/feed/index.xml</link>
	<description>Emacs, sketches, and life</description>
  
	<lastBuildDate>Mon, 15 Jun 2026 13:54:28 GMT</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>daily</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>11ty</generator>
  <item>
		<title>2026-06-15 Emacs news</title>
		<link>https://sachachua.com/blog/2026/06/2026-06-15-emacs-news/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Mon, 15 Jun 2026 13:54:28 GMT</pubDate>
    <category>emacs</category>
<category>emacs-news</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/06/2026-06-15-emacs-news/</guid>
		<description><![CDATA[<p>
Lots of discussion around Karthik's latest blog post <a href="https://karthinks.com/software/even-more-batteries-included-with-emacs/">Even More Batteries Included with Emacs</a> (<a href="https://www.reddit.com/r/emacs/comments/1u5pago/even_more_batteries_included_with_emacs_karthinks/">Reddit</a>, <a href="https://news.ycombinator.com/item?id=48535886">HN</a>, <a href="https://lobste.rs/s/wwbl1n/even_more_batteries_included_with_emacs">lobste.rs</a>). Check it out!
</p>

<ul class="org-ul">
<li>Emacs updates:
<ul class="org-ul">
<li><a href="https://copr.fedorainfracloud.org/coprs/bhavin192/emacs-pretest/">Emacs 31.0.90 pretest packages for Fedora</a> (<a href="https://www.reddit.com/r/emacs/comments/1u17dmp/emacs_31090_pretest_packages_for_fedora/">Reddit</a>)</li>
<li><a href="https://f-droid.org/en/packages/org.gnu.emacs/">Emacs 31.0.90 pretest packages for Android, via F-Droid</a> (<a href="https://www.reddit.com/r/emacs/comments/1u6ed1e/emacs_31090_pretest_packages_for_android_via/">Reddit</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>M-x Research: TBA <a href="https://m-x-research.github.io/">https://m-x-research.github.io/</a> Wed Jun 17 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 Jun 20 0900 America/Vancouver - 1100 America/Chicago - 1200 America/Toronto - 1600 Etc/GMT - 1800 Europe/Berlin - 2130 Asia/Kolkata &ndash; Sun Jun 21 0000 Asia/Singapore</li>
<li>EmacsSF (in person): coffee.el in SF <a href="https://www.meetup.com/emacs-sf/events/315192115/">https://www.meetup.com/emacs-sf/events/315192115/</a> Sat Jun 20 1100 America/Los_Angeles</li>
<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>
</ul></li>
<li>Beginner:
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=Lnj45uzDcLc">How to Install a Package on Emacs From Melpa</a> (04:09)</li>
</ul></li>
<li>Emacs configuration:
<ul class="org-ul">
<li><a href="https://rtzptz.xyz/posts/eat-replace-shell-pop.html">Replace shell-pop with built-in display-buffer-alist</a> (<a href="https://www.reddit.com/r/emacs/comments/1u1fmm5/replace_shellpop_with_builtin_displaybufferalist/">Reddit</a>)</li>
<li><a href="https://codeberg.org/salvari/emacs30_elpaca_public">salvari/emacs30_elpaca_public: My new configuration for Emacs using Elpaca as package manager - Codeberg.org</a> (<a href="https://mastodon.gal/@salvari/116720718764088405">@salvari@mastodon.gal</a>)</li>
</ul></li>
<li>Emacs Lisp:
<ul class="org-ul">
<li><a href="https://lars.ingebrigtsen.no/2026/06/11/web-scraping-is-getting-harder-all-the-time/">Lars Ingebrigtsen: Web scraping is getting harder all the time</a></li>
<li><a href="https://tv.dyne.org/w/d38i5Gmk4xpHEHdFq8mGfW">[22] Integrating Emacs Reader with Canvas - Dyne.org TV</a> (<a href="https://mathstodon.xyz/@divyaranjan/116737776379893396">@divyaranjan@mathstodon.xyz</a>)</li>
</ul></li>
<li>Appearance:
<ul class="org-ul">
<li><a href="https://github.com/kn66/halo.el">halo.el: an experimental minor mode for keeping point centered and dimming distant lines</a> (<a href="https://www.reddit.com/r/emacs/comments/1u5i881/haloel_an_experimental_minor_mode_for_keeping/">Reddit</a>)</li>
<li><a href="https://github.com/gonewest818/dimmer.el">dimmer.el &ndash; after a hiatus, new development underway</a> (<a href="https://www.reddit.com/r/emacs/comments/1u2af5n/dimmerel_after_a_hiatus_new_development_underway/">Reddit</a>) - dims inactive buffers; updates: reset when theme changes, handle child frames</li>
<li><a href="https://blog.davep.org/2026/06/12/simplifying-my-mode-line.html">Dave Pearson: Simplifying my mode line</a></li>
<li><a href="https://blog.davep.org/2026/06/13/it-got-darker.html">Dave Pearson: It got darker</a> - switched to a dark-mode</li>
<li><a href="https://github.com/kn66/vertico-buffer-frame">Inspired by nano-emacs: vertico-buffer-frame with nano-vertico</a> (<a href="https://www.reddit.com/r/emacs/comments/1u2zyp7/inspired_by_nanoemacs_verticobufferframe_with/">Reddit</a>)</li>
</ul></li>
<li>Navigation:
<ul class="org-ul">
<li><a href="https://github.com/dmgerman/bookmark-plusplus">modernizing bookmark+</a> (<a href="https://www.reddit.com/r/emacs/comments/1u4uzop/modernizing_bookmark/">Reddit</a>)- trying to get in touch with Drew Adams</li>
<li><a href="https://github.com/jamescherti/outline-indent.el">outline-indent, a modern Indentation-based Text Folding Mode for Emacs (Release 1.2.0)</a> (<a href="https://www.reddit.com/r/emacs/comments/1u18jlq/outlineindent_a_modern_indentationbased_text/">Reddit</a>)</li>
</ul></li>
<li>Dired:
<ul class="org-ul">
<li><a href="https://protesilaos.com/codelog/2026-06-13-emacs-flat-dired-for-regexp-since-days/">Protesilaos: Emacs: flat Dired listing for REGEXP, optionally up to DAYS since last  modification</a> (<a href="https://irreal.org/blog/?p=13875">Irreal</a>)</li>
</ul></li>
<li>Writing:
<ul class="org-ul">
<li><a href="https://batsov.com/articles/2026/06/11/emacs-loves-asciidoc/">Bozhidar Batsov: Emacs loves AsciiDoc</a> (<a href="https://irreal.org/blog/?p=13871">Irreal</a>)</li>
<li><a href="https://blog.davep.org/2026/06/14/blogmore-el-v5-3-0.html">Dave Pearson: blogmore.el v5.3.0</a> - adds blogmore-link-series</li>
<li><a href="https://gitlab.com/smaller-infinity/bibtex-format">New, Fast, BibTex Formatter</a> (<a href="https://www.reddit.com/r/emacs/comments/1u2djgg/new_fast_bibtex_formatter/">Reddit</a>) - Uses rust</li>
</ul></li>
<li>Denote:
<ul class="org-ul">
<li><a href="https://taonaw.com/2026/06/14/meta-journal-notes-in-denotejournal.html">TAONAW - Emacs and Org Mode: Meta Journal notes in Denote-Journal with Journelly</a></li>
</ul></li>
<li>Org Mode:
<ul class="org-ul">
<li><a href="https://sachachua.com/blog/2026/06/from-dc-toedt-copy-org-mode-as-markdown/">Sacha Chua: From DC Toedt: Copy Org Mode as Markdown</a></li>
<li><a href="https://ray-on-emacs.blogspot.com/2026/06/creating-reference-to-webpage-in-org.html">Raymond Zeitler: Creating a Reference to a Webpage in Org</a></li>
<li><a href="https://www.reddit.com/r/orgmode/comments/1u5gpmb/a_day_with_orgsupertag_one_persons_complete/">A Day with Org-SuperTag — One Person's Complete Workflow</a></li>
<li><a href="https://www.reddit.com/r/emacs/comments/1u31nrb/org_export_dispatcher_to_eisvogel_latex_template/">Org export dispatcher to Eisvogel LaTeX template</a></li>
<li><a href="https://tilde.town/~cryptk/blog/yaob.html">YAOB – Yet Another Org Blog · (interzone)</a> (<a href="https://mastodon.social/@cryptk/116722167175985830">@cryptk</a>)</li>
<li><a href="https://www.youtube.com/watch?v=t_mi-H9iFXA">Emacs Org-Roam: Gestione della Conoscenza a Grafi e Metodo Zettelkasten</a> (06:39)</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=0a7387385710c708d54af89ebcd3835eb8a2eb7a">ob-core: Obsolete `org-babel-remote-temporary-directory'</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/etc/ORG-NEWS?id=4dc39c7eb3d481984fabfe2bfe578da51fb9c779">org-agenda-timerange-leaders: Allow functions as element values</a></li>
</ul></li>
</ul></li>
<li>Completion:
<ul class="org-ul">
<li><a href="https://utcc.utoronto.ca/~cks/space/blog/programming/EmacsUnderstandingEmbark">Chris's Wiki - blog/programming/EmacsUnderstandingEmbark</a> (<a href="https://lobste.rs/s/secptg/understanding_embark_gnu_emacs_bit_some">lobste.rs</a>, <a href="https://lemmy.ml/post/48522563?scrollToComments=true">lemmy.ml</a>)</li>
</ul></li>
<li>Coding:
<ul class="org-ul">
<li><a href="https://emacs.dyerdwelling.family/emacs/20260610061920-emacs&#45;&#45;the-hidden-git-stash-keys-in-emacs-vc-directory-mode/">James Dyer: The Hidden Git Stash Keys in Emacs VC Directory Mode</a></li>
<li><a href="https://www.swift.org/documentation/articles/zero-to-swift-emacs.html">Configuring Emacs for Swift Development | Swift.org</a> (<a href="https://sfba.social/@kickingvegas/116734370211177731">@kickingvegas@sfba.social</a>)</li>
<li><a href="https://codeberg.org/zshaftel/tree-sitter-cl-syntax">Common Lisp tree-sitter grammar with a major-mode and Sly powered semantic highlighting</a> (<a href="https://www.reddit.com/r/emacs/comments/1u0pyfj/common_lisp_treesitter_grammar_with_a_majormode/">Reddit</a>)</li>
<li><a href="https://www.youtube.com/watch?v=i6i1omycw0Y">Corrigindo divergências entre arquivos de configuração do emacs</a> (01:37:06)</li>
</ul></li>
<li>Mail, news, and chat:
<ul class="org-ul">
<li><a href="https://github.com/laurynas-biveinis/mu4e-autotask/">mu4e-based email automation package</a> (<a href="https://www.reddit.com/r/emacs/comments/1u0iqtm/mu4ebased_email_automation_package/">Reddit</a>)</li>
<li><a href="https://git.securityops.co/cristiancmoises/whatsappel">Whatsappel - Run WhatsApp inside Emacs</a> (<a href="https://www.reddit.com/r/emacs/comments/1u58hb8/whatsappel_run_whatsapp_inside_emacs/">Reddit</a>)</li>
</ul></li>
<li>Doom Emacs:
<ul class="org-ul">
<li><a href="https://github.com/orgs/doomemacs/discussions/114">doom emacs 项目拆分为core和modules, doom emacs 将进入快速发展期</a> (<a href="https://www.reddit.com/r/DoomEmacs/comments/1u13u8o/doom_emacs_%E9%A1%B9%E7%9B%AE%E6%8B%86%E5%88%86%E4%B8%BAcore%E5%92%8Cmodules_doom_emacs_%E5%B0%86%E8%BF%9B%E5%85%A5%E5%BF%AB%E9%80%9F%E5%8F%91%E5%B1%95%E6%9C%9F/">Reddit</a>)</li>
</ul></li>
<li>Fun:
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=7tURkbpdUmo">The World Cup&hellip; in emacs! ⚽️💻</a> (04:41, <a href="https://www.reddit.com/r/emacs/comments/1u2q0o9/the_world_cup_in_emacs/">Reddit</a>)</li>
<li><a href="https://www.chiply.dev/post-emacs-svg-benchmark">Emacs SVG Benchmark Reveals Gaming-Caliber Frame Rates</a> (<a href="https://www.reddit.com/r/emacs/comments/1u2ycqp/emacs_svg_benchmark_reveals_gamingcaliber_frame/">Reddit</a>)</li>
</ul></li>
<li>AI:
<ul class="org-ul">
<li><a href="https://xenodium.com/agent-shell-0-55-updates">Alvaro Ramirez: agent-shell 0.55 updates</a> (<a href="https://lobste.rs/s/qulbgz/agent_shell_0_55_updates">lobste.rs</a>, <a href="https://www.reddit.com/r/emacs/comments/1u2x3ur/agentshell_055_updates/">Reddit</a>)</li>
<li><a href="https://github.com/dnouri/pi-coding-agent/releases/tag/v2.5.0">New Pi Emacs coding harness release has no trust issues!</a> (<a href="https://www.reddit.com/r/emacs/comments/1u4s8ks/new_pi_emacs_coding_harness_release_has_no_trust/">Reddit</a>)</li>
<li><a href="https://codeberg.org/martenlienen/emcp">EMCP - Emacs an an MCP server</a> (<a href="https://www.reddit.com/r/emacs/comments/1u5ef0v/emcp_emacs_an_an_mcp_server/">Reddit</a>)</li>
<li><a href="https://www.youtube.com/watch?v=8JgIE48vh6c">Vibe Coding with Emacs' Built-In AI - System Crafters Live!</a> (01:47:29)</li>
</ul></li>
<li>Community:
<ul class="org-ul">
<li><a href="https://v.redd.it/uxwyavj7646h1">Joshua Blais on Doom Emacs, Vanilla Emacs, Guix, and 34-Key Keyboards</a> (<a href="https://www.reddit.com/r/emacs/comments/1u0iy6b/joshua_blais_on_doom_emacs_vanilla_emacs_guix_and/">Reddit</a>)</li>
<li><a href="https://ray-on-emacs.blogspot.com/2026/05/emacs-its-worth-revealing-oneself-for.html">Raymond Zeitler: Emacs &ndash; It's Worth Revealing Oneself For</a></li>
<li><a href="https://www.rahuljuliato.com/posts/blog-on-gemini">My Blog Now Has a Gemini Mirror</a> (<a href="https://www.reddit.com/r/emacs/comments/1u1hxyf/my_blog_now_has_a_gemini_mirror/">Reddit</a>) - Rahul Juliato</li>
</ul></li>
<li><a href="https://rossabaker.com/blog/underappreciated-emacs-built-ins/">Emacs Carnival: Underappreciated Built-ins</a>:
<ul class="org-ul">
<li><a href="https://karthinks.com/software/even-more-batteries-included-with-emacs/">Even More Batteries Included With Emacs (Karthinks)</a> (<a href="https://www.reddit.com/r/emacs/comments/1u5pago/even_more_batteries_included_with_emacs_karthinks/">Reddit</a>, <a href="https://news.ycombinator.com/item?id=48535886">HN</a>, <a href="https://lobste.rs/s/wwbl1n/even_more_batteries_included_with_emacs">lobste.rs</a>)</li>
<li><a href="https://www.youtube.com/watch?v=yuJYEua0ZwA">Yay Emacs 33: Sacha and Prot Talk Emacs: Built-ins</a> (01:01:36)</li>
<li><a href="https://www.homepages.ucl.ac.uk/~ucecesf/blog/20260602.html">Emacs carnival: rec mode, an all-text database system</a> (<a href="https://lobste.rs/s/p78ttt/emacs_rec_mode_all_text_database_system">lobste.rs</a>)</li>
</ul></li>
<li>Other:
<ul class="org-ul">
<li><a href="https://github.com/tanrax/emacs-gpu">tanrax/emacs-gpu: GNU Emacs with a GPU-accelerated display backend · GitHub</a> (<a href="https://activity.andros.dev/@andros/statuses/01KTZV88P5V4VCQ2M9293R9BTZ">@andros@activity.andros.dev</a>)</li>
<li><a href="https://www.youtube.com/watch?v=imAgBN3brns">Xah Talk Show Ep793. emacs, install Xah Fly Keys in WSL linux emacs</a> (02:18:11)</li>
<li><a href="https://www.youtube.com/watch?v=teAgI3aoIpU">Xah Talk Show Ep792. install emacs on wsl Windows Subsystem for Linux</a> (01:47:31)</li>
<li><a href="https://sachachua.com/blog/2026/06/june-11-sacha-and-prot-talk-emacs-built-ins/">Sacha Chua: Yay Emacs 33: Sacha and Prot Talk Emacs: Built-ins</a> (<a href="https://protesilaos.com/codelog/2026-06-09-emacs-live-sacha-chua-built-ins/">Prot</a>)</li>
<li><a href="https://chrismaiorana.com/tmux-wm-emacs-no-gui/">Chris Maiorana: When tmux is your window manager</a> (<a href="https://irreal.org/blog/?p=13868">Irreal</a>)</li>
</ul></li>
<li>Emacs development:
<ul class="org-ul">
<li>emacs-devel:
<ul class="org-ul">
<li><a href="https://yhetil.org/emacs-devel/ed53dc2f-d0e2-427d-9415-45901f95ffcf@gutov.dev/">Re: master 1d91d9b717d: project-vc-dir: Use truenames - Dmitry Gutov</a> - discussion of when to use symlinks and when to use truenames</li>
<li><a href="https://yhetil.org/emacs-devel/87zf0y8w0y.fsf@linabee.uk/">Re: SDL terminal type - Lina</a> - anyone interested in trying to port Emacs UI to SDL rendering?</li>
</ul></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=15e5f404f05f7a1ca5bdd8eb6a7579e0546472da">Optional display of overlay-arrow in margin (bug#81109)</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=87133286d6b7ed20c2d6aa41c9bf00c10bc80d30">Revert "project-vc-dir: Use truenames"</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=78a10d17c69970687f8330f6c896170bcf936ef3">Convert outline-search-function to defcustom</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=194c28aaf22979d46f22cc424ba8f1bc78db27b3">Add outline-search-from-regexp generic helper</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=c6c4888ced296b6bda7752066df44d95f591cb06">'work-buffer&ndash;release' kill locals silently and reset the buffer (bug#81111)</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=725120ca3de9f30c8c6bbaeb237f9c803c12b442">Set user options in file/directory locals like 'setopt-local' (bug#81120)</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=e7e9c55ba745e5499dc4d2370fda481b7270d74a">Add outline-show-entry-and-parents to reveal entry hierarchy</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=f343f20b9449c14deceb9fed1a062687c1d52d38">Mark vc-dir-show-outgoing-count obsolete</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=1d91d9b717df1781c07d28f46af4ac2af19c16b4">project-vc-dir: Use truenames</a></li>
</ul></li>
<li>New packages:
<ul class="org-ul">
<li><a target="_blank" href="https://melpa.org/#/pure-light-theme">pure-light-theme</a>: A light colored theme for e-ink color monitors (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/shexc-ts-mode">shexc-ts-mode</a>: Tree-sitter major mode for ShExC (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-15-emacs-news/index.org">View Org source for this post</a></div>
<p>You can <a href="https://social.sachachua.com/@sacha/statuses/01KV5XYWFASX9YDD8MN7QEGEC0" target="_blank" rel="noopener noreferrer">comment on Mastodon</a> or <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F06%2F2026-06-15-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>]]></description>
		</item><item>
		<title>La semaine du 1 au 7 juin</title>
		<link>https://sachachua.com/blog/2026/06/la-semaine-du-1-au-7-juin/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Wed, 10 Jun 2026 15:05:24 GMT</pubDate>
    <category>french</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/06/la-semaine-du-1-au-7-juin/</guid>
		<description><![CDATA[<div id="outline-container-entr-es-de-journal-la-semaine-du-1-au-6-juin-lundi-le-premier-juin" class="outline-3">
<h3 id="entr-es-de-journal-la-semaine-du-1-au-6-juin-lundi-le-premier-juin"><a href="https://sachachua.com/blog/feed/index.xml#entr-es-de-journal-la-semaine-du-1-au-6-juin-lundi-le-premier-juin">lundi le premier juin</a></h3>
<div class="outline-text-3" id="text-entr-es-de-journal-la-semaine-du-1-au-6-juin-lundi-le-premier-juin">
<p>
Ma fille a séché les cours et elle n'a pas non plus voulu aller à son cours de gymnastique parce qu'elle a eu une mauvaise nuit et elle était toujours grincheuse.
</p>

<p>
Au lieu de la harceler, j'ai travaillé sur des transcriptions et sur mon bulletin d'information sur Emacs. J'ai écrit des fonctions pour comparer les mots et effacer les étendues qui correspondent avec les mots effacés.
</p>

<p>
Après avoir lu dans sa chambre pendant longtemps, elle a finalement réapparu de bonne humeur. Elle et moi avons préparé du sushi pour le dîner. Ensuite, nous avons joué au Scrabble dehors.
</p>

<p>
Elle a porté sa prothèse oculaire toute seule. Elle a dit qu'elle l'a fait pour elle-même. Je pense que l'autonomie est très importante pour ma fille.
</p>

<p>
Nous avons fait du vélo à la cour de récréation avec son amie, où nous avons rejoint d'autres amies. De temps en temps, ma fille était surstimulée. Quand ça arrivait, elle a joué au Scrabble avec moi et la nourrice de ses amies. Après qu'une de ses amies soit partie, nous sommes allées à l'autre cour de récréation pour jouer encore.
</p>
</div>
</div>
<div id="outline-container-org1ee4e7e" class="outline-3">
<h3 id="org1ee4e7e"><a href="https://sachachua.com/blog/feed/index.xml#org1ee4e7e">mardi 3</a></h3>
<div class="outline-text-3" id="text-org1ee4e7e">
<p>
Ma fille a participé à l'école ce matin même s'il y avait un remplaçant, mais elle n'a pas voulu y participer l'après-midi. Nous sommes assises dehors et nous avons travaillé sur ses devoirs. Nous avons vu des pics.
</p>

<p>
J'ai emmené ma fille au parc pour jouer avec ses amis. Elle a aimé faire du vélo autour du parc avec ses amis et sans adultes. Ils ont aussi fait du vélo autour de la pataugeoire qui était sèche parce qu'elle n'était pas encore ouverte. Ils tournaient en rond.
</p>

<p>
J'ai fait l'erreur de jouer à mon jeu de Tileman Reworked près de ma fille. Elle a voulu m'aider, bien. Elle a recueilli les citrouilles et les canneberges, bien. Elle a commencé à couper l'herbe près des récoltes, euh&hellip; J'ai essayé d'expliquer qu'il ne fallait pas la couper, mais elle est devenue grincheuse parce que je la corrigeais. Elle m'a dit qu'elle voulait seulement m'aider et elle est partie furieuse. Ce n'est pas grave. Je pense que cette ferme est trop compliquée pour elle pour le moment. Notre ferme habituelle est meilleure. J'apprécie qu'elle ait voulu m'aider, et c'était juste un jeu. C'est aussi bien si elle apprend comment coopérer.
</p>

<p>
J'ai commencé à réécrire la transcription de la conversation entre ma sœur et notre cousine.
</p>
</div>
</div>
<div id="outline-container-org771074e" class="outline-3">
<h3 id="org771074e"><a href="https://sachachua.com/blog/feed/index.xml#org771074e">jeudi 4</a></h3>
<div class="outline-text-3" id="text-org771074e">
<p>
J'ai discuté d'Emacs avec Ben Zanin. Il a partagé sa configuration sur elfeed, la musique, et d'autres sujets.
</p>

<p>
J'ai travaillé comme consultante. J'ai pris un cours de formation.
</p>

<p>
Ma fille et moi avons fait du vélo au parc. Nous avons joué à la pataugeoire et au bac à sable. Nous avons improvisé des histoires de Donjons et Dragons avec les dés sur mon smartphone.
</p>

<p>
J'ai discuté avec mes sœurs et quelques personnes des assurances-vie de ma mère. Notre accès au compte bancaire sera limité si ma sœur décède, donc il vaut mieux que nous fassions la paperasse maintenant.
</p>
</div>
</div>
<div id="outline-container-orge57de8d" class="outline-3">
<h3 id="orge57de8d"><a href="https://sachachua.com/blog/feed/index.xml#orge57de8d">vendredi 5</a></h3>
<div class="outline-text-3" id="text-orge57de8d">
<p>
J'ai eu ma première session de la conversation avec mon tuteur aujourd'hui ! À mon grand étonnement, j'ai pu suivre assez de ses mots et j'ai pu expliquer mes pensées ( avec une mauvaise grammaire, bien sûr ). Je sais qu'il fallait que je m'entraîne à penser en français au lieu de traduire de l'anglais, donc davantage parler, davantage apprendre. C'est un exercice intense. J'avais transpiré. Nous avons réussi à parler de la programmation, des études à l'université, le travail, la vie, et d'autres sujets.
</p>

<p>
J'ai augmenté le stockage pour les vidéos de ma sœur.
</p>

<p>
J'ai signé la paperasse pour les assurances-vie.
</p>

<p>
J'ai appelé ma mère et je l'ai informée de la paperasse.
</p>
</div>
</div>
<div id="outline-container-orgd17d6a5" class="outline-3">
<h3 id="orgd17d6a5"><a href="https://sachachua.com/blog/feed/index.xml#orgd17d6a5">samedi 6</a></h3>
<div class="outline-text-3" id="text-orgd17d6a5">
<p>
J'ai téléchargé encore d'autres vidéos de ma sœur.
</p>

<p>
Nous avons joué aux Donjons et Dragons avec ses tantes et ses cousines. Ma fille était la meneuse de jeu pour une partie de la session. Nous avons cherché une petite chèvre perdue, et nous avons combattu quatre bandits déguisés en gardes.
</p>

<p>
Nous avons fait des mochis.
</p>

<p>
J'ai payé la pénalité pour la soumission en retard du bilan de vérification du revenu étranger que je n'ai pas pu finir l'année précédente parce que le banquier était peu communicatif. Tant pis. Je pense que si ça arrive encore, je dois le soumettre avec ma meilleure estimation.
</p>

<p>
Dans mon jeu Tileman Reworked de Stardew Valley, j'ai finalement accédé à la boutique de Willy, le pêcheur. C'était le dernier jour d'automne de la quatrième année.
</p>

<p>
J'ai travaillé comme consultante. J'ai analysé des mises à jour.
</p>
</div>
</div>
<div id="outline-container-org8809b5f" class="outline-3">
<h3 id="org8809b5f"><a href="https://sachachua.com/blog/feed/index.xml#org8809b5f">dimanche 7</a></h3>
<div class="outline-text-3" id="text-org8809b5f">
<p>
J'ai emmené ma fille chez le perceur pour examiner ses oreilles. Le perceur nous a dit qu'elle avait l'autorisation de changer pour de nouvelles boucles d'oreilles. Sur le chemin du retour, nous avons fait une promenade dans le parc.
</p>

<p>
J'ai emmené ma fille au Dufferin Mall pour sélectionner des boucles d'oreilles. Après quelques comparaisons, ma fille a opté pour des clous d'oreilles en acier plaqué or avec des pierres moyennes chez New Steel. C'était bon marché.
</p>

<p>
J'ai fini de coudre la robe de ma fille. Elle voulait me coudre une robe, donc j'ai préparé des pièces pour elle. Il vaut mieux que j'utilise beaucoup d'épingles et que je trace une ligne à la craie.
</p>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/06/la-semaine-du-1-au-7-juin/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%2Fla-semaine-du-1-au-7-juin%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>From DC Toedt: Copy Org Mode as Markdown</title>
		<link>https://sachachua.com/blog/2026/06/from-dc-toedt-copy-org-mode-as-markdown/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Tue, 09 Jun 2026 15:49:08 GMT</pubDate>
    <category>emacs</category>
<category>org</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/06/from-dc-toedt-copy-org-mode-as-markdown/</guid>
		<description><![CDATA[<div class="update" id="org6a372d6">
<p>
<span class="timestamp-wrapper"><time class="timestamp" datetime="2026-06-10">[2026-06-10 Wed]</time></span>: Add embark way to do things.
</p>

</div>

<p>
DC Toedt is a lawyer and professor of practice who uses Emacs and Org Mode. He wanted a small Emacs Lisp function to convert Org Mode syntax to Markdown and copy it to the clipboard to make it easier to copy the materials he's writing for a course on contract drafting. This seems to be a common need, and here are several other approaches:
</p>

<ul class="org-ul">
<li><code>embark-org-copy-as-markdown</code> in <a target="_blank" href="https://melpa.org/#/embark">embark</a></li>
<li><a href="https://mbork.pl/2021-05-02_Org-mode_to_Markdown_via_the_clipboard">Marcin Borkowski: 2021-05-02 Org-mode to Markdown via the clipboard</a></li>
<li><a href="https://mmk2410.org/2026/04/14/copy-an-org-mode-region-as-markdown">Marcel Kapfer - Copy an Org Mode region as Markdown</a></li>
<li><a href="https://www.reddit.com/r/emacs/comments/17um2fk/does_anyone_have_a_function_they_use_to_quickly/">Reddit</a></li>
<li><a href="https://www.reddit.com/r/emacs/comments/e98yyf/send_output_of_orgmdexportasmarkdownstraight_to/">Reddit</a></li>
</ul>

<p>
Anyway, DC shared how he used Claude to generate a simple function to do it, which is here under public domain:
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">defun</span> <span class="org-function-name">my/org-to-markdown-clipboard</span> ()
  <span class="org-doc">"Export org region (or buffer) to Markdown and copy to clipboard.</span>
<span class="org-doc">With no active region, exports the whole buffer."</span>
  (<span class="org-keyword">interactive</span>)
  (<span class="org-keyword">require</span> <span class="org-highlight-quoted-quote">'</span><span class="org-constant">ox-md</span>)
  (<span class="org-keyword">let*</span> ((text (<span class="org-keyword">if</span> (use-region-p)
                   (buffer-substring-no-properties (region-beginning)
(region-end))
                 (buffer-substring-no-properties (point-min) (point-max))))
         (md (org-export-string-as text <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">md</span> t <span class="org-highlight-quoted-quote">'</span>(<span class="org-builtin">:with-toc</span> nil
                                                <span class="org-builtin">:with-author</span> nil
                                                <span class="org-builtin">:with-date</span> nil
                                                <span class="org-builtin">:with-title</span> nil))))
    (kill-new md)
    (message <span class="org-string">"Markdown copied (%d chars)"</span> (length md))))
(<span class="org-keyword">with-eval-after-load</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">org</span>
  (define-key org-mode-map (kbd <span class="org-string">"C-c m"</span>) <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">my/org-to-markdown-clipboard</span>))
</code></pre>
</div>

<div><a href="https://sachachua.com/blog/2026/06/from-dc-toedt-copy-org-mode-as-markdown/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%2Ffrom-dc-toedt-copy-org-mode-as-markdown%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>Yay Emacs 33: Sacha and Prot Talk Emacs: Built-ins</title>
		<link>https://sachachua.com/blog/2026/06/june-11-sacha-and-prot-talk-emacs-built-ins/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Tue, 09 Jun 2026 02:51:39 GMT</pubDate>
    <category>emacs</category>
<category>yay-emacs</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/06/june-11-sacha-and-prot-talk-emacs-built-ins/</guid>
		<description><![CDATA[<div class="update" id="org33bb627">
<p>
<span class="timestamp-wrapper"><time class="timestamp" datetime="2026-06-15">[2026-06-15 Mon]</time></span>: Updated transcript
</p>

</div>

<p>
I chatted with <a href="https://protesilaos.com">Prot</a> about the Emacs Carnival June 2026 topic <a href="https://rossabaker.com/blog/underappreciated-emacs-built-ins/">Underappreciated Emacs Built-ins</a>. Thanks to Ross A. Baker for hosting the carnival!
<video preload="none" controls="1" src="https://archive.org/download/yay-emacs-33-sacha-and-prot-talk-emacs-built-ins/yay-emacs-33-sacha-and-prot-talk-emacs-built-ins.mp4" poster="https://sachachua.com/blog/2026/06/june-11-sacha-and-prot-talk-emacs-built-ins/2026-06-08_22-53-17.png" type="video/mp4"><track kind="subtitles" label="Captions" src="https://sachachua.com/blog/2026/06/june-11-sacha-and-prot-talk-emacs-built-ins/yay-emacs-33-sacha-and-prot-talk-emacs-built-ins.vtt" srclang="en" default=""><span>Video not supported. Thumbnail:<br><img src="https://sachachua.com/blog/2026/06/june-11-sacha-and-prot-talk-emacs-built-ins/2026-06-08_22-53-17.png" alt="Thumbnail"></span></video>
</p>

<p>
<a href="https://archive.org/details/yay-emacs-33-sacha-and-prot-talk-emacs-built-ins/">View in the Internet Archive</a>, <a href="https://youtube.com/live/yuJYEua0ZwA">watch or comment on YouTube</a>, <a href="https://sachachua.com/blog/feed/index.xml#ID-yay-emacs-33-sacha-and-prot-talk-emacs-built-ins-transcript">read the transcript online</a>, <a href="https://sachachua.com/blog/2026/06/june-11-sacha-and-prot-talk-emacs-built-ins/yay-emacs-33-sacha-and-prot-talk-emacs-built-ins.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/underappreciated-emacs-built-ins/">Underappreciated Emacs Built-ins</a></li>
<li><a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/index.html">Top (GNU Emacs Manual)</a></li>
<li><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></li>
<li><a href="https://protesilaos.com/codelog/2026-04-30-emacs-decent-default-sacha-chua/">Emacs: decent defaults I shared with Sacha Chua | Protesilaos</a></li>
<li><a href="https://www.emacswiki.org/emacs/Carnival">EmacsWiki: Carnival</a></li>
</ul>
<div id="outline-container-yay-emacs-33-sacha-and-prot-talk-emacs-built-ins-chapters" class="outline-3">
<h3 id="yay-emacs-33-sacha-and-prot-talk-emacs-built-ins-chapters"><a href="https://sachachua.com/blog/feed/index.xml#yay-emacs-33-sacha-and-prot-talk-emacs-built-ins-chapters">Chapters</a></h3>
<div class="outline-text-3" id="text-yay-emacs-33-sacha-and-prot-talk-emacs-built-ins-chapters">
<p>
</p><ul class="org-ul">
<li><span class="audio-time" data-start="0.031" data-stop="2.517">0:00</span> Starting up</li>
<li><span class="audio-time" data-start="147.080" data-stop="150.407">2:27</span> Focus and distraction</li>
<li><span class="audio-time" data-start="234.846" data-stop="236.728">3:54</span> Org Mode and other note-taking, task-management systems</li>
<li><span class="audio-time" data-start="298.448" data-stop="301.010">4:58</span> Kill ring</li>
<li><span class="audio-time" data-start="410.110" data-stop="410.812">6:50</span> Registers</li>
<li><span class="audio-time" data-start="598.891" data-stop="603.755">9:58</span> Narrowing</li>
<li><span class="audio-time" data-start="724.994" data-stop="727.578">12:04</span> org-narrow-to-subtree</li>
<li><span class="audio-time" data-start="733.486" data-stop="740.858">12:13</span> narrow-to-defun</li>
<li><span class="audio-time" data-start="799.568" data-stop="800.693">13:19</span> Indirect buffers</li>
<li><span class="audio-time" data-start="890.980" data-stop="894.423">14:50</span> Undoing within a region</li>
<li><span class="audio-time" data-start="953.975" data-stop="955.838">15:53</span> Bookmarks</li>
<li><span class="audio-time" data-start="1061.205" data-stop="1062.287">17:41</span> isearch</li>
<li><span class="audio-time" data-start="1101.487" data-stop="1102.229">18:21</span> Tip: Add a counter to isearch</li>
<li><span class="audio-time" data-start="1166.570" data-stop="1171.037">19:26</span> C-x C-x (exchange-point-and-mark)</li>
<li><span class="audio-time" data-start="1255.279" data-stop="1257.281">20:55</span> Popping to marks - going back to where you were</li>
<li><span class="audio-time" data-start="1309.394" data-stop="1311.917">21:49</span> Selecting what you just pasted</li>
<li><span class="audio-time" data-start="1353.706" data-stop="1355.729">22:33</span> Indenting pasted or selected text with indent-rigidly</li>
<li><span class="audio-time" data-start="1404.487" data-stop="1408.171">23:24</span> Popping to mark after xref or imenu</li>
<li><span class="audio-time" data-start="1445.645" data-stop="1447.687">24:05</span> Adding other packages like consult</li>
<li><span class="audio-time" data-start="1484.447" data-stop="1486.889">24:44</span> Tip about indicating isearch wrapping</li>
<li><span class="audio-time" data-start="1526.814" data-stop="1530.139">25:26</span> Navigating by sentence or s-expression</li>
<li><span class="audio-time" data-start="1665.334" data-stop="1668.904">27:45</span> Navigating to other errors</li>
<li><span class="audio-time" data-start="1709.561" data-stop="1711.263">28:29</span> Tags</li>
<li><span class="audio-time" data-start="1727.186" data-stop="1731.075">28:47</span> Imenu</li>
<li><span class="audio-time" data-start="1819.662" data-stop="1823.546">30:19</span> Projects</li>
<li><span class="audio-time" data-start="1930.952" data-stop="1934.855">32:10</span> Putting projects in tabs or frames</li>
<li><span class="audio-time" data-start="1955.102" data-stop="1956.986">32:35</span> Tabs</li>
<li><span class="audio-time" data-start="2081.797" data-stop="2084.543">34:41</span> Navigating frames</li>
<li><span class="audio-time" data-start="2167.135" data-stop="2168.839">36:07</span> These navigation shortcuts work for prose, too</li>
<li><span class="audio-time" data-start="2229.050" data-stop="2230.111">37:09</span> follow-mode</li>
<li><span class="audio-time" data-start="2270.802" data-stop="2273.886">37:50</span> Ediff</li>
<li><span class="audio-time" data-start="2532.277" data-stop="2538.643">42:12</span> Calling functions by name</li>
<li><span class="audio-time" data-start="2572.964" data-stop="2575.369">42:52</span> Completion</li>
<li><span class="audio-time" data-start="2653.236" data-stop="2655.139">44:13</span> Manuals</li>
<li><span class="audio-time" data-start="2757.420" data-stop="2758.842">45:57</span> Menus</li>
<li><span class="audio-time" data-start="2866.418" data-stop="2868.724">47:46</span> Automation - abbreviations</li>
<li><span class="audio-time" data-start="2996.812" data-stop="2998.855">49:56</span> Quoting the next character with C-q</li>
<li><span class="audio-time" data-start="3031.372" data-stop="3033.814">50:31</span> Mapping abbreviations to code</li>
<li><span class="audio-time" data-start="3111.249" data-stop="3113.313">51:51</span> Taking notes with org-capture</li>
<li><span class="audio-time" data-start="3128.504" data-stop="3130.150">52:08</span> Navigating back to captures or refiles</li>
<li><span class="audio-time" data-start="3229.383" data-stop="3232.270">53:49</span> dabbrev</li>
<li><span class="audio-time" data-start="3284.699" data-stop="3287.362">54:44</span> Keyboard macros</li>
<li><span class="audio-time" data-start="3472.706" data-stop="3474.868">57:52</span> Editable grep and occur</li>
<li><span class="audio-time" data-start="3661.709" data-stop="3665.676">1:01:01</span> Emacs Carnival June 2026: Underappreciated built-ins</li>
</ul>

<p></p>
</div>
</div>
<div id="outline-container-yay-emacs-33-sacha-and-prot-talk-emacs-built-ins-transcript-section" class="outline-3">
<h3 id="yay-emacs-33-sacha-and-prot-talk-emacs-built-ins-transcript-section"><a href="https://sachachua.com/blog/feed/index.xml#yay-emacs-33-sacha-and-prot-talk-emacs-built-ins-transcript-section">Transcript</a></h3>
<div class="outline-text-3" id="text-yay-emacs-33-sacha-and-prot-talk-emacs-built-ins-transcript-section">
<details class="code-details"><a name="ID-yay-emacs-33-sacha-and-prot-talk-emacs-built-ins-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>Starting up</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="0.031000" data-stop="2.517000"><strong class="speaker-name">Sacha:</strong>  There's a 10-second delay, so I can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2.557000" data-stop="4.962000">never quite tell when I'm starting to start, but</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5.243000" data-stop="6.305000">I think I'm going to do that now.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6.465000" data-stop="7.147000">Okay, let's go.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="9.472000" data-stop="11.436000">Okay, I have pressed the Go Live button.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="11.456000" data-stop="13.220000">Let's see how it goes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="13.401000" data-stop="17.550000">So this is Yay Emacs 33 with Prot:</span> <span class="audio-time caption" data-speaker="Sacha" data-start="17.530000" data-stop="18.972000">Sacha and Prot Talk Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="19.012000" data-stop="20.635000">Today, we're going to be talking about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="20.695000" data-stop="23.539000">underappreciated Emacs built-ins, which is the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="23.640000" data-stop="26.264000">theme for this month's Emacs carnival.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="28.700000" data-stop="29.088000"><strong class="speaker-name">Sacha:</strong> Kind of like this, you know, shared, lots of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="29.128000" data-stop="31.592000">people writing or talking about a specific topic.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="32.372000" data-stop="34.497000">This one is hosted by Ross A. Baker.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="34.637000" data-stop="35.658000">(Thanks for hosting that!)</span> <span class="audio-time caption" data-speaker="Sacha" data-start="36.239000" data-stop="39.564000">Anyway, so I'm here with Prot. I was very</span> <span class="audio-time caption" data-speaker="Sacha" data-start="39.625000" data-stop="42.148000">tempted to just dive into this brain dump like</span> <span class="audio-time caption" data-speaker="Sacha" data-start="42.189000" data-stop="43.150000">last time about...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="43.433000" data-stop="50.665000">Let's start with the kinds of problems that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="52.407000" data-stop="55.392000">newcomers and intermediate users might run into,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="55.432000" data-stop="57.776000">especially the problems they don't even know</span> <span class="audio-time caption" data-speaker="Sacha" data-start="58.457000" data-stop="62.724000">about because Emacs would allow them to do things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="62.784000" data-stop="65.188000">that other editors might not offer.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="65.607000" data-stop="68.310000">But they've got to think about it first, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="68.350000" data-stop="70.433000">They've got to discover that this is a need of theirs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="70.533000" data-stop="72.015000">and that Emacs can help them with it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="72.716000" data-stop="75.819000">So maybe this conversation can be a high-level</span> <span class="audio-time caption" data-speaker="Sacha" data-start="76.340000" data-stop="78.903000">discussion of these concepts to help people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="78.983000" data-stop="81.126000">develop this intuition for what's out there,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="81.546000" data-stop="83.288000">particularly for the things that Emacs does</span> <span class="audio-time caption" data-speaker="Sacha" data-start="83.368000" data-stop="85.151000">differently compared to other editors.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="85.791000" data-stop="87.533000">And if we start with a problem, and I have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="87.754000" data-stop="90.116000">several that I often run into in my own life, you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="90.136000" data-stop="92.239000">might suggest others as well.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="92.219000" data-stop="94.864000">Then we can talk about how the things that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="94.904000" data-stop="97.509000">are built into Emacs can support that and how</span> <span class="audio-time caption" data-speaker="Sacha" data-start="97.550000" data-stop="99.994000">they fit together at a high level. We don't</span> <span class="audio-time caption" data-speaker="Sacha" data-start="100.034000" data-stop="101.878000">have to go into "This is precisely how</span> <span class="audio-time caption" data-speaker="Sacha" data-start="101.918000" data-stop="104.243000">to start a keyboard macro and how to stop it."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="104.523000" data-stop="106.167000">People can look that up in the manual. But the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="106.227000" data-stop="108.491000">idea of a keyboard macro and how it's useful,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="108.812000" data-stop="110.675000"><b>that</b> would probably be a good thing for a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="110.736000" data-stop="111.477000">conversation.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="111.862000" data-stop="115.408000">Then for the advanced users who are listening</span> <span class="audio-time caption" data-speaker="Sacha" data-start="115.448000" data-stop="118.374000">to this, we can sprinkle in some things we've</span> <span class="audio-time caption" data-speaker="Sacha" data-start="118.414000" data-stop="120.718000">seen about some really advanced uses of these</span> <span class="audio-time caption" data-speaker="Sacha" data-start="121.279000" data-stop="122.842000">built-ins, because there's a lot of high-level</span> <span class="audio-time caption" data-speaker="Sacha" data-start="122.902000" data-stop="124.745000">use that I haven't even got into yet.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="125.947000" data-stop="128.572000">So Prot is here, which means that because you've</span> <span class="audio-time caption" data-speaker="Sacha" data-start="128.592000" data-stop="132.118000">got two people, you can see how these same tools</span> <span class="audio-time caption" data-speaker="Sacha" data-start="132.178000" data-stop="134.202000">can be used in different ways to support</span> <span class="audio-time caption" data-speaker="Sacha" data-start="134.262000" data-stop="135.304000">different workflows.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="135.537000" data-stop="139.665000">I'm going to suggest some problems that I have.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="140.186000" data-stop="142.571000">Of course, you can share some from your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="142.631000" data-stop="145.918000">experience and from the times that you've coached</span> <span class="audio-time caption" data-speaker="Sacha" data-start="145.958000" data-stop="146.539000">other people.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="147.000000">2:27</span> <strong>Focus and distraction</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="147.080000" data-stop="150.407000"><strong class="speaker-name">Sacha:</strong> My main problem with life in general.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="150.640000" data-stop="152.181000">is focus and distraction.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="153.382000" data-stop="156.665000">Because I have a kid, my focus time is very</span> <span class="audio-time caption" data-speaker="Sacha" data-start="156.806000" data-stop="157.566000">unpredictable.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="157.586000" data-stop="159.668000">It can be interrupted any moment by somebody</span> <span class="audio-time caption" data-speaker="Sacha" data-start="159.728000" data-stop="160.789000">needing help.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="160.809000" data-stop="163.792000">My life over the last 10 years has mostly</span> <span class="audio-time caption" data-speaker="Sacha" data-start="163.852000" data-stop="166.554000">been about five minutes here, 10 minutes there,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="166.634000" data-stop="169.497000">maybe 15, one hour of focus time if I'm lucky.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="170.178000" data-stop="173.200000">This is a universal challenge.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="173.220000" data-stop="175.282000">Well, some people actually get to focus, but my</span> <span class="audio-time caption" data-speaker="Sacha" data-start="175.342000" data-stop="178.145000">brain is not one of those focusable things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="178.225000" data-stop="180.647000">It has to work in stops and starts.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="180.627000" data-stop="184.730000">Any chance this is a problem that you also run into?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="186.492000" data-stop="188.974000"><strong class="speaker-name">Prot:</strong>  Not to that extent, but I have the</span> <span class="audio-time caption" data-speaker="Prot" data-start="189.014000" data-stop="190.956000">propensity to go down rabbit holes.</span> <span class="audio-time caption" data-speaker="Prot" data-start="191.656000" data-stop="193.878000">I will go really deep, like really deep.</span> <span class="audio-time caption" data-speaker="Prot" data-start="193.898000" data-stop="195.720000">You give me something which I know nothing about,</span> <span class="audio-time caption" data-speaker="Prot" data-start="195.760000" data-stop="196.941000">I will become an expert in it.</span> <span class="audio-time caption" data-speaker="Prot" data-start="197.381000" data-stop="199.223000">But of course, this is a problem when you combine</span> <span class="audio-time caption" data-speaker="Prot" data-start="199.263000" data-stop="201.084000">it with curiosity, because now you want to learn</span> <span class="audio-time caption" data-speaker="Prot" data-start="201.184000" data-stop="202.686000">everything.</span> <span class="audio-time caption" data-speaker="Prot" data-start="202.706000" data-stop="204.707000">Thankfully, I have learned to control myself.</span> <span class="audio-time caption" data-speaker="Prot" data-start="204.747000" data-stop="206.529000">If you give me something I don't know about,</span> <span class="audio-time caption" data-speaker="Prot" data-start="206.569000" data-stop="209.291000">I will say, OK, sounds very tempting, but I will</span> <span class="audio-time caption" data-speaker="Prot" data-start="209.371000" data-stop="210.212000">not even try.</span> <span class="audio-time caption" data-speaker="Prot" data-start="210.597000" data-stop="213.317000">I won't even go down the rabbit hole.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="213.668000" data-stop="215.289000"><strong class="speaker-name">Sacha:</strong>  So these are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="215.389000" data-stop="218.312000">two sides of the same problem,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="218.352000" data-stop="220.254000">and something that a lot of people will resonate</span> <span class="audio-time caption" data-speaker="Sacha" data-start="220.294000" data-stop="222.756000">with... When you're working on something and you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="222.796000" data-stop="225.158000">realize, okay, I've got to go do this other thing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="225.258000" data-stop="227.940000">first or, oh, I'm curious about this question</span> <span class="audio-time caption" data-speaker="Sacha" data-start="227.980000" data-stop="229.222000">that has come up in my brain.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="229.602000" data-stop="231.263000">I want to go down that rabbit hole.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="231.684000" data-stop="233.365000">How do we manage this?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="233.385000" data-stop="234.826000">Emacs is here to help.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="234.000000">3:54</span> <strong>Org Mode and other note-taking, task-management systems</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="234.846000" data-stop="236.728000"><strong class="speaker-name">Sacha:</strong> My first recommendation for this problem is:</span> <span class="audio-time caption" data-speaker="Sacha" data-start="236.828000" data-stop="238.950000">take advantage of Org Mode or other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="239.150000" data-stop="241.732000">built-in note-taking task management support</span> <span class="audio-time caption" data-speaker="Sacha" data-start="241.752000" data-stop="243.574000">systems because it...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="244.482000" data-stop="246.905000">Sometimes people think, okay, an IDE is just an</span> <span class="audio-time caption" data-speaker="Sacha" data-start="247.025000" data-stop="247.866000">IDE, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="248.206000" data-stop="250.248000">If they're programmers, it's just for code.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="250.608000" data-stop="253.812000">Sometimes people are writing. They're using</span> <span class="audio-time caption" data-speaker="Sacha" data-start="253.852000" data-stop="255.734000">a text editor just for writing their novel.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="256.113000" data-stop="258.315000">But because Emacs has these built-in ways to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="258.357000" data-stop="260.699000">support managing your to-dos and all that stuff,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="260.738000" data-stop="263.662000">it's very easy just to stuff that task in there.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="264.343000" data-stop="266.465000">Have a quick shortcut to go to your to-do list</span> <span class="audio-time caption" data-speaker="Sacha" data-start="266.505000" data-stop="268.767000">and put something in. Then it gets out of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="268.827000" data-stop="270.970000">your brain so that you can try to focus on the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="270.990000" data-stop="272.211000">thing that you're trying to get done.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="272.326000" data-stop="274.989000">That's my quick underappreciated...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="275.750000" data-stop="277.272000">actually, a lot of people really appreciate</span> <span class="audio-time caption" data-speaker="Sacha" data-start="277.292000" data-stop="279.635000">this, but it's one of those things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="279.755000" data-stop="281.958000">people coming to Emacs from other editors might</span> <span class="audio-time caption" data-speaker="Sacha" data-start="282.018000" data-stop="283.420000">not immediately catch on to.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="284.942000" data-stop="286.504000"><strong class="speaker-name">Prot:</strong>  You might not understand the</span> <span class="audio-time caption" data-speaker="Prot" data-start="286.584000" data-stop="288.346000">extent of how valuable it is.</span> <span class="audio-time caption" data-speaker="Prot" data-start="288.366000" data-stop="291.130000">It's the gift that keeps giving, basically.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="291.150000" data-stop="291.810000"><strong class="speaker-name">Sacha:</strong>  Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="292.031000" data-stop="294.314000">When your to-dos and your notes are just a couple</span> <span class="audio-time caption" data-speaker="Sacha" data-start="294.334000" data-stop="296.436000">of keystrokes away, and they can save the context</span> <span class="audio-time caption" data-speaker="Sacha" data-start="296.516000" data-stop="297.878000">of whatever you were looking at.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="298.000000">4:58</span> <strong>Kill ring</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="298.448000" data-stop="301.010000"><strong class="speaker-name">Sacha:</strong> There are all sorts of other small</span> <span class="audio-time caption" data-speaker="Sacha" data-start="301.070000" data-stop="304.934000">conveniences that Emacs has that also help with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="304.974000" data-stop="307.516000">distraction and focus.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="307.536000" data-stop="308.697000">For example, the kill ring.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="310.479000" data-stop="311.520000">It's such a simple thing, right?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="312.821000" data-stop="315.283000"><strong class="speaker-name">Prot:</strong>  It's super simple, but super useful.</span> <span class="audio-time caption" data-speaker="Prot" data-start="315.383000" data-stop="318.186000">Just to say on the kill ring, it has been</span> <span class="audio-time caption" data-speaker="Prot" data-start="318.246000" data-stop="320.327000">part of Emacs for several versions now, but it's</span> <span class="audio-time caption" data-speaker="Prot" data-start="320.387000" data-stop="321.008000">not obvious.</span> <span class="audio-time caption" data-speaker="Prot" data-start="321.488000" data-stop="325.032000">If you type <code>M-y</code> without <code>C-y</code> beforehand,</span> <span class="audio-time caption" data-speaker="Prot" data-start="325.052000" data-stop="326.633000">you get completion.</span> <span class="audio-time caption" data-speaker="Prot" data-start="326.765000" data-stop="329.913000">So you can select something that you had in your</span> <span class="audio-time caption" data-speaker="Prot" data-start="329.973000" data-stop="331.979000">kill-ring like a few kills ago.</span> <span class="audio-time caption" data-speaker="Prot" data-start="332.700000" data-stop="334.926000">Clipboard navigation,</span> <span class="audio-time caption" data-speaker="Prot" data-start="334.986000" data-stop="338.054000">which is something that you don't see right away.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="339.995000" data-stop="341.697000"><strong class="speaker-name">Sacha:</strong>  If people are coming</span> <span class="audio-time caption" data-speaker="Sacha" data-start="341.737000" data-stop="343.779000">from outside Emacs and they're like, "What is this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="343.839000" data-stop="344.680000">thing that you're talking about?"</span> <span class="audio-time caption" data-speaker="Sacha" data-start="344.960000" data-stop="347.323000">People are used to having a clipboard, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="347.823000" data-stop="350.526000">As soon as you copy something, your program</span> <span class="audio-time caption" data-speaker="Sacha" data-start="350.686000" data-stop="353.069000">forgets the thing that you previously copied.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="353.149000" data-stop="356.212000">On mobile phones now, if you press</span> <span class="audio-time caption" data-speaker="Sacha" data-start="356.272000" data-stop="358.394000">paste, you can see a selection of the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="358.454000" data-stop="360.817000">previous things you've copied before.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="361.277000" data-stop="363.500000">It's like that, but larger.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="363.720000" data-stop="366.243000"><strong class="speaker-name">Sacha:</strong> Prot points out: you can use completion</span> <span class="audio-time caption" data-speaker="Sacha" data-start="366.283000" data-stop="366.563000">with it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="367.164000" data-stop="372.637000">So <code>M-y</code> is <code>yank-pop</code> I think?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="375.182000" data-stop="378.407000">What I find useful about this is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="378.467000" data-stop="380.771000">sometimes I'll copy something because I want to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="380.811000" data-stop="382.895000">go paste it somewhere else, and then on the way to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="382.955000" data-stop="385.219000">that somewhere else, I get distracted by something,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="385.639000" data-stop="388.323000">and I need to copy that, but I know that the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="388.324000" data-stop="391.930000"><code>kill-ring</code> will have the other copies that I meant to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="391.970000" data-stop="394.875000">put somewhere else.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="395.311000" data-stop="397.398000"><strong class="speaker-name">Prot:</strong>  By completion here, we mean you</span> <span class="audio-time caption" data-speaker="Prot" data-start="397.438000" data-stop="400.328000">can type and match that thing, narrow down to it.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="400.348000" data-stop="402.876000"><strong class="speaker-name">Prot:</strong> You don't have to go searching for it and,</span> <span class="audio-time caption" data-speaker="Prot" data-start="402.956000" data-stop="405.645000">"Okay, which one exactly is it," right?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="405.665000" data-stop="408.274000"><strong class="speaker-name">Prot:</strong> You can find it more easily.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="410.000000">6:50</span> <strong>Registers</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="410.110000" data-stop="410.812000"><strong class="speaker-name">Sacha:</strong>  Registers.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="411.694000" data-stop="413.558000">It's the other thing that I like to use when I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="413.638000" data-stop="416.785000">know that I'm copying several things and I need</span> <span class="audio-time caption" data-speaker="Sacha" data-start="416.805000" data-stop="419.751000">to paste them, possibly in different order.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="420.774000" data-stop="423.500000"><strong class="speaker-name">Sacha:</strong> Again, that's another thing that people are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="423.560000" data-stop="425.204000">like, "What is this thing, even?"</span> <span class="audio-time caption" data-speaker="Sacha" data-start="425.584000" data-stop="428.511000">Do you find yourself explaining registers to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="428.571000" data-stop="429.874000">people who are new to Emacs?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="430.698000" data-stop="433.001000"><strong class="speaker-name">Prot:</strong>  Yes. Registers is</span> <span class="audio-time caption" data-speaker="Prot" data-start="433.041000" data-stop="435.465000">something that is underutilized, because of course,</span> <span class="audio-time caption" data-speaker="Prot" data-start="435.665000" data-stop="437.707000">why would you need them when you can have a</span> <span class="audio-time caption" data-speaker="Prot" data-start="437.708000" data-stop="441.373000">kill-ring with a history, right? Why do I need to</span> <span class="audio-time caption" data-speaker="Prot" data-start="441.453000" data-stop="443.816000">store things in a register when I can just have</span> <span class="audio-time caption" data-speaker="Prot" data-start="443.876000" data-stop="447.220000">them one after the other in the kill-ring.</span> <span class="audio-time caption" data-speaker="Prot" data-start="447.221000" data-stop="451.186000">The answer is because if you do something more</span> <span class="audio-time caption" data-speaker="Prot" data-start="451.266000" data-stop="454.090000">advanced, such as with a keyboard macro,</span> <span class="audio-time caption" data-speaker="Prot" data-start="454.475000" data-stop="456.157000">it will always be correct.</span> <span class="audio-time caption" data-speaker="Prot" data-start="456.277000" data-stop="457.418000">It's precise.</span> <span class="audio-time caption" data-speaker="Prot" data-start="457.438000" data-stop="460.181000">It's not "Give me the last thing on the kill ring,"</span> <span class="audio-time caption" data-speaker="Prot" data-start="460.321000" data-stop="463.444000">or last thing minus two or whatever.</span> <span class="audio-time caption" data-speaker="Prot" data-start="463.465000" data-stop="465.687000">Give me that, right,</span> <span class="audio-time caption" data-speaker="Prot" data-start="465.707000" data-stop="467.249000">and you specify what that is.</span> <span class="audio-time caption" data-speaker="Prot" data-start="467.969000" data-stop="470.272000">It's an expression of intent.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="470.912000" data-stop="474.575000"><strong class="speaker-name">Prot:</strong> Plus more advanced things,</span> <span class="audio-time caption" data-speaker="Prot" data-start="474.576000" data-stop="476.557000">like incrementing a number or whatever.</span> <span class="audio-time caption" data-speaker="Prot" data-start="476.558000" data-stop="478.120000">I think that's super specialized.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="478.471000" data-stop="479.872000"><strong class="speaker-name">Sacha:</strong>  I don't even use that very much,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="480.013000" data-stop="482.354000">but I know some people who use that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="482.355000" data-stop="483.136000">to great effect.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="483.316000" data-stop="486.139000">So that's one of those little Easter eggs for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="486.159000" data-stop="487.300000">advanced users.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="487.401000" data-stop="490.364000">If you're watching this and you're like, okay, I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="490.404000" data-stop="491.985000">know about these built-ins, but there's more.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="492.406000" data-stop="494.468000">Emacs has this fractal complexity.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="494.568000" data-stop="496.229000">It just keeps getting more interesting</span> <span class="audio-time caption" data-speaker="Sacha" data-start="496.230000" data-stop="497.251000">the more you dig into it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="497.732000" data-stop="499.153000">Okay, so, registers.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="499.173000" data-stop="501.755000">Registers can store text that you're copying,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="501.756000" data-stop="503.698000">but they can also store other things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="504.399000" data-stop="506.401000">I think, like, do you use them for window</span> <span class="audio-time caption" data-speaker="Sacha" data-start="506.441000" data-stop="507.482000">configurations, Prot?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="508.508000" data-stop="511.796000"><strong class="speaker-name">Prot:</strong>  I have used them for framesets:</span> <span class="audio-time caption" data-speaker="Prot" data-start="512.096000" data-stop="518.892000">frames and their window configurations.</span> <span class="audio-time caption" data-speaker="Prot" data-start="519.393000" data-stop="521.558000">If you have three frames and they are</span> <span class="audio-time caption" data-speaker="Prot" data-start="521.597000" data-stop="523.523000">split in different ways, you restore that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="524.425000" data-stop="525.668000"><strong class="speaker-name">Sacha:</strong>  You can do all of that with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="525.808000" data-stop="527.091000">just one register.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="527.476000" data-stop="528.558000"><strong class="speaker-name">Prot:</strong>  With a register, yeah.</span> <span class="audio-time caption" data-speaker="Prot" data-start="528.678000" data-stop="531.182000">I have created another register of mine just</span> <span class="audio-time caption" data-speaker="Prot" data-start="531.223000" data-stop="535.169000">to see how it works, where it saves a</span> <span class="audio-time caption" data-speaker="Prot" data-start="535.470000" data-stop="538.274000">file with a specific location,</span> <span class="audio-time caption" data-speaker="Prot" data-start="538.275000" data-stop="539.777000">but it's supposed to be in memory,</span> <span class="audio-time caption" data-speaker="Prot" data-start="539.778000" data-stop="541.540000">not like a bookmark.</span> <span class="audio-time caption" data-speaker="Prot" data-start="541.541000" data-stop="542.903000">I did it just for testing.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="543.338000" data-stop="544.419000"><strong class="speaker-name">Sacha:</strong>  I have that too.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="544.499000" data-stop="548.104000">I use registers to files so that I can jump to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="548.144000" data-stop="551.869000">things like my Emacs configuration or my notes or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="551.949000" data-stop="552.750000">something like that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="553.611000" data-stop="555.974000">I use that instead of bookmarks so that I can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="556.014000" data-stop="558.397000">just have a keyboard shortcut go straight to that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="558.457000" data-stop="558.898000">register.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="559.358000" data-stop="563.964000">I can do the [<code>jump-to-register</code>] and then I can just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="564.064000" data-stop="565.365000">easily press one more key</span> <span class="audio-time caption" data-speaker="Sacha" data-start="565.366000" data-stop="568.890000">to get to the file that I want.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="568.870000" data-stop="572.213000">So registers, again, if you're not used to Emacs,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="572.494000" data-stop="574.996000">this is a built-in that's got a lot of features</span> <span class="audio-time caption" data-speaker="Sacha" data-start="575.096000" data-stop="577.879000">for helping you save text to things, especially</span> <span class="audio-time caption" data-speaker="Sacha" data-start="577.899000" data-stop="579.641000">if you're going to use them in keyboard macros</span> <span class="audio-time caption" data-speaker="Sacha" data-start="580.061000" data-stop="582.664000">because you can say, okay, insert text A and then</span> <span class="audio-time caption" data-speaker="Sacha" data-start="582.764000" data-stop="586.587000">insert text C and then insert text B. But you can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="586.627000" data-stop="589.510000">also use them for other things like frameset,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="589.831000" data-stop="592.533000">like the way that your windows and your buffers</span> <span class="audio-time caption" data-speaker="Sacha" data-start="592.593000" data-stop="597.358000">are arranged, or files that you want to go back to.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="598.000000">9:58</span> <strong>Narrowing</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="598.891000" data-stop="603.755000"><strong class="speaker-name">Sacha:</strong> Another built-in that I find really helpful for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="603.795000" data-stop="606.589000">managing my focus and distraction is narrowing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="607.261000" data-stop="611.006000">I get distracted by all the other stuff, or I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="611.066000" data-stop="613.189000">worry about accidentally revealing private</span> <span class="audio-time caption" data-speaker="Sacha" data-start="613.249000" data-stop="615.752000">information when I am streaming, or something else.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="616.053000" data-stop="618.777000">So instead I narrow it to just the task that I'm</span> <span class="audio-time caption" data-speaker="Sacha" data-start="618.817000" data-stop="621.120000">working on or just the function that I'm editing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="621.841000" data-stop="624.204000">That's super useful not only for keeping me</span> <span class="audio-time caption" data-speaker="Sacha" data-start="624.244000" data-stop="627.248000">focused, but also for making sure that my changes</span> <span class="audio-time caption" data-speaker="Sacha" data-start="627.348000" data-stop="630.973000">don't affect more text than I mean to.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="630.953000" data-stop="634.301000">If I'm using substitute.el... You can select the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="634.341000" data-stop="636.968000">region, and a lot of the functions in Emacs will</span> <span class="audio-time caption" data-speaker="Sacha" data-start="637.068000" data-stop="638.572000">operate only within that region.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="639.033000" data-stop="642.542000">But reselecting the region several times, if you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="642.562000" data-stop="644.727000">end up needing to do multiple operations, it's a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="644.767000" data-stop="645.689000">bit annoying.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="645.709000" data-stop="647.734000">So instead, I'll just narrow and then it can work</span> <span class="audio-time caption" data-speaker="Sacha" data-start="647.754000" data-stop="648.456000">on the whole thing.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="649.094000" data-stop="651.278000"><strong class="speaker-name">Prot:</strong>  Yes. When you narrow, you can</span> <span class="audio-time caption" data-speaker="Prot" data-start="651.378000" data-stop="654.003000">also be less careful, in a sense.</span> <span class="audio-time caption" data-speaker="Prot" data-start="654.004000" data-stop="655.826000">Like, you do a <code>query-replace</code>,</span> <span class="audio-time caption" data-speaker="Prot" data-start="655.827000" data-stop="658.992000">when you do <code>!</code>, it means yes to all,</span> <span class="audio-time caption" data-speaker="Prot" data-start="658.993000" data-stop="660.596000">but if you are in a narrowed region,</span> <span class="audio-time caption" data-speaker="Prot" data-start="660.597000" data-stop="662.399000">yes to all means only within</span> <span class="audio-time caption" data-speaker="Prot" data-start="662.400000" data-stop="663.642000">that portion of the buffer.</span> <span class="audio-time caption" data-speaker="Prot" data-start="663.643000" data-stop="665.065000">So if you take care to</span> <span class="audio-time caption" data-speaker="Prot" data-start="665.145000" data-stop="666.387000">narrow to where you want to be,</span> <span class="audio-time caption" data-speaker="Prot" data-start="666.388000" data-stop="668.993000">then okay yes to all, you don't even have to check.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="669.968000" data-stop="671.110000"><strong class="speaker-name">Sacha:</strong>  And I think this is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="671.370000" data-stop="674.115000">underappreciated enough that, in fact, if you try</span> <span class="audio-time caption" data-speaker="Sacha" data-start="674.175000" data-stop="677.862000">to use… Is it <code>C-x n</code>?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="677.882000" data-stop="679.385000"><strong class="speaker-name">Prot:</strong>  That's the prefix key.</span> <span class="audio-time caption" data-speaker="Prot" data-start="679.445000" data-stop="680.887000"><code>C-x n</code> for narrowing.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="680.907000" data-stop="682.711000"><strong class="speaker-name">Sacha:</strong>  The first time Emacs will</span> <span class="audio-time caption" data-speaker="Sacha" data-start="682.751000" data-stop="684.113000">say, are you really, really sure?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="684.754000" data-stop="686.738000">It's one of those disabled commands, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="687.339000" data-stop="689.422000">You've got to enable it for yourself.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="689.543000" data-stop="691.707000">You've got to say, "Okay, I know what I'm doing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="691.787000" data-stop="693.991000">I'm not going to panic if the rest of my file</span> <span class="audio-time caption" data-speaker="Sacha" data-start="694.031000" data-stop="694.812000">disappears."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="694.792000" data-stop="695.917000">I know it's there.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="696.198000" data-stop="697.805000">I'm just choosing to focus on it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="698.287000" data-stop="700.236000">I think it's actually available off the menu as</span> <span class="audio-time caption" data-speaker="Sacha" data-start="700.296000" data-stop="702.123000">well, but I haven't</span> <span class="audio-time caption" data-speaker="Sacha" data-start="702.124000" data-stop="703.249000">used it off the menu bar.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="704.005000" data-stop="706.609000"><strong class="speaker-name">Prot:</strong>  Yeah, I don't use the menu, so I</span> <span class="audio-time caption" data-speaker="Prot" data-start="706.649000" data-stop="707.209000">cannot tell.</span> <span class="audio-time caption" data-speaker="Prot" data-start="708.411000" data-stop="710.333000">But I remember that prompt,</span> <span class="audio-time caption" data-speaker="Prot" data-start="710.334000" data-stop="711.315000">"Are you really sure?"</span> <span class="audio-time caption" data-speaker="Prot" data-start="711.355000" data-stop="712.657000">It's disabled by default.</span> <span class="audio-time caption" data-speaker="Prot" data-start="713.398000" data-stop="715.561000">Please make sure you know what you want.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="715.761000" data-stop="716.883000"><strong class="speaker-name">Sacha:</strong>  Keyboard shortcut.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="716.903000" data-stop="718.165000">That's the way to do it anyway.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="718.405000" data-stop="723.953000"><strong class="speaker-name">Prot:</strong>  The thing is that I do use it extensively.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="724.000000">12:04</span> <strong>org-narrow-to-subtree</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="724.994000" data-stop="727.578000"><strong class="speaker-name">Prot:</strong> Narrowing, of course, is generic.,</span> <span class="audio-time caption" data-speaker="Prot" data-start="727.618000" data-stop="730.442000">Org also has its own narrowing.</span> <span class="audio-time caption" data-speaker="Prot" data-start="730.882000" data-stop="733.506000">The most common one is [<code>org-narrow-to-subtree</code>].</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="733.000000">12:13</span> <strong>narrow-to-defun</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="733.486000" data-stop="740.858000"><strong class="speaker-name">Sacha:</strong>  Narrowing to defun feels easier</span> <span class="audio-time caption" data-speaker="Sacha" data-start="740.898000" data-stop="742.841000">than trying to mark the function before search</span> <span class="audio-time caption" data-speaker="Sacha" data-start="742.901000" data-stop="743.462000">and replace.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="743.602000" data-stop="744.483000">I love narrowing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="745.204000" data-stop="747.154000">In fact, I narrow to functions</span> <span class="audio-time caption" data-speaker="Sacha" data-start="747.155000" data-stop="748.790000">or sets of functions a lot,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="749.251000" data-stop="752.035000">because I do a lot of work with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="752.015000" data-stop="753.861000">with Javascript in HTML files,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="753.862000" data-stop="756.533000">just a single file HTML that I can upload.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="756.534000" data-stop="759.367000">It's got CSS and regular HTML in it as well.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="759.368000" data-stop="762.712000">But I often just need to copy</span> <span class="audio-time caption" data-speaker="Sacha" data-start="762.713000" data-stop="764.816000">the particular snippet of JavaScript</span> <span class="audio-time caption" data-speaker="Sacha" data-start="764.817000" data-stop="766.981000">so I can paste it into the console as</span> <span class="audio-time caption" data-speaker="Sacha" data-start="767.041000" data-stop="767.943000">I'm making changes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="768.704000" data-stop="770.547000">I have a function that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="770.527000" data-stop="772.009000">looks for certain text:</span> <span class="audio-time caption" data-speaker="Sacha" data-start="772.149000" data-stop="773.652000">"start of focus", "end of focus".</span> <span class="audio-time caption" data-speaker="Sacha" data-start="774.172000" data-stop="776.756000">Then it narrows to that section, which might</span> <span class="audio-time caption" data-speaker="Sacha" data-start="777.157000" data-stop="778.779000">include several functions.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="778.799000" data-stop="780.822000">Then I have another keyboard shortcut that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="780.843000" data-stop="783.346000">just copies the entire buffer and adds a little</span> <span class="audio-time caption" data-speaker="Sacha" data-start="783.386000" data-stop="785.349000">text at the end, so I can run whatever function I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="785.550000" data-stop="786.150000">need to test.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="786.551000" data-stop="788.734000">I can paste that into the browser.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="789.055000" data-stop="792.680000">Narrowing either to one function or to a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="793.782000" data-stop="796.566000">predefined region or whatever else is very useful.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="797.648000" data-stop="799.150000"><strong class="speaker-name">Prot:</strong>  Yes, very nice.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="799.000000">13:19</span> <strong>Indirect buffers</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="799.568000" data-stop="800.693000"><strong class="speaker-name">Sacha:</strong>  Then people are like, yeah, but</span> <span class="audio-time caption" data-speaker="Sacha" data-start="800.733000" data-stop="803.024000">what if I want to narrow to two</span> <span class="audio-time caption" data-speaker="Sacha" data-start="803.124000" data-stop="804.591000">parts of the same file?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="805.917000" data-stop="813.485000"><strong class="speaker-name">Prot:</strong>  That's why you have indirect buffers there.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="813.505000" data-stop="815.067000"><strong class="speaker-name">Sacha:</strong>  It's Emacs, of course there's a way</span> <span class="audio-time caption" data-speaker="Sacha" data-start="815.127000" data-stop="815.647000">to do it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="816.348000" data-stop="818.650000">Indirect buffers is another one of those</span> <span class="audio-time caption" data-speaker="Sacha" data-start="818.730000" data-stop="821.053000">built-ins that's a little hard to wrap your head</span> <span class="audio-time caption" data-speaker="Sacha" data-start="821.113000" data-stop="825.077000">around, because you're like, okay, you're opening</span> <span class="audio-time caption" data-speaker="Sacha" data-start="825.137000" data-stop="829.261000">a file twice, but you can have it narrowed to a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="829.321000" data-stop="831.323000">different part of it, or you can be looking at a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="831.443000" data-stop="833.525000">different part of it, or you can even have it in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="833.565000" data-stop="836.528000">a different major mode.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="837.436000" data-stop="837.977000"><strong class="speaker-name">Prot:</strong>  Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Prot" data-start="837.998000" data-stop="841.267000">And the point, like the practical one, is the</span> <span class="audio-time caption" data-speaker="Prot" data-start="841.327000" data-stop="843.633000">different levels of narrow, really...</span> <span class="audio-time caption" data-speaker="Prot" data-start="843.874000" data-stop="845.919000">The most common one, I mean,</span> <span class="audio-time caption" data-speaker="Prot" data-start="845.939000" data-stop="848.727000">where it's like, okay, you focus on this heading</span> <span class="audio-time caption" data-speaker="Prot" data-start="848.767000" data-stop="852.036000">and now you focus on this other heading.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="852.370000" data-stop="854.454000"><strong class="speaker-name">Sacha:</strong>  I'll often split my buffer if I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="854.514000" data-stop="857.119000">know that I'm not going to narrow.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="857.360000" data-stop="860.085000">So that way, if I need to refer to two parts of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="860.125000" data-stop="863.371000">the file at the same time, I can have one window</span> <span class="audio-time caption" data-speaker="Sacha" data-start="863.491000" data-stop="865.796000">focusing on one part of it and the other window</span> <span class="audio-time caption" data-speaker="Sacha" data-start="865.836000" data-stop="866.998000">focusing on the other part of it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="867.018000" data-stop="868.641000">It might even be a different frame.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="868.621000" data-stop="871.124000">And that way, I don't</span> <span class="audio-time caption" data-speaker="Sacha" data-start="871.164000" data-stop="872.486000">have to keep switching back and forth.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="872.526000" data-stop="874.929000">I don't have to scroll up and down all the time.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="874.949000" data-stop="877.292000">I can just look at one and then look at the other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="877.472000" data-stop="880.536000">and arrange my windows and my desktop as I see fit.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="880.556000" data-stop="882.779000">But if you want to do something more complicated,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="883.280000" data-stop="885.582000">like more narrowing or different modes or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="885.623000" data-stop="889.267000">whatever, then cloning an indirect buffer is the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="889.307000" data-stop="889.988000">way to do it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="890.000000">14:50</span> <strong>Undoing within a region</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="890.980000" data-stop="894.423000"><strong class="speaker-name">Prot:</strong>  I don't know if you have this,</span> <span class="audio-time caption" data-speaker="Prot" data-start="894.424000" data-stop="895.285000">but because you</span> <span class="audio-time caption" data-speaker="Prot" data-start="895.325000" data-stop="897.648000">mentioned the region earlier, I will say it.</span> <span class="audio-time caption" data-speaker="Prot" data-start="897.908000" data-stop="899.730000">Maybe you have it somewhere, I don't see it there.</span> <span class="audio-time caption" data-speaker="Prot" data-start="901.452000" data-stop="905.978000">You know regular undo in Emacs and how it works,</span> <span class="audio-time caption" data-speaker="Prot" data-start="905.998000" data-stop="908.220000">but when you have a region selected, undo works</span> <span class="audio-time caption" data-speaker="Prot" data-start="908.300000" data-stop="908.921000">in the region.</span> <span class="audio-time caption" data-speaker="Prot" data-start="909.962000" data-stop="912.325000">So you make a change here, you go make some</span> <span class="audio-time caption" data-speaker="Prot" data-start="912.365000" data-stop="915.028000">changes up there, you come back here, you mark</span> <span class="audio-time caption" data-speaker="Prot" data-start="915.108000" data-stop="917.371000">this region, undo only works here, it doesn't</span> <span class="audio-time caption" data-speaker="Prot" data-start="917.391000" data-stop="918.372000">work up there anymore.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="918.672000" data-stop="920.575000"><strong class="speaker-name">Sacha:</strong>  Oh yeah, that's definitely a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="920.736000" data-stop="923.440000">built-in that people will benefit from if they develop</span> <span class="audio-time caption" data-speaker="Sacha" data-start="923.460000" data-stop="924.482000">an intuition for it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="925.204000" data-stop="928.049000">If you've made a bunch of changes to your file</span> <span class="audio-time caption" data-speaker="Sacha" data-start="928.549000" data-stop="931.394000">and you notice that something's wrong in just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="931.415000" data-stop="934.139000">this section, you can select the region and then</span> <span class="audio-time caption" data-speaker="Sacha" data-start="934.260000" data-stop="938.487000">undo within it to just fix those things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="939.715000" data-stop="942.563000">Those are some of the things that I've thought</span> <span class="audio-time caption" data-speaker="Sacha" data-start="942.603000" data-stop="945.370000">about for focus or distraction or getting tempted</span> <span class="audio-time caption" data-speaker="Sacha" data-start="945.410000" data-stop="946.493000">to go down rabbit holes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="946.654000" data-stop="950.203000">Do you use any of the other Emacs built-ins to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="950.263000" data-stop="952.810000">help you with your tendency to dive really deep</span> <span class="audio-time caption" data-speaker="Sacha" data-start="952.870000" data-stop="953.472000">into something?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="953.000000">15:53</span> <strong>Bookmarks</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="953.975000" data-stop="955.838000"><strong class="speaker-name">Prot:</strong>  So the other one would be bookmarks.</span> <span class="audio-time caption" data-speaker="Prot" data-start="955.858000" data-stop="957.681000">You mentioned it already,</span> <span class="audio-time caption" data-speaker="Prot" data-start="957.701000" data-stop="960.665000">but it really is worth having it there,</span> <span class="audio-time caption" data-speaker="Prot" data-start="961.386000" data-stop="964.872000">because the nice thing with bookmarks is that not</span> <span class="audio-time caption" data-speaker="Prot" data-start="965.012000" data-stop="968.758000">only it's a way to go to a place, but you also</span> <span class="audio-time caption" data-speaker="Prot" data-start="969.018000" data-stop="970.480000">give it a name.</span> <span class="audio-time caption" data-speaker="Prot" data-start="970.601000" data-stop="972.103000">So the counterpart...</span> <span class="audio-time caption" data-speaker="Prot" data-start="972.123000" data-stop="974.126000">Like you said, okay, I have a key to quickly go</span> <span class="audio-time caption" data-speaker="Prot" data-start="974.206000" data-stop="977.451000">to my init file, for example, my configuration file.</span> <span class="audio-time caption" data-speaker="Prot" data-start="977.566000" data-stop="981.733000">But what if I want to have something by name that</span> <span class="audio-time caption" data-speaker="Prot" data-start="981.813000" data-stop="986.701000">doesn't quite fit nicely in all the keys, right?</span> <span class="audio-time caption" data-speaker="Prot" data-start="986.721000" data-stop="988.343000">Then I can have a descriptive name.</span> <span class="audio-time caption" data-speaker="Prot" data-start="988.383000" data-stop="989.085000">Maybe it's long.</span> <span class="audio-time caption" data-speaker="Prot" data-start="989.145000" data-stop="993.452000">For example, my notes for my meeting with Sacha,</span> <span class="audio-time caption" data-speaker="Prot" data-start="993.472000" data-stop="995.996000">which is in mid-June, blah, blah, blah, right?</span> <span class="audio-time caption" data-speaker="Prot" data-start="996.256000" data-stop="998.780000">I can have a long name like that, which</span> <span class="audio-time caption" data-speaker="Prot" data-start="998.860000" data-stop="1001.224000">is descriptive and gives me context.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1001.244000" data-stop="1003.067000">Then I use a bookmark for that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1003.351000" data-stop="1005.534000"><strong class="speaker-name">Sacha:</strong>  And that's a great built-in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1005.574000" data-stop="1008.036000">solution for the general problem of finding your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1008.117000" data-stop="1009.518000">way around.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1009.538000" data-stop="1011.921000">So in case you're trying to find your way around</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1011.981000" data-stop="1014.604000">different files or different projects or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1014.684000" data-stop="1018.068000">different places in various files, bookmarks are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1018.108000" data-stop="1020.751000">great for that because you can give it a name.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1020.791000" data-stop="1024.496000">That means you can file more things than will fit</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1024.556000" data-stop="1025.237000">on your keyboard.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1025.957000" data-stop="1029.021000">Kind of an advanced</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1029.001000" data-stop="1031.933000">use of it, I was talking to Ben</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1031.934000" data-stop="1035.433000">in the previous Emacs Chat about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1035.434000" data-stop="1039.000000">So he bookmarks Elfeed searches,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1039.001000" data-stop="1041.266000">and based on his naming convention,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1041.267000" data-stop="1043.067000">if he names his bookmark a certain way,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1043.068000" data-stop="1045.667000">then it becomes available for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1045.668000" data-stop="1047.500000">these other functions that he has.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1047.501000" data-stop="1049.200000">So if you have a naming convention for your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1049.201000" data-stop="1051.097000">bookmarks, you can do other things with it from</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1051.237000" data-stop="1052.038000">Emacs Lisp.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1053.233000" data-stop="1054.194000"><strong class="speaker-name">Prot:</strong>  Yeah, exactly.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1054.214000" data-stop="1057.139000">That's the more advanced power user thing.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1057.159000" data-stop="1059.943000">It's just data and you have access to it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1061.000000">17:41</span> <strong>isearch</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1061.205000" data-stop="1062.287000"><strong class="speaker-name">Sacha:</strong>  Going back to something a little</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1062.327000" data-stop="1065.111000">more basic for the problem of finding your way</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1065.171000" data-stop="1067.815000">around, I think that isearch is one of those</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1067.875000" data-stop="1070.499000">built-ins that people coming from a different</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1070.579000" data-stop="1072.963000">editor might not think of using.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1073.281000" data-stop="1079.191000">"Find in page" is an annoying experience in a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1079.251000" data-stop="1081.054000">browser or in other editors.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1081.074000" data-stop="1083.357000">You have to go to the menu, you do it, and then</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1083.498000" data-stop="1085.601000">there's things you have to click on in order to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1085.641000" data-stop="1087.725000">go to the next one or the previous one and so</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1087.805000" data-stop="1088.546000">forth.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1088.566000" data-stop="1091.230000">But isearch lets you just keep typing and then</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1091.471000" data-stop="1093.474000">you can just press the isearch shortcut again,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1093.574000" data-stop="1096.298000"><code>C-s</code>, to search for the next one, or you can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1096.359000" data-stop="1099.103000">go to the previous one very easily.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1099.083000" data-stop="1101.467000">So isearch is great.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1101.000000">18:21</span> <strong>Tip: Add a counter to isearch</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="1101.487000" data-stop="1102.229000"><strong class="speaker-name">Prot:</strong>  Yeah, yeah, it is.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1102.749000" data-stop="1105.895000">I think one nice quality of life improvement to</span> <span class="audio-time caption" data-speaker="Prot" data-start="1105.975000" data-stop="1108.720000">it, which again is several Emacs versions old, is</span> <span class="audio-time caption" data-speaker="Prot" data-start="1109.020000" data-stop="1109.662000">a counter.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1110.062000" data-stop="1113.608000">Like it shows you are on number 3 out of</span> <span class="audio-time caption" data-speaker="Prot" data-start="1113.628000" data-stop="1115.031000">10, for example.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1115.051000" data-stop="1117.395000">You have a sense of where you are going.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1118.050000" data-stop="1120.455000"><strong class="speaker-name">Sacha:</strong>  Otherwise, I find I just wrap</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1120.515000" data-stop="1122.619000">around to the beginning and I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1122.639000" data-stop="1125.365000">take a moment to reorient myself because it has</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1125.906000" data-stop="1127.489000">wrapped around.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1127.770000" data-stop="1129.494000">The other thing that I want to point out</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1130.335000" data-stop="1135.245000">related to isearch as well is using it to help</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1135.706000" data-stop="1137.510000">you mark a region.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1137.929000" data-stop="1140.813000">This is something that people aren't</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1140.933000" data-stop="1144.237000">used to because in other editors, you highlight</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1144.337000" data-stop="1145.619000">things with your mouse, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1146.280000" data-stop="1148.401000">Here in Emacs, we say, okay,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1148.402000" data-stop="1149.703000">press C-SPC to say</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1149.704000" data-stop="1151.065000">you're going to start a region,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1151.066000" data-stop="1153.008000">and then just search for the end of the region,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1153.489000" data-stop="1157.754000">navigate to it somewhere, and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1157.774000" data-stop="1160.457000">the text between</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1160.458000" data-stop="1162.219000">when you press C-SPC</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1162.220000" data-stop="1163.721000">and where your cursor is now,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1163.722000" data-stop="1164.763000">that's the region.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1165.368000" data-stop="1166.550000"><strong class="speaker-name">Prot:</strong>  Yes, exactly.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1166.000000">19:26</span> <strong>C-x C-x (exchange-point-and-mark)</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="1166.570000" data-stop="1171.037000"><strong class="speaker-name">Prot:</strong> On this note, <code>C-x C-x</code>.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1171.097000" data-stop="1174.582000">By default, it’s <code>exchange-point-and-mark</code>.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1174.602000" data-stop="1177.607000">Which, if your cursor is here and where you</span> <span class="audio-time caption" data-speaker="Prot" data-start="1177.627000" data-stop="1180.532000">started is up there, it moves the cursor up there</span> <span class="audio-time caption" data-speaker="Prot" data-start="1180.792000" data-stop="1183.616000">and now where you started is down at that point.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1184.097000" data-stop="1186.261000">You can expand the region both ways.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1187.643000" data-stop="1189.806000">You can keep switching and expanding.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1190.123000" data-stop="1191.585000"><strong class="speaker-name">Sacha:</strong>  I have never thought about using it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1191.625000" data-stop="1192.687000">for expanding the region.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1192.827000" data-stop="1195.231000">I usually just use it to confirm that, yes, I am</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1195.351000" data-stop="1197.073000">actually selecting the parts that I meant to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1197.133000" data-stop="1197.494000">select.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1197.855000" data-stop="1199.417000">Because by the time, of course, I've found the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1199.457000" data-stop="1201.320000">thing that I wanted to end the region with, I've</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1201.380000" data-stop="1204.004000">forgotten or I'm not entirely sure I have the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1204.044000" data-stop="1204.625000">right start.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1204.765000" data-stop="1207.609000">So I was using <code>C-x C-x</code> to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1207.649000" data-stop="1209.752000">quickly verify and have everything nicely</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1209.792000" data-stop="1210.313000">highlighted.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1210.734000" data-stop="1212.556000">But expanding the region, yeah, that's a thing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1212.576000" data-stop="1215.000000">you can do with it.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1215.858000" data-stop="1216.880000"><strong class="speaker-name">Prot:</strong>  Yeah, yeah, of course.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1216.920000" data-stop="1218.722000">Now it's obvious, right?</span> <span class="audio-time caption" data-speaker="Prot" data-start="1218.762000" data-stop="1222.107000">But it's something that you may notice by</span> <span class="audio-time caption" data-speaker="Prot" data-start="1222.148000" data-stop="1223.029000">mistake, by accident.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1223.590000" data-stop="1250.412000"><strong class="speaker-name">Sacha:</strong>  [interrupted by life]</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1250.432000" data-stop="1252.075000">@charliemcmackin4859 says, "I love that you can make those</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1252.135000" data-stop="1254.638000">marking tricks part of a keyboard macro."</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1255.000000">20:55</span> <strong>Popping to marks - going back to where you were</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1255.279000" data-stop="1257.281000"><strong class="speaker-name">Sacha:</strong> Oh, the other thing I want to say with marks is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1257.481000" data-stop="1260.445000">you can also navigate by mark.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1260.425000" data-stop="1264.736000">C-x SPC?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1264.756000" data-stop="1267.524000"><strong class="speaker-name">Prot:</strong>  <code>C-u C-SPC</code>.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1268.045000" data-stop="1271.113000">I think it’s <code>pop-to-mark</code> is the concept.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1273.058000" data-stop="1274.221000"><strong class="speaker-name">Sacha:</strong>  Popping to mark.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1274.241000" data-stop="1275.946000">We'll just go with the concept because people can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1275.966000" data-stop="1277.269000">search for the key binding.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1277.249000" data-stop="1281.075000">Which basically means for all the places where</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1281.135000" data-stop="1284.341000">you were before you went off searching for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1284.401000" data-stop="1286.784000">something else or doing some other command,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1286.785000" data-stop="1289.469000">you can go back to those places in sequence.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1290.010000" data-stop="1292.134000">I think there are even some commands to let</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1292.154000" data-stop="1294.918000">you easily navigate through all the places</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1294.958000" data-stop="1296.481000">you've been previously.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1296.501000" data-stop="1299.966000">That is a thing that you can do with Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1300.006000" data-stop="1300.467000">built-ins.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1300.788000" data-stop="1301.849000">It's called popping the mark.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1301.970000" data-stop="1303.392000">It lets you revisit places.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1304.148000" data-stop="1304.909000"><strong class="speaker-name">Prot:</strong>  Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1304.929000" data-stop="1307.732000">Another point related to this and also related to</span> <span class="audio-time caption" data-speaker="Prot" data-start="1307.852000" data-stop="1309.374000">yank that we said earlier...</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1309.000000">21:49</span> <strong>Selecting what you just pasted</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="1309.394000" data-stop="1311.917000"><strong class="speaker-name">Prot:</strong> Imagine you have copied something and you are</span> <span class="audio-time caption" data-speaker="Prot" data-start="1311.997000" data-stop="1314.079000">pasting it now in your Emacs.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1314.099000" data-stop="1316.742000">Then what you want to do is select it, maybe</span> <span class="audio-time caption" data-speaker="Prot" data-start="1316.782000" data-stop="1319.265000">to do something with it, such as to</span> <span class="audio-time caption" data-speaker="Prot" data-start="1319.385000" data-stop="1321.628000">make it all up case or whatever, right?</span> <span class="audio-time caption" data-speaker="Prot" data-start="1321.648000" data-stop="1324.852000">Instead of selecting it manually, you can just</span> <span class="audio-time caption" data-speaker="Prot" data-start="1324.892000" data-stop="1327.955000">do <code>C-x C-x</code>. Because when you paste</span> <span class="audio-time caption" data-speaker="Prot" data-start="1328.075000" data-stop="1331.039000">something or when you do I search or whatever, it</span> <span class="audio-time caption" data-speaker="Prot" data-start="1331.099000" data-stop="1333.041000">has the effect of updating the mark.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1333.612000" data-stop="1336.437000">Then you can work with that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1336.657000" data-stop="1338.460000"><strong class="speaker-name">Sacha:</strong>  Yeah, that one I use fairly often.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1339.522000" data-stop="1341.786000">Also, that way, you can easily</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1341.866000" data-stop="1345.432000">see what it highlights, the part that you've just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1345.492000" data-stop="1349.018000">pasted, and then you can do your other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1349.198000" data-stop="1351.722000">replacements or uppercasing or whatever else</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1352.223000" data-stop="1353.445000">to it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1353.000000">22:33</span> <strong>Indenting pasted or selected text with indent-rigidly</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="1353.706000" data-stop="1355.729000"><strong class="speaker-name">Prot:</strong>  The nice part for this is the</span> <span class="audio-time caption" data-speaker="Prot" data-start="1355.910000" data-stop="1357.392000"><code>indent-rigidly</code>,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1359.278000" data-stop="1363.408000"><code>C-x C-i</code> by default, where you can now</span> <span class="audio-time caption" data-speaker="Prot" data-start="1363.468000" data-stop="1366.815000">have a region of text including an implicit</span> <span class="audio-time caption" data-speaker="Prot" data-start="1366.976000" data-stop="1370.323000">region between mark and point, and you just shift</span> <span class="audio-time caption" data-speaker="Prot" data-start="1370.344000" data-stop="1373.170000">it around, literally left or right.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1374.213000" data-stop="1374.593000">Try it.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1374.614000" data-stop="1375.675000">It's very nice.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1375.695000" data-stop="1378.479000"><strong class="speaker-name">Sacha:</strong>  <code>C-x C-i</code>.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1381.462000" data-stop="1383.365000">I think you can even use the arrow keys to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1383.405000" data-stop="1384.086000">move things,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1384.126000" data-stop="1387.170000">so you can just nudge it until it looks right,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1387.190000" data-stop="1388.832000">which is great because sometimes, when you paste</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1388.872000" data-stop="1391.676000">things, the indentation isn't the same</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1391.716000" data-stop="1393.358000">as all of the rest of your stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1393.378000" data-stop="1395.521000">You might want to put it all the way into an</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1395.661000" data-stop="1399.786000">Org list or whatever else, code block, whatever.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1400.287000" data-stop="1400.768000"><strong class="speaker-name">Prot:</strong>  Okay.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1400.848000" data-stop="1403.011000"><strong class="speaker-name">Sacha:</strong>  So <code>C-x C-x</code>, very handy</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1403.111000" data-stop="1404.152000">even after you paste.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1404.000000">23:24</span> <strong>Popping to mark after xref or imenu</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1404.487000" data-stop="1408.171000"><strong class="speaker-name">Sacha:</strong> Oh, @hmelman also points out the fact that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1408.411000" data-stop="1411.475000">things like xref or imenu push the last location</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1411.515000" data-stop="1414.117000">before jumping means popping the mark is an easy</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1414.177000" data-stop="1416.840000">way to go back from various navigation mechanisms.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1417.461000" data-stop="1420.704000">In general, if you have navigated away from</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1420.805000" data-stop="1423.507000">something using some magical Emacs command that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1423.548000" data-stop="1426.310000">has taken you far from where you are, you can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1426.351000" data-stop="1428.913000">always find your way back home or back to where</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1428.973000" data-stop="1431.456000">you were by popping the mark.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1431.436000" data-stop="1433.402000">I think there's even a distinction between</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1433.462000" data-stop="1436.893000">popping the mark in your buffer</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1436.913000" data-stop="1439.060000">versus popping your global mark.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1439.481000" data-stop="1442.269000">You can go to a different buffer that you were</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1442.310000" data-stop="1444.737000">just in if you wanted to.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1445.000000">24:05</span> <strong>Adding other packages like consult</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="1445.645000" data-stop="1447.687000"><strong class="speaker-name">Prot:</strong>  Very nice.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1447.727000" data-stop="1451.592000">Many of these are also augmented by</span> <span class="audio-time caption" data-speaker="Prot" data-start="1451.712000" data-stop="1455.436000">packages. When you install a package, it doesn't</span> <span class="audio-time caption" data-speaker="Prot" data-start="1455.497000" data-stop="1458.180000">introduce completely new functionality. It adds to</span> <span class="audio-time caption" data-speaker="Prot" data-start="1458.200000" data-stop="1460.703000">existing one. For example, the consult package,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1460.763000" data-stop="1463.866000">which is very useful, very nice, has something to</span> <span class="audio-time caption" data-speaker="Prot" data-start="1463.926000" data-stop="1466.750000">do with what we just mentioned. Like,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1466.830000" data-stop="1468.611000">navigating the mark in a visual way,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1468.612000" data-stop="1469.593000">so you get to see it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1470.232000" data-stop="1474.537000"><strong class="speaker-name">Sacha:</strong>  @hmelman points out that local and global</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1474.597000" data-stop="1477.179000">marks are useful to navigate through.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1477.700000" data-stop="1480.223000">Check out all these other packages for adding</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1480.263000" data-stop="1481.844000">extra functionality around that.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1484.000000">24:44</span> <strong>Tip about indicating isearch wrapping</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1484.447000" data-stop="1486.889000"><strong class="speaker-name">Sacha:</strong> @matthewjorgensen9115 says,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1486.890000" data-stop="1488.191000">"thinking about isearch wrapping</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1488.251000" data-stop="1488.792000">around search,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1488.812000" data-stop="1490.734000">gwhen you get to the bottom of your file, when</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1490.754000" data-stop="1493.336000">you're isearching and there's no other matches to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1493.376000" data-stop="1496.320000">be found, it will by default wrap you around to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1496.360000" data-stop="1497.741000">the beginning of the file so you can keep</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1497.801000" data-stop="1498.602000">searching from there."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1498.970000" data-stop="1502.957000">Matthew says you can either have scroll to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1502.997000" data-stop="1504.820000">position to know the direction</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1505.581000" data-stop="1507.544000">(it also indicates the position in your mode line),</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1507.905000" data-stop="1509.828000">or you can have your mode line flash to see it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1509.888000" data-stop="1511.651000">move from last to first.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1511.671000" data-stop="1512.913000">I don't have that configured.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1512.993000" data-stop="1514.716000">I should look into how to get that configured</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1515.116000" data-stop="1516.919000">because it's like all these little things, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1520.585000" data-stop="1521.907000">But sometimes you don't need</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1521.927000" data-stop="1523.830000">to make a big navigational jump.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1523.850000" data-stop="1526.033000">You just need to move forward by a little bit.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1526.000000">25:26</span> <strong>Navigating by sentence or s-expression</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1526.814000" data-stop="1530.139000"><strong class="speaker-name">Sacha:</strong> Emacs has built-in shortcuts for navigating</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1530.259000" data-stop="1534.244000">by expression, maybe things inside the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1534.284000" data-stop="1537.369000">parentheses or things inside the quotes, as well</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1537.469000" data-stop="1540.473000">as natural language shortcuts like navigating by</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1540.573000" data-stop="1542.696000">word or by sentence.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1542.716000" data-stop="1544.980000">Those are some very useful built-ins that are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1545.060000" data-stop="1547.303000">well worth learning the keyboard shortcuts for.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1548.397000" data-stop="1550.080000"><strong class="speaker-name">Prot:</strong>  Yes, indeed.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1550.100000" data-stop="1551.822000">Of course, we call them</span> <span class="audio-time caption" data-speaker="Prot" data-start="1551.982000" data-stop="1555.287000">S-expressions and the terminology of the commands</span> <span class="audio-time caption" data-speaker="Prot" data-start="1555.328000" data-stop="1558.352000">alludes to Lisp, but they work in other</span> <span class="audio-time caption" data-speaker="Prot" data-start="1558.392000" data-stop="1559.734000">programming languages as well.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1560.535000" data-stop="1561.897000">For example, there is the</span> <span class="audio-time caption" data-speaker="Prot" data-start="1561.898000" data-stop="1565.303000"><code>forward-sexp</code>, but it works in other languages</span> <span class="audio-time caption" data-speaker="Prot" data-start="1565.683000" data-stop="1568.127000">which don't have this Lispy syntax.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1568.647000" data-stop="1572.410000"><strong class="speaker-name">Sacha:</strong>  So if you skipped over that part of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1572.450000" data-stop="1575.033000">the tutorial or the manual, go back and read it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1575.093000" data-stop="1576.534000">because it can save you some time.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1576.934000" data-stop="1580.637000">In a pinch, it will also help you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1580.677000" data-stop="1583.440000">make sure that your parentheses are matched up</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1583.500000" data-stop="1585.762000">correctly and you go to where you expect them to go.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1586.583000" data-stop="1588.664000">There are other ways to make it easier to match</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1588.764000" data-stop="1591.106000">up parentheses or braces or brackets or quotes</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1591.547000" data-stop="1593.569000">like [ <code>show-paren-mode</code> ] or whatever.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1593.589000" data-stop="1596.972000">Sometimes I just go forward and back to see</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1597.012000" data-stop="1598.653000">whether I end up in the right place.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1598.633000" data-stop="1602.016000"><strong class="speaker-name">Prot:</strong>  A small trick here,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1602.017000" data-stop="1604.059000">if you are writing specifically Emacs Lisp,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1604.060000" data-stop="1606.563000">there is a very common mistake of adding</span> <span class="audio-time caption" data-speaker="Prot" data-start="1606.663000" data-stop="1608.866000">an extra parenthesis, and it says "end of</span> <span class="audio-time caption" data-speaker="Prot" data-start="1608.926000" data-stop="1612.150000">file during parsing", or one less parenthesis, what</span> <span class="audio-time caption" data-speaker="Prot" data-start="1612.190000" data-stop="1614.373000">you can do with a combination of keyboard macros...</span> <span class="audio-time caption" data-speaker="Prot" data-start="1614.793000" data-stop="1616.975000">You go to the beginning</span> <span class="audio-time caption" data-speaker="Prot" data-start="1616.976000" data-stop="1620.761000">and you do <code>C-M-e</code> to go to the end of the defun,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1621.322000" data-stop="1624.405000">and then, in a keyboard macro, you keep doing that.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1624.606000" data-stop="1628.050000">Next, next, next, end, end, end, right? Until it stops,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1628.030000" data-stop="1629.592000">and you know where your error is.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1630.093000" data-stop="1631.995000"><strong class="speaker-name">Sacha:</strong>  Oh, and I should tell people, if</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1632.055000" data-stop="1635.459000">you give the <code>execute-kbd-macro</code> a negative</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1635.679000" data-stop="1637.502000">argument, it'll run until error.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1637.762000" data-stop="1638.802000">So you just do that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1638.803000" data-stop="1640.666000">and it'll drop you where it ends.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1640.686000" data-stop="1643.849000">You don’t have to manually press <code>e</code> 500 times.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1644.691000" data-stop="1645.371000"><strong class="speaker-name">Prot:</strong>  Exactly.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1645.391000" data-stop="1647.955000">The "run until error" happens when you are in a</span> <span class="audio-time caption" data-speaker="Prot" data-start="1648.015000" data-stop="1649.076000">narrowed region as well.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1649.697000" data-stop="1652.400000">Error here means end of region, end of buffer.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1653.342000" data-stop="1655.167000"><strong class="speaker-name">Sacha:</strong>  I should point out in the specific</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1655.207000" data-stop="1657.313000">case where you're trying to hunt down a stray</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1657.353000" data-stop="1659.390000">parenthesis, you should also just use</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1659.391000" data-stop="1661.003000">check-parens, which will tell you.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1662.346000" data-stop="1664.572000"><strong class="speaker-name">Prot:</strong>  Of course.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1665.000000">27:45</span> <strong>Navigating to other errors</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1665.334000" data-stop="1668.904000"><strong class="speaker-name">Sacha:</strong>  And for other errors</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1669.070000" data-stop="1673.395000">not just limited to missing quotation marks or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1673.435000" data-stop="1674.096000">parentheses,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1674.797000" data-stop="1677.881000">it's well worth taking the time to set up</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1678.401000" data-stop="1681.164000">flycheck or flymake or whatever error checking</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1681.205000" data-stop="1683.547000">thing you want to use, because then you can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1683.667000" data-stop="1686.150000">navigate to the previous and next errors as</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1686.251000" data-stop="1690.315000">easily as you would with keyboard shortcuts.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1690.816000" data-stop="1692.999000">If you get the hang of doing that, you can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1693.099000" data-stop="1696.663000">also use the same mental model to navigate through...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1696.880000" data-stop="1701.047000">If you're doing a keyword search with grep, then</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1701.067000" data-stop="1702.870000">you can use the <code>next-error</code>, <code>previous-error</code>
to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1702.930000" data-stop="1705.073000">also go to just the next match or the previous match.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1706.135000" data-stop="1708.279000"><strong class="speaker-name">Prot:</strong>  That's very useful.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1709.000000">28:29</span> <strong>Tags</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1709.561000" data-stop="1711.263000"><strong class="speaker-name">Sacha:</strong>  I am not using tags nearly as much</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1711.304000" data-stop="1714.669000">as I probably should for navigating symbols.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1715.459000" data-stop="1716.962000"><strong class="speaker-name">Prot:</strong>  Tags, yeah, in the context of</span> <span class="audio-time caption" data-speaker="Prot" data-start="1717.003000" data-stop="1717.464000">programming.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1717.824000" data-stop="1719.669000">Me, I haven't used that, no.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1719.689000" data-stop="1720.671000"><strong class="speaker-name">Sacha:</strong>  Oh, yeah?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1720.691000" data-stop="1722.194000">I guess because you primarily work with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1722.195000" data-stop="1724.699000">Emacs Lisp, it's easy enough</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1724.700000" data-stop="1726.184000">to find the definition from there.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1727.000000">28:47</span> <strong>Imenu</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="1727.186000" data-stop="1731.075000"><strong class="speaker-name">Prot:</strong>  But imenu is the other one, along those lines.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1731.095000" data-stop="1731.997000"><strong class="speaker-name">Sacha:</strong>  That's interesting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1732.078000" data-stop="1734.463000">You don't use the menu bar, but you use imenu.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1735.169000" data-stop="1737.672000"><strong class="speaker-name">Prot:</strong>  Yes, imenu is useful because, of</span> <span class="audio-time caption" data-speaker="Prot" data-start="1737.732000" data-stop="1738.993000">course, it's with completion.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1739.854000" data-stop="1741.796000">Now, I should say here, of course, that the</span> <span class="audio-time caption" data-speaker="Prot" data-start="1741.836000" data-stop="1746.521000">default imenu has this concept of going in steps,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1746.541000" data-stop="1748.864000">but you can flatten the list, which is more</span> <span class="audio-time caption" data-speaker="Prot" data-start="1748.984000" data-stop="1752.468000">interesting for the purpose of completion.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1753.269000" data-stop="1755.912000">I believe what I'm saying is the case, but I</span> <span class="audio-time caption" data-speaker="Prot" data-start="1755.952000" data-stop="1756.733000">don't remember anymore.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1756.853000" data-stop="1759.516000">But you can have a flattened list, at which point</span> <span class="audio-time caption" data-speaker="Prot" data-start="1759.576000" data-stop="1761.598000">you navigate the file with completion.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1762.388000" data-stop="1765.151000"><strong class="speaker-name">Sacha:</strong>  I should try that because I really</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1765.232000" data-stop="1767.935000">like the way that Org, when you're navigating by</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1767.975000" data-stop="1771.119000">the outline, you can also configure it to flatten</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1771.159000" data-stop="1772.981000">the list so you don't have to complete the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1773.041000" data-stop="1774.904000">heading and the next setting and all that stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1775.564000" data-stop="1778.628000">@hmelman says you don't actually need flymake for the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1779.189000" data-stop="1780.370000">error navigation thing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1780.771000" data-stop="1783.393000">You can just use <code>next-error</code></span> <span class="audio-time caption" data-speaker="Sacha" data-start="1783.394000" data-stop="1784.695000">and <code>previous-error</code> which works with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1784.696000" data-stop="1786.158000"><code>compile</code> and <code>grep</code> and <code>occur</code></span> <span class="audio-time caption" data-speaker="Sacha" data-start="1786.578000" data-stop="1788.661000">and a bunch of other things that have the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1788.721000" data-stop="1789.662000">same convention.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1789.777000" data-stop="1793.001000">So yes, if you use the <code>M-x compile</code> command to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1793.081000" data-stop="1796.706000">run whatever your compilation step is, it will</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1796.787000" data-stop="1801.593000">parse the output of many compilation systems,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1802.034000" data-stop="1804.497000">programs, and it will let you jump to the next</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1804.597000" data-stop="1804.857000">error.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1804.877000" data-stop="1807.141000">It will also even show you the errors, I think.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1807.161000" data-stop="1809.444000">Anyway, so you don't need flymake.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1810.765000" data-stop="1812.328000">Flymake just gives you the squiggly underlines.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1812.868000" data-stop="1815.091000">But you can use <code>next-error</code> right away.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1816.353000" data-stop="1816.854000"><strong class="speaker-name">Prot:</strong>  Yeah, yeah, yeah.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1816.874000" data-stop="1818.616000">Flymake is more narrow.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1818.636000" data-stop="1819.277000">Yeah, correct.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1819.000000">30:19</span> <strong>Projects</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1819.662000" data-stop="1823.546000"><strong class="speaker-name">Sacha:</strong>  I think projects and project-based</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1823.566000" data-stop="1827.531000">navigation is another big chunk of Emacs built-in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1827.591000" data-stop="1830.915000">functionality that is useful for people who have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1830.955000" data-stop="1832.256000">a hard time finding their way around.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1832.276000" data-stop="1834.899000">You don't have to manually find each file.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1834.959000" data-stop="1836.701000">You can set up shortcuts so you can say, I want</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1836.721000" data-stop="1837.662000">to go to this project.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1838.063000" data-stop="1841.467000">Then from within this project, I can find a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1841.527000" data-stop="1844.590000">file very easily.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1844.637000" data-stop="1846.720000"><strong class="speaker-name">Prot:</strong>  This is indeed very</span> <span class="audio-time caption" data-speaker="Prot" data-start="1846.821000" data-stop="1850.406000">powerful. The thing is you don't have to also</span> <span class="audio-time caption" data-speaker="Prot" data-start="1850.486000" data-stop="1854.874000">think in terms of the structure of the project,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1855.134000" data-stop="1857.317000">like the tree structure of the project, because if</span> <span class="audio-time caption" data-speaker="Prot" data-start="1857.378000" data-stop="1860.663000">you find the file in the project, it</span> <span class="audio-time caption" data-speaker="Prot" data-start="1860.763000" data-stop="1863.207000">will flatten the structure for you, so then you</span> <span class="audio-time caption" data-speaker="Prot" data-start="1863.307000" data-stop="1865.711000">use completion to find it or find the directory</span> <span class="audio-time caption" data-speaker="Prot" data-start="1865.771000" data-stop="1868.736000">where something is. Of course, you can still</span> <span class="audio-time caption" data-speaker="Prot" data-start="1868.976000" data-stop="1871.320000">use the tree view as well.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1871.705000" data-stop="1873.727000"><strong class="speaker-name">Sacha:</strong>  This is great because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1873.987000" data-stop="1876.630000">for example, in Java projects, the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1876.750000" data-stop="1878.512000">directory structure gets very deep because they</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1878.532000" data-stop="1880.734000">have to be their domain name and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1880.874000" data-stop="1882.196000">package names and all that stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1883.016000" data-stop="1887.100000">Just have either project or projectile index all</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1887.120000" data-stop="1888.922000">of your files for you, and then you can jump to a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1888.982000" data-stop="1891.104000">file by name anywhere in your structure.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1891.545000" data-stop="1894.148000">You can tell it also to ignore certain files,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1894.168000" data-stop="1896.310000">which is handy so that you don't have to go into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1896.370000" data-stop="1897.631000">your node-modules.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1898.492000" data-stop="1899.653000">That would be silly.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1900.308000" data-stop="1904.254000"><strong class="speaker-name">Prot:</strong>  Yeah, that would be a nightmare.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1904.255000" data-stop="1909.204000"><strong class="speaker-name">Sacha:</strong>  Do we have basically the Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1909.244000" data-stop="1911.108000">built-ins for finding your way around well</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1911.148000" data-stop="1913.592000">covered here, or other other recommendations that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1913.632000" data-stop="1916.116000">people should go check out?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1916.117000" data-stop="1919.683000"><strong class="speaker-name">Prot:</strong>  These are already very useful, yeah.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1920.102000" data-stop="1926.928000">Most of these, if not all, are augmented by packages.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1927.008000" data-stop="1929.410000">So the core functionality is there, and then you</span> <span class="audio-time caption" data-speaker="Prot" data-start="1929.451000" data-stop="1930.932000">can do more stuff with them.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1930.000000">32:10</span> <strong>Putting projects in tabs or frames</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="1930.952000" data-stop="1934.855000"><strong class="speaker-name">Prot:</strong> For example, with projects, you may want to have</span> <span class="audio-time caption" data-speaker="Prot" data-start="1934.895000" data-stop="1936.897000">an arrangement where you put them in separate</span> <span class="audio-time caption" data-speaker="Prot" data-start="1936.997000" data-stop="1940.060000">tabs, and then you use a package like tabspaces</span> <span class="audio-time caption" data-speaker="Prot" data-start="1940.521000" data-stop="1943.283000">so that each tab has its own buffer list, or</span> <span class="audio-time caption" data-speaker="Prot" data-start="1943.603000" data-stop="1946.466000">my package beframe so that you put them in</span> <span class="audio-time caption" data-speaker="Prot" data-start="1946.506000" data-stop="1947.527000">separate frames.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1947.507000" data-stop="1950.152000">Each frame has its own buffer list,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1950.172000" data-stop="1952.517000">so that basically when you search for buffers,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1952.537000" data-stop="1955.062000">you only see those related to the project.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1955.000000">32:35</span> <strong>Tabs</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1955.102000" data-stop="1956.986000"><strong class="speaker-name">Sacha:</strong>  I am not using tabs nearly as much</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1957.086000" data-stop="1958.870000">as I probably could,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1959.291000" data-stop="1962.236000">so that is one of my underappreciated Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1962.277000" data-stop="1963.018000">built-ins here.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1963.387000" data-stop="1967.112000">I'm getting the sense that people use tabs to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1967.152000" data-stop="1970.817000">say, okay, this is the set of windows related to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1972.580000" data-stop="1975.824000">managing my mail, or this is a set of tabs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1975.864000" data-stop="1977.066000">related to this project.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1977.126000" data-stop="1979.930000">This is a set of windows related to this project,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1979.970000" data-stop="1982.774000">or this is a set of windows related to managing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1982.954000" data-stop="1984.256000">my notes about something.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1984.977000" data-stop="1987.200000">Is that what you use tabs for?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1987.940000" data-stop="1989.643000"><strong class="speaker-name">Prot:</strong>  I seldom use them.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1989.803000" data-stop="1992.868000">I use them specifically only within the context</span> <span class="audio-time caption" data-speaker="Prot" data-start="1992.949000" data-stop="1997.757000">of popping into a Magit interface.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1998.157000" data-stop="2000.542000">So I have my project that I'm working on.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2000.602000" data-stop="2002.325000">Let's say it's split in three windows.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2002.745000" data-stop="2005.069000">And then I want to leave everything intact and</span> <span class="audio-time caption" data-speaker="Prot" data-start="2005.129000" data-stop="2008.014000">just go into Magit to do some Git operation.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2008.595000" data-stop="2011.300000">I configure <code>display-buffer-alist</code></span> <span class="audio-time caption" data-speaker="Prot" data-start="2011.320000" data-stop="2013.103000">so when I do Emacs Magit,</span> <span class="audio-time caption" data-speaker="Prot" data-start="2013.083000" data-stop="2016.100000">magit-status or whatever, it goes in a new tab.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2016.101000" data-stop="2019.133000">Then I leave my work where it is.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2019.134000" data-stop="2021.300000">I do the git thing,</span> <span class="audio-time caption" data-speaker="Prot" data-start="2021.301000" data-stop="2024.733000">then I quit those. I'm back to my layout.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2024.734000" data-stop="2028.190000"><strong class="speaker-name">Sacha:</strong>  I know you're a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2028.878000" data-stop="2031.322000">good advocate of checking out</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2031.382000" data-stop="2033.385000">display-buffer-alist and all the wonderful</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2033.425000" data-stop="2034.167000">things it can do.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2034.828000" data-stop="2037.492000">I should definitely look into having it set up a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2037.552000" data-stop="2041.298000">tab because that sounds a lot nicer than trying</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2041.318000" data-stop="2043.061000">to remember, okay, I need to save my window</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2043.121000" data-stop="2046.887000">configuration to register and then do this thing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2047.137000" data-stop="2049.519000">I have it set up actually so that I can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2049.520000" data-stop="2052.884000"><code>winner-undo</code> in order to get back to my previous</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2053.685000" data-stop="2054.525000">configuration.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2055.027000" data-stop="2057.730000">But of course, if I need to flip back and forth</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2057.810000" data-stop="2061.335000">between two different views, like Magit and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2061.554000" data-stop="2064.739000">my project code, then a tab would work much</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2064.799000" data-stop="2066.161000">better for this purpose, I think.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2067.042000" data-stop="2068.924000"><strong class="speaker-name">Prot:</strong>  Yes, and it scales better as well,</span> <span class="audio-time caption" data-speaker="Prot" data-start="2068.964000" data-stop="2071.828000">like if you need to have three tabs or whatever.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2072.112000" data-stop="2075.260000"><strong class="speaker-name">Sacha:</strong>  Or a new frame.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2075.340000" data-stop="2077.687000">But sometimes managing frames gets a little</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2077.726000" data-stop="2078.447000">annoying too.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2079.672000" data-stop="2080.353000"><strong class="speaker-name">Prot:</strong>  Of course, of course.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2080.373000" data-stop="2081.777000">There are pros and cons.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2081.000000">34:41</span> <strong>Navigating frames</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="2081.797000" data-stop="2084.543000"><strong class="speaker-name">Prot:</strong> Speaking of frames, one nice thing is that there</span> <span class="audio-time caption" data-speaker="Prot" data-start="2084.745000" data-stop="2087.893000">is completion again to select frames.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2088.059000" data-stop="2089.821000">So I forget how it's called.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2089.841000" data-stop="2091.422000">[ <code>select-frame</code> ], I think, is the command.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2091.922000" data-stop="2095.065000">If you have lots of frames and you don't know</span> <span class="audio-time caption" data-speaker="Prot" data-start="2095.167000" data-stop="2097.909000">where they are, you can use completion for that.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2098.090000" data-stop="2101.533000">If you want, you can also name frames.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2101.914000" data-stop="2103.515000">I believe it’s rename frame. [<code>set-frame-name</code>]</span> <span class="audio-time caption" data-speaker="Prot" data-start="2103.555000" data-stop="2104.817000">I forget now the command.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2104.837000" data-stop="2106.879000">Basically, you can give it a specific name</span> <span class="audio-time caption" data-speaker="Prot" data-start="2107.239000" data-stop="2109.502000">rather than it changing the name all the time.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2110.162000" data-stop="2112.165000">So you can say, OK, this is my super</span> <span class="audio-time caption" data-speaker="Prot" data-start="2112.185000" data-stop="2114.527000">important note for our livestream, right?</span> <span class="audio-time caption" data-speaker="Prot" data-start="2115.188000" data-stop="2116.349000">That's the frame for you.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2116.369000" data-stop="2117.290000">Now you can find it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2118.721000" data-stop="2119.742000"><strong class="speaker-name">Sacha:</strong>  I should look into that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2119.942000" data-stop="2123.326000">I also underutilize frames because for the most</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2123.366000" data-stop="2127.971000">part, I have a keyboard shortcut like Super 1</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2128.692000" data-stop="2132.015000">which jumps back to Emacs, raises my</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2132.095000" data-stop="2133.497000">Emacs window.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2133.677000" data-stop="2135.739000">But it doesn't work so well if I have multiple</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2135.839000" data-stop="2137.942000">Emacs window, like multiple Emacs frames.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2138.723000" data-stop="2142.306000">If I can figure out how to get mentally</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2142.527000" data-stop="2145.650000">through that or if I switch to EXWM as my window</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2145.690000" data-stop="2146.551000">manager,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2148.353000" data-stop="2150.837000">then I'm sure that managing multiple Emacs frames</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2150.857000" data-stop="2152.259000">will be a lot easier.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2152.279000" data-stop="2153.300000">But at least</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2153.320000" data-stop="2156.145000">tabs, I can probably use within that one frame in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2156.205000" data-stop="2158.108000">order to manage different windows.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2158.889000" data-stop="2160.731000"><strong class="speaker-name">Prot:</strong>  I would say tabs is the first thing</span> <span class="audio-time caption" data-speaker="Prot" data-start="2160.771000" data-stop="2161.693000">you want to check.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2162.234000" data-stop="2164.477000">Frames is a little bit more... You have to change</span> <span class="audio-time caption" data-speaker="Prot" data-start="2164.517000" data-stop="2165.839000">your mental model a little bit.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2167.000000">36:07</span> <strong>These navigation shortcuts work for prose, too</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2167.135000" data-stop="2168.839000"><strong class="speaker-name">Sacha:</strong>  @hmelman has one more tip to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2168.899000" data-stop="2171.765000">include in this section on finding your way</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2171.845000" data-stop="2172.326000">around.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2173.328000" data-stop="2176.434000">You can use these S-expression commands</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2176.435000" data-stop="2177.557000">in prose too.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2177.918000" data-stop="2181.504000">Like for example, <code>C-M-u</code> or
<code>backwards-up-list</code></span> <span class="audio-time caption" data-speaker="Sacha" data-start="2181.505000" data-stop="2184.773000">moves you out of a quote or a parenthesis</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2184.753000" data-stop="2187.833000">and then you can <code>C-M-e</code> to go to the end of it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2187.834000" data-stop="2190.967000">So even if you're writing, for example, a novel,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2190.968000" data-stop="2192.667000">and you're saying, okay, I want to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2192.668000" data-stop="2195.933000">get out of this quote and go to the next sentence,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2195.934000" data-stop="2198.367000">you can either isearch to the start of it,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2198.368000" data-stop="2200.700000">or you can go up out of the quote and then</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2200.701000" data-stop="2201.767000">go to the end of the quote.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2201.768000" data-stop="2206.005000">Also very handy to learn the commands for killing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2206.365000" data-stop="2207.326000">an S expression [ <code>kill-sexp</code> ],</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2207.327000" data-stop="2208.989000">which again also works with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2209.169000" data-stop="2212.874000">other stuff like quotes or parentheses, because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2212.935000" data-stop="2215.058000">then you can copy and paste things or you can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2215.538000" data-stop="2216.279000">kill it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2216.299000" data-stop="2217.581000">You don't have to paste it back.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2217.681000" data-stop="2219.304000">It's just you delete it and then you type</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2219.344000" data-stop="2219.924000">something else in.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2220.145000" data-stop="2220.445000">It's fine.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2223.610000" data-stop="2225.132000"><strong class="speaker-name">Prot:</strong>  Exactly, exactly.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2225.152000" data-stop="2227.856000">And one of those is the <code>mark-sexp</code>, which</span> <span class="audio-time caption" data-speaker="Prot" data-start="2227.936000" data-stop="2228.817000">is very useful.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2229.000000">37:09</span> <strong>follow-mode</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2229.050000" data-stop="2230.111000"><strong class="speaker-name">Sacha:</strong>  Oh yeah, oh yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2230.933000" data-stop="2234.017000">And <span class="citation" data-cites="matthewjorgensen9115">@matthewjorgensen9115</span> shares:
<code>follow-mode</code> allows the same</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2234.097000" data-stop="2236.019000">file with multiple frames like a book.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2236.340000" data-stop="2238.623000">So follow mode can work with two, three or more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2238.743000" data-stop="2239.204000">windows.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2240.085000" data-stop="2241.987000">You have an ultra wide, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2242.728000" data-stop="2246.514000">So like, okay, you can have several columns</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2246.634000" data-stop="2249.437000">following the same file and you can scroll and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2249.578000" data-stop="2252.482000">all of them will scroll in sync.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2252.682000" data-stop="2253.042000"><strong class="speaker-name">Prot:</strong>  Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2253.062000" data-stop="2253.803000">It's quite nice.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2253.964000" data-stop="2255.085000">Quite nice.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2255.105000" data-stop="2256.507000"><strong class="speaker-name">Sacha:</strong>  I forget, does follow mode work</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2256.547000" data-stop="2258.770000">with different files?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2259.087000" data-stop="2260.869000"><strong class="speaker-name">Prot:</strong>  With different files?</span> <span class="audio-time caption" data-speaker="Prot" data-start="2260.889000" data-stop="2261.810000">I don't think so.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2261.971000" data-stop="2264.674000">Like kind of a scroll lock for all windows?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2264.694000" data-stop="2265.695000"><strong class="speaker-name">Sacha:</strong>  Yeah, yeah, yeah.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2266.577000" data-stop="2267.057000"><strong class="speaker-name">Prot:</strong>  I don't know.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2267.077000" data-stop="2267.738000">I don't think so.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2268.419000" data-stop="2269.500000">I haven't tried it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2269.801000" data-stop="2270.622000"><strong class="speaker-name">Sacha:</strong>  Worth looking into. [<code>scroll-all-mode</code>]</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2270.000000">37:50</span> <strong>Ediff</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2270.802000" data-stop="2273.886000"><strong class="speaker-name">Sacha:</strong> If you do find yourself needing to compare one</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2273.966000" data-stop="2278.632000">file with another manually, then maybe</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2278.696000" data-stop="2281.001000">like ediff?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2281.643000" data-stop="2285.552000"><strong class="speaker-name">Prot:</strong>  Ediff would do that.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2285.592000" data-stop="2286.714000">You would have them side by side.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2286.735000" data-stop="2289.701000">But the thing with Ediff is that you don't get a</span> <span class="audio-time caption" data-speaker="Prot" data-start="2290.022000" data-stop="2291.205000">scroll lock for both.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2291.405000" data-stop="2294.472000">It's only navigation through the differences.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2294.492000" data-stop="2296.958000">So that wouldn't be exactly that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2297.242000" data-stop="2298.965000"><strong class="speaker-name">Sacha:</strong>  For the purposes of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2299.025000" data-stop="2302.370000">comparing, Ediff will let you compare two files,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2302.390000" data-stop="2304.333000">but you can even use it to compare two buffers.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2304.894000" data-stop="2307.599000">However, Prot does have some recommendations in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2307.619000" data-stop="2311.124000">the one on the defaults that you shared before on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2311.184000" data-stop="2314.069000">how to make Ediff more manageable.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2315.028000" data-stop="2317.231000"><strong class="speaker-name">Prot:</strong>  Yeah, I think by default it's not</span> <span class="audio-time caption" data-speaker="Prot" data-start="2317.291000" data-stop="2319.715000">intuitive, because by default, when you do Ediff</span> <span class="audio-time caption" data-speaker="Prot" data-start="2319.735000" data-stop="2322.500000">without any configuration, it will display its</span> <span class="audio-time caption" data-speaker="Prot" data-start="2322.640000" data-stop="2324.042000">panel in a separate frame.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2324.563000" data-stop="2326.406000">If you have never used many frames, that's</span> <span class="audio-time caption" data-speaker="Prot" data-start="2326.466000" data-stop="2327.647000">already your first problem.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2327.668000" data-stop="2329.370000">Like you don't even know what happened.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2330.111000" data-stop="2334.158000">The second problem is that the layout will be one</span> <span class="audio-time caption" data-speaker="Prot" data-start="2334.238000" data-stop="2338.144000">above the other, which depending on your screen,</span> <span class="audio-time caption" data-speaker="Prot" data-start="2338.544000" data-stop="2341.489000">you have like a wide screen, so it's not as easy</span> <span class="audio-time caption" data-speaker="Prot" data-start="2341.549000" data-stop="2342.250000">of a layout.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2342.230000" data-stop="2344.375000">Then you have to figure out where the other</span> <span class="audio-time caption" data-speaker="Prot" data-start="2344.435000" data-stop="2345.798000">frame with the panel is.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2345.818000" data-stop="2348.083000">Basically two variables where you change them</span> <span class="audio-time caption" data-speaker="Prot" data-start="2348.224000" data-stop="2350.288000">and you have the panel at the bottom, the control</span> <span class="audio-time caption" data-speaker="Prot" data-start="2350.329000" data-stop="2354.057000">panel and then file A here, file B there.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2354.077000" data-stop="2355.499000">And of course you can do it with three files</span> <span class="audio-time caption" data-speaker="Prot" data-start="2355.500000" data-stop="2355.801000">as well.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2356.152000" data-stop="2357.474000"><strong class="speaker-name">Sacha:</strong>  I will find it and put it in the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2357.514000" data-stop="2357.935000">show notes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2359.016000" data-stop="2362.882000">Matthew also points out the following also works</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2362.922000" data-stop="2364.223000">with <code>centered-cursor-mode</code> [(it’s a package)],</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2364.224000" data-stop="2364.864000">which will keep the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2364.904000" data-stop="2368.009000">cursor position in the middle of the frame.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2368.369000" data-stop="2370.833000">So I can't remember whether there's also like a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2370.893000" data-stop="2371.874000">scroll lock or whatever.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2372.195000" data-stop="2373.056000"><strong class="speaker-name">Prot:</strong>  <code>scroll-lock-mode</code>.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2373.357000" data-stop="2374.979000">Yeah, there is `scroll-lock mode.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2374.999000" data-stop="2377.182000"><strong class="speaker-name">Sacha:</strong>  Or there was another</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2377.162000" data-stop="2380.026000">Emacs built-in that someone mentioned that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2380.066000" data-stop="2382.350000">scrolls it one line at a time, keeping it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2382.730000" data-stop="2385.254000">centered, I guess, which the person found very</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2385.314000" data-stop="2387.217000">useful because their cat was sitting on their</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2387.237000" data-stop="2391.443000">laptop.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2391.704000" data-stop="2395.048000">So moral lesson is: learn about the Emacs built-in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2395.069000" data-stop="2397.031000">because you never know when a small mammal will</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2397.051000" data-stop="2399.094000">be obscuring half of your screen.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2400.216000" data-stop="2401.498000">You can still use Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2403.352000" data-stop="2407.821000">Which actually is an interesting segue into this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2407.841000" data-stop="2412.390000">thing about discoverability because Emacs is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2412.490000" data-stop="2413.993000">quite unlike many other editors.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2414.153000" data-stop="2416.779000">It is very well documented and if you can figure</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2416.819000" data-stop="2419.484000">out how to navigate and find that documentation</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2419.544000" data-stop="2423.532000">and even how to make this fun for you, then you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2423.572000" data-stop="2425.596000">can do all sorts of interesting things with it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2426.167000" data-stop="2429.411000">Okay, so self-documentation.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2430.352000" data-stop="2431.974000">I love telling people, okay, you can just press</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2432.014000" data-stop="2434.797000"><code>C-h k</code> or <code>describe-key</code> to describe
anything.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2434.817000" data-stop="2436.839000">You can <code>C-h f</code> any function.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2437.300000" data-stop="2439.482000">You can, you know, <code>C-h v</code> any variable.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2439.502000" data-stop="2442.225000"><code>describe-</code> whatever is great.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2442.706000" data-stop="2445.829000">Of course, adding <code>C-h</code> to the end of the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2445.889000" data-stop="2447.711000">keyboard shortcut that you've started but you've</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2447.751000" data-stop="2451.115000">forgotten how to finish, especially if you've</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2451.155000" data-stop="2452.697000">turned on <code>which-key</code> mode,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2452.981000" data-stop="2456.267000">is great for listing the actual shortcuts that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2456.307000" data-stop="2457.469000">start with that sequence.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2459.232000" data-stop="2460.635000"><strong class="speaker-name">Prot:</strong>  And even without <code>which-key</code>, it will</span> <span class="audio-time caption" data-speaker="Prot" data-start="2460.675000" data-stop="2463.600000">put all those shortcuts in a Help buffer,</span> <span class="audio-time caption" data-speaker="Prot" data-start="2464.081000" data-stop="2466.806000">and it will show the key and the name of the</span> <span class="audio-time caption" data-speaker="Prot" data-start="2466.866000" data-stop="2467.267000">command.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2469.230000" data-stop="2472.757000">Of course, you can click on the command to</span> <span class="audio-time caption" data-speaker="Prot" data-start="2472.837000" data-stop="2473.538000">read about it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2474.682000" data-stop="2476.866000"><strong class="speaker-name">Sacha:</strong>  Someday I think it would be amazing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2476.926000" data-stop="2483.276000">if Emacs comes with a completion interface that's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2483.336000" data-stop="2485.300000">easy for people to understand and get started with,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2485.700000" data-stop="2487.664000">but in the meantime, if you don't already have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2487.704000" data-stop="2490.568000">completion set up, that is well worth taking the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2490.609000" data-stop="2491.510000">time to figure out.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2492.671000" data-stop="2493.192000"><strong class="speaker-name">Prot:</strong>  Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2493.472000" data-stop="2497.299000">The built-in one has improved tremendously.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2497.739000" data-stop="2499.743000">I mean minibuffer.el here</span> <span class="audio-time caption" data-speaker="Prot" data-start="2500.043000" data-stop="2503.769000">has improved tremendously over the various recent</span> <span class="audio-time caption" data-speaker="Prot" data-start="2503.829000" data-stop="2504.330000">versions.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2505.111000" data-stop="2507.716000">But you still need to be aware of all the user</span> <span class="audio-time caption" data-speaker="Prot" data-start="2507.776000" data-stop="2508.818000">options to configure it.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2509.479000" data-stop="2512.804000">So to get, for example, a single column view</span> <span class="audio-time caption" data-speaker="Prot" data-start="2512.904000" data-stop="2515.168000">instead of a grid with 100 options...</span> <span class="audio-time caption" data-speaker="Prot" data-start="2515.148000" data-stop="2519.277000">That requires some effort.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2519.297000" data-stop="2521.662000">Out of the box, if you really want something</span> <span class="audio-time caption" data-speaker="Prot" data-start="2521.682000" data-stop="2524.268000">that is built into Emacs and does completion in a</span> <span class="audio-time caption" data-speaker="Prot" data-start="2524.308000" data-stop="2526.834000">way that is fairly easy to understand, it would</span> <span class="audio-time caption" data-speaker="Prot" data-start="2526.874000" data-stop="2530.762000">be icomplete-vertical-mode or fido or</span> <span class="audio-time caption" data-speaker="Prot" data-start="2530.783000" data-stop="2531.925000">fido-vertical-mode.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2532.000000">42:12</span> <strong>Calling functions by name</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2532.277000" data-stop="2538.643000"><strong class="speaker-name">Sacha:</strong>  Another thing that Emacs does</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2538.703000" data-stop="2541.526000">differently that might be good for people to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2541.586000" data-stop="2545.110000">learn about is that in Emacs, it is totally okay</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2545.170000" data-stop="2547.592000">to not remember the keyboard shortcuts for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2547.672000" data-stop="2550.355000">everything or not use the menus for everything,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2550.375000" data-stop="2551.876000">because not everything will fit in the menus</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2552.017000" data-stop="2552.257000">either.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2552.817000" data-stop="2555.840000">If you kind of remember the name of the function,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2555.900000" data-stop="2559.284000">you can use M-x and possibly completion to go</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2559.444000" data-stop="2560.545000">run that function,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2560.880000" data-stop="2564.627000">which is helpful because sometimes knowing the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2564.688000" data-stop="2568.034000">words to call a function is a lot easier to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2568.074000" data-stop="2570.218000">remember than remembering the shortcut for it.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2571.361000" data-stop="2571.782000"><strong class="speaker-name">Prot:</strong>  Exactly.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2571.802000" data-stop="2572.944000">And I would say completion...</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2572.000000">42:52</span> <strong>Completion</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="2572.964000" data-stop="2575.369000"><strong class="speaker-name">Prot:</strong> If you have to configure one part of Emacs,</span> <span class="audio-time caption" data-speaker="Prot" data-start="2575.389000" data-stop="2576.070000">it's completion.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2576.573000" data-stop="2579.980000">If you improve that part of it, it will help you</span> <span class="audio-time caption" data-speaker="Prot" data-start="2580.140000" data-stop="2580.601000">everywhere.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2580.701000" data-stop="2582.966000">Like we were saying earlier about bookmarks, it</span> <span class="audio-time caption" data-speaker="Prot" data-start="2583.026000" data-stop="2583.667000">helps you there.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2583.988000" data-stop="2585.471000">The kill-ring, it helps you there.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2585.751000" data-stop="2587.194000">Finding files, it helps you there.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2587.234000" data-stop="2589.058000">Switching to buffers and so on.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2589.078000" data-stop="2590.621000">Like what we are now talking about.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2590.741000" data-stop="2591.663000">It's always useful.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2592.976000" data-stop="2595.560000"><strong class="speaker-name">Sacha:</strong>  When you set up a completion, also</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2595.620000" data-stop="2598.183000">learn how your favorite completion system lets</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2598.243000" data-stop="2600.667000">you put in things that look like they should</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2600.747000" data-stop="2604.151000">match something on the list, but you actually</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2604.232000" data-stop="2606.815000">want just the partial part or just the blank part.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2607.616000" data-stop="2610.602000">For example, in some systems, you press</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2610.603000" data-stop="2615.046000"><code>M-RET</code> or <code>M-p</code> to send what you already
have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2615.107000" data-stop="2617.029000">there instead of selecting one of the completion</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2617.129000" data-stop="2617.650000">options.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2618.002000" data-stop="2619.885000">This is helpful because sometimes you'll want</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2619.925000" data-stop="2623.010000">to name a file something that is a substring of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2623.071000" data-stop="2625.074000">another file and you want to be able to say,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2625.114000" data-stop="2626.977000">yeah, that is actually what I meant, not the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2627.498000" data-stop="2629.401000">completion part.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2629.421000" data-stop="2629.782000"><strong class="speaker-name">Prot:</strong>  Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2629.802000" data-stop="2632.867000">I think that's the only rough edge with most of</span> <span class="audio-time caption" data-speaker="Prot" data-start="2632.927000" data-stop="2633.448000">those, yeah.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2634.109000" data-stop="2636.573000">Where you have to be mindful of that or, you</span> <span class="audio-time caption" data-speaker="Prot" data-start="2636.613000" data-stop="2639.438000">know, I have to select the prompt or I have to</span> <span class="audio-time caption" data-speaker="Prot" data-start="2639.558000" data-stop="2642.944000">type a special key for this edge case.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2642.964000" data-stop="2643.064000">Yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2643.263000" data-stop="2645.266000"><strong class="speaker-name">Sacha:</strong>  Once you get that sorted out and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2645.366000" data-stop="2649.271000">you've drilled it into your fingers, it's very,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2649.311000" data-stop="2652.575000">very helpful to have completion sorted out.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2653.000000">44:13</span> <strong>Manuals</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2653.236000" data-stop="2655.139000"><strong class="speaker-name">Sacha:</strong> Emacs also comes with extensive manuals.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2655.259000" data-stop="2657.221000">You like to write very thorough manuals for your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2657.261000" data-stop="2658.803000">packages, which I also appreciate.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2659.745000" data-stop="2662.829000">Flipping through manuals for fun is something</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2662.869000" data-stop="2666.233000">that we've discussed in previous...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2666.416000" data-stop="2669.003000">This is such a great practice.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2669.023000" data-stop="2670.166000">You learn something new every day.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2670.187000" data-stop="2674.138000">I was going through the Emacs manual in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2674.178000" data-stop="2677.166000">preparation for this conversation and I was just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2677.347000" data-stop="2679.312000">highlighting things that I need to dig into.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2681.232000" data-stop="2684.218000"><strong class="speaker-name">Prot:</strong>  It's very useful and again to point</span> <span class="audio-time caption" data-speaker="Prot" data-start="2684.318000" data-stop="2685.059000">out completion.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2685.400000" data-stop="2688.866000"><code>C-h R</code> is how you can search for the</span> <span class="audio-time caption" data-speaker="Prot" data-start="2688.946000" data-stop="2690.529000">manual of a package.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2690.549000" data-stop="2692.112000">Like for example, I'm interested in Org.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2692.172000" data-stop="2694.557000"><code>C-h R</code>, Org.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2694.958000" data-stop="2696.681000">I find Org from anywhere, right?</span> <span class="audio-time caption" data-speaker="Prot" data-start="2697.502000" data-stop="2700.488000"><code>C-h R</code> and then I will search for</span> <span class="audio-time caption" data-speaker="Prot" data-start="2700.548000" data-stop="2701.330000">something else, right?</span> <span class="audio-time caption" data-speaker="Prot" data-start="2701.470000" data-stop="2703.373000">Elisp, for example, to go to the Emacs Lisp</span> <span class="audio-time caption" data-speaker="Prot" data-start="2703.393000" data-stop="2704.776000">reference manual.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2704.857000" data-stop="2705.838000">Again, very useful.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2705.938000" data-stop="2709.122000">From inside the manuals, <code>g</code> to go to a</span> <span class="audio-time caption" data-speaker="Prot" data-start="2709.202000" data-stop="2712.966000">chapter, also known as a node, <code>i</code> to go to a</span> <span class="audio-time caption" data-speaker="Prot" data-start="2713.066000" data-stop="2718.412000">topic, an index, and <code>m</code> if you want, but <code>g</code>
and <code>i</code>.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2718.552000" data-stop="2721.576000">Just think of <code>g</code> and <code>i</code>. Very, very
useful.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2721.716000" data-stop="2724.499000"><code>m</code> is also useful to navigate the menu of the</span> <span class="audio-time caption" data-speaker="Prot" data-start="2724.559000" data-stop="2725.640000">current node.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2726.121000" data-stop="2728.283000"><strong class="speaker-name">Sacha:</strong>  I use <code>s</code> also for search.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2728.448000" data-stop="2729.529000"><strong class="speaker-name">Prot:</strong>  And there's for research</span> <span class="audio-time caption" data-speaker="Prot" data-start="2729.570000" data-stop="2730.250000">throughout, yes.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2730.431000" data-stop="2730.711000"><strong class="speaker-name">Sacha:</strong>  Yes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2731.252000" data-stop="2733.595000">I have not been using <code>C-h R</code>.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2733.615000" data-stop="2736.319000">I have been using <code>C-h i</code> to look at the whole</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2736.359000" data-stop="2740.404000">list of info manuals and then using <code>m</code> or isearch</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2740.484000" data-stop="2741.546000">like a newbie.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2742.827000" data-stop="2743.468000"><strong class="speaker-name">Prot:</strong>  That works.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2743.508000" data-stop="2745.551000">The problem with that is that if you have already</span> <span class="audio-time caption" data-speaker="Prot" data-start="2745.611000" data-stop="2746.913000">gone into a manual,</span> <span class="audio-time caption" data-speaker="Prot" data-start="2747.365000" data-stop="2749.969000"><code>C-h i</code> will take you back to that manual.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2749.989000" data-stop="2751.952000">So you have to click it and then start again.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2752.412000" data-stop="2752.673000"><strong class="speaker-name">Sacha:</strong>  Okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2753.013000" data-stop="2753.594000">Alright.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2753.654000" data-stop="2755.036000">Well, I'm learning new things.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2756.639000" data-stop="2756.959000"><strong class="speaker-name">Prot:</strong>  Nice.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2757.000000">45:57</span> <strong>Menus</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2757.420000" data-stop="2758.842000"><strong class="speaker-name">Sacha:</strong>  Okay, you mentioned you are not a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2758.862000" data-stop="2761.746000">fan of... you don't use the menus and I know a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2761.766000" data-stop="2761.900000">lot of people...</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2761.901000" data-stop="2764.009000"><strong class="speaker-name">Prot:</strong>  But I appreciate that.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2764.029000" data-stop="2766.052000">And in one of my... oh, in a couple</span> <span class="audio-time caption" data-speaker="Prot" data-start="2766.072000" data-stop="2768.496000">of my packages I have menu entry.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2768.628000" data-stop="2770.331000"><strong class="speaker-name">Sacha:</strong>  Yeah, and I know a lot of people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2770.371000" data-stop="2773.456000">turn the menu bar off in their</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2773.496000" data-stop="2775.820000">"this is how you configure Emacs" sort</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2775.861000" data-stop="2776.542000">of tutorials.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2777.123000" data-stop="2779.627000">But if you are new to Emacs, and even if</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2779.647000" data-stop="2781.250000">you're an intermediate user, I strongly</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2781.290000" data-stop="2784.576000">recommend, sacrificing that tiny sliver</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2784.876000" data-stop="2787.581000">of vertical space for the menu bar,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2787.661000" data-stop="2789.404000">because it's a great way to discover</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2789.384000" data-stop="2791.867000">commands that are related to your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2791.868000" data-stop="2795.533000">particular major mode or other things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2795.534000" data-stop="2798.954000">It's just fun to go through it and see what's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2799.014000" data-stop="2801.056000">been deemed worthy of including in one of those</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2801.136000" data-stop="2801.557000">menus.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2805.161000" data-stop="2808.244000">There are some efforts now to get the right-click</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2808.784000" data-stop="2811.487000">mouse menus to also have lots of interesting</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2811.607000" data-stop="2814.230000">options, but definitely the menu bar at the top,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2814.911000" data-stop="2817.574000">which can also be accessed if you use F10 if you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2817.614000" data-stop="2818.935000">don't want to use the mouse.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2819.000000" data-stop="2821.285000">The menu bar is even working on terminal,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2821.305000" data-stop="2821.826000">which is nice.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2822.227000" data-stop="2824.412000">So yes, menu bar at the top has a lot of useful</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2824.452000" data-stop="2827.499000">suggestions for discovering things.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2827.519000" data-stop="2828.602000"><strong class="speaker-name">Prot:</strong>  Yes, yes, excellent.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2829.725000" data-stop="2831.829000">The part you mentioned about key navigation,</span> <span class="audio-time caption" data-speaker="Prot" data-start="2831.849000" data-stop="2832.551000">that's also good.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2832.571000" data-stop="2834.936000">You may be like, don't want to use</span> <span class="audio-time caption" data-speaker="Prot" data-start="2834.957000" data-stop="2835.398000">the mouse.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2835.658000" data-stop="2836.199000">There you have it.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2836.239000" data-stop="2836.941000">You don't have...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2837.545000" data-stop="2839.908000"><strong class="speaker-name">Sacha:</strong>  And speaking of key navigation, if</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2839.948000" data-stop="2842.592000">you press <code>C-h k</code>, which is <code>describe-key</code>,
it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2842.632000" data-stop="2844.975000">will work on menu items as well.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2844.995000" data-stop="2847.057000">If you're finding yourself always going to the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2847.137000" data-stop="2850.882000">menu to do this thing, sometimes the menu items</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2850.942000" data-stop="2853.065000">are not named the same as their commands, but you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2853.085000" data-stop="2855.408000">can use <code>C-h k</code> to find out what that function</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2855.528000" data-stop="2857.831000">is and what keyboard shortcuts it's bound to.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2857.992000" data-stop="2860.495000">Then you can call it with M-x directly, or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2860.535000" data-stop="2862.237000">you can memorize the keyboard shortcuts.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2866.000000">47:46</span> <strong>Automation - abbreviations</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2866.418000" data-stop="2868.724000"><strong class="speaker-name">Sacha:</strong> Okay, shall we move on to automation,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2869.225000" data-stop="2873.515000">for which Emacs has a ton of built-in things?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2873.595000" data-stop="2879.489000">Using abbreviations and things like that is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2879.529000" data-stop="2881.113000">actually something I picked up from reading your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2881.153000" data-stop="2884.461000">config, I think, because you use abbreviations a lot.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2885.437000" data-stop="2887.620000"><strong class="speaker-name">Prot:</strong>  Yeah. Very nice. Very useful.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2887.740000" data-stop="2889.962000">Even for basic things.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2889.982000" data-stop="2892.645000">For example, I want to write, you know, my</span> <span class="audio-time caption" data-speaker="Prot" data-start="2892.725000" data-stop="2895.849000">fancy French expressions, like, this is so</span> <span class="audio-time caption" data-speaker="Prot" data-start="2895.889000" data-stop="2896.950000">déjà vu, you know?</span> <span class="audio-time caption" data-speaker="Prot" data-start="2897.611000" data-stop="2899.393000">I want to have the accents correct.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2899.633000" data-stop="2902.917000">I just write <code>deja vu</code> with English, and then I</span> <span class="audio-time caption" data-speaker="Prot" data-start="2902.977000" data-stop="2904.999000">have the French equivalent with all the fancy</span> <span class="audio-time caption" data-speaker="Prot" data-start="2905.120000" data-stop="2906.261000">accents.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2906.281000" data-stop="2908.103000">Stuff like that you can do, like...</span> <span class="audio-time caption" data-speaker="Prot" data-start="2908.302000" data-stop="2911.286000">something you keep misspelling the whole time you</span> <span class="audio-time caption" data-speaker="Prot" data-start="2911.346000" data-stop="2914.350000">actually do it, right, something that is with an</span> <span class="audio-time caption" data-speaker="Prot" data-start="2914.410000" data-stop="2918.456000">annoying spelling, like annoying capitalization</span> <span class="audio-time caption" data-speaker="Prot" data-start="2918.496000" data-stop="2921.820000">like LaTeX. Nobody knows how that is written. You</span> <span class="audio-time caption" data-speaker="Prot" data-start="2921.841000" data-stop="2924.624000">just write it latex, all lowercase, and then expand</span> <span class="audio-time caption" data-speaker="Prot" data-start="2924.664000" data-stop="2927.008000">to whatever it should expand. This sort of thing</span> <span class="audio-time caption" data-speaker="Prot" data-start="2927.068000" data-stop="2929.731000">is very useful. Of course, you can just have</span> <span class="audio-time caption" data-speaker="Prot" data-start="2929.791000" data-stop="2932.795000">some short text which expands into very long</span> <span class="audio-time caption" data-speaker="Prot" data-start="2932.856000" data-stop="2933.196000">text.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2933.547000" data-stop="2935.170000"><strong class="speaker-name">Sacha:</strong>  We should also point out if you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2936.312000" data-stop="2939.358000">type something that is normally an abbreviation</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2939.479000" data-stop="2942.585000">like LaTeX, but in this case you actually want to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2942.625000" data-stop="2949.238000">write the word latex, then how do you do the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2949.298000" data-stop="2951.783000">abbreviation without it being expanded into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2952.364000" data-stop="2953.446000">whatever that is?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2953.426000" data-stop="2954.968000"><strong class="speaker-name">Prot:</strong>  Of course you would rather avoid</span> <span class="audio-time caption" data-speaker="Prot" data-start="2955.048000" data-stop="2958.373000">that situation with your abbreviation. It wouldn't</span> <span class="audio-time caption" data-speaker="Prot" data-start="2958.393000" data-stop="2960.616000">be like that, but otherwise you will have to undo.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2960.997000" data-stop="2965.663000">When you do SPC and it expands, you undo.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2965.723000" data-stop="2969.148000">That is a little bit annoying, for sure. But I</span> <span class="audio-time caption" data-speaker="Prot" data-start="2969.188000" data-stop="2971.752000">would say, just make sure to have abbreviations</span> <span class="audio-time caption" data-speaker="Prot" data-start="2971.792000" data-stop="2974.776000">that are not ordinary words.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2975.144000" data-stop="2978.150000">They are a little bit contrived, so you don't get</span> <span class="audio-time caption" data-speaker="Prot" data-start="2978.210000" data-stop="2980.154000">false positives.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2980.775000" data-stop="2983.321000">A good use case here, like what I have in my</span> <span class="audio-time caption" data-speaker="Prot" data-start="2983.361000" data-stop="2985.325000">configuration, like you can have your</span> <span class="audio-time caption" data-speaker="Prot" data-start="2985.385000" data-stop="2989.072000">abbreviations behind a</span> <span class="audio-time caption" data-speaker="Prot" data-start="2989.112000" data-stop="2991.016000">character such as the semicolon.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2992.840000" data-stop="2994.543000">Then of course it's very unlikely that you will</span> <span class="audio-time caption" data-speaker="Prot" data-start="2994.603000" data-stop="2996.427000">have semicolon later.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2996.000000">49:56</span> <strong>Quoting the next character with C-q</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2996.812000" data-stop="2998.855000"><strong class="speaker-name">Sacha:</strong>  The other thing that you could</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2998.895000" data-stop="3002.139000">potentially do is use <code>C-q</code> to quote the next</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3002.219000" data-stop="3003.902000">character literally.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3003.922000" data-stop="3007.206000">So here for example, I have <code>ot</code> expand to the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3007.246000" data-stop="3013.174000">current time, but if I say <code>ot</code> <code>C-q</code> SPC, this
helps.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3013.254000" data-stop="3017.540000">And in general, this idea of <code>C-q</code> to quote</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3017.580000" data-stop="3020.103000">the next character is also useful in other places</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3020.164000" data-stop="3022.327000">where you might, for example, need to add a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3022.507000" data-stop="3025.671000">literal new line to a search or something like that,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3025.651000" data-stop="3030.261000">or a literal tab.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3031.000000">50:31</span> <strong>Mapping abbreviations to code</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3031.372000" data-stop="3033.814000"><strong class="speaker-name">Sacha:</strong> The other thing that I want to add to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3033.955000" data-stop="3037.678000">abbreviations here is your abbreviations are not</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3037.758000" data-stop="3038.899000">limited to just text.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3038.979000" data-stop="3042.102000">You can use them to run things, which means you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3042.143000" data-stop="3045.005000">can use them to run things that expand to text,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3045.025000" data-stop="3047.027000">or I think you might even get away with using</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3047.067000" data-stop="3049.370000">them to run commands.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3049.590000" data-stop="3052.893000">So it's pretty limitless.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3053.614000" data-stop="3053.994000"><strong class="speaker-name">Prot:</strong>  Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3054.034000" data-stop="3057.077000">Of course, it's how determined you are to write</span> <span class="audio-time caption" data-speaker="Prot" data-start="3057.137000" data-stop="3058.298000">custom code for that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3059.148000" data-stop="3062.652000"><strong class="speaker-name">Sacha:</strong>  Or how resourceful you are in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3062.732000" data-stop="3064.674000">finding other people's custom code that you can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3064.754000" data-stop="3065.735000">copy, at least.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3067.397000" data-stop="3069.059000">Good motivation to learn Emacs Lisp.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3070.220000" data-stop="3072.743000">I do not remember if Yasnippet is built-in.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3072.843000" data-stop="3073.904000">It feels like it's built-in.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3075.126000" data-stop="3077.929000"><strong class="speaker-name">Prot:</strong>  No, but it's one of those that</span> <span class="audio-time caption" data-speaker="Prot" data-start="3078.429000" data-stop="3079.971000">basically everybody uses.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3079.991000" data-stop="3083.755000">Yasnippet or Tempel.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3084.173000" data-stop="3088.539000"><strong class="speaker-name">Sacha:</strong>  A couple of questions from chat.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3088.579000" data-stop="3090.461000">When highlighting parts of the manual, how are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3090.501000" data-stop="3091.202000">you doing this?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3091.622000" data-stop="3094.446000">In bookmarks, bookmark-region, using Org Remark,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3094.586000" data-stop="3095.167000">other ways?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3095.948000" data-stop="3100.354000">I was doing this at the playground the other day,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3100.774000" data-stop="3103.998000">so I just had it in my iPad and I had it in one</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3104.038000" data-stop="3105.760000">of those graphical note-taking things and I was</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3105.800000" data-stop="3107.042000">highlighting with the Pencil.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3107.022000" data-stop="3109.566000">But I've heard good things about Org Remark,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3109.587000" data-stop="3111.089000">which is a package.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3111.000000">51:51</span> <strong>Taking notes with org-capture</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3111.249000" data-stop="3113.313000"><strong class="speaker-name">Sacha:</strong> You can also use just <code>org-capture</code> if you’re</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3113.353000" data-stop="3115.297000">reading the manuals from within Emacs, which you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3115.337000" data-stop="3115.657000">can.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3116.118000" data-stop="3119.484000">If you <code>org-capture</code>, you can even select sections</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3119.564000" data-stop="3121.888000">of the manual and it'll automatically save that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3122.008000" data-stop="3124.573000">in the capture template along with a link back to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3124.633000" data-stop="3125.995000">where you were looking.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3126.416000" data-stop="3127.478000">This is great.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3128.000000">52:08</span> <strong>Navigating back to captures or refiles</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="3128.504000" data-stop="3130.150000"><strong class="speaker-name">Prot:</strong>  Since you mentioned <code>org-capture</code></span> <span class="audio-time caption" data-speaker="Prot" data-start="3130.271000" data-stop="3132.740000">and we talked about bookmarks earlier, when you</span> <span class="audio-time caption" data-speaker="Prot" data-start="3132.800000" data-stop="3136.334000">do <code>org-capture</code> or <code>org-refile</code>, it stores
a</span> <span class="audio-time caption" data-speaker="Prot" data-start="3136.374000" data-stop="3136.876000">bookmark.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3137.056000" data-stop="3139.365000">You can go back to the last capture, the last</span> <span class="audio-time caption" data-speaker="Prot" data-start="3139.446000" data-stop="3139.847000">refile.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3140.418000" data-stop="3142.421000"><strong class="speaker-name">Sacha:</strong>  Yeah, yeah, which is handy.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3142.441000" data-stop="3146.306000">Also, you can use <code>org-refile</code> to navigate your Org
files.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3146.326000" data-stop="3148.989000">In addition to using it to jump to the last</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3149.049000" data-stop="3150.551000">thing that you filed because you were like, "Oh,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3150.571000" data-stop="3151.512000">yeah, wait, I forgot.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3151.833000" data-stop="3153.675000">I want to add more to that note,"</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3153.695000" data-stop="3156.219000">you can also use it to jump to any of your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3156.359000" data-stop="3158.401000">projects, for example, or any of your notes,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3158.862000" data-stop="3161.065000">assuming you’ve set up your <code>org-refile-targets</code></span> <span class="audio-time caption" data-speaker="Sacha" data-start="3161.165000" data-stop="3161.886000">appropriately.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3163.064000" data-stop="3165.046000">Okay, @RandCode has question.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3165.307000" data-stop="3168.431000">Does Emacs have a grammar checker like Harper's LSP?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3168.771000" data-stop="3171.214000">I know there are packages that people can use to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3171.475000" data-stop="3174.018000">work with Harper and other things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3174.839000" data-stop="3176.961000">Do you know of any other built-in things?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3177.242000" data-stop="3178.964000"><strong class="speaker-name">Prot:</strong>  Built-in, it's flyspell, but</span> <span class="audio-time caption" data-speaker="Prot" data-start="3179.004000" data-stop="3179.845000">that's not grammar.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3179.885000" data-stop="3180.806000">That's spelling.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3181.607000" data-stop="3182.568000"><strong class="speaker-name">Sacha:</strong>  Okay, all right.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3182.608000" data-stop="3183.630000"><strong class="speaker-name">Prot:</strong>  I cannot think of something.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3183.650000" data-stop="3185.172000">No, I don't think there is for grammar.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3185.632000" data-stop="3188.876000">So Harper or anything like that would plug into</span> <span class="audio-time caption" data-speaker="Prot" data-start="3188.916000" data-stop="3189.477000">Flymake.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3189.946000" data-stop="3196.023000"><strong class="speaker-name">Sacha:</strong>  @greggr0th has a question.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3196.063000" data-stop="3202.200000">What are your favorite completion plugins?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3202.366000" data-stop="3204.548000"><strong class="speaker-name">Prot:</strong>  Yeah, I think it's really vertico.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3204.628000" data-stop="3207.492000">I prefer it over the built-in options, over</span> <span class="audio-time caption" data-speaker="Prot" data-start="3207.512000" data-stop="3209.594000">icomplete.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3209.774000" data-stop="3213.038000">So it's vertico, and then with that, I would</span> <span class="audio-time caption" data-speaker="Prot" data-start="3213.118000" data-stop="3215.460000">say, at minimum, orderless.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3216.141000" data-stop="3217.823000">So vertico and orderless, at minimum.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3217.863000" data-stop="3219.665000">But then, of course, if you want a little bit</span> <span class="audio-time caption" data-speaker="Prot" data-start="3219.725000" data-stop="3223.589000">more, which is very useful, Marginalia, Consult,</span> <span class="audio-time caption" data-speaker="Prot" data-start="3223.609000" data-stop="3226.773000">Embark, maybe I'm forgetting something, save-hist,</span> <span class="audio-time caption" data-speaker="Prot" data-start="3226.793000" data-stop="3227.353000">it's built-in.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3227.513000" data-stop="3229.015000">But yeah, those, those for sure.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3229.000000">53:49</span> <strong>dabbrev</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3229.383000" data-stop="3232.270000"><strong class="speaker-name">Sacha:</strong>  @hmelman says dabbrev for dynamic</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3232.310000" data-stop="3233.834000">abbreviations is underrated.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3234.135000" data-stop="3235.378000">You don't need to predefine them.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3235.398000" data-stop="3237.623000">You just type the start of a word or symbol and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3237.683000" data-stop="3240.670000">type <code>M-/</code>, and it will search the buffer for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3240.791000" data-stop="3243.878000">something starting with what's on the left side</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3243.938000" data-stop="3245.923000">of your point and then expand it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3245.903000" data-stop="3248.626000">I can't remember if it's dabbrev or hippie-expand,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3248.647000" data-stop="3250.849000">but you can also set it up so that it can try</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3250.929000" data-stop="3253.913000">words from other buffers or other things that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3253.953000" data-stop="3256.376000">you've got or contacts or whatever.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3256.477000" data-stop="3258.439000">Anyway, so dynamic abbreviations.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3258.559000" data-stop="3261.944000">If you search for dabbrev and if you look also for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3261.984000" data-stop="3265.188000">hippie-expand, you will find lots of things that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3265.228000" data-stop="3268.772000">you can configure to fit your particular workflow.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3269.133000" data-stop="3271.716000">So you can expand abbreviations without having to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3271.776000" data-stop="3272.417000">define them.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3273.258000" data-stop="3273.900000"><strong class="speaker-name">Prot:</strong>  Yeah, yeah, yeah.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3273.940000" data-stop="3274.882000">Super powerful.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3274.902000" data-stop="3275.604000">Super useful.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3275.704000" data-stop="3278.912000">I use it more than tab completion, you know, like</span> <span class="audio-time caption" data-speaker="Prot" data-start="3278.932000" data-stop="3280.496000">with core.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3280.516000" data-stop="3281.920000">I use dabbrev more.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3282.301000" data-stop="3284.185000">It's very nice.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3284.366000" data-stop="3284.466000">Yeah.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3284.000000">54:44</span> <strong>Keyboard macros</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3284.699000" data-stop="3287.362000"><strong class="speaker-name">Sacha:</strong>  Okay, so we've mentioned keyboard</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3287.422000" data-stop="3291.006000">macros very briefly, but this is another very</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3291.086000" data-stop="3295.010000">powerful chunk of things that people might not be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3295.170000" data-stop="3297.632000">used to if they're coming from an editor that is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3297.692000" data-stop="3298.413000">not Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3299.014000" data-stop="3302.598000">So keyboard macros, what's kind of like the thing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3302.618000" data-stop="3304.359000">that we can use to explain?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3304.379000" data-stop="3306.141000">How do we explain it to people who are new to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3306.181000" data-stop="3306.402000">this?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3307.723000" data-stop="3310.045000"><strong class="speaker-name">Prot:</strong>  In its simplest form, you record</span> <span class="audio-time caption" data-speaker="Prot" data-start="3310.306000" data-stop="3312.508000">what you type and you can play it back in its</span> <span class="audio-time caption" data-speaker="Prot" data-start="3312.548000" data-stop="3313.609000">simplest form.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3313.859000" data-stop="3316.321000">But the thing with Emacs is that you don't just</span> <span class="audio-time caption" data-speaker="Prot" data-start="3316.381000" data-stop="3319.624000">record typing motions, typing actions.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3319.644000" data-stop="3322.246000">You also record all the Emacs motions.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3322.566000" data-stop="3324.608000">You can have a keyboard macro that includes</span> <span class="audio-time caption" data-speaker="Prot" data-start="3324.668000" data-stop="3328.631000">stuff such as move to another window or create a</span> <span class="audio-time caption" data-speaker="Prot" data-start="3328.712000" data-stop="3330.013000">new split or whatever.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3330.053000" data-stop="3332.635000">You can do more advanced things like that.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3333.355000" data-stop="3337.619000">This has very nice qualities to it where it's</span> <span class="audio-time caption" data-speaker="Prot" data-start="3337.659000" data-stop="3340.001000">like, oh, I just want to copy all these symbols</span> <span class="audio-time caption" data-speaker="Prot" data-start="3340.061000" data-stop="3342.423000">and move them to my shell buffer and then I will</span> <span class="audio-time caption" data-speaker="Prot" data-start="3342.463000" data-stop="3343.444000">do something with them,</span> <span class="audio-time caption" data-speaker="Prot" data-start="3343.897000" data-stop="3346.033000">pipe it to something like a program</span> <span class="audio-time caption" data-speaker="Prot" data-start="3346.034000" data-stop="3347.800000">outside of Emacs. So it has</span> <span class="audio-time caption" data-speaker="Prot" data-start="3347.801000" data-stop="3350.000000">a lot of nice applications like that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3351.187000" data-stop="3355.853000"><strong class="speaker-name">Sacha:</strong>  I think that if people can get the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3355.913000" data-stop="3358.216000">hang of: very carefully set up their</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3358.256000" data-stop="3361.220000">keyboard macro, think what's a series of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3361.280000" data-stop="3364.845000">steps that I can do so that I can do the change</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3364.945000" data-stop="3367.428000">and then move my cursor to the start of where the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3367.488000" data-stop="3368.510000">next change should be...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3369.110000" data-stop="3372.074000">For example, I'll start the keyboard</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3372.114000" data-stop="3374.818000">macro, I'll delete the word, I'll type in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3374.898000" data-stop="3378.763000">something new, or maybe I'll paste in a register</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3378.743000" data-stop="3381.461000">I'll use isearch to find the next point at which</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3381.521000" data-stop="3382.729000">I need to do something.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3383.047000" data-stop="3385.930000">If you define your keyboard macros like this,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3385.950000" data-stop="3387.712000">then you're giving yourself the ability to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3388.212000" data-stop="3390.434000">interactively confirm whether you're still on the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3390.474000" data-stop="3394.258000">right track and then make the change because that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3394.358000" data-stop="3396.861000">way, it's not just like a search and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3396.881000" data-stop="3398.522000">replace and you're hoping it all works out.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3398.582000" data-stop="3400.264000">Although the recent search and replaces are great</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3400.284000" data-stop="3402.026000">because they show you the changes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3402.046000" data-stop="3403.727000">But for something that's more complex, especially</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3403.747000" data-stop="3405.309000">if you're not used to regular expressions,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3405.669000" data-stop="3407.691000">keyboard macros can help you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3408.172000" data-stop="3410.674000">interactively do it in small steps.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3411.582000" data-stop="3412.786000"><strong class="speaker-name">Prot:</strong>  Yeah, exactly.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3412.806000" data-stop="3415.435000">Of course, search and replace will be more</span> <span class="audio-time caption" data-speaker="Prot" data-start="3415.555000" data-stop="3418.745000">tricky if you have to go through many files and</span> <span class="audio-time caption" data-speaker="Prot" data-start="3418.786000" data-stop="3420.732000">perform multiple edits in each,</span> <span class="audio-time caption" data-speaker="Prot" data-start="3421.575000" data-stop="3424.063000">because then the concept of regular expressions</span> <span class="audio-time caption" data-speaker="Prot" data-start="3424.143000" data-stop="3424.765000">breaks down.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3425.521000" data-stop="3428.206000">You don't want to think in those terms where it's</span> <span class="audio-time caption" data-speaker="Prot" data-start="3428.266000" data-stop="3430.030000">like, I will have to make a change somewhere</span> <span class="audio-time caption" data-speaker="Prot" data-start="3430.070000" data-stop="3432.053000">towards the top and then somewhere in the middle</span> <span class="audio-time caption" data-speaker="Prot" data-start="3432.133000" data-stop="3434.518000">and then somewhere towards the end. Keyboard</span> <span class="audio-time caption" data-speaker="Prot" data-start="3434.558000" data-stop="3437.464000">macros combined with Dired combined with going to</span> <span class="audio-time caption" data-speaker="Prot" data-start="3437.504000" data-stop="3438.726000">file... Very nice.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3439.527000" data-stop="3442.052000">Just to say another thing about keyboard macros</span> <span class="audio-time caption" data-speaker="Prot" data-start="3442.072000" data-stop="3443.856000">is... Let's say you have written your very nice</span> <span class="audio-time caption" data-speaker="Prot" data-start="3443.896000" data-stop="3446.521000">keyboard macro. You're recording it, and somewhere</span> <span class="audio-time caption" data-speaker="Prot" data-start="3446.761000" data-stop="3448.845000">towards the end, you make a small mistake.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3449.973000" data-stop="3453.626000">Keep going and then <code>C-x C-k C-e</code> to</span> <span class="audio-time caption" data-speaker="Prot" data-start="3453.687000" data-stop="3454.570000">edit your macro.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3455.051000" data-stop="3458.243000">It's a text buffer. You just remove what you</span> <span class="audio-time caption" data-speaker="Prot" data-start="3458.283000" data-stop="3458.785000">don't want.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3459.153000" data-stop="3460.975000"><strong class="speaker-name">Sacha:</strong>  You can save these keyboard macros</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3461.055000" data-stop="3461.515000">as well.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3461.956000" data-stop="3465.499000">You can use them in a future Emacs session or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3465.539000" data-stop="3468.262000">even turn them into your first Emacs Lisp</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3468.322000" data-stop="3468.842000">function.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3468.983000" data-stop="3471.565000">You can give it a name and you can run it that way.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3472.000000">57:52</span> <strong>Editable grep and occur</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3472.706000" data-stop="3474.868000"><strong class="speaker-name">Sacha:</strong> In the next three minutes before the kiddo runs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3475.068000" data-stop="3477.711000">out for lunch break, I also want to mention,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3477.751000" data-stop="3479.633000">since we talked about making changes in multiple</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3479.673000" data-stop="3484.077000">files, that grep and occur are both editable.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3484.097000" data-stop="3486.279000">You can do your grep and you can search for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3486.319000" data-stop="3487.000000">things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3486.980000" data-stop="3491.067000">And then you can say <code>C-x C-q</code> which turns it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3491.068000" data-stop="3493.633000">from read-only to something you can change,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3493.634000" data-stop="3495.867000">then you can do your search and replace in that,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3495.868000" data-stop="3498.167000">and you can <code>C-x C-q</code> again</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3498.168000" data-stop="3500.933000">and those changes can get put back</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3500.934000" data-stop="3502.356000">into all those different files.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3503.332000" data-stop="3504.714000"><strong class="speaker-name">Prot:</strong>  It's amazing.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3505.115000" data-stop="3507.900000">On this note, specifically for grep, if you</span> <span class="audio-time caption" data-speaker="Prot" data-start="3508.000000" data-stop="3510.945000">edit many files with the grep edit mode that is</span> <span class="audio-time caption" data-speaker="Prot" data-start="3510.965000" data-stop="3514.210000">built into Emacs 31, it will not save them for you.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3514.230000" data-stop="3517.736000">So <code>C-x s</code>, instead of <code>C-x C-s</code>,</span> <span class="audio-time caption" data-speaker="Prot" data-start="3517.977000" data-stop="3519.940000">allows you to save multiple buffers.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3520.223000" data-stop="3522.988000">And every time, it gives you a prompt and you can</span> <span class="audio-time caption" data-speaker="Prot" data-start="3523.028000" data-stop="3525.533000">type <code>d</code> to see the diff.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3525.553000" data-stop="3527.416000">Like, okay, what exactly did I change?</span> <span class="audio-time caption" data-speaker="Prot" data-start="3527.436000" data-stop="3530.602000">If you have many unsaved files, <code>d</code> to see what</span> <span class="audio-time caption" data-speaker="Prot" data-start="3530.642000" data-stop="3533.507000">you're about to save so you never make any</span> <span class="audio-time caption" data-speaker="Prot" data-start="3533.527000" data-stop="3533.828000">mistakes.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3534.280000" data-stop="3534.861000"><strong class="speaker-name">Sacha:</strong>  Mm-hmm.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3535.381000" data-stop="3539.586000">Taking advantage of these diffing tools is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3539.646000" data-stop="3540.327000">great also.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3542.310000" data-stop="3544.732000">Even if you're new to Emacs or you don't have a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3544.793000" data-stop="3546.775000">programming background, if you find yourself</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3546.835000" data-stop="3548.637000">making changes to lots of files, I strongly</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3548.697000" data-stop="3551.461000">recommend learning more about version control</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3551.501000" data-stop="3554.144000">systems like Git and then using something like</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3554.204000" data-stop="3556.086000">Magit or even the built-in VC.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3556.066000" data-stop="3559.756000">If you use VC, you can use it and you have set up</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3559.896000" data-stop="3561.300000">something like a git repository.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3566.060000" data-stop="3566.354000">You can use `C-x v =` to diff to see</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3566.374000" data-stop="3569.022000">the changes between your file and the previous</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3569.463000" data-stop="3571.408000">thing that you had saved.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3571.388000" data-stop="3574.573000">Which makes sense so that you can see, okay,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3574.653000" data-stop="3575.414000">these are the changes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3575.875000" data-stop="3578.118000">Also it means that you can experiment with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3578.178000" data-stop="3579.380000">different changes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3579.400000" data-stop="3582.105000">You can experiment with different ways of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3582.185000" data-stop="3584.288000">writing a paragraph or whatever, and you know</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3584.348000" data-stop="3586.591000">that all of your previous versions are saved and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3586.632000" data-stop="3589.195000">you don't have "really, really final</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3589.276000" data-stop="3590.217000">version two."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3591.239000" data-stop="3594.584000">You don't clutter your directory with a lot of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3594.804000" data-stop="3596.046000">copies of the same file.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3597.612000" data-stop="3599.717000"><strong class="speaker-name">Prot:</strong>  But even if you don't have any of</span> <span class="audio-time caption" data-speaker="Prot" data-start="3599.737000" data-stop="3603.064000">the version control system set up, a very simple</span> <span class="audio-time caption" data-speaker="Prot" data-start="3603.125000" data-stop="3605.410000">thing is <code>diff-buffer-with-file</code>.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3605.971000" data-stop="3608.958000">So you have a file you are working on and now you</span> <span class="audio-time caption" data-speaker="Prot" data-start="3608.998000" data-stop="3609.740000">make some edits.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3610.381000" data-stop="3613.107000">The buffer, what is in memory, is different</span> <span class="audio-time caption" data-speaker="Prot" data-start="3613.147000" data-stop="3614.490000">than what is on disk.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3614.510000" data-stop="3616.515000">You can compare the difference between the two.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3618.284000" data-stop="3620.507000"><strong class="speaker-name">Sacha:</strong>  Okay, I'm going to try to wrap up</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3620.547000" data-stop="3622.830000">here because the kid is going to run and say hi</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3622.970000" data-stop="3623.431000">very soon.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3623.812000" data-stop="3625.554000">Thank you so much for joining me.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3625.674000" data-stop="3627.697000">Of course, there's a lot more to talk about the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3627.717000" data-stop="3630.040000">Emacs built-ins, but I hope we've given a quick</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3630.260000" data-stop="3632.563000">tour of some of the things that are definitely</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3632.604000" data-stop="3635.367000">worth learning more about and the situations for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3635.427000" data-stop="3637.090000">which they are absurdly useful.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3637.731000" data-stop="3639.954000">Thanks to everyone in chat also for coming and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3639.994000" data-stop="3640.594000">hanging out.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3640.695000" data-stop="3644.620000">I will post the show notes eventually and get the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3644.660000" data-stop="3645.461000">transcripts sorted out.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3645.541000" data-stop="3646.182000">Thanks.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3647.022000" data-stop="3647.625000"><strong class="speaker-name">Prot:</strong>  You're welcome.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3647.645000" data-stop="3648.248000">You're welcome.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3649.654000" data-stop="3650.156000">Take care.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3650.337000" data-stop="3653.371000">Of course, good luck with everything.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3654.577000" data-stop="3656.425000">Didn't she show up here?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3658.244000" data-stop="3660.047000"><strong class="speaker-name">Sacha:</strong>  If she shows up, she will.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3660.367000" data-stop="3661.028000">It's inevitable.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3661.000000">1:01:01</span> <strong>Emacs Carnival June 2026: Underappreciated built-ins</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3661.709000" data-stop="3665.676000"><strong class="speaker-name">Sacha:</strong> Also, if folks are interested, even if you've</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3665.716000" data-stop="3669.602000">never blogged before, the Emacs carnival theme</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3669.722000" data-stop="3673.167000">for June 2026 is "Underappreciated Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3673.207000" data-stop="3674.910000">built-ins," which is why we had this conversation.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3675.251000" data-stop="3676.973000">Feel free to write about something and either</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3677.294000" data-stop="3678.014000">send [Ross and] me a link,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3678.015000" data-stop="3679.137000">or you can even send me the post</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3679.197000" data-stop="3681.480000">and I'll post it on my blog with your name on it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3681.540000" data-stop="3683.724000">and other things like that so you can share your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3683.764000" data-stop="3685.787000">appreciation for these built-ins.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3685.936000" data-stop="3686.377000">All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3686.618000" data-stop="3688.103000">Okay, I hear movement.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3688.123000" data-stop="3688.625000">I gotta go.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3688.866000" data-stop="3689.207000">All right.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3689.267000" data-stop="3692.077000"><strong class="speaker-name">Prot:</strong>  Take care, Sacha.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3692.097000" data-stop="3692.819000">Take care, folks.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3692.859000" data-stop="3693.180000">Goodbye.</span></div>
<p></p>


<a name="end-yay-emacs-33-sacha-and-prot-talk-emacs-built-ins-transcript"></a></details>
</div>
</div>
<div id="outline-container-yay-emacs-33-sacha-and-prot-talk-emacs-built-ins-chat" class="outline-3">
<h3 id="yay-emacs-33-sacha-and-prot-talk-emacs-built-ins-chat"><a href="https://sachachua.com/blog/feed/index.xml#yay-emacs-33-sacha-and-prot-talk-emacs-built-ins-chat">Chat</a></h3>
<div class="outline-text-3" id="text-yay-emacs-33-sacha-and-prot-talk-emacs-built-ins-chat">
<ul class="org-ul">
<li><span class="nick">protesilaos:</span> ​Looking forward to this! Talk to you soon.</li>
<li><span class="nick">gr1maldi:</span> ​​Yo, and stuff.🙂</li>
<li><span class="nick">charliemcmackin4859:</span> ​​I just checked, there are 11 items in my kill-ring at the moment. Some of them are several lines long</li>
<li><span class="nick">charliemcmackin4859:</span> ​narrowing to defun feels easier than trying to mark the function before search-and-replacing&hellip; I love narrowing</li>
<li><span class="nick">charliemcmackin4859:</span> ​&hellip;and I love that you can make those marking tricks part of a keyboard macro</li>
<li><span class="nick">hmelman:</span> ​​both local and global marks are useful to navigate through</li>
<li><span class="nick">pratikmishra4073:</span> ​​just tried indirect buffer. didn't know it existed</li>
<li><span class="nick">hmelman:</span> ​and the fact that things like xref or imenu push the last location before jumping, means popping the mark is an easy way to go back from various navigation mechanisms</li>
<li><span class="nick">matthewjorgensen9115:</span> ​​thinking about isearrch wrap around search losing your place. either have scrroll to posisiotn to know the direction and how far it was away, or have mode line flash to say it moved from last to first</li>
<li><span class="nick">hmelman:</span> ​Don't need flymake for that just M-g M-n (next-error) which works with compile, grep, occur (I think).</li>
<li><span class="nick">hmelman:</span> ​One I keep forgetting about, you mentioned using sexp commands in other languages, works in prose too. C-M-u (backwards-up-list) moves you out of a "quote" or (paren) and then C-M-e to the end of it.</li>
<li><span class="nick">matthewjorgensen9115:</span> ​​follow mode alllows the smae file with multiple frames, like a book. follow mode can work with 2 3 or more windows</li>
<li><span class="nick">matthewjorgensen9115:</span> ​also works with centered cursor mode which will keep the cusor possion in the middle of the frame</li>
<li><span class="nick">RandCode:</span> ​​Damn I am late, hello everyone! 🙂</li>
<li><span class="nick">matthewjorgensen9115:</span> ​when highlighting parts of the manual how are you doing this? in bookmarks, bookmark region, using org-remark? other ways?</li>
<li><span class="nick">RandCode:</span> ​​Does emacs have a grammar checker like harper's lsp?</li>
<li><span class="nick">greggr0th:</span> ​​What are your favorite completion plugins?</li>
<li><span class="nick">RandCode:</span> ​​Also, looking fresh Prot ;)</li>
<li><span class="nick">protesilaos:</span> ​​Thanks!</li>
<li><span class="nick">hmelman:</span> ​dabbrev is underrated. You don't need to pre-define them, just type the start of a word/symbol and type M-/ and it will search the buffer for something starting with what's left of point and expand it</li>
<li><span class="nick">RandCode:</span> ​There is so much to learn that I feel like I have been missing out on all of emacs somehow lol</li>
<li><span class="nick">RandCode:</span> ​Since you mentioned built-in completion framewworks, how does the built-in (vertical) completions compare to corfu btw?</li>
<li><span class="nick">charliemcmackin4859:</span> ​not grammar, but if you have a dictionary server running (like dicod on linux) emacs can be made to communicate with it to give definitions at point</li>
<li><span class="nick">RandCode:</span> ​Ohh, that is a cool! ^</li>
<li><span class="nick">matthewjorgensen9115:</span> ​​virtico multiform mode allows custom settings command, for example for files I use grid and alphabetical, but vertico recommendations normally. This allows more value of completion knowledge</li>
<li><span class="nick">RandCode:</span> ​Thank you so mcuh for this wonderful stream everyone!!!</li>
</ul>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/06/june-11-sacha-and-prot-talk-emacs-built-ins/index.org">View Org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F06%2Fjune-11-sacha-and-prot-talk-emacs-built-ins%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>2026-06-08 Emacs news</title>
		<link>https://sachachua.com/blog/2026/06/2026-06-08-emacs-news/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Mon, 08 Jun 2026 18:36:11 GMT</pubDate>
    <category>emacs</category>
<category>emacs-news</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/06/2026-06-08-emacs-news/</guid>
		<description><![CDATA[<p>
It's <a href="https://rossabaker.com/blog/underappreciated-emacs-built-ins/">Emacs Built-ins appreciation month</a>! I'm coming to appreciate the menu bar more. What built-ins do you appreciate? Write about it and <a href="https://rossabaker.com/blog/underappreciated-emacs-built-ins/">send Ross a link</a>!
</p>

<ul class="org-ul">
<li>Emacs updates:
<ul class="org-ul">
<li><a href="https://lists.gnu.org/archive/html/emacs-devel/2026-06/msg00118.html">Emacs 31.0.90 pretest is available</a> (<a href="https://www.reddit.com/r/emacs/comments/1tycwh7/emacs_31090_pretest_released_speed_boosts_ui/">Reddit</a>, <a href="https://www.linuxcompatible.org/story/emacs-31090-pretest-released-speed-boosts-ui-tweaks-bug-fixes/">Linux Compatible</a>, <a href="https://irreal.org/blog/?p=13858">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: In-Person-Only Emacs-Berlin Stammtisch <a href="https://emacs-berlin.org/">https://emacs-berlin.org/</a> Tue Jun 9 1900 Europe/Berlin</li>
<li>OrgMeetup (virtual) <a href="https://orgmode.org/worg/orgmeetup.html">https://orgmode.org/worg/orgmeetup.html</a> Wed Jun 10 0900 America/Vancouver - 1100 America/Chicago - 1200 America/Toronto - 1600 Etc/GMT - 1800 Europe/Berlin - 2130 Asia/Kolkata &ndash; Thu Jun 11 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 Jun 12 1800 Europe/Paris</li>
<li>M-x Research: TBA <a href="https://m-x-research.github.io/">https://m-x-research.github.io/</a> Wed Jun 17 0800 America/Vancouver - 1000 America/Chicago - 1100 America/Toronto - 1500 Etc/GMT - 1700 Europe/Berlin - 2030 Asia/Kolkata - 2300 Asia/Singapore</li>
</ul></li>
<li>Beginner:
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=diPparUrHGw">How to Install Emacs on a Chromebook in 2026</a> (07:15)</li>
<li><a href="https://www.youtube.com/watch?v=CVtYtcFvutw">How to Setup Emacs on a Chromebook Without Elisp in 2026</a> (10:37)</li>
</ul></li>
<li>Emacs configuration:
<ul class="org-ul">
<li><a href="https://wiki.plexwave.org/useful-emacs-key-bindings">Useful Emacs key bindings</a> (<a href="https://gts.plexwave.org/@spnw/statuses/01KT4TKGRQ2VZ62CD1N9APSG20">@spnw@plexwave.org</a>)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1tzo8jz/this_is_my_best_emacs_function_written_in_my/">function to list bindings</a></li>
<li><a href="https://ray-on-emacs.blogspot.com/2026/06/emacs-and-numeric-keypad.html">Raymond Zeitler: Emacs and the Numeric Keypad</a></li>
<li><a href="https://mathstodon.xyz/@oantolin/116698855002229972">new embark-automatic-prefix-help-mode (@oantolin@mathstodon.xyz)</a></li>
<li><a href="https://www.youtube.com/watch?v=ZCELm1zUcH0">How I structure my Emacs init.el file</a> (27:05, <a href="https://github.com/maxfriis/my-emacs-config">GitHub</a>)</li>
<li><a href="https://github.com/jamescherti/minimal-emacs.d">minimal-emacs.d: A Customizable init.el and early-init.el for Optimized Startup and Better Emacs Defaults [Release 1.5.0]​</a> (<a href="https://www.reddit.com/r/emacs/comments/1tuowci/minimalemacsd_a_customizable_initel_and/">Reddit</a>)</li>
<li><a href="https://github.com/scovl/dotfiles/tree/main/OpenBSD/.emacs.d">dotfiles/OpenBSD/.emacs.d at main · scovl/dotfiles · GitHub</a> (<a href="https://hachyderm.io/@lobocode/116677349851718741">@lobocode@hachyderm.io</a>)</li>
</ul></li>
<li>Emacs Lisp:
<ul class="org-ul">
<li><a href="https://github.com/k3jph/stops-el">k3jph/stops-el: stops: Guards in Emacs Lisp · GitHub</a> (<a href="https://mastodon.social/@k3jph/116693120049548169">@k3jph</a>)</li>
<li><a href="https://codeberg.org/imarko/vared.el">imarko/vared.el: Emacs command for interactively editing a variable - Codeberg.org</a> (<a href="https://fosstodon.org/@zrzz/116711371610663138">@zrzz@fosstodon.org</a>)</li>
</ul></li>
<li>Appearance:
<ul class="org-ul">
<li><a href="https://github.com/jamescherti/vim-tab-bar.el">vim-tab-bar: A Vim inspired Emacs tab-bar that adapts to any Emacs theme [Release 1.1.5]​</a> (<a href="https://www.reddit.com/r/emacs/comments/1tu64xu/vimtabbar_a_vim_inspired_emacs_tabbar_that_adapts/">Reddit</a>)</li>
<li><a href="https://www.chiply.dev/post-svg-line">svg-line: Better Status Bars for Emacs</a> (<a href="https://www.reddit.com/r/emacs/comments/1u069gm/svgline_better_status_bars_for_emacs/">Reddit</a>, <a href="https://lobste.rs/s/bqjxzj/svg_line_better_status_bars_for_emacs">lobste.rs</a>)</li>
<li><a href="https://ray-on-emacs.blogspot.com/2026/06/change-emacs-cursor-to-indicate.html">Raymond Zeitler: Change Emacs Cursor to Indicate Overwrite Mode</a></li>
<li><a href="https://source.cipherbliss.com/tykayn/emacs-theming">tykayn/emacs-theming</a> (<a href="https://mastodon.cipherbliss.com/@tykayn/116697952623553128">@tykayn@mastodon.cipherbliss.com</a>)</li>
<li><a href="https://github.com/lucasobx/pixel-themes">Emacs themes inspired by pixel art palettes</a> (<a href="https://www.reddit.com/r/emacs/comments/1tx56oj/emacs_themes_inspired_by_pixel_art_palettes/">Reddit</a>)</li>
<li><a href="https://www.youtube.com/watch?v=FSdPbKTBWaQ">How to Change Themes in Emacs</a> (01:31)</li>
<li><a href="https://www.youtube.com/watch?v=7Gz-FOq9AIs">How to Inhibit the Welcome Screen in Emacs</a> (01:12)</li>
<li><a href="https://www.youtube.com/watch?v=Cr9IHzj_APQ">How to Maximize Emacs' Screen Upon Startup</a> (01:24)</li>
<li><a href="https://www.youtube.com/watch?v=Rsgg-uVJlIw">How to Hide the Tool Bar, Scroll Bar, and Menu Bar in Emacs</a> (02:00)</li>
<li><a href="https://www.youtube.com/watch?v=XTgIJUwmz0Q">Nicolas Rougier's Talk at 39C3 - The art of text (rendering)</a> (<a href="https://www.reddit.com/r/emacs/comments/1txnsrr/nicolas_rougiers_talk_at_39c3_the_art_of_text/">Reddit</a>) see discussion for more thoughts on SVG in Emacs</li>
</ul></li>
<li>Navigation:
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1tu9wvg/post_a_solution_embarkactonlastmessage/">Post a solution: embark-act-on-last-message</a></li>
<li><a href="https://github.com/vmargb/project-x">Project-x revived with Emacs 30+ support!</a> (<a href="https://www.reddit.com/r/emacs/comments/1tylkdz/projectx_revived_with_emacs_30_support/">Reddit</a>) - session persistence</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1txrf6o/little_llm_helper_function_for_copying_fileline/">Little LLM helper function for copying file:line coordinates</a></li>
<li><a href="https://github.com/jamescherti/kirigami.el">kirigami: A unified Emacs method to fold and unfold text in Emacs: outline, outline-indent, org-mode, markdown-mode, vdiff, hideshow, treesit-fold&hellip; [Release 1.1.2]​</a> (<a href="https://www.reddit.com/r/emacs/comments/1tup3tb/kirigami_a_unified_emacs_method_to_fold_and/">Reddit</a>)</li>
</ul></li>
<li>Writing:
<ul class="org-ul">
<li><a href="https://github.com/mmarshall540/electric-sentence">mmarshall540/electric-sentence: Automatically add the extra space between sentences in Emacs. · GitHub</a> (<a href="https://www.reddit.com/r/emacs/comments/1tynlmb/wrote_a_package_to_add_the_2nd_space_between/">Reddit</a>)</li>
<li><a href="https://github.com/jamescherti/quick-sdcv.el">quick-sdcv: Emacs offline dictionary using 'sdcv' [Release 1.0.5]​</a> (<a href="https://www.reddit.com/r/emacs/comments/1tu6u91/quicksdcv_emacs_offline_dictionary_using_sdcv/">Reddit</a>, <a href="https://irreal.org/blog/?p=13848">Irreal</a>)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1tvrwet/notes_linking_and_tagging_systems_in_emacs/">Notes, Linking and Tagging systems in Emacs</a></li>
<li><a href="https://mahmoodsh.com/blk.html">blk</a>: creating and navigating titles of text files, linking between them</li>
<li><a href="https://blog.davep.org/2026/06/05/blogmore-el-v4-6-0.html">Dave Pearson: blogmore.el v4.6.0</a> - show toc, show toc inline</li>
</ul></li>
<li>Org Mode:
<ul class="org-ul">
<li><a href="https://bicycleforyourmind.com/much-ado-about-emacs-014">Much Ado About Emacs 014: Org-Mode and the Capture System</a>, creating headings at different levels, and changing bindings</li>
<li><a href="https://taonaw.com/2026/06/03/correcting-photo-orientation-for-orgmode.html">TAONAW - Emacs and Org Mode: Correcting photo orientation for org-mode in Linux</a> (<a href="https://irreal.org/blog/?p=13860">Irreal</a>)</li>
<li><a href="https://citum.org/news/citing-with-citum-in-emacs-org-mode.html">Citing with Citum in Emacs org-mode | News | Citum</a> (<a href="https://mas.to/@bdarcus/116677048360094778">@bdarcus@mas.to</a>)</li>
<li><a href="https://eugene-andrienko.com/it/2024/12/01/emacs-plugin-jekyll-blog.html">How I wrote an Emacs plugin to build my blog</a> (<a href="https://mastodon.bsd.cafe/@evgandr/116687815479622870">@evgandr@bsd.cafe</a>)</li>
<li><a href="https://thecloudlet.github.io/technical/emacs/org-zola-workflow/">Migrating a Zola blog from Markdown to Org-mode — with a lint/export/check pipeline to keep them in sync | The Cloudlet</a></li>
<li>Org development: <a href="https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/etc/ORG-NEWS?id=3ea1682731fa061115bc690e76ce7d1d2955f810">Generate images in TOC for HTML export</a></li>
</ul></li>
<li>Completion:
<ul class="org-ul">
<li><a href="https://www.chiply.dev/post-incremental-suggesting-read">Beyond ICR: Incremental 'Suggesting' Read in Emacs</a> (<a href="https://www.youtube.com/watch?v=UnAavHqekp0">YouTube</a> 20:10, <a href="https://www.reddit.com/r/emacs/comments/1tvjp8l/beyond_icr_incremental_suggesting_read_in_emacs/">Reddit</a>, <a href="https://fosstodon.org/@chiply/116685381663629482">@chiply@fosstodon.org</a>)</li>
</ul></li>
<li>Coding:
<ul class="org-ul">
<li><a href="https://github.com/rschmukler/magit-difftastic">Introducing magit-difftastic: integrate difftastic into magit</a> (<a href="https://www.reddit.com/r/emacs/comments/1twq1bg/introducing_magitdifftastic_integrate_difftastic/">Reddit</a>)</li>
<li><a href="https://github.com/phye/inline-review">inline-review: review merge/pull requests directly within emacs</a> (<a href="https://www.reddit.com/r/emacs/comments/1ttw2qg/inlinereview_review_mergepull_requests_directly/">Reddit</a>)</li>
<li><a href="https://www.alcarney.me/blog/2026/alc-jj-log-view-mode/">Building alc-jj-log-view-mode — Alex Carney</a> (<a href="https://mastodon.social/@alcarney/116711382373829868">@alcarney</a>)</li>
<li><a href="https://wassimans.com/blog/building-ios-apps-with-doom-emacs/">Building IOS Apps With Doom Emacs | Wassim Mansouri</a> (<a href="https://news.ycombinator.com/item?id=48388710">HN</a>)</li>
<li><a href="https://www.youtube.com/watch?v=thPsF9C2b10">CEDET for  Plan 9 coding</a> (01:14)</li>
<li><a href="https://oylenshpeegul.gitlab.io/blog/posts/20260601/">Tim Heaney: Ziglings</a></li>
</ul></li>
<li>Shells:
<ul class="org-ul">
<li><a href="https://www.alcarney.me/blog/2026/eshell-integration/">A Simple jj Integration for eshell — Alex Carney</a> (<a href="https://mastodon.social/@alcarney/116703207672988666">@alcarney</a>)</li>
<li><a href="https://ray-on-emacs.blogspot.com/2026/06/exeln-execute-line.html">Raymond Zeitler: exeln: EXEcute LiNe</a>
<ul class="org-ul">
<li><a href="https://ray-on-emacs.blogspot.com/2026/06/follow-on-to-exeln.html">Follow-on to exeln</a></li>
</ul></li>
</ul></li>
<li>Web:
<ul class="org-ul">
<li><a href="https://irreal.org/blog/?p=13846">Irreal: My Growing Appreciation For EWW</a></li>
</ul></li>
<li>Mail, news, and chat:
<ul class="org-ul">
<li><a href="https://ashishpanigrahi.com/blog/o365-offline-email/">Setting up offline email for Microsoft O365 with notmuch and emacs | Ashish Panigrahi</a> (<a href="https://ioc.exchange/@paniash/116711092886642906">@paniash@ioc.exchange</a>)</li>
<li><a href="https://lars.ingebrigtsen.no/2026/06/05/super-simple-spam-splitting-for-gnus/">Lars Ingebrigtsen: Super Simple Spam Splitting for Gnus</a></li>
<li><a href="https://github.com/emacs-elfeed/elfeed/blob/main/NEWS.org#version-400-2026-06-06">New Elfeed 4.0.0 release</a> (<a href="https://irreal.org/blog/?p=13862">Irreal</a>, <a href="https://news.ycombinator.com/item?id=48428652">HN</a>)</li>
<li><a href="https://en.andros.dev/blog/1a6f3018/chatting-via-meshtastic-in-emacs/">Chatting via Meshtastic in Emacs | Andros Fenollosa</a></li>
</ul></li>
<li>Multimedia:
<ul class="org-ul">
<li><a href="https://mbork.pl/2026-06-06_Copying_images_in_Emacs">Marcin Borkowski: Copying images in Emacs</a></li>
<li><a href="https://www.youtube.com/watch?v=iUrTC4PrBpM">Kokoro-onnx with Cuda for text to speech with Emacs</a> (01:26:56)</li>
</ul></li>
<li>Fun:
<ul class="org-ul">
<li><a href="https://github.com/modeverv/wasmacs">I ported GNU Emacs 30.2 to the browser with WebAssembly</a> (<a href="https://www.reddit.com/r/emacs/comments/1tzy72g/i_ported_gnu_emacs_302_to_the_browser_with/">Reddit</a>)</li>
<li><a href="https://ianyepan.github.io/posts/emacs-in-pop-culture/">Emacs Appearance in Pop Culture</a> (<a href="https://www.reddit.com/r/emacs/comments/1u02d0v/emacs_appearance_in_pop_culture/">Reddit</a>, <a href="https://news.ycombinator.com/item?id=48474274">HN</a>, <a href="https://irreal.org/blog/?p=13866">Irreal</a>)</li>
</ul></li>
<li>AI:
<ul class="org-ul">
<li><a href="https://kevinlynagh.com/newsletter/2026_05_difftron/">Structural diffing in Emacs; deterministic agent harnesses</a> (<a href="https://github.com/lynaghk/difftron/">GitHub</a>)</li>
<li><a href="https://github.com/ananthakumaran/pi.el">Emacs client for Pi Coding Agent</a> (<a href="https://www.reddit.com/r/emacs/comments/1tz40nr/emacs_client_for_pi_coding_agent/">Reddit</a>)</li>
<li><a href="https://github.com/jaketothepast/codetutor">jaketothepast/codetutor: An AI Pair Programmer, that teaches you to code as you write, for Emacs · GitHub</a> (<a href="https://news.ycombinator.com/item?id=48449430">HN</a>)</li>
</ul></li>
<li>Community:
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1tueedh/fortnightly_tips_tricks_and_questions_20260602/">Fortnightly Tips, Tricks, and Questions — 2026-06-02 / week 22</a></li>
<li><a href="https://www.reddit.com/r/emacs/comments/1tudad3/learning_emacs_with_progressive_vision_loss/">Learning Emacs with Progressive Vision Loss</a></li>
<li><a href="https://kelar.org/~bandali/news/fsa-202605.html">Amin Bandali: Free software activities in May 2026</a></li>
<li><a href="https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/">Emacs Chat 25: Ben Zanin (@gnomon@mastodon.social)</a> (<a href="https://www.youtube.com/watch?v=ax4f5uaOHA8">YouTube</a> 59:30)</li>
<li><a href="https://sachachua.com/blog/2026/05/emacs-carnival-may-2026-may-i-recommend/">Sacha Chua: Emacs Carnival May 2026 wrap-up: "May I recommend&hellip;"</a></li>
<li><a href="https://sachachua.com/blog/2026/06/transcript-of-chat-with-matei-candea-about-emacs-and-ai/">Sacha Chua: Transcript of chat with Matei Candea about Emacs and AI</a></li>
<li><a href="https://www.youtube.com/watch?v=UqashZncNj4">This perfect text editor doesn't exist</a> (15:57)</li>
<li><a href="https://linuxblog.io/teco-neovim-text-editing-unix-linux/">From TECO to Neovim: 50 Years of Text Editing on Unix and Linux</a> (<a href="https://www.reddit.com/r/emacs/comments/1tzo58i/from_teco_to_neovim_50_years_of_text_editing_on/">Reddit</a>)</li>
<li><a href="https://www.swi-prolog.org/PceEmacs.md">PceEmacs is an Emacs written in Prolog instead of Lisp! It also seems to support LSP</a> (<a href="https://www.reddit.com/r/emacs/comments/1tvn264/pceemacs_is_an_emacs_written_in_prolog_instead_of/">Reddit</a>)</li>
</ul></li>
<li><a href="https://rossabaker.com/blog/underappreciated-emacs-built-ins/">Emacs Carnival: Underappreciated Emacs Builtins</a>:
<ul class="org-ul">
<li><a href="https://www.homepages.ucl.ac.uk/~ucecesf/blog/20260602.html">Emacs carnival: rec mode, an all-text database system</a> (<a href="https://fediscience.org/@ericsfraga/116681034174534204">@ericsfraga@fediscience.org</a>)</li>
<li><a href="https://www.cyan.sh/blog/posts/radical-builtins.html">Jakub Nowak: Radical Builtins</a></li>
<li><a href="https://wiki.plexwave.org/emacs-dwim-case-commands">Emacs DWIM case commands</a> by spnw</li>
</ul></li>
<li>Other:
<ul class="org-ul">
<li><a href="https://github.com/ErikPrantare/phony.el">phony.el: Define voice commands in Emacs</a> (<a href="https://www.reddit.com/r/emacs/comments/1tubei6/phonyel_define_voice_commands_in_emacs/">Reddit</a>)</li>
<li><a href="https://bicycleforyourmind.com/much_ado_about_emacs_013">Bicycle for Your Mind: Much Ado About Emacs 013</a> - anddo.el (todos), substitute</li>
<li><a href="https://lars.ingebrigtsen.no/2026/06/03/todo-lists-and-procrastination/">Lars Ingebrigtsen: Todo Lists and Procrastination</a></li>
<li><a href="https://github.com/jamescherti/inhibit-mouse.el">jamescherti/inhibit-mouse.el 1.0.4</a> (<a href="https://www.reddit.com/r/emacs/comments/1tvwk7l/inhibitmouse_disable_the_mouse_in_emacs_release/">Reddit</a>, <a href="https://irreal.org/blog/?p=13853">Irreal</a>)</li>
<li><a href="http://yummymelon.com/devnull/revisiting-emacs-keyboard-macros-with-a-mouse.html">Charles Choi: Revisiting Emacs Keyboard Macros with a Mouse</a></li>
<li><a href="https://sachachua.com/blog/2026/06/emacs-pdf-view-replace-current-page-with-file-using-pdftk/">Sacha Chua: Emacs PDF View: Replace current page with file using PDFtk</a></li>
<li><a href="https://www.yakshaving.co.uk/posts/conquering-the-emacs-daemon/">conquering the Emacs daemon - Blog In Isolation</a> (<a href="https://mastodon.me.uk/@andyc/116697585241088161">@andyc@mastodon.me.uk</a>)</li>
<li><a href="https://github.com/tanrax/emacs-gpu">tanrax/emacs-gpu: GNU Emacs with a GPU-accelerated display backend · GitHub</a> (<a href="https://activity.andros.dev/@andros/statuses/01KT8T7D12K9A22FCZX0NXDV43">@andros@activity.andros.dev</a>)
<ul class="org-ul">
<li><a href="https://yhetil.org/emacs-devel/0CAC2512-C560-4D1C-964B-46BBEF5228BF@subvertising.org/">emacs-devel re: overlap with Canvas patch</a>,<a href="https://yhetil.org/emacs-devel/571c261a-a4fc-4d7f-9ccb-afc6cb530547@gutov.dev/"> can't accept LLM-generated contributions</a></li>
</ul></li>
<li><a href="https://fedora-sysexts.github.io/fedora/emacs/">emacs | extensions.fcos.fr (Fedora)</a> (<a href="https://mastodon.social/@alcarney/116687391476450331">@alcarney</a>) - emacs sysext for Fedora image-based systems</li>
<li><a href="https://github.com/nohzafk/emacs-workspace-hud">I built a floating HUD for Emacs, rendered in Rust egui via WASM</a> (<a href="https://www.reddit.com/r/emacs/comments/1tw7u87/i_built_a_floating_hud_for_emacs_rendered_in_rust/">Reddit</a>) macOS</li>
<li><a href="http://yummymelon.com/devnull/opening-macos-finder-folders-in-emacs-with-scrim.html">Charles Choi: Opening macOS Finder Folders in Emacs with Scrim</a> (<a href="https://sfba.social/@kickingvegas/116678063857985054">@kickingvegas@sfba.social</a>)</li>
<li><a href="https://unixbhaskar.wordpress.com/2026/06/03/damn-emacs-regex-problem/">Damn! Emacs Regex problem | Unixbhaskar's Blog</a> (<a href="https://fosstodon.org/@unixbhaskar/116682966197832720">@unixbhaskar@fosstodon.org</a>)</li>
<li><a href="https://www.youtube.com/watch?v=omoGBS3rzEw">самый хайповый гайд на Emacs</a> (15:40)</li>
</ul></li>
<li>Emacs development:
<ul class="org-ul">
<li>emacs-devel: <a href="https://yhetil.org/emacs-devel/m2mrxes3bs.fsf@gmail.com/">markdown-ts-mode and markdown-ts-view-mode demoted on the release branch</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=1d91d9b717df1781c07d28f46af4ac2af19c16b4">project-vc-dir: Use truenames</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=66e02b3123a2f6845b1ec6e192f3820bb74d4a7b">(Fmarkers_in): New function (bug#81153)</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=2db5a145acbbe84042128806d8b2e333495cf70e">Support Ansible messages in compilation-mode</a></li>
</ul></li>
<li>New packages:
<ul class="org-ul">
<li><a target="_blank" href="https://melpa.org/#/bluesky">bluesky</a>: A Bluesky client (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/cui">cui</a>: AI-LLM chat blocks for org-mode (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/desert-theme">desert-theme</a>: A warm earthy port of Vim's desert theme (MELPA)</li>
<li><a target="_blank" href="https://elpa.nongnu.org/nongnu/flamegraph.html">flamegraph</a>: Flame graphs for Emacs's native profiler and folded stacks files (NonGNU ELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/sleek-modeline">sleek-modeline</a>: Minimal and elegant modeline (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-08-emacs-news/index.org">View Org source for this post</a></div>
<p>You can <a href="https://social.sachachua.com/@sacha/statuses/01KTMYVZBS50B5EFDW77VQJC0F" target="_blank" rel="noopener noreferrer">comment on Mastodon</a> or <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F06%2F2026-06-08-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>]]></description>
		</item><item>
		<title>Emacs Chat 26: Ross A. Baker</title>
		<link>https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Sun, 07 Jun 2026 18:28:45 GMT</pubDate>
    <category>emacs</category>
<category>emacs-chat-podcast</category>
<category>emacs-chat</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/</guid>
		<description><![CDATA[<div class="update" id="orga27d02c">
<p>
<span class="timestamp-wrapper"><time class="timestamp" datetime="2026-06-19">[2026-06-19 Fri]</time></span>: Added transcript.
</p>

</div>

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

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

<p>
Related links:
</p>

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

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

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

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

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

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


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


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

<p>
Find more Emacs Chats or join the fun: <a href="https://sachachua.com/emacs-chat">https://sachachua.com/emacs-chat</a>
</p>
</div>
</div>
<div id="outline-container-emacs-chats-emacs-chat-26-ross-a-baker-chat" class="outline-3">
<h3 id="emacs-chats-emacs-chat-26-ross-a-baker-chat"><a href="https://sachachua.com/blog/feed/index.xml#emacs-chats-emacs-chat-26-ross-a-baker-chat">Chat</a></h3>
<div class="outline-text-3" id="text-emacs-chats-emacs-chat-26-ross-a-baker-chat">
<ul class="org-ul">
<li><span class="nick">Ray-On-Emacs:</span> ​​How do you exit Emacs, then? Or do you never exit Emacs?</li>
<li><span class="nick">pratikmishra4073:</span> ​i stealing that lock mode hack. i too have killed scratch buffer accidentally before.</li>
<li><span class="nick">ispringle:</span> ​`(global-set-key (kbd "C-c l") #'emacs-lock-mode)` is handy for one off locks too</li>
<li><span class="nick">PuercoPop:</span> ​​There is a gh-notify package specifically for high volume GitHub notifications</li>
<li><span class="nick">blaiseutube:</span> ​​I keep procrastinating my return to emacs 😔</li>
<li><span class="nick">gr1maldi:</span> ​​Yo, and stuff. Sorry I'm late.</li>
<li><span class="nick">Ray-On-Emacs:</span> ​​Getting older! Oh boy! more tell me, please</li>
<li><span class="nick">dubstepandlovee:</span> ​​fantastic chat so far! as a local agent user, gptel-agent looks like an interesting project</li>
<li><span class="nick">Trevoke:</span> ​​Hopefully without starting a philosophical war, why nix over guix?</li>
<li><span class="nick">dubstepandlovee:</span> ​why nix over lix</li>
<li><span class="nick">dubstepandlovee:</span> ​(joke)</li>
<li><span class="nick">Trevoke:</span> ​​<b>shakes fist in F/OSS</b> Thanks for the answer</li>
<li><span class="nick">blaiseutube:</span> ​​recovering linguist here. English Spanish and French for work. Japanese Portuguese, Sanskrit and Swedish for fun.</li>
<li><span class="nick">blaiseutube:</span> ​​c-x h ? I love it</li>
<li><span class="nick">sachactube:</span> ​​Maybe C-x 8 RET</li>
<li><span class="nick">blaiseutube:</span> ​oh! thank you</li>
<li><span class="nick">Ray-On-Emacs:</span> Thank you!</li>
</ul>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/index.org">View Org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F06%2Femacs-chat-with-ross-a-baker%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>Emacs PDF View: Replace current page with file using PDFtk</title>
		<link>https://sachachua.com/blog/2026/06/emacs-pdf-view-replace-current-page-with-file-using-pdftk/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Sun, 07 Jun 2026 00:35:27 GMT</pubDate>
    <category>emacs</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/06/emacs-pdf-view-replace-current-page-with-file-using-pdftk/</guid>
		<description><![CDATA[<p>
I needed to replace a page in a PDF with another PDF. This was a bit
of an annoying process on my iPad involving copying and pasting pages
in Noteful and then re-exporting them as a PDF, but it was easy to do
in Emacs thanks to <a target="_blank" href="https://melpa.org/#/pdf-tools">pdf-tools</a> and <a href="https://www.pdflabs.com/tools/pdftk-server/">PDFtk</a>.
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code><span class="org-comment-delimiter">;;;</span><span class="org-comment">###</span><span class="org-comment"><span class="org-warning">autoload</span></span>
(<span class="org-keyword">defun</span> <span class="org-function-name">sacha-pdf-view-replace-current-page-with-file</span> (file)
  <span class="org-doc">"Replace the current page in PDF View with FILE.</span>
<span class="org-doc">Requires pdftk."</span>
  (<span class="org-keyword">interactive</span> <span class="org-string">"FFile to insert: "</span>)
  (<span class="org-keyword">let</span> ((temp-file (concat (make-temp-name <span class="org-string">"pdf-view"</span>) <span class="org-string">".pdf"</span>)))
    (call-process
     <span class="org-string">"pdftk"</span>
     nil nil nil
     (concat <span class="org-string">"A="</span> (expand-file-name (buffer-file-name)))
     (concat <span class="org-string">"B="</span> (expand-file-name file))
     <span class="org-string">"cat"</span>
     (format <span class="org-string">"A%d-%d"</span>
             1
             (1- (<span class="org-keyword">pdf-view-current-page</span>)))
     <span class="org-string">"B"</span>
     (format <span class="org-string">"A%d-end"</span>
             (1+ (<span class="org-keyword">pdf-view-current-page</span>)))
     <span class="org-string">"output"</span>
     temp-file)
    (rename-file temp-file (buffer-file-name) t)))
</code></pre>
</div>


<div class="note">This is part of my <a href="https://sachachua.com/dotemacs#navigation-pdf-view-emacs-pdf-view-replace-current-page-with-file-using-pdftk">Emacs configuration.</a></div><div><a href="https://sachachua.com/blog/2026/06/emacs-pdf-view-replace-current-page-with-file-using-pdftk/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-pdf-view-replace-current-page-with-file-using-pdftk%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>Emacs Chat 25: Ben Zanin (@gnomon@mastodon.social)</title>
		<link>https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Thu, 04 Jun 2026 12:50:07 GMT</pubDate>
    <category>emacs</category>
<category>emacs-chat</category>
<category>emacs-chat-podcast</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/</guid>
		<description><![CDATA[<div class="update" id="org936ce5a">
<p>
<span class="timestamp-wrapper"><time class="timestamp" datetime="2026-06-10">[2026-06-10 Wed]</time></span>: Updated the transcript
</p>

</div>

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

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

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

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

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

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

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

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

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


<a name="end-emacs-chat-25-ben-zanin-transcript"></a></details>
</div>
</div>
<div id="outline-container-emacs-chats-emacs-chat-25-ben-zanin-gnomon-mastodon-social-chat" class="outline-3">
<h3 id="emacs-chats-emacs-chat-25-ben-zanin-gnomon-mastodon-social-chat"><a href="https://sachachua.com/blog/feed/index.xml#emacs-chats-emacs-chat-25-ben-zanin-gnomon-mastodon-social-chat">Chat</a></h3>
<div class="outline-text-3" id="text-emacs-chats-emacs-chat-25-ben-zanin-gnomon-mastodon-social-chat">
<ul class="org-ul">
<li><span class="nick">sachactube:</span> ​​only slightly panicking behind the scenes 🙂 Nudged Ben by Mastodon in case we got our wires crossed</li>
<li><span class="nick">sachactube:</span> ​​yay, he's here, just getting sound sorted</li>
<li><span class="nick">symbiopoyesis:</span> Good morning</li>
<li><span class="nick">x_goose_x:</span> ​​hey gnomonnnnnn</li>
<li><span class="nick">CharlieBaker707:</span> ​yay! love the split keyboard. recently bought one myself. i was getting shoulder and neck pain from so many hours keeping by hands close together, but the split let's my shoulder's relax.</li>
<li><span class="nick">ShaeErisson:</span> ​How do you make a capture template to stay on-agenda and record decisions? Any tips?</li>
<li><span class="nick">PuercoPop:</span> ​​Regarding terminal emacs, did they need to adapt any keybindings to avoid clashses with the terminal keybindings?</li>
<li><span class="nick">AyanRaza-n1x:</span> ​​is that the creator of emacs?</li>
<li><span class="nick">Ray-On-Emacs:</span> ​Yes! Google steals C-S-k, which I use to kill tabs to the right on Vivaldi!</li>
<li><span class="nick">CharlieBaker707:</span> ​elfeed is like a distraction alleviation machine. I agree with Ben, I don't think I could consume any of this information outside of Emacs. Ads and even varying formats distract me too much.</li>
<li><span class="nick">JonKishore11:</span> ​​do he have YT</li>
<li><span class="nick">sachactube:</span> ​​Thanks for hanging out, everyone! =)</li>
<li><span class="nick">gnomon027:</span> Thanks so much for running this whole series, @sachactube !!</li>
</ul>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/index.org">View Org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F06%2Fjune-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>La semaine du 25 au 31 mai</title>
		<link>https://sachachua.com/blog/2026/06/la-semaine-du-25-au-31-mai/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Tue, 02 Jun 2026 17:42:19 GMT</pubDate>
    <category>french</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/06/la-semaine-du-25-au-31-mai/</guid>
		<description><![CDATA[<div class="sticky-toc" id="org88aa129">
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="https://sachachua.com/blog/feed/index.xml#entr-es-de-journal-la-semaine-du-25-au-31-mai-lundi-25">lundi 25</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#entr-es-de-journal-la-semaine-du-25-au-31-mai-mardi-26">mardi 26</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#entr-es-de-journal-la-semaine-du-25-au-31-mai-mercredi-27">mercredi 27</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#entr-es-de-journal-la-semaine-du-25-au-31-mai-jeudi-28">jeudi 28</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#entr-es-de-journal-la-semaine-du-25-au-31-mai-vendredi-29">vendredi 29</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#entr-es-de-journal-la-semaine-du-25-au-31-mai-samedi-30">samedi 30</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#entr-es-de-journal-la-semaine-du-25-au-31-mai-dimanche-31">dimanche 31</a></li>
</ul>
</div>

</div>
<div id="outline-container-entr-es-de-journal-la-semaine-du-25-au-31-mai-lundi-25" class="outline-3">
<h3 id="entr-es-de-journal-la-semaine-du-25-au-31-mai-lundi-25"><a href="https://sachachua.com/blog/feed/index.xml#entr-es-de-journal-la-semaine-du-25-au-31-mai-lundi-25">lundi 25</a></h3>
<div class="outline-text-3" id="text-entr-es-de-journal-la-semaine-du-25-au-31-mai-lundi-25">
<p>
Ma fille était un peu triste parce que j'avais mangé mon petit-déjeuner avant qu'elle ne se réveille. Elle m'a demandé si je pouvais l'attendre pour que nous puissions manger ensemble.
</p>

<p>
J'ai emmené ma fille chez l'oculariste pour polir sa prothèse oculaire. Après le rendez-vous, elle a voulu rentrer au lieu d'aller chez College Optical pour commander des lunettes de soleil correctrices.
</p>

<p>
Pour le déjeuner et en guise de récompense pour le rendez-vous chez l'oculariste, nous avons mangé des nouilles instantanées. Ma fille m'a donné l'autre moitié de son sachet d'épices aux fruits de mer. Nous les avons enrichies avec du gâteau au poisson et aux algues. Elle a découvert qu'elle n'aimait pas le mochi à la crème glacée, donc elle a eu de la crème glacée à la place.
</p>

<p>
Après l'école, elle n'a pas voulu aller au cours de gymnastique parce qu'elle était un peu fatiguée. Au lieu de cela, nous sommes allées au parc pour jouer avec une balle, une corde à sauter, un grand dé en mousse, et la pataugeoire là-bas.
</p>

<p>
Pour le dîner, ma fille a voulu du sushi au crabe comme au restaurant que nous avons essayé vendredi.
</p>

<p>
Mon mari, ma fille et moi avons joué au Scrabble. Maintenant ma fille peut trouver ses propres mots avec quelques indices. Nous avons joué juste pour le plaisir, donc nous n'avions pas compté les points. Pour notre premier jeu, elle a voulu échanger des tuiles avec mon mari et moi, donc nous le lui avons permis. Pour notre deuxième jeu, mon mari a dû aller faire autre chose, donc elle et moi avons joué. Elle a voulu inclure les noms Pokémon, donc nous nous sommes amusées en plaçant les mots comme « Ekans », « Abo » et « Jolteon » (l'anglais et le français sont également permis) même si les mots anglais normaux sont aussi possibles.
</p>
</div>
</div>
<div id="outline-container-entr-es-de-journal-la-semaine-du-25-au-31-mai-mardi-26" class="outline-3">
<h3 id="entr-es-de-journal-la-semaine-du-25-au-31-mai-mardi-26"><a href="https://sachachua.com/blog/feed/index.xml#entr-es-de-journal-la-semaine-du-25-au-31-mai-mardi-26">mardi 26</a></h3>
<div class="outline-text-3" id="text-entr-es-de-journal-la-semaine-du-25-au-31-mai-mardi-26">
<p>
J'ai terminé la transcription de ma conversation avec Matei qui est anthropologue. Je la lui ai envoyée pour relecture avant de la publier.
</p>

<p>
Un des chats de notre voisinage m'a rendu visite, donc je lui ai donné un bol d'eau.
</p>

<p>
Ma fille et moi sommes allées au parc pour jouer seules. Nous avons joué avec la balle et à la pataugeoire.
</p>

<p>
J'ai appris que la prononciation du verbe « interviewer » en français a deux sons « v ». C'était intrigant.
</p>
</div>
</div>
<div id="outline-container-entr-es-de-journal-la-semaine-du-25-au-31-mai-mercredi-27" class="outline-3">
<h3 id="entr-es-de-journal-la-semaine-du-25-au-31-mai-mercredi-27"><a href="https://sachachua.com/blog/feed/index.xml#entr-es-de-journal-la-semaine-du-25-au-31-mai-mercredi-27">mercredi 27</a></h3>
<div class="outline-text-3" id="text-entr-es-de-journal-la-semaine-du-25-au-31-mai-mercredi-27">
<p>
L'école a eu un remplaçant, donc elle a choisi de sécher les cours. Le matin, elle et moi avons travaillé sur ses devoirs dehors. Elle était de bonne humeur. L'après-midi, elle était un peu triste parce qu'elle attendait une réponse de son amie, et elle s'est blottie sur le canapé. Une fois qu'elle a finalement reçu une réponse, j'ai emmené ma fille au parc pour jouer avec ses amies. Elle s'est très amusée, donc j'ai eu vraiment du temps pour penser pendant qu'elle jouait.
</p>

<p>
J'ai finalement envoyé les factures pour le mois de mars et d'avril.
</p>

<p>
Ma mère est restée à la maison parce qu'elle avait fait une petite chute.
</p>
</div>
</div>
<div id="outline-container-entr-es-de-journal-la-semaine-du-25-au-31-mai-jeudi-28" class="outline-3">
<h3 id="entr-es-de-journal-la-semaine-du-25-au-31-mai-jeudi-28"><a href="https://sachachua.com/blog/feed/index.xml#entr-es-de-journal-la-semaine-du-25-au-31-mai-jeudi-28">jeudi 28</a></h3>
<div class="outline-text-3" id="text-entr-es-de-journal-la-semaine-du-25-au-31-mai-jeudi-28">
<p>
J'ai discuté avec Protesilaos sur les recommandations sur Emacs pour divers utilisateurs.
</p>

<p>
Ma fille et moi avons joué au Scrabble sur le porche pendant la pause déjeuner. Nous avons aussi joué au Scrabble avec mon mari après le dîner. Nous avons commencé à compter les points, bien que nous ayons toujours joué en coopération.
</p>
</div>
</div>
<div id="outline-container-entr-es-de-journal-la-semaine-du-25-au-31-mai-vendredi-29" class="outline-3">
<h3 id="entr-es-de-journal-la-semaine-du-25-au-31-mai-vendredi-29"><a href="https://sachachua.com/blog/feed/index.xml#entr-es-de-journal-la-semaine-du-25-au-31-mai-vendredi-29">vendredi 29</a></h3>
<div class="outline-text-3" id="text-entr-es-de-journal-la-semaine-du-25-au-31-mai-vendredi-29">
<p>
J'ai interviewé Omar Antolin Camarena sur sa configuration et ses flux de travail sur Emacs. J'ai travaillé sur la publication des transcriptions vers le format PDF. J'ai ajouté la fonctionnalité d'exclure des sections par format selon les étiquettes.
</p>

<p>
J'ai pratiqué la prononciation française.
</p>

<p>
J'ai emmené ma fille à un cours de rattrapage de gymnastique aérienne.
</p>
</div>
</div>
<div id="outline-container-entr-es-de-journal-la-semaine-du-25-au-31-mai-samedi-30" class="outline-3">
<h3 id="entr-es-de-journal-la-semaine-du-25-au-31-mai-samedi-30"><a href="https://sachachua.com/blog/feed/index.xml#entr-es-de-journal-la-semaine-du-25-au-31-mai-samedi-30">samedi 30</a></h3>
<div class="outline-text-3" id="text-entr-es-de-journal-la-semaine-du-25-au-31-mai-samedi-30">
<p>
Ma fille s'est amusée toute seule à faire des bulles et à jouer avec de la mousse à raser.
</p>

<p>
Ma fille a voulu des vêtements neufs et un jouet anti-stress, donc je l'ai emmenée dans différents magasins. Elle n'a pas aimé le Thinking Putty au début qu'elle a choisi parce qu'il a des paillettes. Nous sommes prudentes avec les paillettes pour éviter de gratter son œil si elle le frotte. Après avoir joué avec le Putty, elle a décidé qu'elle l'aime, et elle va simplement bien se laver les mains.
</p>

<p>
Pour explorer de nouvelles saveurs, nous avons mangé chez KFC.
</p>

<p>
Pendant qu'elle regardait des émissions, j'ai ajouté une commande à mon logiciel pour effacer des images incorrectes afin que j'en téléverse une nouvelle.
</p>

<p>
Nous avons joué à Donjons et Dragons ensemble pour nous exercer au rôle de meneuse de jeu. Mon roublard halfelin a vaincu un <a href="https://www.donjondudragon.fr/drs/ad-d2/bestiaire-monstrueux/8937-mephite-generalites.html">méphite</a>, mais le <a href="https://www.donjondudragon.fr/drs/ad-d/bestiaire-monstrueux/12605-mimique.html">mimique</a> dans l'autre pièce était trop pour moi. Du côté de ma fille, elle a aidé Cornflower avec les devoirs de la ferme.
</p>

<p>
Mon mari et moi avons discuté des voyages. Même si voyager est bien recommandé pour se découvrir soi-même, il y a d'autres façons de le faire, donc il vaut mieux bien réfléchir. Pour le moment, je pense qu'il vaut mieux que j'aide ma fille à apprendre à apprécier ce qui est proche.
</p>

<p>
Ma fille a dit qu'elle a du cérumen, donc elle a utilisé de l'huile minérale pour le déloger. Ça a marché.
</p>

<p>
Après le dîner, j'ai fait les courses seule.
</p>
</div>
</div>
<div id="outline-container-entr-es-de-journal-la-semaine-du-25-au-31-mai-dimanche-31" class="outline-3">
<h3 id="entr-es-de-journal-la-semaine-du-25-au-31-mai-dimanche-31"><a href="https://sachachua.com/blog/feed/index.xml#entr-es-de-journal-la-semaine-du-25-au-31-mai-dimanche-31">dimanche 31</a></h3>
<div class="outline-text-3" id="text-entr-es-de-journal-la-semaine-du-25-au-31-mai-dimanche-31">
<p>
Mon mari était trop frustré aujourd'hui, donc mon mari et ma fille étaient tous les deux grincheux. Je me demande ce qui se passe.
</p>

<p>
Quand même, pendant qu'ils se débrouillaient, j'ai travaillé sur les transcriptions de mes entretiens récents. J'ai aussi poussé des mises à jour de mon outil pour écrire le sous-titrage. J'ai oublié de vérifier mes changements avec les tests, mais heureusement, il y avait juste un bug et le bug était dans le test au lieu du code. J'ai aussi restauré les articles que j'ai accidentellement effacés. Ensuite, j'ai recherché des machines à coudre pour ma sœur et mes nièces qui habitent aux Pays-Bas, parce que leur ancienne machine était abîmée.
</p>

<p>
Ma fille s'est très amusée en jouant comme la meneuse de jeu dans un jeu de Donjons et Dragons avec sa tante. Elle veut être la meneuse de jeu pour un jeu avec ses tantes et ses cousines la semaine prochaine, donc sa tante lui a offert l'occasion de s'entraîner.
</p>

<p>
J'ai appelé ma mère. Elle m'a dit que ma tante lui demandait à plusieurs reprises si nous lui rendrions un jour visite. Eh ben, ma tante ne nous aidera pas à élever notre enfant si je suis malade, donc son opinion ne compte pas pour moi.
</p>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/06/la-semaine-du-25-au-31-mai/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%2Fla-semaine-du-25-au-31-mai%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>La semaine du 18 au 24 mai</title>
		<link>https://sachachua.com/blog/2026/06/la-semaine-du-18-au-24-mai/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Tue, 02 Jun 2026 17:40:53 GMT</pubDate>
    <category>french</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/06/la-semaine-du-18-au-24-mai/</guid>
		<description><![CDATA[<div class="sticky-toc" id="org8c6d383">
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="https://sachachua.com/blog/feed/index.xml#org5995688">lundi 18</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#org5bd3fed">mardi 19</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#org6ca3635">mercredi 20</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#org32ab452">jeudi 21</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#org7f33001">vendredi 22</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#org19c8a18">samedi 23</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#entr-es-de-journal-la-semaine-du-18-au-24-mai-dimanche-24">dimanche 24</a></li>
</ul>
</div>

</div>
<div id="outline-container-org5995688" class="outline-3">
<h3 id="org5995688"><a href="https://sachachua.com/blog/feed/index.xml#org5995688">lundi 18</a></h3>
<div class="outline-text-3" id="text-org5995688">
<p>
Je me suis réveillée très tôt pour interroger ma sœur qui est très malade d'un cancer. Nous voulons enregistrer des vidéos pour ses jeunes filles et son mari. Sa fille aînée a commencé à l'interviewer, mais bien sûr, il y a des sujets dont elles ne peuvent peut-être pas parler pour le moment. Je l'ai appelée sur Facebook Messenger et j'ai utilisé OBS pour enregistrer l'appel. J'ai un flux de travail pour corriger et formater la transcription, et je suis ravie de l'utiliser pour ma famille.
</p>

<p>
Il faisait très chaud. C'était notre première vague de chaleur intense cette année. J'ai emmené ma fille au parc Amos Waites pour jouer à la pataugeoire là-bas. Elle a vraiment aimé la robe-maillot que nous avons cousue. Elle adorait tourner dans le siège pivotant que notre parc à proximité n'a pas. Elle a tellement joué qu'elle s'est endormie sur le chemin du retour.
</p>

<p>
Après le dîner, ma fille et moi sommes allées à un autre parc pour regarder des feux d'artifice pour la fête de la Reine. Il y avait beaucoup de gens, donc je pense que c'était un rassemblement habituel pour les jours de fête où les feux d'artifice sont autorisés.
</p>

<p>
J'ai terminé la révision de la transcription de ma conversation avec Prot et Philip. Je pense que l'audio de Philip est parfois trop faible, mais je ne suis pas sûre de pouvoir normaliser juste ces segments. Si j'ai une conversation avec un autre locuteur, je peux enregistrer les flux audio séparément, mais dans une conversation entre trois locuteurs (Prot, Philip et moi), je ne peux pas complètement les séparer. En plus, je pense que je ne peux pas remplacer juste l'audio d'une vidéo en diffusion sur YouTube. Peut-être que je peux mettre en ligne une nouvelle vidéo et changer l'ancienne vidéo en une vidéo non répertoriée.
</p>

<p>
À l'heure du coucher, ma fille et moi avons parlé de la neurodivergence, des mathématiques, et des facteurs humains comme les limitations de la boucle auditive comparée à la visualisation. J'adore lui parler de son cerveau.
</p>
</div>
</div>
<div id="outline-container-org5bd3fed" class="outline-3">
<h3 id="org5bd3fed"><a href="https://sachachua.com/blog/feed/index.xml#org5bd3fed">mardi 19</a></h3>
<div class="outline-text-3" id="text-org5bd3fed">
<p>
J'ai essayé de virer de l'argent aux Philippines via Wise. C'était réussi.
</p>

<p>
Je me suis entraînée aux virelangues. Oups, j'ai oublié de confirmer l'audio sur OBS, donc je ne peux pas l'analyser.
</p>

<p>
J'ai réécrit deux transcriptions pour les entretiens de ma sœur.
</p>

<p>
J'ai emmené ma fille au parc pour jouer avec ses amies. J'ai oublié les glaces à l'eau, donc je suis revenue à la maison pour les retrouver.
</p>

<p>
Nous avons pratiqué les permutations et la division posée.
</p>
</div>
</div>
<div id="outline-container-org6ca3635" class="outline-3">
<h3 id="org6ca3635"><a href="https://sachachua.com/blog/feed/index.xml#org6ca3635">mercredi 20</a></h3>
<div class="outline-text-3" id="text-org6ca3635">
<p>
J'ai réécrit encore des transcriptions pour les entretiens de mes nièces avec ma sœur. J'ai configuré un serveur dans notre réseau pour les héberger avec l'authentification basique.
</p>

<p>
L'école avait un remplaçant aujourd'hui. Il a accidentellement éjecté tous les élèves de la salle de réunion virtuelle et tous ont dû attendre que l'enseignant corrige les permissions.
</p>

<p>
J'ai ajouté un gousset aux shorts de bain de ma fille.
</p>

<p>
J'ai emmené ma fille et son amie au parc pour jouer. Elles se sont amusées à me donner des décharges avec l'électricité statique. Après que les autres amies de ma fille sont arrivées, ma fille semblait un peu surstimulée. Elle est partie seule et elle était grincheuse pour le reste de la journée, pauvre chérie.
</p>
</div>
</div>
<div id="outline-container-org32ab452" class="outline-3">
<h3 id="org32ab452"><a href="https://sachachua.com/blog/feed/index.xml#org32ab452">jeudi 21</a></h3>
<div class="outline-text-3" id="text-org32ab452">
<p>
J'ai discuté d'Emacs avec Raymond Zeitler sur une diffusion en direct. C'était la première fois que je lui parlais en vidéo même si nous correspondons depuis 18 ans via les commentaires sur mon blog.
</p>

<p>
Le dentiste a fait deux plombages. Il a proposé un plan de traitement, mais c'est cher, donc je veux bien y réfléchir avant de procéder. Je pense que je veux gagner en confiance avec ce dentiste d'abord. On dirait que la restauration précoce est mieux que d'attendre pour les dents cariées selon les recherches, donc c'est bon, mais on dirait aussi que d'autres dentistes recommandent d'autres niveaux de traitement. J'aime les précautions COVID que ce dentiste prend. Il y a d'autres dentistes (un peu loin) qui prennent aussi ce niveau de précautions, mais ils disent probablement la même recommandation (c'est la même recherche), donc je ne cherche pas particulièrement d'autre conseil. Je ne veux pas passer pour une vache à lait, tu sais?
</p>
</div>
</div>
<div id="outline-container-org7f33001" class="outline-3">
<h3 id="org7f33001"><a href="https://sachachua.com/blog/feed/index.xml#org7f33001">vendredi 22</a></h3>
<div class="outline-text-3" id="text-org7f33001">
<p>
Je me suis réveillée tôt pour une conversation sur la communauté Emacs et l'IA avec Matei Candea, un anthropologue. Il pense à faire une étude ethnographique, et je pense que c'est potentiellement intéressant.
</p>

<p>
J'ai terminé la transcription de ma conversation avec Raymond Zeitler sur Emacs. J'ai remarqué que j'utilisais le mauvais horodatage pour publier les chapitres à partir de la transcription, donc j'ai corrigé l'erreur.
</p>

<p>
Ma fille n'a pas voulu participer à l'école parce qu'il y a eu un remplaçant, donc elle a fait une pause.
</p>

<p>
J'étais fatiguée, donc j'ai fait une sieste.
</p>

<p>
J'ai emmené ma fille au cours de rattrapage de gymnastique. Elle a pris plaisir à apprendre la gymnastique aérienne. Après le cours, ma fille a voulu aller au parc asperge (St. James Park) parce qu'il y a un grand toboggan. Elle s'est entraînée à descendre le toboggan à de nombreuses reprises. Après avoir fait ça, nous avons acheté du sushi. Elle a essayé la tempura de crevettes et elle l'a aimée.
</p>
</div>
</div>
<div id="outline-container-org19c8a18" class="outline-3">
<h3 id="org19c8a18"><a href="https://sachachua.com/blog/feed/index.xml#org19c8a18">samedi 23</a></h3>
<div class="outline-text-3" id="text-org19c8a18">
<p>
Il a beaucoup plu et c'était très venteux, donc nous sommes restées à la maison au lieu d'aller à la célébration de printemps à la ferme Riverdale.
</p>

<p>
Ma fille et moi avons joué à Stardew Valley avec le mod <a href="https://www.nexusmods.com/stardewvalley/mods/41830">Tileman Reworked</a>, qui me demande d'acheter les tuiles auxquelles je veux accéder. J'aime parfois jouer à des jeux avec des limites comme <a href="https://skyblock.net/">Minecraft Skyblock</a> parce que les limites focalisent l'attention et la progression est très différente. Ma fille préfère notre jeu précédent avec le mod <a href="https://www.nexusmods.com/stardewvalley/mods/3753">Stardew Valley Expanded</a>.
</p>

<p>
Pour le dîner, nous avons mangé du sotanghon, qui est une soupe aux nouilles et au poulet. Nous avons aussi essayé le taiyaki congelé. C'était pratique et acceptable, mais bien sûr le taiyaki chez Pat Mart est meilleur.
</p>

<p>
À l'heure du coucher, ma fille et moi avons discuté de la neurodivergence, de la double exceptionnalité, de l'apprentissage des élèves doués, de la différence entre la récupération d'information et de la synthèse. Nous avons aussi discuté de la faune, des maladies, des vaccins, et d'autres sujets.
</p>
</div>
</div>
<div id="outline-container-entr-es-de-journal-la-semaine-du-18-au-24-mai-dimanche-24" class="outline-3">
<h3 id="entr-es-de-journal-la-semaine-du-18-au-24-mai-dimanche-24"><a href="https://sachachua.com/blog/feed/index.xml#entr-es-de-journal-la-semaine-du-18-au-24-mai-dimanche-24">dimanche 24</a></h3>
<div class="outline-text-3" id="text-entr-es-de-journal-la-semaine-du-18-au-24-mai-dimanche-24">
<p>
J'ai parlé avec mon mari du TDAH. Il pense que je suis juste préoccupée, et ce n'est pas grave. C'est bon. Je ne veux pas laisser ma vie être perturbée au point d'avoir des problèmes dans deux zones ou plus dans ma vie pour obtenir possiblement un diagnostic, ce qui ne m'aiderait probablement pas beaucoup plus. Quand même, je peux continuer d'explorer comment je peux m'adapter à mon cerveau et ma situation.
</p>

<p>
Ma fille et moi avons préparé du lait au sucre brun et aux perles boba faites à la main.
</p>

<p>
Mon mari, ma fille et moi sommes allés aux Stockyards pour faire des courses. Nous avons acheté une boîte de mangues, des perles boba, des haricots azuki, et d'autres aliments. Nous avons préparé une fournée de mochis aux haricots azuki.
</p>

<p>
J'ai recherché quelques dessins pour les transcriptions. Je pense que je veux inclure les noms des interlocuteurs dans la marge gauche et les horodatages dans la marge droite. Je veux aussi réécrire la transcription pour supprimer les mots de remplissage.
</p>

<p>
Pour le dîner, nous avons mangé du curry japonais.
</p>

<p>
Je me suis couchée tard parce que sur Stardew, j'ai finalement accédé à la caisse chez Pierre pour acheter des graines dans la troisième année. La progression est très lente. Heureusement, le mod <a href="https://www.nexusmods.com/stardewvalley/mods/32354">HibernationRedux</a> me permet de sauter le temps pendant que j'attendais la croissance des arbres.
</p>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/06/la-semaine-du-18-au-24-mai/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%2Fla-semaine-du-18-au-24-mai%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item>
	</channel>
</rss>