<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/assets/atom.xsl" type="text/xsl"?><feed
	xmlns="http://www.w3.org/2005/Atom"
	xmlns:thr="http://purl.org/syndication/thread/1.0"
	xml:lang="en-US"
	><title>Sacha Chua</title>
	<subtitle>Emacs, sketches, and life</subtitle>
	<link rel="self" type="application/atom+xml" href="https://sachachua.com/blog/feed/atom/index.xml" />
  <link rel="alternate" type="text/html" href="https://sachachua.comundefined" />
  <id>https://sachachua.com/blog/feed/atom/index.xml</id>
  <generator uri="https://11ty.dev">11ty</generator>
	<updated>2026-06-15T13:54:28Z</updated>
<entry>
		<title type="html">2026-06-15 Emacs news</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/06/2026-06-15-emacs-news/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-06-15T13:54:28Z</updated>
    <published>2026-06-15T13:54:28Z</published>
    <category term="emacs" />
<category term="emacs-news" />
		<id>https://sachachua.com/blog/2026/06/2026-06-15-emacs-news/</id>
		<content type="html"><![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>]]></content>
		</entry><entry>
		<title type="html">La semaine du 1 au 7 juin</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/06/la-semaine-du-1-au-7-juin/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-06-10T15:05:24Z</updated>
    <published>2026-06-10T15:05:24Z</published>
    <category term="french" />
		<id>https://sachachua.com/blog/2026/06/la-semaine-du-1-au-7-juin/</id>
		<content type="html"><![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/atom/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/atom/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/atom/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/atom/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/atom/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/atom/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>]]></content>
		</entry><entry>
		<title type="html">From DC Toedt: Copy Org Mode as Markdown</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/06/from-dc-toedt-copy-org-mode-as-markdown/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-06-10T17:25:51Z</updated>
    <published>2026-06-09T15:49:08Z</published>
    <category term="emacs" />
<category term="org" />
		<id>https://sachachua.com/blog/2026/06/from-dc-toedt-copy-org-mode-as-markdown/</id>
		<content type="html"><![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>]]></content>
		</entry><entry>
		<title type="html">Yay Emacs 33: Sacha and Prot Talk Emacs: Built-ins</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/06/june-11-sacha-and-prot-talk-emacs-built-ins/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-06-15T18:48:51Z</updated>
    <published>2026-06-09T02:51:39Z</published>
    <category term="emacs" />
<category term="yay-emacs" />
		<id>https://sachachua.com/blog/2026/06/june-11-sacha-and-prot-talk-emacs-built-ins/</id>
		<content type="html"><![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/atom/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/atom/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/atom/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/atom/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>]]></content>
		</entry><entry>
		<title type="html">2026-06-08 Emacs news</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/06/2026-06-08-emacs-news/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-06-08T18:36:11Z</updated>
    <published>2026-06-08T18:36:11Z</published>
    <category term="emacs" />
<category term="emacs-news" />
		<id>https://sachachua.com/blog/2026/06/2026-06-08-emacs-news/</id>
		<content type="html"><![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>]]></content>
		</entry><entry>
		<title type="html">June 18: Emacs Chat with Ross A. Baker</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-06-07T18:28:45Z</updated>
    <published>2026-06-07T18:28:45Z</published>
    <category term="emacs" />
<category term="emacs-chat-podcast" />
<category term="emacs-chat" />
		<id>https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/</id>
		<content type="html"><![CDATA[<p>
On June 18, I'll chat with <a href="https://rossabaker.com/">Ross Baker</a> about Emacs and life.
</p>

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

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

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

<p>
This session will be recorded, and I'll update this blog post with notes.
<a href="https://sachachua.com/blog/2026/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><a href="https://sachachua.com/blog/2026/06/emacs-chat-with-ross-a-baker/index.org">View Org source for this post</a></div><p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F06%2Femacs-chat-with-ross-a-baker%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></content>
		</entry><entry>
		<title type="html">Emacs PDF View: Replace current page with file using PDFtk</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/06/emacs-pdf-view-replace-current-page-with-file-using-pdftk/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-06-07T00:35:27Z</updated>
    <published>2026-06-07T00:35:27Z</published>
    <category term="emacs" />
		<id>https://sachachua.com/blog/2026/06/emacs-pdf-view-replace-current-page-with-file-using-pdftk/</id>
		<content type="html"><![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>]]></content>
		</entry><entry>
		<title type="html">Emacs Chat 25: Ben Zanin (@gnomon@mastodon.social)</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-06-10T17:03:47Z</updated>
    <published>2026-06-04T12:50:07Z</published>
    <category term="emacs" />
<category term="emacs-chat" />
<category term="emacs-chat-podcast" />
		<id>https://sachachua.com/blog/2026/06/june-4-emacs-chat-with-ben-zanin-gnomon-mastodon-social/</id>
		<content type="html"><![CDATA[<div class="update" id="org936ce5a">
<p>
<span class="timestamp-wrapper"><time class="timestamp" datetime="2026-06-10">[2026-06-10 Wed]</time></span>: Updated the transcript
</p>

</div>

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

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

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

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

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

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

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

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

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


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