<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="/assets/rss.xsl" type="text/xsl"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0">
<channel>
	<title>Sacha Chua</title>
	<atom:link href="https://sachachua.com/blog/feed/index.xml" rel="self" type="application/rss+xml"/>
	<atom:link href="https://sachachua.com" rel="alternate" type="text/html"/>
	<link>https://sachachua.com/blog/feed/index.xml</link>
	<description>Emacs, sketches, and life</description>
  
	<lastBuildDate>Mon, 18 May 2026 17:59:27 GMT</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>daily</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>11ty</generator>
  <item>
		<title>2026-05-18 Emacs news</title>
		<link>https://sachachua.com/blog/2026/05/2026-05-18-emacs-news/</link>
		
		<pubDate>Mon, 18 May 2026 17:59:27 GMT</pubDate>
    <category>emacs</category>
<category>emacs-news</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/05/2026-05-18-emacs-news/</guid>
		<description><![CDATA[<p>
My favourite post this week was <a href="https://www.matem.unam.mx/~omar/apropos-emacs.html#may-i-recommend-eww-for-emacs-innovative-ui">oantolin's tip about using Eww</a>. It's always interesting to see what people can do when they apply Emacs's power and composability to all sorts of things, including evaluating code snippets from webpages. Outside Emacs, there was a lively conversation on HN about <a href="https://news.ycombinator.com/item?id=48118727">personal software</a>. Enjoy!
</p>

<ul class="org-ul">
<li>Upcoming events (<a href="https://emacslife.com/calendar/emacs-calendar.ics">iCal file</a>, <a href="https://emacslife.com/calendar/">Org</a>):
<ul class="org-ul">
<li>M-x Research: TBA <a href="https://m-x-research.github.io/">https://m-x-research.github.io/</a> Wed May 20 0800 America/Vancouver - 1000 America/Chicago - 1100 America/Toronto - 1500 Etc/GMT - 1700 Europe/Berlin - 2030 Asia/Kolkata - 2300 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 May 23 0130 America/Vancouver - 0330 America/Chicago - 0430 America/Toronto - 0830 Etc/GMT - 1030 Europe/Berlin - 1400 Asia/Kolkata - 1630 Asia/Singapore</li>
<li>Emacs Berlin: Emacs-Berlin Hybrid Meetup <a href="https://emacs-berlin.org/">https://emacs-berlin.org/</a> Wed May 27 1000 America/Vancouver - 1200 America/Chicago - 1300 America/Toronto - 1700 Etc/GMT - 1900 Europe/Berlin - 2230 Asia/Kolkata &ndash; Thu May 28 0100 Asia/Singapore</li>
<li>Emacs.si (in person): Emacs.si meetup #6 2026 (v #živo) <a href="https://dogodki.kompot.si/events/67d716c3-6c04-4530-9c1a-f67aa44d31bc">https://dogodki.kompot.si/events/67d716c3-6c04-4530-9c1a-f67aa44d31bc</a> Mon Jun 1 1900 CET</li>
</ul></li>
<li>Upcoming events:
<ul class="org-ul">
<li><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/">Sacha Chua: May 29: Emacs Chat with Omar Antolin Camarena</a></li>
</ul></li>
<li>Emacs configuration:
<ul class="org-ul">
<li><a href="https://github.com/scovl/dotfiles/tree/main/emacs/windows/.emacs.d">dotfiles/emacs/windows/.emacs.d at main · scovl/dotfiles · GitHub</a> (<a href="https://hachyderm.io/@lobocode/116590308876801051">@lobocode@hachyderm.io</a>)</li>
<li><a href="https://mstempl.netlify.app/post/may-i-recommend/">May I recommend… to only add items to your init files you understand and document | Martin's Blog</a></li>
<li><a href="https://www.acdw.net/carnival-emacs-2026-05/">May I recommend declaring bankruptcy from time to time | acdw.net</a></li>
</ul></li>
<li>Emacs Lisp:
<ul class="org-ul">
<li><a href="http://yummymelon.com/devnull/enhancing-elisp-development-with-context-menus.html">Charles Choi: Enhancing Elisp Development with Context Menus</a> (<a href="https://www.reddit.com/r/emacs/comments/1tabrsx/enhancing_elisp_development_with_context_menus/">Reddit</a>, <a href="https://irreal.org/blog/?p=13803">Irreal</a>)</li>
<li><a href="https://kelar.org/~bandali/gnu/emacs/ffs-emacs-ext-prot.html">Amin Bandali: FFS code review and Emacs extensibility with Protesilaos</a> (<a href="https://protesilaos.com/codelog/2026-05-15-emacs-amin-bandali-ffs-display-buffer-org-capture/">Prot</a>)</li>
<li><a href="https://kickingvegas.github.io/elisp-for-python/">Elisp Cheatsheet for Python Programmers - updated</a> (<a href="https://sfba.social/@kickingvegas/116593354164532781">@kickingvegas@sfba.social</a>)</li>
</ul></li>
<li>Appearance:
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=E56_SNoe-oM">How to automatically scale emacs to a larger font on startup (on Raspberry Pi)</a> (22:22)</li>
</ul></li>
<li>Navigation:
<ul class="org-ul">
<li><a href="https://github.com/redguardtoo/fastctags">fastctags 0.0.1 — Blazing-fast code nav &amp; completion with Universal Ctags</a> (<a href="https://www.reddit.com/r/emacs/comments/1texyko/fastctags_001_blazingfast_code_nav_completion/">Reddit</a>)</li>
<li><a href="https://git.sr.ht/~zelda/purr.el">purr.el - a lightweight project dashboard for emacs.</a> (<a href="https://www.reddit.com/r/emacs/comments/1tens61/purrel_a_lightweight_project_dashboard_for_emacs/">Reddit</a>)</li>
</ul></li>
<li>Writing:
<ul class="org-ul">
<li><a href="https://github.com/hesampakdaman/typst-overlay">hesampakdaman/typst-overlay · GitHub</a></li>
</ul></li>
<li>Org Mode:
<ul class="org-ul">
<li><a href="https://list.orgmode.org/CAO48Bk-hzrwXe4jOZYnhv5B12AvdTJ39E8fdAkTQRgBGuq3J9A@mail.gmail.com">Org Mode requests: [RFC] LaTeX survey</a></li>
<li><a href="https://list.orgmode.org/24b44cbc-ca83-4f2b-b9cf-e23455844e43@gmail.com">Org Mode requests: [RFC] Round priorities in iCalendar export</a></li>
<li><a href="https://list.orgmode.org/87wlx3hmwl.fsf@gmail.com">Org Mode requests: [RFC] org-colview: Where should a new COLUMNS keyword be inserted?</a></li>
<li><a href="https://jan-iversen.de/posts/rezeptsammlung-mit-emacs/">Rezeptsammlung mit Emacs | Jan Iversen</a> (<a href="https://nerdculture.de/@razorback/116591073029581859">@razorback@nerdculture.de</a>)</li>
<li><a href="https://www.reddit.com/gallery/1tgckvz">Navi – Obsidian-style org-roam graph viewer &ndash; native window &ndash; reads your DB directly</a></li>
<li><a href="https://blog.amypillow.net/emacs/NEWS/org-yaap-1.1.0.html">Amy Pillow: Added notification actions in Org yaap</a> - yet another alert package</li>
<li><a href="https://apps.apple.com/app/org-social/id6764415116">Org Social for iOS: A decentralized microblog where your whole timeline lives in a plain-text Org Mode file you host yourself</a></li>
<li><a href="https://toobnix.org/w/2Z7id1MZQ6C2GTo4XjvuX1">#orgmode #emacs w/ its developer Ihor Radchenko, also screwlisp and JLamothe #lispyGopherClimate - toobnix</a> (<a href="https://toobnix.org/w/2Z7id1MZQ6C2GTo4XjvuX1">@screwtape@toobnix.org</a>)</li>
<li>Import, export, and integration:
<ul class="org-ul">
<li><a href="https://jan-iversen.de/posts/blogging-mit-emacs-howto/">Blogging mit Emacs - Howto | Jan Iversen</a> (<a href="https://nerdculture.de/@razorback/116571699031306970">@razorback@nerdculture.de</a>)</li>
<li><a href="https://github.com/harshadjs/orgfs">orgfs – A FUSE filesystem for org files</a> (<a href="https://www.reddit.com/r/emacs/comments/1tcx0w2/orgfs_a_fuse_filesystem_for_org_files/">r/emacs</a>, <a href="https://www.reddit.com/r/orgmode/comments/1tcuqdj/orgfs_a_fuse_filesystem_for_org_files/">r/orgmode</a>)</li>
<li><a href="https://github.com/Martinsos/blog-in-emacs-lisp">[ANN] Starter template for your own blog in Emacs Lisp</a> (<a href="https://www.reddit.com/r/emacs/comments/1tayj3x/ann_starter_template_for_your_own_blog_in_emacs/">Reddit</a>)</li>
<li><a href="https://www.reddit.com/r/orgmode/comments/1tepxoh/oxhtmlfileembedding_030_embed_scrollable_csvs/">ox-html-file-embedding 0.3.0, embed scrollable CSVs with PapaParse/Tabulator, postprocess with monolith</a></li>
</ul></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=7c3c4cecc71536224aad8bb9099ecda1683c6567">org-agenda-clock-goto: Jump to closest entry and respect filtering</a></li>
<li>Feature requests:
<ul class="org-ul">
<li><a href="https://list.orgmode.org/87zf267i1c.fsf@gmail.com">Org Mode requests: [FR] ox-md: Export custom-id search strings (::#) as anchors</a></li>
<li><a href="https://list.orgmode.org/877bp92lr4.fsf@gmail.com">Org Mode requests: [FR] ox-md: Verbatim link export</a></li>
<li><a href="https://list.orgmode.org/87pl2z28bf.fsf@gmail.com">Org Mode requests: [FR] Re: [FR] Tracking numerical habits</a></li>
<li><a href="https://list.orgmode.org/87qznaw4sa.fsf@gmail.com">Org Mode requests: [FR] Tracking Habits with Alternate Calendar</a></li>
</ul></li>
</ul></li>
</ul></li>
<li>Coding:
<ul class="org-ul">
<li><a href="https://blog.davep.org/2026/05/13/stopping-an-accidental-push.html">Dave Pearson: Stopping an accidental push</a></li>
<li><a href="https://emacs.dyerdwelling.family/emacs/20260518114325-emacs&#45;&#45;vc-mode-meets-magit-or-why-i-finally-gave-in/">James Dyer: VC-Mode Meets Magit - or Why I Finally Gave In!</a></li>
<li><a href="https://utcc.utoronto.ca/~cks/space/blog/programming/EmacsLspModeToEglot">Moving from lsp-mode in GNU Emacs to Eglot</a> (<a href="https://lobste.rs/s/bojb9a/moving_from_lsp_mode_gnu_emacs_eglot">lobste.rs</a>)</li>
<li><a href="https://github.com/aardsoft/lempo/">aardsoft/lempo: Emacs protocol analysis framework · GitHub</a></li>
<li><a href="https://davemq.github.io/2026/05/12/remote-linux-dev-with-emacs.html">Dave's blog: Remote Linux kernel development with Emacs</a></li>
<li><a href="https://batsov.com/articles/2026/05/12/port-a-minimalist-prepl-client-for-emacs/">Bozhidar Batsov: Port: a minimalist prepl client for Emacs</a></li>
</ul></li>
<li>Web:
<ul class="org-ul">
<li><a href="https://www.matem.unam.mx/~omar/apropos-emacs.html#may-i-recommend-eww-for-emacs-innovative-ui">May I recommend eww for Emacs's innovative UI?</a> (<a href="https://www.reddit.com/r/emacs/comments/1tf86ko/may_i_recommend_eww_for_emacss_innovative_ui/">Reddit</a>, <a href="https://irreal.org/blog/?p=13813">Irreal</a>, <a href="https://lobste.rs/s/96kz5p/may_i_recommend_eww_for_emacs_s_innovative">lobste.rs</a>)</li>
</ul></li>
<li>Mail, news, and chat:
<ul class="org-ul">
<li><a href="https://codeberg.org/jamesendreshowell/gists/src/branch/master/jeh-message-lint.el">Check for missing body, subject, or attachments before sending</a> (<a href="https://fediscience.org/@jameshowell/116574634102342131">@jameshowell@fediscience.org</a>)</li>
<li><a href="https://elpa.gnu.org/packages/minimail.html">Minimail version 0.5, with OAuth and more</a> (<a href="https://www.reddit.com/r/emacs/comments/1tcreh4/minimail_version_05_with_oauth_and_more/">Reddit</a>)</li>
<li><a href="https://github.com/emacs-elfeed/elfeed/discussions/586">Elfeed release &amp; Elfeed sqlite database · emacs-elfeed/elfeed · Discussion #586 · GitHub</a> (<a href="https://mastodon.world/@minad/116565758400216391">@minad@mastodon.world</a>)</li>
</ul></li>
<li>AI:
<ul class="org-ul">
<li><a href="https://github.com/jcubic/dotfiles/blob/master/emacs/config/ai.el">Agent-Shell permission system</a> (<a href="https://www.reddit.com/r/emacs/comments/1tdvd8r/agentshell_permission_system/">Reddit</a>)</li>
</ul></li>
<li>Community:
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=mJZDmO5yOxE">What's So Special About Emacs? - YouTube</a></li>
<li><a href="https://www.chiply.dev/post-emacs-carnival-may">May I recommend&hellip; understanding Emacs's patterns</a> (<a href="https://www.reddit.com/r/emacs/comments/1tc6c9h/may_i_recommend_understanding_emacss_patterns/">Reddit</a>, <a href="https://irreal.org/blog/?p=13811">Irreal</a>, <a href="https://news.ycombinator.com/item?id=48137656">HN</a>)</li>
<li><a href="https://curtismchale.ca/2026/05/05/emacs-carnival-may-i-recommend">Emacs Carnival: May I recommend&hellip; stop messing around and get work done</a> by Curtis McHale</li>
<li><a href="https://thanosapollo.org/posts/bzr-saga/">The Most Emacs Bzr Saga</a> (<a href="https://www.reddit.com/r/emacs/comments/1tbh6pg/the_most_emacs_bzr_saga/">Reddit</a>, <a href="https://lobste.rs/s/jgmrz0/most_emacs_bzr_saga">lobste.rs</a>, <a href="https://irreal.org/blog/?p=13807">Irreal</a>)</li>
<li><a href="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/">Sacha Chua: YE29: Sacha, Prot, and Philip Kaludercic Talk Emacs: Newcomer Experience</a> (<a href="https://www.youtube.com/watch?v=UqfZZRl_eNw">YouTube</a> 01:24:16)</li>
<li><a href="https://sockpuppet.org/blog/2026/05/12/emacsification/">The Emacsification of Software — Quarrelsome</a> (<a href="https://news.ycombinator.com/item?id=48118727">HN</a>)</li>
</ul></li>
<li>Other:
<ul class="org-ul">
<li><a href="http://yummymelon.com/devnull/using-the-mouse-for-emacs-rectangle-commands.html">Charles Choi: Using the Mouse for Emacs Rectangle Commands</a></li>
<li><a href="https://www.youtube.com/watch?v=5OAOK3qoSgg">Exam minimal Emacs, 42KL, try not to buy Armageddon Psychsparrow, what am I doing.</a> (22:43, <a href="https://www.reddit.com/r/emacs/comments/1tbmz9g/minimal_emacs_for_exam_i_dont_know_what_im_doing/">Reddit</a>)</li>
<li><a href="https://fosstodon.org/@zrzz/116592767967624254">Some functions to make it easier to check for unexpected Unicode shenanigans (@zrzz@fosstodon.org)</a></li>
<li><a href="https://github.com/hexmode/mediawiki-el">hexmode/mediawiki-el: Emacs interface to edit any mediawiki site · GitHub</a> (<a href="https://genserver.social/objects/f5bf240f-7372-4b14-a9fe-9e35fe33f862">@katafrakt@genserver.social</a>) - recently updated</li>
<li><a href="https://emacs.dyerdwelling.family/emacs/20260512184707-emacs&#45;&#45;a-tiny-nohup-keeping-media-alive-when-emacs-exits/">James Dyer: A Tiny Nohup: Keeping Media Alive When Emacs Exits</a></li>
<li><a href="https://codeberg.org/r2r0/legion.el">r2r0/legion.el: Emacs mode for the Zammad help desk software - Codeberg.org</a> (<a href="https://chaos.social/@r2r0/116573900868904042">@r2r0@chaos.social</a>) - vibecoded</li>
<li><a href="https://thecloudlet.github.io/technical/project/emacs-04/">Emacs Internal Part 04: Balancing Lisp_String Interval Trees by Text Length</a> (<a href="https://www.reddit.com/r/emacs/comments/1tcxw25/emacs_internal_part_04_balancing_lisp_string/">Reddit</a>)</li>
<li><a href="https://www.jamescherti.com/compiling-emacs/">Compiling Emacs for High Performance on Linux and Unix Systems</a> (<a href="https://www.reddit.com/r/emacs/comments/1ta1uqq/compiling_emacs_for_high_performance_on_linux_and/">Reddit</a>)</li>
<li><a href="https://mastodon.social/@jamescherti/116570649138796225">Tip for improving keyboard input latency by setting GTK_IM_MODULE=none (Linux, standard ASCII) (@jamescherti)</a></li>
</ul></li>
<li>Emacs development:
<ul class="org-ul">
<li>emacs-devel: <a href="https://yhetil.org/emacs-devel/865x52awb4.fsf@gnu.org/">Challenges of opaque objects</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=e381cf1fc97fc1c0bab1816476dd6f73a628b238">Allow child processes to continue after EPIPE</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=b13450973abb19b2bf0d7a96516ce23c385e7713">Copy changes from tarballs when installing VC packages</a></li>
</ul></li>
<li>New packages:
<ul class="org-ul">
<li><a target="_blank" href="https://melpa.org/#/rare-words">rare-words</a>: Highlight your rare words! (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-05">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/05/2026-05-18-emacs-news/index.org">View Org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F05%2F2026-05-18-emacs-news%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		<dc:creator>Sacha Chua</dc:creator><enclosure length="239615" type="application/octet-stream" url="https://emacslife.com/calendar/emacs-calendar.ics"/></item><item>
		<title>May 29: Emacs Chat with Omar Antolin Camarena</title>
		<link>https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/</link>
		
		<pubDate>Sun, 17 May 2026 22:02:50 GMT</pubDate>
    <category>emacs</category>
<category>emacs-chat-podcast</category>
<category>emacs-chat</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/</guid>
		<description><![CDATA[<p>
On May 29, I'll chat with Omar Antolin Camarena 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/M7-dJb2GTN4?enablejsapi=1" frameborder="0" allowfullscreen=""></iframe><a href="https://youtube.com/live/M7-dJb2GTN4">Watch on YouTube</a></div>
<p></p>

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

<p>
Related links:
</p>

<ul class="org-ul">
<li><a href="https://www.matem.unam.mx/~omar/">Omar Antolín Camarena</a>: a researcher at Instituto de Matemáticas, UNAM in Mexico City</li>
<li><a href="https://www.matem.unam.mx/~omar/apropos-emacs.html">M-x apropos Emacs</a></li>
<li><a href="https://github.com/oantolin/emacs-config">oantolin/emacs-config: My personal Emacs configuration · GitHub</a></li>
<li><a href="https://github.com/oantolin">oantolin (Omar Antolín Camarena) · GitHub</a></li>
<li><a href="https://mathstodon.xyz/@oantolin">Omar Antolín (@oantolin@mathstodon.xyz) - Mathstodon</a></li>
<li><a href="https://www.reddit.com/user/oantolin/">u/oantolin on Reddit</a></li>
</ul>

<p>
This session will be recorded, and I'll update this blog post with notes:
<a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/">https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/</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/05/may-29-emacs-chat-with-omar-antolin-camarena/index.org">View Org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F05%2Fmay-29-emacs-chat-with-omar-antolin-camarena%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		<dc:creator>Sacha Chua</dc:creator><enclosure length="1665" type="application/octet-stream" url="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/index.org"/></item><item>
		<title>YE29: Sacha, Prot, and Philip Kaludercic Talk Emacs: Newcomer Experience</title>
		<link>https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/</link>
		
		<pubDate>Sun, 17 May 2026 13:21:07 GMT</pubDate>
    <category>emacs</category>
<category>community</category>
<category>yay-emacs</category>
<category>stream</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/</guid>
		<description><![CDATA[<div class="update" id="org70cb35f">
<p>
<span class="timestamp-wrapper"><time class="timestamp" datetime="2026-05-18">[2026-05-18 Mon]</time></span>: Updated transcript
</p>

</div>

<p>
<a href="https://social.sdfeu.org/@pkal/116500474344904460">Philip Kaludercic</a> wanted to continue the conversation from <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>. He's spent a lot of time thinking about this as one of the main contributors to newcomers-presets.
We talked about newcomers-presets, the idea of a "reset theme" that lets experienced users pin defaults to a specific version of Emacs, upcoming changes, and working with emacs-devel.
<video controls="1" src="https://archive.org/download/ye29-prot-and-pkal-emacs-newcomer-experience/ye29-prot-and-pkal-emacs-newcomer-experience.mp4" type="video/mp4"></video>
</p>

<p>
<a href="https://archive.org/details/ye29-prot-and-pkal-emacs-newcomer-experience">View in the Internet Archive</a>, <a href="https://youtube.com/live/UqfZZRl_eNw">watch or comment on YouTube</a>, <a href="https://sachachua.com/blog/feed/index.xml#ID-ye29-transcript">read the transcript online</a>, <a href="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/ye29-prot-and-pkal-emacs-newcomer-experience.vtt">download the transcript</a>, or <a href="mailto:sacha@sachachua.com">e-mail me</a>.
</p>

<style>
span[data-speaker="Sacha"] .speaker-name { color: var(&#45;&#45;modus-rainbow-1); }
span[data-speaker="Prot"] .speaker-name { color: var(&#45;&#45;modus-rainbow-2); }
span[data-speaker="Philip"] .speaker-name { color: var(&#45;&#45;modus-rainbow-4); }
</style>
<div class="sticky-toc" id="orgd0b0d7c">
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="https://sachachua.com/blog/feed/index.xml#may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-related-links">Related links</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#ye29-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-chapters">Chapters</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#ye29-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-transcript">Transcript</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#ye29-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-chat">Chat</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-some-types-of-new-users-to-think-about">Some types of new users to think about</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-part-of-a-learning-journey">Sketching out their learning journey</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-other-notes">Other notes</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-some-screenshots-of-a-fresh-emacs">Some screenshots of a fresh Emacs</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-trying-pkal-s-emacs-configuration-generator">Trying pkal's Emacs Configuration Generator</a></li>
</ul>
</div>

</div>
<div id="outline-container-may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-related-links" class="outline-3">
<h3 id="may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-related-links"><a href="https://sachachua.com/blog/feed/index.xml#may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-related-links">Related links</a></h3>
<div class="outline-text-3" id="text-may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-related-links">
<ul class="org-ul">
<li><a href="https://yhetil.org/emacs-devel/87wm0f2rng.fsf@posteo.net/">A proposal for a "beginners" (user-option) theme - Philip Kaludercic</a></li>
<li><a href="https://yhetil.org/emacs-devel/87tsuucbkh.fsf@posteo.net/">Re: some file-related options to consider for newcomers-presets - Philip Kaludercic</a></li>
<li><a href="https://yhetil.org/emacs-devel/CABPi7cHxEoMKwvDkuXGZXaHDpUuqS6ry60JOcdSZbSuYB47LSg@mail.gmail.com/">A newcomer's feedback on newcomer presets - Abdulnafe Toulaimat</a></li>
<li><a href="https://codeberg.org/pkal/ecg/src/branch/master/ecg.lisp">Emacs Configuration Generator</a> - old source code</li>
</ul>
</div>
</div>
<div id="outline-container-ye29-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-chapters" class="outline-3">
<h3 id="ye29-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-chapters"><a href="https://sachachua.com/blog/feed/index.xml#ye29-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-chapters">Chapters</a></h3>
<div class="outline-text-3" id="text-ye29-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-chapters">
<p>
</p><ul class="org-ul">
<li><span class="media-time" data-start="1.000">0:01</span> Opening</li>
<li><span class="media-time" data-start="181.000">3:01</span> newcomers-presets user option theme; would be nice to explain what the changes are</li>
<li><span class="media-time" data-start="303.000">5:03</span> finding a balance between "it's fine the way it is" and "just use Doom Emacs"</li>
<li><span class="media-time" data-start="399.000">6:39</span> people value stability, but also conventions have shifted.</li>
<li><span class="media-time" data-start="413.000">6:53</span> ways Emacs does things differently: ex: terminal vs eshell, output is editable; new users want to edit the previous prompt; sometimes goes against people's intuitions</li>
<li><span class="media-time" data-start="563.000">9:23</span> How do people develop Emacs intuition? Immersion</li>
<li><span class="media-time" data-start="598.000">9:58</span> example: dabbrev, there's no undo? Ah, it's just the regular undo.</li>
<li><span class="media-time" data-start="663.000">11:03</span> newcomers presets: smooth over the intuition-disrupting things that are not actually necessary/beneficial; ex: enable which-key</li>
<li><span class="media-time" data-start="875.000">14:35</span> newcomers-presets choice is not saved at the moment</li>
<li><span class="media-time" data-start="1029.000">17:09</span> newcomers without much computing experience might even find it easier (no C-c expectations, C-v etc)</li>
<li><span class="media-time" data-start="1112.000">18:32</span> Focus group?</li>
<li><span class="media-time" data-start="1338.000">22:18</span> Emacs survey before</li>
<li><span class="media-time" data-start="1370.000">22:50</span> people's backgrounds influence their responses</li>
<li><span class="media-time" data-start="1429.000">23:49</span> Hypothetical: Reset themes, to reset things back to the defaults of a specific Emacs version</li>
<li><span class="media-time" data-start="1462.000">24:22</span> package-autosuggest-mode suggests based on file extension</li>
<li><span class="media-time" data-start="1678.000">27:58</span> Emacs 32: bundled versions of Emacs (Big Emacs - distributions that include more packages)</li>
<li><span class="media-time" data-start="1798.000">29:58</span> Selection versus multiple completion</li>
<li><span class="media-time" data-start="2081.000">34:41</span> Manuals</li>
<li><span class="media-time" data-start="2111.000">35:11</span> More examples?</li>
<li><span class="media-time" data-start="2184.000">36:24</span> find-user-init-file?</li>
<li><span class="media-time" data-start="2320.000">38:40</span> Getting over the reverence for Emacs's history</li>
<li><span class="media-time" data-start="2413.000">40:13</span> Changes are more likely to happen when someone puts in the work to make a patch</li>
<li><span class="media-time" data-start="2646.000">44:06</span> Preserving Git history of packages absorbed into the core</li>
<li><span class="media-time" data-start="2762.000">46:02</span> Dealing with multiple types of Emacs</li>
<li><span class="media-time" data-start="2891.000">48:11</span> Fat Emacs is just about bundling more packages from ELPA, not changing the configuration for them</li>
<li><span class="media-time" data-start="3084.000">51:24</span> Customize</li>
<li><span class="media-time" data-start="3284.000">54:44</span> CUA - Common User Access</li>
<li><span class="media-time" data-start="3304.000">55:04</span> ini file format? <a href="https://sdf.org/~pkal//blog/emacs/ini-init.html">https://sdf.org/~pkal//blog/emacs/ini-init.html</a></li>
<li><span class="media-time" data-start="3313.000">55:13</span> Emacs configuration generator</li>

<li><span class="media-time" data-start="3356.000">55:56</span> INI-style configuration</li>
<li><span class="media-time" data-start="3625.000">1:00:25</span> Quick summary</li>
<li><span class="media-time" data-start="3749.000">1:02:29</span> Continuing with INI</li>
<li><span class="media-time" data-start="3885.000">1:04:45</span> Motivation</li>
<li><span class="media-time" data-start="4014.000">1:06:54</span> Politics and philosophy</li>
<li><span class="media-time" data-start="4166.000">1:09:26</span> Experimenting with things outside core</li>
<li><span class="media-time" data-start="4245.000">1:10:45</span> Extending the core</li>
<li><span class="media-time" data-start="4315.000">1:11:55</span> Guide to contributing to ELPA</li>

<li><span class="media-time" data-start="4393.000">1:13:13</span> Making the newcomer experience better</li>
<li><span class="media-time" data-start="4473.000">1:14:33</span> "user option themes" versus "appearance themes"</li>
<li><span class="media-time" data-start="4527.000">1:15:27</span> find-library</li>
<li><span class="media-time" data-start="4614.000">1:16:54</span> configuration generator in Emacs? maybe more wizards?</li>
<li><span class="media-time" data-start="4624.000">1:17:04</span> Starter kits</li>
<li><span class="media-time" data-start="4662.000">1:17:42</span> Configuration generator in Emacs Lisp?</li>
<li><span class="media-time" data-start="4722.000">1:18:42</span> extending the archive format</li>
<li><span class="media-time" data-start="4858.000">1:20:58</span> User interfaces</li>
</ul>

<p></p>
</div>
</div>
<div id="outline-container-ye29-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-transcript" class="outline-3">
<h3 id="ye29-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-transcript"><a href="https://sachachua.com/blog/feed/index.xml#ye29-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-transcript">Transcript</a></h3>
<div class="outline-text-3" id="text-ye29-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-transcript">
<details class="code-details"><a name="ID-ye29-transcript"></a><div>
                  <summary>Expand this to read the transcript</summary>
<p>
</p><div class="full-transcript"><p></p><div class="transcript-heading"><span class="audio-time" data-start="0.000000">0:00</span> <strong>Opening</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="0.487000" data-stop="1.608000"><strong class="speaker-name">Sacha:</strong> I'm going to start recording.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1.628000" data-stop="2.369000">I'm going to do the thing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2.409000" data-stop="3.030000">I'll let you know.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3.150000" data-stop="3.370000">Okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3.570000" data-stop="4.792000">Let's do this.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4.832000" data-stop="4.952000">Yeah.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4.972000" data-stop="6.494000"><strong class="speaker-name">Prot:</strong> Yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="6.514000" data-stop="7.633000"><strong class="speaker-name">Sacha:</strong> Yeah. Okay. Hang on a second.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7.634000" data-stop="10.933000">Starting, going live.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="10.934000" data-stop="12.800000">Okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="12.801000" data-stop="15.167000">So, hello, everyone.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="15.168000" data-stop="17.267000">This is Yay Emacs 29.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="17.268000" data-stop="19.633000">And today I am here with Prot and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="19.634000" data-stop="23.100000">Philip Kaludercic.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="23.101000" data-stop="27.200000">We're having this conversation about Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="27.201000" data-stop="31.534000">newcomer experience, which started off with an</span> <span class="audio-time caption" data-speaker="Sacha" data-start="31.535000" data-stop="34.645000">Emacs carnival last month about newbies and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="34.646000" data-stop="38.165000">starter kits, which Cena started and you fleshed</span> <span class="audio-time caption" data-speaker="Sacha" data-start="38.166000" data-stop="39.999000">out with more questions.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="40.000000" data-stop="42.254000">And now this is snowballing to, okay, let's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="42.255000" data-stop="44.719000">figure out what we can do to make Emacs easier</span> <span class="audio-time caption" data-speaker="Sacha" data-start="44.720000" data-stop="47.664000">for newbies who are coming in, maybe they're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="47.665000" data-stop="50.825000">non-developers who have heard good things about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="50.826000" data-stop="54.141000">Org Mode, or maybe they're developers who want to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="54.142000" data-stop="57.350000">try out what this Emacs thing is and what's all</span> <span class="audio-time caption" data-speaker="Sacha" data-start="57.351000" data-stop="60.332000">the fuss about having an editor that's been</span> <span class="audio-time caption" data-speaker="Sacha" data-start="60.333000" data-stop="61.719000">around for so long.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="61.720000" data-stop="64.882000">Or maybe they're actually still VS Code or Vim</span> <span class="audio-time caption" data-speaker="Sacha" data-start="64.883000" data-stop="68.222000">fans, but they really just want to use Magit, so</span> <span class="audio-time caption" data-speaker="Sacha" data-start="68.223000" data-stop="70.519000">they're coming in just for that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="70.520000" data-stop="75.999000">A lot of different paths to coming into Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="76.000000" data-stop="78.448000">We do have this live stream, so if people have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="78.449000" data-stop="81.029000">questions, I will at some point figure out where</span> <span class="audio-time caption" data-speaker="Sacha" data-start="81.030000" data-stop="83.601000">the chat is on my screen so I can read them out</span> <span class="audio-time caption" data-speaker="Sacha" data-start="83.602000" data-stop="84.039000">to you.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="84.040000" data-stop="86.530000">But my plan here is I'll just be in the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="86.531000" data-stop="89.374000">background taking notes most of the time and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="89.375000" data-stop="91.959000">interjecting with occasional questions.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="91.960000" data-stop="94.788000">And maybe Philip and Prot, you can go brain dump</span> <span class="audio-time caption" data-speaker="Sacha" data-start="94.789000" data-stop="97.472000">all the wonderful things you've been thinking</span> <span class="audio-time caption" data-speaker="Sacha" data-start="97.473000" data-stop="102.059000">about the Emacs newcomer experience.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="102.060000" data-stop="103.700000"><strong class="speaker-name">Philip:</strong> At this point, regret not having</span> <span class="audio-time caption" data-speaker="Philip" data-start="103.701000" data-stop="105.421000">written down any notes from the last video or</span> <span class="audio-time caption" data-speaker="Philip" data-start="105.422000" data-stop="108.496000">from your last recording of YouTube, because I</span> <span class="audio-time caption" data-speaker="Philip" data-start="108.497000" data-stop="111.351000">noticed I had a few things I wanted to add</span> <span class="audio-time caption" data-speaker="Philip" data-start="111.352000" data-stop="112.439000">or intersperse.</span> <span class="audio-time caption" data-speaker="Philip" data-start="112.440000" data-stop="115.119000">But I guess we can take a look at two things.</span> <span class="audio-time caption" data-speaker="Philip" data-start="115.120000" data-stop="120.266000">So first one is the state of introducing people</span> <span class="audio-time caption" data-speaker="Philip" data-start="120.267000" data-stop="121.799000">to Emacs now.</span> <span class="audio-time caption" data-speaker="Philip" data-start="121.800000" data-stop="124.589000">And the question there is, who are we introducing</span> <span class="audio-time caption" data-speaker="Philip" data-start="124.590000" data-stop="125.159000">Emacs to?</span> <span class="audio-time caption" data-speaker="Philip" data-start="125.160000" data-stop="127.339000">Just like you said, you sketched out a few</span> <span class="audio-time caption" data-speaker="Philip" data-start="127.340000" data-stop="131.196000">different profiles of people who presumably have</span> <span class="audio-time caption" data-speaker="Philip" data-start="131.197000" data-stop="132.479000">entirely different</span> <span class="audio-time caption" data-speaker="Philip" data-start="132.480000" data-stop="136.590000">interests, motivations, like if someone wants to</span> <span class="audio-time caption" data-speaker="Philip" data-start="136.591000" data-stop="139.759000">just use Magit like Emacs is there.</span> <span class="audio-time caption" data-speaker="Philip" data-start="139.760000" data-stop="142.924000">It's the tool, it's the GUI that implements</span> <span class="audio-time caption" data-speaker="Philip" data-start="142.925000" data-stop="145.958000">Magit, then these people have an entirely</span> <span class="audio-time caption" data-speaker="Philip" data-start="145.959000" data-stop="149.385000">different motivation than someone who actually</span> <span class="audio-time caption" data-speaker="Philip" data-start="149.386000" data-stop="151.599000">says, well, I'm coming at it from, I heard it's</span> <span class="audio-time caption" data-speaker="Philip" data-start="151.600000" data-stop="156.759000">an interesting tool for free software development.</span> <span class="audio-time caption" data-speaker="Philip" data-start="156.760000" data-stop="159.707000">Build your own or understand free software</span> <span class="audio-time caption" data-speaker="Philip" data-start="159.708000" data-stop="161.359000">in a different sense, where you can actually do</span> <span class="audio-time caption" data-speaker="Philip" data-start="161.360000" data-stop="163.867000">find-function and open the definition of the</span> <span class="audio-time caption" data-speaker="Philip" data-start="163.868000" data-stop="166.919000">function you just used.</span> <span class="audio-time caption" data-speaker="Philip" data-start="166.920000" data-stop="171.085000">I think malleable is the current catch word</span> <span class="audio-time caption" data-speaker="Philip" data-start="171.086000" data-stop="174.719000">that people like to use in that context.</span> <span class="audio-time caption" data-speaker="Philip" data-start="174.720000" data-stop="179.239000">So there's some issue in that sense.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="179.000000">2:59</span> <strong>newcomers-presets user option theme; would be nice to explain what the changes are</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="179.240000" data-stop="181.676000"><strong class="speaker-name">Philip:</strong> And then the specific comment from the last</span> <span class="audio-time caption" data-speaker="Philip" data-start="181.677000" data-stop="183.999000">discussion which caught my attention was</span> <span class="audio-time caption" data-speaker="Philip" data-start="184.000000" data-stop="187.904000">We were talking about Emacs 31, there's this</span> <span class="audio-time caption" data-speaker="Philip" data-start="187.905000" data-stop="191.719000">preset theme, the newcomers-presets theme,</span> <span class="audio-time caption" data-speaker="Philip" data-start="191.720000" data-stop="194.458000">which is implemented as a user option theme, or</span> <span class="audio-time caption" data-speaker="Philip" data-start="194.459000" data-stop="196.439000">that's how I like to refer to it.</span> <span class="audio-time caption" data-speaker="Philip" data-start="196.440000" data-stop="199.056000">And I probably should just briefly stop and say</span> <span class="audio-time caption" data-speaker="Philip" data-start="199.057000" data-stop="201.155000">that everything I'm saying is from my</span> <span class="audio-time caption" data-speaker="Philip" data-start="201.156000" data-stop="202.119000">own perspective.</span> <span class="audio-time caption" data-speaker="Philip" data-start="202.120000" data-stop="205.238000">I don't feel comfortable saying that this is the</span> <span class="audio-time caption" data-speaker="Philip" data-start="205.239000" data-stop="208.387000">Emacs-devel perspective or that any other of the</span> <span class="audio-time caption" data-speaker="Philip" data-start="208.388000" data-stop="211.197000">Emacs developers necessarily have to agree</span> <span class="audio-time caption" data-speaker="Philip" data-start="211.198000" data-stop="211.799000">with me.</span> <span class="audio-time caption" data-speaker="Philip" data-start="211.800000" data-stop="214.439000">I just think that I might have a few things.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="214.440000" data-stop="215.679000"><strong class="speaker-name">Prot:</strong> Sorry, I lost your audio.</span> <span class="audio-time caption" data-speaker="Prot" data-start="215.680000" data-stop="220.319000">Just to say I lost your audio, Philip.</span> <span class="audio-time caption" data-speaker="Prot" data-start="220.320000" data-stop="221.039000">Excuse me.</span> <span class="audio-time caption" data-speaker="Prot" data-start="221.040000" data-stop="222.919000">Sorry, I lost your audio for a second.</span> <span class="audio-time caption" data-speaker="Prot" data-start="222.920000" data-stop="224.039000">You could hear it fine.</span> <span class="audio-time caption" data-speaker="Prot" data-start="224.040000" data-stop="227.119000">I will hear it in the recording.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="227.120000" data-stop="230.845000"><strong class="speaker-name">Sacha:</strong> Okay, so basically, you can repeat it,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="230.846000" data-stop="231.559000">I guess.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="231.560000" data-stop="234.139000">Go ahead.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="234.140000" data-stop="235.679000"><strong class="speaker-name">Philip:</strong> What did I say?</span> <span class="audio-time caption" data-speaker="Philip" data-start="235.680000" data-stop="237.334000">So you were saying that... I'm not</span> <span class="audio-time caption" data-speaker="Philip" data-start="237.335000" data-stop="238.599000">representing emacs-devel.</span> <span class="audio-time caption" data-speaker="Philip" data-start="238.600000" data-stop="241.700000">These are my views which are informed by the</span> <span class="audio-time caption" data-speaker="Philip" data-start="241.701000" data-stop="244.467000">discussions that we had in emacs-devel that I</span> <span class="audio-time caption" data-speaker="Philip" data-start="244.468000" data-stop="250.199000">hope will be represented.</span> <span class="audio-time caption" data-speaker="Philip" data-start="250.200000" data-stop="253.504000">I think I'm the maintainer of the preset theme,</span> <span class="audio-time caption" data-speaker="Philip" data-start="253.505000" data-stop="256.921000">but of course other people are also contributing</span> <span class="audio-time caption" data-speaker="Philip" data-start="256.922000" data-stop="259.199000">to it and adding other options.</span> <span class="audio-time caption" data-speaker="Philip" data-start="259.200000" data-stop="261.884000">Specific points I had like the target audience of</span> <span class="audio-time caption" data-speaker="Philip" data-start="261.885000" data-stop="264.329000">the preset theme was not people who would be</span> <span class="audio-time caption" data-speaker="Philip" data-start="264.330000" data-stop="265.719000">particularly interested.</span> <span class="audio-time caption" data-speaker="Philip" data-start="265.720000" data-stop="267.439000">What the options are.</span> <span class="audio-time caption" data-speaker="Philip" data-start="267.440000" data-stop="270.199000">I think that was a discussion point last time.</span> <span class="audio-time caption" data-speaker="Philip" data-start="270.200000" data-stop="274.479000">I admit it's a technical deficiency currently.</span> <span class="audio-time caption" data-speaker="Philip" data-start="274.480000" data-stop="275.799000">There's no pretty way.</span> <span class="audio-time caption" data-speaker="Philip" data-start="275.800000" data-stop="278.607000">I think it would be nice if we extended describe</span> <span class="audio-time caption" data-speaker="Philip" data-start="278.608000" data-stop="281.145000">theme to actually list the options that are</span> <span class="audio-time caption" data-speaker="Philip" data-start="281.146000" data-stop="283.961000">modified with hyperlinks so that you could look</span> <span class="audio-time caption" data-speaker="Philip" data-start="283.962000" data-stop="285.159000">into these options.</span> <span class="audio-time caption" data-speaker="Philip" data-start="285.160000" data-stop="287.199000">That's currently not there.</span> <span class="audio-time caption" data-speaker="Philip" data-start="287.200000" data-stop="290.383000">We didn't add it in time for the feature cut for</span> <span class="audio-time caption" data-speaker="Philip" data-start="290.384000" data-stop="293.546000">Emacs 31, but I think for Emacs 32 that's going</span> <span class="audio-time caption" data-speaker="Philip" data-start="293.547000" data-stop="294.959000">to be an interesting</span> <span class="audio-time caption" data-speaker="Philip" data-start="294.960000" data-stop="300.239000">Feature to have at some point.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="300.000000">5:00</span> <strong>finding a balance between "it's fine the way it is" and "just use Doom Emacs"</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="300.240000" data-stop="303.727000"><strong class="speaker-name">Philip:</strong> And actually the idea had been floating around I</span> <span class="audio-time caption" data-speaker="Philip" data-start="303.728000" data-stop="307.084000">think like every time there was like there's a</span> <span class="audio-time caption" data-speaker="Philip" data-start="307.085000" data-stop="310.605000">periodic, periodical discussions like how should</span> <span class="audio-time caption" data-speaker="Philip" data-start="310.606000" data-stop="314.076000">we make Emacs more user-friendly on Emacs level</span> <span class="audio-time caption" data-speaker="Philip" data-start="314.077000" data-stop="317.658000">and people say we have to like say the extremist</span> <span class="audio-time caption" data-speaker="Philip" data-start="317.659000" data-stop="321.239000">position is what do you mean not user-friendly.</span> <span class="audio-time caption" data-speaker="Philip" data-start="321.240000" data-stop="325.679000">It's perfect the way it is.</span> <span class="audio-time caption" data-speaker="Philip" data-start="325.680000" data-stop="325.879000">It's</span> <span class="audio-time caption" data-speaker="Philip" data-start="325.880000" data-stop="328.559000">God-given configuration.</span> <span class="audio-time caption" data-speaker="Philip" data-start="328.560000" data-stop="330.738000">And the other people who say, well, why don't we</span> <span class="audio-time caption" data-speaker="Philip" data-start="330.739000" data-stop="332.632000">just install Doom Emacs and make that the</span> <span class="audio-time caption" data-speaker="Philip" data-start="332.633000" data-stop="333.279000">default then?</span> <span class="audio-time caption" data-speaker="Philip" data-start="333.280000" data-stop="335.870000">Somewhere in between, I think there is a</span> <span class="audio-time caption" data-speaker="Philip" data-start="335.871000" data-stop="337.879000">reasonable position to be had.</span> <span class="audio-time caption" data-speaker="Philip" data-start="337.880000" data-stop="341.909000">But in these discussions, one of the reasons this</span> <span class="audio-time caption" data-speaker="Philip" data-start="341.910000" data-stop="345.199000">came... I participated maybe in</span> <span class="audio-time caption" data-speaker="Philip" data-start="345.200000" data-stop="348.319000">four or five of them, and then this point came up:</span> <span class="audio-time caption" data-speaker="Philip" data-start="348.320000" data-stop="350.781000">why don't we have a theme, like a collection of</span> <span class="audio-time caption" data-speaker="Philip" data-start="350.782000" data-stop="353.304000">user options, which you can toggle in one switch,</span> <span class="audio-time caption" data-speaker="Philip" data-start="353.305000" data-stop="358.067000">which enable all the options from which we would</span> <span class="audio-time caption" data-speaker="Philip" data-start="358.068000" data-stop="360.767000">not find, which existing users would not find</span> <span class="audio-time caption" data-speaker="Philip" data-start="360.768000" data-stop="362.200000">interesting, which are always the bulk of the</span> <span class="audio-time caption" data-speaker="Philip" data-start="362.201000" data-stop="364.200000">users. Most people are already existing users. They</span> <span class="audio-time caption" data-speaker="Philip" data-start="364.201000" data-stop="365.962000">don't come in and... One of the things is, lots of</span> <span class="audio-time caption" data-speaker="Philip" data-start="365.963000" data-stop="367.959000">existing users, I'm thinking of like</span> <span class="audio-time caption" data-speaker="Philip" data-start="367.960000" data-stop="371.240000">a 60-year-old professor who has been using Emacs</span> <span class="audio-time caption" data-speaker="Philip" data-start="371.241000" data-stop="374.473000">for 30 years, or a software engineer who's using</span> <span class="audio-time caption" data-speaker="Philip" data-start="374.474000" data-stop="377.321000">it, and maybe consciously or unconsciously</span> <span class="audio-time caption" data-speaker="Philip" data-start="377.322000" data-stop="380.782000">appreciates the fact that it doesn't change every</span> <span class="audio-time caption" data-speaker="Philip" data-start="380.783000" data-stop="381.559000">few years.</span> <span class="audio-time caption" data-speaker="Philip" data-start="381.560000" data-stop="384.359000">You don't have a graphic designer.</span> <span class="audio-time caption" data-speaker="Philip" data-start="384.360000" data-stop="387.111000">This is, of course, me against graphic designers</span> <span class="audio-time caption" data-speaker="Philip" data-start="387.112000" data-stop="389.890000">and UI designers who have a need to reinvent the</span> <span class="audio-time caption" data-speaker="Philip" data-start="389.891000" data-stop="392.074000">UI interface every few years and then</span> <span class="audio-time caption" data-speaker="Philip" data-start="392.075000" data-stop="392.959000">things change.</span> <span class="audio-time caption" data-speaker="Philip" data-start="392.960000" data-stop="394.079000">And how do I save now?</span> <span class="audio-time caption" data-speaker="Philip" data-start="394.080000" data-stop="395.119000">What's the...</span> <span class="audio-time caption" data-speaker="Philip" data-start="395.120000" data-stop="396.439000">What's the button to do this?</span> <span class="audio-time caption" data-speaker="Philip" data-start="396.440000" data-stop="397.519000">And the UI changes.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="397.000000">6:37</span> <strong>people value stability, but also conventions have shifted.</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="397.520000" data-stop="399.039000"><strong class="speaker-name">Philip:</strong> The people who value the stability.</span> <span class="audio-time caption" data-speaker="Philip" data-start="399.040000" data-stop="402.613000">But of course, the common conventions have</span> <span class="audio-time caption" data-speaker="Philip" data-start="402.614000" data-stop="403.719000">grown apart.</span> <span class="audio-time caption" data-speaker="Philip" data-start="403.720000" data-stop="408.669000">What Emacs does and what people are used to from</span> <span class="audio-time caption" data-speaker="Philip" data-start="408.670000" data-stop="410.319000">other programs.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="410.000000">6:50</span> <strong>ways Emacs does things differently: ex: terminal vs eshell, output is editable; new users want to edit the previous prompt; sometimes goes against people's intuitions</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="410.320000" data-stop="413.039000"><strong class="speaker-name">Philip:</strong> Now, at this point, we also have to distinguish</span> <span class="audio-time caption" data-speaker="Philip" data-start="413.040000" data-stop="415.850000">that there are things which Emacs doesn't do the</span> <span class="audio-time caption" data-speaker="Philip" data-start="415.851000" data-stop="417.959000">way other programs do, which are...</span> <span class="audio-time caption" data-speaker="Philip" data-start="417.960000" data-stop="420.839000">Which I would argue are actually sensible.</span> <span class="audio-time caption" data-speaker="Philip" data-start="420.840000" data-stop="425.600000">For example, I think one issue I remember was</span> <span class="audio-time caption" data-speaker="Philip" data-start="425.601000" data-stop="427.217000">when I first started using Emacs, I had a</span> <span class="audio-time caption" data-speaker="Philip" data-start="427.218000" data-stop="428.639000">terminal emulator.</span> <span class="audio-time caption" data-speaker="Philip" data-start="428.640000" data-stop="430.999000">I wanted to have a terminal emulator within Emacs.</span> <span class="audio-time caption" data-speaker="Philip" data-start="431.000000" data-stop="435.888000">Nowadays I use Emacs Shell, which to me seems</span> <span class="audio-time caption" data-speaker="Philip" data-start="435.889000" data-stop="439.799000">like a more truer Emacs experience.</span> <span class="audio-time caption" data-speaker="Philip" data-start="439.800000" data-stop="442.479000">It's an opinion, a strong opinion maybe.</span> <span class="audio-time caption" data-speaker="Philip" data-start="442.480000" data-stop="445.093000">And it's also influenced by a history of using</span> <span class="audio-time caption" data-speaker="Philip" data-start="445.094000" data-stop="447.797000">Plan 9 and that kind of terminal where actually</span> <span class="audio-time caption" data-speaker="Philip" data-start="447.798000" data-stop="449.639000">the output is just as editable.</span> <span class="audio-time caption" data-speaker="Philip" data-start="449.640000" data-stop="450.439000">You can just search it.</span> <span class="audio-time caption" data-speaker="Philip" data-start="450.440000" data-stop="451.079000">You can edit it.</span> <span class="audio-time caption" data-speaker="Philip" data-start="451.080000" data-stop="451.919000">You can cut it.</span> <span class="audio-time caption" data-speaker="Philip" data-start="451.920000" data-stop="454.982000">You can interact with the output any way you</span> <span class="audio-time caption" data-speaker="Philip" data-start="454.983000" data-stop="458.284000">would use a normal text, which is not something</span> <span class="audio-time caption" data-speaker="Philip" data-start="458.285000" data-stop="459.099000">you can do with a terminal for purely</span> <span class="audio-time caption" data-speaker="Philip" data-start="459.100000" data-stop="464.419000">historical reasons.</span> <span class="audio-time caption" data-speaker="Philip" data-start="464.420000" data-stop="466.033000">At my university, the university where I studied</span> <span class="audio-time caption" data-speaker="Philip" data-start="466.034000" data-stop="469.676000">computer science, I frequently helped people in</span> <span class="audio-time caption" data-speaker="Philip" data-start="469.677000" data-stop="472.079000">the introductory Linux course.</span> <span class="audio-time caption" data-speaker="Philip" data-start="472.080000" data-stop="473.587000">One thing you notice there, these are</span> <span class="audio-time caption" data-speaker="Philip" data-start="473.588000" data-stop="474.239000">real newcomers.</span> <span class="audio-time caption" data-speaker="Philip" data-start="474.240000" data-stop="475.988000">These are people who have never used Linux or a</span> <span class="audio-time caption" data-speaker="Philip" data-start="475.989000" data-stop="477.439000">terminal or anything like that before.</span> <span class="audio-time caption" data-speaker="Philip" data-start="477.440000" data-stop="480.306000">The first thing they do when they want to, like,</span> <span class="audio-time caption" data-speaker="Philip" data-start="480.307000" data-stop="483.081000">they use the arrow keys expecting or click on,</span> <span class="audio-time caption" data-speaker="Philip" data-start="483.082000" data-stop="485.233000">they use the mouse and click on the</span> <span class="audio-time caption" data-speaker="Philip" data-start="485.234000" data-stop="486.279000">previous prompt.</span> <span class="audio-time caption" data-speaker="Philip" data-start="486.280000" data-stop="487.999000">And they want to modify the previous prompt.</span> <span class="audio-time caption" data-speaker="Philip" data-start="488.000000" data-stop="490.250000">Of course, that doesn't work because that's not</span> <span class="audio-time caption" data-speaker="Philip" data-start="490.251000" data-stop="491.639000">how terminal emulators work.</span> <span class="audio-time caption" data-speaker="Philip" data-start="491.640000" data-stop="494.199000">All the previous output, that's fixed.</span> <span class="audio-time caption" data-speaker="Philip" data-start="494.200000" data-stop="495.319000">You don't touch that anymore.</span> <span class="audio-time caption" data-speaker="Philip" data-start="495.320000" data-stop="498.003000">Everyone, I guess even people who we describe</span> <span class="audio-time caption" data-speaker="Philip" data-start="498.004000" data-stop="500.519000">as newcomers, talking about Emacs,</span> <span class="audio-time caption" data-speaker="Philip" data-start="500.520000" data-stop="501.759000">obviously know</span> <span class="audio-time caption" data-speaker="Philip" data-start="501.760000" data-stop="503.957000">of course you don't touch the previous prompt in</span> <span class="audio-time caption" data-speaker="Philip" data-start="503.958000" data-stop="504.599000">the terminal.</span> <span class="audio-time caption" data-speaker="Philip" data-start="504.600000" data-stop="507.255000">These are some expectations you have, if you use</span> <span class="audio-time caption" data-speaker="Philip" data-start="507.256000" data-stop="509.881000">Eclipse, if you use VS Code, if you use... I'm</span> <span class="audio-time caption" data-speaker="Philip" data-start="509.882000" data-stop="512.679000">not sure how the NeoVim terminal emulator works.</span> <span class="audio-time caption" data-speaker="Philip" data-start="512.680000" data-stop="513.799000">I know they have a built-in one.</span> <span class="audio-time caption" data-speaker="Philip" data-start="513.800000" data-stop="516.439000">I think Vim also, but I'm guessing right now.</span> <span class="audio-time caption" data-speaker="Philip" data-start="516.440000" data-stop="518.962000">So there are some accumulated intuitions which</span> <span class="audio-time caption" data-speaker="Philip" data-start="518.963000" data-stop="521.759000">Emacs actually intentionally doesn't want to give,</span> <span class="audio-time caption" data-speaker="Philip" data-start="521.760000" data-stop="525.302000">doesn't want to give in all purpose, because I'd</span> <span class="audio-time caption" data-speaker="Philip" data-start="525.303000" data-stop="528.490000">argue that one of the strengths of Emacs is</span> <span class="audio-time caption" data-speaker="Philip" data-start="528.491000" data-stop="532.143000">really having this uniform text interface where I</span> <span class="audio-time caption" data-speaker="Philip" data-start="532.144000" data-stop="535.749000">can use isearch, I can use occur, I can use the</span> <span class="audio-time caption" data-speaker="Philip" data-start="535.750000" data-stop="539.477000">highlighting commands, I can just select a region</span> <span class="audio-time caption" data-speaker="Philip" data-start="539.478000" data-stop="541.759000">and write it out to a buffer,</span> <span class="audio-time caption" data-speaker="Philip" data-start="541.760000" data-stop="543.479000">and stuff like that.</span> <span class="audio-time caption" data-speaker="Philip" data-start="543.480000" data-stop="546.013000">That shell buffer is no different than anything</span> <span class="audio-time caption" data-speaker="Philip" data-start="546.014000" data-stop="547.199000">else in that respect.</span> <span class="audio-time caption" data-speaker="Philip" data-start="547.200000" data-stop="550.159000">Please interrupt me by the way.</span> <span class="audio-time caption" data-speaker="Philip" data-start="550.160000" data-stop="551.999000">This is not supposed to be a monologue.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="552.000000" data-stop="553.719000"><strong class="speaker-name">Prot:</strong> No, no, no.</span> <span class="audio-time caption" data-speaker="Prot" data-start="553.720000" data-stop="556.239000">Go ahead.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="556.240000" data-stop="558.067000"><strong class="speaker-name">Sacha:</strong> So it sounds like there's an interesting</span> <span class="audio-time caption" data-speaker="Sacha" data-start="558.068000" data-stop="558.179000">challenge here.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="558.180000" data-stop="559.610000"><strong class="speaker-name">Philip:</strong> Breaking some of these intuitions</span> <span class="audio-time caption" data-speaker="Philip" data-start="559.611000" data-stop="560.159000">is legitimate.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="560.160000" data-stop="561.439000"><strong class="speaker-name">Sacha:</strong> Yeah.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="561.000000">9:21</span> <strong>How do people develop Emacs intuition? Immersion</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="561.440000" data-stop="563.458000"><strong class="speaker-name">Sacha:</strong> How do we help people develop the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="563.459000" data-stop="566.339000">Emacs intuitions?</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="566.340000" data-stop="568.261000"><strong class="speaker-name">Philip:</strong> To some degree, it really feels like it</span> <span class="audio-time caption" data-speaker="Philip" data-start="568.262000" data-stop="572.039000">has to be something that you immerse yourself in.</span> <span class="audio-time caption" data-speaker="Philip" data-start="572.040000" data-stop="574.747000">The issue, I guess, is, well, I know, I mean, I</span> <span class="audio-time caption" data-speaker="Philip" data-start="574.748000" data-stop="576.879000">knew people who actually used Emacs.</span> <span class="audio-time caption" data-speaker="Philip" data-start="576.880000" data-stop="579.866000">I mean, you can help them in a face-to-face</span> <span class="audio-time caption" data-speaker="Philip" data-start="579.867000" data-stop="582.133000">setting or like Prot does in his</span> <span class="audio-time caption" data-speaker="Philip" data-start="582.134000" data-stop="583.479000">teaching settings.</span> <span class="audio-time caption" data-speaker="Philip" data-start="583.480000" data-stop="586.456000">Then you communicate certain things, which I</span> <span class="audio-time caption" data-speaker="Philip" data-start="586.457000" data-stop="588.959000">don't want to say they're ineffable.</span> <span class="audio-time caption" data-speaker="Philip" data-start="588.960000" data-stop="591.361000">It's not like you couldn't write them down in a</span> <span class="audio-time caption" data-speaker="Philip" data-start="591.362000" data-stop="592.639000">manual, but it's also...</span> <span class="audio-time caption" data-speaker="Philip" data-start="592.640000" data-stop="595.679000">Like the mentality that people have.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="595.000000">9:55</span> <strong>example: dabbrev, there's no undo? Ah, it's just the regular undo.</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="595.680000" data-stop="598.002000"><strong class="speaker-name">Philip:</strong> A different example I have, like, I remember I</span> <span class="audio-time caption" data-speaker="Philip" data-start="598.003000" data-stop="599.958000">was using daabrev for the first time</span> <span class="audio-time caption" data-speaker="Philip" data-start="599.959000" data-stop="600.679000">or something.</span> <span class="audio-time caption" data-speaker="Philip" data-start="600.680000" data-stop="602.519000">For a while I was irritated.</span> <span class="audio-time caption" data-speaker="Philip" data-start="602.520000" data-stop="603.399000">There was no undo.</span> <span class="audio-time caption" data-speaker="Philip" data-start="603.400000" data-stop="606.185000">Like, how do I go back to the previous</span> <span class="audio-time caption" data-speaker="Philip" data-start="606.186000" data-stop="607.359000">text expansion?</span> <span class="audio-time caption" data-speaker="Philip" data-start="607.360000" data-stop="609.609000">Until at some point I realized, oh wait, it's</span> <span class="audio-time caption" data-speaker="Philip" data-start="609.610000" data-stop="610.559000">just regular undo.</span> <span class="audio-time caption" data-speaker="Philip" data-start="610.560000" data-stop="614.519000">That's just the way you undo it.</span> <span class="audio-time caption" data-speaker="Philip" data-start="614.520000" data-stop="619.679000">But somehow writing this down in a manual is...</span> <span class="audio-time caption" data-speaker="Philip" data-start="619.680000" data-stop="622.511000">It's not an easy thing to always think of</span> <span class="audio-time caption" data-speaker="Philip" data-start="622.512000" data-stop="623.479000">these things.</span> <span class="audio-time caption" data-speaker="Philip" data-start="623.480000" data-stop="625.804000">For me it seems obvious now, but at that point I</span> <span class="audio-time caption" data-speaker="Philip" data-start="625.805000" data-stop="627.839000">specifically remember it was unintuitive.</span> <span class="audio-time caption" data-speaker="Philip" data-start="627.840000" data-stop="631.000000">I had this accumulated expectation from other</span> <span class="audio-time caption" data-speaker="Philip" data-start="631.001000" data-stop="634.250000">programmers if I have a text expansion in this</span> <span class="audio-time caption" data-speaker="Philip" data-start="634.251000" data-stop="637.312000">case that I'm actually cycling through some</span> <span class="audio-time caption" data-speaker="Philip" data-start="637.313000" data-stop="640.772000">special sort of menu, not thinking of it as just</span> <span class="audio-time caption" data-speaker="Philip" data-start="640.773000" data-stop="643.079000">regular text buffer operations.</span> <span class="audio-time caption" data-speaker="Philip" data-start="643.080000" data-stop="645.839000">Just text editing in some fancy way.</span> <span class="audio-time caption" data-speaker="Philip" data-start="645.840000" data-stop="648.079000">But that's one</span> <span class="audio-time caption" data-speaker="Philip" data-start="648.080000" data-stop="650.919000">We should keep in mind.</span> <span class="audio-time caption" data-speaker="Philip" data-start="650.920000" data-stop="654.951000">This was all related to the preset theme in some</span> <span class="audio-time caption" data-speaker="Philip" data-start="654.952000" data-stop="655.959000">way, right?</span> <span class="audio-time caption" data-speaker="Philip" data-start="655.960000" data-stop="656.999000">You're writing this down.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="657.000000" data-stop="658.639000"><strong class="speaker-name">Sacha:</strong> Yes, I'm writing this down.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="658.640000" data-stop="660.399000">That's why we have notes.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="660.000000">11:00</span> <strong>newcomers presets: smooth over the intuition-disrupting things that are not actually necessary/beneficial; ex: enable which-key</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="660.400000" data-stop="663.147000"><strong class="speaker-name">Sacha:</strong> So what I'm thinking is you wanted the idea</span> <span class="audio-time caption" data-speaker="Sacha" data-start="663.148000" data-stop="666.294000">behind the newcomers presets is to kind of smooth</span> <span class="audio-time caption" data-speaker="Sacha" data-start="666.295000" data-stop="669.270000">over some of those intuition disrupting things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="669.271000" data-stop="671.688000">where people are coming in with maybe</span> <span class="audio-time caption" data-speaker="Sacha" data-start="671.689000" data-stop="674.481000">expectations of how stuff should work in a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="674.482000" data-stop="675.919000">modern editor.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="675.920000" data-stop="680.379000"><strong class="speaker-name">Philip:</strong> Specifically, the intuition.</span> <span class="audio-time caption" data-speaker="Philip" data-start="680.380000" data-stop="682.570000">Specifically, the intuition-disrupting things</span> <span class="audio-time caption" data-speaker="Philip" data-start="682.571000" data-stop="685.616000">which are not necessary, in some sense. Like, we</span> <span class="audio-time caption" data-speaker="Philip" data-start="685.617000" data-stop="691.033000">wouldn't want to be an intuition disrupt... like you</span> <span class="audio-time caption" data-speaker="Philip" data-start="691.034000" data-stop="694.433000">could probably... Like Cua mode or something, that</span> <span class="audio-time caption" data-speaker="Philip" data-start="694.434000" data-stop="696.833000">would be something where people if they would</span> <span class="audio-time caption" data-speaker="Philip" data-start="696.834000" data-stop="699.900000">start using... If you would enable Cua-mode</span> <span class="audio-time caption" data-speaker="Philip" data-start="699.901000" data-stop="701.792000">by default, that would inhibit further development,</span> <span class="audio-time caption" data-speaker="Philip" data-start="701.793000" data-stop="704.951000">because then it might be confusing with using</span> <span class="audio-time caption" data-speaker="Philip" data-start="704.952000" data-stop="707.479000">C-c, like if you... because suddenly</span> <span class="audio-time caption" data-speaker="Philip" data-start="707.480000" data-stop="711.347000">Delay becomes a user input, which is usually not</span> <span class="audio-time caption" data-speaker="Philip" data-start="711.348000" data-stop="713.039000">the case with Emacs.</span> <span class="audio-time caption" data-speaker="Philip" data-start="713.040000" data-stop="715.200000">I know which-key is an exception in that case,</span> <span class="audio-time caption" data-speaker="Philip" data-start="715.201000" data-stop="719.300000">because which-key pausing actually is an action</span> <span class="audio-time caption" data-speaker="Philip" data-start="719.301000" data-stop="720.439000">and displays a pop-up buffer.</span> <span class="audio-time caption" data-speaker="Philip" data-start="720.440000" data-stop="723.282000">And we do enable which-key due to popular requests</span> <span class="audio-time caption" data-speaker="Philip" data-start="723.283000" data-stop="724.559000">and the preset theme.</span> <span class="audio-time caption" data-speaker="Philip" data-start="724.560000" data-stop="727.269000">I personally was a bit hesitant about that one,</span> <span class="audio-time caption" data-speaker="Philip" data-start="727.270000" data-stop="728.999000">but it seems to be something.</span> <span class="audio-time caption" data-speaker="Philip" data-start="729.000000" data-stop="731.305000">where you have to really weigh it on a</span> <span class="audio-time caption" data-speaker="Philip" data-start="731.306000" data-stop="732.519000">case-to-case basis.</span> <span class="audio-time caption" data-speaker="Philip" data-start="732.520000" data-stop="735.780000">But, Sacha, do you have the... What version of</span> <span class="audio-time caption" data-speaker="Philip" data-start="735.781000" data-stop="738.119000">Emacs do you have running there?</span> <span class="audio-time caption" data-speaker="Philip" data-start="738.120000" data-stop="739.599000">I can't make it out.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="739.600000" data-stop="742.964000"><strong class="speaker-name">Sacha:</strong> Yeah, this is Emacs 31, so I do have...</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="742.965000" data-stop="746.066000"><strong class="speaker-name">Philip:</strong> So you can open the preset theme, right?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="746.067000" data-stop="747.133000"><strong class="speaker-name">Sacha:</strong> Yeah, yeah. Hang on a second.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="747.134000" data-stop="752.613000">Let me bring up a... I have now a terminal, so I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="752.614000" data-stop="757.119000">can... Let me bring up a completely fresh Emacs.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="757.120000" data-stop="759.239000"><strong class="speaker-name">Philip:</strong> No, I just want you to open the file.</span> <span class="audio-time caption" data-speaker="Philip" data-start="759.240000" data-stop="761.839000">Because in the file there is a prelude.</span> <span class="audio-time caption" data-speaker="Philip" data-start="761.840000" data-stop="763.708000">There's a commentary section that actually</span> <span class="audio-time caption" data-speaker="Philip" data-start="763.709000" data-stop="765.267000">explains the curve.</span> <span class="audio-time caption" data-speaker="Philip" data-start="765.268000" data-stop="766.833000">It's not a library.</span> <span class="audio-time caption" data-speaker="Philip" data-start="766.834000" data-stop="768.805000">That's exactly the joke with the...</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="768.806000" data-stop="771.439000"><strong class="speaker-name">Prot:</strong> Yeah, that's part of the problem with those themes.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="771.440000" data-stop="772.319000"><strong class="speaker-name">Philip:</strong> That's the problem.</span> <span class="audio-time caption" data-speaker="Philip" data-start="772.320000" data-stop="773.719000">Themes are not libraries.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="773.720000" data-stop="776.439000"><strong class="speaker-name">Prot:</strong> It would be easier if they were all there.</span> <span class="audio-time caption" data-speaker="Prot" data-start="776.440000" data-stop="779.031000">It's a kind of an implementation detail that from</span> <span class="audio-time caption" data-speaker="Prot" data-start="779.032000" data-stop="782.499000">a user, it doesn't really make a difference.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="782.500000" data-stop="784.439000"><strong class="speaker-name">Sacha:</strong> All right, newcomers-presets.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="784.440000" data-stop="785.919000"><strong class="speaker-name">Philip:</strong> If I remember correctly...</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="786.360000" data-stop="788.639000"><strong class="speaker-name">Prot:</strong> Yeah, yeah, exactly.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="788.640000" data-stop="790.979000"><strong class="speaker-name">Philip:</strong> Yeah, and you see up there the commentary section?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="790.980000" data-stop="791.739000"><strong class="speaker-name">Sacha:</strong> Yeah.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="791.740000" data-stop="798.399000"><strong class="speaker-name">Philip:</strong> If you scroll up a bit, it's above line 37.</span> <span class="audio-time caption" data-speaker="Philip" data-start="798.400000" data-stop="802.133000">The theme configures which we can reasonably</span> <span class="audio-time caption" data-speaker="Philip" data-start="802.134000" data-stop="803.533000">expect the average user to want to enable, but</span> <span class="audio-time caption" data-speaker="Philip" data-start="803.534000" data-stop="807.801000">would otherwise be unlikely to discover on</span> <span class="audio-time caption" data-speaker="Philip" data-start="807.802000" data-stop="808.919000">their own.</span> <span class="audio-time caption" data-speaker="Philip" data-start="808.920000" data-stop="812.549000">That's sort of the overall guide of what options</span> <span class="audio-time caption" data-speaker="Philip" data-start="812.550000" data-stop="813.759000">we want to add.</span> <span class="audio-time caption" data-speaker="Philip" data-start="813.760000" data-stop="816.349000">That's why it's also an option on the</span> <span class="audio-time caption" data-speaker="Philip" data-start="816.350000" data-stop="817.399000">splash screen.</span> <span class="audio-time caption" data-speaker="Philip" data-start="817.400000" data-stop="823.100000">You just tick it, and then the user options</span> <span class="audio-time caption" data-speaker="Philip" data-start="823.101000" data-stop="826.199000">enabled in the theme should be activated by default.</span> <span class="audio-time caption" data-speaker="Philip" data-start="826.200000" data-stop="828.479000">That's sort of the idea.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="828.480000" data-stop="831.359000"><strong class="speaker-name">Sacha:</strong> It is available on the splash screen.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="831.360000" data-stop="834.533000">So if I say display-splash...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="834.534000" data-stop="840.779000">Oh my goodness, how do I get to the splash screen?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="840.780000" data-stop="843.767000"><strong class="speaker-name">Prot:</strong> It's C-h C-a or not?</span> <span class="audio-time caption" data-speaker="Prot" data-start="843.768000" data-stop="845.459000">I forgot. C-h a maybe?</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="845.460000" data-stop="846.100000"><strong class="speaker-name">Philip:</strong> There are two things.</span> <span class="audio-time caption" data-speaker="Philip" data-start="846.101000" data-stop="847.959000">There's a splash screen and there's the...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="848.420000" data-stop="849.033000"><strong class="speaker-name">Sacha:</strong> Hang on a second.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="849.034000" data-stop="850.567000">I'm just going to start a new Emacs.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="850.568000" data-stop="853.140000"><strong class="speaker-name">Prot:</strong> Yeah, I haven't done that in, like, I don't know...</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="853.141000" data-stop="854.719000"><strong class="speaker-name">Philip:</strong> That's the about Emacs screen.</span> <span class="audio-time caption" data-speaker="Philip" data-start="854.720000" data-stop="855.639000">But you have a display splash screen.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="855.640000" data-stop="857.639000"><strong class="speaker-name">Prot:</strong> C-h C-a on mine.</span> <span class="audio-time caption" data-speaker="Prot" data-start="857.640000" data-stop="860.519000">About Emacs.</span> <span class="audio-time caption" data-speaker="Prot" data-start="860.520000" data-stop="861.639000">M-x about-emacs.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="861.640000" data-stop="862.900000"><strong class="speaker-name">Sacha:</strong> No, I have a better idea.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="862.901000" data-stop="864.433000">I'm going to start this new Emacs person.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="864.434000" data-stop="865.100000">Okay, here we go.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="865.101000" data-stop="866.067000">New Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="866.068000" data-stop="867.333000">Fresh person.</span> <p></p><a href="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/ye29-prot-and-pkal-emacs-newcomer-experience-00-14-32-733.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/ye29-prot-and-pkal-emacs-newcomer-experience-00-14-32-733.jpg" alt="image from video 00:14:32.733" data-time="00:14:32.733"></a><span class="audio-time caption" data-speaker="Sacha" data-start="867.334000" data-stop="869.719000"><strong class="speaker-name">Sacha:</strong> So we click on this, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="869.720000" data-stop="872.719000">And it turns on a bunch of things including the tab bar.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="872.000000">14:32</span> <strong>newcomers-presets choice is not saved at the moment</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="872.720000" data-stop="875.578000"><strong class="speaker-name">Sacha:</strong> I wasn't entirely sure how people would save that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="875.579000" data-stop="877.679000">so that it happens again next time.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="877.680000" data-stop="879.239000">Is the idea that they just keep</span> <span class="audio-time caption" data-speaker="Sacha" data-start="879.240000" data-stop="879.999000">checking that box?</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="880.000000" data-stop="881.319000"><strong class="speaker-name">Philip:</strong> That's not done currently.</span> <span class="audio-time caption" data-speaker="Philip" data-start="881.320000" data-stop="884.199000">That's something we haven't simply decided on.</span> <span class="audio-time caption" data-speaker="Philip" data-start="884.200000" data-stop="887.162000">The current presentation is you enable</span> <span class="audio-time caption" data-speaker="Philip" data-start="887.163000" data-stop="890.145000">it in that mode and then you'd have to, which is</span> <span class="audio-time caption" data-speaker="Philip" data-start="890.146000" data-stop="892.844000">of course saying it out loud makes it sound</span> <span class="audio-time caption" data-speaker="Philip" data-start="892.845000" data-stop="895.592000">stupid, but you'd have to persistently save</span> <span class="audio-time caption" data-speaker="Philip" data-start="895.593000" data-stop="896.359000">the themes.</span> <span class="audio-time caption" data-speaker="Philip" data-start="896.360000" data-stop="898.967000">So then I think it's optional to save themes</span> <span class="audio-time caption" data-speaker="Philip" data-start="898.968000" data-stop="901.199000">and then...</span> <p></p><a href="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/ye29-prot-and-pkal-emacs-newcomer-experience-00-15-14-000.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/ye29-prot-and-pkal-emacs-newcomer-experience-00-15-14-000.jpg" alt="image from video 00:15:14.000" data-time="00:15:14.000"></a><span class="audio-time caption" data-speaker="Sacha" data-start="901.200000" data-stop="903.487000"><strong class="speaker-name">Sacha:</strong> It is possible for people to get to it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="903.488000" data-stop="905.999000">if we leave them a breadcrumb.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="906.000000" data-stop="910.067000">But it's not going to occur to them because it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="910.068000" data-stop="911.933000">would never occur to them to say customize Emacs,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="911.934000" data-stop="917.099000">custom themes, and then I can pick newcomers themes from here.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="917.100000" data-stop="921.033000"><strong class="speaker-name">Philip:</strong> It's a point that I at least intended</span> <span class="audio-time caption" data-speaker="Philip" data-start="921.034000" data-stop="923.067000">to mention at some point on</span> <span class="audio-time caption" data-speaker="Philip" data-start="923.068000" data-stop="925.300000">emacs-devel, whether we want to make this, because</span> <span class="audio-time caption" data-speaker="Philip" data-start="925.301000" data-stop="927.124000">currently it just loads the theme, but it doesn't</span> <span class="audio-time caption" data-speaker="Philip" data-start="927.125000" data-stop="929.183000">persist the choice, but it could just as well</span> <span class="audio-time caption" data-speaker="Philip" data-start="929.184000" data-stop="930.119000">persist the choice.</span> <span class="audio-time caption" data-speaker="Philip" data-start="930.120000" data-stop="932.383000">There's a discussion to be had which of these two</span> <span class="audio-time caption" data-speaker="Philip" data-start="932.384000" data-stop="934.611000">behaviors is more intuitive, because of course, if</span> <span class="audio-time caption" data-speaker="Philip" data-start="934.612000" data-stop="937.467000">you persist the option, then you have the</span> <span class="audio-time caption" data-speaker="Philip" data-start="937.468000" data-stop="938.595000">disadvantage that someone might enable it, but</span> <span class="audio-time caption" data-speaker="Philip" data-start="938.596000" data-stop="940.783000">doesn't actually want it, but now somehow their</span> <span class="audio-time caption" data-speaker="Philip" data-start="940.784000" data-stop="942.639000">Emacs is broken from their perspective.</span> <span class="audio-time caption" data-speaker="Philip" data-start="942.640000" data-stop="945.171000">I don't want tabs or whatever they say, or I don't</span> <span class="audio-time caption" data-speaker="Philip" data-start="945.172000" data-stop="947.738000">want which-key, and they don't know how to disable it.</span> <span class="audio-time caption" data-speaker="Philip" data-start="947.739000" data-stop="949.239000">So this is...</span> <span class="audio-time caption" data-speaker="Philip" data-start="949.240000" data-stop="951.447000">I wouldn't say it's an obvious decision in</span> <span class="audio-time caption" data-speaker="Philip" data-start="951.448000" data-stop="953.579000">either direction.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="953.580000" data-stop="955.716000"><strong class="speaker-name">Prot:</strong> Like if there is an enable button or</span> <span class="audio-time caption" data-speaker="Prot" data-start="955.717000" data-stop="958.697000">save, there should be a disable and unsave,</span> <span class="audio-time caption" data-speaker="Prot" data-start="958.698000" data-stop="959.599000">like remove.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="959.600000" data-stop="962.359000"><strong class="speaker-name">Philip:</strong> Yeah, that's the checkbox idea in that case.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="962.360000" data-stop="966.800000"><strong class="speaker-name">Prot:</strong> That would be the tricky part.</span> <span class="audio-time caption" data-speaker="Prot" data-start="966.801000" data-stop="970.143000">And especially, finding the place on the splash</span> <span class="audio-time caption" data-speaker="Prot" data-start="970.144000" data-stop="971.959000">screen so that this actually works for everyone...</span> <span class="audio-time caption" data-speaker="Prot" data-start="971.960000" data-stop="975.258000">Because if you open it in a TUI mode, I think then</span> <span class="audio-time caption" data-speaker="Prot" data-start="975.259000" data-stop="978.451000">initially, if I remember correctly, we had this</span> <span class="audio-time caption" data-speaker="Prot" data-start="978.452000" data-stop="981.695000">button or this new to Emacs line was underneath</span> <span class="audio-time caption" data-speaker="Prot" data-start="981.696000" data-stop="983.379000">the copyrights.</span> <span class="audio-time caption" data-speaker="Prot" data-start="983.380000" data-stop="984.319000">No, no, that was a different thing.</span> <p></p><a href="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/ye29-prot-and-pkal-emacs-newcomer-experience-00-16-46-233.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/ye29-prot-and-pkal-emacs-newcomer-experience-00-16-46-233.jpg" alt="image from video 00:16:46.233" data-time="00:16:46.233"></a><span class="audio-time caption" data-speaker="Prot" data-start="984.320000" data-stop="987.039000"><strong class="speaker-name">Prot:</strong> If you click on newcomers preset, for example,</span> <span class="audio-time caption" data-speaker="Prot" data-start="987.040000" data-stop="992.339000">then you are redirected to the manual entry.</span> <span class="audio-time caption" data-speaker="Prot" data-start="992.340000" data-stop="994.636000">And I think we had some, yeah, there's this, the</span> <span class="audio-time caption" data-speaker="Prot" data-start="994.637000" data-stop="995.519000">top line.</span> <span class="audio-time caption" data-speaker="Prot" data-start="995.520000" data-stop="998.141000">If you got here by clicking the link on the</span> <span class="audio-time caption" data-speaker="Prot" data-start="998.142000" data-stop="1000.519000">splash screen, that was on the bottom.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1000.520000" data-stop="1002.399000">That was on the bottom of the manual entry.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1002.400000" data-stop="1006.212000">But if you open it up in an 80x24 terminal, you</span> <span class="audio-time caption" data-speaker="Prot" data-start="1006.213000" data-stop="1008.459000">wouldn't see this line.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1008.460000" data-stop="1010.902000"><strong class="speaker-name">Sacha:</strong> You can't see it and you don't know how</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1010.903000" data-stop="1013.622000">to... These are the complications that you have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1013.623000" data-stop="1015.359000">to keep in mind in that case.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="1015.360000" data-stop="1017.777000"><strong class="speaker-name">Philip:</strong> You might not have the intuition that</span> <span class="audio-time caption" data-speaker="Philip" data-start="1017.778000" data-stop="1020.347000">SPC is scroll, which I think that's the case</span> <span class="audio-time caption" data-speaker="Philip" data-start="1020.348000" data-stop="1020.839000">in less.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1020.840000" data-stop="1023.033000">But yes, again, you have this accumulated</span> <span class="audio-time caption" data-speaker="Philip" data-start="1023.034000" data-stop="1024.799000">intuition from using Unix tools.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1024.800000" data-stop="1028.199000">Which is one of the points I wanted to bring up.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1028.000000">17:08</span> <strong>newcomers without much computing experience might even find it easier (no C-c expectations, C-v etc)</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="1028.200000" data-stop="1029.759000"><strong class="speaker-name">Philip:</strong> Who is this mythical newcomer?</span> <span class="audio-time caption" data-speaker="Philip" data-start="1029.760000" data-stop="1032.039000">What's their actual background?</span> <span class="audio-time caption" data-speaker="Philip" data-start="1032.040000" data-stop="1035.379000">Because I claim, and this might be controversial,</span> <span class="audio-time caption" data-speaker="Philip" data-start="1035.380000" data-stop="1038.729000">that if someone's actually new to using computers</span> <span class="audio-time caption" data-speaker="Philip" data-start="1038.730000" data-stop="1041.748000">at all, which is something I have seen, like</span> <span class="audio-time caption" data-speaker="Philip" data-start="1041.749000" data-stop="1043.567000">people who have never programmed, people who have</span> <span class="audio-time caption" data-speaker="Philip" data-start="1043.568000" data-stop="1046.767000">never used Unix, people who have never used more</span> <span class="audio-time caption" data-speaker="Philip" data-start="1046.768000" data-stop="1051.233000">than a web browser, to exaggerate, they appear to</span> <span class="audio-time caption" data-speaker="Philip" data-start="1051.234000" data-stop="1052.933000">do fine with Emacs because they have no</span> <span class="audio-time caption" data-speaker="Philip" data-start="1052.934000" data-stop="1056.067000">expectation of using C-c, C-v, C-c, and so on.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1056.068000" data-stop="1058.200000">They know that they have to use the buttons</span> <span class="audio-time caption" data-speaker="Philip" data-start="1058.201000" data-stop="1058.767000">up there.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1058.768000" data-stop="1060.100000">So in that sense, they're fine.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1060.101000" data-stop="1063.329000">There's an optimization loop</span> <span class="audio-time caption" data-speaker="Philip" data-start="1063.330000" data-stop="1065.367000">when you're used to these shortcuts</span> <span class="audio-time caption" data-speaker="Philip" data-start="1065.368000" data-stop="1067.433000">and a few of these conventions how to move around,</span> <span class="audio-time caption" data-speaker="Philip" data-start="1067.434000" data-stop="1074.359000">that Emacs defaults appear to be inconvenient.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1074.360000" data-stop="1076.767000">So that's also a distinction you have to make in</span> <span class="audio-time caption" data-speaker="Philip" data-start="1076.768000" data-stop="1078.900000">that setting.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1078.901000" data-stop="1080.467000"><strong class="speaker-name">Prot:</strong> Exactly, exactly.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1080.468000" data-stop="1083.000000">Plus you cannot optimize for everybody.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1083.001000" data-stop="1086.040000">Eventually you just have to make some assumptions.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="1086.041000" data-stop="1087.580000"><strong class="speaker-name">Philip:</strong> Exactly.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1087.581000" data-stop="1090.600000">But what these assumptions are is the controversial...</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1090.600000" data-stop="1092.280000"><strong class="speaker-name">Prot:</strong> I think the way you approached it</span> <span class="audio-time caption" data-speaker="Prot" data-start="1092.280000" data-stop="1093.880000">makes sense.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1093.880000" data-stop="1096.067000">This is the reasonable way, I think, to do it.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1096.068000" data-stop="1097.767000">You have to assume that they have this</span> <span class="audio-time caption" data-speaker="Prot" data-start="1097.768000" data-stop="1098.700000">background knowledge.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1098.701000" data-stop="1100.767000">And if they don't, it's what you said.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1100.768000" data-stop="1103.833000">They don't have to relearn something because they</span> <span class="audio-time caption" data-speaker="Prot" data-start="1103.834000" data-stop="1105.100000">didn't know it to begin with.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1105.101000" data-stop="1110.339000">So they start from a good basis.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1110.000000">18:30</span> <strong>Focus group?</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1110.340000" data-stop="1112.400000"><strong class="speaker-name">Sacha:</strong> Is there interest in having some kind of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1112.401000" data-stop="1116.767000">focus group or something like that so that if we</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1116.768000" data-stop="1119.467000">come across newbies, we can say, hey, you know,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1119.468000" data-stop="1121.840000">the developers would like to be able to float</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1121.841000" data-stop="1124.067000">some questions once in a while to see what actual</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1124.068000" data-stop="1126.619000">newbies would think of this?</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="1126.620000" data-stop="1128.967000"><strong class="speaker-name">Philip:</strong> I have actually tried this once.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1128.960000" data-stop="1132.680000">I was in a hacker... what's it called?</span> <span class="audio-time caption" data-speaker="Philip" data-start="1132.680000" data-stop="1135.880000">There's this computer club in Germany and they</span> <span class="audio-time caption" data-speaker="Philip" data-start="1135.880000" data-stop="1139.760000">have local events on a regular basis and I was</span> <span class="audio-time caption" data-speaker="Philip" data-start="1139.760000" data-stop="1142.920000">going to one anyway because a few friends of mine</span> <span class="audio-time caption" data-speaker="Philip" data-start="1142.920000" data-stop="1144.840000">were going there and then I did an introduction</span> <span class="audio-time caption" data-speaker="Philip" data-start="1144.840000" data-stop="1149.320000">to Emacs course there and printed out a survey</span> <span class="audio-time caption" data-speaker="Philip" data-start="1149.320000" data-stop="1152.640000">basically, a questionnaire for Emacs neophytes.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1152.640000" data-stop="1155.320000">I think if you search for that string on the</span> <span class="audio-time caption" data-speaker="Philip" data-start="1155.320000" data-stop="1157.760000">Emacs development list, you're going to find that.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1157.760000" data-stop="1160.040000">And I gave a few people these texts.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1160.040000" data-stop="1160.800000">I printed it out.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1160.800000" data-stop="1163.600000">It was actually pieces of paper, so it wouldn't be</span> <span class="audio-time caption" data-speaker="Philip" data-start="1163.600000" data-stop="1166.560000">personally identified. There wouldn't be any</span> <span class="audio-time caption" data-speaker="Philip" data-start="1166.560000" data-stop="1168.280000">information there.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1168.280000" data-stop="1170.040000">And one of the things I thought was interesting</span> <span class="audio-time caption" data-speaker="Philip" data-start="1170.040000" data-stop="1171.920000">in the results was that the main thing people</span> <span class="audio-time caption" data-speaker="Philip" data-start="1171.920000" data-stop="1175.560000">were saying was it's overwhelming.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1175.560000" data-stop="1178.600000">Like the amount of things...</span> <span class="audio-time caption" data-speaker="Philip" data-start="1178.600000" data-stop="1179.760000">Just the default Emacs.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1179.760000" data-stop="1186.480000">No configuration, no options, no auto-completion,</span> <span class="audio-time caption" data-speaker="Philip" data-start="1186.480000" data-stop="1189.720000">no fido, whatever.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1189.720000" data-stop="1192.840000">It was just so many new things, so many</span> <span class="audio-time caption" data-speaker="Philip" data-start="1192.840000" data-stop="1196.160000">differences that they lost an overview, basically.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1196.160000" data-stop="1201.520000">This was a group of people who, I think there</span> <span class="audio-time caption" data-speaker="Philip" data-start="1201.520000" data-stop="1204.320000">were questions, and they were like, how long have</span> <span class="audio-time caption" data-speaker="Philip" data-start="1204.320000" data-stop="1205.680000">you been using computers?</span> <span class="audio-time caption" data-speaker="Philip" data-start="1205.680000" data-stop="1207.880000">Because, of course, it was so generic.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1207.880000" data-stop="1211.800000">What previous UIs have you had experience with?</span> <span class="audio-time caption" data-speaker="Philip" data-start="1211.800000" data-stop="1216.360000">Most people use Eclipse or Vi, NeoVim and even</span> <span class="audio-time caption" data-speaker="Philip" data-start="1216.360000" data-stop="1219.440000">reasonably complex Vim configurations.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1219.440000" data-stop="1222.760000">Of course, this is a bias due to the setting in</span> <span class="audio-time caption" data-speaker="Philip" data-start="1222.760000" data-stop="1225.440000">which I was asking these questions.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1225.440000" data-stop="1228.160000">I'm actually planning to repeat this experiment</span> <span class="audio-time caption" data-speaker="Philip" data-start="1228.160000" data-stop="1229.880000">because I'm going to</span> <span class="audio-time caption" data-speaker="Philip" data-start="1229.880000" data-stop="1234.160000">another one of these congresses or these meetups</span> <span class="audio-time caption" data-speaker="Philip" data-start="1234.160000" data-stop="1235.267000">in a month or so.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1235.268000" data-stop="1237.367000">I wanted to offer this again to people,</span> <span class="audio-time caption" data-speaker="Philip" data-start="1237.368000" data-stop="1243.480000">specifically seeing if these newcomer presets are</span> <span class="audio-time caption" data-speaker="Philip" data-start="1243.480000" data-stop="1245.840000">valuable or if they help people or not.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1245.880000" data-stop="1248.485000">But of course, doing this in a properly</span> <span class="audio-time caption" data-speaker="Philip" data-start="1248.486000" data-stop="1251.759000">scientific setting would be much more difficult.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1251.760000" data-stop="1253.799000">Yeah, of course.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1253.800000" data-stop="1254.719000">We need money.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1254.720000" data-stop="1257.679000">Difficult steps of doing this.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1257.680000" data-stop="1260.479000"><strong class="speaker-name">Sacha:</strong> Maybe even like a mailing list.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1260.480000" data-stop="1262.200000">We can say, hey, you know, you're new to Emacs,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1262.201000" data-stop="1267.599000">but you kind of want to make it better.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1267.600000" data-stop="1269.360000">Email this person.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1269.360000" data-stop="1271.880000">And every so often when developers have a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1271.880000" data-stop="1275.040000">question, they can say like, does this make sense</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1275.040000" data-stop="1275.280000">to you?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1275.280000" data-stop="1276.320000">Here's a screenshot.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1276.320000" data-stop="1279.459000">Or would you prefer this versus this?</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="1279.460000" data-stop="1281.233000"><strong class="speaker-name">Philip:</strong> As in, we would send an email to all</span> <span class="audio-time caption" data-speaker="Philip" data-start="1281.234000" data-stop="1283.400000">the people, but then I think, I mean, the big</span> <span class="audio-time caption" data-speaker="Philip" data-start="1283.401000" data-stop="1286.680000">question, difficulty in that sense is then data</span> <span class="audio-time caption" data-speaker="Philip" data-start="1286.680000" data-stop="1287.520000">protection, I think.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1287.520000" data-stop="1289.480000">That's what I was trying to avoid with having</span> <span class="audio-time caption" data-speaker="Philip" data-start="1289.480000" data-stop="1292.080000">this just printed out and no personal</span> <span class="audio-time caption" data-speaker="Philip" data-start="1292.080000" data-stop="1293.967000">identification, because then we have to store</span> <span class="audio-time caption" data-speaker="Philip" data-start="1293.968000" data-stop="1296.200000">email addresses.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1296.201000" data-stop="1297.667000"><strong class="speaker-name">Sacha:</strong> Okay, all right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1297.668000" data-stop="1298.300000">That's fine.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1298.301000" data-stop="1300.880000">That's fair.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="1300.880000" data-stop="1304.240000"><strong class="speaker-name">Philip:</strong> So, sounds like an excuse.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1304.240000" data-stop="1308.400000">Partially it is, but something like, I mean...</span> <span class="audio-time caption" data-speaker="Philip" data-start="1308.400000" data-stop="1311.360000">I'm not saying that my approach, what I was doing</span> <span class="audio-time caption" data-speaker="Philip" data-start="1311.360000" data-stop="1312.600000">was unbiased.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1312.600000" data-stop="1316.200000">There are people who would be more willing to</span> <span class="audio-time caption" data-speaker="Philip" data-start="1316.200000" data-stop="1317.560000">answer these things and people who are</span> <span class="audio-time caption" data-speaker="Philip" data-start="1317.560000" data-stop="1320.320000">less willing.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1320.320000" data-stop="1322.440000">I know the bias in this case because I actually</span> <span class="audio-time caption" data-speaker="Philip" data-start="1322.440000" data-stop="1324.520000">saw the people and I had a feeling for what kind</span> <span class="audio-time caption" data-speaker="Philip" data-start="1324.520000" data-stop="1325.920000">of people they were.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1325.920000" data-stop="1329.520000">So I think I'm in a better position to factor</span> <span class="audio-time caption" data-speaker="Philip" data-start="1329.520000" data-stop="1329.880000">it out.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1329.880000" data-stop="1332.560000">But if it's actually properly, if you just have</span> <span class="audio-time caption" data-speaker="Philip" data-start="1332.560000" data-stop="1335.400000">people who you send emails to</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1335.000000">22:15</span> <strong>Emacs survey before</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="1335.400000" data-stop="1338.880000"><strong class="speaker-name">Philip:</strong> I'm not sure if it remains represented because</span> <span class="audio-time caption" data-speaker="Philip" data-start="1338.880000" data-stop="1342.319000">there have been these Emacs surveys in the past.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1342.320000" data-stop="1346.200000">I remember at least two generations.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1346.200000" data-stop="1348.600000">And they're of course the ones which are</span> <span class="audio-time caption" data-speaker="Philip" data-start="1348.600000" data-stop="1354.240000">circulated on Reddit, on Hacker News, on IRC,</span> <span class="audio-time caption" data-speaker="Philip" data-start="1354.240000" data-stop="1356.440000">which I still think is a bubble of maybe</span> <span class="audio-time caption" data-speaker="Philip" data-start="1356.440000" data-stop="1359.280000">200 people.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1359.280000" data-stop="1363.600000">Like mainly 200 people and some people who are</span> <span class="audio-time caption" data-speaker="Philip" data-start="1363.600000" data-stop="1365.680000">Surrounding these groups.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1365.680000" data-stop="1368.640000">So I'm always sort of dubious because these are</span> <span class="audio-time caption" data-speaker="Philip" data-start="1368.640000" data-stop="1368.880000">the people.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1368.000000">22:48</span> <strong>people's backgrounds influence their responses</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="1368.880000" data-stop="1370.880000"><strong class="speaker-name">Philip:</strong> I mean, these are people who are much more likely</span> <span class="audio-time caption" data-speaker="Philip" data-start="1370.880000" data-stop="1376.800000">to have heard of, what's it called, Evil Mode or</span> <span class="audio-time caption" data-speaker="Philip" data-start="1376.800000" data-stop="1380.200000">something like that, or had some experience with</span> <span class="audio-time caption" data-speaker="Philip" data-start="1380.200000" data-stop="1381.320000">other editors.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1381.320000" data-stop="1387.760000">And these things all influence their responses.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1387.760000" data-stop="1389.520000">always taints the results.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1389.520000" data-stop="1392.840000">Every time these discussions are brought up on</span> <span class="audio-time caption" data-speaker="Philip" data-start="1392.865000" data-stop="1396.523000">Emacs devel, people have some level of doubts as</span> <span class="audio-time caption" data-speaker="Philip" data-start="1396.524000" data-stop="1400.239000">to how reliable the results are.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1400.240000" data-stop="1401.519000"><strong class="speaker-name">Prot:</strong> Correct, correct.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1401.520000" data-stop="1404.904000">It's hard to get reliable results, though some</span> <span class="audio-time caption" data-speaker="Prot" data-start="1404.905000" data-stop="1407.479000">data is still better than nothing.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1407.480000" data-stop="1410.113000">But granted, you don't want to base decisions on</span> <span class="audio-time caption" data-speaker="Prot" data-start="1410.114000" data-stop="1412.239000">those results, of course not.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="1412.240000" data-stop="1414.101000"><strong class="speaker-name">Philip:</strong> Yeah, that shouldn't be the last</span> <span class="audio-time caption" data-speaker="Philip" data-start="1414.102000" data-stop="1415.439000">decision-making factor.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1415.440000" data-stop="1417.936000">You should just have a function where the input</span> <span class="audio-time caption" data-speaker="Philip" data-start="1417.937000" data-stop="1420.464000">is whatever the data is, and then the output is</span> <span class="audio-time caption" data-speaker="Philip" data-start="1420.465000" data-stop="1422.239000">mechanically determined by that.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1422.240000" data-stop="1426.439000">Yes?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1426.000000">23:46</span> <strong>Hypothetical: Reset themes, to reset things back to the defaults of a specific Emacs version</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="1426.440000" data-stop="1429.312000"><strong class="speaker-name">Philip:</strong> Now, related to the preset theme, there's also been</span> <span class="audio-time caption" data-speaker="Philip" data-start="1429.313000" data-stop="1431.663000">a discussion (I don't think this has been</span> <span class="audio-time caption" data-speaker="Philip" data-start="1431.664000" data-stop="1434.433000">mentioned much online) of so-called reset themes.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1434.434000" data-stop="1437.330000">I'm not sure if you've heard of these. So the idea</span> <span class="audio-time caption" data-speaker="Philip" data-start="1437.331000" data-stop="1440.177000">would be, additionally to having preset themes of</span> <span class="audio-time caption" data-speaker="Philip" data-start="1440.178000" data-stop="1442.799000">options, which we have changed, which we would</span> <span class="audio-time caption" data-speaker="Philip" data-start="1442.800000" data-stop="1445.375000">recommend because the newcomer</span> <span class="audio-time caption" data-speaker="Philip" data-start="1445.376000" data-stop="1448.150000">preset theme makes no real assumption that the</span> <span class="audio-time caption" data-speaker="Philip" data-start="1448.151000" data-stop="1450.954000">options will be stable, so we might change</span> <span class="audio-time caption" data-speaker="Philip" data-start="1450.955000" data-stop="1453.879000">them from version to version, this gives us</span> <span class="audio-time caption" data-speaker="Philip" data-start="1453.880000" data-stop="1458.520000">some flexibility to say we have a new option. Like,</span> <span class="audio-time caption" data-speaker="Philip" data-start="1458.520000" data-stop="1459.820000">for example, if the preset theme had existed since</span> <span class="audio-time caption" data-speaker="Philip" data-start="1459.821000" data-stop="1461.999000">Emacs 29, and now in Emacs...</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1462.000000">24:22</span> <strong>package-autosuggest-mode suggests based on file extension</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="1462.000000" data-stop="1462.967000"><strong class="speaker-name">Philip:</strong> That was actually the</span> <span class="audio-time caption" data-speaker="Philip" data-start="1462.968000" data-stop="1465.700000">reason this entire discussion started when Emacs</span> <span class="audio-time caption" data-speaker="Philip" data-start="1465.701000" data-stop="1470.233000">31, that's the current release...</span> <span class="audio-time caption" data-speaker="Philip" data-start="1470.234000" data-stop="1472.733000">to be released, there's this</span> <span class="audio-time caption" data-speaker="Philip" data-start="1472.734000" data-stop="1474.367000">package-autosuggest-mode</span> <span class="audio-time caption" data-speaker="Philip" data-start="1474.368000" data-stop="1476.833000">so that's a little prompt, when it's enabled,</span> <span class="audio-time caption" data-speaker="Philip" data-start="1476.834000" data-stop="1478.967000">a little prompt in the mode line.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1478.968000" data-stop="1481.760000">You can click on it, Emacs installs the package</span> <span class="audio-time caption" data-speaker="Philip" data-start="1481.761000" data-stop="1481.760000">which it believes to be the right one</span> <span class="audio-time caption" data-speaker="Philip" data-start="1481.761000" data-stop="1487.080000">for the current file.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1487.081000" data-stop="1489.100000"><strong class="speaker-name">Prot:</strong> The major mode, right?</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="1489.101000" data-stop="1490.000000"><strong class="speaker-name">Philip:</strong> No, it's a minor mode.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1490.001000" data-stop="1490.833000">It's a global minor mode.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1490.834000" data-stop="1492.833000"><strong class="speaker-name">Prot:</strong> No, no, I mean, but it installs based on</span> <span class="audio-time caption" data-speaker="Prot" data-start="1492.834000" data-stop="1494.100000">the major mode, right?</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="1494.101000" data-stop="1495.033000"><strong class="speaker-name">Philip:</strong> Ah, yes, yes, yes.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1495.034000" data-stop="1500.767000">It installs a major mode package, which matches</span> <span class="audio-time caption" data-speaker="Philip" data-start="1500.768000" data-stop="1503.000000">the current file format being used based on</span> <span class="audio-time caption" data-speaker="Philip" data-start="1503.001000" data-stop="1506.132000">auto-mode-alist or the magic,</span> <span class="audio-time caption" data-speaker="Philip" data-start="1506.133000" data-stop="1509.115000">what's it called, magic file alist</span> <span class="audio-time caption" data-speaker="Philip" data-start="1509.116000" data-stop="1511.359000">and all these things, and it can...</span> <span class="audio-time caption" data-speaker="Philip" data-start="1511.360000" data-stop="1512.880000">We didn't want to enable this by default, but we</span> <span class="audio-time caption" data-speaker="Philip" data-start="1512.880000" data-stop="1515.360000">wanted to enable it for newcomers.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1515.400000" data-stop="1518.151000">That was actually the first option in the</span> <span class="audio-time caption" data-speaker="Philip" data-start="1518.152000" data-stop="1519.359000">newcomers preset.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1519.360000" data-stop="1522.156000">If the preset had been older, we would have still</span> <span class="audio-time caption" data-speaker="Philip" data-start="1522.157000" data-stop="1524.439000">wanted to add this to the preset theme.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1524.440000" data-stop="1525.759000">It's not supposed to be set in stone.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1525.760000" data-stop="1528.305000">Now the idea with the reset theme is, and this is</span> <span class="audio-time caption" data-speaker="Philip" data-start="1528.306000" data-stop="1530.770000">still hypothetical since we haven't implemented</span> <span class="audio-time caption" data-speaker="Philip" data-start="1530.771000" data-stop="1532.905000">it, is to have reset themes for specific</span> <span class="audio-time caption" data-speaker="Philip" data-start="1532.906000" data-stop="1533.759000">Emacs versions.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1533.760000" data-stop="1536.950000">So we, in Emacs 32, we might have an Emacs 31</span> <span class="audio-time caption" data-speaker="Philip" data-start="1536.920000" data-stop="1539.960000">reset theme for all the options that we have</span> <span class="audio-time caption" data-speaker="Philip" data-start="1539.960000" data-stop="1544.800000">changed in Emacs 31, in Emacs 32, so that we</span> <span class="audio-time caption" data-speaker="Philip" data-start="1544.800000" data-stop="1546.320000">could reset them to the previous option.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1546.320000" data-stop="1549.080000">So that in this sense too, if the discussion, if</span> <span class="audio-time caption" data-speaker="Philip" data-start="1549.080000" data-stop="1551.280000">the question is really just, we don't want to</span> <span class="audio-time caption" data-speaker="Philip" data-start="1551.280000" data-stop="1553.680000">annoy people who have...</span> <span class="audio-time caption" data-speaker="Philip" data-start="1553.680000" data-stop="1555.800000">When upgrading, of course, it's still a minor</span> <span class="audio-time caption" data-speaker="Philip" data-start="1555.800000" data-stop="1557.320000">inconvenience because they have to write</span> <span class="audio-time caption" data-speaker="Philip" data-start="1557.320000" data-stop="1561.600000">load-theme emacs31-reset in their configuration, but</span> <span class="audio-time caption" data-speaker="Philip" data-start="1561.600000" data-stop="1564.160000">it would be easier for them to actually undo</span> <span class="audio-time caption" data-speaker="Philip" data-start="1564.160000" data-stop="1564.840000">any changes.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1564.840000" data-stop="1567.080000">And in future versions of Emacs, hopefully also</span> <span class="audio-time caption" data-speaker="Philip" data-start="1567.080000" data-stop="1569.880000">persist these changes so that you can really sort</span> <span class="audio-time caption" data-speaker="Philip" data-start="1569.880000" data-stop="1573.400000">of like pinning your version of Emacs, a soft</span> <span class="audio-time caption" data-speaker="Philip" data-start="1573.400000" data-stop="1574.400000">pinning of options.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1574.400000" data-stop="1577.480000">So this is something for the future.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1577.480000" data-stop="1579.880000">Consider as well, which would be reusing the</span> <span class="audio-time caption" data-speaker="Philip" data-start="1579.880000" data-stop="1582.320000">theme approach, which is another reason why I</span> <span class="audio-time caption" data-speaker="Philip" data-start="1582.320000" data-stop="1584.600000">hope that the notion of user option themes will</span> <span class="audio-time caption" data-speaker="Philip" data-start="1584.600000" data-stop="1587.000000">become more, because it's been there from</span> <span class="audio-time caption" data-speaker="Philip" data-start="1587.000000" data-stop="1587.200000">the beginning.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1587.200000" data-stop="1592.080000">The Customize system has always supported user</span> <span class="audio-time caption" data-speaker="Philip" data-start="1592.080000" data-stop="1593.800000">options to be added, but people have always only</span> <span class="audio-time caption" data-speaker="Philip" data-start="1593.800000" data-stop="1597.040000">customized, not only... I'm not sure no one has</span> <span class="audio-time caption" data-speaker="Philip" data-start="1597.040000" data-stop="1598.800000">ever done it, but it has not been a popular</span> <span class="audio-time caption" data-speaker="Philip" data-start="1598.800000" data-stop="1600.720000">approach to use the user options, even though the</span> <span class="audio-time caption" data-speaker="Philip" data-start="1600.720000" data-stop="1606.280000">technical facilities have been there all the time.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1606.280000" data-stop="1608.720000">That's also going to be interesting if the reset</span> <span class="audio-time caption" data-speaker="Philip" data-start="1608.720000" data-stop="1610.960000">theme would be forwards compatible.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1610.960000" data-stop="1614.480000">But that's another discussion that makes it even</span> <span class="audio-time caption" data-speaker="Philip" data-start="1614.480000" data-stop="1615.440000">more complicated.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1615.440000" data-stop="1619.040000">So that you could add them hypothetically to ELPA</span> <span class="audio-time caption" data-speaker="Philip" data-start="1619.040000" data-stop="1620.160000">as a core package.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1620.160000" data-stop="1620.680000"><strong class="speaker-name">Prot:</strong> Nice. Yeah.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1621.520000" data-stop="1622.320000">Of course, the reset themes, if you</span> <span class="audio-time caption" data-speaker="Prot" data-start="1622.320000" data-stop="1625.920000">implement them, that's great because it opens up</span> <span class="audio-time caption" data-speaker="Prot" data-start="1625.920000" data-stop="1630.560000">the possibility to be a little bit more ambitious</span> <span class="audio-time caption" data-speaker="Prot" data-start="1630.560000" data-stop="1632.880000">with the defaults and break.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="1632.880000" data-stop="1636.400000"><strong class="speaker-name">Philip:</strong> Yeah. Because that's exactly... Every core...</span> <span class="audio-time caption" data-speaker="Philip" data-start="1636.400000" data-stop="1639.360000">Every default discussion boils down to: if we</span> <span class="audio-time caption" data-speaker="Philip" data-start="1639.360000" data-stop="1642.120000">break this, people won't understand what changed.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1642.120000" data-stop="1643.920000">If we change this, people won't understand</span> <span class="audio-time caption" data-speaker="Philip" data-start="1643.920000" data-stop="1646.920000">what broke. But on the other side, people like</span> <span class="audio-time caption" data-speaker="Philip" data-start="1646.920000" data-stop="1647.560000">all new...</span> <span class="audio-time caption" data-speaker="Philip" data-start="1647.560000" data-stop="1650.560000">Can we reasonably assume that all new people</span> <span class="audio-time caption" data-speaker="Philip" data-start="1650.560000" data-stop="1652.480000">would actually want this theme?</span> <span class="audio-time caption" data-speaker="Philip" data-start="1652.480000" data-stop="1654.160000">Then we want to give us some sort of more</span> <span class="audio-time caption" data-speaker="Philip" data-start="1654.160000" data-stop="1656.200000">flexibility in this sense without actually the</span> <span class="audio-time caption" data-speaker="Philip" data-start="1656.200000" data-stop="1658.320000">support, because I think that the value</span> <span class="audio-time caption" data-speaker="Philip" data-start="1658.320000" data-stop="1661.680000">proposition of having a stable interface where</span> <span class="audio-time caption" data-speaker="Philip" data-start="1661.680000" data-stop="1665.440000">you can expect the appearance of the theme to be</span> <span class="audio-time caption" data-speaker="Philip" data-start="1665.440000" data-stop="1668.280000">somewhat stable over time, how Emacs behaves,</span> <span class="audio-time caption" data-speaker="Philip" data-start="1668.280000" data-stop="1672.879000">that's actually a positive thing.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1672.000000">27:52</span> <strong>Emacs 32: bundled versions of Emacs (Big Emacs - distributions that include more packages)</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="1672.880000" data-stop="1678.080000"><strong class="speaker-name">Philip:</strong> And finally, in Emacs 32, this is also a finally.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1678.080000" data-stop="1680.760000">For now, one thing I just thought of, which I was</span> <span class="audio-time caption" data-speaker="Philip" data-start="1680.760000" data-stop="1684.320000">reminded of, there's a big plan for Emacs 31.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1684.320000" data-stop="1688.040000">This is one of, I've never pronounced his name,</span> <span class="audio-time caption" data-speaker="Philip" data-start="1688.040000" data-stop="1692.440000">Sean Whitton, I think it should be pronounced.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1692.440000" data-stop="1696.160000">He said that one of his plans as a maintainer</span> <span class="audio-time caption" data-speaker="Philip" data-start="1696.160000" data-stop="1699.960000">will be to work on the bundled version of Emacs,</span> <span class="audio-time caption" data-speaker="Philip" data-start="1699.960000" data-stop="1701.880000">which some people, including myself, have been</span> <span class="audio-time caption" data-speaker="Philip" data-start="1701.880000" data-stop="1703.440000">calling Fat Emacs.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1703.440000" data-stop="1707.240000">So adding, selecting certain packages from ELPA,</span> <span class="audio-time caption" data-speaker="Philip" data-start="1707.240000" data-stop="1709.960000">from GNU ELPA, and bundle a secondary</span> <span class="audio-time caption" data-speaker="Philip" data-start="1709.960000" data-stop="1711.720000">distribution of Emacs which would include</span> <span class="audio-time caption" data-speaker="Philip" data-start="1711.720000" data-stop="1713.640000">additional packages,</span> <span class="audio-time caption" data-speaker="Philip" data-start="1713.640000" data-stop="1715.760000">Which are currently, so for example, one example</span> <span class="audio-time caption" data-speaker="Philip" data-start="1715.760000" data-stop="1716.320000">would be org-tex.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1716.320000" data-stop="1718.880000">And then you could, when you install Emacs, you</span> <span class="audio-time caption" data-speaker="Philip" data-start="1718.880000" data-stop="1720.680000">could install, I don't know, big or fat</span> <span class="audio-time caption" data-speaker="Philip" data-start="1720.680000" data-stop="1721.840000">or whatever...</span> <span class="audio-time caption" data-speaker="Philip" data-start="1721.840000" data-stop="1724.480000">Big Emacs with all these packages pre-installed,</span> <span class="audio-time caption" data-speaker="Philip" data-start="1724.480000" data-stop="1726.320000">which would be pinned to the right version which</span> <span class="audio-time caption" data-speaker="Philip" data-start="1726.320000" data-stop="1728.600000">we would have</span> <span class="audio-time caption" data-speaker="Philip" data-start="1728.600000" data-stop="1730.920000">hopefully ensured that they're actually compatible</span> <span class="audio-time caption" data-speaker="Philip" data-start="1730.920000" data-stop="1731.400000">with one another.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1731.400000" data-stop="1733.920000">And then you have the normal Emacs, which would</span> <span class="audio-time caption" data-speaker="Philip" data-start="1733.920000" data-stop="1735.160000">be the thinner one.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1735.160000" data-stop="1737.000000">And an interesting corollary of all of this would</span> <span class="audio-time caption" data-speaker="Philip" data-start="1737.000000" data-stop="1740.760000">also be that if the way from ELPA into the core</span> <span class="audio-time caption" data-speaker="Philip" data-start="1740.760000" data-stop="1743.840000">would be made easier, that the way out of the</span> <span class="audio-time caption" data-speaker="Philip" data-start="1743.840000" data-stop="1747.160000">core into ELPA would also be made easier.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1747.160000" data-stop="1749.440000">Because that would mean it's more easier to</span> <span class="audio-time caption" data-speaker="Philip" data-start="1749.440000" data-stop="1752.680000">deprecate packages over time since you can</span> <span class="audio-time caption" data-speaker="Philip" data-start="1752.680000" data-stop="1753.840000">install it.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1753.840000" data-stop="1756.040000">This protective layer, let's say, protective</span> <span class="audio-time caption" data-speaker="Philip" data-start="1756.040000" data-stop="1759.520000">layer, protected merely by inconvenience and the</span> <span class="audio-time caption" data-speaker="Philip" data-start="1759.520000" data-stop="1762.640000">annoyance of moving these packages in and out,</span> <span class="audio-time caption" data-speaker="Philip" data-start="1762.640000" data-stop="1764.040000">would fade away over time.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1764.040000" data-stop="1767.640000">Some cruft within Emacs itself, within core</span> <span class="audio-time caption" data-speaker="Philip" data-start="1767.640000" data-stop="1770.520000">Emacs, could be moved to ELPA.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1770.520000" data-stop="1773.760000">So we could actually thin down Emacs.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1773.760000" data-stop="1775.120000">That's one possibility.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1775.120000" data-stop="1776.200000">Oh, that's big.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1776.200000" data-stop="1777.000000">Yeah.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1777.000000" data-stop="1778.440000">One strand of commentary in that direction.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1778.440000" data-stop="1783.400000">That's something that I'm planning to help in the</span> <span class="audio-time caption" data-speaker="Philip" data-start="1783.400000" data-stop="1785.680000">Emacs 32 development cycle.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1785.680000" data-stop="1788.080000">Because these options then could also be in...</span> <span class="audio-time caption" data-speaker="Philip" data-start="1788.080000" data-stop="1791.600000">Any options related to this could also be added</span> <span class="audio-time caption" data-speaker="Philip" data-start="1791.600000" data-stop="1794.160000">to the newcomers preset theme.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1794.000000">29:54</span> <strong>Selection versus multiple completion</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="1794.160000" data-stop="1798.120000"><strong class="speaker-name">Philip:</strong> So one could of course... Vertico or these</span> <span class="audio-time caption" data-speaker="Philip" data-start="1798.120000" data-stop="1801.120000">interactive selection packages... I think I've</span> <span class="audio-time caption" data-speaker="Philip" data-start="1801.120000" data-stop="1802.800000">commented that before there is a certain</span> <span class="audio-time caption" data-speaker="Philip" data-start="1802.800000" data-stop="1804.560000">controversy there. I think that</span> <span class="audio-time caption" data-speaker="Philip" data-start="1804.560000" data-stop="1809.640000">there's a certain controversy that</span> <span class="audio-time caption" data-speaker="Philip" data-start="1809.640000" data-stop="1811.520000">selection is not always the same as text</span> <span class="audio-time caption" data-speaker="Philip" data-start="1811.520000" data-stop="1814.920000">expansion, which is sometimes like... There are, I</span> <span class="audio-time caption" data-speaker="Philip" data-start="1814.920000" data-stop="1820.200000">think, the certain... skeleton, or there's</span> <span class="audio-time caption" data-speaker="Philip" data-start="1820.200000" data-stop="1822.440000">this insert... what's it called, auto-insert command...</span> <span class="audio-time caption" data-speaker="Philip" data-start="1822.440000" data-stop="1826.160000">It's not auto-insert, something like that, that</span> <span class="audio-time caption" data-speaker="Philip" data-start="1826.160000" data-stop="1829.160000">prompts the user for multiple things, but it's not</span> <span class="audio-time caption" data-speaker="Philip" data-start="1829.160000" data-stop="1831.400000">written using [completing-read-multiple], but it's</span> <span class="audio-time caption" data-speaker="Philip" data-start="1831.400000" data-stop="1832.720000">written in a way that there's a</span> <span class="audio-time caption" data-speaker="Philip" data-start="1832.720000" data-stop="1836.520000">manual loop, which waits for an empty input to</span> <span class="audio-time caption" data-speaker="Philip" data-start="1836.520000" data-stop="1839.640000">occur. But if you're using vertico or fido,</span> <span class="audio-time caption" data-speaker="Philip" data-start="1839.640000" data-stop="1841.920000">by default, if you just press RET, you don't</span> <span class="audio-time caption" data-speaker="Philip" data-start="1841.920000" data-stop="1843.840000">actually have an empty input. You just select</span> <span class="audio-time caption" data-speaker="Philip" data-start="1843.840000" data-stop="1846.760000">the default option. There's settings like</span> <span class="audio-time caption" data-speaker="Philip" data-start="1846.760000" data-stop="1849.680000">these which where these sort of these two kinds</span> <span class="audio-time caption" data-speaker="Philip" data-start="1849.680000" data-stop="1853.120000">of completion diverge from one another which</span> <span class="audio-time caption" data-speaker="Philip" data-start="1853.120000" data-stop="1855.400000">which is also something I've been talking about</span> <span class="audio-time caption" data-speaker="Philip" data-start="1855.400000" data-stop="1857.720000">for a few years but never came around to</span> <span class="audio-time caption" data-speaker="Philip" data-start="1857.720000" data-stop="1859.480000">implementing that there should be an API</span> <span class="audio-time caption" data-speaker="Philip" data-start="1859.480000" data-stop="1862.080000">distinction between actually selecting user</span> <span class="audio-time caption" data-speaker="Philip" data-start="1862.080000" data-stop="1865.560000">options from a list and the completion interface</span> <span class="audio-time caption" data-speaker="Philip" data-start="1865.560000" data-stop="1868.720000">which we have for files or commands currently.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1868.720000" data-stop="1870.760000">These are semantically two different things, which</span> <span class="audio-time caption" data-speaker="Philip" data-start="1870.760000" data-stop="1874.520000">would be interesting to see if it would be worth</span> <span class="audio-time caption" data-speaker="Philip" data-start="1874.520000" data-stop="1878.440000">distinguishing the two in a technical sense,</span> <span class="audio-time caption" data-speaker="Philip" data-start="1878.440000" data-stop="1880.800000">because that would mean that in certain settings,</span> <span class="audio-time caption" data-speaker="Philip" data-start="1880.800000" data-stop="1882.800000">we could enable Fido. I totally admit that</span> <span class="audio-time caption" data-speaker="Philip" data-start="1882.800000" data-stop="1885.240000">Fido and Vertico have their advantages when it</span> <span class="audio-time caption" data-speaker="Philip" data-start="1885.240000" data-stop="1887.640000">comes to discoverability over standard</span> <span class="audio-time caption" data-speaker="Philip" data-start="1887.640000" data-stop="1888.400000">text completion.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1888.400000" data-stop="1891.440000">The compromise now was that in Emacs 31 there's</span> <span class="audio-time caption" data-speaker="Philip" data-start="1891.440000" data-stop="1894.560000">this option, I think it's eager completion</span> <span class="audio-time caption" data-speaker="Philip" data-start="1894.560000" data-stop="1896.520000">updating or something.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1896.520000" data-stop="1898.160000">It's a combination, it's a permutation of these</span> <span class="audio-time caption" data-speaker="Philip" data-start="1898.160000" data-stop="1901.640000">words in some sense.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1901.640000" data-stop="1904.960000">So that's if the completions buffer pops up.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1904.960000" data-stop="1908.033000">No, you don't have to...</span> <span class="audio-time caption" data-speaker="Philip" data-start="1908.034000" data-stop="1909.667000">It doesn't matter.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1909.668000" data-stop="1912.480000">You don't have to visualize it.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1912.480000" data-stop="1915.160000">Yeah, where they update as you type.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1915.160000" data-stop="1917.040000">Updates as you type, yeah.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1917.040000" data-stop="1920.040000">But that doesn't occur down there, but it only</span> <span class="audio-time caption" data-speaker="Philip" data-start="1920.040000" data-stop="1922.160000">occurs in the completions buffer.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1922.160000" data-stop="1924.240000">That's sort of a compromise.</span> <span class="audio-time caption" data-speaker="Philip" data-start="1924.240000" data-stop="1927.539000">That's Fido, right?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1927.520000" data-stop="1930.900000"><strong class="speaker-name">Prot:</strong> But the generic completions has had a lot</span> <span class="audio-time caption" data-speaker="Prot" data-start="1930.901000" data-stop="1933.400000">of improvements over the last few years.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1933.400000" data-stop="1936.700000">And in Emacs 31, it's in a very good state, all</span> <span class="audio-time caption" data-speaker="Prot" data-start="1936.701000" data-stop="1938.479000">things considered.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="1938.480000" data-stop="1941.333000"><strong class="speaker-name">Philip:</strong> Which was also partially driven by your</span> <span class="audio-time caption" data-speaker="Philip" data-start="1941.334000" data-stop="1943.560000">MCT package?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1943.560000" data-stop="1944.600000"><strong class="speaker-name">Prot:</strong> MCT, yeah.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1944.601000" data-stop="1946.520000">Which was an experiment, of course.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1946.520000" data-stop="1952.400000">But yeah, it's basically that idea.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1952.400000" data-stop="1954.760000">Because I have used this in earnest, like the</span> <span class="audio-time caption" data-speaker="Prot" data-start="1954.760000" data-stop="1957.040000">default like this, I have used it for a long time</span> <span class="audio-time caption" data-speaker="Prot" data-start="1957.040000" data-stop="1959.560000">in earnest, like just defaults.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1959.560000" data-stop="1960.200000">It's very good.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1960.200000" data-stop="1962.600000">It's for sure very good.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1962.600000" data-stop="1967.120000">Whereas Fido and Vertico are better if you are</span> <span class="audio-time caption" data-speaker="Prot" data-start="1967.120000" data-stop="1969.840000">just getting started and you don't know that</span> <span class="audio-time caption" data-speaker="Prot" data-start="1969.840000" data-stop="1972.560000">there is a completion on the mini buffer and</span> <span class="audio-time caption" data-speaker="Prot" data-start="1972.560000" data-stop="1975.000000">somehow there is a distinction between the two.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1975.000000" data-stop="1977.680000">Like, for somebody who is getting started</span> <span class="audio-time caption" data-speaker="Prot" data-start="1977.680000" data-stop="1980.720000">especially, I think this interface is not good.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1980.720000" data-stop="1982.880000">But if you know what you are doing, I think this</span> <span class="audio-time caption" data-speaker="Prot" data-start="1982.880000" data-stop="1985.200000">interface actually works perfectly.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1985.200000" data-stop="1987.960000">And it has a lot of options.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1987.960000" data-stop="1989.880000">So, Sacha, what you are showing there is the</span> <span class="audio-time caption" data-speaker="Prot" data-start="1989.880000" data-stop="1993.440000">absolute default, but it has so many options that</span> <span class="audio-time caption" data-speaker="Prot" data-start="1993.440000" data-stop="1996.240000">you can make it look actually quite different</span> <span class="audio-time caption" data-speaker="Prot" data-start="1996.240000" data-stop="1999.960000">from this and very similar to Vertico, for</span> <span class="audio-time caption" data-speaker="Prot" data-start="1999.960000" data-stop="2002.880000">example, in terms of the user experience.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2002.880000" data-stop="2005.419000">I just realized that...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2005.420000" data-stop="2007.133000"><strong class="speaker-name">Sacha:</strong> Oh, I just realized that if you do the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2007.134000" data-stop="2010.833000">TAB TAB, if you do the TAB TAB, it now goes to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2010.834000" data-stop="2012.520000">that one, which is great, but you can't filter it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2012.520000" data-stop="2013.200000">from there.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2013.200000" data-stop="2017.459000">You can't type into it and have stuff happen.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="2017.460000" data-stop="2018.500000"><strong class="speaker-name">Philip:</strong> Yeah, it's not down there.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2018.501000" data-stop="2021.640000">If you're down there in the mini-buffer, you type.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2021.641000" data-stop="2025.667000">There you have just a regular text buffer, so you</span> <span class="audio-time caption" data-speaker="Philip" data-start="2025.668000" data-stop="2028.920000">can search or you can select stuff out of there.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2028.920000" data-stop="2030.933000"><strong class="speaker-name">Prot:</strong> And that's also an option, by the way.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2030.934000" data-stop="2033.840000">So what happens on the second tab, for example,</span> <span class="audio-time caption" data-speaker="Prot" data-start="2033.840000" data-stop="2035.099000">so you can configure that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2035.100000" data-stop="2036.720000"><strong class="speaker-name">Sacha:</strong> Right, so that was the second tab</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2036.720000" data-stop="2040.640000">behavior from newcomer-presets.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="2040.640000" data-stop="2043.600000"><strong class="speaker-name">Philip:</strong> That's the option I proposed and then</span> <span class="audio-time caption" data-speaker="Philip" data-start="2043.601000" data-stop="2044.920000">objected to.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2044.920000" data-stop="2046.880000"><strong class="speaker-name">Sacha:</strong> Yes, work in progress.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2046.880000" data-stop="2048.920000">So basically, you have these newcomers.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2048.920000" data-stop="2051.720000">We're trying to figure out how to get them</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2051.720000" data-stop="2053.280000">through their learning journey.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2053.280000" data-stop="2056.000000">The newcomer presets can smooth over some of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2056.000000" data-stop="2056.840000">the edges.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2056.840000" data-stop="2058.520000">It can get over that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2058.520000" data-stop="2060.800000">"Yes, there are a lot of options, but at least</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2060.800000" data-stop="2063.200000">M-x with tab completion will show you the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2063.200000" data-stop="2064.967000">things so that you don't have to memorize the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2064.968000" data-stop="2066.000000">names as much."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2066.001000" data-stop="2068.100000">You can recognize them from the list.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2068.101000" data-stop="2070.479000">You can narrow it down.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="2070.480000" data-stop="2072.533000"><strong class="speaker-name">Philip:</strong> The behavior is supposed to actually be</span> <span class="audio-time caption" data-speaker="Philip" data-start="2072.534000" data-stop="2074.333000">similar to Bash,</span> <span class="audio-time caption" data-speaker="Philip" data-start="2074.334000" data-stop="2079.720000">the way Bash does completion.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2079.000000">34:39</span> <strong>Manuals</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2079.720000" data-stop="2081.467000"><strong class="speaker-name">Sacha:</strong> It's probably still... we're going to need</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2081.468000" data-stop="2085.320000">them to read the tutorial, and we're going to need</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2085.320000" data-stop="2093.160000">them to use a lot of patience as they get used to Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2093.160000" data-stop="2095.520000">I am not quite sure yet if we can get them all</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2095.520000" data-stop="2098.240000">the way to, all right, here's how you open your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2098.240000" data-stop="2101.560000">config file and define your own keyboard</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2101.560000" data-stop="2104.480000">shortcuts, for example.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2104.480000" data-stop="2108.619000">Bit of a journey.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2108.000000">35:08</span> <strong>More examples?</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="2108.620000" data-stop="2111.133000"><strong class="speaker-name">Prot:</strong> I think that one way to do that is to</span> <span class="audio-time caption" data-speaker="Prot" data-start="2111.134000" data-stop="2112.880000">have more examples in the manual.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2112.880000" data-stop="2116.520000">Like, here is how you do this, here is how you</span> <span class="audio-time caption" data-speaker="Prot" data-start="2116.520000" data-stop="2117.000000">do that.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="2117.034000" data-stop="2122.899000"><strong class="speaker-name">Philip:</strong> Or there's this other manual, the Emacs FAQ.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2122.900000" data-stop="2125.720000"><strong class="speaker-name">Prot:</strong> I don't mind where it would be, like FAQ</span> <span class="audio-time caption" data-speaker="Prot" data-start="2125.720000" data-stop="2126.680000">is totally fine.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2126.978000" data-stop="2128.019000">I don't mind exactly where it would be, but</span> <span class="audio-time caption" data-speaker="Prot" data-start="2128.459000" data-stop="2130.941000">somewhere in the documentation, like common</span> <span class="audio-time caption" data-speaker="Prot" data-start="2131.021000" data-stop="2133.523000">patterns of Emacs configuration kind of thing.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2134.044000" data-stop="2136.306000">Maybe it already exists, so if it exists, then of</span> <span class="audio-time caption" data-speaker="Prot" data-start="2136.346000" data-stop="2137.246000">course even better.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="2138.507000" data-stop="2142.451000"><strong class="speaker-name">Philip:</strong> Emacs FAQ has some things on finding</span> <span class="audio-time caption" data-speaker="Philip" data-start="2142.471000" data-stop="2143.952000">related packages,</span> <span class="audio-time caption" data-speaker="Philip" data-start="2144.354000" data-stop="2147.300000">common requsts, bug reports, but maybe it was...</span> <span class="audio-time caption" data-speaker="Philip" data-start="2147.301000" data-stop="2149.467000">I remember there's something. If I link to it...</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2149.468000" data-stop="2151.779000"><strong class="speaker-name">Prot:</strong> Where is the FAQ?</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="2151.780000" data-stop="2165.477000"><strong class="speaker-name">Philip:</strong> It's a separate manual.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2165.478000" data-stop="2168.961000"><strong class="speaker-name">Sacha:</strong> We do not have it from here, not from the splash screen,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2168.962000" data-stop="2178.459000">but it is available from the Help menu.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="2178.460000" data-stop="2182.599000"><strong class="speaker-name">Philip:</strong> I think it's not been that thoroughly maintained.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2182.000000">36:22</span> <strong>find-user-init-file?</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2182.600000" data-stop="2184.153000"><strong class="speaker-name">Sacha:</strong> I'm going to take advantage of the fact</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2184.173000" data-stop="2186.096000">that you've actually been reading emacs-devel.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2187.579000" data-stop="2190.965000">Has there already been a long discussion about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2191.025000" data-stop="2196.315000">whether a M-x visit-user-init-file makes sense?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2198.793000" data-stop="2202.499000">An interactive command that you can use to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2202.599000" data-stop="2205.763000">open... I was trying to find it, but even with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2205.783000" data-stop="2208.147000">Yhetil's search, I was like, okay, there are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2208.167000" data-stop="2208.728000">four threads.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2209.209000" data-stop="2211.392000">One of them was a long time ago, and the other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2211.472000" data-stop="2213.315000">one was from even longer than that, so I didn't</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2213.355000" data-stop="2218.342000">know whether it was some other discussion.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="2218.903000" data-stop="2220.726000"><strong class="speaker-name">Philip:</strong> I don't recall any such discussion</span> <span class="audio-time caption" data-speaker="Philip" data-start="2220.946000" data-stop="2223.450000">recently, but I also don't think that anybody</span> <span class="audio-time caption" data-speaker="Philip" data-start="2224.358000" data-stop="2225.299000">Objection to it.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2225.319000" data-stop="2227.943000">So it's really just a matter of someone writing</span> <span class="audio-time caption" data-speaker="Philip" data-start="2228.003000" data-stop="2230.065000">it down and adding the documentation.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2230.566000" data-stop="2231.587000"><strong class="speaker-name">Sacha:</strong> I would like to do that.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="2231.607000" data-stop="2235.332000"><strong class="speaker-name">Philip:</strong> It would be quite likely 24 hours.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2235.352000" data-stop="2239.599000"><strong class="speaker-name">Sacha:</strong> Okay.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="2239.600000" data-stop="2242.041000"><strong class="speaker-name">Philip:</strong> On the master branch and not Emacs 31</span> <span class="audio-time caption" data-speaker="Philip" data-start="2242.061000" data-stop="2244.164000">branch, which would be slightly...</span> <span class="audio-time caption" data-speaker="Philip" data-start="2244.284000" data-stop="2244.844000">It's fine.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2244.864000" data-stop="2245.966000">Yeah, but even having a button...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2246.787000" data-stop="2248.790000"><strong class="speaker-name">Sacha:</strong> If it makes it in someday, it doesn't</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2248.810000" data-stop="2250.011000">have to be in the splash screen.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2250.031000" data-stop="2253.015000">It just has to start off being available through...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2253.130000" data-stop="2260.478000">And then we don't have to keep telling people, oh</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2260.498000" data-stop="2262.640000">yeah, do a describe-variable on the init file</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2262.680000" data-stop="2265.584000">just in case your init file is actually .emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2265.644000" data-stop="2268.867000">instead of the .emacs.d/init.el that other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2268.907000" data-stop="2270.309000">people are telling you to use instead.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2271.069000" data-stop="2272.031000">It's a bit of a mess, right?</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="2272.051000" data-stop="2273.172000"><strong class="speaker-name">Philip:</strong> I think some people have been</span> <span class="audio-time caption" data-speaker="Philip" data-start="2273.232000" data-stop="2276.756000">recommending doing M-: and then calling</span> <span class="audio-time caption" data-speaker="Philip" data-start="2276.776000" data-stop="2278.918000">the [find-file] function with the user init...</span> <span class="audio-time caption" data-speaker="Philip" data-start="2279.455000" data-stop="2281.178000">What's the name of the variable again?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2281.278000" data-stop="2283.061000"><strong class="speaker-name">Sacha:</strong> user-init-file.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2283.081000" data-stop="2285.245000"><strong class="speaker-name">Prot:</strong> User Emacs file.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2285.285000" data-stop="2285.706000"><strong class="speaker-name">Sacha:</strong> Here we go.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2285.806000" data-stop="2286.667000">user-init-file.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2287.188000" data-stop="2287.629000">Here we go.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2287.849000" data-stop="2288.751000">That's the thing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2289.292000" data-stop="2290.013000">Yeah, exactly.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="2290.434000" data-stop="2290.975000"><strong class="speaker-name">Philip:</strong> And if you do</span> <span class="audio-time caption" data-speaker="Philip" data-start="2291.055000" data-stop="2295.042000">M-: (find-file user-init-file),</span> <span class="audio-time caption" data-speaker="Philip" data-start="2295.062000" data-stop="2296.644000">then it would basically do the</span> <span class="audio-time caption" data-speaker="Philip" data-start="2296.684000" data-stop="2296.965000">same thing.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2296.985000" data-stop="2300.491000">That's why I'm saying it's such a minor function</span> <span class="audio-time caption" data-speaker="Philip" data-start="2300.511000" data-stop="2303.556000">that I don't expect any objections.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2303.688000" data-stop="2304.489000"><strong class="speaker-name">Sacha:</strong> Okay, okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2304.669000" data-stop="2307.031000">So I'm going to suggest that to Emacs Devel at</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2307.071000" data-stop="2307.872000">some point.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="2307.892000" data-stop="2309.813000"><strong class="speaker-name">Philip:</strong> I've had the same idea many times</span> <span class="audio-time caption" data-speaker="Philip" data-start="2309.893000" data-stop="2314.497000">myself, but the transience of memory has thrown</span> <span class="audio-time caption" data-speaker="Philip" data-start="2314.538000" data-stop="2317.220000">its way before I actually ended up doing it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2318.000000">38:38</span> <strong>Getting over the reverence for Emacs's history</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2318.401000" data-stop="2320.182000"><strong class="speaker-name">Sacha:</strong> Sometimes I am reluctant to suggest</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2320.243000" data-stop="2322.304000">things because I figure Emacs is such a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2322.384000" data-stop="2324.046000">long history.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2324.306000" data-stop="2326.448000">Probably someone has thought of this already, and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2326.508000" data-stop="2328.310000">it's probably been discussed and bike-shedded.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2329.350000" data-stop="2332.173000">But I think there are little things that we</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2332.193000" data-stop="2331.719000">can do.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="2331.720000" data-stop="2334.539000"><strong class="speaker-name">Philip:</strong> Yeah, but then in that case,</span> <span class="audio-time caption" data-speaker="Philip" data-start="2334.540000" data-stop="2338.948000">Yeah, but I think that's actually related to</span> <span class="audio-time caption" data-speaker="Philip" data-start="2338.988000" data-stop="2340.531000">another thing I wanted to talk about.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2340.571000" data-stop="2343.015000">There's a certain sort of reverence that people</span> <span class="audio-time caption" data-speaker="Philip" data-start="2343.056000" data-stop="2345.059000">have for Emacs, because it's such a</span> <span class="audio-time caption" data-speaker="Philip" data-start="2345.100000" data-stop="2345.961000">historical project.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2345.981000" data-stop="2347.965000">But I mean, the preset theme was something that</span> <span class="audio-time caption" data-speaker="Philip" data-start="2348.025000" data-stop="2350.410000">was discussed for many times, and there were</span> <span class="audio-time caption" data-speaker="Philip" data-start="2350.450000" data-stop="2351.612000">basically no objections.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2351.672000" data-stop="2353.336000">No one said, no, we shouldn't do this, this is a</span> <span class="audio-time caption" data-speaker="Philip" data-start="2353.396000" data-stop="2354.097000">bad idea.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2355.207000" data-stop="2357.891000">I hope it's not only because I proposed it or</span> <span class="audio-time caption" data-speaker="Philip" data-start="2357.911000" data-stop="2360.014000">something, or like the package also suggests that.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2360.475000" data-stop="2363.279000">Most of the things I've been working on for Emacs</span> <span class="audio-time caption" data-speaker="Philip" data-start="2363.299000" data-stop="2366.344000">31, no one objected to.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2366.364000" data-stop="2369.389000">And there's two sides to this.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2369.409000" data-stop="2373.375000">There's some people who actually go overboard</span> <span class="audio-time caption" data-speaker="Philip" data-start="2373.415000" data-stop="2374.837000">with this and try and reinvent.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2374.877000" data-stop="2377.281000">Like when reviewing packages, you see this a lot</span> <span class="audio-time caption" data-speaker="Philip" data-start="2377.301000" data-stop="2379.644000">of people try and reinvent functionality, which</span> <span class="audio-time caption" data-speaker="Philip" data-start="2379.965000" data-stop="2383.510000">is basically just giving a new name</span> <span class="audio-time caption" data-speaker="Philip" data-start="2384.198000" data-stop="2386.201000">Combining two things and giving it a new name</span> <span class="audio-time caption" data-speaker="Philip" data-start="2386.241000" data-stop="2390.868000">which isn't always necessary but might be useful</span> <span class="audio-time caption" data-speaker="Philip" data-start="2390.948000" data-stop="2392.751000">and then it's some discussion like can we</span> <span class="audio-time caption" data-speaker="Philip" data-start="2392.771000" data-stop="2394.874000">actually make more out of this and that's a</span> <span class="audio-time caption" data-speaker="Philip" data-start="2394.914000" data-stop="2398.719000">different thing but then there's the people who I</span> <span class="audio-time caption" data-speaker="Philip" data-start="2398.760000" data-stop="2401.263000">probably lean more towards that side when I think</span> <span class="audio-time caption" data-speaker="Philip" data-start="2401.303000" data-stop="2404.348000">to myself the way I'm doing this is stupid or</span> <span class="audio-time caption" data-speaker="Philip" data-start="2404.388000" data-stop="2406.711000">this is not as efficient people have been using</span> <span class="audio-time caption" data-speaker="Philip" data-start="2406.791000" data-stop="2408.995000">Emacs for 40 years of course there probably has</span> <span class="audio-time caption" data-speaker="Philip" data-start="2409.015000" data-stop="2410.577000">to be a better way to do this</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2411.000000">40:11</span> <strong>Changes are more likely to happen when someone puts in the work to make a patch</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="2411.030000" data-stop="2413.213000"><strong class="speaker-name">Philip:</strong> And sometimes it turns out it simply hasn't been</span> <span class="audio-time caption" data-speaker="Philip" data-start="2413.253000" data-stop="2417.098000">implemented and no one has simply done this</span> <span class="audio-time caption" data-speaker="Philip" data-start="2418.299000" data-stop="2420.682000">actually small effort of preparing a patch and</span> <span class="audio-time caption" data-speaker="Philip" data-start="2421.263000" data-stop="2423.646000">ironing out the details just some people don't</span> <span class="audio-time caption" data-speaker="Philip" data-start="2423.686000" data-stop="2425.048000">like discussions of course and it's</span> <span class="audio-time caption" data-speaker="Philip" data-start="2425.108000" data-stop="2428.673000">understandable but you can I mean there's really</span> <span class="audio-time caption" data-speaker="Philip" data-start="2428.753000" data-stop="2431.296000">no harm in sending a patch and then saying I'm</span> <span class="audio-time caption" data-speaker="Philip" data-start="2431.336000" data-stop="2432.177000">sorry I don't have</span> <span class="audio-time caption" data-speaker="Philip" data-start="2433.035000" data-stop="2434.597000">It's annoying, of course, from a</span> <span class="audio-time caption" data-speaker="Philip" data-start="2434.617000" data-stop="2435.699000">maintainer's perspective.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2435.799000" data-stop="2437.362000">I don't recommend doing it, because if you</span> <span class="audio-time caption" data-speaker="Philip" data-start="2437.782000" data-stop="2439.845000">prepare a patch but don't have the time to finish</span> <span class="audio-time caption" data-speaker="Philip" data-start="2439.906000" data-stop="2442.409000">it up, then if it's a useful thing and you</span> <span class="audio-time caption" data-speaker="Philip" data-start="2442.449000" data-stop="2444.553000">actually get someone to be interested in</span> <span class="audio-time caption" data-speaker="Philip" data-start="2444.613000" data-stop="2449.060000">maintaining it, then bringing the patch to</span> <span class="audio-time caption" data-speaker="Philip" data-start="2449.100000" data-stop="2453.767000">completion, then it's well worth just sending</span> <span class="audio-time caption" data-speaker="Philip" data-start="2453.787000" data-stop="2454.328000">a feature.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2454.348000" data-stop="2455.850000">Even sending a feature request, you don't even</span> <span class="audio-time caption" data-speaker="Philip" data-start="2455.910000" data-stop="2456.511000">have to...</span> <span class="audio-time caption" data-speaker="Philip" data-start="2456.896000" data-stop="2476.145000">I mentioned the idea of this preset theme</span> <span class="audio-time caption" data-speaker="Philip" data-start="2476.926000" data-stop="2477.807000">many times.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2479.087000" data-stop="2492.487000">I wish people would be more conscious of this</span> <span class="audio-time caption" data-speaker="Philip" data-start="2492.527000" data-stop="2496.193000">mentality, but I totally understand people who</span> <span class="audio-time caption" data-speaker="Philip" data-start="2496.533000" data-stop="2499.518000">think otherwise, because when the first time I</span> <span class="audio-time caption" data-speaker="Philip" data-start="2499.598000" data-stop="2502.963000">sent a patch to a mailing list, I was, I don't</span> <span class="audio-time caption" data-speaker="Philip" data-start="2502.983000" data-stop="2504.325000">want to say I was sweaty, but I was really</span> <span class="audio-time caption" data-speaker="Philip" data-start="2504.385000" data-stop="2507.052000">nervous because I don't know what if they</span> <span class="audio-time caption" data-speaker="Philip" data-start="2507.072000" data-stop="2508.600000">insult me or they say, "you fool,</span> <span class="audio-time caption" data-speaker="Philip" data-start="2508.601000" data-stop="2510.733000">you didn't format the test properly,</span> <span class="audio-time caption" data-speaker="Philip" data-start="2510.734000" data-stop="2515.167000">[??] secret handshake you have to do</span> <span class="audio-time caption" data-speaker="Philip" data-start="2515.168000" data-stop="2516.433000">every time you send a patch.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2516.434000" data-stop="2520.967000">Begone." Whatever. Which is of course not the case.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2520.968000" data-stop="2523.119000">Which is not to say that there are no</span> <span class="audio-time caption" data-speaker="Philip" data-start="2523.120000" data-stop="2524.600000">unpleasant people on mailing lists</span> <span class="audio-time caption" data-speaker="Philip" data-start="2524.601000" data-stop="2526.400000">but I think that there is</span> <span class="audio-time caption" data-speaker="Philip" data-start="2526.401000" data-stop="2532.233000">especially the GNU Kind Communication Guidelines,</span> <span class="audio-time caption" data-speaker="Philip" data-start="2532.234000" data-stop="2539.299000">which are supposed to give some sort of goodwill,</span> <span class="audio-time caption" data-speaker="Philip" data-start="2539.300000" data-stop="2544.567000">good faith, attention to how people</span> <span class="audio-time caption" data-speaker="Philip" data-start="2544.568000" data-stop="2547.167000">should behave on mailing lists, how they should</span> <span class="audio-time caption" data-speaker="Philip" data-start="2547.168000" data-stop="2550.019000">treat each other.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2550.020000" data-stop="2552.450000">Lots of these preconceptions turn out to be false</span> <span class="audio-time caption" data-speaker="Philip" data-start="2552.451000" data-stop="2553.399000">in there.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2553.400000" data-stop="2555.833000">That's why I also wanted to participate in this,</span> <span class="audio-time caption" data-speaker="Philip" data-start="2555.834000" data-stop="2558.133000">so that people see, oh, the people maintaining</span> <span class="audio-time caption" data-speaker="Philip" data-start="2558.134000" data-stop="2563.500000">Emacs aren't wizards locked up in a tower, but</span> <span class="audio-time caption" data-speaker="Philip" data-start="2563.501000" data-stop="2566.233000">just, I hope, normal people who happen to spend more time with Emacs.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2566.234000" data-stop="2570.467000"><strong class="speaker-name">Prot:</strong> Yeah, that's a very good point.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="2570.468000" data-stop="2577.979000"><strong class="speaker-name">Philip:</strong> Which is why they're valuable, these discussions.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2577.980000" data-stop="2580.831000"><strong class="speaker-name">Prot:</strong> And I think, Philip, just to add to this,</span> <span class="audio-time caption" data-speaker="Prot" data-start="2580.832000" data-stop="2584.033000">your example of leading with a patch, I think, is</span> <span class="audio-time caption" data-speaker="Prot" data-start="2584.034000" data-stop="2587.633000">also key here for someone who can write a patch,</span> <span class="audio-time caption" data-speaker="Prot" data-start="2587.634000" data-stop="2591.067000">of course, because it cuts out a lot of that</span> <span class="audio-time caption" data-speaker="Prot" data-start="2591.068000" data-stop="2593.867000">noise, that initial discussion of, well, maybe</span> <span class="audio-time caption" data-speaker="Prot" data-start="2593.868000" data-stop="2597.479000">yes, maybe no, because it frames minds.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2597.480000" data-stop="2599.639000">It focuses the attention on something concrete.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2599.640000" data-stop="2602.819000">And that can also... Yeah.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="2602.820000" data-stop="2604.479000"><strong class="speaker-name">Philip:</strong> Yeah.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2604.480000" data-stop="2606.079000">And...</span> <span class="audio-time caption" data-speaker="Philip" data-start="2607.387000" data-stop="2610.250000">I mean, having a patch is useful, but getting</span> <span class="audio-time caption" data-speaker="Philip" data-start="2610.310000" data-stop="2612.893000">someone interested is also helpful.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2612.913000" data-stop="2616.156000">Like the discussion when we merged which-key, I</span> <span class="audio-time caption" data-speaker="Philip" data-start="2616.216000" data-stop="2618.218000">helped with that process.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2618.319000" data-stop="2621.422000">And I'm not, I think it was, I don't remember his</span> <span class="audio-time caption" data-speaker="Philip" data-start="2621.462000" data-stop="2627.488000">last name, Jeremy, who actually did most of</span> <span class="audio-time caption" data-speaker="Philip" data-start="2627.508000" data-stop="2627.809000">the work.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2627.829000" data-stop="2628.970000">And I was reviewing his patches.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2629.010000" data-stop="2630.371000">I was helping along, but I wasn't actually</span> <span class="audio-time caption" data-speaker="Philip" data-start="2630.411000" data-stop="2631.352000">writing most of the code.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2631.392000" data-stop="2634.195000">I was just going over the proposals and helping</span> <span class="audio-time caption" data-speaker="Philip" data-start="2634.256000" data-stop="2636.618000">along and basically pushing the...</span> <span class="audio-time caption" data-speaker="Philip" data-start="2637.087000" data-stop="2639.611000">Stunning the process whenever it got stuck so</span> <span class="audio-time caption" data-speaker="Philip" data-start="2639.651000" data-stop="2642.535000">that we actually made the necessary changes for</span> <span class="audio-time caption" data-speaker="Philip" data-start="2642.575000" data-stop="2643.516000">it to get merged.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2643.000000">44:03</span> <strong>Preserving Git history of packages absorbed into the core</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="2643.536000" data-stop="2646.200000"><strong class="speaker-name">Philip:</strong> And then I did the last finishing touches of</span> <span class="audio-time caption" data-speaker="Philip" data-start="2646.360000" data-stop="2649.785000">merging, because that was also something... Every</span> <span class="audio-time caption" data-speaker="Philip" data-start="2649.825000" data-stop="2652.509000">time... We'd like to preserve the Git history of</span> <span class="audio-time caption" data-speaker="Philip" data-start="2652.549000" data-stop="2655.033000">packages we merge upstream, which is probably</span> <span class="audio-time caption" data-speaker="Philip" data-start="2655.073000" data-stop="2657.356000">something we won't be doing in that way when we</span> <span class="audio-time caption" data-speaker="Philip" data-start="2657.396000" data-stop="2659.539000">do the Fat Emacs releases.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2660.040000" data-stop="2663.004000">But the entire history of Eglot and the entire</span> <span class="audio-time caption" data-speaker="Philip" data-start="2663.044000" data-stop="2665.508000">history of which-key is actually preserved in the</span> <span class="audio-time caption" data-speaker="Philip" data-start="2665.772000" data-stop="2669.267000">Emacs Git repository. So if you open the file, you have, it's</span> <span class="audio-time caption" data-speaker="Philip" data-start="2669.268000" data-stop="2671.720000">not anymore a tree in a computer science sense, but it's</span> <span class="audio-time caption" data-speaker="Philip" data-start="2671.721000" data-stop="2674.333000">actually a proper DAG, because suddenly you have multiple</span> <span class="audio-time caption" data-speaker="Philip" data-start="2674.334000" data-stop="2677.600000">roots of the project which come together with the history</span> <span class="audio-time caption" data-speaker="Philip" data-start="2677.601000" data-stop="2680.400000">preserved. And that's an annoying thing to do with Git, but</span> <span class="audio-time caption" data-speaker="Philip" data-start="2680.401000" data-stop="2684.100000">you can do it. And not everyone knows how to do it, but a few</span> <span class="audio-time caption" data-speaker="Philip" data-start="2684.101000" data-stop="2687.233000">people have the commands written down somewhere or look it</span> <span class="audio-time caption" data-speaker="Philip" data-start="2687.234000" data-stop="2692.539000">up on a mailing list, as I do. Then that goes through, but that's...</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2692.540000" data-stop="2694.448000"><strong class="speaker-name">Prot:</strong> So they are wizards after all.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="2696.335000" data-stop="2704.619000"><strong class="speaker-name">Philip:</strong> Wizards just reading pre-written down spells.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2704.620000" data-stop="2706.166000"><strong class="speaker-name">Sacha:</strong> It'll be interesting to see if some of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2706.206000" data-stop="2709.150000">the starter kits move to using that kind of fat</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2708.597000" data-stop="2712.679000">Emacs infrastructure once that's in place.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2712.680000" data-stop="2715.311000">Because a lot of times the starter kits are there</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2715.312000" data-stop="2716.439000">to package together.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2716.440000" data-stop="2719.559000">Okay, here's a list of the packages that it uses.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2719.560000" data-stop="2723.129000">Here's the configuration that makes them play</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2723.130000" data-stop="2724.319000">nice together.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2724.320000" data-stop="2725.559000">And then here's some kind of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2725.560000" data-stop="2728.420000">Documentation or videos or a demonstration on how</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2728.421000" data-stop="2732.659000">to use it to help people get started.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="2732.660000" data-stop="2733.856000"><strong class="speaker-name">Philip:</strong> So I'm curious to see, I mean, I went</span> <span class="audio-time caption" data-speaker="Philip" data-start="2733.857000" data-stop="2737.279000">reviewing the options to add to the preset theme.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2737.280000" data-stop="2739.856000">I actually went through a number of these starter</span> <span class="audio-time caption" data-speaker="Philip" data-start="2739.857000" data-stop="2741.959000">kits to see the options they suggested.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2741.960000" data-stop="2747.879000">Selected those out which seemed reasonable to me.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2747.880000" data-stop="2751.144000">And of course, this was discussed and people</span> <span class="audio-time caption" data-speaker="Philip" data-start="2751.145000" data-stop="2753.519000">objected or added other things.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2753.520000" data-stop="2756.279000">But I am curious to see how the starter kits will</span> <span class="audio-time caption" data-speaker="Philip" data-start="2756.280000" data-stop="2758.622000">evolve in the future, because that's also</span> <span class="audio-time caption" data-speaker="Philip" data-start="2758.623000" data-stop="2760.279000">something we should mention.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2760.000000">46:00</span> <strong>Dealing with multiple types of Emacs</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="2760.280000" data-stop="2762.125000"><strong class="speaker-name">Philip:</strong> I mean, there is a big problem with the fat Emacs</span> <span class="audio-time caption" data-speaker="Philip" data-start="2762.126000" data-stop="2763.775000">approach and suddenly you have two versions</span> <span class="audio-time caption" data-speaker="Philip" data-start="2763.776000" data-stop="2764.159000">of Emacs.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2764.160000" data-stop="2766.820000">You can write a package which appears to work</span> <span class="audio-time caption" data-speaker="Philip" data-start="2766.821000" data-stop="2769.579000">fine in fat Emacs, but it depends on a package</span> <span class="audio-time caption" data-speaker="Philip" data-start="2769.580000" data-stop="2770.959000">which is not in the</span> <span class="audio-time caption" data-speaker="Philip" data-start="2770.960000" data-stop="2774.897000">core Emacs release, and then that's</span> <span class="audio-time caption" data-speaker="Philip" data-start="2774.898000" data-stop="2778.903000">something we will have to deal with in the future</span> <span class="audio-time caption" data-speaker="Philip" data-start="2778.904000" data-stop="2779.639000">as well.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2779.640000" data-stop="2782.839000">Yeah, that's a tricky part indeed.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2782.840000" data-stop="2786.859000">Yeah, but another thing relating... Yeah, the</span> <span class="audio-time caption" data-speaker="Philip" data-start="2786.860000" data-stop="2790.879000">sort of fragmentation of what core Emacs is.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2790.880000" data-stop="2793.451000">It might be a showstopper, so maybe everything</span> <span class="audio-time caption" data-speaker="Philip" data-start="2793.452000" data-stop="2795.519000">I'm telling here is just a wishlist.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2795.520000" data-stop="2798.319000">It doesn't end up actualizing.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2798.320000" data-stop="2803.359000">And that fragmentation of the setup is one of the</span> <span class="audio-time caption" data-speaker="Philip" data-start="2803.360000" data-stop="2807.749000">things... Because it's not actually really</span> <span class="audio-time caption" data-speaker="Philip" data-start="2807.750000" data-stop="2809.839000">difficult to solve.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2809.840000" data-stop="2812.047000">I mean, if you have a package that depends on</span> <span class="audio-time caption" data-speaker="Philip" data-start="2812.048000" data-stop="2814.177000">something from Fat Emacs who just added to the</span> <span class="audio-time caption" data-speaker="Philip" data-start="2814.178000" data-stop="2816.393000">package requires lines, you explicitly state</span> <span class="audio-time caption" data-speaker="Philip" data-start="2816.394000" data-stop="2817.199000">the dependency.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2817.200000" data-stop="2819.925000">But if people are sloppy, then they might not</span> <span class="audio-time caption" data-speaker="Philip" data-start="2819.926000" data-stop="2821.439000">notice this immediately.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2821.440000" data-stop="2825.499000">And you have runtime issues when people are slow.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2825.500000" data-stop="2827.279000"><strong class="speaker-name">Sacha:</strong> It's a little bit more than that, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2827.280000" data-stop="2829.549000">So for example, if you have a newbie asking a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2829.550000" data-stop="2831.982000">question, because they're using a starter kit or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2831.983000" data-stop="2834.382000">in the future, a fat Emacs thing with different</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2834.383000" data-stop="2836.756000">packages installed and different configuration</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2836.757000" data-stop="2839.079000">things that they have not personally set up.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2839.080000" data-stop="2841.643000">And they don't have the experience to know, oh</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2841.644000" data-stop="2844.039000">yeah, this is going to be related to that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2844.040000" data-stop="2846.519000">So I should mention it in the help message.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2846.520000" data-stop="2849.816000">I mean, large starter communities like, like Doom</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2849.817000" data-stop="2853.010000">Emacs and Spacemacs will have their own Discord</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2853.011000" data-stop="2855.986000">or mailing list where people can go and ask</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2855.987000" data-stop="2856.679000">for help.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2856.680000" data-stop="2858.706000">And so people will say, okay, I think I kind of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2858.707000" data-stop="2860.632000">know which starting point you're coming from</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2860.633000" data-stop="2861.639000">because it's the base.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2861.640000" data-stop="2865.139000">But if we're, you know, with the smaller starter</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2865.140000" data-stop="2868.639000">kits, they don't even know how to ask for help.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2868.640000" data-stop="2871.381000">And everyone is like, on the regular Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2871.382000" data-stop="2874.479000">communities, there's a lot of back and forth if</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2874.480000" data-stop="2877.098000">you want to dig into, okay, what do you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2877.099000" data-stop="2878.039000">have enabled?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2878.040000" data-stop="2880.279000">What is affecting your setup?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2880.280000" data-stop="2889.379000">Fat Emacs is going to run into that problem.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2889.000000">48:09</span> <strong>Fat Emacs is just about bundling more packages from ELPA, not changing the configuration for them</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="2889.380000" data-stop="2891.500000"><strong class="speaker-name">Philip:</strong> To be fair, my understanding currently</span> <span class="audio-time caption" data-speaker="Philip" data-start="2891.501000" data-stop="2893.679000">is that it wouldn't enable any other options.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2893.680000" data-stop="2895.359000">It would just bundle more packages.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2895.360000" data-stop="2898.199000"><strong class="speaker-name">Sacha:</strong> I see.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2898.200000" data-stop="2899.697000"><strong class="speaker-name">Prot:</strong> So it would be more of an issue for</span> <span class="audio-time caption" data-speaker="Prot" data-start="2899.698000" data-stop="2902.359000">package authors.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="2902.360000" data-stop="2903.439000"><strong class="speaker-name">Philip:</strong> Yeah, for package options.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2903.440000" data-stop="2906.194000">The idea is, I mean, I've used Emacs in offline</span> <span class="audio-time caption" data-speaker="Philip" data-start="2906.195000" data-stop="2907.719000">settings where it's like,</span> <span class="audio-time caption" data-speaker="Philip" data-start="2907.720000" data-stop="2913.033000">really inconvenient or impossible to install</span> <span class="audio-time caption" data-speaker="Philip" data-start="2913.034000" data-stop="2916.600000">additional packages, and just having more</span> <span class="audio-time caption" data-speaker="Philip" data-start="2916.601000" data-stop="2918.767000">functionality out of the box which ELPA provides</span> <span class="audio-time caption" data-speaker="Philip" data-start="2918.768000" data-stop="2920.886000">and you don't have to install additionally, is</span> <span class="audio-time caption" data-speaker="Philip" data-start="2920.887000" data-stop="2922.399000">basically the idea.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2922.400000" data-stop="2924.324000">Because this has been a project which has been</span> <span class="audio-time caption" data-speaker="Philip" data-start="2924.325000" data-stop="2925.119000">ongoing for years.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2925.120000" data-stop="2927.373000">I think this is ever since the conception of</span> <span class="audio-time caption" data-speaker="Philip" data-start="2927.374000" data-stop="2928.739000">ELPA itself,</span> <span class="audio-time caption" data-speaker="Philip" data-start="2928.740000" data-stop="2930.887000">which is precisely the reason why GNU ELPA</span> <span class="audio-time caption" data-speaker="Philip" data-start="2930.888000" data-stop="2933.830000">requires all packages to be signed or to be</span> <span class="audio-time caption" data-speaker="Philip" data-start="2933.831000" data-stop="2937.236000">covered by the copyright assignments, while NonGNU</span> <span class="audio-time caption" data-speaker="Philip" data-start="2937.237000" data-stop="2940.019000">ELPA does not:</span> <span class="audio-time caption" data-speaker="Philip" data-start="2940.020000" data-stop="2941.159000">so that this is possible.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2941.160000" data-stop="2944.519000">It's just that finally it looks like we're</span> <span class="audio-time caption" data-speaker="Philip" data-start="2944.520000" data-stop="2948.499000">starting to move somewhere in that direction.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2948.500000" data-stop="2951.308000">It would be interesting if a decision were to be</span> <span class="audio-time caption" data-speaker="Philip" data-start="2951.309000" data-stop="2955.259000">made that we're going to give up on</span> <span class="audio-time caption" data-speaker="Philip" data-start="2955.260000" data-stop="2957.075000">this sort of bundling, what decisions that were</span> <span class="audio-time caption" data-speaker="Philip" data-start="2957.076000" data-stop="2961.859000">made for the legal status of GNU ELPA, if we</span> <span class="audio-time caption" data-speaker="Philip" data-start="2961.860000" data-stop="2963.753000">would merge GNU ELPA and NonGNU ELPA together,</span> <span class="audio-time caption" data-speaker="Philip" data-start="2963.754000" data-stop="2965.919000">which is unlikely currently.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2965.920000" data-stop="2969.264000">This is just pure speculation at this point, but</span> <span class="audio-time caption" data-speaker="Philip" data-start="2969.265000" data-stop="2972.653000">it's something that might be a discussion, which</span> <span class="audio-time caption" data-speaker="Philip" data-start="2972.654000" data-stop="2976.559000">will be had in the future.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2976.560000" data-stop="2977.828000"><strong class="speaker-name">Sacha:</strong> Okay, so it dispenses with a package</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2977.829000" data-stop="2981.285000">install part, and so people don't have to worry</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2981.286000" data-stop="2983.639000">about, okay, how do I make sure</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2983.640000" data-stop="2986.164000">The package archives are set up, and how do I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2986.165000" data-stop="2987.399000">install the packages?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2987.400000" data-stop="2989.700000">All that stuff will be pre-installed.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2989.701000" data-stop="2990.718000">The auto-mode-alist will be...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2990.719000" data-stop="2993.719000">Oh, sorry, go ahead.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="2993.720000" data-stop="2994.530000"><strong class="speaker-name">Philip:</strong> The package archives wouldn't matter</span> <span class="audio-time caption" data-speaker="Philip" data-start="2994.531000" data-stop="2996.966000">that much, since we are just talking about the</span> <span class="audio-time caption" data-speaker="Philip" data-start="2996.967000" data-stop="2999.071000">GNU ELPA packages, which are installed</span> <span class="audio-time caption" data-speaker="Philip" data-start="2999.072000" data-stop="2999.719000">by default.</span> <span class="audio-time caption" data-speaker="Philip" data-start="2999.720000" data-stop="3003.202000">It's really just that you don't have to install</span> <span class="audio-time caption" data-speaker="Philip" data-start="3003.203000" data-stop="3004.759000">additional packages.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3004.760000" data-stop="3005.879000">You don't need a network connection.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3005.880000" data-stop="3008.088000">You don't need to know about the</span> <span class="audio-time caption" data-speaker="Philip" data-start="3008.089000" data-stop="3009.399000">package existence.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3009.400000" data-stop="3010.550000">It would be registered in the</span> <span class="audio-time caption" data-speaker="Philip" data-start="3010.551000" data-stop="3011.999000">auto-mode-alist anyway.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3012.000000" data-stop="3015.147000">So if you open a, I don't know, what's the</span> <span class="audio-time caption" data-speaker="Philip" data-start="3015.148000" data-stop="3018.489000">package, some major mode that's not going to</span> <span class="audio-time caption" data-speaker="Philip" data-start="3018.490000" data-stop="3022.179000">open, which is not in the core.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3022.180000" data-stop="3025.159000"><strong class="speaker-name">Prot:</strong> I think you might [??] earlier.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3025.160000" data-stop="3027.519000">I think that would qualify.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3027.520000" data-stop="3029.941000">I think you mentioned auctex earlier, which is</span> <span class="audio-time caption" data-speaker="Prot" data-start="3029.942000" data-stop="3031.679000">on ELPA, but not in Core.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="3031.680000" data-stop="3034.847000"><strong class="speaker-name">Philip:</strong> The tricky thing there is that Emacs</span> <span class="audio-time caption" data-speaker="Philip" data-start="3034.848000" data-stop="3037.982000">already has a LaTeX mode by default, and that</span> <span class="audio-time caption" data-speaker="Philip" data-start="3037.983000" data-stop="3039.567000">already applies, but auctex extends it.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3039.568000" data-stop="3050.059000">That's why I was looking for another example.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3050.060000" data-stop="3051.567000">Okay, that's the idea, but it wouldn't only be</span> <span class="audio-time caption" data-speaker="Philip" data-start="3051.568000" data-stop="3052.639000">major modes, I assume.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3052.640000" data-stop="3054.967000">There's going to be some discussion as to what</span> <span class="audio-time caption" data-speaker="Philip" data-start="3054.968000" data-stop="3056.599000">packages we want to add.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3056.600000" data-stop="3061.799000">Currently, it's not certain.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3061.800000" data-stop="3064.719000">Because we're working on finishing up Emacs 31.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3064.720000" data-stop="3068.083000">That's where most of the bug fixing efforts are</span> <span class="audio-time caption" data-speaker="Philip" data-start="3068.084000" data-stop="3071.280000">going in right now before we progress to any</span> <span class="audio-time caption" data-speaker="Philip" data-start="3071.281000" data-stop="3072.879000">further developments.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3072.880000" data-stop="3076.039000">But that also includes proposals.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3076.040000" data-stop="3078.827000">That includes proposals as to the preset theme,</span> <span class="audio-time caption" data-speaker="Philip" data-start="3078.828000" data-stop="3083.039000">which I am still interested in reading.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3083.000000">51:23</span> <strong>Customize</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3083.040000" data-stop="3084.233000"><strong class="speaker-name">Sacha:</strong> I want to come back to something Prot</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3084.234000" data-stop="3087.089000">mentioned in my conversation with him about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3087.090000" data-stop="3090.243000">newcomers, and that is the Customize interface</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3090.244000" data-stop="3093.599000">versus getting people to the Emacs Lisp directly.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3093.600000" data-stop="3095.805000">And I think, Prot, you were not very keen</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3095.806000" data-stop="3097.599000">on Customize.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3097.600000" data-stop="3099.511000"><strong class="speaker-name">Prot:</strong> Yeah, basically if I say it in one</span> <span class="audio-time caption" data-speaker="Prot" data-start="3099.512000" data-stop="3102.697000">sentence is: I think the earlier they get into</span> <span class="audio-time caption" data-speaker="Prot" data-start="3102.698000" data-stop="3106.063000">Emacs Lisp, like seeing it and interacting with</span> <span class="audio-time caption" data-speaker="Prot" data-start="3106.064000" data-stop="3108.999000">it, the better it is for them long term.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3109.000000" data-stop="3111.879000">Granted, I am making the assumption that this is</span> <span class="audio-time caption" data-speaker="Prot" data-start="3111.880000" data-stop="3114.519000">a user that will be there long term, right?</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="3114.520000" data-stop="3115.439000"><strong class="speaker-name">Philip:</strong> Of course.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3115.440000" data-stop="3119.778000">And this is specifically about the Customize</span> <span class="audio-time caption" data-speaker="Philip" data-start="3119.779000" data-stop="3122.619000">UI, right?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3122.620000" data-stop="3123.926000"><strong class="speaker-name">Prot:</strong> Yeah, yeah, not the underlying</span> <span class="audio-time caption" data-speaker="Prot" data-start="3123.927000" data-stop="3134.099000">functionality, like, yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3134.100000" data-stop="3137.200000"><strong class="speaker-name">Sacha:</strong> It's great for simple options like, yes,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3137.201000" data-stop="3139.233000">we can check the checkbox, or we can select from</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3139.234000" data-stop="3142.867000">the drop-down list or whatever, but browsing it is,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3142.868000" data-stop="3145.367000">as you mentioned, overwhelming in the general sense</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3145.368000" data-stop="3150.500000">of Emacs being overwhelming, and when you start</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3150.501000" data-stop="3151.800000">wanting to do something slightly more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3151.801000" data-stop="3152.759000">sophisticated like</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3152.760000" data-stop="3156.279000">you know, let's add some more capture templates,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3156.280000" data-stop="3158.719000">then it's challenging for people to do.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3158.720000" data-stop="3161.970000">So I'm wondering whether, in general, we should</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3161.971000" data-stop="3164.963000">be... Is our general strategy to be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3164.964000" data-stop="3168.264000">guiding people to, yes, Customize is there, but</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3168.265000" data-stop="3171.261000">really you want to be doing Emacs Lisp as</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3171.262000" data-stop="3172.759000">quickly as possible.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3172.760000" data-stop="3174.892000">Let's make it easier for you to get your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3174.893000" data-stop="3175.479000">init file.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3175.480000" data-stop="3179.159000">Let's make it easier for you to test your init</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3179.160000" data-stop="3181.240000">file and not fall apart when you miss a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3181.241000" data-stop="3184.280000">parenthesis and all, things like that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3184.281000" data-stop="3189.740000">Do we want to guide people that way?</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="3189.741000" data-stop="3192.037000"><strong class="speaker-name">Philip:</strong> One question I think we should</span> <span class="audio-time caption" data-speaker="Philip" data-start="3192.038000" data-stop="3196.077000">distinguish is the idea of a UI the problem or is</span> <span class="audio-time caption" data-speaker="Philip" data-start="3196.078000" data-stop="3200.153000">it really... Because I personally I have a new Emacs</span> <span class="audio-time caption" data-speaker="Philip" data-start="3200.154000" data-stop="3204.123000">configuration at my day job, and I do everything</span> <span class="audio-time caption" data-speaker="Philip" data-start="3204.124000" data-stop="3205.559000">using Customize.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3205.560000" data-stop="3208.839000">I don't even care about using use-package</span> <span class="audio-time caption" data-speaker="Philip" data-start="3208.840000" data-stop="3209.879000">or whatever.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3209.880000" data-stop="3213.159000">Just customize the stuff using...</span> <span class="audio-time caption" data-speaker="Philip" data-start="3213.160000" data-stop="3215.653000">There's a big blob of user options which I've</span> <span class="audio-time caption" data-speaker="Philip" data-start="3215.654000" data-stop="3218.272000">modified, and that goes through, and I don't care</span> <span class="audio-time caption" data-speaker="Philip" data-start="3218.273000" data-stop="3220.965000">about it, but I claim to have some understanding</span> <span class="audio-time caption" data-speaker="Philip" data-start="3220.966000" data-stop="3223.630000">of what's going on, and the rest of the function</span> <span class="audio-time caption" data-speaker="Philip" data-start="3223.631000" data-stop="3226.239000">is just some defuns which I find convenient.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3226.240000" data-stop="3229.951000">But for me, it's okay, because I have some sort of</span> <span class="audio-time caption" data-speaker="Philip" data-start="3229.952000" data-stop="3233.999000">intuition of how the Customize UI works.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3234.000000" data-stop="3236.765000">If there were a better UI for Customize, would</span> <span class="audio-time caption" data-speaker="Philip" data-start="3236.766000" data-stop="3240.075000">you still say that if it were written in an</span> <span class="audio-time caption" data-speaker="Philip" data-start="3240.076000" data-stop="3241.999000">intuitive way, say using</span> <span class="audio-time caption" data-speaker="Philip" data-start="3242.000000" data-stop="3244.279000">Fido modes.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3244.280000" data-stop="3246.959000">So that's, it would use interactive narrowing and</span> <span class="audio-time caption" data-speaker="Philip" data-start="3246.960000" data-stop="3251.247000">it would somehow work in a build on existing</span> <span class="audio-time caption" data-speaker="Philip" data-start="3251.248000" data-stop="3254.714000">intuitions because the current Customize, the</span> <span class="audio-time caption" data-speaker="Philip" data-start="3254.715000" data-stop="3256.733000">Customize UI, the easy customization interface I</span> <span class="audio-time caption" data-speaker="Philip" data-start="3256.734000" data-stop="3260.879000">think is a technical term to use is based around</span> <span class="audio-time caption" data-speaker="Philip" data-start="3260.880000" data-stop="3264.819000">this widget library interface and sort of make</span> <span class="audio-time caption" data-speaker="Philip" data-start="3264.820000" data-stop="3271.339000">replicating a TUI menu but not... And then you have to...</span> <span class="audio-time caption" data-speaker="Philip" data-start="3271.340000" data-stop="3273.400000">And yeah, of course, the intuition... Like, if you</span> <span class="audio-time caption" data-speaker="Philip" data-start="3273.401000" data-stop="3274.889000">click on things, it doesn't always behave the same</span> <span class="audio-time caption" data-speaker="Philip" data-start="3274.890000" data-stop="3277.558000">thing you would expect from a regular settings</span> <span class="audio-time caption" data-speaker="Philip" data-start="3277.559000" data-stop="3280.154000">menu, which is by the way also something that</span> <span class="audio-time caption" data-speaker="Philip" data-start="3280.155000" data-stop="3281.039000">CUA specifies.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3281.000000">54:41</span> <strong>CUA - Common User Access</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="3281.040000" data-stop="3284.343000"><strong class="speaker-name">Philip:</strong> I recently looked into what CUA lists. Like, if</span> <span class="audio-time caption" data-speaker="Philip" data-start="3284.344000" data-stop="3287.731000">you look at the Wikipedia page, CUA specifies that</span> <span class="audio-time caption" data-speaker="Philip" data-start="3287.732000" data-stop="3291.137000">every application has to have these settings menu</span> <span class="audio-time caption" data-speaker="Philip" data-start="3291.138000" data-stop="3294.568000">with tabs on the bottom on the top where it lists</span> <span class="audio-time caption" data-speaker="Philip" data-start="3294.569000" data-stop="3298.039000">all the options you can specify and interestingly</span> <span class="audio-time caption" data-speaker="Philip" data-start="3298.040000" data-stop="3300.519000">C-c and C-v is not listed as...</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3300.000000">55:00</span> <strong>ini file format? https://sdf.org/~pkal//blog/emacs/ini-init.html</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="3300.520000" data-stop="3304.835000"><strong class="speaker-name">Philip:</strong> Apparently not CUA, but Shift Insert and</span> <span class="audio-time caption" data-speaker="Philip" data-start="3304.836000" data-stop="3306.519000">Control Insert...</span> <span class="audio-time caption" data-speaker="Philip" data-start="3306.520000" data-stop="3309.632000">I might be misunderstanding this, but this seems</span> <span class="audio-time caption" data-speaker="Philip" data-start="3309.633000" data-stop="3310.799000">to be a misnomer.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3310.000000">55:10</span> <strong>Emacs configuration generator
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/ye29-prot-and-pkal-emacs-newcomer-experience-00-55-45-367.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/ye29-prot-and-pkal-emacs-newcomer-experience-00-55-45-367.jpg" alt="image from video 00:55:45.367" data-time="00:55:45.367"></a><span class="audio-time caption" data-speaker="Philip" data-start="3310.800000" data-stop="3313.779000"><strong class="speaker-name">Philip:</strong> But if we had some sort of a UI like this CUA</span> <span class="audio-time caption" data-speaker="Philip" data-start="3313.780000" data-stop="3316.851000">configuration UI, would that be something where</span> <span class="audio-time caption" data-speaker="Philip" data-start="3316.852000" data-stop="3319.709000">you'd say as an intermediate stage for just</span> <span class="audio-time caption" data-speaker="Philip" data-start="3319.710000" data-stop="3320.839000">setting options?</span> <span class="audio-time caption" data-speaker="Philip" data-start="3320.840000" data-stop="3325.452000">Because that was part of my thought process with</span> <span class="audio-time caption" data-speaker="Philip" data-start="3325.453000" data-stop="3328.239000">Emacs Configuration Generator.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3328.240000" data-stop="3332.786000">Just configuring Emacs is such a subset of Lisp</span> <span class="audio-time caption" data-speaker="Philip" data-start="3332.787000" data-stop="3336.559000">as it's actually not programming Lisp.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3336.560000" data-stop="3341.004000">You can easily get by by just using add-hook, set</span> <span class="audio-time caption" data-speaker="Philip" data-start="3341.005000" data-stop="3345.359000">up or setq, and add to list or stuff like that.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3345.360000" data-stop="3347.919000">But you don't really have to understand.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3347.920000" data-stop="3350.959000">It's just a peculiar syntax for how to</span> <span class="audio-time caption" data-speaker="Philip" data-start="3350.960000" data-stop="3354.479000">program Lisp.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3354.000000">55:54</span> <strong>INI-style configuration</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="3354.480000" data-stop="3356.431000"><strong class="speaker-name">Philip:</strong> I'm not sure if either of you have seen, I wrote</span> <span class="audio-time caption" data-speaker="Philip" data-start="3356.432000" data-stop="3357.519000">a blog post</span> <span class="audio-time caption" data-speaker="Philip" data-start="3357.520000" data-stop="3362.083000">last March, no, not March, what's the name of</span> <span class="audio-time caption" data-speaker="Philip" data-start="3362.084000" data-stop="3363.199000">the month?</span> <span class="audio-time caption" data-speaker="Philip" data-start="3363.200000" data-stop="3368.185000">November, October or something, where I gave a</span> <span class="audio-time caption" data-speaker="Philip" data-start="3368.186000" data-stop="3375.279000">prototype for a INI-like configuration syntax.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3375.280000" data-stop="3377.445000"><strong class="speaker-name">Prot:</strong> I must have read it, but I don't</span> <span class="audio-time caption" data-speaker="Prot" data-start="3377.446000" data-stop="3378.799000">remember it.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3378.800000" data-stop="3381.039000">You must have read it.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3381.040000" data-stop="3383.991000">Yeah, yeah, yeah, because I always read my feeds,</span> <span class="audio-time caption" data-speaker="Prot" data-start="3383.992000" data-stop="3387.679000">but now it doesn't ring a bell.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="3387.680000" data-stop="3388.079000"><strong class="speaker-name">Philip:</strong> Exactly.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3388.080000" data-stop="3391.167000">You see there's this basically a simplified</span> <span class="audio-time caption" data-speaker="Philip" data-start="3391.168000" data-stop="3394.418000">syntax, which should be... The idea was it should</span> <span class="audio-time caption" data-speaker="Philip" data-start="3394.419000" data-stop="3397.840000">follow a conventional configuration-like format,</span> <span class="audio-time caption" data-speaker="Philip" data-start="3397.841000" data-stop="3401.380000">and each of these lines gets translated directly</span> <span class="audio-time caption" data-speaker="Philip" data-start="3401.381000" data-stop="3403.519000">to an Emacs Lisp expression.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3403.520000" data-stop="3407.222000">And due to this, I don't want to call it an</span> <span class="audio-time caption" data-speaker="Philip" data-start="3407.223000" data-stop="3411.132000">isomorphism, but the easy translation in both</span> <span class="audio-time caption" data-speaker="Philip" data-start="3411.133000" data-stop="3414.923000">directions, I think that the expectation of</span> <span class="audio-time caption" data-speaker="Philip" data-start="3414.924000" data-stop="3417.039000">saying write Emacs Lisp...</span> <span class="audio-time caption" data-speaker="Philip" data-start="3417.040000" data-stop="3420.930000">There has to be some defun or something if you're</span> <span class="audio-time caption" data-speaker="Philip" data-start="3420.931000" data-stop="3422.519000">writing Emacs Lisp.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3422.520000" data-stop="3425.519000">That's to exaggerate.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3425.520000" data-stop="3428.190000">If you're just writing setq, set, add-hook,</span> <span class="audio-time caption" data-speaker="Philip" data-start="3428.191000" data-stop="3431.248000">add-to-list, these common configuration patterns,</span> <span class="audio-time caption" data-speaker="Philip" data-start="3431.249000" data-stop="3434.325000">which are well worth documenting in the manual, to</span> <span class="audio-time caption" data-speaker="Philip" data-start="3434.326000" data-stop="3437.430000">understand what are the patterns that you have to</span> <span class="audio-time caption" data-speaker="Philip" data-start="3437.431000" data-stop="3440.393000">use to configure a package, even understanding</span> <span class="audio-time caption" data-speaker="Philip" data-start="3440.394000" data-stop="3441.359000">the signature...</span> <span class="audio-time caption" data-speaker="Philip" data-start="3441.360000" data-stop="3444.084000">The distinction between add-to-list and add-hook</span> <span class="audio-time caption" data-speaker="Philip" data-start="3444.085000" data-stop="3446.893000">is that hooks are lists which can have mode-local</span> <span class="audio-time caption" data-speaker="Philip" data-start="3446.894000" data-stop="3449.759000">extensions but also inherit from global settings.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3449.760000" data-stop="3453.319000">Not obvious from the beginning to everyone.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3453.320000" data-stop="3459.739000">This is not list programming.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3459.740000" data-stop="3461.119000"><strong class="speaker-name">Prot:</strong> Yeah, fair enough.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3461.120000" data-stop="3464.447000">Though even then, they start to see the</span> <span class="audio-time caption" data-speaker="Prot" data-start="3464.448000" data-stop="3467.519000">parentheses, get used to the syntax.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3467.520000" data-stop="3470.399000">They have to remember to quote stuff.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3470.400000" data-stop="3475.055000">Even though it's not really programming, I see</span> <span class="audio-time caption" data-speaker="Prot" data-start="3475.056000" data-stop="3477.079000">what you're saying.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3477.080000" data-stop="3482.319000">They put themselves in the situation.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="3482.320000" data-stop="3484.089000"><strong class="speaker-name">Philip:</strong> One of the ideas precisely in the</span> <span class="audio-time caption" data-speaker="Philip" data-start="3484.090000" data-stop="3487.796000">config syntax is that if you have an option like</span> <span class="audio-time caption" data-speaker="Philip" data-start="3487.797000" data-stop="3491.098000">set, you see the first line, set mode line</span> <span class="audio-time caption" data-speaker="Philip" data-start="3491.099000" data-stop="3492.199000">compact long.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3492.200000" data-stop="3493.359000">Long is a symbol.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3493.360000" data-stop="3497.039000">I just use regular read to read this, and it's</span> <span class="audio-time caption" data-speaker="Philip" data-start="3497.040000" data-stop="3498.239000">not evaluated.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3498.240000" data-stop="3501.368000">There's an option down there somewhere, I think,</span> <span class="audio-time caption" data-speaker="Philip" data-start="3501.369000" data-stop="3504.335000">eval set, where the format expression is an S</span> <span class="audio-time caption" data-speaker="Philip" data-start="3504.336000" data-stop="3507.039000">expression that's evaluated to a string.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3507.040000" data-stop="3511.039000">So you have to opt into evaluation.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3511.040000" data-stop="3514.133000">which seems more intuitive to me for a regular</span> <span class="audio-time caption" data-speaker="Philip" data-start="3514.134000" data-stop="3518.267000">configuration when you're writing it, because all</span> <span class="audio-time caption" data-speaker="Philip" data-start="3518.268000" data-stop="3519.500000">these things... Like, I have to think about quoting.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3519.480000" data-stop="3521.920000">Then there's the issue like with</span> <span class="audio-time caption" data-speaker="Philip" data-start="3521.920000" data-stop="3526.760000">with-eval-after-load... Can I customize this</span> <span class="audio-time caption" data-speaker="Philip" data-start="3526.760000" data-stop="3528.720000">variable before the package is loaded, after the</span> <span class="audio-time caption" data-speaker="Philip" data-start="3528.720000" data-stop="3530.880000">package is loaded? If it has, like... If you're adding</span> <span class="audio-time caption" data-speaker="Philip" data-start="3530.880000" data-stop="3532.633000">something to a list and the list has a default</span> <span class="audio-time caption" data-speaker="Philip" data-start="3532.634000" data-stop="3534.760000">value that you don't want to set the value of the</span> <span class="audio-time caption" data-speaker="Philip" data-start="3534.760000" data-stop="3537.040000">default, don't want to add it to the list because</span> <span class="audio-time caption" data-speaker="Philip" data-start="3537.076000" data-stop="3539.479000">then it's not loaded, and it</span> <span class="audio-time caption" data-speaker="Philip" data-start="3539.480000" data-stop="3542.719000">could trigger a undefined variable signal.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3542.720000" data-stop="3546.052000">So these are other inconveniences that I don't, I</span> <span class="audio-time caption" data-speaker="Philip" data-start="3546.053000" data-stop="3548.997000">personally do not see any value in teaching</span> <span class="audio-time caption" data-speaker="Philip" data-start="3548.998000" data-stop="3552.316000">people or having people to deal with these sorts</span> <span class="audio-time caption" data-speaker="Philip" data-start="3552.317000" data-stop="3554.781000">of issues before they have any</span> <span class="audio-time caption" data-speaker="Philip" data-start="3554.782000" data-stop="3556.119000">broader intuition.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3556.120000" data-stop="3564.719000">Which is a very idiosyncratic take perhaps, but...</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3564.720000" data-stop="3566.059000"><strong class="speaker-name">Prot:</strong> No, no, it's fair.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="3566.060000" data-stop="3570.221000"><strong class="speaker-name">Philip:</strong> What I'm trying to get at is this sort</span> <span class="audio-time caption" data-speaker="Philip" data-start="3570.222000" data-stop="3573.091000">of any configuration syntax would be something</span> <span class="audio-time caption" data-speaker="Philip" data-start="3573.092000" data-stop="3575.976000">that a UI could generate a lot easier and in a</span> <span class="audio-time caption" data-speaker="Philip" data-start="3575.977000" data-stop="3578.754000">way that wouldn't have this artificial split</span> <span class="audio-time caption" data-speaker="Philip" data-start="3578.755000" data-stop="3581.115000">between your own personal handcrafted</span> <span class="audio-time caption" data-speaker="Philip" data-start="3581.116000" data-stop="3583.646000">configuration and the generated part of</span> <span class="audio-time caption" data-speaker="Philip" data-start="3583.647000" data-stop="3588.299000">the configuration.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3588.300000" data-stop="3590.567000">Mechanically changing this, finding the section</span> <span class="audio-time caption" data-speaker="Philip" data-start="3590.568000" data-stop="3592.700000">package avy, because it has all of these</span> <span class="audio-time caption" data-speaker="Philip" data-start="3592.701000" data-stop="3594.648000">primitives which didn't exist early on in Emacs,</span> <span class="audio-time caption" data-speaker="Philip" data-start="3594.649000" data-stop="3597.839000">like packages and features exist and so on.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3597.840000" data-stop="3601.363000">The sort of structure which use-package</span> <span class="audio-time caption" data-speaker="Philip" data-start="3601.364000" data-stop="3603.799000">usually provides.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3603.800000" data-stop="3605.086000"><strong class="speaker-name">Sacha:</strong> I have about one minute before the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3605.087000" data-stop="3607.516000">kiddo starts on lunch break, so I'm going to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3607.517000" data-stop="3609.999000">interrupt a little bit and do a quick summary.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3610.000000" data-stop="3611.839000">But the two of you are welcome to keep hanging</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3611.840000" data-stop="3612.559000">out and chatting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3612.560000" data-stop="3614.959000">I'll leave the Big Blue Button room open.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3614.960000" data-stop="3618.044000">And if you want, I can set it up so people can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3618.045000" data-stop="3621.048000">join you, depending on your time, et cetera,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3621.049000" data-stop="3621.799000">et cetera.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3621.000000">1:00:21</span> <strong>Quick summary</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3621.800000" data-stop="3625.158000"><strong class="speaker-name">Sacha:</strong> But basically, what I'm getting for a quick</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3625.159000" data-stop="3628.491000">summary of the conversation: Emacs 31: the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3628.492000" data-stop="3630.079000">newcomer presets is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3630.080000" data-stop="3631.519000">work in progress.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3631.520000" data-stop="3634.334000">People are definitely open to improvements,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3634.335000" data-stop="3635.800000">ideas, other suggestions for other features.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3635.801000" data-stop="3637.067000">The kiddo is just running out now.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3637.068000" data-stop="3643.399000">I will put the chat in the thing.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3643.400000" data-stop="3646.320000"><strong class="speaker-name">Prot:</strong> Yeah, of course, of course.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3646.321000" data-stop="3652.079000">That's fun.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3652.840000" data-stop="3661.859000">So, what's happened?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3661.860000" data-stop="3663.567000"><strong class="speaker-name">Sacha:</strong> Do you want me to open up the chat</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3663.568000" data-stop="3664.200000">to everybody?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3664.201000" data-stop="3667.100000">Or do you have other things?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3667.080000" data-stop="3669.920000"><strong class="speaker-name">Prot:</strong> Me, I can stay for another 20 minutes.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3669.920000" data-stop="3671.680000">Just to say I can stay for another 20 minutes</span> <span class="audio-time caption" data-speaker="Prot" data-start="3671.680000" data-stop="3674.040000">because then I have to take the dog.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3674.040000" data-stop="3674.880000"><strong class="speaker-name">Sacha:</strong> Yeah, and Phil?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3674.880000" data-stop="3677.460000">Oh, you have to leave.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="3677.461000" data-stop="3679.280000"><strong class="speaker-name">Philip:</strong> 20 minutes is fine.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3679.280000" data-stop="3680.880000">20 minutes is fine for me as well.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3680.880000" data-stop="3682.240000"><strong class="speaker-name">Sacha:</strong> Okay, okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3682.280000" data-stop="3684.885000">I will put the thing in the chat and people can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3684.886000" data-stop="3687.159000">continue because the kiddo was like, ah!</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3687.160000" data-stop="3688.039000">Okay, yes.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3688.040000" data-stop="3689.959000"><strong class="speaker-name">Prot:</strong> Okay, okay, okay.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3689.960000" data-stop="3690.159000">Good.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3690.160000" data-stop="3692.359000">So, yeah, of course, there is a chat going.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3692.360000" data-stop="3694.079000">Yeah, let's see.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3694.080000" data-stop="3696.599000">So, Sacha, you will link it there.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3696.600000" data-stop="3701.139000">Ah, nice.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="3701.140000" data-stop="3703.264000"><strong class="speaker-name">Philip:</strong> So, I presume there has been an</span> <span class="audio-time caption" data-speaker="Philip" data-start="3703.265000" data-stop="3706.439000">idea of people watching this.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3707.960000" data-stop="3710.433000"><strong class="speaker-name">Prot:</strong> So this is live.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3710.434000" data-stop="3713.861000"><strong class="speaker-name">Sacha:</strong> And I can copy the chat thus far since</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3713.862000" data-stop="3716.919000">we didn't even get to any other questions.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3716.920000" data-stop="3717.879000">Hang on a second.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3717.880000" data-stop="3719.579000">Where am I even?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3719.580000" data-stop="3721.879000"><strong class="speaker-name">Prot:</strong> We're trying to deal with those, right?</span> <span class="audio-time caption" data-speaker="Prot" data-start="3721.880000" data-stop="3725.599000">Yeah, yeah, yeah.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3725.600000" data-stop="3728.000000">Well, eventually to have a discussion and also</span> <span class="audio-time caption" data-speaker="Prot" data-start="3728.001000" data-stop="3730.600000">take questions, eventually you need to have more</span> <span class="audio-time caption" data-speaker="Prot" data-start="3730.601000" data-stop="3731.433000">time, I guess.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3731.434000" data-stop="3732.119000"><strong class="speaker-name">Sacha:</strong> Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3732.120000" data-stop="3735.899000">But thank you all so much.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3735.900000" data-stop="3736.599000"><strong class="speaker-name">Prot:</strong> Yeah, yeah, yeah.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3736.600000" data-stop="3736.959000">That's good.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3736.960000" data-stop="3737.759000">Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3737.760000" data-stop="3740.479000">Thank you, Sacha.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3740.480000" data-stop="3741.239000">Thank you very much.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3741.240000" data-stop="3747.539000">And of course, the kiddo overrides all.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3747.000000">1:02:27</span> <strong>Continuing with INI</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="3747.540000" data-stop="3749.100000"><strong class="speaker-name">Prot:</strong> That thing with the INI, I think it's</span> <span class="audio-time caption" data-speaker="Prot" data-start="3749.101000" data-stop="3749.679000">very promising.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3749.680000" data-stop="3751.779000">I mean, if you flesh that out.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3751.780000" data-stop="3755.367000">Because the other thing is, yeah, with the</span> <span class="audio-time caption" data-speaker="Prot" data-start="3755.368000" data-stop="3759.133000">INI configuration, because what would be, though,</span> <span class="audio-time caption" data-speaker="Prot" data-start="3759.134000" data-stop="3761.633000">the fate of what is now added, you know, when you</span> <span class="audio-time caption" data-speaker="Prot" data-start="3761.634000" data-stop="3764.400000">modify something and it adds this, you know, this</span> <span class="audio-time caption" data-speaker="Prot" data-start="3764.401000" data-stop="3766.157000">has been set by Custom, do not touch it kind</span> <span class="audio-time caption" data-speaker="Prot" data-start="3766.158000" data-stop="3766.799000">of thing.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3766.800000" data-stop="3769.299000">You know what I'm talking about, right?</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="3769.300000" data-stop="3771.967000"><strong class="speaker-name">Philip:</strong> Yeah, you mean the generated user glob.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3771.968000" data-stop="3774.788000">Well, my idea, or if I were, if I had</span> <span class="audio-time caption" data-speaker="Philip" data-start="3774.789000" data-stop="3780.454000">the time /motivation/whatever to flesh this out,</span> <span class="audio-time caption" data-speaker="Philip" data-start="3780.455000" data-stop="3781.439000">because currently it works...</span> <span class="audio-time caption" data-speaker="Philip" data-start="3781.440000" data-stop="3783.879000">Currently it's an actually existing Elisp file</span> <span class="audio-time caption" data-speaker="Philip" data-start="3783.880000" data-stop="3786.507000">which you could use, but I think it would be most</span> <span class="audio-time caption" data-speaker="Philip" data-start="3786.508000" data-stop="3788.599000">interesting if it would be upstreamed.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3788.600000" data-stop="3791.410000">It would sort of be like, if you don't have</span> <span class="audio-time caption" data-speaker="Philip" data-start="3791.411000" data-stop="3794.310000">a .el file, Emacs would look for it</span> <span class="audio-time caption" data-speaker="Philip" data-start="3794.311000" data-stop="3796.733000">.ini file,</span> <span class="audio-time caption" data-speaker="Philip" data-start="3796.734000" data-stop="3799.067000">or emacs.ini file or something like that.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3799.068000" data-stop="3802.733000">Then, of course, you can check, like, does the</span> <span class="audio-time caption" data-speaker="Philip" data-start="3802.734000" data-stop="3804.799000">INI file exist or does the .el file exist?</span> <span class="audio-time caption" data-speaker="Philip" data-start="3804.800000" data-stop="3807.733000">Probably there would be a user option to select</span> <span class="audio-time caption" data-speaker="Philip" data-start="3807.734000" data-stop="3810.479000">into which it would inject the new options.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3810.480000" data-stop="3814.034000">And by default, it would select, for example, if</span> <span class="audio-time caption" data-speaker="Philip" data-start="3814.035000" data-stop="3817.204000">the INI file exists, then it would use the</span> <span class="audio-time caption" data-speaker="Philip" data-start="3817.205000" data-stop="3817.959000">INI file.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3817.960000" data-stop="3822.113000">But there is some controversy to this, because I</span> <span class="audio-time caption" data-speaker="Philip" data-start="3822.114000" data-stop="3824.067000">totally understand the sentiment we're coming</span> <span class="audio-time caption" data-speaker="Philip" data-start="3824.068000" data-stop="3825.867000">from with...</span> <span class="audio-time caption" data-speaker="Philip" data-start="3825.868000" data-stop="3831.279000">You're using Emacs, so you have to learn Lisp.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3831.280000" data-stop="3834.775000">But for me, the bar is a bit higher than just the</span> <span class="audio-time caption" data-speaker="Philip" data-start="3834.776000" data-stop="3838.199000">inconvenience of writing out this more or less.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3838.200000" data-stop="3844.519000">It's, as Joel Sussman referred to it, this</span> <span class="audio-time caption" data-speaker="Philip" data-start="3844.520000" data-stop="3846.359000">ritualistic Lisp.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3846.360000" data-stop="3849.210000">You always have to repeat the same stuff all over</span> <span class="audio-time caption" data-speaker="Philip" data-start="3849.211000" data-stop="3851.479000">again, like with eval, afterload, set.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3851.480000" data-stop="3854.037000">add-to-list, then you have to quote the option in</span> <span class="audio-time caption" data-speaker="Philip" data-start="3854.038000" data-stop="3854.559000">one case.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3854.560000" data-stop="3856.859000">And if you change something in a map, then you</span> <span class="audio-time caption" data-speaker="Philip" data-start="3856.860000" data-stop="3857.959000">don't have to add it.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3857.960000" data-stop="3860.067000">And of course, if you know Lisp, then you know</span> <span class="audio-time caption" data-speaker="Philip" data-start="3860.068000" data-stop="3865.467000">that in one case, a keymap is a cons cell, so</span> <span class="audio-time caption" data-speaker="Philip" data-start="3865.468000" data-stop="3867.200000">you're actually modifying the rest of the cons cell.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3867.201000" data-stop="3868.333000">That's why you don't need to quote it.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3868.334000" data-stop="3869.933000">But in the other case, you're accessing it via</span> <span class="audio-time caption" data-speaker="Philip" data-start="3869.934000" data-stop="3871.133000">symbols, so you need to quote it.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3871.134000" data-stop="3875.959000">But this is all technical details.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3875.960000" data-stop="3877.479000">There's no necessity in it.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3877.480000" data-stop="3880.719000">It doesn't have to be that way.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3880.720000" data-stop="3881.956000"><strong class="speaker-name">Prot:</strong> Yeah, yeah, yeah, that's fair, that's fair,</span> <span class="audio-time caption" data-speaker="Prot" data-start="3881.957000" data-stop="3882.939000">of course.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3882.000000">1:04:42</span> <strong>Motivation</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="3882.940000" data-stop="3885.576000"><strong class="speaker-name">Philip:</strong> One thing I wanted to bring up in the discussion</span> <span class="audio-time caption" data-speaker="Philip" data-start="3885.577000" data-stop="3888.480000">when we were talking about reverence was there</span> <span class="audio-time caption" data-speaker="Philip" data-start="3888.481000" data-stop="3891.399000">is, I mean, one part of the thing that gave me</span> <span class="audio-time caption" data-speaker="Philip" data-start="3891.400000" data-stop="3894.530000">the motivation to go through with learning Emacs,</span> <span class="audio-time caption" data-speaker="Philip" data-start="3894.531000" data-stop="3897.629000">even though I didn't use the tutorial initially,</span> <span class="audio-time caption" data-speaker="Philip" data-start="3897.630000" data-stop="3900.599000">was sort of a reputation I heard about Emacs.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3900.600000" data-stop="3902.595000">And the videos I saw, wow, you can do these</span> <span class="audio-time caption" data-speaker="Philip" data-start="3902.596000" data-stop="3903.199000">cool things.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3903.200000" data-stop="3907.519000">And this motivation, this image I had of Emacs</span> <span class="audio-time caption" data-speaker="Philip" data-start="3907.520000" data-stop="3912.088000">help me go through, but if you overshoot this</span> <span class="audio-time caption" data-speaker="Philip" data-start="3912.080000" data-stop="3914.680000">approach, then people expect too much in the</span> <span class="audio-time caption" data-speaker="Philip" data-start="3914.680000" data-stop="3916.560000">beginning and are disappointed in the end and</span> <span class="audio-time caption" data-speaker="Philip" data-start="3916.560000" data-stop="3920.880000">don't pull through.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3920.901000" data-stop="3927.769000">There's this question of having, how's it called,</span> <span class="audio-time caption" data-speaker="Philip" data-start="3927.770000" data-stop="3929.119000">the ??...</span> <span class="audio-time caption" data-speaker="Philip" data-start="3929.120000" data-stop="3932.732000">How to motivate people enough to be interested in</span> <span class="audio-time caption" data-speaker="Philip" data-start="3932.733000" data-stop="3935.662000">Emacs, to actually learn it, but not to</span> <span class="audio-time caption" data-speaker="Philip" data-start="3935.663000" data-stop="3936.639000">oversell it.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3936.640000" data-stop="3939.595000">If you give some sort of a demo of using Emacs,</span> <span class="audio-time caption" data-speaker="Philip" data-start="3939.596000" data-stop="3942.389000">which is simply not representative of how it</span> <span class="audio-time caption" data-speaker="Philip" data-start="3942.390000" data-stop="3945.166000">actually works, then that's something which</span> <span class="audio-time caption" data-speaker="Philip" data-start="3945.167000" data-stop="3946.199000">would backfire.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3946.200000" data-stop="3948.459000">But I guess we can take a look at the</span> <span class="audio-time caption" data-speaker="Philip" data-start="3948.460000" data-stop="3949.559000">questions, right?</span> <span class="audio-time caption" data-speaker="Philip" data-start="3949.560000" data-stop="3950.959000">Yeah, let's see.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3950.960000" data-stop="3952.859000">Let's see.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3952.860000" data-stop="3953.839000"><strong class="speaker-name">Prot:</strong> Yeah, yeah, yeah.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3953.840000" data-stop="3954.999000">So yeah, I didn't read them.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3955.000000" data-stop="3957.541000">I had the chat open, but I didn't have</span> <span class="audio-time caption" data-speaker="Prot" data-start="3957.542000" data-stop="3958.759000">the time to read them.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3958.760000" data-stop="3961.139000">Sorry?</span> <span class="audio-time caption" data-speaker="Prot" data-start="3961.140000" data-stop="3963.400000">I'm not sure how to parse these.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3963.401000" data-stop="3965.859000">Is this from top to bottom?</span> <span class="audio-time caption" data-speaker="Prot" data-start="3965.860000" data-stop="3968.676000">I guess from top to bottom is how they</span> <span class="audio-time caption" data-speaker="Prot" data-start="3968.677000" data-stop="3970.519000">arrived in the chat.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3970.520000" data-stop="3974.159000">The top is the earliest.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="3974.160000" data-stop="3976.319000"><strong class="speaker-name">Philip:</strong> The usernames are mentioned below.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3976.320000" data-stop="3978.559000"><strong class="speaker-name">Prot:</strong> I guess that's a copy-paste thing.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3978.560000" data-stop="3980.239000">Yeah, yeah, yeah.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3980.240000" data-stop="3986.079000">So there are some...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3986.080000" data-stop="3989.919000"><strong class="speaker-name">Sacha:</strong> I gave the kiddo some packed lunch, so I'm back.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3989.920000" data-stop="3992.619000"><strong class="speaker-name">Prot:</strong> Oh, hello there!</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="3992.620000" data-stop="3994.471000"><strong class="speaker-name">Philip:</strong> We were just wondering about how to</span> <span class="audio-time caption" data-speaker="Philip" data-start="3994.472000" data-stop="3996.119000">read the comments you posted.</span> <span class="audio-time caption" data-speaker="Philip" data-start="3996.120000" data-stop="3999.279000">Maybe you have a better UI.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3999.280000" data-stop="4001.599000"><strong class="speaker-name">Sacha:</strong> I pasted them into the chat.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4001.600000" data-stop="4003.393000">So in the Big Blue Button...</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="4003.394000" data-stop="4005.939000"><strong class="speaker-name">Philip:</strong> But that's the order of occurrence?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4005.940000" data-stop="4007.719000"><strong class="speaker-name">Sacha:</strong> That's order of occurrence.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4007.720000" data-stop="4010.210000">It's totally not very... It's just like a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4010.211000" data-stop="4010.879000">big paste.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4010.000000">1:06:50</span> <strong>Politics and philosophy</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="4010.880000" data-stop="4014.559000"><strong class="speaker-name">Prot:</strong> While you read it, let me...</span> <span class="audio-time caption" data-speaker="Prot" data-start="4014.560000" data-stop="4019.878000">Yeah, there is a comment there from LC2000 about</span> <span class="audio-time caption" data-speaker="Prot" data-start="4019.879000" data-stop="4025.371000">the splash screen having a lot of emphasis on the</span> <span class="audio-time caption" data-speaker="Prot" data-start="4025.372000" data-stop="4029.519000">legal side, which is a fair comment.</span> <span class="audio-time caption" data-speaker="Prot" data-start="4029.520000" data-stop="4032.068000">I think the legal side is important though,</span> <span class="audio-time caption" data-speaker="Prot" data-start="4032.069000" data-stop="4034.990000">because of course, free software and all that, but</span> <span class="audio-time caption" data-speaker="Prot" data-start="4034.991000" data-stop="4037.738000">of course, it could be rearranged. So maybe you</span> <span class="audio-time caption" data-speaker="Prot" data-start="4037.739000" data-stop="4040.743000">don't want to have it at the top front and center,</span> <span class="audio-time caption" data-speaker="Prot" data-start="4040.744000" data-stop="4043.579000">you want to have it further down. Maybe. I don't</span> <span class="audio-time caption" data-speaker="Prot" data-start="4043.580000" data-stop="4046.434000">know. I don't have a strong opinion, but I think</span> <span class="audio-time caption" data-speaker="Prot" data-start="4046.435000" data-stop="4049.380000">the legal side is it should be there at some</span> <span class="audio-time caption" data-speaker="Prot" data-start="4049.381000" data-stop="4051.553000">point. I feel like it's a political</span> <span class="audio-time caption" data-speaker="Prot" data-start="4051.554000" data-stop="4055.379000">minefield though.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4055.380000" data-stop="4056.233000"><strong class="speaker-name">Sacha:</strong> Just leave that alone.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4056.234000" data-stop="4058.679000">Otherwise: 200 comments on emacs-devel,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4058.680000" data-stop="4063.779000">one of those really long threads.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="4063.780000" data-stop="4066.756000"><strong class="speaker-name">Philip:</strong> I cannot under-emphasize how surprised</span> <span class="audio-time caption" data-speaker="Philip" data-start="4066.757000" data-stop="4070.845000">I was when my suggestion to add a checkbox on the</span> <span class="audio-time caption" data-speaker="Philip" data-start="4070.846000" data-stop="4073.599000">splash screen just went through.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4073.600000" data-stop="4077.929000">Because I expected people to object, no, we can't</span> <span class="audio-time caption" data-speaker="Philip" data-start="4077.930000" data-stop="4081.199000">add it there because of some system.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4081.200000" data-stop="4083.551000">It wouldn't look the way it should look and that</span> <span class="audio-time caption" data-speaker="Philip" data-start="4083.552000" data-stop="4085.119000">would be confusing or whatever.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4085.120000" data-stop="4089.119000">But apparently change is possible.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4089.120000" data-stop="4093.659000">You have to be careful and be patient.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4093.660000" data-stop="4095.437000"><strong class="speaker-name">Prot:</strong> And I guess here there is an</span> <span class="audio-time caption" data-speaker="Prot" data-start="4095.438000" data-stop="4096.999000">assumption, right?</span> <span class="audio-time caption" data-speaker="Prot" data-start="4097.000000" data-stop="4099.979000">There is also an assumption that people will</span> <span class="audio-time caption" data-speaker="Prot" data-start="4099.980000" data-stop="4102.079000">attack you or be unreasonable.</span> <span class="audio-time caption" data-speaker="Prot" data-start="4102.080000" data-stop="4104.959000">And I think this is not true.</span> <span class="audio-time caption" data-speaker="Prot" data-start="4104.960000" data-stop="4106.599000">You mentioned it earlier as well.</span> <span class="audio-time caption" data-speaker="Prot" data-start="4106.600000" data-stop="4109.377000">Eventually you have to get on the mailing list</span> <span class="audio-time caption" data-speaker="Prot" data-start="4109.378000" data-stop="4112.242000">because people, if they don't hear the opinion,</span> <span class="audio-time caption" data-speaker="Prot" data-start="4112.243000" data-stop="4115.281000">the counterpoint, they will never know what to do</span> <span class="audio-time caption" data-speaker="Prot" data-start="4115.282000" data-stop="4116.799000">with it.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="4116.800000" data-stop="4118.538000"><strong class="speaker-name">Philip:</strong> But it's not entirely unreasonable</span> <span class="audio-time caption" data-speaker="Philip" data-start="4118.539000" data-stop="4121.429000">because there are discussions that can be... There</span> <span class="audio-time caption" data-speaker="Philip" data-start="4121.430000" data-stop="4123.839000">are people on emacs-devel, it's sad to admit it, but</span> <span class="audio-time caption" data-speaker="Philip" data-start="4123.840000" data-stop="4127.306000">there are people who voice strong opinions, like</span> <span class="audio-time caption" data-speaker="Philip" data-start="4127.307000" data-stop="4130.235000">strong opinions, with no power behind them, which</span> <span class="audio-time caption" data-speaker="Philip" data-start="4130.236000" data-stop="4133.122000">can scare people away because there's no... There</span> <span class="audio-time caption" data-speaker="Philip" data-start="4133.123000" data-stop="4135.914000">are no tags. There's no index of</span> <span class="audio-time caption" data-speaker="Philip" data-start="4135.915000" data-stop="4141.499000">people on emacs-devel, so you don't know if some</span> <span class="audio-time caption" data-speaker="Philip" data-start="4141.500000" data-stop="4143.900000">John Doe responding to your message, if he's</span> <span class="audio-time caption" data-speaker="Philip" data-start="4143.901000" data-stop="4146.615000">actually responsible for this and makes a</span> <span class="audio-time caption" data-speaker="Philip" data-start="4146.616000" data-stop="4150.873000">decision, or if it's if Eli is sending a message</span> <span class="audio-time caption" data-speaker="Philip" data-start="4150.874000" data-stop="4154.656000">and his decision on the discussion actually</span> <span class="audio-time caption" data-speaker="Philip" data-start="4154.657000" data-stop="4163.479000">weighs a lot more than other matters.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4163.000000">1:09:23</span> <strong>Experimenting with things outside core</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4163.480000" data-stop="4166.233000"><strong class="speaker-name">Sacha:</strong> I feel like sometimes experimenting with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4166.234000" data-stop="4168.933000">newbie-focused resources, like the unofficial</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4168.934000" data-stop="4172.233000">ones that are around... At least we can try the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4172.234000" data-stop="4175.600000">ideas out and then say, hey, here's the patch and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4175.601000" data-stop="4178.704000">also here's what people have been using</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4178.705000" data-stop="4182.839000">it for, so you can see it a bit more concretely,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4182.840000" data-stop="4185.961000">than dropping an idea into the discussion and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4185.962000" data-stop="4189.130000">then having the whole bike-shedding happening</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4189.131000" data-stop="4191.299000">without as much data.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="4191.300000" data-stop="4193.759000"><strong class="speaker-name">Philip:</strong> That's seriously my main recommendation.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4193.760000" data-stop="4196.287000">If you want to propose something, add a</span> <span class="audio-time caption" data-speaker="Philip" data-start="4196.288000" data-stop="4199.378000">prototype, add a patch, add something to narrow</span> <span class="audio-time caption" data-speaker="Philip" data-start="4199.379000" data-stop="4200.759000">down the discussion.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4200.760000" data-stop="4203.808000">That's something people would take away from this</span> <span class="audio-time caption" data-speaker="Philip" data-start="4203.809000" data-stop="4206.619000">discussion, from my experience.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4206.620000" data-stop="4207.839000"><strong class="speaker-name">Prot:</strong> I 100% agree.</span> <span class="audio-time caption" data-speaker="Prot" data-start="4207.840000" data-stop="4209.919000">I think that's the way to go.</span> <span class="audio-time caption" data-speaker="Prot" data-start="4209.920000" data-stop="4212.706000">Just implement something so that it focuses</span> <span class="audio-time caption" data-speaker="Prot" data-start="4212.707000" data-stop="4213.679000">the attention.</span> <span class="audio-time caption" data-speaker="Prot" data-start="4213.680000" data-stop="4216.012000">Otherwise, you will get those endless discussions</span> <span class="audio-time caption" data-speaker="Prot" data-start="4216.013000" data-stop="4217.419000">very quickly.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4217.420000" data-stop="4220.857000"><strong class="speaker-name">Sacha:</strong> Or try it as a package first, and then</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4220.858000" data-stop="4223.259000">it can be core.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="4223.260000" data-stop="4224.339000"><strong class="speaker-name">Philip:</strong> Excuse me?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4224.340000" data-stop="4226.519000"><strong class="speaker-name">Sacha:</strong> Oh, I was thinking if it's possible to prototype</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4226.520000" data-stop="4228.848000">something as a package,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4228.849000" data-stop="4230.833000">now that Emacs has made it a lot easier for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4230.800000" data-stop="4235.640000">people to install packages, then at least it can be tested</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4235.640000" data-stop="4238.720000">before having all the conversations about whether it should</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4238.720000" data-stop="4240.367000">be as part of core</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4240.368000" data-stop="4242.200000">or part of the splash screen or everything else.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4242.000000">1:10:42</span> <strong>Extending the core</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="4242.960000" data-stop="4245.500000"><strong class="speaker-name">Philip:</strong> The counter tendency I feel obliged to</span> <span class="audio-time caption" data-speaker="Philip" data-start="4245.501000" data-stop="4248.833000">mention is that many times proposing something as</span> <span class="audio-time caption" data-speaker="Philip" data-start="4248.834000" data-stop="4252.333000">a package or as an extension to the core can</span> <span class="audio-time caption" data-speaker="Philip" data-start="4252.334000" data-stop="4254.239000">actually simplify the implementation vastly.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4254.240000" data-stop="4257.994000">Especially if you need to make one or two twists</span> <span class="audio-time caption" data-speaker="Philip" data-start="4257.995000" data-stop="4261.080000">upstream and you need something like an</span> <span class="audio-time caption" data-speaker="Philip" data-start="4261.081000" data-stop="4264.879000">additional hook or something to exist upstream.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4264.880000" data-stop="4267.076000">If it's a package in the core, then it's a lot</span> <span class="audio-time caption" data-speaker="Philip" data-start="4267.077000" data-stop="4268.926000">easier to explain why you have to make</span> <span class="audio-time caption" data-speaker="Philip" data-start="4268.927000" data-stop="4269.559000">this change than</span> <span class="audio-time caption" data-speaker="Philip" data-start="4269.560000" data-stop="4271.802000">having to deal with some sort of advice and</span> <span class="audio-time caption" data-speaker="Philip" data-start="4271.803000" data-stop="4273.159000">changing a lot of things.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4273.160000" data-stop="4276.507000">There was a certain tendency during the</span> <span class="audio-time caption" data-speaker="Philip" data-start="4276.508000" data-stop="4280.799000">mid-2010s, which I only know from history, was to</span> <span class="audio-time caption" data-speaker="Philip" data-start="4280.800000" data-stop="4284.537000">re-implement a lot of stuff in logs, in packages,</span> <span class="audio-time caption" data-speaker="Philip" data-start="4284.538000" data-stop="4287.359000">instead of working on them upstream.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4287.360000" data-stop="4289.412000">That created a lot of divergence</span> <span class="audio-time caption" data-speaker="Philip" data-start="4289.413000" data-stop="4290.439000">between packages,</span> <span class="audio-time caption" data-speaker="Philip" data-start="4290.440000" data-stop="4293.088000">and in my opinion, complicated</span> <span class="audio-time caption" data-speaker="Philip" data-start="4293.089000" data-stop="4295.596000">things because it introduces this entire</span> <span class="audio-time caption" data-speaker="Philip" data-start="4295.597000" data-stop="4296.599000">choice fatigue.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4296.600000" data-stop="4297.719000">Should I use Flymake?</span> <span class="audio-time caption" data-speaker="Philip" data-start="4297.720000" data-stop="4298.639000">Should I use Flycheck?</span> <span class="audio-time caption" data-speaker="Philip" data-start="4298.640000" data-stop="4300.279000">Should I use LSP mode?</span> <span class="audio-time caption" data-speaker="Philip" data-start="4300.280000" data-stop="4301.039000">Should I use Eglot?</span> <span class="audio-time caption" data-speaker="Philip" data-start="4301.040000" data-stop="4303.099000">Which is not a historically accurate example in</span> <span class="audio-time caption" data-speaker="Philip" data-start="4303.100000" data-stop="4304.239000">the stats that I'm given,</span> <span class="audio-time caption" data-speaker="Philip" data-start="4304.240000" data-stop="4309.599000">But I'm certainly in favor of at least considering</span> <span class="audio-time caption" data-speaker="Philip" data-start="4309.600000" data-stop="4312.039000">upstream contributions.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4312.000000">1:11:52</span> <strong>Guide to contributing to ELPA
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/ye29-prot-and-pkal-emacs-newcomer-experience-01-12-27-567.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/ye29-prot-and-pkal-emacs-newcomer-experience-01-12-27-567.jpg" alt="image from video 01:12:27.567" data-time="01:12:27.567"></a><span class="audio-time caption" data-speaker="Philip" data-start="4312.040000" data-stop="4315.375000"><strong class="speaker-name">Philip:</strong> Even like packages, of course, it's the way we</span> <span class="audio-time caption" data-speaker="Philip" data-start="4315.376000" data-stop="4318.506000">recently published these guidelines, or not</span> <span class="audio-time caption" data-speaker="Philip" data-start="4318.507000" data-stop="4322.090000">guidelines, this contribution guide to publishing</span> <span class="audio-time caption" data-speaker="Philip" data-start="4322.091000" data-stop="4325.402000">packages on ELPA, which is on, if you want to</span> <span class="audio-time caption" data-speaker="Philip" data-start="4325.403000" data-stop="4328.371000">open it in the browser, it's on the ELPA</span> <span class="audio-time caption" data-speaker="Philip" data-start="4328.372000" data-stop="4332.054000">homepage, which lists sort of these hard criteria</span> <span class="audio-time caption" data-speaker="Philip" data-start="4332.055000" data-stop="4335.019000">which we require from ELPA.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4335.020000" data-stop="4337.359000">Just elpa.gnu.org, yeah, it's...</span> <span class="audio-time caption" data-speaker="Philip" data-start="4337.360000" data-stop="4341.679000">That's going to be a link to the page.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4341.680000" data-stop="4344.879000"><strong class="speaker-name">Sacha:</strong> Yeah, this is pretty recent.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="4344.880000" data-stop="4346.633000"><strong class="speaker-name">Philip:</strong> This is recent, and then there's a list</span> <span class="audio-time caption" data-speaker="Philip" data-start="4346.634000" data-stop="4347.559000">of suggestions.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4347.560000" data-stop="4350.759000">But this is getting off the actual point.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4350.760000" data-stop="4354.600000">I'm just saying that relating to the general</span> <span class="audio-time caption" data-speaker="Philip" data-start="4354.601000" data-stop="4360.100000">point, my experience is that proposing something</span> <span class="audio-time caption" data-speaker="Philip" data-start="4360.101000" data-stop="4363.208000">concrete but also be open to hearing the opinions</span> <span class="audio-time caption" data-speaker="Philip" data-start="4363.209000" data-stop="4364.639000">of other people</span> <span class="audio-time caption" data-speaker="Philip" data-start="4364.640000" data-stop="4368.137000">These are the two necessary but maybe not always</span> <span class="audio-time caption" data-speaker="Philip" data-start="4368.138000" data-stop="4370.811000">sufficient ingredients to making the</span> <span class="audio-time caption" data-speaker="Philip" data-start="4370.812000" data-stop="4373.179000">changing stuff.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4373.180000" data-stop="4376.167000">Because if you just say, I want this to be</span> <span class="audio-time caption" data-speaker="Philip" data-start="4376.168000" data-stop="4377.057000">different but don't put in the work, then</span> <span class="audio-time caption" data-speaker="Philip" data-start="4377.058000" data-stop="4378.959000">everyone's going to forget it.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4378.960000" data-stop="4381.256000">But if you propose something and then insist that</span> <span class="audio-time caption" data-speaker="Philip" data-start="4381.257000" data-stop="4383.490000">it has to be exactly this way, then you're just</span> <span class="audio-time caption" data-speaker="Philip" data-start="4383.491000" data-stop="4384.679000">creating social tension.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4384.680000" data-stop="4391.419000">Maybe missing out on interesting things.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4391.000000">1:13:11</span> <strong>Making the newcomer experience better</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4391.420000" data-stop="4393.500000"><strong class="speaker-name">Sacha:</strong> And especially since people are using</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4393.501000" data-stop="4395.967000">Emacs for so many different reasons and coming</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4395.968000" data-stop="4398.500000">from so many different backgrounds, what you are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4398.501000" data-stop="4400.459000">very firmly committed to might very well work for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4400.460000" data-stop="4403.348000">one set of people, but will run into these issues</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4403.349000" data-stop="4404.999000">for all these other people.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4405.000000" data-stop="4407.490000">So if we want to bring it back to this, you know,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4407.491000" data-stop="4409.879000">how do we make the newcomer experience better?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4409.880000" data-stop="4412.813000">It's great that in core, there's starting to be a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4412.814000" data-stop="4415.534000">little bit more infrastructure for supporting</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4415.535000" data-stop="4417.939000">things like sets of reasonable defaults</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4417.940000" data-stop="4418.679000">for people.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4418.680000" data-stop="4421.888000">And maybe we as a community need to figure out,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4421.889000" data-stop="4424.673000">all right, how do we write documentation</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4424.674000" data-stop="4425.439000">around it?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4425.440000" data-stop="4426.959000">How do we make tutorial videos?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4426.960000" data-stop="4430.211000">How do we encapsulate, okay, this is what this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4430.212000" data-stop="4433.628000">typical newcomer experience is like for this set</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4433.629000" data-stop="4437.081000">of people and maybe these options or packages or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4437.082000" data-stop="4440.319000">a glue code might be helpful for this group?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4440.320000" data-stop="4445.659000">Maybe.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4445.660000" data-stop="4448.182000"><strong class="speaker-name">Prot:</strong> Yeah, like in theory, you can imagine something</span> <span class="audio-time caption" data-speaker="Prot" data-start="4448.183000" data-stop="4450.920000">like, if you are a Python developer, here is your</span> <span class="audio-time caption" data-speaker="Prot" data-start="4450.921000" data-stop="4453.616000">Python presets theme. If you are doing</span> <span class="audio-time caption" data-speaker="Prot" data-start="4453.617000" data-stop="4456.336000">Org or whatever, here is your LaTeX and friends,</span> <span class="audio-time caption" data-speaker="Prot" data-start="4456.337000" data-stop="4459.038000">right, and you could also have extensions like</span> <span class="audio-time caption" data-speaker="Prot" data-start="4459.039000" data-stop="4461.779000">that in the future.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="4461.780000" data-stop="4464.419000"><strong class="speaker-name">Philip:</strong> I mean nothing about the idea is... It</span> <span class="audio-time caption" data-speaker="Philip" data-start="4464.420000" data-stop="4468.599000">could have been used as a package people can</span> <span class="audio-time caption" data-speaker="Philip" data-start="4468.600000" data-stop="4470.319000">load otherwise.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4470.000000">1:14:30</span> <strong>"user option themes" versus "appearance themes"</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="4470.320000" data-stop="4473.212000"><strong class="speaker-name">Philip:</strong> And hopefully, as I said, there is</span> <span class="audio-time caption" data-speaker="Philip" data-start="4473.213000" data-stop="4476.399000">certainly additional work which can be put in to</span> <span class="audio-time caption" data-speaker="Philip" data-start="4476.400000" data-stop="4479.719000">support making user option themes better supported.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4479.720000" data-stop="4482.377000">I think one of the things that will be useful is</span> <span class="audio-time caption" data-speaker="Philip" data-start="4482.378000" data-stop="4485.004000">actually referring to them just in nomenclature</span> <span class="audio-time caption" data-speaker="Philip" data-start="4485.005000" data-stop="4487.452000">points as user option themes to distinguish</span> <span class="audio-time caption" data-speaker="Philip" data-start="4487.453000" data-stop="4488.839000">them from.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4488.840000" data-stop="4489.700000"><strong class="speaker-name">Sacha:</strong> From themes.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4489.701000" data-stop="4491.239000"><strong class="speaker-name">Prot:</strong> From color themes, yeah.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="4491.240000" data-stop="4493.279000"><strong class="speaker-name">Philip:</strong> Color themes, yeah.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4493.280000" data-stop="4496.278000">We even introduced the distinction that themes have</span> <span class="audio-time caption" data-speaker="Philip" data-start="4496.279000" data-stop="4498.039000">kinds since like Emacs 20.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4498.040000" data-stop="4501.459000"><strong class="speaker-name">Prot:</strong> 29, I think.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="4501.460000" data-stop="4502.039000"><strong class="speaker-name">Philip:</strong> 29.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4502.600000" data-stop="4506.639000"><strong class="speaker-name">Prot:</strong> I think you did that, right?</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="4506.640000" data-stop="4509.639000"><strong class="speaker-name">Philip:</strong> I think I worked on a patch.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4509.640000" data-stop="4511.918000">But that was exactly, I mean, that was already</span> <span class="audio-time caption" data-speaker="Philip" data-start="4511.919000" data-stop="4514.015000">where the seeds for the current theme were</span> <span class="audio-time caption" data-speaker="Philip" data-start="4514.016000" data-stop="4516.491000">started, because we wanted to distinguish between</span> <span class="audio-time caption" data-speaker="Philip" data-start="4516.492000" data-stop="4518.159000">these different kinds of things.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4518.160000" data-stop="4523.059000">Were there any other questions?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4523.060000" data-stop="4524.199000"><strong class="speaker-name">Prot:</strong> I don't think so.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4524.000000">1:15:24</span> <strong>find-library</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="4524.200000" data-stop="4527.399000"><strong class="speaker-name">Prot:</strong> But yeah, as we saw now with the find-library</span> <span class="audio-time caption" data-speaker="Prot" data-start="4527.400000" data-stop="4530.916000">that Sacha did in the beginning, it would be nice</span> <span class="audio-time caption" data-speaker="Prot" data-start="4530.917000" data-stop="4534.129000">to also eventually be able to find the theme</span> <span class="audio-time caption" data-speaker="Prot" data-start="4534.130000" data-stop="4535.079000">or whatever.</span> <span class="audio-time caption" data-speaker="Prot" data-start="4535.080000" data-stop="4537.319000">Maybe it's a different find-theme,</span> <span class="audio-time caption" data-speaker="Prot" data-start="4537.320000" data-stop="4541.839000">if for whatever reason it cannot be find-library.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="4541.840000" data-stop="4543.910000"><strong class="speaker-name">Philip:</strong> That's actually no reason why that</span> <span class="audio-time caption" data-speaker="Philip" data-start="4543.911000" data-stop="4545.959000">shouldn't be the case.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4545.960000" data-stop="4548.729000">I mean, you could just extend the logic to not</span> <span class="audio-time caption" data-speaker="Philip" data-start="4548.730000" data-stop="4551.439000">only consider the load-list, but also the...</span> <span class="audio-time caption" data-speaker="Philip" data-start="4551.440000" data-stop="4553.561000">Whatever the variable is for the list, then it</span> <span class="audio-time caption" data-speaker="Philip" data-start="4553.562000" data-stop="4555.800000">should be able to find that as well, even though</span> <span class="audio-time caption" data-speaker="Philip" data-start="4555.801000" data-stop="4557.759000">it's strictly speaking, that's a library.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4557.760000" data-stop="4561.098000">But that's a decision that someone has to make at</span> <span class="audio-time caption" data-speaker="Philip" data-start="4561.099000" data-stop="4564.459000">some point or convince someone.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4564.460000" data-stop="4565.679000"><strong class="speaker-name">Sacha:</strong> I think find-library does work for it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4565.680000" data-stop="4568.123000">Like, find-library will find it only if</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4568.124000" data-stop="4568.959000">it's loaded.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4568.960000" data-stop="4570.159000">And then since I can't, like, undo it...</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4570.160000" data-stop="4571.479000"><strong class="speaker-name">Prot:</strong> If it's a package...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4571.480000" data-stop="4572.599000"><strong class="speaker-name">Sacha:</strong> Yeah, yeah.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4572.600000" data-stop="4575.779000"><strong class="speaker-name">Prot:</strong> If you install it as a package, yes.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="4575.780000" data-stop="4577.145000"><strong class="speaker-name">Philip:</strong> Because then the theme is in a</span> <span class="audio-time caption" data-speaker="Philip" data-start="4577.146000" data-stop="4579.679000">directory which package.el has added to a</span> <span class="audio-time caption" data-speaker="Philip" data-start="4579.680000" data-stop="4580.359000">load list.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4580.360000" data-stop="4584.585000">I think the preset, if my memory serves</span> <span class="audio-time caption" data-speaker="Philip" data-start="4584.586000" data-stop="4588.794000">me correct, then find library only looks through</span> <span class="audio-time caption" data-speaker="Philip" data-start="4588.795000" data-stop="4590.259000">load-path.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4590.260000" data-stop="4591.399000"><strong class="speaker-name">Sacha:</strong> I see, I see.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4591.400000" data-stop="4594.639000">And etc/themes is not in the load-path.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="4594.640000" data-stop="4595.767000"><strong class="speaker-name">Philip:</strong> Exactly.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4595.768000" data-stop="4598.933000">Because these aren't, this is, I don't know why.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4598.934000" data-stop="4599.933000">It's not...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4599.934000" data-stop="4601.267000"><strong class="speaker-name">Sacha:</strong> Okay, all right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4601.268000" data-stop="4609.379000">That's another message to emacs-devel.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4609.000000">1:16:49</span> <strong>configuration generator in Emacs? maybe more wizards?</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="4609.380000" data-stop="4614.436000"><strong class="speaker-name">Philip:</strong> It's the sort of annoyance which from my</span> <span class="audio-time caption" data-speaker="Philip" data-start="4614.437000" data-stop="4616.233000">perspective is so inconvenient that I forget it</span> <span class="audio-time caption" data-speaker="Philip" data-start="4616.234000" data-stop="4619.859000">every time and then you don't change it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4619.000000">1:16:59</span> <strong>Starter kits</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4619.860000" data-stop="4624.255000"><strong class="speaker-name">Sacha:</strong> @brongulus says the Doom Emacs module</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4624.256000" data-stop="4627.151000">approach is very nice for beginners and entices</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4627.152000" data-stop="4628.999000">them to get into things more.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4629.000000" data-stop="4631.066000">People interested in a certain common set of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4631.067000" data-stop="4633.201000">functionality can get an opinionated starting</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4633.202000" data-stop="4635.420000">point in Emacs, rather than worrying about what</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4635.421000" data-stop="4635.999000">to install.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4636.000000" data-stop="4639.039000">And someone else in the previous</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4639.040000" data-stop="4642.439000">That's sort of like the theme approach, isn't it?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4642.440000" data-stop="4644.399000">Sort of, yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4644.400000" data-stop="4647.331000">It's not just, hey, these are the packages and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4647.332000" data-stop="4650.470000">you can comment and uncomment lines that load the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4650.471000" data-stop="4654.533000">different modules, but also here's the glue to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4654.534000" data-stop="4656.435000">sort of start to make some of them work better</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4656.436000" data-stop="4659.759000">together or to change them to reasonable defaults.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4659.000000">1:17:39</span> <strong>Configuration generator in Emacs Lisp?</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4659.760000" data-stop="4662.772000"><strong class="speaker-name">Sacha:</strong> I was wondering, actually, along those lines, any</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4662.773000" data-stop="4665.266000">thoughts about making your configuration</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4665.267000" data-stop="4671.299000">generator type thing in Emacs?</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="4671.300000" data-stop="4673.767000"><strong class="speaker-name">Philip:</strong> The reason I, in the configuration</span> <span class="audio-time caption" data-speaker="Philip" data-start="4673.768000" data-stop="4676.000000">generator, did not implement it in Emacs was</span> <span class="audio-time caption" data-speaker="Philip" data-start="4676.001000" data-stop="4679.000000">precisely due to if it were in Emacs and would</span> <span class="audio-time caption" data-speaker="Philip" data-start="4679.001000" data-stop="4679.493000">use, for example, something like the widget</span> <span class="audio-time caption" data-speaker="Philip" data-start="4679.494000" data-stop="4682.304000">library and there would be these fine UI</span> <span class="audio-time caption" data-speaker="Philip" data-start="4682.305000" data-stop="4685.489000">discrepancies which people wouldn't expect to</span> <span class="audio-time caption" data-speaker="Philip" data-start="4685.490000" data-stop="4688.780000">behave the way they do, then scrolling doesn't</span> <span class="audio-time caption" data-speaker="Philip" data-start="4688.781000" data-stop="4691.999000">behave exactly the way they expect it to do.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4692.000000" data-stop="4694.854000">But there has been an idea, I think, when I</span> <span class="audio-time caption" data-speaker="Philip" data-start="4694.855000" data-stop="4697.627000">mentioned the configuration generator the</span> <span class="audio-time caption" data-speaker="Philip" data-start="4697.628000" data-stop="4698.439000">first time.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4698.440000" data-stop="4701.236000">It was the notion of having actually a shared</span> <span class="audio-time caption" data-speaker="Philip" data-start="4701.237000" data-stop="4704.105000">file format behind it, just some S expression,</span> <span class="audio-time caption" data-speaker="Philip" data-start="4704.106000" data-stop="4707.049000">which could be loaded by both the configuration</span> <span class="audio-time caption" data-speaker="Philip" data-start="4707.050000" data-stop="4709.882000">generator and a generic configuration wizard,</span> <span class="audio-time caption" data-speaker="Philip" data-start="4709.883000" data-stop="4712.988000">which could also be used like every package could</span> <span class="audio-time caption" data-speaker="Philip" data-start="4712.989000" data-stop="4716.061000">define their own configuration wizard for asking</span> <span class="audio-time caption" data-speaker="Philip" data-start="4716.062000" data-stop="4720.499000">the user selected options and configuring these.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4720.000000">1:18:40</span> <strong>extending the archive format</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="4720.500000" data-stop="4722.758000"><strong class="speaker-name">Philip:</strong> That's also another thing in Emacs 32</span> <span class="audio-time caption" data-speaker="Philip" data-start="4722.759000" data-stop="4726.299000">which I plan to work on, to extend the package</span> <span class="audio-time caption" data-speaker="Philip" data-start="4726.300000" data-stop="4727.479000">archive format.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4727.480000" data-stop="4730.264000">Among other things, allowing for multiple</span> <span class="audio-time caption" data-speaker="Philip" data-start="4730.265000" data-stop="4733.408000">packages to be listed in it, because</span> <span class="audio-time caption" data-speaker="Philip" data-start="4733.409000" data-stop="4736.235000">GNU ELPA and NonGNU ELPA both store multiple</span> <span class="audio-time caption" data-speaker="Philip" data-start="4736.236000" data-stop="4739.171000">versions of all packages, but you can only</span> <span class="audio-time caption" data-speaker="Philip" data-start="4739.172000" data-stop="4741.199000">install the most recent one.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4741.200000" data-stop="4742.239000">That's why pinning doesn't work.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4742.240000" data-stop="4745.214000">Absolutely no technical reason why this shouldn't</span> <span class="audio-time caption" data-speaker="Philip" data-start="4745.215000" data-stop="4747.279000">also list other versions as well.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4747.280000" data-stop="4750.252000">And then you could have pinning without having to</span> <span class="audio-time caption" data-speaker="Philip" data-start="4750.253000" data-stop="4750.799000">use Git.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4750.800000" data-stop="4752.559000">Packages as well.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4752.560000" data-stop="4753.839000">And there are a few others.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4753.840000" data-stop="4756.969000">There was a thread I think earlier this year</span> <span class="audio-time caption" data-speaker="Philip" data-start="4756.970000" data-stop="4760.276000">where I collected a number of these extensions</span> <span class="audio-time caption" data-speaker="Philip" data-start="4760.277000" data-stop="4763.799000">for the archive formats which could be extended.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4763.800000" data-stop="4768.199000">And now I forgot my thread.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4768.200000" data-stop="4771.999000">Now I lost my thread of those.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4772.000000" data-stop="4774.003000"><strong class="speaker-name">Prot:</strong> But basically extending package.el and</span> <span class="audio-time caption" data-speaker="Prot" data-start="4774.004000" data-stop="4775.839000">the archive, yeah.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="4776.660000" data-stop="4780.559000"><strong class="speaker-name">Philip:</strong> Specifically the archive, so that...</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4780.560000" data-stop="4783.167000"><strong class="speaker-name">Prot:</strong> Showing the previous versions which are</span> <span class="audio-time caption" data-speaker="Prot" data-start="4783.168000" data-stop="4784.867000">already listed, like you said.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="4784.868000" data-stop="4786.369000"><strong class="speaker-name">Philip:</strong> Yeah, so that you could pin the version</span> <span class="audio-time caption" data-speaker="Philip" data-start="4786.370000" data-stop="4788.679000">so you could install the version.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4788.680000" data-stop="4791.867000">I honestly do not remember what I was saying just</span> <span class="audio-time caption" data-speaker="Philip" data-start="4791.868000" data-stop="4794.599000">a few seconds ago, which is embarrassing.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4794.600000" data-stop="4796.759000">Okay, that's another problem.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4796.760000" data-stop="4799.179000"><strong class="speaker-name">Prot:</strong> Things happen, no worries.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="4799.180000" data-stop="4802.199000"><strong class="speaker-name">Philip:</strong> You were talking about Doom Emacs?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4802.200000" data-stop="4805.067000"><strong class="speaker-name">Prot:</strong> There was a comment about the Doom Emacs</span> <span class="audio-time caption" data-speaker="Prot" data-start="4805.068000" data-stop="4806.429000">and specifically the fact that there are these</span> <span class="audio-time caption" data-speaker="Prot" data-start="4806.430000" data-stop="4809.044000">modules and you can load the module without</span> <span class="audio-time caption" data-speaker="Prot" data-start="4809.045000" data-stop="4811.599000">thinking specifically about the packages.</span> <span class="audio-time caption" data-speaker="Prot" data-start="4811.600000" data-stop="4814.052000">But then Sacha told you about your package</span> <span class="audio-time caption" data-speaker="Prot" data-start="4814.053000" data-stop="4816.499000">configurator wizard.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="4816.500000" data-stop="4818.720000"><strong class="speaker-name">Philip:</strong> Package configurator wizard and then</span> <span class="audio-time caption" data-speaker="Philip" data-start="4818.721000" data-stop="4822.206000">extending the metadata could also include this</span> <span class="audio-time caption" data-speaker="Philip" data-start="4822.207000" data-stop="4824.479000">sort of configuration option.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4824.480000" data-stop="4826.980000">So that packages, in some sense, could specify</span> <span class="audio-time caption" data-speaker="Philip" data-start="4826.981000" data-stop="4829.178000">what options the user would primarily be</span> <span class="audio-time caption" data-speaker="Philip" data-start="4829.179000" data-stop="4831.416000">interested in and what order they should</span> <span class="audio-time caption" data-speaker="Philip" data-start="4831.417000" data-stop="4832.199000">be traversed.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4832.200000" data-stop="4834.046000">And you could have some sort of dependency,</span> <span class="audio-time caption" data-speaker="Philip" data-start="4834.047000" data-stop="4834.519000">of course.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4834.520000" data-stop="4837.679000">This is some effort which has to be put in, but</span> <span class="audio-time caption" data-speaker="Philip" data-start="4837.680000" data-stop="4840.805000">it's not something that's unreasonable, from a</span> <span class="audio-time caption" data-speaker="Philip" data-start="4840.806000" data-stop="4843.999000">technical perspective, from implementing this.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4844.000000" data-stop="4846.746000">And it would make, I think, it could make, if you</span> <span class="audio-time caption" data-speaker="Philip" data-start="4846.747000" data-stop="4849.522000">have the infrastructure for that, that would make</span> <span class="audio-time caption" data-speaker="Philip" data-start="4849.523000" data-stop="4851.959000">installing and using packages a lot nicer.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4851.960000" data-stop="4856.959000">It sounds very promising, for sure.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4856.000000">1:20:56</span> <strong>User interfaces</strong></div><p></p><span class="audio-time caption" data-speaker="Philip" data-start="4856.960000" data-stop="4858.679000"><strong class="speaker-name">Philip:</strong> The UI question remains the thing.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4858.680000" data-stop="4863.510000">Do you want to reuse the Customize UI, which has</span> <span class="audio-time caption" data-speaker="Philip" data-start="4863.511000" data-stop="4865.679000">its historical warts?</span> <span class="audio-time caption" data-speaker="Philip" data-start="4865.680000" data-stop="4867.159000">Of course, can they be ironed out?</span> <span class="audio-time caption" data-speaker="Philip" data-start="4867.160000" data-stop="4868.879000">That's a different question.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4868.880000" data-stop="4872.199000">Or do you reinvent something from scratch?</span> <span class="audio-time caption" data-speaker="Philip" data-start="4872.200000" data-stop="4874.759000">And I'm usually not that big of a fan of</span> <span class="audio-time caption" data-speaker="Philip" data-start="4874.760000" data-stop="4876.039000">reinventing the UI.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4876.040000" data-stop="4879.913000">I'm more in the reuse existing interfaces, just</span> <span class="audio-time caption" data-speaker="Philip" data-start="4879.914000" data-stop="4883.379000">into the back end.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4883.380000" data-stop="4884.452000"><strong class="speaker-name">Prot:</strong> Plus, if you were to invent a new UI, you</span> <span class="audio-time caption" data-speaker="Prot" data-start="4884.453000" data-stop="4887.271000">wouldn't have this new feature already because</span> <span class="audio-time caption" data-speaker="Prot" data-start="4887.272000" data-stop="4889.644000">you have too many things that you need</span> <span class="audio-time caption" data-speaker="Prot" data-start="4889.645000" data-stop="4890.519000">to implement.</span> <span class="audio-time caption" data-speaker="Prot" data-start="4890.520000" data-stop="4893.200000">Whereas just using custom UI allows you to just</span> <span class="audio-time caption" data-speaker="Prot" data-start="4893.201000" data-stop="4895.787000">implement the feature and then the interface,</span> <span class="audio-time caption" data-speaker="Prot" data-start="4895.788000" data-stop="4898.638000">maybe it's something that somebody else will work</span> <span class="audio-time caption" data-speaker="Prot" data-start="4898.639000" data-stop="4900.559000">on or you work on at the latest.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="4900.560000" data-stop="4904.039000"><strong class="speaker-name">Philip:</strong> Yeah, but then, of course, that's...</span> <span class="audio-time caption" data-speaker="Philip" data-start="4904.040000" data-stop="4906.859000">Even if that is the case, then you have to make</span> <span class="audio-time caption" data-speaker="Philip" data-start="4906.860000" data-stop="4909.772000">sure that you don't make assumptions that depend</span> <span class="audio-time caption" data-speaker="Philip" data-start="4909.773000" data-stop="4912.079000">on your own customizer in the future.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4912.605000" data-stop="4918.111000">It's a whole list of dependencies which is</span> <span class="audio-time caption" data-speaker="Philip" data-start="4918.131000" data-stop="4919.332000">just complicated.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4919.352000" data-stop="4921.354000"><strong class="speaker-name">Sacha:</strong> That sounds like a newcomers presets to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4921.495000" data-stop="4925.459000">un-wartify Customize, a reset theme to put the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4925.479000" data-stop="4929.423000">warts back on as needed, and then we can use the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4929.463000" data-stop="4932.126000">slightly more modern interface for the things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4932.207000" data-stop="4938.419000">that we had wanted to do, maybe two or three years down the line.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="4938.420000" data-stop="4944.259000"><strong class="speaker-name">Philip:</strong> Maybe something like that. A little long-term planning.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4944.260000" data-stop="4947.734000"><strong class="speaker-name">Prot:</strong> I think just to say this, but of course</span> <span class="audio-time caption" data-speaker="Prot" data-start="4947.774000" data-stop="4950.917000">everything we have covered thus far, always we</span> <span class="audio-time caption" data-speaker="Prot" data-start="4950.957000" data-stop="4951.558000">have to state it.</span> <span class="audio-time caption" data-speaker="Prot" data-start="4952.459000" data-stop="4955.962000">Newcomers with an asterisk, right?</span> <span class="audio-time caption" data-speaker="Prot" data-start="4956.082000" data-stop="4959.005000">With the caveat that you still have to put in the</span> <span class="audio-time caption" data-speaker="Prot" data-start="4959.065000" data-stop="4961.507000">work, read the manual, be patient, all</span> <span class="audio-time caption" data-speaker="Prot" data-start="4961.567000" data-stop="4971.419000">that, right?</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="4971.420000" data-stop="4974.149000"><strong class="speaker-name">Philip:</strong> Ideally, it would be nice if you could</span> <span class="audio-time caption" data-speaker="Philip" data-start="4974.229000" data-stop="4975.390000">even start without it.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4975.430000" data-stop="4977.052000">I mean, I started without it, but it took me</span> <span class="audio-time caption" data-speaker="Philip" data-start="4977.072000" data-stop="4981.377000">three or four years to actually write this one.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4981.738000" data-stop="4983.640000">I didn't want to write defun.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4983.660000" data-stop="4984.140000">I thought, what?</span> <span class="audio-time caption" data-speaker="Philip" data-start="4984.160000" data-stop="4985.362000">I don't write my own functions.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4985.382000" data-stop="4987.885000">I just want to set options, which was wrong and</span> <span class="audio-time caption" data-speaker="Philip" data-start="4987.925000" data-stop="4988.526000">appealing to this.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4988.566000" data-stop="4990.107000">That was the point from the beginning.</span> <span class="audio-time caption" data-speaker="Philip" data-start="4990.128000" data-stop="4992.250000">But I think, Sacha, you wanted to close there.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4992.685000" data-stop="4994.608000"><strong class="speaker-name">Sacha:</strong> Oh, I just wanted to acknowledge that we</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4994.648000" data-stop="4997.011000">are coming up in the 20 minutes that you said you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4997.052000" data-stop="4997.893000">were available for.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4998.994000" data-stop="4999.836000">Yeah, yeah, yeah, I need to go.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5000.056000" data-stop="5001.819000">Yeah, yeah, the dogs and everything.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="5002.560000" data-stop="5004.002000"><strong class="speaker-name">Prot:</strong> Yeah, yeah, I have to take them for a</span> <span class="audio-time caption" data-speaker="Prot" data-start="5004.042000" data-stop="5005.644000">walk because I have a meeting afterwards.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="5005.825000" data-stop="5006.506000"><strong class="speaker-name">Sacha:</strong> Right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5006.526000" data-stop="5007.587000">I wanted to thank both of you.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5007.888000" data-stop="5010.091000">I really like this conversation and the heads up</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5010.151000" data-stop="5012.314000">and the interesting things coming down</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5012.354000" data-stop="5013.476000">the pipeline.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5013.656000" data-stop="5014.638000">So thank you for that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5014.520000" data-stop="5018.213000">We're going to continue, I think, working on the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5018.214000" data-stop="5020.599000">user experience for newcomers.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5020.600000" data-stop="5024.032000">which will probably be a mix of documentation and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5024.033000" data-stop="5027.209000">packages and other experiments and occasional</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5027.210000" data-stop="5030.569000">email to emacs-devel suggesting things like the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5030.570000" data-stop="5032.999000">find-user-init-file and whatever.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5033.000000" data-stop="5035.316000">But thank you so much to you and to everyone</span> <span class="audio-time caption" data-speaker="Sacha" data-start="5035.317000" data-stop="5038.659000">who's tuned in.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="5038.660000" data-stop="5040.000000"><strong class="speaker-name">Prot:</strong> You're welcome.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="5040.001000" data-stop="5041.167000"><strong class="speaker-name">Philip:</strong> Thank you for hosting.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="5041.168000" data-stop="5043.219000"><strong class="speaker-name">Prot:</strong> Thank you.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="5043.220000" data-stop="5044.267000"><strong class="speaker-name">Philip:</strong> Thank you, Prot, for your comments as well.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="5044.268000" data-stop="5046.279000"><strong class="speaker-name">Prot:</strong> Take care.</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="5046.280000" data-stop="5046.599000"><strong class="speaker-name">Philip:</strong> Bye-bye.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="5046.600000" data-stop="5049.339000"><strong class="speaker-name">Prot:</strong> Goodbye, goodbye.</span> <span class="audio-time caption" data-speaker="Prot" data-start="5049.340000" data-stop="5052.659000">Where do we close from here?</span> <p></p><span class="audio-time caption" data-speaker="Philip" data-start="5052.660000" data-stop="5053.919000"><strong class="speaker-name">Philip:</strong> I'm just going to close the tab.</span> <span class="audio-time caption" data-speaker="Philip" data-start="5053.920000" data-stop="5055.000000">Bye.</span></div>
<p></p>


<a name="end-ye29-transcript"></a></div></details>
</div>
</div>
<div id="outline-container-ye29-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-chat" class="outline-3">
<h3 id="ye29-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-chat"><a href="https://sachachua.com/blog/feed/index.xml#ye29-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-chat">Chat</a></h3>
<div class="outline-text-3" id="text-ye29-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-chat">
<div class="chat" id="org6d601d7">
<ul class="org-ul">
<li><span class="nick">protesilaos:</span> ​Hello folks!</li>
<li><span class="nick">MichaelVash7886:</span> ​hi</li>
<li><span class="nick">protesilaos:</span> ​We still have a few more minutes. Looking forward to it!</li>
<li><span class="nick">MichaelVash7886:</span> ​ended up starting on doom and the nice thing is anything I want to try out is either in there or it's a simple tweak away. but it's several layers of abstractions to change certain things</li>
<li><span class="nick">MichaelVash7886:</span> ​for me to go from using doom to being able to program with a vanilla emacs I know it's going to be a journey to get things like completion, eglot, etc all setup</li>
<li><span class="nick">MichaelVash7886:</span> ​also looking at moving away from evil to using something like Meow and vanilla emacs binds</li>
<li><span class="nick">lc2000:</span> ​​Speaking of splash screen, there's still plenty of room, why not inline the GPL, and a small essay. Kidding of course, but what of slaying that sacred cow&hellip;?</li>
<li><span class="nick">lc2000:</span> ​(As it stands, it prioritizes ideology, laywer-mandated stuff from before case law, credits, funding via manual ordering&hellip; and if new users don't recoil some things they may actually need/want.)</li>
<li><span class="nick">takoverflow:</span> ​​Hello Prot, Sacha and Philip!</li>
<li><span class="nick">takoverflow:</span> ​Thanks for this discussion</li>
<li><span class="nick">RandCode:</span> ​​greetings, everyone!</li>
<li><span class="nick">RandCode:</span> ​​emacs has a place for chatting in all of irc, matrix, xmpp and telegram room! (also email)</li>
<li><span class="nick">lc2000:</span> ​​Packages are great at bundling functionalities, but Doom/Spacemacs/etc also fix the multi-package integration "glue", which technically could be packages (see all prior "config modules" attempts&hellip;).</li>
<li><span class="nick">sachactube:</span> ​​<a href="https://bbb.emacsverse.org/rooms/chat">https://bbb.emacsverse.org/rooms/chat</a>&hellip;</li>
<li><span class="nick">protesilaos:</span> ​Come join us :)</li>
<li><span class="nick">lc2000:</span> ​Probably best to talk of modern de facto "standards" (vs full CUA as then-defined), e.g. if there's a "region" new users expect C-c (or C-c C-c in anger) to work, and idem C-x/etc - easy wins maybe.</li>
<li><span class="nick">brongulus:</span> I do prefer the idosyncracies of with-eval-after-load and actually explicitly binding and creating hooks, rather than relying on use-package is that it tells me explicitly the order in which things would be evaluated. In contrast to use-package where I would have to know about defer and how to properly define the order of loading of different packages.</li>
<li><span class="nick">Protesilaos:</span> @brongulus Fair point! I also like it. The thing with use-package is that you understand it better if you know what it does under the hood.</li>
<li><span class="nick">brongulus:</span> This is where the doom emacs' module approach is very nice for beginners and entices them <a href="https://github.com/doomemacs/doomemacs/blob/master/modules/README.org">https://github.com/doomemacs/doomemacs/blob/master/modules/README.org</a></li>
<li><span class="nick">brongulus:</span> People interested in a certain common set of functionality can get an opinionated starting point in emacs rather than worrying about what to install</li>
<li><span class="nick">brongulus:</span> This is how it looks <a href="https://github.com/doomemacs/doomemacs/blob/master/static/init.example.el">https://github.com/doomemacs/doomemacs/blob/master/static/init.example.el</a></li>
<li><span class="nick">brongulus:</span> Thank you for the meeting o.</li>
</ul>

</div>
</div>
</div>
<div id="outline-container-may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-some-types-of-new-users-to-think-about" class="outline-3">
<h3 id="may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-some-types-of-new-users-to-think-about"><a href="https://sachachua.com/blog/feed/index.xml#may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-some-types-of-new-users-to-think-about">Some types of new users to think about</a></h3>
<div class="outline-text-3" id="text-may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-some-types-of-new-users-to-think-about">
<ul class="org-ul">
<li>Non-programmer interested in using Org Mode for notes and task management</li>
<li>Researcher interested in publishing, reproducible research, literate programming</li>
<li>Programmer interested in coding with Emacs
<ul class="org-ul">
<li>Coming from VSCode</li>
<li>Coming from Vi</li>
</ul></li>
<li>Programmer still using a different IDE, just interested in Magit</li>
<li>Long-time Emacs user who hasn't explored Emacs Lisp</li>
</ul>
</div>
</div>
<div id="outline-container-may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-part-of-a-learning-journey" class="outline-3">
<h3 id="may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-part-of-a-learning-journey"><a href="https://sachachua.com/blog/feed/index.xml#may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-part-of-a-learning-journey">Sketching out their learning journey</a></h3>
<div class="outline-text-3" id="text-may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-part-of-a-learning-journey">
<ul class="org-ul">
<li>Install Emacs</li>
<li>Use Emacs via the menu bar and toolbar</li>
<li>Get a little overwhelmed</li>
<li>Use M-x to call commands by name</li>
<li>Learn how to set up completion</li>
<li>Use some keyboard shortcuts</li>
<li>Figure out how to learn and connect</li>
<li>Customize some options</li>
<li>&hellip;</li>
<li>Eureka!</li>
<li>Define their own keyboard shortcuts
<ul class="org-ul">
<li>Challenge: init file</li>
</ul></li>
<li>&hellip;</li>
<li>Define their own functions
<ul class="org-ul">
<li>Challenge: Emacs Lisp</li>
</ul></li>
</ul>
</div>
</div>
<div id="outline-container-may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-other-notes" class="outline-3">
<h3 id="may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-other-notes"><a href="https://sachachua.com/blog/feed/index.xml#may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-other-notes">Other notes</a></h3>
<div class="outline-text-3" id="text-may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-other-notes">
<p>
Learning how to modify Emacs with Emacs Lisp can help people really
appreciate its power. For example, you need Emacs Lisp to set your own
keyboard shortcuts. You can't set them through the Options menu or the
<code>M-x customize</code> interface. One challenge is that the Emacs Lisp
configuration file that is loaded at the start of every Emacs session
might be in one of several places, which means that in order for
newbies to understand how to add something like:
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">bind-key</span> <span class="org-string">"C-c r"</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">org-capture</span>)
</code></pre>
</div>


<p>
we need to either include a link to something like <a href="https://www.emacswiki.org/emacs/InitFile">EmacsWiki: Init
File</a>, or repeat the instructions and the troubleshooting steps in beginner tutorials.
</p>

<ul class="org-ul">
<li>user-init-file defaults to <code>.emacs</code> for new users if none of <code>~/.emacs</code>, <code>~/.emacs.el</code>, <code>~/.emacs.d/init.el</code>, and <code>~/.config/emacs/init.el</code> exist.</li>

<li>After you select newcomer-presets from the splash screen, this is not persisted automatically. "Options &gt; Save Options" doesn't save it either. Because people usually think of themes as cosmetic, they're not likely to find it under "Options &gt; Customize Emacs &gt; Custom Themes; newcomers-presets; Save Theme Settings." The "Options &gt; Save Options" will save the change that newcomers-presets made to the tab bar, thus creating a <code>~/.emacs</code>.</li>
<li><a href="https://doc.emacsen.de/gallery.html">https://doc.emacsen.de/gallery.html</a> - gallery of themes built into Emacs</li>
</ul>
</div>
</div>
<div id="outline-container-may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-some-screenshots-of-a-fresh-emacs" class="outline-3">
<h3 id="may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-some-screenshots-of-a-fresh-emacs"><a href="https://sachachua.com/blog/feed/index.xml#may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-some-screenshots-of-a-fresh-emacs">Some screenshots of a fresh Emacs</a></h3>
<div class="outline-text-3" id="text-may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-some-screenshots-of-a-fresh-emacs">

<figure id="org77b4c8b">
<a href="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/2026-05-12_08-59-17.png"><img src="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/2026-05-12_08-59-17.png" alt="2026-05-12_08-59-17.png"></a>

<figcaption><span class="figure-number">Figure 1: </span>The splash screen for a new Emacs</figcaption>
</figure>


<figure id="orgd5302ee">
<a href="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/2026-05-12_09-01-50.png"><img src="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/2026-05-12_09-01-50.png" alt="2026-05-12_09-01-50.png"></a>

<figcaption><span class="figure-number">Figure 2: </span>File menu</figcaption>
</figure>


<figure id="org1a8e177">
<a href="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/2026-05-12_09-02-43.png"><img src="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/2026-05-12_09-02-43.png" alt="2026-05-12_09-02-43.png"></a>

<figcaption><span class="figure-number">Figure 3: </span>Customize menu</figcaption>
</figure>


<figure id="org1074378">
<a href="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/2026-05-12_09-03-37.png"><img src="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/2026-05-12_09-03-37.png" alt="2026-05-12_09-03-37.png"></a>

<figcaption><span class="figure-number">Figure 4: </span>Help menu</figcaption>
</figure>
</div>
</div>
<div id="outline-container-may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-trying-pkal-s-emacs-configuration-generator" class="outline-3">
<h3 id="may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-trying-pkal-s-emacs-configuration-generator"><a href="https://sachachua.com/blog/feed/index.xml#may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-trying-pkal-s-emacs-configuration-generator">Trying pkal's Emacs Configuration Generator</a></h3>
<div class="outline-text-3" id="text-may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience-trying-pkal-s-emacs-configuration-generator">
<p>
<a href="https://codeberg.org/pkal/ecg/src/branch/master/ecg.lisp">Emacs Configuration Generator</a> - old source code, site is no longer live
</p>


<div class="org-src-container">
<pre class="src src-sh"><code>sbcl &#45;&#45;load ecg.lisp &#45;&#45;eval <span class="org-string">"(ecg:start)"</span>
</code></pre>
</div>



<figure id="org58eae67">
<a href="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/2026-05-13_21-36-30.png"><img src="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/2026-05-13_21-36-30.png" alt="2026-05-13_21-36-30.png"></a>

<figcaption><span class="figure-number">Figure 5: </span>Web interface</figcaption>
</figure>


<figure id="org7890624">
<a href="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/2026-05-13_21-37-11.png"><img src="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/2026-05-13_21-37-11.png" alt="2026-05-13_21-37-11.png"></a>

<figcaption><span class="figure-number">Figure 6: </span>Theme preview, other options</figcaption>
</figure>

<p>
Sample generated configuration:
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code><span class="org-comment-delimiter">;;; </span><span class="org-comment">Personal configuration -*- lexical-binding: t -*-</span>

<span class="org-comment-delimiter">;; </span><span class="org-comment">Save the contents of this file under ~/.emacs.d/init.el</span>
<span class="org-comment-delimiter">;; </span><span class="org-comment">Do not forget to use Emacs' built-in help system:</span>
<span class="org-comment-delimiter">;; </span><span class="org-comment">Use C-h C-h to get an overview of all help commands.  All you</span>
<span class="org-comment-delimiter">;; </span><span class="org-comment">need to know about Emacs (what commands exist, what functions do,</span>
<span class="org-comment-delimiter">;; </span><span class="org-comment">what variables specify), the help system can provide.</span>

<span class="org-comment-delimiter">;; </span><span class="org-comment">Load a custom theme</span>
(load-theme <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">modus-operandi</span> t)

<span class="org-comment-delimiter">;; </span><span class="org-comment">Use whatever the default monospace font is</span>
(<span class="org-keyword">setq</span> font-use-system-font t)

<span class="org-comment-delimiter">;; </span><span class="org-comment">Miscellaneous options</span>
(<span class="org-keyword">setq-default</span> major-mode
              (<span class="org-keyword">lambda</span> () <span class="org-comment-delimiter">; </span><span class="org-comment">guess major mode from file name</span>
                (<span class="org-keyword">unless</span> buffer-file-name
                  (<span class="org-keyword">let</span> ((buffer-file-name (buffer-name)))
                    (set-auto-mode)))))
(<span class="org-keyword">setq</span> confirm-kill-emacs <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">yes-or-no-p</span>)
(<span class="org-keyword">setq</span> window-resize-pixelwise t)
(<span class="org-keyword">setq</span> frame-resize-pixelwise t)
(save-place-mode t)
(savehist-mode t)
(recentf-mode t)
(<span class="org-keyword">defalias</span> <span class="org-highlight-quoted-quote">'</span><span class="org-function-name">yes-or-no</span> <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">y-or-n-p</span>)

<span class="org-comment-delimiter">;; </span><span class="org-comment">Store automatic customisation options elsewhere</span>
(<span class="org-keyword">setq</span> custom-file (locate-user-emacs-file <span class="org-string">"custom.el"</span>))
(<span class="org-keyword">when</span> (file-exists-p custom-file)
  (load custom-file))
</code></pre>
</div>

</div>
</div>
<div><a href="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/index.org">View Org source for this post</a></div>
<p>You can <a href="https://social.sachachua.com/@sacha/statuses/01KRVXD8X86JQA5078S5HED6QM" target="_blank" rel="noopener noreferrer">comment on Mastodon</a> or <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F05%2Fmay-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		<dc:creator>Sacha Chua</dc:creator><enclosure length="134548" type="application/octet-stream" url="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/ye29-prot-and-pkal-emacs-newcomer-experience.vtt"/></item><item>
		<title>Trying out Kanata for one-shot modifiers and home row mods on Linux</title>
		<link>https://sachachua.com/blog/2026/05/trying-out-kanata-for-one-shot-modifiers-and-home-row-mods-on-linux/</link>
		
		<pubDate>Wed, 13 May 2026 14:32:18 GMT</pubDate>
    <category>linux</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/05/trying-out-kanata-for-one-shot-modifiers-and-home-row-mods-on-linux/</guid>
		<description><![CDATA[<p>
Prot is a fan of <a href="https://protesilaos.com/codelog/2026-05-04-emacs-keyboard-ergonomics/">one-shot modifiers</a>. I started experimenting with them using <a href="https://github.com/rvaiya/keyd">keyd</a>, but now I've moved to using <a href="https://github.com/jtroo/kanata">kanata</a> based on his recommendation. I also want to experiment with home row mods so that I can hold down these keys or use them as one-shot modifiers:
</p>
<ul class="org-ul">
<li><code>f</code> or <code>j</code> for shift</li>
<li><code>d</code> or <code>k</code> for control</li>
<li><code>s</code> or <code>l</code> for alt</li>
<li>or <code>a</code> or <code>;</code> for super.</li>
</ul>

<p>
(Based on QWERTY home row, although Xmodmap translates it to Dvorak, where my home row keys are aoeu and htns.)
</p>

<p>
Here's my config:
</p>


<div class="org-src-container">
<pre class="src src-lisp"><code>  (defcfg
   process-unmapped-keys yes
  )

  (defsrc
  grv  1    2    3    4    5    6    7    8    9    0    -    =    bspc
  tab  q    w    e    r    t    y    u    i    o    p    [    ]    \
  caps a    s    d    f    g    h    j    k    l    <span class="org-comment">;    '    ret</span>
  lsft z    x    c    v    b    n    m    ,    .    /    rsft
  lctl lmet lalt           spc            ralt rmet rctl
  )

  <span class="org-comment-delimiter">;; </span><span class="org-comment">define values for tap time and hold time</span>
  (<span class="org-keyword">defvar</span>
    tap-time 100
    hold-time 300
    one-shot-timeout 2000
  )

  <span class="org-comment-delimiter">;; </span><span class="org-comment">alias definitions</span>
  (defalias
a (tap-hold $tap-time $hold-time a (one-shot $one-shot-timeout lmet))
  s (tap-hold $tap-time $hold-time s (one-shot $one-shot-timeout lalt))
  d (tap-hold $tap-time $hold-time d (one-shot $one-shot-timeout lctrl))
  f (tap-hold $tap-time $hold-time f (one-shot $one-shot-timeout lshift))

  j (tap-hold $tap-time $hold-time j (one-shot $one-shot-timeout rshift))
  k (tap-hold $tap-time $hold-time k (one-shot $one-shot-timeout rctrl))
  l (tap-hold $tap-time $hold-time l (one-shot $one-shot-timeout ralt))
  <span class="org-comment">; (tap-hold $tap-time $hold-time ; (one-shot $one-shot-timeout rmeta))</span>
btm-ctrl (tap-hold-press $tap-time $hold-time (one-shot $one-shot-timeout lctrl) lctrl)
    btm-meta (tap-hold-press $tap-time $hold-time (one-shot $one-shot-timeout lmet)  lmet)
    btm-alt  (tap-hold-press $tap-time $hold-time (one-shot $one-shot-timeout lalt)  lalt)

    btm-ralt (tap-hold-press $tap-time $hold-time (one-shot $one-shot-timeout ralt)  ralt)
    btm-rmet (tap-hold-press $tap-time $hold-time (one-shot $one-shot-timeout rmet)  rmet)
    btm-rctl (tap-hold-press $tap-time $hold-time (one-shot $one-shot-timeout rctrl) rctrl)
  )

(deflayer base
  grv  1    2    3    4    5    6    7    8    9    0    -    =    bspc
  tab  q    w    e    r    t    y    u    i    o    p    [    ]    \
  caps @a   @s   @d   @f   g    h    @j   @k   @l   <span class="org-comment">;    '    ret</span>
  lsft z    x    c    v    b    n    m    ,    .    /    rsft
  @btm-ctrl @btm-meta @btm-alt           spc            @btm-ralt @btm-rmet @btm-rctl
  )
</code></pre>
</div>


<p>
I followed the <a href="https://github.com/jtroo/kanata/discussions/130">systemd instructions</a>, so things should be loaded when I restart. To reload my config, I use <code>C-c C-v C-t</code> (<code>org-babel-tangle</code>) and then call <code>systemctl &#45;&#45;user restart kanata.service"</code>. Or actually, I have an Org Mode link of the form
</p>


<div class="org-src-container">
<pre class="src src-example"><code>[[elisp:(progn (org-babel-tangle) (shell-command "systemctl &#45;&#45;user restart kanata.service"))][Update config]]
</code></pre>
</div>


<p>
so I can just activate the link and have my new definitions loaded.
</p>

<p>
Resources:
</p>

<ul class="org-ul">
<li><a href="https://github.com/jtroo/kanata/wiki/Configuration-guide">Configuration guide · jtroo/kanata Wiki · GitHub</a></li>
<li><a href="https://callistaenterprise.se/blogg/teknik/2025/01/10/homerow-mods/">Year of the homerow mods | Callista</a></li>
</ul>
<div><a href="https://sachachua.com/blog/2026/05/trying-out-kanata-for-one-shot-modifiers-and-home-row-mods-on-linux/index.org">View Org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F05%2Ftrying-out-kanata-for-one-shot-modifiers-and-home-row-mods-on-linux%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		<dc:creator>Sacha Chua</dc:creator><enclosure length="3480" type="application/octet-stream" url="https://sachachua.com/blog/2026/05/trying-out-kanata-for-one-shot-modifiers-and-home-row-mods-on-linux/index.org"/></item><item>
		<title>Du 4 mai au 10 mai</title>
		<link>https://sachachua.com/blog/2026/05/du-4-mai-au-10-mai/</link>
		
		<pubDate>Wed, 13 May 2026 13:28:35 GMT</pubDate>
    <category>french</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/05/du-4-mai-au-10-mai/</guid>
		<description><![CDATA[<div id="outline-container-orge317c9f" class="outline-3">
<h3 id="orge317c9f"><a href="https://sachachua.com/blog/feed/index.xml#orge317c9f">lundi 4</a></h3>
<div class="outline-text-3" id="text-orge317c9f">
<p>
J'ai discuté des finances avec ma sœur qui habite aux Pays-Bas. Elle ne peut pas virer l'argent des Philippines aux Pays-Bas, donc je dois l'aider.
</p>

<p>
J'ai emmené ma fille à son cours de gymnastique. Ça lui a plu.
</p>
</div>
</div>
<div id="outline-container-org7ba5b22" class="outline-3">
<h3 id="org7ba5b22"><a href="https://sachachua.com/blog/feed/index.xml#org7ba5b22">mardi 5</a></h3>
<div class="outline-text-3" id="text-org7ba5b22">
<p>
Ma fille était très fière d'avoir réussi à faire deux présentations alors que quelques camarades de classe n'étaient pas prêts à passer.
</p>

<p>
Nous avons commencé à travailler sur un maillot-robe pour ma fille. Il n'y avait pas de patron de couture pour son dessin, donc j'ai fait un prototype à partir des chutes de tissu de sa longue robe de bain d'il y a quelques années.
</p>

<p>
À mon grand soulagement, le virement bancaire a réussi. Il paraît que Wise peut m'aider à virer l'argent des Philippines au Canada.
</p>
</div>
</div>
<div id="outline-container-org5ea4f73" class="outline-3">
<h3 id="org5ea4f73"><a href="https://sachachua.com/blog/feed/index.xml#org5ea4f73">mercredi 6</a></h3>
<div class="outline-text-3" id="text-org5ea4f73">
<p>
Mon mari, ma fille, et moi sommes allés chez la cardiologue, qui était très loin : à presque deux heures de métro et de bus pour le trajet aller. Ma fille s'ennuyait beaucoup, mais elle voulait traiter ses palpitations, donc elle a fait l'effort.
Après cela, nous avons acheté des récompenses au supermarché à proximité. Elle a choisi une petite bouteille de yaourt à boire.
</p>

<p>
J'ai emmené ma fille et son amie au parc pour jouer. Il y avait un garçon qui les embêtait et qui était trop jeune pour qu'on puisse le raisonner, alors j'ai dû utiliser ma Voix de Maman pour qu'il arrête.
</p>
</div>
</div>
<div id="outline-container-orgb44e46e" class="outline-3">
<h3 id="orgb44e46e"><a href="https://sachachua.com/blog/feed/index.xml#orgb44e46e">jeudi 7</a></h3>
<div class="outline-text-3" id="text-orgb44e46e">
<p>
J'ai été ravie de discuter d'Emacs avec Shae Erisson, qui a une expérience intéressante avec les claviers et la programmation sur Emacs.
</p>

<p>
J'ai travaillé sur la revue des captures d'écran de ma conversation avec John Wiegley et Karthik Chikmagalur. J'ai écrit des fonctions pour identifier les rectangles grâce à l'outil Tesseract OCR. J'ai aussi utilisé les expressions régulières pour masquer des coordonnées GPS et d'autres secrets.
</p>

<p>
Je suis allée chez une nouvelle hygiéniste pour un nettoyage. J'étais ravie que la réceptionniste et l'hygiéniste aient porté des masques N95 et que la salle de traitement ait une porte fermée.
</p>

<p>
J'ai discuté des finances de ma mère avec la responsable du studio. J'ai dû m'en occuper parce que ma mère n'est pas capable de gérer ses finances elle-même.
</p>
</div>
</div>
<div id="outline-container-org5f42384" class="outline-3">
<h3 id="org5f42384"><a href="https://sachachua.com/blog/feed/index.xml#org5f42384">vendredi 8</a></h3>
<div class="outline-text-3" id="text-org5f42384">
<p>
Je viens de commencer à regarder Astérix et Obélix sur Netflix. J'aimais bien les bandes dessinées quand j'étais petite.
</p>


<p>
Après l'école, j'ai emmené ma fille au Stockyards pour acheter de l'élastique chez Fabric Fabric pour son maillot-robe. Nous avons aussi cherché des chaussures chez The Shoe Company, Children's Place, Old Navy et Walmart, mais elle n'a rien trouvé qui lui ait plu.
</p>

<p>
Ensuite, nous avons travaillé sur son maillot-robe.
</p>

<p>
Pendant que nous regardions Pokémon, j'ai remarqué que même Jessie a montré une belle évolution. Ma fille m'a demandé si je faisais pareil. Je n'ai pas compris, donc je lui ai demandé ce qu'elle voulait dire. Elle est partie grincheuse. Je ne sais pas, mais je ne peux pas lire dans ses pensées.
</p>

<p>
Sur Stardew, j'ai planté le reste des fraises et j'ai engagé le service Ridgeside Odd Jobs pour arroser toutes les plantes dehors. J'ai attendu l'amélioration de ma poêle pour terminer le dernier paquet parce que nous jouions avec les mods Stardew Valley Expanded (qui demande une friandise) et Love of Cooking (qui demande l'amélioration pour augmenter la limite du nombre d'aliments).
</p>
</div>
</div>
<div id="outline-container-org34c13a9" class="outline-3">
<h3 id="org34c13a9"><a href="https://sachachua.com/blog/feed/index.xml#org34c13a9">samedi 9</a></h3>
<div class="outline-text-3" id="text-org34c13a9">
<p>
Mon mari, ma fille et moi sommes allés au centre-ville pour le Science Rendezvous, un festival scientifique. Ma fille s'est beaucoup amusée. Elle a aimé peindre avec des plantes en utilisant des peintures dérivées du curcuma, des betteraves, des épinards, et du chou rouge. Elle s'est aussi intéressée aux bulles qui contiennent du dioxyde de carbone provenant de la neige carbonique.
</p>

<p>
Sur le chemin du retour, ma fille et moi sommes passées à la pâtisserie chinoise pour des petits pains.
</p>
</div>
</div>
<div id="outline-container-orgc5e0378" class="outline-3">
<h3 id="orgc5e0378"><a href="https://sachachua.com/blog/feed/index.xml#orgc5e0378">dimanche 10</a></h3>
<div class="outline-text-3" id="text-orgc5e0378">
<p>
Ma fille m'a réveillée et elle m'a donné une carte de fête des Mères. Elle a aussi préparé une omelette de 6 œufs pour que l'on se régale.
</p>

<p>
Mon mari a amélioré mon bureau. Il a coupé une autre étagère et il l'a attachée à mon bureau comme plateau. C'était très pratique. Maintenant je peux placer plus de choses sur mon bureau.
</p>

<p>
Sur Stardew Valley, ma fille et moi nous sommes amusées à explorer la Caverne du Crâne. Elle a oublié d'apporter de la nourriture, donc je lui ai donné plusieurs fromages.
</p>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/05/du-4-mai-au-10-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%2F05%2Fdu-4-mai-au-10-mai%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		<dc:creator>Sacha Chua</dc:creator><enclosure length="32221" type="application/octet-stream" url="https://sachachua.com/blog/2026/05/du-4-mai-au-10-mai/index.org"/></item><item>
		<title>2026-05-11 Emacs news</title>
		<link>https://sachachua.com/blog/2026/05/2026-05-11-emacs-news/</link>
		
		<pubDate>Mon, 11 May 2026 13:00:59 GMT</pubDate>
    <category>emacs</category>
<category>emacs-news</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/05/2026-05-11-emacs-news/</guid>
		<description><![CDATA[<p>
People are getting Emacs 31 ready for release. Looking forward to
that! See <a href="https://github.com/emacs-mirror/emacs/blob/master/etc/NEWS.31">emacs/etc/NEWS.31</a> for details.
</p>

<p>
Lots of posts for the Emacs Carnival theme of <a href="https://www.emacswiki.org/emacs/CarnivalMay2026">"May I recommend&hellip;"</a>, yay!
</p>

<ul class="org-ul">
<li>Emacs 31:
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1t6gkdz/the_emacs31_branch_has_been_created/">The emacs-31 branch has been created!</a> (<a href="https://irreal.org/blog/?p=13795">Irreal</a>)</li>
<li><a href="https://build.opensuse.org/package/show/home:Thaodan:emacs:emacs31/emacs-31">openSUSE package for emacs-31</a> (<a href="https://mastodon.social/@thaodan/116545552801001819">@thaodan</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>London Emacs (in person): Emacs London meetup <a href="https://www.meetup.com/london-emacs-hacking/events/314540885/">https://www.meetup.com/london-emacs-hacking/events/314540885/</a> Tue May 12 1800 Europe/London</li>
<li>Emacs Berlin: In-Person-Only Emacs-Berlin Stammtisch <a href="https://emacs-berlin.org/">https://emacs-berlin.org/</a> Tue May 12 1900 Europe/Berlin</li>
<li>OrgMeetup (virtual) <a href="https://orgmode.org/worg/orgmeetup.html">https://orgmode.org/worg/orgmeetup.html</a> Wed May 13 0900 America/Vancouver - 1100 America/Chicago - 1200 America/Toronto - 1600 Etc/GMT - 1800 Europe/Berlin - 2130 Asia/Kolkata &ndash; Thu May 14 0000 Asia/Singapore</li>
<li>M-x Research: TBA <a href="https://m-x-research.github.io/">https://m-x-research.github.io/</a> Wed May 20 0800 America/Vancouver - 1000 America/Chicago - 1100 America/Toronto - 1500 Etc/GMT - 1700 Europe/Berlin - 2030 Asia/Kolkata - 2300 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 May 23 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>Emacs configuration:
<ul class="org-ul">
<li><a href="https://mbork.pl/2026-05-09_describe-personal-keybindings">Marcin Borkowski: describe-personal-keybindings</a> (<a href="https://irreal.org/blog/?p=13799">Irreal</a>)</li>
<li><a href="https://www.chiply.dev/post-my-dotfiles">My Dotfiles: macOS Bootstrap and an Emacs Distribution</a> (<a href="https://www.reddit.com/r/emacs/comments/1t6l4b9/my_dotfiles_macos_bootstrap_and_an_emacs/">Reddit</a>)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1t8yb7h/backpack_emacs_hits_version_05/">Backpack Emacs hits version 0.5</a></li>
</ul></li>
<li>Emacs Lisp:
<ul class="org-ul">
<li><a href="https://kelar.org/~bandali/gnu/emacs/ffs-code-review-prot.html">Amin Bandali: FFS code review with Protesilaos</a> (<a href="https://protesilaos.com/codelog/2026-05-08-emacs-coaching-amin-bandali/">Prot</a>)</li>
<li><a href="https://vannilla.org/write/1533394929/article.html">The Emacs's Gamegrid library #1</a>, <a href="https://vannilla.org/write/1533740728/article.html">#2</a>, <a href="https://vannilla.org/write/1533913392/article.html">#3</a>, <a href="https://vannilla.org/write/1535488871/article.html">#4</a></li>
</ul></li>
<li>Appearance:
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1t4evbd/recent_commits_to_emacsmaster_introduce_margin/">Recent Commits to emacs:master: Introduce 'margin' face for window margin background</a></li>
<li><a href="https://github.com/mang-jin/emacs-theme-nvim-dark">Emacs theme that looks like v0.10+ Neovim's default dark theme</a> (<a href="https://www.reddit.com/r/emacs/comments/1t8yy6u/emacs_theme_that_looks_like_v010_neovims_default/">Reddit</a>)</li>
</ul></li>
<li>Navigation:
<ul class="org-ul">
<li><a href="https://vannilla.org/write/1680013839/article.html">TAGS, Etags and system headers</a></li>
<li><a href="https://vannilla.org/write/1609258895/article.html">Emacs: writing a project.el backend</a></li>
<li><a href="https://www.youtube.com/watch?v=ptehgb80zH8">Emacs Buffer Comparison Made Easy With Ebuffers 2026 05 10 02:31:35</a> (05:31)</li>
<li><a href="https://www.youtube.com/watch?v=-6B62JpdWgs">LIVE: bribing myself to work on async Rust TCP connections</a> (02:35:52, Emacs navigation chapter at <a href="https://www.youtube.com/watch?v=-6B62JpdWgs&amp;t=7215s">2:00:15</a>)</li>
</ul></li>
<li>TRAMP:
<ul class="org-ul">
<li><a href="https://utcc.utoronto.ca/~cks/space/blog/programming/EmacsTrampNotes">Notes on using GNU Emacs' Tramp system in an unusual shell environment</a> (<a href="https://lobste.rs/s/vwjrsl/notes_on_using_gnu_emacs_tramp_system">lobste.rs</a>)</li>
</ul></li>
<li>Dired:
<ul class="org-ul">
<li><a href="https://emacs.dyerdwelling.family/emacs/20260416103000-emacs&#45;&#45;a-zoomed-in-vc-dir-for-the-current-directory/">James Dyer: A Zoomed in vc dir for the Current Directory in dired</a></li>
</ul></li>
<li>Writing:
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1t5kaku/markdowntsmode_got_a_major_overhaul_and_is_now/">markdown-ts-mode got a major overhaul and is now part of Emacs 31</a></li>
<li><a href="https://blog.davep.org/2026/05/08/blogmore-el-v4-5-0.html">Dave Pearson: blogmore.el v4.5.0</a> - add blogmore-set-as-cover
<ul class="org-ul">
<li><a href="https://blog.davep.org/2026/05/07/blogmore-el-v4-4-0.html">v4.4.0</a> - blogmore-become-like</li>
</ul></li>
<li><a href="https://codeberg.org/liberty/just-write/src/branch/main/jw.el">jw.el: Just Write, a microjournaling tool (uses external binary)</a> (<a href="https://mathstodon.xyz/@liberty/116517775716575306">@liberty@mathstodon.xyz</a>)</li>
</ul></li>
<li>Denote:
<ul class="org-ul">
<li><a href="https://www.alcarney.me/blog/2026/organising-series-with-denote-sequence/">Organising Series with denote-sequence — Alex Carney</a> (<a href="https://mastodon.social/@alcarney/116552920982223453">@alcarney</a>)</li>
</ul></li>
<li>Org Mode:
<ul class="org-ul">
<li><a href="https://list.orgmode.org/87zf267i1c.fsf@gmail.com">Org Mode requests: [FR] ox-md: Export custom-id search strings (::#) as anchors</a></li>
<li><a href="https://jonathanchu.is/posts/introducing-grove/">grove.el - an Obsidian-like note-taking mode for Emacs</a> (<a href="https://www.reddit.com/r/emacs/comments/1t4xmcb/groveel_an_obsidianlike_notetaking_mode_for_emacs/">r/emacs</a>, <a href="https://www.reddit.com/r/orgmode/comments/1t4xmsk/groveel_an_obsidianlike_notetaking_mode_for_emacs/">r/orgmode</a>, <a href="https://irreal.org/blog/?p=13792">Irreal</a>, <a href="https://news.ycombinator.com/item?id=48016809">HN</a>, <a href="https://news.ycombinator.com/item?id=48013448">HN</a>)</li>
<li><a href="https://www.youtube.com/watch?v=94jFimnlvNM">mon workflow emacs</a> (18:31)</li>
<li><a href="https://www.youtube.com/watch?v=IygqcQhLhOo">Spacemacs | Org-mode Table Spreadsheet Formula | Productivité</a> (05:19)</li>
<li>Import, export, and integration:
<ul class="org-ul">
<li><a href="https://gitlab.com/jdm204/ox-html-file-embedding">Tiny package for org links which base64 embed files into HTML export for sharing</a> (<a href="https://www.reddit.com/r/orgmode/comments/1t93h3e/tiny_package_for_org_links_which_base64_embed/">Reddit</a>)</li>
<li><a href="https://list.orgmode.org/87bjeqvqc6.fsf@christianmoe.com/">Note about needing to escape things in Org macros</a> (<a href="https://mathstodon.xyz/@pabryan/116537127097802685">@pabryan@mathstodon.xyz</a>)</li>
<li><a href="https://fediverse.tv/w/xhaKt3dwzHuLxeq7FDGZcH">LuaLaTex y fontspec (Orgmode) - FediverseTV</a> (<a href="https://fediverse.tv/w/xhaKt3dwzHuLxeq7FDGZcH">@emacs_org@fediverse.tv</a>)</li>
<li><a href="https://gitlab.com/yugaego/emacs-config/-/blob/main/configs/init-org.el?ref_type=heads#L109">Config for using multiple org-publish projects</a> (<a href="https://fosstodon.org/@yugaego/116549279791127644">@yugaego@fosstodon.org</a>)</li>
<li><a href="https://jan-iversen.de/2026/05/06/blogumzug.html">Blog-Umzug? | Jan Iversen</a> (<a href="https://nerdculture.de/@razorback/116529000129741089">@razorback@nerdculture.de</a>)</li>
<li><a href="https://git.sr.ht/~zelda/sync.el">sync.el - sync Org files with git automatically</a> (<a href="https://www.reddit.com/r/orgmode/comments/1t84mr5/syncel_actually_exists_this_time_no_crypto/">Reddit</a>)</li>
<li><a href="http://en.andros.dev/blog/ba142044/twtxt-vs-org-social-the-evolution-of-an-idea/">Andros Fenollosa: twtxt vs Org Social: the evolution of an idea</a></li>
<li><a href="https://fediverse.tv/w/k2PBKSZ6prEwK2DccNQjvV">Descubriendo la red Org-social - FediverseTV</a> (<a href="https://fediverse.tv/w/k2PBKSZ6prEwK2DccNQjvV">@emacs_org@fediverse.tv</a>)</li>
</ul></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=004e0828b7758b70ceb0ff47cdd872940c49dcdb">ox-latex.el: New variable org-latex-descriptive-environment</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/etc/ORG-NEWS?id=732610714eea47a133ca0bfc163d30a871b25e7b">ob-tangle: Make tangling from archived trees optional</a></li>
</ul></li>
</ul></li>
<li>Completion:
<ul class="org-ul">
<li><a href="https://www.chiply.dev/post-vompeccc-showcase">Emacs Completion Showcase with VOMPECCC (video)</a> (<a href="https://www.youtube.com/watch?v=wyzUXScErjE">YouTube</a> 01:08:43, <a href="https://www.reddit.com/r/emacs/comments/1t57j68/emacs_completion_showcase_with_vompeccc_video/">Reddit</a>, <a href="https://news.ycombinator.com/item?id=48037156">HN</a>, <a href="https://lobste.rs/s/ixlzlj/emacs_completion_showcase_with_vompeccc">lobste.rs</a>)</li>
<li><a href="https://github.com/kn66/vertico-buffer-frame">Follow-up: vertico-buffer-frame, a child-frame experiment for vertico-buffer</a> (<a href="https://www.reddit.com/r/emacs/comments/1t4fu7w/followup_verticobufferframe_a_childframe/">Reddit</a>)</li>
<li><a href="https://github.com/jojojames/fzf-async">fzf-async</a> (<a href="https://www.reddit.com/r/emacs/comments/1t6rs2h/fzfasync/">Reddit</a>)</li>
<li><a href="https://github.com/zenitsu7772000/yuta.el">Yuta.el: native fuzzy finder, Lsp Completion, and command palette for Emacs (uses external CLI tools)</a> (<a href="https://www.reddit.com/r/emacs/comments/1t4jq5h/yutael_is_a_fast_native_fuzzy_finder_lsp/">Reddit</a>)</li>
</ul></li>
<li>Coding:
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=NTHRxu7LFjI">My Doom Emacs setup for Rust development in less than two minutes</a> (01:36)</li>
<li><a href="https://thanosapollo.org/projects/emacs-forgejo/">emacs-forgejo | Thanos Apollo</a> (<a href="https://sigmoid.social/@csantosb/116546018189748980">@csantosb@sigmoid.social</a>)</li>
<li><a href="https://github.com/cobacdavid/hprpl">hprpl-mode</a> for the HP-48G</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1t9ib4b/finally_gotodefinition_w_eglot_on_jvm_languages/">Finally go-to-definition w/ Eglot on JVM languages (Kotlin and Java)! do you know how to improve it?</a></li>
<li><a href="https://github.com/PlugwiseBV/LuaProbe.el">Using our new Lua debbuger: LuaProbe, we made an Emacs package for it</a> (<a href="https://www.reddit.com/r/emacs/comments/1t3bycu/using_our_new_lua_debbuger_luaprobe_we_made_an/">Reddit</a>)</li>
<li><a href="https://www.youtube.com/watch?v=wSKdspfOdSU">Configurando o Windows para Programar Jogos em C | Indie Game Dev</a> (48:38)</li>
<li><a href="https://eshelyaron.com/sweep.html#High_002dlevel-Architecture">Sweep: SWI-Prolog Embedded in Emacs</a> (<a href="https://mastodon.social/@PuercoPop/116522365591905026">@PuercoPop</a>)</li>
<li><a href="https://jao.io/blog/geiser-moved-to-codeberg.html">jao: geiser moved to codeberg</a> - Scheme interfaces</li>
</ul></li>
<li>Math:
<ul class="org-ul">
<li><a href="https://vannilla.org/write/1738103064/article.html">The Simple Emacs Spreadsheet</a></li>
</ul></li>
<li>Shells:
<ul class="org-ul">
<li><a href="https://www.jamescherti.com/emacs-toggle-a-shell-window-shell-pop/">Toggle an Emacs terminal with a single keystroke using shell-pop (Recently Refactored)</a> (<a href="https://www.reddit.com/r/emacs/comments/1t7fp1v/toggle_an_emacs_terminal_with_a_single_keystroke/">Reddit</a>)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1t821vz/just_a_quick_eat_survey/">Just a quick "Eat" survey</a></li>
<li><a href="https://sr.ht/~hajovonta/termit/">termit: Terminal emulator for Emacs</a> (<a href="https://mastodon.online/@hajovonta/116529852107644722">@hajovonta@mastodon.online</a>)</li>
</ul></li>
<li>Web:
<ul class="org-ul">
<li><a href="https://einar.codeberg.page/speed_improvement_hack_for_dired_with_eww.html">Einar Mostad: Speed improvement hack for dired with EWW</a> - browse-url-handlers</li>
</ul></li>
<li>Mail, news, and chat:
<ul class="org-ul">
<li><a href="https://mastodon.world/@minad/116534494908640147">What improvements would you like to see in elfeed? (@minad@mastodon.world)</a></li>
<li><a href="https://github.com/emacs-elfeed/elfeed/commit/072a609bb7e67c9b300ab22859a9423f7d7734d3">Add elfeed-tree-mode · emacs-elfeed/elfeed@072a609 · GitHub</a> (<a href="https://mastodon.world/@minad/116544681551499931">@minad@mastodon.world</a>)</li>
</ul></li>
<li>Multimedia:
<ul class="org-ul">
<li><a href="https://codeberg.org/contrapunctus/sxiv.el">contrapunctus/sxiv.el: Launch (n)sxiv ((Neo) Simple X Image Viewer)</a> (<a href="https://fe.disroot.org/objects/2b02fc3e-a422-4795-97a8-0d8cfc0e915a">@contrapunctus@fe.disroot.org</a>)</li>
</ul></li>
<li>AI:
<ul class="org-ul">
<li><a href="https://www.reddit.com/gallery/1t8vgxr">I made elisp-quality-ai: AI-friendly quality reports for Emacs Lisp projects</a></li>
<li><a href="https://github.com/deno1011/emacs-mac-setup/blob/main/README.md">Emacs with Org-Mode and Claude for Apple MacBook</a> (<a href="https://news.ycombinator.com/item?id=48065731">HN</a>)</li>
<li><a href="https://github.com/gicrisf/ox-skills">ox-skills: manage AI agent skills in Org-mode</a> (<a href="https://www.reddit.com/r/emacs/comments/1t86yst/oxskills_manage_ai_agent_skills_in_orgmode/">Reddit</a>)</li>
<li><a href="https://infosec.town/notes/alwbcffuqxf2ekpw">display-buffer-alist config for claude-code (@cyberwolf@infosec.town)</a></li>
</ul></li>
<li>Community:
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1t438si/fortnightly_tips_tricks_and_questions_20260505/">Fortnightly Tips, Tricks, and Questions — 2026-05-05 / week 18</a></li>
<li><a href="https://sachachua.com/blog/2026/05/emacs-carnival-may-2026-may-i-recommend/">Sacha Chua: Emacs Carnival May 2026: "May I recommend&hellip;"</a>
<ul class="org-ul">
<li><a href="https://www.finaprosadigital.com/2026-05-02-may-emacs-carnival.html">May Emacs Carnival</a>: Carlos Pajuelo</li>
<li><a href="https://idlip.in/posts/may-i-recommend/">May I Recommend EWM | Dilip's Log</a></li>
<li><a href="https://sachachua.com/blog/2026/05/from-david-dimagid-what-we-talk-about-when-we-talk-about-recommending-emacs-packages/">Sacha Chua: From David Dimagid: What we talk about when we talk about recommending Emacs packages</a></li>
<li><a href="https://vannilla.org/write/1778277936/article.html">May I recommend… escaping the minibuffer</a> (<a href="https://mibl.vannilla.org/@vanni/statuses/01KR4TJ3RG34K6W9A43ES5FH4Q">@vanni@mibl.vannilla.org</a>)</li>
<li><a href="https://giampaolo.guiducci.it/posts/2026-05-09-may-i-recommend-vibemacsing/">May I recommend… vibemacsing? | Giampaolo Guiducci</a> (<a href="https://fosstodon.org/@gosub/116548774985172047">@gosub@fosstodon.org</a>)</li>
<li><a href="https://mstempl.netlify.app/post/may-i-recommend/">May I recommend… to only add items to your init files you understand and document?</a> Martin Stemplinger</li>
<li><a href="https://curtismchale.ca/2026/05/05/emacs-carnival-may-i-recommend">Curtis McHale: Emacs Carnival: May I recommend&hellip;</a></li>
</ul></li>
<li><a href="https://kelar.org/~bandali/gnu/emacs/emacs-chat-202605.html">Amin Bandali: Emacs Chat with Sacha Chua</a> (<a href="https://www.youtube.com/watch?v=ZiTQt8q1Ybc">YouTube</a> 01:12:31, <a href="https://irreal.org/blog/?p=13797">Irreal</a>, <a href="https://sachachua.com/blog/2026/05/emacs-chat-with-amin-bandali/">Sacha</a>)</li>
<li><a href="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/">Sacha Chua: Emacs Chat 22: Shae Erisson</a> (<a href="https://www.youtube.com/watch?v=Ovya0O2otbU">YouTube</a>, 01:02:36)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1t43rrt/i_just_dont_get_it/">I just dont get it&hellip;</a> - long discussion about Emacs Lisp and customization</li>
<li><a href="https://www.youtube.com/watch?v=iuwn8GpRj7w">Emacs ATX Meetup. May 2026. GNU Hyperbole.</a> (01:44:31)</li>
<li><a href="https://fosstodon.org/@chiply/116518555422356975">Thread about what makes Emacs easy for you (@chiply@fosstodon.org)</a></li>
<li><a href="https://toobnix.org/w/mu2Wm3Y7F6dBbqBivkXL1x">Kent Pitman, Ramin Honary, Screwlisp #climate #emacs autocomplete #lisp #unix_surrealism #logic #lispyGopherClimate - toobnix</a> (<a href="https://gamerplus.org/@screwlisp/116524570149752933">@screwlisp@gamerplus.org</a>)</li>
<li><a href="https://curtismchale.ca/2026/05/05/the-gravitational-pull-of-familiar-tools">Curtis McHale: The gravitational pull of familiar tools</a></li>
</ul></li>
<li>Other:
<ul class="org-ul">
<li><a href="https://codeberg.org/veer66/ya-sort-lines">veer66/ya-sort-lines: Yet-another sort lines - Codeberg.org</a> (<a href="https://mstdn.io/@veer66/116539186622279157">@veer66@mstdn.io</a>)</li>
<li><a href="https://codeberg.org/jamesendreshowell/ramb">jamesendreshowell/ramb: Emacs package Really Actually Make Backups - Codeberg.org</a> (<a href="https://fediscience.org/@jameshowell/116522614001195322">@jameshowell@fediscience.org</a>)</li>
<li><a href="https://protesilaos.com/codelog/2026-05-02-emacs-buffer-to-pdf-new-package/">Protesilaos: Emacs: save any buffer as PDF (my new buffer-to-pdf package)</a></li>
<li><a href="http://corwin.bru.st/2026-05-08-last-rev.pl/">Corwin Brust: last-rev.pl</a> - find the most recent commit to each Emacs branch (or other Savannah projects)</li>
<li><a href="https://www.jamescherti.com/compiling-emacs/">James Cherti: A Technical Guide for Compiling Emacs and its Packages for Maximum Performance on UNIX or GNU/Linux systems</a></li>
<li><a href="https://protesilaos.com/codelog/2026-05-04-emacs-keyboard-ergonomics/">Protesilaos: Re: Emacs and keyboard ergonomics</a> (<a href="https://irreal.org/blog/?p=13788">Irreal</a>)</li>
</ul></li>
<li>Emacs development:
<ul class="org-ul">
<li>emacs-devel: <a href="https://yhetil.org/emacs-devel/CAM=F=bBAT3mTHqqut2fvYN=SJ=NNqBisePTWGjO-XpzRAO7=9w@mail.gmail.com/">Re: Tail recursion - Lynn Winebarger</a> - emacs-31 probably not going to have igc</li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=66729f3e5080f8853393e5f88ce6f062b45164b7">New variable 'completion-frontend-properties' (bug#80990)</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=0d287aa2761af39f64d5d0d7f4e6b74430ec8b74">Bump master Emacs version to 32.0.50</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=d24b10ca75f49217f8585ce9c0fb53209693f882">Introduce 'margin' face for window margin background</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=ed1fe2ca9590a97aee62f74630f7f1f9d795bcb2">nadvice.el: Make it easier to find how to change an interactive-form</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=a952324e9be37869158e8a9cc4f676fa6113a343">keyboard.c: Allow SIGINT to `quit` in batch mode, instead of exit</a></li>
</ul></li>
<li>New packages:
<ul class="org-ul">
<li><a target="_blank" href="https://melpa.org/#/apple-container-tramp">apple-container-tramp</a>: TRAMP integration for apple container (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/claude-code-context">claude-code-context</a>: Share buffer context with Claude Code (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/folgezett">folgezett</a>: Folgezettel IDs for org-roam (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/gnus-browse-url-in-article">gnus-browse-url-in-article</a>: Smarter browse-url for Gnus articles (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/har-viewer">har-viewer</a>: Major mode for viewing HTTP Archive (HAR) files (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/indigo">indigo</a>: Emacs interface to the Indigo cheminformatics library (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/nucleo-completion">nucleo-completion</a>: Nucleo-backed completion style (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/shannon-max">shannon-max</a>: Analyze your keybindings with information theory (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/verdict-dart">verdict-dart</a>: Dart runner for verdict (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-05">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/05/2026-05-11-emacs-news/index.org">View Org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F05%2F2026-05-11-emacs-news%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		<dc:creator>Sacha Chua</dc:creator><enclosure length="240910" type="application/octet-stream" url="https://emacslife.com/calendar/emacs-calendar.ics"/></item><item>
		<title>Emacs Chat 22: Shae Erisson</title>
		<link>https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/</link>
		
		<pubDate>Thu, 07 May 2026 18:55:38 GMT</pubDate>
    <category>emacs</category>
<category>emacs-chat-podcast</category>
<category>emacs-chat</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/</guid><enclosure length="60081151" type="audio/mpeg" url="https://archive.org/download/ec22-shae-erisson/ec22-shae-erisson.mp3"/>
		<description><![CDATA[<div class="update" id="orge514ee4">
<p>
<span class="timestamp-wrapper"><time class="timestamp" datetime="2026-05-08">[2026-05-08 Fri]</time></span>: Transcript, yay!
</p>

</div>

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

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

<ul class="org-ul">
<li>Shae Erisson: Haskell, Python, Swedish, knitting, mountain unicycling, contact juggling</li>
<li><a href="http://www.scannedinavian.com">Shae Erisson's blog - 1. DO SOMETHING 2. BRAG ABOUT IT</a></li>
<li><a href="https://recurse.social/@shapr">Shae Erisson (@shapr@recurse.social) - recurse.social</a></li>
<li><a href="https://www.scannedinavian.com/programmers-want-flow-when-programming-light-turns-red.html">Shae Erisson's blog - Programmers want flow. when programming, light turns RED</a></li>
<li><a href="https://github.com/shapr/markovkeyboard">shapr/markovkeyboard: keyboard layout that changes by markov frequency · GitHub</a></li>
</ul>
<div id="outline-container-emacs-chat-22-shae-erisson-chapters" class="outline-3">
<h3 id="emacs-chat-22-shae-erisson-chapters">Chapters</h3>
<div class="outline-text-3" id="text-emacs-chat-22-shae-erisson-chapters">
<p>
</p><ul class="org-ul">
<li><span class="media-time" data-start="7.000">0:07</span> Intro</li>
<li><span class="media-time" data-start="61.000">1:01</span> 1999, IRC, community building in Haskell</li>
<li><span class="media-time" data-start="122.000">2:02</span> Emacs as a light-weight build-your-own-editor toolkit</li>
<li><span class="media-time" data-start="175.000">2:55</span> LSP, treesitter, Magit, jujutsu, C++, Python, Haskell, rust</li>
<li><span class="media-time" data-start="218.000">3:38</span> how does a new person experience Emacs? Emacs is always fun.</li>
<li><span class="media-time" data-start="247.000">4:07</span> Markov keyboard project, moving to Finland, right-handed Dvorak, split keyboard; Jeff Raskin; I am not a koala</li>
<li><span class="media-time" data-start="405.000">6:45</span> Purpose-specific function keys</li>
<li><span class="media-time" data-start="454.000">7:34</span> Trackballs, scroll</li>

<li><span class="media-time" data-start="497.000">8:17</span> 1" trackpad rings</li>
<li><span class="media-time" data-start="538.000">8:58</span> Pair programming: ttyshare, shwim</li>
<li><span class="media-time" data-start="800.000">13:20</span> Recurse Center, "What is that keyboard? What is that editor?!", Emacs bankruptcy and starter kits</li>
<li><span class="media-time" data-start="969.000">16:09</span> hippie-expand</li>
<li><span class="media-time" data-start="1038.000">17:18</span> yasnippet</li>
<li><span class="media-time" data-start="1141.000">19:01</span> Function keys</li>
<li><span class="media-time" data-start="1205.000">20:05</span> Org Mode</li>

<li><span class="media-time" data-start="1277.000">21:17</span> Show Org agenda when idle</li>

<li><span class="media-time" data-start="1323.000">22:03</span> Programmers want flow. When programming, light turns red</li>

<li><span class="media-time" data-start="1467.000">24:27</span> ef-themes and modus-themes, season</li>
<li><span class="media-time" data-start="1558.000">25:58</span> htmlize (does this still work on Wayland?)</li>
<li><span class="media-time" data-start="1600.000">26:40</span> lsp-ui-imenu, jumping through rust code</li>

<li><span class="media-time" data-start="1710.000">28:30</span> laptop with 126GB of RAM</li>
<li><span class="media-time" data-start="1788.000">29:48</span> LSP coolness, Haskell, treesitter</li>
<li><span class="media-time" data-start="1922.000">32:02</span> Combobulate</li>
<li><span class="media-time" data-start="1972.000">32:52</span> What else are you using your 126 gigabytes of RAM for?</li>
<li><span class="media-time" data-start="2007.000">33:27</span> TalonVoice</li>
<li><span class="media-time" data-start="2086.000">34:46</span> NixOS, following Steve Purcell about 5 years behind</li>
<li><span class="media-time" data-start="2106.000">35:06</span> envrc</li>
<li><span class="media-time" data-start="2154.000">35:54</span> time-tracking</li>
<li><span class="media-time" data-start="2225.000">37:05</span> taxes with Org Mode, remote lookup</li>

<li><span class="media-time" data-start="2462.000">41:02</span> finding notes with C-s</li>
<li><span class="media-time" data-start="2558.000">42:38</span> Org Mode, managing inbox</li>
<li><span class="media-time" data-start="2790.000">46:30</span> Timestamps</li>
<li><span class="media-time" data-start="2954.000">49:14</span> Org timers</li>

<li><span class="media-time" data-start="3236.000">53:56</span> Org Mode snippets</li>
<li><span class="media-time" data-start="3436.000">57:16</span> Compilation finish function: handle success</li>
</ul>

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

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

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

<p>
Find more Emacs Chats or join the fun: <a href="https://sachachua.com/emacs-chat">https://sachachua.com/emacs-chat</a></p>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/05/may-7-emacs-chat-with-shae-erisson/index.org">View Org source for this post</a></div></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F05%2Fmay-7-emacs-chat-with-shae-erisson%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		<dc:creator>Sacha Chua</dc:creator></item><item>
		<title>La semaine du 27 avril au 3 mai</title>
		<link>https://sachachua.com/blog/2026/05/la-semaine-du-27-avril-au-3-mai/</link>
		
		<pubDate>Wed, 06 May 2026 10:16:43 GMT</pubDate>
    <category>french</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/05/la-semaine-du-27-avril-au-3-mai/</guid>
		<description><![CDATA[<div id="outline-container-org767f9fb" class="outline-3">
<h3 id="org767f9fb">lundi 27 avril</h3>
<div class="outline-text-3" id="text-org767f9fb">
<p>
J'ai ajouté la capacité de naviguer en temps réel à mon paquet subed.el. C'était déjà très pratique pour ajouter les chapitres à la transcription de ma conversation avec John Wiegley et Karthik Chikmagalur. Elle a besoin d'une petite modification pour convertir les notes que j'avais prises pendant la conversation.
</p>

<p>
J'ai emmené ma fille à son cours de gymnastique. Il y avait un remplaçant. Je suis ravie de voir que le remplaçant a porté un masque KN-95 sans demander.
</p>

<p>
Je me suis organisé avec ma mère pour installer l'app BDO Pay sur mon téléphone.
</p>

<p>
J'ai préparé les éléments pour coudre mon chapeau comme le chapeau que j'avais cousu pour ma fille.
</p>
</div>
</div>
<div id="outline-container-org8a23b58" class="outline-3">
<h3 id="org8a23b58">mardi 28</h3>
<div class="outline-text-3" id="text-org8a23b58">
<p>
J'ai emmené ma fille à Adventure Alley pour jouer avec ses amies. C'était un peu cher, mais ma fille s'est amusée, donc ce n'est pas un problème si nous allons là-bas de temps en temps.
</p>
</div>
</div>
<div id="outline-container-org981d771" class="outline-3">
<h3 id="org981d771">mercredi 29</h3>
<div class="outline-text-3" id="text-org981d771">
<p>
L'écran de remplacement est arrivé au magasin Apple, donc je vais aller là-bas demain.
</p>

<p>
J'ai réécrit une partie de la page EmacsNewbie sur l'EmacsWiki.
</p>

<p>
Ma fille a cousu mon chapeau.
</p>

<p>
Sur Stardew Valley, nous avons acheté un cochon et un mouton. Nous avons amélioré le poulailler en un grand poulailler et nous avons ajouté une cuisine à notre maison.
</p>
</div>
</div>
<div id="outline-container-orgb4ca0e6" class="outline-3">
<h3 id="orgb4ca0e6">jeudi 30</h3>
<div class="outline-text-3" id="text-orgb4ca0e6">
<p>
J'ai été ravie en discutant avec Prot sur l'expérience de l'éditeur Emacs pour les débutants.
</p>

<p>
Mon mari, ma fille, et moi avons fait du vélo avec son amie et le père de son amie. 
</p>

<p>
Sur Stardew, ma fille a remarqué que j'ai accidentellement acheté une vache que j'appelle Chèvre au lieu de la chèvre que j'ai prévu d'acheter pour le centre communautaire. Oups! Elle s'est très amusée et elle m'a demandé, quand j'achète finalement une chèvre, si je pouvais l'appeler Vache. Les animaux seront très confus, et moi aussi. Je l'ai quand même fait.
</p>
</div>
</div>
<div id="outline-container-org6efa7f6" class="outline-3">
<h3 id="org6efa7f6">vendredi 1er mai</h3>
<div class="outline-text-3" id="text-org6efa7f6">
<p>
L'école avait un remplaçant et elle n'a pas voulu y assister, donc j'ai prévenu l'école de son absence et nous avons fait un compromis entre ses devoirs et des jeux.
</p>

<p>
Nous sommes allées au Stockyards pour acheter des tissus pour son maillot de bain. Elle a trouvé les deux couleurs qu'elle voulait, mais il ne restait qu'un yard d'une couleur. Il faudra que nous planifions soigneusement. Nous avons acheté des fils chez Michaels.
Elle a aussi acheté une boîte de mochi puffs chez Marry Me Mochi.
</p>

<p>
Elle a cousu des coutures sur mon chapeau.
</p>
</div>
</div>
<div id="outline-container-org538921b" class="outline-3">
<h3 id="org538921b">samedi 2</h3>
<div class="outline-text-3" id="text-org538921b">
<p>
Pour le petit-déjeuner, ma fille a préparé une grande omelette en utilisant six œufs. On s'est régalés.
</p>

<p>
Ma fille était grincheuse parce que j'ai attiré son attention sur son agitation et elle a senti que j'étais sur son dos.
</p>

<p>
Le magasin Apple n'a pas pu réparer l'écran de ma tablette, donc il l'a remplacé par une nouvelle tablette pour une petite somme. L'Apple Pencil était finalement lié à ma garantie AppleCare+, mais malheureusement, il était en rupture de stock partout en ville, donc il fallait que j'attende pendant environ une semaine.
</p>

<p>
Une fois rentrée, j'ai trouvé que ma fille s'était calmée. Elle et moi avons joué à Duplo, ce qui est aussi un produit LEGO, mais plus grand que la normale. Je les ai utilisés pour montrer à ma fille des concepts mathématiques comme les permutations et les combinaisons.
</p>
</div>
</div>
<div id="outline-container-orgf6853cc" class="outline-3">
<h3 id="orgf6853cc">dimanche 3</h3>
<div class="outline-text-3" id="text-orgf6853cc">
<p>
Mon mari et moi avons fait du vélo au centre-ville avec ma fille dans mon vélo cargo. Ma fille et moi avons essayé le mochi chez Kibo (c'était délicieux) avant de continuer chez MEC pour chercher une nouvelle gourde pour remplacer celle que j'ai perdue. Elle n'a rien vu qui lui plaisait. Nous avons aussi acheté un mannequin en bois pour faciliter des prototypes pour coudre et des crayons d'aquarelle pour les explorer.
</p>

<p>
Une fois rentrés, mon mari a fait cuire un pain de levain qu'il donnera au père de l'amie de notre fille, suite à leur conversation vendredi. Ma fille et moi avons travaillé sur le plan de faire son maillot de bain. Elle a voulu une robe qui a un corsage cache-cœur et une jupe à ourlet tulipe. Pour le dos, elle a voulu des bretelles croisées avec un petit dos goutte.
</p>

<p>
J'étais fatiguée, donc j'ai fait une sieste. Ma fille est venue me réveiller. J'ai remarqué que mes yeux étaient très secs, donc elle a négocié de m'apporter des gouttes pour les yeux et elle me les a administrées pour 25 cents.
</p>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/05/la-semaine-du-27-avril-au-3-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%2F05%2Fla-semaine-du-27-avril-au-3-mai%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		<dc:creator>Sacha Chua</dc:creator><enclosure length="13339" type="application/octet-stream" url="https://sachachua.com/blog/2026/05/la-semaine-du-27-avril-au-3-mai/index.org"/></item><item>
		<title>La semaine du 13 au 19 avril</title>
		<link>https://sachachua.com/blog/2026/05/la-semaine-du-13-au-19-avril/</link>
		
		<pubDate>Tue, 05 May 2026 17:51:34 GMT</pubDate>
    <category>french</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/05/la-semaine-du-13-au-19-avril/</guid>
		<description><![CDATA[<div id="outline-container-org30163db" class="outline-3">
<h3 id="org30163db">lundi 13</h3>
<div class="outline-text-3" id="text-org30163db">
<p>
Ma fille a séché les cours toute la journée. Elle a dit qu'elle était fatiguée. Elle est restée à la maison au lieu d'aller à son cours de gymnastique.
</p>

<p>
J'ai configuré obs-websocket pour lancer et arrêter la diffusion en direct depuis Emacs.
</p>

<p>
Il faisait très beau, donc je me suis assise dehors et j'ai lu la configuration d'Emacs de tecosaur. Non seulement sa configuration était très détaillée, mais elle était aussi magnifiquement mise en page.
</p>

<p>
J'ai préparé mon bulletin d'information sur Emacs pendant que je diffusais en direct.
</p>

<p>
Le glacier était toujours fermé, donc nous avons acheté de la crème glacée au supermarché à la place.
</p>

<p>
À l'heure du coucher, ma fille a dit qu'elle aurait aimé rester une enfant. Elle a dit qu'elle aimait bien KidSpark, qui est réservé aux enfants jusqu'à 10 ans.
</p>
</div>
</div>
<div id="outline-container-org9b5ce5b" class="outline-3">
<h3 id="org9b5ce5b">mardi 14</h3>
<div class="outline-text-3" id="text-org9b5ce5b">
<p>
Ma fille a suivi son cours. Après l'école, nous avons fait du vélo au parc pour jouer avec ses amies, qui en faisaient aussi.
</p>

<p>
J'ai continué à améliorer obs-websocket pour gérer mon direct depuis Emacs. J'ai aussi réécrit mon correctif pour l'opération « sentence-at-point » sur Org Mode.
</p>

<p>
J'étais fatiguée et j'avais un peu mal à la tête.
</p>
</div>
</div>
<div id="outline-container-org065c29a" class="outline-3">
<h3 id="org065c29a">mercredi 15</h3>
<div class="outline-text-3" id="text-org065c29a">
<p>
Ma fille s'est réveillée tard, mais elle a participé à son cours toute seule.
</p>

<p>
J'ai mis à jour mon OBS pour ajouter socialstream.ninja via une source navigateur. Maintenant, je peux afficher les commentaires et je peux envoyer un message depuis Emacs sur YouTube.
</p>

<p>
J'ai travaillé un peu comme consultante. Le design du profil avait besoin d'une petite correction.
</p>

<p>
Ma fille et moi avons joué à Stardew Valley.
</p>

<p>
Mon mari avait une course près du Musée des beaux-arts de l'Ontario. Ma fille était heureuse de sécher les cours l'après-midi parce que l'école avait une remplaçante. J'ai emmené ma fille là-bas et nous avons passé du temps à essayer les activités au musée et à dessiner sur nos tablettes.
</p>

<p>
Après le dîner, nous nous sommes entraînées à peindre des yeux avec des aquarelles.
</p>
</div>
</div>
<div id="outline-container-org8876f05" class="outline-3">
<h3 id="org8876f05">jeudi 16</h3>
<div class="outline-text-3" id="text-org8876f05">
<p>
J'avais rendez-vous avec Protesilaos pour l'informer de mes progrès depuis notre conversation précédente et lui poser mes nouvelles questions. J'ai fait fonctionner mon code pour lancer ma vidéo à partir d'un horodatage et j'ai écrit une fonction pour calculer la conversion entre l'heure réelle et le temps écoulé.
</p>

<p>
Ma fille et moi avons joué à la Play-Doh, au sungka (un jeu traditionnel philippin), et aux charades.
</p>
</div>
</div>
<div id="outline-container-org102c227" class="outline-3">
<h3 id="org102c227">vendredi 17</h3>
<div class="outline-text-3" id="text-org102c227">
<p>
J'ai révisé les sous-titres de ma conversation avec Prot d'hier. J'ai ajouté deux fonctions pour gérer l'étiquette d'interlocuteur quand on divise ou fusionne des sous-titres. J'ai aussi programmé trois conversations sur Emacs et j'ai publié les événements sur YouTube et sur mon site grâce à d'autres fonctions. J'ai aussi modifié ma bibliothèque pour publier mon site afin qu'elle n'inclue pas les fichiers privés.
</p>

<p>
J'ai travaillé sur nos impôts.
</p>

<p>
Ma fille s'est réveillée toute seule ce matin, à temps pour le petit-déjeuner, notre routine matinale, et son interrogation de mathématiques à l'école. Mais elle a séché les cours l'après-midi et elle s'est assise tout l'après-midi contre sa porte. Au lieu de se détendre, elle s'est davantage braquée contre moi. Je ne sais pas quoi faire dans cette situation.
</p>
</div>
</div>
<div id="outline-container-org742c34f" class="outline-3">
<h3 id="org742c34f">samedi 18</h3>
<div class="outline-text-3" id="text-org742c34f">
<p>
Pour le petit-déjeuner, j'ai préparé des crêpes avec le reste de la crème fouettée. Il reste juste un peu de la créme, donc je n'ai pas pu fouetter dans le mélanger. J'ai fouetté à la main. J'ai aussi utilisé la crème fouettée congelée que j'avais faite il y a plusieurs mois. Je les ai mangé avec des pêches et de la mangue. C'était parfait.
</p>

<p>
Lire la configuration lettrée d'Emacs de tecosaur me rend jaloux de sa mise en page, donc j'ai passé du temps en ameliorant l'export de ma configuration. C'est très long. Le PDF est 736 pages. Seule la table de matières est 15 pages. Je veux ajouter plus de commentaires et implementer plus d'exports LaTeX pour mes types de liens.
</p>

<p>
Ma fille était grincheuse contre moi du matin, mais l'après-midi, elle a réapparu et elle a voulu passer du temps avec moi.
</p>

<p>
Nous avons joué à Minecraft pour essayer les nouveaux cubes de soufre. Nous avons généré un Warden et lui avons donné un cube qui nous donnaient un bloc de champignon. Le Warden s'amusait avec le cube.
</p>

<p>
Nous avons joué avec Play-Doh. Je l'ai étalé très finement et nous l'avons coupé à beaucoup de pièces. Elle les a tressé. Elle a voulu essayer une tresse couronne, donc j'ai tressé ses cheveux.
</p>

<p>
Pour le dîner, nous avons préparé des sushis.
</p>

<p>
Nous avons joué encore à Stardew Valley Expanded. Nous avons bien progressé dans les paquets du centre communautaire, même si j'ai oublié d'obtenir l'engrais de centre communautaire après la Fête des Œufs pour accélerer les fraises. Tant pis.
</p>

<p>
Ma fille a pratiqué son vocabulaire français en racontant l'histoire de la famille d'Eevee.
</p>
</div>
</div>
<div id="outline-container-org0cef6bd" class="outline-3">
<h3 id="org0cef6bd">dimanche 19</h3>
<div class="outline-text-3" id="text-org0cef6bd">
<p>
Ma fille s'est réveillée à 8h00 aujourd'hui. Elle trouve que c'est plus facile de se réveiller quand il n'y a pas école. Il est bon que je n'avait pas commencé une diffusion en direct.
</p>

<p>
Ma fille et moi sommes allées aux Stockyards à vélo pour acheter des tissus pour coudre un chapeau d'été. Elle avait fait du lèche-vitrine mais elle n'en avait pas trouvé un qui lui convenait, donc nous devons le faire nous-même. Elle a choisi du tissu jaune Pokémon. Elle a aussi voulu de la laine pour faire du crochet une couverture.
</p>

<p>
Nous avons mangé du Panda Express pour le déjeuner. Le repas enfant m'a suffi.
</p>

<p>
Je l'ai déposée à la maison et j'ai apporté des donations au Goodwill en faisant le grand ménage. J'ai aussi fait les courses. Une fois que je suis rentrée, ma fille m'a montré fièrement qu'elle a fait les lits comme un hôtel.
</p>

<p>
Nous avons joué à Stardew Valley Expanded après le dîner. L'été a commencé. Je pense que je dois planter plus de doubeurre pour le paquet récoltes de qualité qui demande 5 récoltes de qualité or.
</p>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/05/la-semaine-du-13-au-19-avril/index.org">View Org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F05%2Fla-semaine-du-13-au-19-avril%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		<dc:creator>Sacha Chua</dc:creator><enclosure length="24055" type="application/octet-stream" url="https://sachachua.com/blog/2026/05/la-semaine-du-13-au-19-avril/index.org"/></item><item>
		<title>La semaine du 20 au 26 avril</title>
		<link>https://sachachua.com/blog/2026/05/la-semaine-du-20-au-26-avril/</link>
		
		<pubDate>Tue, 05 May 2026 17:32:23 GMT</pubDate>
    <category>french</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/05/la-semaine-du-20-au-26-avril/</guid>
		<description><![CDATA[<div id="outline-container-org404523c" class="outline-3">
<h3 id="org404523c">lundi 20 avril</h3>
<div class="outline-text-3" id="text-org404523c">
<p>
Ma fille s'est réveillée tôt de façon autonome, donc nous avons terminé notre routine matinale. Mais elle a été déconcertée quand son mot de passe n'a pas fonctionné pour se connecter à l'école. Je l'ai aidée et elle a assisté à ses cours. Je pensais qu'elle allait bien, mais une fois que je suis allée la voir pendant la récré, j'ai trouvé qu'elle était grincheuse. Elle a encore séché les cours.
</p>

<p>
À mon grand étonnement, après la pause déjeuner et un petit moment de jeu, elle participait à l'école.
</p>

<p>
Quelques points :
</p>

<ul class="org-ul">
<li>Comme tout le monde, elle a des jours avec et des jours sans. Quand elle a mal au corps, tout est dur.</li>
<li>Nous savons que les cours collectifs ne lui conviennent pas pour le moment. C'est une expérience pour obtenir des données.</li>
<li>Ce n'est pas la fin du monde. Peut-être que l'école est plus indulgente que je ne le pense. Je peux leur laisser dire quand il y a un vrai problème. C'est possible que ce ne soit pas un problème.</li>
<li>C'est très difficile (peut-être impossible) d'aider une personne qui ne veut pas être aidée, particulièrement car une partie de sa résistance est due à son désir d'autonomie.</li>
<li>Harceler est inutile et inefficace. Si j'essaie d'utiliser la punition, je lui rends la tâche plus difficile pour choisir elle-même une bonne façon de procéder.</li>
<li>Si elle veut quelque chose de différent, nous pouvons trouver quelque chose de différent.</li>
<li>Donc je dois gérer mes propres émotions et être solidaire. Je dois avoir confiance dans le fait qu'elle veut un bon résultat pour elle-même. Elle peut le gérer ou elle peut demander de l'aide. Si je reste zen, c'est plus facile pour elle de demander de l'aide.</li>
</ul>
</div>
</div>
<div id="outline-container-orgb7d882c" class="outline-3">
<h3 id="orgb7d882c">mardi 21</h3>
<div class="outline-text-3" id="text-orgb7d882c">
<p>
Je pense que j'ai trouvé un moyen de me protéger contre les accidents pendant une diffusion en direct. Si je diffuse avec un délai vers une autre instance d'OBS, je peux interrompre le flux une fois que je remarque quelque chose que je partage accidentellement.
</p>

<p>
J'ai aussi écrit une fonction pour formater les événements dans le format Org Mode pour exporter vers le format iCalendar.
</p>

<p>
J'ai répondu à des courriels, dont un en français. J'ai mis à jour les entrées de mon agrégateur Planet Emacslife. Je l'ai modifié pour utiliser toujours l'IPv4 et interpréter correctement les corps des articles.
</p>

<p>
Pour la soulager de son ennui, j'ai aidé ma fille à travailler sur des fiches d'exercices mathématiques pour les élèves de 6ème, qu'elle a pu accomplir avec de petites astuces. Elle était très fière parce que c'était plus intéressant que ses devoirs.
</p>

<p>
Après l'école, j'ai emmené ma fille au parc pour jouer avec toutes ses meilleures amies. Elles s'amusaient tellement que d'autres enfants ont voulu se joindre à elles, ce qui a rendu l'endroit trop bruyant pour ma fille, qui s'est déplacée au bac à sable pour jouer au calme. Une fois que les autres enfants sont partis, ma fille a retrouvé ses amies.
</p>

<p>
Ma fille a redécouvert les attrape-soleil et elle en a peint quelques-uns avec des peintures acryliques. Elle a voulu une peinture verte, mais nous n'en avions pas, donc elle a mélangé de la peinture bleue et de la peinture jaune pour en faire.
</p>

<p>
Elle a aussi discuté de son idée pour un petit mannequin pour présenter des prototypes de robes. Nous avons cherché des options en ligne, mais tous les produits étaient trop chers ou ne convenaient pas à ma fille. Nous allons peut-être acheter un petit mannequin chez Ikea.
</p>

<p>
J'étais un peu fatiguée.
</p>
</div>
</div>
<div id="outline-container-org6174504" class="outline-3">
<h3 id="org6174504">mercredi 22</h3>
<div class="outline-text-3" id="text-org6174504">
<p>
J'ai écrit quelques articles pour annoncer mes diffusions en direct.
</p>

<p>
J'ai proposé à ma fille de travailler sur des mathématiques plus complexes ensemble, mais elle n'avait pas besoin de mon aide aujourd'hui.
</p>

<p>
Après l'école, ma fille et moi avons fait du vélo au parc. Nous étions en avance pour notre rendez-vous avec ses amies, donc nous avons joué dans l'aire de jeu près de la rue qui a un grand bac à sable. J'ai apporté les jouets de sable, ce qui a permis à ma fille de simuler une pâtisserie. Après avoir joué, nous sommes allées à l'autre aire de jeu en pente. Nos amies étaient en retard, mais ce n'était pas un problème. Il y avait d'autres amies, et une fois qu'elles ont dû partir, nous avons joué aux balançoires jusqu'à ce que nos autres amies arrivent. Il faisait beau et un peu chaud. Ma fille a mangé deux sucettes glacées au yaourt, à la fraise, et au miel qu'elle a préparées hier soir, et elle les a offertes à ses amies.
</p>

<p>
Ses amies sont venues à pied. Ma fille a voulu les accompagner sur le chemin du retour, donc nous sommes toutes allées à pied. J'ai accroché son vélo au mien grâce au sac Bakkie, et j'ai poussé mon vélo pendant qu'elles marchaient.
</p>

<p>
Une de ses amies est tombée et elle a eu mal au genou. Elle a hurlé. Ma fille a offert un bandage Pokémon. Elle a encore hurlé, ce qui était trop bruyant pour ma fille qui commençait aussi à pleurer. Elles ont eu besoin de quelques moments avant qu'elles ne se calment.
</p>

<p>
J'étais étonnée que ma fille ait voulu accompagner ses amies presque jusque chez elles. Eh bien, le soleil brillait et je peux toujours emmener ma fille si elle devient trop fatiguée.
</p>

<p>
Pour le dîner, mon mari a préparé des escalopes de poulet.
</p>
</div>
</div>
<div id="outline-container-orga9f4e12" class="outline-3">
<h3 id="orga9f4e12">jeudi 23</h3>
<div class="outline-text-3" id="text-orga9f4e12">
<p>
J'ai travaillé comme consultante.
</p>

<p>
J'ai emmené ma fille au parc Dufferin Grove pour jouer là-bas. Une fois arrivée, elle a vu que ses meilleures amies sont occupées à jouer avec une fille qui est en désaccord avec ma fille, donc ma fille a décidé de jouer plutôt avec moi ou avec son père, qui nous a rejoints à vélo. Elle a joué sur la balançoire et le toboggan. Elle a aussi joué dans le sable avec d'autres enfants.
</p>

<p>
À la maison, nous avons fait des bulles géantes.
</p>
</div>
</div>
<div id="outline-container-org50bfd58" class="outline-3">
<h3 id="org50bfd58">vendredi 24</h3>
<div class="outline-text-3" id="text-org50bfd58">
<p>
J'ai eu une merveilleuse conversation avec John Wiegley et Karthik Chikmagalur sur le flux de travail de John pour gérer ses tâches sur Emacs et sur Org Mode.
</p>

<p>
Ma fille était un peu grincheuse parce que j'étais occupée avec ma conversation et son père était occupé à préparer le dîner. Une fois que j'étais disponible, elle a voulu jouer à un jeu de dominos que nous avons déjà donné il y a plus d'une année. Elle a été déçue, puis elle a décidé de faire un jeu similaire en utilisant LEGO. Elle s'est amusée.
</p>

<p>
J'ai accidentellement fait tomber mon Apple Pencil et il s'est cassé.
</p>
</div>
</div>
<div id="outline-container-orgac7c578" class="outline-3">
<h3 id="orgac7c578">samedi 25</h3>
<div class="outline-text-3" id="text-orgac7c578">
<p>
Je suis allée au magasin Apple pour essayer de remplacer mon Apple Pencil et de réparer l'écran de ma tablette sur la garantie AppleCare+. Je n'ai rien obtenu. Ils n'avaient pas les pièces en stock pour la réparation de l'écran, donc le technicien les a commandées et il va me notifier une fois qu'elles seraient arrivées. Il a trouvé que mon Apple Pencil n'est pas inclus dans la garantie AppleCare+ automatiquement même si je l'avais acheté en même temps que ma tablette. Le technicien m'a dit que j'ai besoin d'appeler l'assistance Apple pour lier mon Apple Pencil à la garantie AppleCare+, ce qui a pris 35 minutes à résoudre. Une fois que j'ai fini, le technicien est déjà passé à un autre client. C'était très occupé au magasin, et je n'ai pu reprendre mon rendez-vous. Si je voulais faire un autre rendez-vous, il m'aurait fallu attendre plus d'une heure et demie. J'étais surstimulée, donc j'ai choisi de rentrer.
</p>

<p>
Ma fille a voulu jouer à Stardew Valley avec moi. C'étaient les derniers jours avant l'automne. Elle a commencé à détruire ses arbustes de myrtilles. Quand je lui ai demandé ce qu'elle faisait, elle est partie furieuse parce qu'elle a senti que j'étais sur son dos. J'ai présenté mes excuses, et je l'ai aussi informée que les myrtilles ont une récolte de plus exactement à la fin de la saison. Elle ne le savait pas.
</p>
</div>
</div>
<div id="outline-container-orge4a6d36" class="outline-3">
<h3 id="orge4a6d36">dimanche 26</h3>
<div class="outline-text-3" id="text-orge4a6d36">
<p>
J'ai écrit une petite fonction pour sauvegarder une capture d'écran à la position actuelle dans la vidéo et l'ajouter avec un horodatage au sous-titre actuel, ce qui facilite l'inclusion des images à l'article. Karthik et moi avons discuté du traitement de la vidéo.
</p>

<p>
Il faisait très beau, donc ma fille et moi avons fait du vélo jusqu'au Corktown Commons pour la première fois. Elle s'est très amusée sur les toboggans. Nous avons aussi fait plusieurs gâteaux de sable dans le bac à sable, grâce aux quelques conteneurs que j'ai apportés.
</p>

<p>
Après le dîner, ma fille a voulu jouer à Stardew Valley avec moi. Elle m'a demandé si c'est acceptable si elle vend quelques minerais d'or. Je lui ai demandé ce qu'elle voulait faire, quel est son but&hellip; Elle est devenue grincheuse et elle s'en est allée. Je me suis rendu compte qu'elle voulait peut-être faire de l'espace dans son inventaire, ce qui peut aussi être résolu avec un coffre, ce que j'avais d'ailleurs prévu de faire. Bien, elle doit développer sa propre autorégulation. Elle est finalement revenue de sa chambre et elle m'a demandé un câlin parce que son nez lui fait mal, pauvre chérie. Nous avons fait la routine du soir avec des larmes.
</p>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/05/la-semaine-du-20-au-26-avril/index.org">View Org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F05%2Fla-semaine-du-20-au-26-avril%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		<dc:creator>Sacha Chua</dc:creator><enclosure length="37452" type="application/octet-stream" url="https://sachachua.com/blog/2026/05/la-semaine-du-20-au-26-avril/index.org"/></item>
	</channel>
</rss>