<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/assets/rss.xsl" type="text/xsl"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
>
<channel>
	<title>Sacha Chua - category - yay-emacs</title>
	<atom:link href="https://sachachua.com/blog/category/yay-emacs/feed/index.xml" rel="self" type="application/rss+xml" />
	<atom:link href="https://sachachua.com/blog/category/yay-emacs" rel="alternate" type="text/html" />
	<link>https://sachachua.com/blog/category/yay-emacs/feed/index.xml</link>
	<description>Emacs, sketches, and life</description>
	<lastBuildDate>Fri, 24 Apr 2026 16:36:07 GMT</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>daily</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>11ty</generator>
  <item>
		<title>April 30 Yay Emacs: Sacha and Prot Talk Emacs - Newbies/Starter Kits</title>
		<link>https://sachachua.com/blog/2026/04/yay-emacs-sacha-and-prot-talk-emacs-newbies-starter-kits/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Fri, 24 Apr 2026 14:57:50 GMT</pubDate>
    <category>emacs</category>
<category>community</category>
<category>yay-emacs</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/04/yay-emacs-sacha-and-prot-talk-emacs-newbies-starter-kits/</guid>
		<description><![CDATA[<p>
</p><div class="yt-video"><iframe width="456" height="315" title="YouTube video player" src="https://www.youtube-nocookie.com/embed/z7pcLdwuyxE?enablejsapi=1" frameborder="0" allowfullscreen=""></iframe><a href="https://youtube.com/live/z7pcLdwuyxE">Watch on YouTube</a></div>
<p></p>

<p>
I will livestream it and update this post with notes.
</p>

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

<p>
The Emacs Carnival theme for April 2026 is <a href="https://www.emacswiki.org/emacs/CarnivalApril2026">newbies/starter kits</a>. I'd like to chat with Prot about not only helping people get into Emacs but also supporting lifelong learning.
</p>

<p>
Prot had some notes on how he started with Emacs in 2019 in
<a href="https://protesilaos.com/codelog/2019-12-20-vlog-switch-emacs/">All about switching to Emacs (video blog) | Protesilaos</a>. These
notes were just a few months after he started, so his experience was pretty fresh.
</p>

<p>
In <a href="https://protesilaos.com/codelog/2026-03-13-computing-in-freedom-with-gnu-emacs/">Computing in freedom with GNU Emacs | Protesilaos</a> (2026), he said:
</p>

<blockquote>
<p>
Remember that I started using Emacs without a background in
programming. &hellip; I learnt the basics within a few days. I started
writing my own Emacs Lisp within weeks. And within a year I had my
modus-themes moved into core Emacs.
</p>
</blockquote>

<p>
Prot has several projects that might be of interest to many newcomers to Emacs:
</p>

<ul class="org-ul">
<li><a href="https://protesilaos.com/emacs/modus-themes">modus-themes</a>, which are part of Emacs core and are therefore just a <code>M-x load-theme</code> away</li>
<li><a href="https://protesilaos.com/emacs/emacs-lisp-elements">Emacs Lisp Elements</a>, a book that helps people learn Emacs Lisp
<ul class="org-ul">
<li>Where does this fit into people's learning journeys? How can they come across it and use it?</li>
</ul></li>
<li>perhaps <a href="https://protesilaos.com/emacs/denote">Denote</a>
<ul class="org-ul">
<li>What would it take for people to learn enough to be able to use this?</li>
</ul></li>
</ul>

<p>
He also offers <a href="https://protesilaos.com/coach/">Emacs coaching</a>. I wonder if any newbies have taken advantage of that. There are a <a href="https://www.emacswiki.org/emacs/EmacsCoaching">few other coaches</a> listed on the EmacsWiki. (Ooh, Emacs buddy, that was neat.)
</p>

<p>
Other possible topics: Philip suggested the following general themes for the Emacs Carnival:
</p>

<ul class="org-ul">
<li>What are your memories of starting with Emacs?</li>
<li>What experiences do you have with teaching Emacs to new users?</li>
<li>Do you think if starter kits are more of a hindrance in the long term or necessary for many users to even try Emacs?</li>
<li>What defaults do you think should be changed for everyone (new and old users)?</li>
<li>What defaults do you think should be changed for new users (see NewcomersTheme)?</li>
<li>What is the sweet-spot between starter-kit minimalism and maximalism?</li>
</ul>
<div><a href="https://sachachua.com/blog/2026/04/yay-emacs-sacha-and-prot-talk-emacs-newbies-starter-kits/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%2F04%2Fyay-emacs-sacha-and-prot-talk-emacs-newbies-starter-kits%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>YE20: Emacs Carnival: Newbies/starter kits</title>
		<link>https://sachachua.com/blog/2026/04/ye20-emacs-carnival-newbies-starter-kits/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Wed, 22 Apr 2026 19:06:56 GMT</pubDate>
    <category>yay-emacs</category>
<category>emacs</category>
<category>community</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/04/ye20-emacs-carnival-newbies-starter-kits/</guid>
		<description><![CDATA[<p>
This was a rough braindump on what I might want to write or do for the Emacs Carnival theme this month.
</p>

<p>
</p><div class="yt-video"><iframe width="456" height="315" title="YouTube video player" src="https://www.youtube-nocookie.com/embed/Yht0N26EoF4?enablejsapi=1" frameborder="0" allowfullscreen=""></iframe><a href="https://youtube.com/live/Yht0N26EoF4">Watch on YouTube</a></div>
<p></p>
<div id="outline-container-ye20-emacs-carnival-newbies-starter-kits-outline" class="outline-3">
<h3 id="ye20-emacs-carnival-newbies-starter-kits-outline">Outline</h3>
<div class="outline-text-3" id="text-ye20-emacs-carnival-newbies-starter-kits-outline">
<p>
</p><div class="sketch-full"><a class="photoswipe" href="https://sketches.sachachua.com/filename/2026-04-22-01%20Thinking%20about%20Emacs%20Carnival%20April%202026%20-%20newbies%20and%20starter%20kits.jpeg" data-src="https://sketches.sachachua.com/static/2026-04-22-01%20Thinking%20about%20Emacs%20Carnival%20April%202026%20-%20newbies%20and%20starter%20kits.jpeg" data-title="2026-04-22-01 Thinking about Emacs Carnival April 2026 - newbies and starter kits.jpeg" data-w="2900" data-h="2050"><picture>
      <img src="https://sketches.sachachua.com/static/2026-04-22-01%20Thinking%20about%20Emacs%20Carnival%20April%202026%20-%20newbies%20and%20starter%20kits.jpeg" width="2900" height="2050" alt="2026-04-22-01 Thinking about Emacs Carnival April 2026 - newbies and starter kits.jpeg" loading="lazy" style="max-height: 90vw; height: auto; width: auto" decoding="async">
      <figcaption>2026-04-22-01 Thinking about Emacs Carnival April 2026 - newbies and starter kits.jpeg</figcaption>
    </picture></a></div>
<p></p>

<ul class="org-ul">
<li><a href="https://www.emacswiki.org/emacs/CarnivalApril2026">Emacs Carnival April 2026: newbies/starter kits</a></li>

<li><b>Start with why</b>
<ul class="org-ul">
<li>Curious
<ul class="org-ul">
<li>Cool demo</li>
<li>Reputation</li>
<li>Someone else (ex: professor)</li>
</ul></li>
<li>Learning at leisure vs wanting to be productive ASAP
<ul class="org-ul">
<li>Coding professionally; used to VS Code or Vim</li>
</ul></li>
<li>Journey:
<ul class="org-ul">
<li>Outsiders</li>
<li>Newbie</li>
<li>Basic working environment</li>
<li>Intermediate
<ul class="org-ul">
<li>Packages</li>
<li>Configuration</li>
</ul></li>
<li>Advanced
<ul class="org-ul">
<li>Writing custom code</li>
</ul></li>
</ul></li>
<li><mark>TODO:</mark> possibly a post about where people come from and typical resources, next steps</li>
</ul></li>
<li><b>Challenges</b>
<ul class="org-ul">
<li>Balance of time
<ul class="org-ul">
<li>Getting a basic environment working
<ul class="org-ul">
<li>Things like git performance on Windows, consoles / window managers taking over keybindings</li>
<li>Starter kit trade-off
<ul class="org-ul">
<li>Plus: Get stuff working quickly</li>
<li>Minus: Limits your help to the kit's community, can be challenging to customize further</li>
</ul></li>
</ul></li>
</ul></li>
<li>Isolation
<ul class="org-ul">
<li>Don't know someone else who can watch them, lean over, fix stuff, suggest improvements, etc.</li>
</ul></li>
<li>Overwhelm
<ul class="org-ul">
<li>Too much to fit into your brain</li>
<li>Don't know how to break things down into smaller steps (which steps, etc.)</li>
</ul></li>
<li>Unknowns
<ul class="org-ul">
<li>Not knowing the words to look for</li>
<li>Not knowing what is close by, what is possible</li>
</ul></li>
</ul></li>
<li><b>What can help?</b>
<ul class="org-ul">
<li><code>M-x help-with-tutorial</code> (<code>C-h t</code>) often recommended; good for learning basic navigation</li>
<li>Getting help
<ul class="org-ul">
<li><a href="https://lists.gnu.org/mailman/listinfo/help-gnu-emacs">help-gnu-emacs</a>, <a href="https://reddit.com/r/emacs/">Reddit</a>, <a href="https://emacs.stackexchange.com/">Emacs StackExchange</a>, Mastodon (example results: <a href="https://mastodon.social/tags/emacs">#emacs on mastodon.social</a>)</li>
<li><a href="https://www.emacswiki.org/emacs/EmacsChannel">IRC</a></li>
<li>Discord? <a href="https://www.google.com/url?sa=t&amp;source=web&amp;rct=j&amp;opi=89978449&amp;url=https://discord.com/invite/v5rdp3kdDu">Doom Emacs has one</a></li>
<li><a href="https://www.emacswiki.org/emacs/Usergroups">Meetups</a></li>
</ul></li>
<li>Inspiration
<ul class="org-ul">
<li>Videos
<ul class="org-ul">
<li><mark>TODO:</mark> Add more tags to <a href="https://emacs.tv">emacs.tv</a>, add frequently-recommended pages to relevant <a href="https://emacswiki.org">EmacsWiki</a> pages</li>
</ul></li>
<li>Blog posts, <a href="https://planet.emacslife.com">Planet Emacslife</a></li>
<li><mark>TODO:</mark> Add more resources to <a href="https://sachachua.com/web/beginner-map.html">‎beginner map</a>, make it something I can refer to quickly, host clinics?</li>
</ul></li>
<li>Manuals, books
<ul class="org-ul">
<li><a href="https://masteringemacs.org">Mastering Emacs</a></li>
<li><a href="https://protesilaos.com/emacs/emacs-lisp-elements">Emacs Lisp Elements | Protesilaos</a></li>
</ul></li>
</ul></li>
<li>Stuff I work on / can tinker with
<ul class="org-ul">
<li>Inspiration helps with isolation and unknowns
<ul class="org-ul">
<li><a href="https://sachachua.com/blog/category/emacs-news/">Emacs News</a>
<ul class="org-ul">
<li><mark>TODO:</mark> Add intro
<ul class="org-ul">
<li>how to use it</li>
<li>how to subscribe</li>
<li>resources for getting help, finding meetups, etc.</li>
</ul></li>
<li><mark>TODO:</mark> Add resources (esp. beginner resources) to map and <a href="https://emacswiki.org">EmacsWiki</a></li>
</ul></li>
<li><a href="https://emacsconf.org">EmacsConf</a></li>
</ul></li>
<li>Meetups, <a href="https://emacslife.com/calendar/">Emacs Calendar</a></li>
<li>Videos, livestreams
<ul class="org-ul">
<li>Reading people's configurations, demonstrating workflow, showing how to incorporate them</li>
</ul></li>
<li><a href="https://sachachua.com/blog/2013/05/how-to-learn-emacs-a-hand-drawn-one-pager-for-beginners/">How to Learn Emacs: A Hand-drawn One-pager for Beginners / A visual tutorial</a>
<ul class="org-ul">
<li><mark>TODO:</mark> Needs updates: URLs, etc.</li>
</ul></li>
</ul></li>
<li>Continuous learning
<ul class="org-ul">
<li>Connecting with the community</li>
<li>Blogging</li>
<li>Managing overwhelm, etc.</li>
</ul></li>
</ul>
</div>
</div>
<div id="outline-container-ye20-emacs-carnival-newbies-starter-kits-transcript" class="outline-3">
<h3 id="ye20-emacs-carnival-newbies-starter-kits-transcript">Transcript</h3>
<div class="outline-text-3" id="text-ye20-emacs-carnival-newbies-starter-kits-transcript">
<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Transcript</strong></summary>
<p>
</p><p></p><div class="transcript-heading"><span class="audio-time" data-start="4.000000">00:00:04</span> <strong>Introduction</strong></div><span class="audio-time caption" data-speaker="" data-start="4.385000" data-stop="10.954000">Alright, let's see. Hello stream, this is Yay Emacs 20, and</span> <span class="audio-time caption" data-speaker="" data-start="11.014000" data-stop="15.982000">today I want to brainstorm some thoughts for an Emacs</span> <span class="audio-time caption" data-speaker="" data-start="16.042000" data-stop="23.412000">Carnival post on newbies and starter kits. Okay, alright,</span> <span class="audio-time caption" data-speaker="" data-start="23.432000" data-stop="26.256000">and the audio works. Alright, so Yay Emacs 20, Emacs</span> <span class="audio-time caption" data-speaker="" data-start="26.296000" data-stop="36.453000">Carnival, newbies and starter kits. That is this page. Yes.</span> <span class="audio-time caption" data-speaker="" data-start="36.473000" data-stop="41.577000">So, every month or so, pretty much every month so far, people</span> <span class="audio-time caption" data-speaker="" data-start="41.617000" data-stop="43.639000">have been getting together to write about a shared topic.</span> <span class="audio-time caption" data-speaker="" data-start="44.440000" data-stop="48.003000">And this month's topic is newbies and starter kits. So,</span> <span class="audio-time caption" data-speaker="" data-start="48.283000" data-stop="53.588000">originally proposed by Cena, but Philip added some topics</span> <span class="audio-time caption" data-speaker="" data-start="53.628000" data-stop="55.950000">to start with. Things like, what are your memories of</span> <span class="audio-time caption" data-speaker="" data-start="55.990000" data-stop="58.372000">starting with Emacs? What experiences do you have with</span> <span class="audio-time caption" data-speaker="" data-start="58.412000" data-stop="61.455000">teaching Emacs to new users? Do you think starter kits are</span> <span class="audio-time caption" data-speaker="" data-start="61.475000" data-stop="63.757000">more of a hindrance in the long term or necessary for many</span> <span class="audio-time caption" data-speaker="" data-start="63.777000" data-stop="66.739000">users to even try Emacs? What defaults do you think should be</span> <span class="audio-time caption" data-speaker="" data-start="66.799000" data-stop="69.402000">changed for everyone? What defaults do you think should be</span> <span class="audio-time caption" data-speaker="" data-start="69.462000" data-stop="72.405000">changed for new users? And what is the sweet spot between</span> <span class="audio-time caption" data-speaker="" data-start="72.465000" data-stop="78.832000">starter kit minimalism and maximalism? So, let me get</span> <span class="audio-time caption" data-speaker="" data-start="78.892000" data-stop="83.257000">myself organized here. I want to start off by maybe making a</span> <span class="audio-time caption" data-speaker="" data-start="83.337000" data-stop="90.244000">mind map and seeing how that goes. Let's try sharing. I'll do</span> <span class="audio-time caption" data-speaker="" data-start="90.264000" data-stop="97.177000">some screen mirroring from my iPad. See if it works. It'll be</span> <span class="audio-time caption" data-speaker="" data-start="97.197000" data-stop="97.357000">fun.</span> <span class="audio-time caption" data-speaker="" data-start="103.447000" data-stop="104.910000">Okay, there's the pen.</span> <span class="audio-time caption" data-speaker="" data-start="110.519000" data-stop="115.867000">Okay, let me think. Newbies...</span> <span class="audio-time caption" data-speaker="" data-start="115.887000" data-stop="117.450000">Newbies and starter kits.</span> <span class="audio-time caption" data-speaker="" data-start="122.037000" data-stop="125.001000">I like starting with a mind map because I jump all over the</span> <span class="audio-time caption" data-speaker="" data-start="125.041000" data-stop="129.887000">place anyway. Starting with something non-linear helps a</span> <span class="audio-time caption" data-speaker="" data-start="129.947000" data-stop="133.811000">bit.</span> <span class="audio-time caption" data-speaker="" data-start="133.831000" data-stop="134.812000">Okay,</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="137.000000">00:02:17</span> <strong>Overall structure</strong></div><span class="audio-time caption" data-speaker="" data-start="137.115000" data-stop="138.016000">starting with why.</span> <span class="audio-time caption" data-speaker="" data-start="143.343000" data-stop="146.533000">People come to Emacs for many different reasons. Some</span> <span class="audio-time caption" data-speaker="" data-start="146.573000" data-stop="149.276000">people come because they're curious about something.</span> <span class="audio-time caption" data-speaker="" data-start="149.836000" data-stop="153.600000">They've seen a cool demo. They have</span> <span class="audio-time caption" data-speaker="" data-start="153.660000" data-stop="157.643000">someone they look up to and they say, how did they do that?</span> <span class="audio-time caption" data-speaker="" data-start="157.723000" data-stop="160.246000">When it shows there's a new feature, right?</span> <span class="audio-time caption" data-speaker="" data-start="160.266000" data-stop="166.611000">Interesting thing. So that's definitely something that</span> <span class="audio-time caption" data-speaker="" data-start="166.732000" data-stop="171.896000">gets people into Emacs.</span> <span class="audio-time caption" data-speaker="" data-start="171.916000" data-stop="176.040000">I also want to think about the Emacs news.</span> <span class="audio-time caption" data-speaker="" data-start="180.290000" data-stop="183.995000">Meetups,</span> <span class="audio-time caption" data-speaker="" data-start="184.015000" data-stop="190.464000">EmacsConf. Maybe do a reflection on how I can help more</span> <span class="audio-time caption" data-speaker="" data-start="190.484000" data-stop="195.171000">effectively. And then there's always this thing that I have</span> <span class="audio-time caption" data-speaker="" data-start="195.251000" data-stop="198.996000">about mapping and coaching.</span> <span class="audio-time caption" data-speaker="" data-start="203.642000" data-stop="205.605000">This is kind of the what's close by.</span> <span class="audio-time caption" data-speaker="" data-start="211.610000" data-stop="212.812000">How do I get to where I want?</span> <span class="audio-time caption" data-speaker="" data-start="223.807000" data-stop="228.694000">And lifelong learning, because it's not just about</span> <span class="audio-time caption" data-speaker="" data-start="228.754000" data-stop="231.898000">newbies... Keeping a beginner mind in Emacs is very</span> <span class="audio-time caption" data-speaker="" data-start="231.978000" data-stop="236.084000">handy. And so it's helpful to be able to keep thinking about,</span> <span class="audio-time caption" data-speaker="" data-start="236.965000" data-stop="239.068000">how do I want to learn? How can I keep learning?</span> <span class="audio-time caption" data-speaker="" data-start="243.368000" data-stop="251.912000">Okay, so at this point I'm really just thinking about topics</span> <span class="audio-time caption" data-speaker="" data-start="251.992000" data-stop="256.584000">and seeing where I want to go with this.</span> <span class="audio-time caption" data-speaker="" data-start="263.230000" data-stop="266.874000">do have chat open somewhere, so if you happen to drop by and</span> <span class="audio-time caption" data-speaker="" data-start="267.475000" data-stop="272.662000">have any thoughts, I think I can do that. Aside from that, you</span> <span class="audio-time caption" data-speaker="" data-start="272.682000" data-stop="278.849000">know, you can just also just keep me company, um, or, and, uh,</span> <span class="audio-time caption" data-speaker="" data-start="278.989000" data-stop="281.853000">something. Where is this, where is this chat window that</span> <span class="audio-time caption" data-speaker="" data-start="281.913000" data-stop="285.137000">I'm, yes, okay, there it is. All right, okay.</span> <span class="audio-time caption" data-speaker="" data-start="288.273000" data-stop="291.076000">So this is just me thinking out loud about newbies and</span> <span class="audio-time caption" data-speaker="" data-start="291.096000" data-stop="293.759000">starter kits because afterwards I can grab the transcript</span> <span class="audio-time caption" data-speaker="" data-start="293.939000" data-stop="297.141000">and start pulling things out into blog posts.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="297.000000">00:04:57</span> <strong>Starting with where people are</strong></div><span class="audio-time caption" data-speaker="" data-start="297.142000" data-stop="302.128000">So starting from where people are. Sometimes people are curious,</span> <span class="audio-time caption" data-speaker="" data-start="305.431000" data-stop="311.317000">either just because of Emacs' reputation or because</span> <span class="audio-time caption" data-speaker="" data-start="311.457000" data-stop="314.821000">they've seen a cool demo somewhere and they want to be able to</span> <span class="audio-time caption" data-speaker="" data-start="314.861000" data-stop="321.405000">do stuff like that. Uh, sometimes people have kind of, you</span> <span class="audio-time caption" data-speaker="" data-start="321.425000" data-stop="324.329000">know, it's, it's totally open. They can, they can learn at</span> <span class="audio-time caption" data-speaker="" data-start="324.450000" data-stop="329.236000">leisure, uh, or sometimes there's some pressure to become</span> <span class="audio-time caption" data-speaker="" data-start="329.296000" data-stop="335.525000">productive right away.</span> <span class="audio-time caption" data-speaker="" data-start="335.545000" data-stop="337.888000">Let's say, for example, if they're coding as their main job,</span> <span class="audio-time caption" data-speaker="" data-start="337.928000" data-stop="341.433000">they know that switching to Emacs will help</span> <span class="audio-time caption" data-speaker="" data-start="341.453000" data-stop="344.777000">them learn it a lot faster, but at the same time,</span> <span class="audio-time caption" data-speaker="" data-start="344.817000" data-stop="347.219000">they still have to be able to keep up with their work. Which</span> <span class="audio-time caption" data-speaker="" data-start="347.399000" data-stop="351.934000">means figuring out things like compilation errors and all</span> <span class="audio-time caption" data-speaker="" data-start="351.974000" data-stop="355.345000">that stuff faster, which can be a bit of a struggle when</span> <span class="audio-time caption" data-speaker="" data-start="355.365000" data-stop="358.254000">you're new and you're trying to set up your environment for</span> <span class="audio-time caption" data-speaker="" data-start="358.294000" data-stop="359.687000">your coding system.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="359.000000">00:05:59</span> <strong>The built-in tutorial (C-h t or M-x help-with-tutorial)</strong></div><span class="audio-time caption" data-speaker="" data-start="359.688000" data-stop="366.656000">@j7gy8b has a question. Do people still try the built-in tutorial?</span> <span class="audio-time caption" data-speaker="" data-start="366.657000" data-stop="372.044000">I think so. I see the built-in tutorial of C-h t highly</span> <span class="audio-time caption" data-speaker="" data-start="372.124000" data-stop="375.228000">recommended every time people come across, every time</span> <span class="audio-time caption" data-speaker="" data-start="375.269000" data-stop="378.132000">people post those threads on... I'm a beginner, how</span> <span class="audio-time caption" data-speaker="" data-start="378.152000" data-stop="381.397000">do I get started? Many people recommend using the beginner</span> <span class="audio-time caption" data-speaker="" data-start="381.437000" data-stop="384.120000">tutorial because it will teach basic navigation and</span> <span class="audio-time caption" data-speaker="" data-start="384.180000" data-stop="390.636000">concepts in a fairly interactive, easy to grasp manner.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="390.000000">00:06:30</span> <strong>Overwhelm</strong></div><span class="audio-time caption" data-speaker="" data-start="390.637000" data-stop="394.443000">Oh, and somewhere in here, also in the beginner thing, there's</span> <span class="audio-time caption" data-speaker="" data-start="394.463000" data-stop="397.307000">probably something about dealing with overwhelm, because</span> <span class="audio-time caption" data-speaker="" data-start="397.507000" data-stop="401.513000">Emacs can be very overwhelming. And this is true even for</span> <span class="audio-time caption" data-speaker="" data-start="401.553000" data-stop="404.999000">experienced users. I am constantly running like this. I</span> <span class="audio-time caption" data-speaker="" data-start="405.059000" data-stop="410.587000">want to learn a long list of things, but there's only so much I</span> <span class="audio-time caption" data-speaker="" data-start="410.627000" data-stop="412.951000">can fit into my brain and have it remember things. Very</span> <span class="audio-time caption" data-speaker="" data-start="412.991000" data-stop="417.918000">little, actually. So, dealing with overwhelm is a big</span> <span class="audio-time caption" data-speaker="" data-start="417.998000" data-stop="419.576000">problem for new users.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="419.000000">00:06:59</span> <strong>Getting a basic working environment</strong></div><span class="audio-time caption" data-speaker="" data-start="419.577000" data-stop="421.898000">Oh, and then there's something in here about...</span> <span class="audio-time caption" data-speaker="" data-start="421.899000" data-stop="423.801000">you're starting off with, like... a total newbie,</span> <span class="audio-time caption" data-speaker="" data-start="429.045000" data-stop="433.149000">you need to get over this hump of getting a basic working</span> <span class="audio-time caption" data-speaker="" data-start="433.209000" data-stop="436.752000">environment. And if you're a programmer, actually, that</span> <span class="audio-time caption" data-speaker="" data-start="436.792000" data-stop="442.197000">bar's a bit higher because you're used to IDEs</span> <span class="audio-time caption" data-speaker="" data-start="442.377000" data-stop="447.121000">and you might be coming from VS Code and Vim and</span> <span class="audio-time caption" data-speaker="" data-start="447.222000" data-stop="450.284000">have these expectations of what your editor should</span> <span class="audio-time caption" data-speaker="" data-start="450.344000" data-stop="452.987000">already be able to do out of the box or with just a little bit of</span> <span class="audio-time caption" data-speaker="" data-start="453.048000" data-stop="456.673000">configuration. So you need to be able to at least do some of</span> <span class="audio-time caption" data-speaker="" data-start="456.713000" data-stop="462.161000">your work in it without being very, very annoyed. And then</span> <span class="audio-time caption" data-speaker="" data-start="462.181000" data-stop="466.046000">you get to the point eventually where it becomes more fun.</span> <span class="audio-time caption" data-speaker="" data-start="474.539000" data-stop="478.601000">So this is like a big hurdle there. And then,</span> <span class="audio-time caption" data-speaker="" data-start="482.993000" data-stop="488.127000">I'd say intermediate users are people who are able to find</span> <span class="audio-time caption" data-speaker="" data-start="488.187000" data-stop="489.590000">and configure and use</span> <span class="audio-time caption" data-speaker="" data-start="493.461000" data-stop="494.303000">packages.</span> <span class="audio-time caption" data-speaker="" data-start="497.135000" data-stop="502.584000">@j7gy8b says, by the way, he's Jeff from Emacs San Francisco</span> <span class="audio-time caption" data-speaker="" data-start="502.624000" data-stop="505.608000">and doesn't know how to change his display name. I will try to</span> <span class="audio-time caption" data-speaker="" data-start="505.628000" data-stop="510.837000">remember that you are Jeff. Something about YouTube and</span> <span class="audio-time caption" data-speaker="" data-start="510.857000" data-stop="513.099000">Google, I don't really know either.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="513.000000">00:08:33</span> <strong>Sometimes keybindings don't work</strong></div><span class="audio-time caption" data-speaker="" data-start="513.100000" data-stop="514.282000">@lispwizard says, one</span> <span class="audio-time caption" data-speaker="" data-start="514.361000" data-stop="517.727000">problem is platforms which usurp keystrokes which Emacs</span> <span class="audio-time caption" data-speaker="" data-start="517.928000" data-stop="520.832000">expects. I just wrestled with this on a Raspberry Pi,</span> <span class="audio-time caption" data-speaker="" data-start="520.933000" data-stop="524.501000">especially since there are so many keybindings. So for</span> <span class="audio-time caption" data-speaker="" data-start="524.541000" data-stop="527.527000">example, the GUI versus terminal thing. There are some</span> <span class="audio-time caption" data-speaker="" data-start="527.587000" data-stop="532.677000">keybindings that don't work if you don't have a GUI Emacs.</span> <span class="audio-time caption" data-speaker="" data-start="532.697000" data-stop="535.743000">And of course, if you have a GUI Emacs, and you're in a window</span> <span class="audio-time caption" data-speaker="" data-start="535.783000" data-stop="538.809000">manager, and the window manager also has a lot of global</span> <span class="audio-time caption" data-speaker="" data-start="538.849000" data-stop="546.466000">shortcuts that that override the ones that Emacs has. So</span> <span class="audio-time caption" data-speaker="" data-start="546.807000" data-stop="552.215000">when newbies come across, oh yeah, just use, meta</span> <span class="audio-time caption" data-speaker="" data-start="552.375000" data-stop="555.600000">shift left in order to do this thing in Org Mode, which is</span> <span class="audio-time caption" data-speaker="" data-start="555.620000" data-stop="559.527000">super cool. And they're like, it doesn't work for me. But</span> <span class="audio-time caption" data-speaker="" data-start="559.547000" data-stop="561.790000">they don't have the experience to know, oh, it's because</span> <span class="audio-time caption" data-speaker="" data-start="561.870000" data-stop="565.336000">it's a terminal, or oh, it's because, and so forth. So that's</span> <span class="audio-time caption" data-speaker="" data-start="565.396000" data-stop="567.479000">definitely all these little things that trip</span> <span class="audio-time caption" data-speaker="" data-start="567.519000" data-stop="572.161000">people up. Oh, and I was thinking about... Advanced</span> <span class="audio-time caption" data-speaker="" data-start="572.361000" data-stop="580.151000">would be like writing their own custom code.</span> <span class="audio-time caption" data-speaker="" data-start="584.055000" data-stop="587.399000">So, if you're trying... this thing here is a big</span> <span class="audio-time caption" data-speaker="" data-start="587.559000" data-stop="592.324000">hump, trying to get people through this journey.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="592.000000">00:09:52</span> <strong>Isolation</strong></div><span class="audio-time caption" data-speaker="" data-start="592.325000" data-stop="596.670000">And, oh, there's also this... some people are isolated. Most</span> <span class="audio-time caption" data-speaker="" data-start="596.710000" data-stop="599.952000">people are isolated, I think. They don't know anyone who</span> <span class="audio-time caption" data-speaker="" data-start="599.972000" data-stop="603.759000">also uses Emacs. Maybe they're coming across Emacs because</span> <span class="audio-time caption" data-speaker="" data-start="603.879000" data-stop="607.805000">they found it in a book or they found it in a cool video, but</span> <span class="audio-time caption" data-speaker="" data-start="607.825000" data-stop="611.051000">they don't have someone who can physically sit with them and</span> <span class="audio-time caption" data-speaker="" data-start="611.131000" data-stop="613.855000">take control of their computer and set things up the way</span> <span class="audio-time caption" data-speaker="" data-start="613.915000" data-stop="620.766000">they want, solve their little Emacs Lisp issues or help</span> <span class="audio-time caption" data-speaker="" data-start="620.807000" data-stop="624.052000">them even just figure out the words to find things when they</span> <span class="audio-time caption" data-speaker="" data-start="624.092000" data-stop="628.584000">don't even know what they want to ask for. So isolation here.</span> <span class="audio-time caption" data-speaker="" data-start="629.064000" data-stop="632.088000">If you happen to be learning Emacs with the help of a mentor,</span> <span class="audio-time caption" data-speaker="" data-start="632.349000" data-stop="635.653000">or because your professor really likes Emacs and makes all</span> <span class="audio-time caption" data-speaker="" data-start="635.673000" data-stop="639.438000">of their students use it, at least for the course, for the</span> <span class="audio-time caption" data-speaker="" data-start="639.478000" data-stop="641.661000">term that they're taking it, then yeah, that's extra lucky</span> <span class="audio-time caption" data-speaker="" data-start="642.623000" data-stop="646.468000">because you have someone you can ask for help. But I think a</span> <span class="audio-time caption" data-speaker="" data-start="646.508000" data-stop="651.394000">lot of people are picking up Emacs without being able to sit</span> <span class="audio-time caption" data-speaker="" data-start="651.495000" data-stop="655.520000">next to someone or look over someone's shoulder in order to</span> <span class="audio-time caption" data-speaker="" data-start="655.580000" data-stop="661.847000">discover ways of doing things, which is why meetups helps.</span> <span class="audio-time caption" data-speaker="" data-start="661.887000" data-stop="665.071000">Meetups help a lot. Okay, so let's draw a connection between</span> <span class="audio-time caption" data-speaker="" data-start="665.111000" data-stop="668.396000">that and meetups. Isolation. Oh, there's also like,</span> <span class="audio-time caption" data-speaker="" data-start="668.416000" data-stop="674.866000">having like background expectations and knowledge.</span> <span class="audio-time caption" data-speaker="" data-start="674.886000" data-stop="680.554000">And here, these days, it's usually either VS Code or Vim.</span> <span class="audio-time caption" data-speaker="" data-start="685.060000" data-stop="687.163000">What other things? Ooh.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="687.000000">00:11:27</span> <strong>Programming vs non-programming backgrounds</strong></div><span class="audio-time caption" data-speaker="" data-start="687.164000" data-stop="689.626000">Programming versus non-programming. There are a lot of people</span> <span class="audio-time caption" data-speaker="" data-start="689.627000" data-stop="693.250000">who actually get into this from a non-programming background.</span> <span class="audio-time caption" data-speaker="" data-start="693.251000" data-stop="694.633000">So, programming.</span> <span class="audio-time caption" data-speaker="" data-start="698.678000" data-stop="702.042000">Org is a big thing that's drawing in people who are writers</span> <span class="audio-time caption" data-speaker="" data-start="702.102000" data-stop="703.023000">and note-takers.</span> <span class="audio-time caption" data-speaker="" data-start="709.211000" data-stop="713.256000">This is a whole, like, other... Okay.</span> <span class="audio-time caption" data-speaker="" data-start="721.471000" data-stop="724.458000">So there are a lot of things that get in people's way when it</span> <span class="audio-time caption" data-speaker="" data-start="724.558000" data-stop="727.967000">comes to thinking about like when it comes to learning</span> <span class="audio-time caption" data-speaker="" data-start="728.107000" data-stop="730.673000">Emacs.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="731.000000">00:12:11</span> <strong>Students</strong></div><span class="audio-time caption" data-speaker="" data-start="731.154000" data-stop="734.543000">Okay, Jeff says in the meetup we do see that young people who</span> <span class="audio-time caption" data-speaker="" data-start="734.583000" data-stop="740.131000">are inspired by a professor to try and a lot of Emacs</span> <span class="audio-time caption" data-speaker="" data-start="740.191000" data-stop="742.774000">transmission happens this way where you have</span> <span class="audio-time caption" data-speaker="" data-start="743.215000" data-stop="748.142000">your stalwart Emacs users who are faculty and who just</span> <span class="audio-time caption" data-speaker="" data-start="748.202000" data-stop="750.965000">basically say, all right, this year, you're going</span> <span class="audio-time caption" data-speaker="" data-start="751.006000" data-stop="755.351000">to learn... Could be Scheme, could be data</span> <span class="audio-time caption" data-speaker="" data-start="755.392000" data-stop="758.736000">science or whatever else. And we're going to do it in Emacs</span> <span class="audio-time caption" data-speaker="" data-start="758.816000" data-stop="762.241000">because all of their lecture notes are in Emacs,</span> <span class="audio-time caption" data-speaker="" data-start="762.261000" data-stop="764.284000">so it's much easier for them to say</span> <span class="audio-time caption" data-speaker="" data-start="764.324000" data-stop="768.049000">here's my literate programming example of what I'm talking</span> <span class="audio-time caption" data-speaker="" data-start="768.109000" data-stop="772.275000">about. I'm just going to evaluate it during</span> <span class="audio-time caption" data-speaker="" data-start="772.295000" data-stop="776.679000">the lecture itself. So you can see that. And you all should</span> <span class="audio-time caption" data-speaker="" data-start="776.720000" data-stop="780.403000">learn Emacs. Usually they'll hedge it and say, you</span> <span class="audio-time caption" data-speaker="" data-start="780.463000" data-stop="783.746000">can use other editors if you really, really want to. But</span> <span class="audio-time caption" data-speaker="" data-start="783.766000" data-stop="786.189000">there's definitely: here's how to get</span> <span class="audio-time caption" data-speaker="" data-start="786.229000" data-stop="788.411000">started. Here's the tutorial made for this course</span> <span class="audio-time caption" data-speaker="" data-start="788.471000" data-stop="791.874000">specifically. Here are all the modules that you need. And a</span> <span class="audio-time caption" data-speaker="" data-start="791.914000" data-stop="796.979000">lot of people go from there and, and just, it clicks</span> <span class="audio-time caption" data-speaker="" data-start="796.999000" data-stop="800.108000">into their brain and they have someone to talk to: both a</span> <span class="audio-time caption" data-speaker="" data-start="800.149000" data-stop="804.134000">professor and fellow students who are learning all of this</span> <span class="audio-time caption" data-speaker="" data-start="804.415000" data-stop="807.599000">arcane stuff for the first time. So that is an excellent</span> <span class="audio-time caption" data-speaker="" data-start="808.280000" data-stop="811.164000">situation to be learning Emacs in. But it's not everyone's</span> <span class="audio-time caption" data-speaker="" data-start="811.565000" data-stop="814.769000">experience, so it'll be interesting to see how to support</span> <span class="audio-time caption" data-speaker="" data-start="814.810000" data-stop="818.595000">that case as well as other cases. I should write that down</span> <span class="audio-time caption" data-speaker="" data-start="818.635000" data-stop="820.157000">somewhere. School.</span> <span class="audio-time caption" data-speaker="" data-start="826.226000" data-stop="831.005000">Okay. So, challenges, obstacles.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="836.000000">00:13:56</span> <strong>Basic working environment</strong></div><span class="audio-time caption" data-speaker="" data-start="836.832000" data-stop="839.996000">This basic working environment thing, I think, is one of the</span> <span class="audio-time caption" data-speaker="" data-start="840.116000" data-stop="844.361000">struggles because, like, for example, if people want to get</span> <span class="audio-time caption" data-speaker="" data-start="844.441000" data-stop="849.627000">things working with the current best practices</span> <span class="audio-time caption" data-speaker="" data-start="849.788000" data-stop="865.798000">for coding JavaScript or coding Python, sometimes</span> <span class="audio-time caption" data-speaker="" data-start="865.858000" data-stop="871.066000">getting LSP working just the right way is a finicky process.</span> <span class="audio-time caption" data-speaker="" data-start="871.727000" data-stop="875.252000">And then, of course, there's platform differences, like</span> <span class="audio-time caption" data-speaker="" data-start="876.273000" data-stop="878.817000">Magit being very slow on Windows.</span> <span class="audio-time caption" data-speaker="" data-start="882.796000" data-stop="885.739000">Which can't actually get around because Windows just really</span> <span class="audio-time caption" data-speaker="" data-start="885.819000" data-stop="887.201000">sucks when it comes to</span> <span class="audio-time caption" data-speaker="" data-start="890.264000" data-stop="893.908000">lots of small file operations. And so people end up</span> <span class="audio-time caption" data-speaker="" data-start="893.948000" data-stop="898.132000">recommending using WSL, Windows Subsystem for Linux,</span> <span class="audio-time caption" data-speaker="" data-start="898.152000" data-stop="902.076000">instead, which, again, is something that a newbie might not</span> <span class="audio-time caption" data-speaker="" data-start="902.116000" data-stop="908.062000">consider or come across or feel comfortable setting up. And</span> <span class="audio-time caption" data-speaker="" data-start="908.082000" data-stop="911.005000">then, of course, just install Linux, which is not always an</span> <span class="audio-time caption" data-speaker="" data-start="911.065000" data-stop="911.706000">option for people.</span> <span class="audio-time caption" data-speaker="" data-start="914.723000" data-stop="918.889000">Let me think. Okay, where are we now? There's so much to write</span> <span class="audio-time caption" data-speaker="" data-start="918.910000" data-stop="919.130000">about.</span> <span class="audio-time caption" data-speaker="" data-start="921.954000" data-stop="927.703000">What else do I take into account? What else can I add to the</span> <span class="audio-time caption" data-speaker="" data-start="927.723000" data-stop="930.708000">conversation? Okay, the stuff that I specifically know.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="931.000000">00:15:31</span> <strong>Stuff I work on - Emacs News</strong></div><span class="audio-time caption" data-speaker="" data-start="931.950000" data-stop="939.539000">Emacs News helps a lot with a number of things, actually. So I</span> <span class="audio-time caption" data-speaker="" data-start="939.579000" data-stop="942.323000">do find that in the conversations and people in</span> <span class="audio-time caption" data-speaker="" data-start="942.343000" data-stop="944.947000">the Reddit threads where people ask, oh, I'm new to</span> <span class="audio-time caption" data-speaker="" data-start="945.027000" data-stop="947.831000">Emacs, what should I read? People</span> <span class="audio-time caption" data-speaker="" data-start="947.971000" data-stop="950.695000">consistently recommend things like the Mastering Emacs</span> <span class="audio-time caption" data-speaker="" data-start="950.795000" data-stop="956.063000">blog and book... What else do</span> <span class="audio-time caption" data-speaker="" data-start="956.103000" data-stop="959.468000">people like that...? People often recommend Doom Emacs,</span> <span class="audio-time caption" data-speaker="" data-start="959.488000" data-stop="964.240000">especially if people are coming from a Vim background. And</span> <span class="audio-time caption" data-speaker="" data-start="964.340000" data-stop="967.324000">Emacs News often gets mentioned as one of the resources. I</span> <span class="audio-time caption" data-speaker="" data-start="967.364000" data-stop="971.049000">think this helps for a number of reasons, because first it</span> <span class="audio-time caption" data-speaker="" data-start="971.109000" data-stop="974.553000">gives people kind of some exposure to the cool stuff that</span> <span class="audio-time caption" data-speaker="" data-start="974.613000" data-stop="977.096000">people do with Emacs. So this is inspiration.</span> <span class="audio-time caption" data-speaker="" data-start="981.542000" data-stop="986.228000">I think it's primarily on the kind of aspirational stuff.</span> <span class="audio-time caption" data-speaker="" data-start="986.248000" data-stop="991.078000">People can see interesting demos and that motivates them to</span> <span class="audio-time caption" data-speaker="" data-start="991.238000" data-stop="996.003000">stay with Emacs. And so this is actually probably more of a</span> <span class="audio-time caption" data-speaker="" data-start="996.143000" data-stop="999.707000">kind of an Emacs news-ish thing here, from intermediate to</span> <span class="audio-time caption" data-speaker="" data-start="999.747000" data-stop="1000.207000">advanced.</span> <span class="audio-time caption" data-speaker="" data-start="1008.356000" data-stop="1011.299000">From time to time, I do come across beginner-oriented</span> <span class="audio-time caption" data-speaker="" data-start="1011.339000" data-stop="1018.626000">things in my kind of survey of Emacs news-related items.</span> <span class="audio-time caption" data-speaker="" data-start="1020.040000" data-stop="1023.304000">So let's add that to use also EN beginner stuff.</span> <span class="audio-time caption" data-speaker="" data-start="1030.912000" data-stop="1034.135000">Maybe it's every couple of weeks that someone posts a link</span> <span class="audio-time caption" data-speaker="" data-start="1034.194000" data-stop="1038.319000">that's specifically beginner-related. And one of the</span> <span class="audio-time caption" data-speaker="" data-start="1038.339000" data-stop="1041.864000">things that I've been slowly doing is I've been trying to map</span> <span class="audio-time caption" data-speaker="" data-start="1041.924000" data-stop="1046.048000">it out so that people can find those resources.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1048.000000">00:17:28</span> <strong>Emacs Wiki</strong></div><span class="audio-time caption" data-speaker="" data-start="1048.812000" data-stop="1052.518000">And actually I should add a thing here, Emacs Wiki.</span> <span class="audio-time caption" data-speaker="" data-start="1056.083000" data-stop="1062.313000">So one way I could improve is to take the links from Emacs News</span> <span class="audio-time caption" data-speaker="" data-start="1062.513000" data-stop="1066.319000">on a more regular basis and put them into the Emacs Wiki</span> <span class="audio-time caption" data-speaker="" data-start="1066.359000" data-stop="1070.065000">pages. There's like a page for newbies for example and so</span> <span class="audio-time caption" data-speaker="" data-start="1070.145000" data-stop="1076.542000">forth because... Not that newbies will come across those pages</span> <span class="audio-time caption" data-speaker="" data-start="1076.622000" data-stop="1080.005000">themselves, sometimes they do, but also because it makes it</span> <span class="audio-time caption" data-speaker="" data-start="1080.145000" data-stop="1083.769000">easier for other people to say, oh yeah, you want to learn</span> <span class="audio-time caption" data-speaker="" data-start="1083.809000" data-stop="1085.911000">more about that? Check out this page that has all these</span> <span class="audio-time caption" data-speaker="" data-start="1085.971000" data-stop="1091.196000">organized resources already. And one of the reasons why</span> <span class="audio-time caption" data-speaker="" data-start="1091.257000" data-stop="1095.221000">that's useful is because something that new people</span> <span class="audio-time caption" data-speaker="" data-start="1095.281000" data-stop="1098.904000">struggle with is figuring out what's close, what's close</span> <span class="audio-time caption" data-speaker="" data-start="1098.944000" data-stop="1104.952000">by... They know this, what's easy for them to</span> <span class="audio-time caption" data-speaker="" data-start="1104.992000" data-stop="1110.881000">get to? What's something they can learn with not much more</span> <span class="audio-time caption" data-speaker="" data-start="1111.041000" data-stop="1117.130000">effort? And this, I think, is one of the things that having a</span> <span class="audio-time caption" data-speaker="" data-start="1118.131000" data-stop="1121.296000">mentor helps with, or having a coach helps with. Because you</span> <span class="audio-time caption" data-speaker="" data-start="1121.336000" data-stop="1124.561000">can describe what it is that you're doing, or what it is that</span> <span class="audio-time caption" data-speaker="" data-start="1124.581000" data-stop="1129.448000">you're trying, and then they can say, oh yeah, you should</span> <span class="audio-time caption" data-speaker="" data-start="1129.468000" data-stop="1133.582000">check this out. I've started to try to do some of that.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1133.000000">00:18:53</span> <strong>Mapping resources</strong></div><span class="audio-time caption" data-speaker="" data-start="1133.583000" data-stop="1135.266000">Let me bring up my map here.</span> <span class="audio-time caption" data-speaker="" data-start="1141.474000" data-stop="1142.676000">There you go. Beginner map.</span> <span class="audio-time caption" data-speaker="" data-start="1148.323000" data-stop="1150.967000">Clearly, that Org Babel needs to be connected to Org Mode.</span> <span class="audio-time caption" data-speaker="" data-start="1152.529000" data-stop="1156.594000">This, again, is not something that I think... Oh, there's</span> <span class="audio-time caption" data-speaker="" data-start="1156.634000" data-stop="1159.538000">actually another Org Babel over there. I need to deduplicate</span> <span class="audio-time caption" data-speaker="" data-start="1159.578000" data-stop="1164.136000">these things. But I'm trying to figure out how to represent</span> <span class="audio-time caption" data-speaker="" data-start="1164.156000" data-stop="1167.140000">the connections. Kind of like those choose your</span> <span class="audio-time caption" data-speaker="" data-start="1167.160000" data-stop="1170.123000">own adventure books, where you might only have some</span> <span class="audio-time caption" data-speaker="" data-start="1170.203000" data-stop="1173.086000">branching points to consider, so you're not overwhelmed by</span> <span class="audio-time caption" data-speaker="" data-start="1173.126000" data-stop="1176.990000">the whole graph. At the same time, you can sort of keep track</span> <span class="audio-time caption" data-speaker="" data-start="1177.070000" data-stop="1180.334000">of where you are. Does this thing still do the thing? Oh yeah,</span> <span class="audio-time caption" data-speaker="" data-start="1180.354000" data-stop="1185.239000">okay, okay. Alright, so this still does, in fact, keep track</span> <span class="audio-time caption" data-speaker="" data-start="1185.340000" data-stop="1192.941000">of what you clicked on. Okay, so I went through a lot of Emacs</span> <span class="audio-time caption" data-speaker="" data-start="1193.021000" data-stop="1196.666000">news links. I think those are the ones that were sort of</span> <span class="audio-time caption" data-speaker="" data-start="1197.327000" data-stop="1201.111000">beginner related. And then I started trying to organize</span> <span class="audio-time caption" data-speaker="" data-start="1201.171000" data-stop="1205.697000">them so that I can say, okay, all right, you've installed</span> <span class="audio-time caption" data-speaker="" data-start="1205.977000" data-stop="1210.439000">Emacs and Linux... I can go find Emacs installation</span> <span class="audio-time caption" data-speaker="" data-start="1210.519000" data-stop="1214.022000">instructions for other places. And then start to think,</span> <span class="audio-time caption" data-speaker="" data-start="1214.042000" data-stop="1218.006000">okay, from here, what are the kinds of things that people</span> <span class="audio-time caption" data-speaker="" data-start="1218.767000" data-stop="1228.616000">usually want to explore next? So, yeah, changing</span> <span class="audio-time caption" data-speaker="" data-start="1228.656000" data-stop="1231.719000">the colors is something that often people immediately want</span> <span class="audio-time caption" data-speaker="" data-start="1231.739000" data-stop="1239.023000">to do because they're used to a certain other look. And so, A</span> <span class="audio-time caption" data-speaker="" data-start="1239.064000" data-stop="1243.230000">tip and some resources, tips and resources, more things,</span> <span class="audio-time caption" data-speaker="" data-start="1243.250000" data-stop="1250.120000">back to the map, and so forth. So mapping the resources would</span> <span class="audio-time caption" data-speaker="" data-start="1250.160000" data-stop="1253.845000">theoretically help me or somebody else be able to say, okay,</span> <span class="audio-time caption" data-speaker="" data-start="1253.905000" data-stop="1257.871000">where are you in your learning journey? And what do you want</span> <span class="audio-time caption" data-speaker="" data-start="1257.891000" data-stop="1260.086000">to learn about next?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1260.000000">00:21:00</span> <strong>Clojure</strong></div><span class="audio-time caption" data-speaker="" data-start="1260.087000" data-stop="1263.932000">Jeff says perhaps Clojure is a route to</span> <span class="audio-time caption" data-speaker="" data-start="1264.092000" data-stop="1267.437000">Emacs for experts. I've heard it's the best IDE for that</span> <span class="audio-time caption" data-speaker="" data-start="1267.537000" data-stop="1271.863000">language. And I should mention that too, because</span> <span class="audio-time caption" data-speaker="" data-start="1273.826000" data-stop="1274.747000">Clojure...</span> <span class="audio-time caption" data-speaker="" data-start="1279.093000" data-stop="1282.337000">Am I no longer sharing?</span> <span class="audio-time caption" data-speaker="" data-start="1288.886000" data-stop="1290.723000">Okay. because</span> <span class="audio-time caption" data-speaker="" data-start="1294.690000" data-stop="1301.541000">Clojure. Yeah, it is so far I think still one of the, like</span> <span class="audio-time caption" data-speaker="" data-start="1301.661000" data-stop="1313.140000">Emacs is still one of the reference IDE for it. So that is,</span> <span class="audio-time caption" data-speaker="" data-start="1313.160000" data-stop="1316.865000">we see a lot of people come into Emacs because They're</span> <span class="audio-time caption" data-speaker="" data-start="1316.946000" data-stop="1321.292000">working at a Clojure shop and they basically want to use the</span> <span class="audio-time caption" data-speaker="" data-start="1321.352000" data-stop="1326.881000">same IDE that everybody else is already using there. Or</span> <span class="audio-time caption" data-speaker="" data-start="1327.041000" data-stop="1331.047000">they're getting into Clojure, they want to do work in</span> <span class="audio-time caption" data-speaker="" data-start="1331.127000" data-stop="1336.338000">Clojure, and so they're learning Emacs because because</span> <span class="audio-time caption" data-speaker="" data-start="1336.638000" data-stop="1341.226000">that's kind of the standard IDE for now. I think the State of</span> <span class="audio-time caption" data-speaker="" data-start="1341.246000" data-stop="1344.651000">the Clojure survey recently said there are other editors</span> <span class="audio-time caption" data-speaker="" data-start="1344.792000" data-stop="1348.818000">gaining ground... More editors means more</span> <span class="audio-time caption" data-speaker="" data-start="1349.439000" data-stop="1353.205000">places to learn, more places to pick up ideas from, so that's</span> <span class="audio-time caption" data-speaker="" data-start="1353.266000" data-stop="1357.713000">not terrible. It's okay too. But that's</span> <span class="audio-time caption" data-speaker="" data-start="1357.733000" data-stop="1361.642000">definitely a reason why people come into Emacs. because</span> <span class="audio-time caption" data-speaker="" data-start="1363.204000" data-stop="1365.746000">it's the standard way of doing things.</span> <span class="audio-time caption" data-speaker="" data-start="1369.030000" data-stop="1372.874000">And of course, Org is wonderful, and Magit is wonderful, and</span> <span class="audio-time caption" data-speaker="" data-start="1372.914000" data-stop="1377.558000">people come into it just for those reasons. That is okay. And</span> <span class="audio-time caption" data-speaker="" data-start="1377.578000" data-stop="1379.921000">sometimes people use it only for those reasons, and that is</span> <span class="audio-time caption" data-speaker="" data-start="1380.021000" data-stop="1382.963000">also totally okay.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1382.000000">00:23:02</span> <strong>Emacs News and a map</strong></div><span class="audio-time caption" data-speaker="" data-start="1382.964000" data-stop="1384.465000">Okay, so Emacs News is one of the things</span> <span class="audio-time caption" data-speaker="" data-start="1384.485000" data-stop="1389.370000">that I can fiddle with, and that can go into a map. And the map</span> <span class="audio-time caption" data-speaker="" data-start="1389.450000" data-stop="1394.142000">is more... Again, it's not quite in the state where newbies</span> <span class="audio-time caption" data-speaker="" data-start="1394.202000" data-stop="1397.226000">might navigate it, but if I were theoretically to have</span> <span class="audio-time caption" data-speaker="" data-start="1397.667000" data-stop="1402.894000">office hours, for example, then I might use that to quickly</span> <span class="audio-time caption" data-speaker="" data-start="1402.954000" data-stop="1406.198000">go through, like, okay, where are you? What do you want to</span> <span class="audio-time caption" data-speaker="" data-start="1406.238000" data-stop="1410.844000">learn? And here's some resources that other people have</span> <span class="audio-time caption" data-speaker="" data-start="1410.884000" data-stop="1415.390000">shared that might be helpful. And then theoretically,</span> <span class="audio-time caption" data-speaker="" data-start="1415.410000" data-stop="1418.559000">maybe they will keep exploring from there.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1418.000000">00:23:38</span> <strong>Cheat sheets</strong></div><span class="audio-time caption" data-speaker="" data-start="1418.560000" data-stop="1419.761000">Oh yes, the How to</span> <span class="audio-time caption" data-speaker="" data-start="1419.801000" data-stop="1426.829000">Learn Emacs cheat sheet that I made ages ago. Learn Emacs. I</span> <span class="audio-time caption" data-speaker="" data-start="1426.949000" data-stop="1433.776000">think this is 2003. No, no, it's 2013, it feels like. I should</span> <span class="audio-time caption" data-speaker="" data-start="1433.836000" data-stop="1436.519000">include here. How to learn Emacs.</span> <span class="audio-time caption" data-speaker="" data-start="1441.204000" data-stop="1448.331000">Yeah, 2013. Okay. And the idea there was kind of a one page</span> <span class="audio-time caption" data-speaker="" data-start="1449.053000" data-stop="1456.103000">sheet with sort of like the most common things.</span> <span class="audio-time caption" data-speaker="" data-start="1456.484000" data-stop="1458.667000">What the difference is between a frame and a window, and</span> <span class="audio-time caption" data-speaker="" data-start="1459.668000" data-stop="1462.893000">what's the mode line, and some pointers to other things that</span> <span class="audio-time caption" data-speaker="" data-start="1463.013000" data-stop="1470.724000">you might want to learn. And this was... I think this was</span> <span class="audio-time caption" data-speaker="" data-start="1470.804000" data-stop="1480.553000">before starter kits like Doom Emacs. I don't even have Oh,</span> <span class="audio-time caption" data-speaker="" data-start="1480.573000" data-stop="1484.702000">this is an old URL. In fact, I should go change that. I don't</span> <span class="audio-time caption" data-speaker="" data-start="1484.742000" data-stop="1488.170000">even have a recommendation to learn Org first</span> <span class="audio-time caption" data-speaker="" data-start="1488.210000" data-stop="1491.236000">thing. Take your notes in it. Oh, no, I do have. See, it's Org</span> <span class="audio-time caption" data-speaker="" data-start="1491.256000" data-stop="1496.488000">Mode. Is it Org-mode? Is that even still? Yeah, okay,</span> <span class="audio-time caption" data-speaker="" data-start="1496.508000" data-stop="1500.356000">okay, that's still on it. Thank goodness. Okay, okay, here</span> <span class="audio-time caption" data-speaker="" data-start="1500.396000" data-stop="1508.899000">we go. Let's add that as a thing. So that's still being</span> <span class="audio-time caption" data-speaker="" data-start="1508.960000" data-stop="1515.030000">recommended, but the idea of having a single page cheat</span> <span class="audio-time caption" data-speaker="" data-start="1515.090000" data-stop="1517.694000">sheet, there are actually quite a few of these cheat sheets</span> <span class="audio-time caption" data-speaker="" data-start="1517.774000" data-stop="1524.305000">anyway. Making one yourself is always a good idea. It's a</span> <span class="audio-time caption" data-speaker="" data-start="1524.345000" data-stop="1530.602000">good way to deal with the overwhelm, so cheat sheet. Jumping</span> <span class="audio-time caption" data-speaker="" data-start="1530.902000" data-stop="1533.046000">all over the place. That's just how my brain works. It's</span> <span class="audio-time caption" data-speaker="" data-start="1533.186000" data-stop="1540.478000">okay. Okay, so the things that I can fiddle with. Emacs news.</span> <span class="audio-time caption" data-speaker="" data-start="1542.742000" data-stop="1547.891000">I have a beginner section up there. I could add an</span> <span class="audio-time caption" data-speaker="" data-start="1548.031000" data-stop="1548.772000">introduction</span> <span class="audio-time caption" data-speaker="" data-start="1552.038000" data-stop="1552.458000">to do.</span> <span class="audio-time caption" data-speaker="" data-start="1555.383000" data-stop="1556.365000">Add intro.</span> <span class="audio-time caption" data-speaker="" data-start="1559.855000" data-stop="1562.779000">So when people get to Emacs News,</span> <span class="audio-time caption" data-speaker="" data-start="1565.983000" data-stop="1570.189000">can I get to it? Yes. Right now, there's just this very basic</span> <span class="audio-time caption" data-speaker="" data-start="1570.249000" data-stop="1575.456000">subscription options, feed XML, mailing list, index.org.</span> <span class="audio-time caption" data-speaker="" data-start="1575.856000" data-stop="1579.820000">But I can add a little more information here for new users. to</span> <span class="audio-time caption" data-speaker="" data-start="1579.840000" data-stop="1585.206000">say, okay, this is how you set up elfeed.</span> <span class="audio-time caption" data-speaker="" data-start="1585.266000" data-stop="1588.610000">This is what Emacs News is. It's a little bit overwhelming,</span> <span class="audio-time caption" data-speaker="" data-start="1588.630000" data-stop="1591.814000">but you can use it for... you can keep an eye out for the</span> <span class="audio-time caption" data-speaker="" data-start="1591.854000" data-stop="1595.538000">beginner thing. You can look through the archives for</span> <span class="audio-time caption" data-speaker="" data-start="1595.658000" data-stop="1600.504000">beginner related links. And you can also start to look for</span> <span class="audio-time caption" data-speaker="" data-start="1601.165000" data-stop="1604.228000">recent resources related to the topics that you're</span> <span class="audio-time caption" data-speaker="" data-start="1604.308000" data-stop="1609.234000">interested in. So that's something I can do.</span> <span class="audio-time caption" data-speaker="" data-start="1611.458000" data-stop="1613.133000">There's probably an interesting way I can mark that in</span> <span class="audio-time caption" data-speaker="" data-start="1613.134000" data-stop="1619.467000">the audio. "Hey Sacha, do this."</span> <span class="audio-time caption" data-speaker="" data-start="1619.468000" data-stop="1624.320000">So that's one thing I can work on.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1624.000000">00:27:04</span> <strong>Meetups</strong></div><span class="audio-time caption" data-speaker="" data-start="1624.321000" data-stop="1630.676000">Meetups are great for newcomers because you can get over that</span> <span class="audio-time caption" data-speaker="" data-start="1631.396000" data-stop="1634.940000">challenge of isolation, especially when they realize that</span> <span class="audio-time caption" data-speaker="" data-start="1635.040000" data-stop="1638.543000">it's totally okay to ask questions at meetups and show the</span> <span class="audio-time caption" data-speaker="" data-start="1638.623000" data-stop="1641.801000">things that you have that aren't working and then other</span> <span class="audio-time caption" data-speaker="" data-start="1641.841000" data-stop="1644.623000">people will help you think about them and figure something</span> <span class="audio-time caption" data-speaker="" data-start="1644.764000" data-stop="1651.951000">out. I've seen a fair bit of live debugging at places like</span> <span class="audio-time caption" data-speaker="" data-start="1652.291000" data-stop="1656.555000">Emacs Berlin and the Org Meetup.</span> <span class="audio-time caption" data-speaker="" data-start="1658.477000" data-stop="1664.103000">It's hard to ask questions sometimes on Reddit, although a</span> <span class="audio-time caption" data-speaker="" data-start="1664.123000" data-stop="1668.588000">lot of people do. It feels a little bit like Reddit is more</span> <span class="audio-time caption" data-speaker="" data-start="1668.728000" data-stop="1674.112000">effective as a help platform than Stack Exchange.</span> <span class="audio-time caption" data-speaker="" data-start="1676.895000" data-stop="1680.019000">But sometimes you need a bit more back and forth, and that's</span> <span class="audio-time caption" data-speaker="" data-start="1680.079000" data-stop="1683.423000">where the meetups can be helpful. So I guess the progression</span> <span class="audio-time caption" data-speaker="" data-start="1683.463000" data-stop="1688.129000">there is ask on help-gnu-emacs or, well, ask on your</span> <span class="audio-time caption" data-speaker="" data-start="1688.210000" data-stop="1691.594000">project-specific mailing list or help-gnu-emacs or Reddit</span> <span class="audio-time caption" data-speaker="" data-start="1692.275000" data-stop="1695.739000">or the Emacs subreddit. And if it feels like it needs a bit</span> <span class="audio-time caption" data-speaker="" data-start="1695.779000" data-stop="1699.464000">more back and forth or showing things, the meetups are</span> <span class="audio-time caption" data-speaker="" data-start="1699.524000" data-stop="1703.350000">helpful for that. I've also seen people asking questions in</span> <span class="audio-time caption" data-speaker="" data-start="1703.370000" data-stop="1707.795000">Mastodon, which is very nice. But Mastodon is a little bit</span> <span class="audio-time caption" data-speaker="" data-start="1707.815000" data-stop="1711.800000">more of a technical thing, I think. It's not something that a</span> <span class="audio-time caption" data-speaker="" data-start="1711.840000" data-stop="1716.385000">lot of newbies will be on. Anyway,</span> <span class="audio-time caption" data-speaker="" data-start="1716.405000" data-stop="1721.171000">the meetups. People come across meetups. Not that often.</span> <span class="audio-time caption" data-speaker="" data-start="1721.892000" data-stop="1724.735000">But Emacs News helps with coming across meetups because I</span> <span class="audio-time caption" data-speaker="" data-start="1724.835000" data-stop="1733.868000">include upcoming events in the first section here. And so</span> <span class="audio-time caption" data-speaker="" data-start="1734.368000" data-stop="1739.515000">what I should do is in the intro, I should also mention how to</span> <span class="audio-time caption" data-speaker="" data-start="1739.555000" data-stop="1740.296000">subscribe.</span> <span class="audio-time caption" data-speaker="" data-start="1745.443000" data-stop="1749.608000">Meetups are great. Inspiration.</span> <span class="audio-time caption" data-speaker="" data-start="1753.373000" data-stop="1764.395000">Okay. And that's there. We run the Emacs Big Blue</span> <span class="audio-time caption" data-speaker="" data-start="1764.435000" data-stop="1768.862000">Button web conferencing server year-round. We don't leave</span> <span class="audio-time caption" data-speaker="" data-start="1768.902000" data-stop="1771.105000">it scaled up all the time because that would be expensive,</span> <span class="audio-time caption" data-speaker="" data-start="1771.246000" data-stop="1774.491000">but we usually keep it as a Nanode so that I don't have to spend</span> <span class="audio-time caption" data-speaker="" data-start="1774.511000" data-stop="1780.099000">the week before the conference scrambling to get</span> <span class="audio-time caption" data-speaker="" data-start="1780.199000" data-stop="1785.968000">everything sorted out and hoping that the latest install</span> <span class="audio-time caption" data-speaker="" data-start="1785.988000" data-stop="1789.554000">script didn't break anything. So it's fine. We</span> <span class="audio-time caption" data-speaker="" data-start="1789.574000" data-stop="1792.478000">just run it year-round and then scale it up for</span> <span class="audio-time caption" data-speaker="" data-start="1792.538000" data-stop="1798.085000">meetups. Right now it's scaled up monthly for the Emacs</span> <span class="audio-time caption" data-speaker="" data-start="1798.205000" data-stop="1805.514000">Berlin, Emacs APAC, and Org Meetup meetups. But if there are</span> <span class="audio-time caption" data-speaker="" data-start="1805.594000" data-stop="1809.899000">other meetups that would like to have a free and open source</span> <span class="audio-time caption" data-speaker="" data-start="1810.040000" data-stop="1813.824000">software platform to do it, we can certainly do</span> <span class="audio-time caption" data-speaker="" data-start="1813.844000" data-stop="1817.869000">that. We can add them to the list there. Anyway, so that's</span> <span class="audio-time caption" data-speaker="" data-start="1817.949000" data-stop="1819.830000">Emacs. It goes into Emacs News.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1819.000000">00:30:19</span> <strong>Emacs Calendar</strong></div><span class="audio-time caption" data-speaker="" data-start="1819.831000" data-stop="1821.714000">There is also an ical for it,</span> <span class="audio-time caption" data-speaker="" data-start="1823.677000" data-stop="1825.900000">which I could mention more prominently.</span> <span class="audio-time caption" data-speaker="" data-start="1829.245000" data-stop="1833.051000">Oh yeah, I actually do already mention it fairly</span> <span class="audio-time caption" data-speaker="" data-start="1833.111000" data-stop="1835.495000">prominently over there, so that's fine. Although I guess</span> <span class="audio-time caption" data-speaker="" data-start="1835.735000" data-stop="1839.581000">some people might not know that ical files can go into your</span> <span class="audio-time caption" data-speaker="" data-start="1839.741000" data-stop="1846.899000">calendar. So I should mention calendar in this intro for</span> <span class="audio-time caption" data-speaker="" data-start="1846.939000" data-stop="1849.863000">newbies that I should write, kind of like how to make the most</span> <span class="audio-time caption" data-speaker="" data-start="1849.903000" data-stop="1855.131000">of Emacs News. And that actually takes, is generated by this</span> <span class="audio-time caption" data-speaker="" data-start="1855.371000" data-stop="1864.965000">Emacs calendar thing. So that lists upcoming events. I also</span> <span class="audio-time caption" data-speaker="" data-start="1865.105000" data-stop="1872.555000">update the Emacs Wiki page for it with a copy of the thing, and</span> <span class="audio-time caption" data-speaker="" data-start="1872.976000" data-stop="1876.678000">I generate HTML calendars as well, in case that's what</span> <span class="audio-time caption" data-speaker="" data-start="1876.718000" data-stop="1881.825000">people prefer. Calendars. Calendars all over the place. I</span> <span class="audio-time caption" data-speaker="" data-start="1882.025000" data-stop="1885.410000">even generate org files in a gazillion different time</span> <span class="audio-time caption" data-speaker="" data-start="1885.450000" data-stop="1889.835000">zones, so that people can just include that. And I think then</span> <span class="audio-time caption" data-speaker="" data-start="1889.876000" data-stop="1893.801000">the time zones are all sorted out automatically. Because</span> <span class="audio-time caption" data-speaker="" data-start="1893.901000" data-stop="1896.464000">we... I don't think we still have time zone... We have time</span> <span class="audio-time caption" data-speaker="" data-start="1896.544000" data-stop="1902.953000">zone support yet in Org Mode? Anyway, it's there. Meetups.</span> <span class="audio-time caption" data-speaker="" data-start="1902.973000" data-stop="1907.375000">Where was I with... Yes. I need to add this to the intro. Let's</span> <span class="audio-time caption" data-speaker="" data-start="1907.895000" data-stop="1912.720000">highlight that in the thing that I need to do. Emacs news.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1914.000000">00:31:54</span> <strong>EmacsConf</strong></div><span class="audio-time caption" data-speaker="" data-start="1914.862000" data-stop="1918.505000">EmacsConf is more of a, again, it's an inspiration sort of</span> <span class="audio-time caption" data-speaker="" data-start="1918.585000" data-stop="1918.886000">thing.</span> <span class="audio-time caption" data-speaker="" data-start="1922.890000" data-stop="1929.736000">We like to start the day with more beginner-oriented talks.</span> <span class="audio-time caption" data-speaker="" data-start="1929.756000" data-stop="1934.475000">So I'm always looking out for presentations that that makes</span> <span class="audio-time caption" data-speaker="" data-start="1934.535000" data-stop="1938.800000">sense to share and encourages people to kind of get into</span> <span class="audio-time caption" data-speaker="" data-start="1939.441000" data-stop="1944.186000">Emacs less slowly or workflows for Org Mode that can inspire</span> <span class="audio-time caption" data-speaker="" data-start="1944.226000" data-stop="1947.770000">them to try it out and make it a little bit</span> <span class="audio-time caption" data-speaker="" data-start="1947.810000" data-stop="1954.217000">more manageable. So that's in a yearly kind of schedule,</span> <span class="audio-time caption" data-speaker="" data-start="1954.657000" data-stop="1957.200000">students, rhythm.</span> <span class="audio-time caption" data-speaker="" data-start="1958.501000" data-stop="1963.494000">And so I guess the Emacs News and Emacs Conf ones are</span> <span class="audio-time caption" data-speaker="" data-start="1963.534000" data-stop="1968.960000">definitely more about inspiration, giving people reasons</span> <span class="audio-time caption" data-speaker="" data-start="1969.040000" data-stop="1972.404000">to stick with the learning curve because they can see what</span> <span class="audio-time caption" data-speaker="" data-start="1972.524000" data-stop="1978.110000">Emacs can do in other people's hands. And the meetups sort of</span> <span class="audio-time caption" data-speaker="" data-start="1978.190000" data-stop="1982.294000">help with the getting over the hump of getting a</span> <span class="audio-time caption" data-speaker="" data-start="1983.335000" data-stop="1986.058000">basic working environment going. Although actually</span> <span class="audio-time caption" data-speaker="" data-start="1986.098000" data-stop="1988.300000">people don't usually ask about basic working environments</span> <span class="audio-time caption" data-speaker="" data-start="1988.801000" data-stop="1992.042000">because they feel maybe a bit embarrassed. About asking</span> <span class="audio-time caption" data-speaker="" data-start="1992.623000" data-stop="1993.164000">about such?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1995.000000">00:33:15</span> <strong>Where people ask for help</strong></div><span class="audio-time caption" data-speaker="" data-start="1995.928000" data-stop="1999.072000">I see more of those, like, okay, I'm trying to set up this, you</span> <span class="audio-time caption" data-speaker="" data-start="1999.092000" data-stop="2003.138000">know, this LSP thing, and I'm getting stuck on this thing. I</span> <span class="audio-time caption" data-speaker="" data-start="2003.198000" data-stop="2006.583000">see more of that on Reddit. It might also be in help-gnu-emacs,</span> <span class="audio-time caption" data-speaker="" data-start="2006.663000" data-stop="2009.307000">but I haven't actually been reading help-gnu-emacs, because</span> <span class="audio-time caption" data-speaker="" data-start="2009.908000" data-stop="2012.592000">I feel like it might be a high-traffic mailing list. I should</span> <span class="audio-time caption" data-speaker="" data-start="2012.652000" data-stop="2015.736000">find out, okay, what's help-gnu-emacs like these days?</span> <span class="audio-time caption" data-speaker="" data-start="2022.702000" data-stop="2024.905000">Because I want people to be able to...</span> <span class="audio-time caption" data-speaker="" data-start="2027.968000" data-stop="2030.691000">Okay.</span> <span class="audio-time caption" data-speaker="" data-start="2034.496000" data-stop="2048.592000">So this, I feel like, is more of... It tends to be more of a...</span> <span class="audio-time caption" data-speaker="" data-start="2050.764000" data-stop="2059.995000">More of an intermediate resource at the moment.</span> <span class="audio-time caption" data-speaker="" data-start="2060.014000" data-stop="2063.998000">Now we need a place where... Okay, so Reddit seems to be a</span> <span class="audio-time caption" data-speaker="" data-start="2064.319000" data-stop="2067.902000">place where people are not intimidated by the thought of</span> <span class="audio-time caption" data-speaker="" data-start="2068.003000" data-stop="2073.688000">posting beginner questions. And there's also Emacs Stack</span> <span class="audio-time caption" data-speaker="" data-start="2073.748000" data-stop="2079.876000">Exchange, but I don't think people use that as much these</span> <span class="audio-time caption" data-speaker="" data-start="2079.896000" data-stop="2093.463000">days. Some...</span> <span class="audio-time caption" data-speaker="" data-start="2093.483000" data-stop="2099.451000">Maybe...</span> <span class="audio-time caption" data-speaker="" data-start="2099.471000" data-stop="2102.536000">I think there's... Again, this is sort of still... Still</span> <span class="audio-time caption" data-speaker="" data-start="2102.616000" data-stop="2107.763000">kind of intermediate-ish questions. Maybe what I should do</span> <span class="audio-time caption" data-speaker="" data-start="2107.803000" data-stop="2109.966000">is...</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2112.000000">00:35:12</span> <strong>Emacs Clinic?</strong></div><span class="audio-time caption" data-speaker="" data-start="2112.292000" data-stop="2116.177000">This actually set up kind of that Emacs clinic sort of idea,</span> <span class="audio-time caption" data-speaker="" data-start="2116.998000" data-stop="2120.021000">which could be Thursday. Tomorrow could be a good time to</span> <span class="audio-time caption" data-speaker="" data-start="2120.061000" data-stop="2122.043000">experiment with it. Okay.</span> <span class="audio-time caption" data-speaker="" data-start="2125.367000" data-stop="2129.572000">Whenever my iPad display times out, the UX screen mirroring</span> <span class="audio-time caption" data-speaker="" data-start="2129.833000" data-stop="2134.418000">becomes unhappy. So let me go restart that.</span> <span class="audio-time caption" data-speaker="" data-start="2143.173000" data-stop="2145.617000">I need to configure a longer timeout.</span> <span class="audio-time caption" data-speaker="" data-start="2151.987000" data-stop="2158.737000">Let me kill that all. Kill all uxplay. All right, let's try</span> <span class="audio-time caption" data-speaker="" data-start="2158.797000" data-stop="2161.541000">that again. Once more with feeling.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2169.000000">00:36:09</span> <strong>My TODOs</strong></div><span class="audio-time caption" data-speaker="" data-start="2169.133000" data-stop="2174.735000">Okay. So that's probably my big to-do out of this, is Emacs</span> <span class="audio-time caption" data-speaker="" data-start="2174.795000" data-stop="2179.523000">news and how to learn Emacs. Both tend to be starting points.</span> <span class="audio-time caption" data-speaker="" data-start="2179.603000" data-stop="2182.367000">Emacs news more than how to learn Emacs, since how to learn</span> <span class="audio-time caption" data-speaker="" data-start="2182.447000" data-stop="2184.771000">Emacs is a little bit dated and I need to update the URL</span> <span class="audio-time caption" data-speaker="" data-start="2184.991000" data-stop="2198.813000">anyway. Update URL.</span> <span class="audio-time caption" data-speaker="" data-start="2200.801000" data-stop="2204.725000">Where was I going with this?</span> <span class="audio-time caption" data-speaker="" data-start="2204.745000" data-stop="2215.637000">Anita, what was I just talking about? And the</span> <span class="audio-time caption" data-speaker="" data-start="2215.757000" data-stop="2220.702000">inspiration part is actually also useful for encouraging</span> <span class="audio-time caption" data-speaker="" data-start="2220.982000" data-stop="2225.187000">more people to try out Emacs in the first place. So that is</span> <span class="audio-time caption" data-speaker="" data-start="2227.489000" data-stop="2228.530000">part of the journey.</span> <span class="audio-time caption" data-speaker="" data-start="2239.090000" data-stop="2242.754000">Usually it's curiosity drawing people in. Sometimes it's</span> <span class="audio-time caption" data-speaker="" data-start="2244.276000" data-stop="2246.058000">someone saying, I'm your professor, we're going to use</span> <span class="audio-time caption" data-speaker="" data-start="2246.098000" data-stop="2250.783000">this. But usually it's curiosity drawing people into</span> <span class="audio-time caption" data-speaker="" data-start="2250.883000" data-stop="2251.264000">Emacs.</span> <span class="audio-time caption" data-speaker="" data-start="2254.648000" data-stop="2258.933000">So if I wanted to write a blog post about or a reflection about</span> <span class="audio-time caption" data-speaker="" data-start="2259.113000" data-stop="2264.499000">what I can do to help people get into Emacs more effectively,</span> <span class="audio-time caption" data-speaker="" data-start="2266.081000" data-stop="2274.795000">I'm still kind of focusing... I still tend to focus on the</span> <span class="audio-time caption" data-speaker="" data-start="2274.895000" data-stop="2277.037000">intermediate part because...</span> <span class="audio-time caption" data-speaker="" data-start="2280.201000" data-stop="2285.788000">Why do I? Because that's the fun part for me. When you can</span> <span class="audio-time caption" data-speaker="" data-start="2285.828000" data-stop="2290.094000">start to customize Emacs to fit what you want. But in order</span> <span class="audio-time caption" data-speaker="" data-start="2290.154000" data-stop="2293.077000">for people to get to that point, they have to be able to get</span> <span class="audio-time caption" data-speaker="" data-start="2293.118000" data-stop="2296.241000">Emacs to the point where they can use it for their day-to-day</span> <span class="audio-time caption" data-speaker="" data-start="2296.281000" data-stop="2301.327000">stuff. And then they will want to spend more time in it, and</span> <span class="audio-time caption" data-speaker="" data-start="2301.347000" data-stop="2306.356000">then customize it to their particular needs. So, if my evil</span> <span class="audio-time caption" data-speaker="" data-start="2306.416000" data-stop="2309.041000">plan is to continue enjoying the cool stuff that people come</span> <span class="audio-time caption" data-speaker="" data-start="2309.101000" data-stop="2315.393000">up with in Emacs, it does make sense for me to help people get</span> <span class="audio-time caption" data-speaker="" data-start="2315.613000" data-stop="2319.634000">their basic working environment set up.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2319.000000">00:38:39</span> <strong>Videos</strong></div><span class="audio-time caption" data-speaker="" data-start="2319.635000" data-stop="2321.116000">@benmezger says,</span> <span class="audio-time caption" data-speaker="" data-start="2321.577000" data-stop="2324.660000">there are quite some interesting YouTube channels to learn</span> <span class="audio-time caption" data-speaker="" data-start="2324.820000" data-stop="2329.765000">Emacs too. Yes, yes. There are great</span> <span class="audio-time caption" data-speaker="" data-start="2329.865000" data-stop="2332.948000">video series that people have done in the past. System</span> <span class="audio-time caption" data-speaker="" data-start="2332.988000" data-stop="2336.132000">Crafters is often recommended, although I think David has</span> <span class="audio-time caption" data-speaker="" data-start="2336.212000" data-stop="2341.877000">moved on to focusing on other things lately, like AI. But his</span> <span class="audio-time caption" data-speaker="" data-start="2342.818000" data-stop="2345.281000">videos on Doom Emacs, though, are</span> <span class="audio-time caption" data-speaker="" data-start="2347.423000" data-stop="2351.764000">still often recommended as resources. Video is helpful</span> <span class="audio-time caption" data-speaker="" data-start="2355.308000" data-stop="2361.315000">because it shows people how it fits together and how the</span> <span class="audio-time caption" data-speaker="" data-start="2361.375000" data-stop="2366.580000">workflow works. Things that are hard to see from articles</span> <span class="audio-time caption" data-speaker="" data-start="2366.961000" data-stop="2369.884000">and blog posts. Videos are a little bit frustrating</span> <span class="audio-time caption" data-speaker="" data-start="2369.924000" data-stop="2373.628000">sometimes because they are slow. You actually have to watch</span> <span class="audio-time caption" data-speaker="" data-start="2373.668000" data-stop="2380.737000">them. But I like the way that people have been posting Videos</span> <span class="audio-time caption" data-speaker="" data-start="2381.357000" data-stop="2386.524000">with detailed show notes in a literate programming style,</span> <span class="audio-time caption" data-speaker="" data-start="2386.884000" data-stop="2389.868000">with embedded snippets, and often they will even</span> <span class="audio-time caption" data-speaker="" data-start="2390.028000" data-stop="2394.914000">use this blog post as the starting point of or the final</span> <span class="audio-time caption" data-speaker="" data-start="2394.974000" data-stop="2398.578000">product of their video. I would like to be able to do more of</span> <span class="audio-time caption" data-speaker="" data-start="2398.619000" data-stop="2403.004000">these myself, but it may require that I learn how to organize</span> <span class="audio-time caption" data-speaker="" data-start="2403.064000" data-stop="2405.227000">my thoughts, which is part of this whole</span> <span class="audio-time caption" data-speaker="" data-start="2405.307000" data-stop="2408.350000">brainstorm things, and then ideally turn it into a blog post</span> <span class="audio-time caption" data-speaker="" data-start="2408.411000" data-stop="2411.812000">or series of blog posts. The videos are great because they</span> <span class="audio-time caption" data-speaker="" data-start="2411.872000" data-stop="2419.069000">help people show workflows, which is good for inspiring</span> <span class="audio-time caption" data-speaker="" data-start="2419.149000" data-stop="2422.176000">people to put in the effort to then go through the show notes</span> <span class="audio-time caption" data-speaker="" data-start="2422.677000" data-stop="2431.566000">and try the steps, but also kind of see other things that the</span> <span class="audio-time caption" data-speaker="" data-start="2431.606000" data-stop="2434.290000">person making the video might not have even mentioned.</span> <span class="audio-time caption" data-speaker="" data-start="2435.191000" data-stop="2438.275000">Often people will make a video, and a lot of the comments are</span> <span class="audio-time caption" data-speaker="" data-start="2438.295000" data-stop="2444.063000">like, what is that theme that they are using? Or they do this</span> <span class="audio-time caption" data-speaker="" data-start="2444.584000" data-stop="2447.188000">thing which changes the window configuration, and what is</span> <span class="audio-time caption" data-speaker="" data-start="2447.228000" data-stop="2452.375000">that? Delete other windows vertically. And the presenter</span> <span class="audio-time caption" data-speaker="" data-start="2452.415000" data-stop="2457.525000">might not even have thought of mentioning that. but because</span> <span class="audio-time caption" data-speaker="" data-start="2457.565000" data-stop="2460.350000">we are virtually looking over someone's shoulder, you get</span> <span class="audio-time caption" data-speaker="" data-start="2460.390000" data-stop="2465.158000">to see that. Ben continues, videos, indeed videos help show</span> <span class="audio-time caption" data-speaker="" data-start="2465.318000" data-stop="2469.244000">how powerful Emacs can be. Simply installing Emacs doesn't</span> <span class="audio-time caption" data-speaker="" data-start="2469.324000" data-stop="2472.008000">give you that viewpoint.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2472.000000">00:41:12</span> <strong>Learning curve</strong></div><span class="audio-time caption" data-speaker="" data-start="2472.009000" data-stop="2474.453000">So that's it. I think, especially</span> <span class="audio-time caption" data-speaker="" data-start="2474.553000" data-stop="2479.261000">since our learning curve is, remember that meme that got</span> <span class="audio-time caption" data-speaker="" data-start="2479.421000" data-stop="2483.307000">passed around before really memes were codified,</span> <span class="audio-time caption" data-speaker="" data-start="2483.347000" data-stop="2486.357000">invented? Where the learning curve of Emacs is kind of like</span> <span class="audio-time caption" data-speaker="" data-start="2486.397000" data-stop="2490.400000">this. This is the learning curve of Emacs. It's just very</span> <span class="audio-time caption" data-speaker="" data-start="2490.460000" data-stop="2499.068000">fractal. We need that inspiration to help us get through the</span> <span class="audio-time caption" data-speaker="" data-start="2499.248000" data-stop="2502.271000">afternoons of, ah, why doesn't this thing just break out of</span> <span class="audio-time caption" data-speaker="" data-start="2502.311000" data-stop="2506.374000">the box? Why do I need to write Emacs Lisp to configure this?</span> <span class="audio-time caption" data-speaker="" data-start="2507.235000" data-stop="2510.118000">It's definitely a very different expectation from many</span> <span class="audio-time caption" data-speaker="" data-start="2510.198000" data-stop="2513.370000">other editors, where you're just expected to either have</span> <span class="audio-time caption" data-speaker="" data-start="2513.490000" data-stop="2518.375000">it, or check a checkbox, and then it's there. But because</span> <span class="audio-time caption" data-speaker="" data-start="2518.495000" data-stop="2521.377000">Emacs, there's so many different ways to use Emacs, it's</span> <span class="audio-time caption" data-speaker="" data-start="2521.437000" data-stop="2522.999000">really hard to say, okay, this stuff is going to be</span> <span class="audio-time caption" data-speaker="" data-start="2523.039000" data-stop="2525.441000">hard-coded for everyone, or this stuff is going to be the</span> <span class="audio-time caption" data-speaker="" data-start="2526.021000" data-stop="2531.967000">easy way. Anyway, and people come into Emacs with all sorts</span> <span class="audio-time caption" data-speaker="" data-start="2532.007000" data-stop="2536.611000">of different expectations too, right? So</span> <span class="audio-time caption" data-speaker="" data-start="2536.651000" data-stop="2541.375000">it really helps to see other people use Emacs in a way that</span> <span class="audio-time caption" data-speaker="" data-start="2541.655000" data-stop="2545.521000">suits them And to know that it is possible to have something</span> <span class="audio-time caption" data-speaker="" data-start="2545.541000" data-stop="2546.622000">that suits you as well.</span> <span class="audio-time caption" data-speaker="" data-start="2549.606000" data-stop="2553.110000">So making more videos. I would like to get the hang of doing</span> <span class="audio-time caption" data-speaker="" data-start="2553.150000" data-stop="2559.016000">that also. But I like blog posts and I like transcripts. So I</span> <span class="audio-time caption" data-speaker="" data-start="2559.076000" data-stop="2561.960000">want to be able to improve my workflow for making these</span> <span class="audio-time caption" data-speaker="" data-start="2562.020000" data-stop="2567.199000">videos and live streams so that They also make sense to</span> <span class="audio-time caption" data-speaker="" data-start="2567.259000" data-stop="2571.144000">people who don't have the time to watch a video stream for one</span> <span class="audio-time caption" data-speaker="" data-start="2571.244000" data-stop="2576.050000">hour or whatever. And it would be great for the video to make</span> <span class="audio-time caption" data-speaker="" data-start="2576.110000" data-stop="2578.693000">sense even if you're not looking at the video directly, you</span> <span class="audio-time caption" data-speaker="" data-start="2578.713000" data-stop="2581.677000">know, to make the audio make sense in case you're listening</span> <span class="audio-time caption" data-speaker="" data-start="2581.717000" data-stop="2585.562000">to it like a podcast while you're washing the dishes or going</span> <span class="audio-time caption" data-speaker="" data-start="2585.622000" data-stop="2589.446000">for a walk.</span> <span class="audio-time caption" data-speaker="" data-start="2589.466000" data-stop="2590.508000">So blog posts</span> <span class="audio-time caption" data-speaker="" data-start="2593.071000" data-stop="2593.992000">and podcasts.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2601.000000">00:43:21</span> <strong>emacs.tv - TODO: Add more to the beginner tag, make a playlist</strong></div><span class="audio-time caption" data-speaker="" data-start="2601.025000" data-stop="2604.389000">Which reminds me that Emacs TV is a thing, although that's</span> <span class="audio-time caption" data-speaker="" data-start="2604.469000" data-stop="2607.472000">not super beginner-friendly in the sense that I can't just</span> <span class="audio-time caption" data-speaker="" data-start="2607.512000" data-stop="2611.397000">say, here's all the beginner-related topics. I</span> <span class="audio-time caption" data-speaker="" data-start="2611.417000" data-stop="2617.864000">should go back over the 3,000 plus videos over that and maybe</span> <span class="audio-time caption" data-speaker="" data-start="2617.964000" data-stop="2622.790000">index the beginner ones. Let's see what we got here anyway.</span> <span class="audio-time caption" data-speaker="" data-start="2622.830000" data-stop="2631.191000">Emacs TV. How many do we have now? Yeah, 3000 something. Do I</span> <span class="audio-time caption" data-speaker="" data-start="2631.231000" data-stop="2635.895000">have beginner? I do have beginner as a tag. 26 things flagged</span> <span class="audio-time caption" data-speaker="" data-start="2635.955000" data-stop="2639.779000">as beginners. Some of them are in different languages, but</span> <span class="audio-time caption" data-speaker="" data-start="2640.840000" data-stop="2646.786000">that seems like the sort of thing. That could be fun as a</span> <span class="audio-time caption" data-speaker="" data-start="2646.806000" data-stop="2649.229000">YouTube playlist, because people like to just play through</span> <span class="audio-time caption" data-speaker="" data-start="2649.249000" data-stop="2656.336000">a playlist. And then I can try to sort them, I guess?</span> <span class="audio-time caption" data-speaker="" data-start="2656.356000" data-stop="2658.758000">Maybe. Beginner playlist.</span> <span class="audio-time caption" data-speaker="" data-start="2662.113000" data-stop="2663.034000">Beginner playlist.</span> <span class="audio-time caption" data-speaker="" data-start="2670.282000" data-stop="2671.203000">That's another to-do.</span> <span class="audio-time caption" data-speaker="" data-start="2674.486000" data-stop="2676.568000">Okay. Interesting.</span> <span class="audio-time caption" data-speaker="" data-start="2679.672000" data-stop="2682.174000">This is great. I'm identifying a number of to-dos for</span> <span class="audio-time caption" data-speaker="" data-start="2682.194000" data-stop="2686.182000">myself. All right. Lifelong learning, which is how I want to</span> <span class="audio-time caption" data-speaker="" data-start="2686.202000" data-stop="2689.366000">take this idea of newbies and starter kits and apply it to</span> <span class="audio-time caption" data-speaker="" data-start="2689.586000" data-stop="2693.511000">everybody because many of the same problems that we run</span> <span class="audio-time caption" data-speaker="" data-start="2693.591000" data-stop="2698.497000">into, many same problems that newbies run into with regard</span> <span class="audio-time caption" data-speaker="" data-start="2698.577000" data-stop="2702.402000">to isolation and overwhelm and the balance between</span> <span class="audio-time caption" data-speaker="" data-start="2702.942000" data-stop="2707.368000">tinkering with your config and getting stuff done. Let's</span> <span class="audio-time caption" data-speaker="" data-start="2707.408000" data-stop="2709.450000">write that down somewhere.</span> <span class="audio-time caption" data-speaker="" data-start="2724.398000" data-stop="2729.325000">and Isolation.</span> <span class="audio-time caption" data-speaker="" data-start="2729.505000" data-stop="2730.005000">Unknowns.</span> <span class="audio-time caption" data-speaker="" data-start="2737.956000" data-stop="2741.741000">Okay, so four common problems that newbies run into.</span> <span class="audio-time caption" data-speaker="" data-start="2742.482000" data-stop="2747.869000">Isolation, overwhelm, balancing, tinkering with your</span> <span class="audio-time caption" data-speaker="" data-start="2747.889000" data-stop="2752.636000">setup and getting stuff done, and kind of getting the set</span> <span class="audio-time caption" data-speaker="" data-start="2752.676000" data-stop="2756.643000">like Dealing with unknowns.</span> <span class="audio-time caption" data-speaker="" data-start="2757.284000" data-stop="2763.075000">Let me turn down the filter. It's a little too strong.</span> <span class="audio-time caption" data-speaker="" data-start="2771.871000" data-stop="2775.678000">Now can I make hand gestures? Not really. Okay, I will tinker</span> <span class="audio-time caption" data-speaker="" data-start="2775.738000" data-stop="2780.117000">with that eventually. okay um the same kinds of problems</span> <span class="audio-time caption" data-speaker="" data-start="2780.157000" data-stop="2786.348000">that we run into even if we've been using Emacs for decades uh</span> <span class="audio-time caption" data-speaker="" data-start="2787.330000" data-stop="2791.939000">and this uh uh emerald that i'll uh establish in the video</span> <span class="audio-time caption" data-speaker="" data-start="2792.620000" data-stop="2796.786000">it's a lifelong journey uh okay so</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2796.000000">00:46:36</span> <strong>Isolation</strong></div><span class="audio-time caption" data-speaker="" data-start="2796.787000" data-stop="2798.951000">Isolation. Meetups help.</span> <span class="audio-time caption" data-speaker="" data-start="2799.613000" data-stop="2806.111000">But meetups are harder for people to get to. You might not</span> <span class="audio-time caption" data-speaker="" data-start="2806.151000" data-stop="2809.595000">find something that's the right schedule for you. I highly,</span> <span class="audio-time caption" data-speaker="" data-start="2809.635000" data-stop="2814.462000">highly recommend writing about your Emacs learning.</span> <span class="audio-time caption" data-speaker="" data-start="2815.303000" data-stop="2817.606000">Blogging is a great way to connect with other people who are</span> <span class="audio-time caption" data-speaker="" data-start="2817.646000" data-stop="2821.171000">interested in the same kinds of things. And we've got Planet</span> <span class="audio-time caption" data-speaker="" data-start="2821.271000" data-stop="2825.216000">Emacs Life. Ooh, I should write that down as a thing. Planet</span> <span class="audio-time caption" data-speaker="" data-start="2825.296000" data-stop="2826.057000">Emacs Life.</span> <span class="audio-time caption" data-speaker="" data-start="2833.512000" data-stop="2838.637000">And we've got Emacs News to help kind of keep the</span> <span class="audio-time caption" data-speaker="" data-start="2838.697000" data-stop="2844.522000">conversation circulating. So that's there.</span> <span class="audio-time caption" data-speaker="" data-start="2844.523000" data-stop="2849.387000">@Mtendethecreator says, what's up? What's up, @Mtendethecreator?</span> <span class="audio-time caption" data-speaker="" data-start="2849.388000" data-stop="2854.513000">Currently I am brain dumping various things</span> <span class="audio-time caption" data-speaker="" data-start="2854.514000" data-stop="2860.600000">for various ideas for the Emacs Carnival April.</span> <span class="audio-time caption" data-speaker="" data-start="2866.047000" data-stop="2867.669000">Okay, so isolation,</span> <span class="audio-time caption" data-speaker="" data-start="2870.573000" data-stop="2871.214000">overwhelm,</span> <span class="audio-time caption" data-speaker="" data-start="2873.977000" data-stop="2874.919000">balance of time,</span> <span class="audio-time caption" data-speaker="" data-start="2881.888000" data-stop="2887.976000">unknowns. So here I want to think about, okay, even for</span> <span class="audio-time caption" data-speaker="" data-start="2888.056000" data-stop="2892.822000">people who might not consider themselves as total newbies</span> <span class="audio-time caption" data-speaker="" data-start="2892.962000" data-stop="2897.757000">anymore, It's always good to keep a beginner's mind in Emacs</span> <span class="audio-time caption" data-speaker="" data-start="2897.777000" data-stop="2899.820000">because there's so much to learn. Just the other day, I was</span> <span class="audio-time caption" data-speaker="" data-start="2900.861000" data-stop="2905.586000">reading a discussion thread where one of the commenters was</span> <span class="audio-time caption" data-speaker="" data-start="2905.807000" data-stop="2908.329000">singing the praises of Org Remark, so now I have a new thing</span> <span class="audio-time caption" data-speaker="" data-start="2908.349000" data-stop="2912.034000">that I want to go figure out how to add to my workflow. There's</span> <span class="audio-time caption" data-speaker="" data-start="2912.054000" data-stop="2914.837000">always something interesting to tinker with and learn.</span> <span class="audio-time caption" data-speaker="" data-start="2917.120000" data-stop="2921.505000">Anyway, so everybody can benefit from the things that we can</span> <span class="audio-time caption" data-speaker="" data-start="2921.565000" data-stop="2926.078000">do in this area. Isolation, I'd strongly recommend</span> <span class="audio-time caption" data-speaker="" data-start="2926.118000" data-stop="2926.759000">blogging,</span> <span class="audio-time caption" data-speaker="" data-start="2929.983000" data-stop="2930.443000">Meetups</span> <span class="audio-time caption" data-speaker="" data-start="2933.206000" data-stop="2934.887000">This is where the aggregator goes in.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2934.000000">00:48:54</span> <strong>Overwhelm</strong></div><span class="audio-time caption" data-speaker="" data-start="2934.888000" data-stop="2937.131000">Overwhelm, figuring</span> <span class="audio-time caption" data-speaker="" data-start="2937.331000" data-stop="2938.673000">out how to take notes</span> <span class="audio-time caption" data-speaker="" data-start="2941.456000" data-stop="2946.342000">and how to bring up your notes... Customize interface</span> <span class="audio-time caption" data-speaker="" data-start="2954.067000" data-stop="2957.950000">So that's how people start to deal with that. Balance of</span> <span class="audio-time caption" data-speaker="" data-start="2958.030000" data-stop="2961.073000">time...</span> <span class="audio-time caption" data-speaker="" data-start="2961.093000" data-stop="2964.576000">I don't know. I think this is a much... This is an ongoing</span> <span class="audio-time caption" data-speaker="" data-start="2964.676000" data-stop="2971.202000">problem. And... Well, ongoing challenge. Because the...</span> <span class="audio-time caption" data-speaker="" data-start="2971.222000" data-stop="2973.584000">You know, tinkering with Emacs becomes more fun as you get</span> <span class="audio-time caption" data-speaker="" data-start="2973.704000" data-stop="2975.205000">used to it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2975.000000">00:49:35</span> <strong>IRC</strong></div><span class="audio-time caption" data-speaker="" data-start="2975.206000" data-stop="2977.808000">Oh, IRC. Yes, IRC. I should mention... We should</span> <span class="audio-time caption" data-speaker="" data-start="2977.828000" data-stop="2981.491000">definitely mention that. IRC. Helps with isolation and</span> <span class="audio-time caption" data-speaker="" data-start="2981.731000" data-stop="2982.572000">getting help.</span> <span class="audio-time caption" data-speaker="" data-start="2990.551000" data-stop="2997.821000">Although people also... like some... are they still having</span> <span class="audio-time caption" data-speaker="" data-start="2998.122000" data-stop="3002.868000">issues with spammers and needing to restrict the channel?</span> <span class="audio-time caption" data-speaker="" data-start="3003.970000" data-stop="3006.634000">I've been meaning to write a page that explains what to do in</span> <span class="audio-time caption" data-speaker="" data-start="3006.654000" data-stop="3009.317000">that situation. I should drop in to see what's going on</span> <span class="audio-time caption" data-speaker="" data-start="3009.418000" data-stop="3015.827000">there. Reddit, I think, is where people...</span> <span class="audio-time caption" data-speaker="" data-start="3015.847000" data-stop="3025.553000">Okay, I need to... Okay, let's label these things. A, B, C,</span> <span class="audio-time caption" data-speaker="" data-start="3025.873000" data-stop="3029.577000">and D. And this balance of time is actually related to</span> <span class="audio-time caption" data-speaker="" data-start="3029.617000" data-stop="3036.104000">getting a basic working environment started out. So if the</span> <span class="audio-time caption" data-speaker="" data-start="3036.224000" data-stop="3045.533000">reddit is good at A and C and also D actually.</span> <span class="audio-time caption" data-speaker="" data-start="3049.647000" data-stop="3053.131000">Isolation and balance of time. A little bit. People have to</span> <span class="audio-time caption" data-speaker="" data-start="3053.171000" data-stop="3056.576000">learn how to use pastebin and it's a little bit harder on IRC</span> <span class="audio-time caption" data-speaker="" data-start="3056.856000" data-stop="3061.782000">to say, oh yeah, this is the... People do pastebin</span> <span class="audio-time caption" data-speaker="" data-start="3062.943000" data-stop="3065.987000">the problem and then people sometimes do pastebin the</span> <span class="audio-time caption" data-speaker="" data-start="3066.027000" data-stop="3069.471000">solutions. Sometimes a lot of things can be handled by a</span> <span class="audio-time caption" data-speaker="" data-start="3069.511000" data-stop="3074.878000">quick question, so that's good. Okay, I said isolation.</span> <span class="audio-time caption" data-speaker="" data-start="3078.622000" data-stop="3084.232000">Balance of time is always still a problem, but people</span> <span class="audio-time caption" data-speaker="" data-start="3084.272000" data-stop="3085.915000">develop their own productivity</span> <span class="audio-time caption" data-speaker="" data-start="3088.419000" data-stop="3089.821000">prioritization type things.</span> <span class="audio-time caption" data-speaker="" data-start="3098.056000" data-stop="3099.398000">Structures? Frameworks?</span> <span class="audio-time caption" data-speaker="" data-start="3104.356000" data-stop="3108.240000">And for lifelong learning, this unknowns part becomes</span> <span class="audio-time caption" data-speaker="" data-start="3108.581000" data-stop="3113.506000">really interesting and powerful.</span> <span class="audio-time caption" data-speaker="" data-start="3116.650000" data-stop="3118.912000">Yeah, and this is where bumping into ideas</span> <span class="audio-time caption" data-speaker="" data-start="3124.839000" data-stop="3127.822000">helps. Through IRC, through Reddit,</span> <span class="audio-time caption" data-speaker="" data-start="3131.466000" data-stop="3134.385000">through all the Emacs News, etc.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3139.000000">00:52:19</span> <strong>Learning from other people's configs; TODO maybe a livestream?</strong></div><span class="audio-time caption" data-speaker="" data-start="3139.752000" data-stop="3143.417000">Charlie says, searching through GitHub for Emacs keywords</span> <span class="audio-time caption" data-speaker="" data-start="3143.497000" data-stop="3147.022000">to see how other people configure things helped my Emacs</span> <span class="audio-time caption" data-speaker="" data-start="3147.082000" data-stop="3152.389000">customization understanding. If Emacs customization is</span> <span class="audio-time caption" data-speaker="" data-start="3152.510000" data-stop="3156.615000">one of the things that helps people move from being a total</span> <span class="audio-time caption" data-speaker="" data-start="3156.695000" data-stop="3160.961000">newbie to an intermediate user, then maybe it makes sense to</span> <span class="audio-time caption" data-speaker="" data-start="3161.061000" data-stop="3166.675000">have and in addition to the clinics that I mentioned, some</span> <span class="audio-time caption" data-speaker="" data-start="3166.716000" data-stop="3169.919000">kind of a live stream where we just go read other people's</span> <span class="audio-time caption" data-speaker="" data-start="3169.980000" data-stop="3178.029000">configs and then talk about how to adapt it and show a</span> <span class="audio-time caption" data-speaker="" data-start="3178.049000" data-stop="3182.795000">demonstration of a way that fits into the workflow. I think</span> <span class="audio-time caption" data-speaker="" data-start="3182.915000" data-stop="3188.001000">that could be a lot of fun. I've been enjoying going through</span> <span class="audio-time caption" data-speaker="" data-start="3188.302000" data-stop="3194.232000">Prot and tecosaur's literate configurations, and slowly</span> <span class="audio-time caption" data-speaker="" data-start="3194.513000" data-stop="3197.597000">assimilating some of those snippets into my</span> <span class="audio-time caption" data-speaker="" data-start="3197.657000" data-stop="3202.765000">configuration. So it might be interesting for people to see</span> <span class="audio-time caption" data-speaker="" data-start="3203.406000" data-stop="3208.934000">more of that process of not just copying and pasting the</span> <span class="audio-time caption" data-speaker="" data-start="3208.974000" data-stop="3213.100000">code, but trying to figure out, okay, what can support me as I</span> <span class="audio-time caption" data-speaker="" data-start="3213.200000" data-stop="3217.025000">try to make this part of the way that I do things? Or how do I</span> <span class="audio-time caption" data-speaker="" data-start="3217.125000" data-stop="3222.922000">tweak it so that it's a blend of what they came up with and</span> <span class="audio-time caption" data-speaker="" data-start="3223.002000" data-stop="3228.829000">also what I want. So yeah, @mtendethecreator says, tsoding's config</span> <span class="audio-time caption" data-speaker="" data-start="3228.889000" data-stop="3234.776000">also. Yeah, whoever's config is posted, we can go through</span> <span class="audio-time caption" data-speaker="" data-start="3234.876000" data-stop="3238.321000">it. And then I can say, oh yeah, that's really cool.</span> <span class="audio-time caption" data-speaker="" data-start="3238.341000" data-stop="3241.244000">Like for example, reading Prot's config. I learned about</span> <span class="audio-time caption" data-speaker="" data-start="3241.464000" data-stop="3244.448000">delete-other-windows-vertically, which I think he had</span> <span class="audio-time caption" data-speaker="" data-start="3244.508000" data-stop="3251.832000">assigned to C-x !, like C-x !, I think, yeah, which is cool because</span> <span class="audio-time caption" data-speaker="" data-start="3251.892000" data-stop="3256.739000">it's like C-x 1 except it's shifted. So that</span> <span class="audio-time caption" data-speaker="" data-start="3256.779000" data-stop="3261.205000">teaches me about the function and also a convenient</span> <span class="audio-time caption" data-speaker="" data-start="3261.265000" data-stop="3265.692000">shortcut that makes sense it's easy to remember so reading</span> <span class="audio-time caption" data-speaker="" data-start="3265.732000" data-stop="3270.439000">through other people's config could be a thing that might be</span> <span class="audio-time caption" data-speaker="" data-start="3270.499000" data-stop="3275.526000">helpful for you to do and because again because video is</span> <span class="audio-time caption" data-speaker="" data-start="3275.566000" data-stop="3280.612000">annoying to go through if i can have my workflow for Adding</span> <span class="audio-time caption" data-speaker="" data-start="3280.752000" data-stop="3287.100000">chapter markers into it. Then I can jump into... Then people</span> <span class="audio-time caption" data-speaker="" data-start="3287.140000" data-stop="3288.701000">can jump to just a section.</span> <span class="audio-time caption" data-speaker="" data-start="3291.424000" data-stop="3294.468000">Charlie says, that sounds nice. I cherry picked a lot of</span> <span class="audio-time caption" data-speaker="" data-start="3294.588000" data-stop="3303.658000">Purcell's config as I hit modes I wanted to use, and then</span> <span class="audio-time caption" data-speaker="" data-start="3303.778000" data-stop="3308.543000">later I adapted it to use-package. And now it's mine. Yes.</span> <span class="audio-time caption" data-speaker="" data-start="3308.563000" data-stop="3313.977000">Yes, that's the... That's wonderful. That's the basic idea.</span> <span class="audio-time caption" data-speaker="" data-start="3314.037000" data-stop="3315.719000">That's one of the reasons why I love it when people share</span> <span class="audio-time caption" data-speaker="" data-start="3315.759000" data-stop="3320.826000">their configs. Okay, so that gives me plenty of things to do.</span> <span class="audio-time caption" data-speaker="" data-start="3323.009000" data-stop="3331.380000">And if I want to think then about this blog post...</span> <span class="audio-time caption" data-speaker="" data-start="3331.400000" data-stop="3335.101000">Let's write in a different color. I can use colors! Let's</span> <span class="audio-time caption" data-speaker="" data-start="3335.201000" data-stop="3339.786000">write in... Can I write in green? Okay. Okay. That's too...</span> <span class="audio-time caption" data-speaker="" data-start="3339.806000" data-stop="3342.929000">Okay. Blue looks... Blue looks linky. Let's write in...</span> <span class="audio-time caption" data-speaker="" data-start="3343.429000" data-stop="3351.337000">Okay. Maroon? Alright. What does this feel like? I have</span> <span class="audio-time caption" data-speaker="" data-start="3351.457000" data-stop="3354.120000">seven minutes before I should probably go check on the kid</span> <span class="audio-time caption" data-speaker="" data-start="3354.260000" data-stop="3357.463000">for maybe doing math together with her. She gets really</span> <span class="audio-time caption" data-speaker="" data-start="3357.503000" data-stop="3361.807000">bored in her math class, so I tried to do... I offered to do</span> <span class="audio-time caption" data-speaker="" data-start="3361.847000" data-stop="3366.360000">some math with her that's a little bit higher level. uh</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3367.000000">00:56:07</span> <strong>Discord?</strong></div><span class="audio-time caption" data-speaker="" data-start="3367.001000" data-stop="3370.126000">@mtendethecreator says please create a discord for your channel. IRC</span> <span class="audio-time caption" data-speaker="" data-start="3370.166000" data-stop="3374.833000">is cool but the new wave of devs prefer discord. Think about it.</span> <span class="audio-time caption" data-speaker="" data-start="3375.674000" data-stop="3379.500000">I know system crafters runs a discord for their community.</span> <span class="audio-time caption" data-speaker="" data-start="3380.261000" data-stop="3385.729000">Are there other discord places that emacs people hang out in?</span> <span class="audio-time caption" data-speaker="" data-start="3389.135000" data-stop="3390.036000">Yeah, there's like...</span> <span class="audio-time caption" data-speaker="" data-start="3392.699000" data-stop="3395.621000">I have to look into whether it's possible.</span> <span class="audio-time caption" data-speaker="" data-start="3395.622000" data-stop="3403.449000">@DavidMannMD says, I can highly recommend Prot's book on Emacs Lisp.</span> <span class="audio-time caption" data-speaker="" data-start="3403.450000" data-stop="3430.229000">Yes.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3430.000000">00:57:10</span> <strong>Thinking about the blog posts</strong></div><span class="audio-time caption" data-speaker="" data-start="3430.230000" data-stop="3433.997000">So this sounds like maybe there's a blog post here</span> <span class="audio-time caption" data-speaker="" data-start="3434.277000" data-stop="3445.137000">about the factors that people... Like, trying to give some</span> <span class="audio-time caption" data-speaker="" data-start="3445.377000" data-stop="3451.889000">basic recommendations on where people... If this is your</span> <span class="audio-time caption" data-speaker="" data-start="3451.929000" data-stop="3454.934000">background, this is why we make this recommendation. These</span> <span class="audio-time caption" data-speaker="" data-start="3454.974000" data-stop="3457.638000">are the recommendations people often make. And this is why.</span> <span class="audio-time caption" data-speaker="" data-start="3457.998000" data-stop="3460.662000">And here's some basic resources. So this sounds like</span> <span class="audio-time caption" data-speaker="" data-start="3460.782000" data-stop="3465.829000">possibly a blog post.</span> <span class="audio-time caption" data-speaker="" data-start="3465.849000" data-stop="3469.815000">Post about where people come from.</span> <span class="audio-time caption" data-speaker="" data-start="3475.123000" data-stop="3476.605000">And typical resources.</span> <span class="audio-time caption" data-speaker="" data-start="3480.314000" data-stop="3480.936000">Next steps.</span> <span class="audio-time caption" data-speaker="" data-start="3485.250000" data-stop="3489.784000">And there is probably a blog post here about the challenges.</span> <span class="audio-time caption" data-speaker="" data-start="3503.568000" data-stop="3508.453000">which I can address from both a new user perspective as well</span> <span class="audio-time caption" data-speaker="" data-start="3508.713000" data-stop="3513.518000">as the, hey, this continues to be a challenge. And</span> <span class="audio-time caption" data-speaker="" data-start="3513.558000" data-stop="3517.102000">then there's one here about following up on my to-dos.</span> <span class="audio-time caption" data-speaker="" data-start="3525.310000" data-stop="3530.315000">And let's highlight these, make it easier. Someday I will</span> <span class="audio-time caption" data-speaker="" data-start="3530.415000" data-stop="3532.377000">actually pick colors that go together.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3535.000000">00:58:55</span> <strong>Books</strong></div><span class="audio-time caption" data-speaker="" data-start="3535.580000" data-stop="3538.084000">Ben says, would including books be a good option for</span> <span class="audio-time caption" data-speaker="" data-start="3538.204000" data-stop="3540.528000">lifelong learning? There's some interesting books I've</span> <span class="audio-time caption" data-speaker="" data-start="3540.608000" data-stop="3548.301000">seen throughout my journey. Yes, yes. I love how the books,</span> <span class="audio-time caption" data-speaker="" data-start="3548.321000" data-stop="3551.185000">there aren't a lot of books because Emacs keeps moving, but</span> <span class="audio-time caption" data-speaker="" data-start="3551.606000" data-stop="3554.571000">it takes a lot of effort to make a book. But the people who have</span> <span class="audio-time caption" data-speaker="" data-start="3554.611000" data-stop="3560.901000">written books, like Prot, like Mickey, do an amazing job of</span> <span class="audio-time caption" data-speaker="" data-start="3561.041000" data-stop="3566.018000">organizing things into a linear structure that makes</span> <span class="audio-time caption" data-speaker="" data-start="3566.118000" data-stop="3573.011000">sense. Books are great for this, especially for dealing</span> <span class="audio-time caption" data-speaker="" data-start="3573.091000" data-stop="3575.395000">with the sense of overwhelm and unknowns.</span> <span class="audio-time caption" data-speaker="" data-start="3582.909000" data-stop="3586.609000">Let's take a few a little bit at a time.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3586.000000">00:59:46</span> <strong>Manuals
</strong></div><span class="audio-time caption" data-speaker="" data-start="3586.610000" data-stop="3589.395000">The manuals are great too.</span> <span class="audio-time caption" data-speaker="" data-start="3589.396000" data-stop="3591.421000">Just even going through the Org Manual</span> <span class="audio-time caption" data-speaker="" data-start="3591.541000" data-stop="3595.349000">once in a while helps me stumble across things that are</span> <span class="audio-time caption" data-speaker="" data-start="3595.409000" data-stop="3599.979000">helpful. So getting people to feel like they're ready to</span> <span class="audio-time caption" data-speaker="" data-start="3600.080000" data-stop="3604.309000">read a book earlier rather than later, or feel like they're</span> <span class="audio-time caption" data-speaker="" data-start="3604.349000" data-stop="3610.373000">ready to read the manual. and maybe modeling how to do it,</span> <span class="audio-time caption" data-speaker="" data-start="3610.513000" data-stop="3613.397000">like showing them, okay, you can be reading this. The manual</span> <span class="audio-time caption" data-speaker="" data-start="3613.417000" data-stop="3616.441000">doesn't have a lot of examples, but this is how you can dig</span> <span class="audio-time caption" data-speaker="" data-start="3616.501000" data-stop="3625.130000">around for examples to see how it works. Could be helpful.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3625.000000">01:00:25</span> <strong>Maybe annotating the manual?</strong></div><span class="audio-time caption" data-speaker="" data-start="3625.131000" data-stop="3629.167000">I feel like if we have like an annotated Org Mode manual,</span> <span class="audio-time caption" data-speaker="" data-start="3629.168000" data-stop="3633.700000">here's the manual, but here are also some links to videos</span> <span class="audio-time caption" data-speaker="" data-start="3633.701000" data-stop="3637.033000">where people are demonstrating this concept, it could be</span> <span class="audio-time caption" data-speaker="" data-start="3637.034000" data-stop="3639.967000">interesting. One of my to-do's for a while has been do that</span> <span class="audio-time caption" data-speaker="" data-start="3639.968000" data-stop="3643.974000">do that kind of beginner map, but for Org,</span> <span class="audio-time caption" data-speaker="" data-start="3643.975000" data-stop="3647.300000">because people have shared a ton of Org resources in Emacs News.</span> <span class="audio-time caption" data-speaker="" data-start="3650.200000" data-stop="3654.851000">Where was I? Books. Yes, that is. Okay, so there are three</span> <span class="audio-time caption" data-speaker="" data-start="3654.871000" data-stop="3658.195000">things...</span> <span class="audio-time caption" data-speaker="" data-start="3660.158000" data-stop="3663.883000">probably more.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3664.000000">01:01:04</span> <strong>Starter kits</strong></div><span class="audio-time caption" data-speaker="" data-start="3664.640000" data-stop="3668.785000">Oh, starter kits! That's a whole other thing. Starter Kits.</span> <span class="audio-time caption" data-speaker="" data-start="3669.767000" data-stop="3675.093000">I think that if people are coming from a, let's say they're</span> <span class="audio-time caption" data-speaker="" data-start="3675.113000" data-stop="3678.137000">coming from a programming background, and there's</span> <span class="audio-time caption" data-speaker="" data-start="3678.138000" data-stop="3681.733000">pressure on them to be productive as soon as possible, then</span> <span class="audio-time caption" data-speaker="" data-start="3681.734000" data-stop="3686.333000">Starter Kits are a great idea, possibly. If they find a</span> <span class="audio-time caption" data-speaker="" data-start="3686.334000" data-stop="3690.033000">Starter Kit that fits the way they think, and gets the stuff</span> <span class="audio-time caption" data-speaker="" data-start="3690.034000" data-stop="3695.300000">they need working as soon as possible, fantastic. Hats off</span> <span class="audio-time caption" data-speaker="" data-start="3695.301000" data-stop="3699.200000">to them. Go for it. And then they can ease into more Emacsy</span> <span class="audio-time caption" data-speaker="" data-start="3699.201000" data-stop="3701.933000">things later on. The challenge, of course, with starter</span> <span class="audio-time caption" data-speaker="" data-start="3701.934000" data-stop="3704.767000">kits is because they change Emacs a lot, it makes it harder</span> <span class="audio-time caption" data-speaker="" data-start="3704.768000" data-stop="3709.300000">for newbies to get help outside that community. So they</span> <span class="audio-time caption" data-speaker="" data-start="3709.301000" data-stop="3712.200000">should pick a starter kit with a community they can ask for</span> <span class="audio-time caption" data-speaker="" data-start="3712.201000" data-stop="3716.433000">help within. Other people will be just like, I don't know</span> <span class="audio-time caption" data-speaker="" data-start="3716.434000" data-stop="3719.333000">what kinds of things are going on there. And of course, the</span> <span class="audio-time caption" data-speaker="" data-start="3719.334000" data-stop="3722.929000">newbie has no idea how to disable things or turn things off or</span> <span class="audio-time caption" data-speaker="" data-start="3723.230000" data-stop="3726.867000">go back to vanilla for some things. And so it's,</span> <span class="audio-time caption" data-speaker="" data-start="3726.868000" data-stop="3730.200000">it's, it's just complicated. Can't really expect people</span> <span class="audio-time caption" data-speaker="" data-start="3730.201000" data-stop="3733.440000">helping to go install this separate starter kit and</span> <span class="audio-time caption" data-speaker="" data-start="3733.441000" data-stop="3738.133000">figure that things out. The starter kits are useful in that</span> <span class="audio-time caption" data-speaker="" data-start="3738.134000" data-stop="3741.433000">situation, but in other cases, like for example, if you're</span> <span class="audio-time caption" data-speaker="" data-start="3741.434000" data-stop="3745.820000">getting into Emacs slowly and</span> <span class="audio-time caption" data-speaker="" data-start="3745.821000" data-stop="3749.900000">you're curious, it can help to start from vanilla so you know</span> <span class="audio-time caption" data-speaker="" data-start="3749.901000" data-stop="3752.139000">what things you're adding to it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3752.000000">01:02:32</span> <strong>Navigating source code</strong></div><span class="audio-time caption" data-speaker="" data-start="3752.140000" data-stop="3753.867000">@lispwizard says M-x</span> <span class="audio-time caption" data-speaker="" data-start="3753.868000" data-stop="3757.400000">apropos, looking at Emacs source files for related stuff</span> <span class="audio-time caption" data-speaker="" data-start="3757.401000" data-stop="3760.533000">are also helpful. And learning how to navigate source code</span> <span class="audio-time caption" data-speaker="" data-start="3760.534000" data-stop="3765.500000">to find examples and read it is also a skill that nobody is</span> <span class="audio-time caption" data-speaker="" data-start="3765.501000" data-stop="3768.067000">born with. Figuring out how to help people develop that</span> <span class="audio-time caption" data-speaker="" data-start="3768.068000" data-stop="3771.800000">skill is interesting. But I will go check on the kiddo now.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3771.000000">01:02:51</span> <strong>Braindumping with company</strong></div><span class="audio-time caption" data-speaker="" data-start="3771.801000" data-stop="3777.033000">This has been very helpful for me. Kind of brain dumping</span> <span class="audio-time caption" data-speaker="" data-start="3777.034000" data-stop="3783.767000">random ideas onto... It's not even really a mind map. It's just</span> <span class="audio-time caption" data-speaker="" data-start="3783.768000" data-stop="3790.500000">bleargh onto this sketch. But doing it with people hanging</span> <span class="audio-time caption" data-speaker="" data-start="3790.838000" data-stop="3794.581000">out and helping me remember stuff or think of stuff is</span> <span class="audio-time caption" data-speaker="" data-start="3794.662000" data-stop="3798.986000">helpful and well worth my voice getting extra tired. So</span> <span class="audio-time caption" data-speaker="" data-start="3799.026000" data-stop="3802.389000">thank you for coming and hanging out with me today. And I will</span> <span class="audio-time caption" data-speaker="" data-start="3802.449000" data-stop="3806.152000">go work on turning these things into blog posts and possibly</span> <span class="audio-time caption" data-speaker="" data-start="3806.212000" data-stop="3812.538000">videos and live streams going forward.</span> <span class="audio-time caption" data-speaker="" data-start="3812.539000" data-stop="3818.827000">I will skedaddle now. Today I need to sew a hat for my</span> <span class="audio-time caption" data-speaker="" data-start="3818.828000" data-stop="3830.001000">kiddo, but tomorrow, I will probably hang out with you maybe</span> <span class="audio-time caption" data-speaker="" data-start="3809.815000" data-stop="3830.001000">slightly roughly at the same time. Thanks, everyone,</span> <span class="audio-time caption" data-speaker="" data-start="3809.815000" data-stop="3830.001000">and see you!</span>
<p></p>


</details>
</div>
</div>
<div id="outline-container-ye20-emacs-carnival-newbies-starter-kits-chat" class="outline-3">
<h3 id="ye20-emacs-carnival-newbies-starter-kits-chat">Chat</h3>
<div class="outline-text-3" id="text-ye20-emacs-carnival-newbies-starter-kits-chat">
<ul class="org-ul">
<li>@j7gy8b: ​​do people still try the built-in tutorial?</li>
<li>@j7gy8b: I'm Jeff from Emacs SF and I don't know how to change my display name</li>
<li>@lispwizard: ​​One problem is platforms which usurp keystrokes which emacs expects (I just wrestled with this on a raspberry pi).</li>
<li>@j7gy8b: ​in the meetup we do see that, the young people who were inspired by a professor to try</li>
<li>@j7gy8b: ​Perhaps Clojure is a route to Emacs for experts. I've heard it's the best IDE for that language</li>
<li>@benmezger: ​​There are quite some interesting youtube channels (yours included) to learn Emacs too</li>
<li>@lispwizard: ​You can often watch videos at 2x speed&hellip;</li>
<li>@benmezger: ​indeed. Videos help show how powerful emacs can be. Simply installing Emacs doesnt give you that viewpoint</li>
<li>@mtendethecreator: ​​wazzup</li>
<li>@mtendethecreator: ​​someone says pi-coding-agent is the emacs for ai agents. thoughts?</li>
<li>@benmezger: ​IRC perhaps? although a little complex, you learn tons from the Emacs channel</li>
<li>@charliemcmackin4859: ​​Searching through Github for emacs keywords to see how other people configure things helped my Emacs customization understanding.</li>
<li>@mtendethecreator: ​tsodings config lol</li>
<li>@charliemcmackin4859: ​​That sounds nice&hellip; I cherry picked a lot of purcell's config as I hit modes I wanted to use&hellip; and then later I adapted it to use-package&hellip;and now it's mine :D</li>
<li>@mtendethecreator: ​please create a discord for your channel. irc is cool but the new wave of devs prefer discord. think about it</li>
<li>@DavidMannMD: ​​I can highly recommend Prot's book on Emacs lisp.</li>
<li>@charliemcmackin4859: ​​(as an idea for looking at other's configs as a method of learning&hellip; "how would I adapt this to use use-package?" is something I find myself thinking a bit)</li>
<li>@benmezger: ​Would including books be a good option for lifelong learning? There are some interesting books I've seen throughout my journey</li>
<li>@lispwizard: ​​m-x apropos, looking at emacs source files for related stuff are also helpful</li>
<li>@lispwizard: ​​Thank you.</li>
</ul>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/04/ye20-emacs-carnival-newbies-starter-kits/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%2F04%2Fye20-emacs-carnival-newbies-starter-kits%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>YE21 April 23: Continuing to think about newbies / starter kits</title>
		<link>https://sachachua.com/blog/2026/04/ye21-continuing-to-think-about-newbies-starter-kits/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Tue, 21 Apr 2026 18:29:24 GMT</pubDate>
    <category>emacs</category>
<category>community</category>
<category>yay-emacs</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/04/ye21-continuing-to-think-about-newbies-starter-kits/</guid>
		<description><![CDATA[<p>
I continued thinking about the Emacs Carnival April 2026 theme of <a href="https://www.emacswiki.org/emacs/CarnivalApril2026">newbies / starter kits</a>. Here are <a href="https://sachachua.com/blog/2026/04/ye20-emacs-carnival-newbies-starter-kits/">my notes and transcript</a> from my <a href="https://youtube.com/live/Yht0N26EoF4">previous livestream</a> on the topic.
</p>

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

<div class="sticky-toc" id="org8d48158">
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="https://sachachua.com/blog/feed/index.xml#ye21-april-23-continuing-to-think-about-newbies-starter-kits-overview">Overview</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#ye21-april-23-continuing-to-think-about-newbies-starter-kits-chapters">Chapters</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#ye21-april-23-continuing-to-think-about-newbies-starter-kits-transcript">Transcript</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#ye21-april-23-continuing-to-think-about-newbies-starter-kits-chat">Chat</a></li>
</ul>
</div>

</div>
<div id="outline-container-ye21-april-23-continuing-to-think-about-newbies-starter-kits-overview" class="outline-3">
<h3 id="ye21-april-23-continuing-to-think-about-newbies-starter-kits-overview">Overview</h3>
<div class="outline-text-3" id="text-ye21-april-23-continuing-to-think-about-newbies-starter-kits-overview">
<p>
My goals for this 1-hour session:
</p>

<p>
People often recommend Emacs News to people who are looking for resources or inspiration. I want to make it easier for newcomers to Emacs to:
</p>

<ul class="org-ul">
<li>feel more connected with the community and find sources of inspiration that can encourage them to keep going</li>
<li>find recent beginner-related resources without needing to page through the archives</li>
<li>find examples of workflows and tutorials for common needs</li>
<li>not feel overwhelmed by all the links; be able to focus on the things at their level</li>
</ul>

<p>
Some things I can do:
</p>

<ul class="org-ul">
<li class="on"><span class="task-done">&#x2611;</span> Update the header of <a href="https://sachachua.com/blog/category/emacs-news/">https://sachachua.com/blog/category/emacs-news/</a> to make it easier for people who are new
<ul class="org-ul">
<li><a href="https://sachachua.com/blog/2026/04/ye21-continuing-to-think-about-newbies-starter-kits/emacs-news.html">file:///home/sacha/proj/static-blog/_data/term-descriptions/emacs-news.html</a></li>
</ul></li>
<li class="on"><span class="task-done">&#x2611;</span> Update <a href="https://sachachua.com/topic/emacs-news/">https://sachachua.com/topic/emacs-news/</a></li>
</ul>

<p>
If there's time, I can flesh out my outline further.
<a href="https://sachachua.com/blog/2026/04/ye20-emacs-carnival-newbies-starter-kits/">YE20: Emacs Carnival: Newbies/starter kits</a>
</p>
</div>
</div>
<div id="outline-container-ye21-april-23-continuing-to-think-about-newbies-starter-kits-chapters" class="outline-3">
<h3 id="ye21-april-23-continuing-to-think-about-newbies-starter-kits-chapters">Chapters</h3>
<div class="outline-text-3" id="text-ye21-april-23-continuing-to-think-about-newbies-starter-kits-chapters">
<ul class="org-ul">
<li><span class="media-time" data-start="1.000">00:01</span> Starting up</li>
<li><span class="media-time" data-start="203.000">03:23</span> Newbies and starter kits</li>
<li><span class="media-time" data-start="355.000">05:55</span> Emacs News</li>
<li><span class="media-time" data-start="434.000">07:14</span> Let's move the mailing list option up</li>
<li><span class="media-time" data-start="471.000">07:51</span> An aside talking to Prot</li>
<li><span class="media-time" data-start="592.000">09:52</span> Challenges: Isolation</li>
<li><span class="media-time" data-start="645.000">10:45</span> Overwhelm</li>
<li><span class="media-time" data-start="674.000">11:14</span> Balance of time</li>
<li><span class="media-time" data-start="693.000">11:33</span> Unknowns</li>
<li><span class="media-time" data-start="840.000">14:00</span> Post-its</li>
<li><span class="media-time" data-start="861.000">14:21</span> Finding help</li>
<li><span class="media-time" data-start="893.000">14:53</span> Testing BigBlueButton</li>
<li><span class="media-time" data-start="1022.000">17:02</span> Thinking about reviving Emacs Hangouts</li>
<li><span class="media-time" data-start="1068.000">17:48</span> Emacs News as a newbie</li>
<li><span class="media-time" data-start="1109.000">18:29</span> Aside: Jeff is looking into making VS Code plugins</li>
<li><span class="media-time" data-start="1137.000">18:57</span> Notes on making the most of Emacs News</li>
<li><span class="media-time" data-start="1250.000">20:50</span> RSS</li>
<li><span class="media-time" data-start="1422.000">23:42</span> newsticker</li>
<li><span class="media-time" data-start="1645.000">27:25</span> Stream delay</li>
<li><span class="media-time" data-start="1711.000">28:31</span> Reading news with newsticker</li>
<li><span class="media-time" data-start="1744.000">29:04</span> The usefulness of screenshots and videos</li>
<li><span class="media-time" data-start="2060.000">34:20</span> Back to Emacs News</li>
<li><span class="media-time" data-start="2100.000">35:00</span> Prerequisite knowledge for Elfeed</li>
<li><span class="media-time" data-start="2249.000">37:29</span> Other resources that people might find useful</li>
<li><span class="media-time" data-start="2456.000">40:56</span> Beginner map</li>
<li><span class="media-time" data-start="2564.000">42:44</span> emacs-news/index.org is 5.5 MB of plain text</li>
<li><span class="media-time" data-start="2635.000">43:55</span> consult-focus-lines</li>
<li><span class="media-time" data-start="2653.000">44:13</span> Organizing the links</li>
<li><span class="media-time" data-start="2702.000">45:02</span> Organizing screenshots and videos by package</li>
<li><span class="media-time" data-start="2749.000">45:49</span> Info pages</li>
<li><span class="media-time" data-start="2828.000">47:08</span> Remembering keybindings</li>
<li><span class="media-time" data-start="2920.000">48:40</span> The guided tour</li>
<li><span class="media-time" data-start="3007.000">50:07</span> Recap</li>
<li><span class="media-time" data-start="3192.000">53:12</span> newcomers-presets</li>
<li><span class="media-time" data-start="3472.000">57:52</span> Wrapping up</li>
<li><span class="media-time" data-start="3499.000">58:19</span> Remembering keybindings</li>
<li><span class="media-time" data-start="3553.000">59:13</span> Picking Prot's brain next week about the newcomer experience</li>
</ul>
</div>
</div>
<div id="outline-container-ye21-april-23-continuing-to-think-about-newbies-starter-kits-transcript" class="outline-3">
<h3 id="ye21-april-23-continuing-to-think-about-newbies-starter-kits-transcript">Transcript</h3>
<div class="outline-text-3" id="text-ye21-april-23-continuing-to-think-about-newbies-starter-kits-transcript">
<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Transcript</strong></summary>
<p>
</p><p></p><div class="transcript-heading"><span class="audio-time" data-start="1.000000">00:00:01</span> <strong>Starting up</strong></div><span class="audio-time caption" data-speaker="" data-start="1.685000" data-stop="10.198000">Alright everyone, this is Yay Emacs 21 and I think it's a good</span> <span class="audio-time caption" data-speaker="" data-start="10.258000" data-stop="14.144000">opportunity to continue with thinking about newbies and</span> <span class="audio-time caption" data-speaker="" data-start="14.225000" data-stop="18.311000">starter kits. Also, theoretically, you might be able to</span> <span class="audio-time caption" data-speaker="" data-start="18.331000" data-stop="22.437000">join via Big Blue Button. I will put the link in the chat and we</span> <span class="audio-time caption" data-speaker="" data-start="22.477000" data-stop="25.182000">can experiment with it because I have no idea if it works or</span> <span class="audio-time caption" data-speaker="" data-start="25.202000" data-stop="34.930000">not. Let's go see. That's not it. Let's get the right one. I</span> <span class="audio-time caption" data-speaker="" data-start="35.010000" data-stop="39.314000">need to have shorter URLs, but that will come eventually.</span> <span class="audio-time caption" data-speaker="" data-start="40.015000" data-stop="44.379000">Step two, find the chat window. I have too many windows.</span> <span class="audio-time caption" data-speaker="" data-start="45.660000" data-stop="48.823000">Okay,</span> <span class="audio-time caption" data-speaker="" data-start="49.224000" data-stop="51.086000">let's see if that works for now.</span> <span class="audio-time caption" data-speaker="" data-start="55.190000" data-stop="64.090000">And then, let's find out if everything gets crazy if I share</span> <span class="audio-time caption" data-speaker="" data-start="64.190000" data-stop="66.634000">my... Like, how does this work?</span> <span class="audio-time caption" data-speaker="" data-start="69.597000" data-stop="76.406000">I unmute myself. Testing. Okay, that shows up. I am logged in</span> <span class="audio-time caption" data-speaker="" data-start="76.426000" data-stop="81.693000">with the EmacsConf user at the moment. I probably have a me</span> <span class="audio-time caption" data-speaker="" data-start="81.753000" data-stop="84.397000">account on this as well. I just don't remember if I've got</span> <span class="audio-time caption" data-speaker="" data-start="84.437000" data-stop="87.464000">that set up yet. Anyway, we're experimenting with these</span> <span class="audio-time caption" data-speaker="" data-start="87.545000" data-stop="91.170000">because next... next week? Next next week. Next next week or</span> <span class="audio-time caption" data-speaker="" data-start="91.210000" data-stop="95.116000">so. Yes, next next week I am chatting with Amin Bandali and</span> <span class="audio-time caption" data-speaker="" data-start="95.297000" data-stop="98.221000">we're going to start doing some Emacs chats, possibly on</span> <span class="audio-time caption" data-speaker="" data-start="99.023000" data-stop="102.668000">BigBlueButton because it's free and open source. So that is</span> <span class="audio-time caption" data-speaker="" data-start="102.829000" data-stop="107.416000">all goodness. And let's share screen one, I think.</span> <span class="audio-time caption" data-speaker="" data-start="111.062000" data-stop="115.824000">Could not share the screen. Hmm. I'm going to try this with</span> <span class="audio-time caption" data-speaker="" data-start="116.565000" data-stop="117.526000">the other browser.</span> <span class="audio-time caption" data-speaker="" data-start="125.977000" data-stop="131.043000">Let's paste in my join link. Let's log in as me.</span> <span class="audio-time caption" data-speaker="" data-start="134.187000" data-stop="138.111000">Microphone.</span> <span class="audio-time caption" data-speaker="" data-start="138.892000" data-stop="145.014000">Ah, it doesn't like my microphone. Fine. Let's see if this</span> <span class="audio-time caption" data-speaker="" data-start="146.035000" data-stop="160.052000">lets me share my screen. Entire screen. Share. Okay. Alright. So</span> <span class="audio-time caption" data-speaker="" data-start="160.112000" data-stop="165.398000">now I'm sharing. I am not sharing. It's not happening.</span> <span class="audio-time caption" data-speaker="" data-start="169.963000" data-stop="174.715000">Well, it's thinking about it. So my goal is to get to the point</span> <span class="audio-time caption" data-speaker="" data-start="174.755000" data-stop="179.220000">where I can use big blue button to share my sub goal, my side</span> <span class="audio-time caption" data-speaker="" data-start="179.240000" data-stop="182.824000">quest, to share my screen so people can see what I'm talking</span> <span class="audio-time caption" data-speaker="" data-start="182.884000" data-stop="188.530000">about and stream at the same time. But it doesn't seem to be</span> <span class="audio-time caption" data-speaker="" data-start="188.590000" data-stop="190.853000">happening, so that might be something I need to fiddle with</span> <span class="audio-time caption" data-speaker="" data-start="191.634000" data-stop="196.999000">off screen. OK, I will just save this for if anyone wants to</span> <span class="audio-time caption" data-speaker="" data-start="197.019000" data-stop="202.045000">drop by and share their stuff. OK, that is cool. I will live.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="203.000000">00:03:23</span> <strong>Newbies and starter kits</strong></div><span class="audio-time caption" data-speaker="" data-start="203.780000" data-stop="213.309000">Okay, let us get back to whatever I can do. So yesterday I was</span> <span class="audio-time caption" data-speaker="" data-start="213.349000" data-stop="217.793000">thinking about this Emacs Carnival April 2026 topic of</span> <span class="audio-time caption" data-speaker="" data-start="217.833000" data-stop="221.917000">newbies and starter kits. And I wanted to start thinking</span> <span class="audio-time caption" data-speaker="" data-start="221.937000" data-stop="225.221000">about what I can do to help people with isolation,</span> <span class="audio-time caption" data-speaker="" data-start="225.281000" data-stop="230.864000">overwhelm, and these little challenges that come with</span> <span class="audio-time caption" data-speaker="" data-start="233.327000" data-stop="238.273000">being new to Emacs, but actually there's still challenges</span> <span class="audio-time caption" data-speaker="" data-start="238.293000" data-stop="243.360000">that we deal with, even when you're experienced. And</span> <span class="audio-time caption" data-speaker="" data-start="247.065000" data-stop="249.108000">I'm seeing people in the chat, but it's not showing up in the</span> <span class="audio-time caption" data-speaker="" data-start="249.148000" data-stop="255.035000">chat of social stream. Boo. So @Mehrad42 says hello, and @JacksonScholberg</span> <span class="audio-time caption" data-speaker="" data-start="255.095000" data-stop="260.238000">also says good morning. Good morning to you too. I have, in</span> <span class="audio-time caption" data-speaker="" data-start="260.339000" data-stop="264.785000">the notes and transcript... I've actually updated this with a</span> <span class="audio-time caption" data-speaker="" data-start="264.866000" data-stop="270.033000">transcript, I think. So now my post from yesterday has the</span> <span class="audio-time caption" data-speaker="" data-start="270.594000" data-stop="273.799000">video from yesterday, which is great. It also has my</span> <span class="audio-time caption" data-speaker="" data-start="273.999000" data-stop="278.406000">outline, which might be slightly easier to read in non-dark</span> <span class="audio-time caption" data-speaker="" data-start="278.466000" data-stop="285.196000">mode. Dark mode, dark mode, dark mode. Tough. One second,</span> <span class="audio-time caption" data-speaker="" data-start="285.216000" data-stop="289.415000">thought. Never mind, you can you can deal with the dark mode</span> <span class="audio-time caption" data-speaker="" data-start="289.435000" data-stop="294.181000">flipping yourself. So I have the outline, I have some to-dos</span> <span class="audio-time caption" data-speaker="" data-start="294.221000" data-stop="298.966000">for myself, and I have this lovely transcript which I edited</span> <span class="audio-time caption" data-speaker="" data-start="299.086000" data-stop="304.132000">and added chapters to because text is wonderful. So all of</span> <span class="audio-time caption" data-speaker="" data-start="304.172000" data-stop="307.916000">that is there. Probably there's still some misrecognized</span> <span class="audio-time caption" data-speaker="" data-start="307.976000" data-stop="314.517000">words in it, but handy. And then the outline up there has the</span> <span class="audio-time caption" data-speaker="" data-start="314.557000" data-stop="319.342000">links. So theoretically, I can start taking this and doing</span> <span class="audio-time caption" data-speaker="" data-start="319.402000" data-stop="324.728000">stuff with the thoughts and with the text to figure out how</span> <span class="audio-time caption" data-speaker="" data-start="324.788000" data-stop="338.682000">that goes. Let's see. Reload. Ah! Did the reload work? No.</span> <span class="audio-time caption" data-speaker="" data-start="345.074000" data-stop="349.200000">Okay. Things that I don't quite understand, but that's</span> <span class="audio-time caption" data-speaker="" data-start="349.260000" data-stop="355.248000">okay. I'll live. Okay. Let's get on with it then.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="355.000000">00:05:55</span> <strong>Emacs News</strong></div><span class="audio-time caption" data-speaker="" data-start="355.268000" data-stop="360.355000">So a lot of people recommend Emacs News to new users or to</span> <span class="audio-time caption" data-speaker="" data-start="360.455000" data-stop="362.978000">other people who are interested in keeping up with what's</span> <span class="audio-time caption" data-speaker="" data-start="363.038000" data-stop="366.743000">going on in the Emacs world.</span> <span class="audio-time caption" data-speaker="" data-start="370.628000" data-stop="373.813000">I want to make it easier for people to find the resources and</span> <span class="audio-time caption" data-speaker="" data-start="373.833000" data-stop="377.594000">know what to do with things. So here's where they often end</span> <span class="audio-time caption" data-speaker="" data-start="377.714000" data-stop="381.198000">up. One of the things I've just added is a note that you can get</span> <span class="audio-time caption" data-speaker="" data-start="381.218000" data-stop="383.679000">to this page using a shorter URL,</span> <span class="audio-time caption" data-speaker="" data-start="383.680000" data-stop="390.607000">like https://sachachua.com/emacs-news or https://sacha.ac/emacs-news.</span> <span class="audio-time caption" data-speaker="" data-start="390.608000" data-stop="395.133000">And I should probably make it also work without the dash because then</span> <span class="audio-time caption" data-speaker="" data-start="395.454000" data-stop="397.916000">peoplethey don't have to remember, okay, does it</span> <span class="audio-time caption" data-speaker="" data-start="397.956000" data-stop="401.781000">have a dash? Does it not have a dash? And so forth. So that can</span> <span class="audio-time caption" data-speaker="" data-start="401.801000" data-stop="414.110000">be a to-do for me. Add an nginx redirection for Emacs News. No</span> <span class="audio-time caption" data-speaker="" data-start="414.150000" data-stop="420.256000">dash. All right. And I've also added this. Are you new to</span> <span class="audio-time caption" data-speaker="" data-start="420.336000" data-stop="422.818000">Emacs? Check out these tips for making the most of Emacs</span> <span class="audio-time caption" data-speaker="" data-start="422.918000" data-stop="429.725000">News. Plus quick subscription options, elfeed and nnrss for</span> <span class="audio-time caption" data-speaker="" data-start="429.765000" data-stop="434.055000">your favorite newsreader, MailChimp, or whatever.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="434.000000">00:07:14</span> <strong>Let's move the mailing list option up</strong></div><span class="audio-time caption" data-speaker="" data-start="434.056000" data-stop="439.121000">I feel like it's slightly easier for newbies to deal with mailing</span> <span class="audio-time caption" data-speaker="" data-start="439.181000" data-stop="443.144000">lists because everyone knows how to do email and not a lot of</span> <span class="audio-time caption" data-speaker="" data-start="443.204000" data-stop="447.909000">people know how to use the awesomeness of RSS readers. So</span> <span class="audio-time caption" data-speaker="" data-start="448.089000" data-stop="452.012000">let's in fact switch this around so that the mailing list is</span> <span class="audio-time caption" data-speaker="" data-start="452.112000" data-stop="460.300000">up there. And let's make elfeed a link.</span> <span class="audio-time caption" data-speaker="" data-start="460.440000" data-stop="461.481000">Where is elfeed?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="471.000000">00:07:51</span> <strong>An aside talking to Prot</strong></div><span class="audio-time caption" data-speaker="" data-start="471.215000" data-stop="474.699000">Hey, bonjour, Prot! Okay, Prot is also dropping in. I</span> <span class="audio-time caption" data-speaker="" data-start="474.780000" data-stop="478.364000">actually wanted, so I have the session with Prot next week</span> <span class="audio-time caption" data-speaker="" data-start="479.165000" data-stop="484.752000">and I actually want to pick Prot's brain about the newcomer</span> <span class="audio-time caption" data-speaker="" data-start="484.792000" data-stop="488.157000">experience as well. I've decided to draft some notes around</span> <span class="audio-time caption" data-speaker="" data-start="488.217000" data-stop="493.704000">that in here. So instead of my just telling you about all the</span> <span class="audio-time caption" data-speaker="" data-start="493.724000" data-stop="497.248000">cool stuff that I've been building for updating, you know,</span> <span class="audio-time caption" data-speaker="" data-start="497.789000" data-stop="502.397000">updating YouTube related entries on my blog or whatever. I</span> <span class="audio-time caption" data-speaker="" data-start="502.417000" data-stop="505.861000">want to pick Prot's brain about newbies and starter kits,</span> <span class="audio-time caption" data-speaker="" data-start="507.063000" data-stop="509.365000">which is great because Prot had some contemporaneous</span> <span class="audio-time caption" data-speaker="" data-start="509.485000" data-stop="514.091000">notes in 2019 when he started with Emacs. There's a video</span> <span class="audio-time caption" data-speaker="" data-start="514.111000" data-stop="518.336000">blog and he shared his experience starting as a</span> <span class="audio-time caption" data-speaker="" data-start="518.476000" data-stop="523.525000">non-programmer. And in his recent 2026 talk, for which the</span> <span class="audio-time caption" data-speaker="" data-start="523.566000" data-stop="527.151000">transcript and the video are also available online, these</span> <span class="audio-time caption" data-speaker="" data-start="527.731000" data-stop="532.517000">are both in the emacs.com page. You can follow these links</span> <span class="audio-time caption" data-speaker="" data-start="532.577000" data-stop="537.382000">yourself, but I will copy them because I can. Let's copy,</span> <span class="audio-time caption" data-speaker="" data-start="537.442000" data-stop="543.509000">copy, copy, copy as. Why do I have too many options there?</span> <span class="audio-time caption" data-speaker="" data-start="544.350000" data-stop="553.425000">Okay. So I will copy these links in. Prot</span> <span class="audio-time caption" data-speaker="" data-start="555.669000" data-stop="559.157000">says, starting Emacs without a background in programming, he</span> <span class="audio-time caption" data-speaker="" data-start="559.197000" data-stop="561.361000">learned the basics within a few days, started writing his</span> <span class="audio-time caption" data-speaker="" data-start="561.422000" data-stop="564.388000">own Emacs Lisp within weeks, and within a year, he had</span> <span class="audio-time caption" data-speaker="" data-start="564.488000" data-stop="569.642000">contributions to core Emacs. So I'm curious about how we can</span> <span class="audio-time caption" data-speaker="" data-start="569.762000" data-stop="573.769000">make the newbie or starter kit experience better for</span> <span class="audio-time caption" data-speaker="" data-start="573.849000" data-stop="579.078000">people. And as a quick summary of what I discussed yesterday</span> <span class="audio-time caption" data-speaker="" data-start="579.779000" data-stop="585.148000">in my brainstorming thing, it's in posts.org,</span> <span class="audio-time caption" data-speaker="" data-start="587.292000" data-stop="592.967000">which I have a sketch of. Sketch of? Yes.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="592.000000">00:09:52</span> <strong>Challenges: Isolation</strong></div><span class="audio-time caption" data-speaker="" data-start="592.968000" data-stop="598.160000">We are thinking about the problems of isolation, where people generally</span> <span class="audio-time caption" data-speaker="" data-start="598.220000" data-stop="602.791000">don't know somebody else in real life who is into Emacs and</span> <span class="audio-time caption" data-speaker="" data-start="602.831000" data-stop="607.101000">can just lean over and fix stuff for them. And also they're</span> <span class="audio-time caption" data-speaker="" data-start="607.121000" data-stop="609.266000">not looking over someone else's shoulder and getting</span> <span class="audio-time caption" data-speaker="" data-start="609.346000" data-stop="613.429000">inspired by The cool things that they're doing. I'm not sure</span> <span class="audio-time caption" data-speaker="" data-start="613.469000" data-stop="616.714000">you can get much more isolated than being a mountain hermit</span> <span class="audio-time caption" data-speaker="" data-start="616.834000" data-stop="620.580000">in Cyprus, so Prot is an excellent example of still</span> <span class="audio-time caption" data-speaker="" data-start="620.641000" data-stop="623.585000">managing to be virtually connected, even though he's</span> <span class="audio-time caption" data-speaker="" data-start="623.665000" data-stop="627.792000">physically isolated. Oh, wait, actually, we do have some</span> <span class="audio-time caption" data-speaker="" data-start="627.872000" data-stop="632.099000">monks and we have some mountaineering guides who still</span> <span class="audio-time caption" data-speaker="" data-start="632.159000" data-stop="635.104000">manage to make interesting completion frameworks, like</span> <span class="audio-time caption" data-speaker="" data-start="635.164000" data-stop="640.670000">Helm. That's Thierry. Anyhow, so isolation is something that</span> <span class="audio-time caption" data-speaker="" data-start="640.730000" data-stop="644.816000">a lot of people feel is very challenging for them when it</span> <span class="audio-time caption" data-speaker="" data-start="644.836000" data-stop="645.877000">comes to learning.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="645.000000">00:10:45</span> <strong>Overwhelm</strong></div><span class="audio-time caption" data-speaker="" data-start="645.878000" data-stop="649.323000">There's overwhelm, so just the sheer</span> <span class="audio-time caption" data-speaker="" data-start="649.423000" data-stop="652.969000">number of things that you need to learn, the new terms for</span> <span class="audio-time caption" data-speaker="" data-start="653.089000" data-stop="656.675000">everything, the keyboard shortcuts, the things that</span> <span class="audio-time caption" data-speaker="" data-start="656.695000" data-stop="659.599000">you've got to do in order to get a basic working environment</span> <span class="audio-time caption" data-speaker="" data-start="659.679000" data-stop="663.685000">set up to the point where you feel comfortable spending some</span> <span class="audio-time caption" data-speaker="" data-start="663.726000" data-stop="666.850000">time in it every day without feeling like it's holding you</span> <span class="audio-time caption" data-speaker="" data-start="666.891000" data-stop="671.158000">back. Cheat sheets and actually things like menu items</span> <span class="audio-time caption" data-speaker="" data-start="671.218000" data-stop="674.522000">and toolbars can be helpful for that.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="674.000000">00:11:14</span> <strong>Balance of time</strong></div><span class="audio-time caption" data-speaker="" data-start="674.523000" data-stop="679.492000">Third problem is balance of time. You know, spending time tinkering with</span> <span class="audio-time caption" data-speaker="" data-start="679.532000" data-stop="681.776000">your config versus spending time getting things done,</span> <span class="audio-time caption" data-speaker="" data-start="683.038000" data-stop="686.985000">which is less of an issue if you're learning it at a leisurely</span> <span class="audio-time caption" data-speaker="" data-start="687.045000" data-stop="690.190000">pace, but more of an issue if you are under some pressure to</span> <span class="audio-time caption" data-speaker="" data-start="690.230000" data-stop="693.052000">become productive as soon as possible.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="693.000000">00:11:33</span> <strong>Unknowns</strong></div><span class="audio-time caption" data-speaker="" data-start="693.053000" data-stop="696.477000">And the fourth is the things that you don't even know to look for.</span> <span class="audio-time caption" data-speaker="" data-start="696.478000" data-stop="701.987000">This is where Emacs News and other sources of inspiration can be helpful</span> <span class="audio-time caption" data-speaker="" data-start="702.067000" data-stop="704.871000">because then you come across a video or a blog post and you</span> <span class="audio-time caption" data-speaker="" data-start="704.891000" data-stop="709.679000">say, I can do that. And if you're lucky, that video or blog</span> <span class="audio-time caption" data-speaker="" data-start="709.719000" data-stop="712.723000">post will be accompanied by a tutorial that says, okay, this</span> <span class="audio-time caption" data-speaker="" data-start="712.764000" data-stop="715.708000">is step-by-step how to do it. But often there's still a lot of</span> <span class="audio-time caption" data-speaker="" data-start="715.788000" data-stop="718.472000">translation that's needed so that it can fit with your</span> <span class="audio-time caption" data-speaker="" data-start="718.553000" data-stop="723.428000">particular environment or your particular workflow.</span> <span class="audio-time caption" data-speaker="" data-start="723.468000" data-stop="731.579000">@JacksonScholberg shares that they gave up on using Emacs yesterday, and</span> <span class="audio-time caption" data-speaker="" data-start="731.620000" data-stop="734.864000">then they realized they could use VS Code to get things done</span> <span class="audio-time caption" data-speaker="" data-start="735.104000" data-stop="738.529000">while they're learning Emacs. So it's not an all or nothing</span> <span class="audio-time caption" data-speaker="" data-start="738.629000" data-stop="742.615000">thing. You can learn, you know, you can still use another</span> <span class="audio-time caption" data-speaker="" data-start="742.695000" data-stop="747.342000">editor to do most of your work, but use Emacs for a small set of</span> <span class="audio-time caption" data-speaker="" data-start="747.402000" data-stop="749.685000">things that you know how to do with it. You know, you might</span> <span class="audio-time caption" data-speaker="" data-start="749.725000" data-stop="753.021000">just know how to edit a file and save it. And that's it. That's</span> <span class="audio-time caption" data-speaker="" data-start="753.081000" data-stop="756.487000">good. That's great for starters. And then every day you</span> <span class="audio-time caption" data-speaker="" data-start="756.527000" data-stop="761.575000">might learn one new shortcut or one new thing that you can do.</span> <span class="audio-time caption" data-speaker="" data-start="761.595000" data-stop="767.566000">Gradually, your use of Emacs will grow and grow and grow</span> <span class="audio-time caption" data-speaker="" data-start="767.746000" data-stop="771.573000">until you start thinking, hey, why can't I just read my email</span> <span class="audio-time caption" data-speaker="" data-start="771.613000" data-stop="774.879000">in Emacs like all the cool kids? Or why don't I just go figure</span> <span class="audio-time caption" data-speaker="" data-start="774.919000" data-stop="782.526000">out how to browse the web in Emacs or keep track of my sewing in</span> <span class="audio-time caption" data-speaker="" data-start="782.907000" data-stop="787.395000">Emacs. That does actually happen. So yeah, totally just</span> <span class="audio-time caption" data-speaker="" data-start="787.595000" data-stop="792.084000">start small. But this process of breaking things down into</span> <span class="audio-time caption" data-speaker="" data-start="792.184000" data-stop="798.049000">tiny steps is something that newbies might not know.</span> <span class="audio-time caption" data-speaker="" data-start="798.050000" data-stop="822.958000">There are a number of different ways where people can get</span> <span class="audio-time caption" data-speaker="" data-start="822.959000" data-stop="828.525000">this sort of advice on how to break things down to make things simpler.</span> <span class="audio-time caption" data-speaker="" data-start="828.526000" data-stop="833.275000">One is, you know, every time people post this challenge on Reddit or</span> <span class="audio-time caption" data-speaker="" data-start="833.355000" data-stop="836.300000">elsewhere where they say, OK, I want to learn Emacs, but</span> <span class="audio-time caption" data-speaker="" data-start="836.320000" data-stop="839.326000">there's so many things. How do I learn this? Everyone keeps</span> <span class="audio-time caption" data-speaker="" data-start="839.346000" data-stop="840.888000">saying, OK, start small.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="840.000000">00:14:00</span> <strong>Post-its</strong></div><span class="audio-time caption" data-speaker="" data-start="840.889000" data-stop="844.455000">Maybe have a Post-it note, which</span> <span class="audio-time caption" data-speaker="" data-start="844.596000" data-stop="849.445000">cannot be seen, a Post-it note on your monitor with the</span> <span class="audio-time caption" data-speaker="" data-start="849.505000" data-stop="854.401000">keyboard shortcuts that you are trying to learn. or have one</span> <span class="audio-time caption" data-speaker="" data-start="854.461000" data-stop="857.726000">text file where it's just your notes about what you're</span> <span class="audio-time caption" data-speaker="" data-start="857.766000" data-stop="861.350000">learning. Just break it down.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="861.000000">00:14:21</span> <strong>Finding help</strong></div><span class="audio-time caption" data-speaker="" data-start="861.351000" data-stop="863.874000">Or people can go to, if they're</span> <span class="audio-time caption" data-speaker="" data-start="863.934000" data-stop="866.478000">having a hard time finding out what to break it down into,</span> <span class="audio-time caption" data-speaker="" data-start="867.018000" data-stop="872.746000">they can go to places like Reddit or IRC, the Emacs channel</span> <span class="audio-time caption" data-speaker="" data-start="872.866000" data-stop="877.573000">there on libera.chat or in meetups and say, okay, this is</span> <span class="audio-time caption" data-speaker="" data-start="877.653000" data-stop="884.757000">where I am now. How do I do this? How do I get there? And that</span> <span class="audio-time caption" data-speaker="" data-start="884.857000" data-stop="889.607000">might be helpful. Anyway,</span> <span class="audio-time caption" data-speaker="" data-start="891.050000" data-stop="893.234000">so those are the four challenges.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="893.000000">00:14:53</span> <strong>Testing BigBlueButton</strong></div><span class="audio-time caption" data-speaker="" data-start="893.235000" data-stop="894.477000">What I want to do today</span> <span class="audio-time caption" data-speaker="" data-start="894.518000" data-stop="900.109000">with the one hour I have is I want to, unless other people</span> <span class="audio-time caption" data-speaker="" data-start="900.450000" data-stop="904.427000">happen to drop into the Big Blue Button, I think that I am also</span> <span class="audio-time caption" data-speaker="" data-start="904.667000" data-stop="907.191000">trying to experiment with except for some reason I'm not</span> <span class="audio-time caption" data-speaker="" data-start="907.231000" data-stop="910.755000">sure I can share my screen, which is a little inconvenient. I</span> <span class="audio-time caption" data-speaker="" data-start="910.795000" data-stop="913.539000">will debug that later. Anyway, what I can do in the</span> <span class="audio-time caption" data-speaker="" data-start="913.579000" data-stop="916.783000">background is start to think about the experience of coming</span> <span class="audio-time caption" data-speaker="" data-start="916.883000" data-stop="922.090000">to Emacs News as a newbie. Hey, @JacksonScholberg is in there! Okay,</span> <span class="audio-time caption" data-speaker="" data-start="922.270000" data-stop="926.216000">theoretically this sort of works. I don't know if people</span> <span class="audio-time caption" data-speaker="" data-start="926.236000" data-stop="930.301000">want to say things. What is going on? Hang on a second.</span> <span class="audio-time caption" data-speaker="" data-start="951.712000" data-stop="955.578000">uh okay uh. Call from the school so we'll have... I asked him to</span> <span class="audio-time caption" data-speaker="" data-start="955.618000" data-stop="958.783000">call me back in one hour and we'll see how that goes. Hello,</span> <span class="audio-time caption" data-speaker="" data-start="958.803000" data-stop="962.889000">@mtendethecreator! Feel free to unmute yourself and</span> <span class="audio-time caption" data-speaker="" data-start="962.929000" data-stop="965.694000">share anything if you want to in the Big Blue Button. In the</span> <span class="audio-time caption" data-speaker="" data-start="965.734000" data-stop="970.081000">meantime, I will continue... I have not actually spent</span> <span class="audio-time caption" data-speaker="" data-start="970.121000" data-stop="972.564000">some time yet thinking about how audio will work with this</span> <span class="audio-time caption" data-speaker="" data-start="973.105000" data-stop="977.822000">because Google Chrome and Mozilla Firefox have a little</span> <span class="audio-time caption" data-speaker="" data-start="977.862000" data-stop="980.667000">bit of a problem, I think, with sharing my audio. Actually,</span> <span class="audio-time caption" data-speaker="" data-start="981.087000" data-stop="984.633000">maybe this. This is a test. Can you hear me through Big Blue</span> <span class="audio-time caption" data-speaker="" data-start="984.693000" data-stop="988.039000">button? Maybe that works. Maybe that doesn't. We'll see.</span> <span class="audio-time caption" data-speaker="" data-start="989.321000" data-stop="993.729000">Okay. And in the meantime, I can just continue with this</span> <span class="audio-time caption" data-speaker="" data-start="993.869000" data-stop="997.295000">until people want to experiment with that part. All right.</span> <span class="audio-time caption" data-speaker="" data-start="998.036000" data-stop="1003.383000">Emacs News. So Emacs News. Hello. It works! It works! People</span> <span class="audio-time caption" data-speaker="" data-start="1003.423000" data-stop="1007.171000">are talking. I mean, people can talk. Thank you very much. I</span> <span class="audio-time caption" data-speaker="" data-start="1007.211000" data-stop="1010.278000">can actually hear you. Feel free to jump in. And for anyone</span> <span class="audio-time caption" data-speaker="" data-start="1010.338000" data-stop="1015.349000">else who also wants to be on stream, kind of, I will paste the</span> <span class="audio-time caption" data-speaker="" data-start="1015.369000" data-stop="1018.094000">Big Blue Button thing again. And all y'all are going to</span> <span class="audio-time caption" data-speaker="" data-start="1018.135000" data-stop="1022.235000">behave yourselves, I hope. We'll see.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1022.000000">00:17:02</span> <strong>Thinking about reviving Emacs Hangouts</strong></div><span class="audio-time caption" data-speaker="" data-start="1022.236000" data-stop="1029.526000">One of my long-term goals would be nice to revive these Emacs Hangouts</span> <span class="audio-time caption" data-speaker="" data-start="1029.527000" data-stop="1036.717000">that I used to do on Google Meet, I think, a long time ago. But of</span> <span class="audio-time caption" data-speaker="" data-start="1036.756000" data-stop="1039.802000">course, we've got Big Blue Button now, so we can do it on</span> <span class="audio-time caption" data-speaker="" data-start="1039.862000" data-stop="1043.026000">proper free and open source software, where people just</span> <span class="audio-time caption" data-speaker="" data-start="1043.127000" data-stop="1045.631000">come and share what they're working on, what they're</span> <span class="audio-time caption" data-speaker="" data-start="1045.811000" data-stop="1048.054000">curious about, what they want to learn. And then we can try</span> <span class="audio-time caption" data-speaker="" data-start="1048.113000" data-stop="1059.485000">these sort of... Now I'm going</span> <span class="audio-time caption" data-speaker="" data-start="1061.189000" data-stop="1066.082000">to try to remember to pause every moment so people can</span> <span class="audio-time caption" data-speaker="" data-start="1066.222000" data-stop="1068.336000">interject.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1068.000000">00:17:48</span> <strong>Emacs News as a newbie</strong></div><span class="audio-time caption" data-speaker="" data-start="1068.337000" data-stop="1076.995000">Emacs News as a new person is a little bit overwhelming. Imagine a</span> <span class="audio-time caption" data-speaker="" data-start="1077.015000" data-stop="1080.483000">newbie says, okay, I'm new to Emacs, what should I read? And</span> <span class="audio-time caption" data-speaker="" data-start="1081.064000" data-stop="1083.750000">people recommend things like, oh, check out the Mastering</span> <span class="audio-time caption" data-speaker="" data-start="1083.810000" data-stop="1092.891000">Emacs book. Read the C-h t tutorial. It's great. It is a great starting point.</span> <span class="audio-time caption" data-speaker="" data-start="1092.892000" data-stop="1096.336000">Oh, if you want to keep up with what's going on, interesting</span> <span class="audio-time caption" data-speaker="" data-start="1096.416000" data-stop="1100.100000">things, and how you get connected to the community, read</span> <span class="audio-time caption" data-speaker="" data-start="1100.120000" data-stop="1105.546000">Emacs News or subscribe to it. So this is a little</span> <span class="audio-time caption" data-speaker="" data-start="1105.906000" data-stop="1109.109000">overwhelming for people.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1109.000000">00:18:29</span> <strong>Aside: Jeff is looking into making VS Code plugins</strong></div><span class="audio-time caption" data-speaker="" data-start="1109.110000" data-stop="1111.432000">Jeff says that he's researching</span> <span class="audio-time caption" data-speaker="" data-start="1111.473000" data-stop="1116.699000">making a VS Code plugin, actually. Good luck! If you run out</span> <span class="audio-time caption" data-speaker="" data-start="1116.759000" data-stop="1119.102000">of things, like if you run into things that you can't do with</span> <span class="audio-time caption" data-speaker="" data-start="1119.142000" data-stop="1123.987000">VS Code, I think some people have experimented with doing</span> <span class="audio-time caption" data-speaker="" data-start="1124.167000" data-stop="1127.490000">Emacs-y things inside VS Code or vice versa. I'm not</span> <span class="audio-time caption" data-speaker="" data-start="1127.550000" data-stop="1132.736000">entirely sure. I can rummage through my notes and see who has</span> <span class="audio-time caption" data-speaker="" data-start="1132.816000" data-stop="1135.639000">mentioned that before. If there was an EmacsConf proposal</span> <span class="audio-time caption" data-speaker="" data-start="1135.679000" data-stop="1137.280000">for it before.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1137.000000">00:18:57</span> <strong>Notes on making the most of Emacs News</strong></div><span class="audio-time caption" data-speaker="" data-start="1137.281000" data-stop="1141.144000">Okay. Anyway, Emacs news. So I have this now</span> <span class="audio-time caption" data-speaker="" data-start="1141.385000" data-stop="1143.927000">where I say, okay, check out these tips for making the most of</span> <span class="audio-time caption" data-speaker="" data-start="1144.047000" data-stop="1156.528000">Emacs news. So like I was saying, I was thinking maybe starting with...</span> <span class="audio-time caption" data-speaker="" data-start="1156.529000" data-stop="1158.692000">Let me find the page that edits this.</span> <span class="audio-time caption" data-speaker="" data-start="1161.896000" data-stop="1166.182000">Topics, Emacs News. Okay.</span> <span class="audio-time caption" data-speaker="" data-start="1168.906000" data-stop="1176.035000">Starting with email is probably the easiest, so I will do that.</span> <span class="audio-time caption" data-speaker="" data-start="1179.002000" data-stop="1183.650000">Do I even want to nudge people to use MailChimp? I don't</span> <span class="audio-time caption" data-speaker="" data-start="1183.730000" data-stop="1190.862000">particularly like MailChimp. This is just Emacs News as</span> <span class="audio-time caption" data-speaker="" data-start="1191.103000" data-stop="1194.649000">either HTML or plain text emails.</span> <span class="audio-time caption" data-speaker="" data-start="1197.714000" data-stop="1203.985000">Includes Org version if you prefer. Oh yeah, I mentioned</span> <span class="audio-time caption" data-speaker="" data-start="1204.005000" data-stop="1209.743000">that here. So that's mine, and then I have an explanation of...</span> <span class="audio-time caption" data-speaker="" data-start="1209.783000" data-stop="1215.789000">If you are reading email email in Emacs... Yes! You</span> <span class="audio-time caption" data-speaker="" data-start="1215.809000" data-stop="1229.763000">can read email in Emacs. You have... All right, so there's that.</span> <span class="audio-time caption" data-speaker="" data-start="1229.764000" data-stop="1237.751000">RSS. So now I have more of a description of how to get it by email.</span> <span class="audio-time caption" data-speaker="" data-start="1240.554000" data-stop="1245.339000">And this goes to the subscription page.</span> <span class="audio-time caption" data-speaker="" data-start="1245.340000" data-stop="1248.603000">People can fill it in. It works like all the other mailing lists</span> <span class="audio-time caption" data-speaker="" data-start="1248.604000" data-stop="1250.625000">people are used to.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1250.000000">00:20:50</span> <strong>RSS</strong></div><span class="audio-time caption" data-speaker="" data-start="1250.626000" data-stop="1255.432000">If people want to subscribe to RSS, new users for Emacs</span> <span class="audio-time caption" data-speaker="" data-start="1255.532000" data-stop="1262.577000">will probably not even know what RSS is. Why they might want</span> <span class="audio-time caption" data-speaker="" data-start="1262.617000" data-stop="1269.308000">to do it. Um...</span> <span class="audio-time caption" data-speaker="" data-start="1269.328000" data-stop="1272.373000">Do I want to explain this here? Okay.</span> <span class="audio-time caption" data-speaker="" data-start="1276.039000" data-stop="1282.129000">Does elfeed come with enough of an explanation so that a user</span> <span class="audio-time caption" data-speaker="" data-start="1282.189000" data-stop="1286.736000">can get started with it?</span> <span class="audio-time caption" data-speaker="" data-start="1288.184000" data-stop="1292.650000">Not very much of an explanation. Okay, is there an elfeed</span> <span class="audio-time caption" data-speaker="" data-start="1293.271000" data-stop="1299.260000">tutorial that I can...</span> <span class="audio-time caption" data-speaker="" data-start="1301.884000" data-stop="1305.689000">I feel like this is not really an elfeed tutorial. I feel like</span> <span class="audio-time caption" data-speaker="" data-start="1305.730000" data-stop="1309.835000">there needs to be like a basic from scratch, "I don't even know</span> <span class="audio-time caption" data-speaker="" data-start="1310.016000" data-stop="1319.457000">which init.el or .config/emacs/init.el or .emacs or whatever</span> <span class="audio-time caption" data-speaker="" data-start="1319.458000" data-stop="1323.681000">thing I should use." There should definitely be a tutorial here.</span> <span class="audio-time caption" data-speaker="" data-start="1323.682000" data-stop="1331.491000">Let's add a comment. I need to actually probably add a tutorial</span> <span class="audio-time caption" data-speaker="" data-start="1331.492000" data-stop="1335.336000">for setting up elfeed from scratch.</span> <span class="audio-time caption" data-speaker="" data-start="1339.130000" data-stop="1343.195000">Okay, is there a feedreader that people like to use?</span> <span class="audio-time caption" data-speaker="" data-start="1343.196000" data-stop="1354.031000">So why RSS? RSS lets you read updates from sites that support it in a</span> <span class="audio-time caption" data-speaker="" data-start="1354.191000" data-stop="1360.800000">way that's more structured, that's separate from email,</span> <span class="audio-time caption" data-speaker="" data-start="1367.193000" data-stop="1369.096000">without using your email client.</span> <span class="audio-time caption" data-speaker="" data-start="1376.808000" data-stop="1384.561000">Why RSS? This is like a nice friendly description. Get updates.</span> <span class="audio-time caption" data-speaker="" data-start="1390.730000" data-stop="1392.373000">You can also...</span> <span class="audio-time caption" data-speaker="" data-start="1394.682000" data-stop="1397.586000">That's not very much of a Why RSS</span> <span class="audio-time caption" data-speaker="" data-start="1400.409000" data-stop="1410.041000">sort of thing. Why RSS versus email... Which is handy when you</span> <span class="audio-time caption" data-speaker="" data-start="1410.081000" data-stop="1422.913000">find email overwhelming. If you find email overwhelming.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1422.000000">00:23:42</span> <strong>newsticker</strong></div><span class="audio-time caption" data-speaker="" data-start="1422.914000" data-stop="1429.269000">Okay, newsticker. I will also add...</span> <span class="audio-time caption" data-speaker="" data-start="1429.851000" data-stop="1433.820000">@charliemcmackin4859 suggests newsticker. It seems pretty friendly.</span> <span class="audio-time caption" data-speaker="" data-start="1435.524000" data-stop="1440.957000">There is a newsticker feed reader for Emacs. Okay.</span> <span class="audio-time caption" data-speaker="" data-start="1454.470000" data-stop="1457.434000">Is there a newsticker Emacs tutorial</span> <span class="audio-time caption" data-speaker="" data-start="1460.018000" data-stop="1460.959000">that I can link to?</span> <span class="audio-time caption" data-speaker="" data-start="1468.470000" data-stop="1468.930000">Okay.</span> <span class="audio-time caption" data-speaker="" data-start="1475.299000" data-stop="1476.200000">So this is like...</span> <span class="audio-time caption" data-speaker="" data-start="1479.285000" data-stop="1490.574000">use customize-variable... Is there a newsticker?</span> <span class="audio-time caption" data-speaker="" data-start="1490.575000" data-stop="1494.640000">There's load-library, newsticker.</span> <span class="audio-time caption" data-speaker="" data-start="1497.945000" data-stop="1502.531000">newsticker-url-list. Okay, let's go see what that looks</span> <span class="audio-time caption" data-speaker="" data-start="1502.551000" data-stop="1504.894000">like. Okay.</span> <span class="audio-time caption" data-speaker="" data-start="1508.419000" data-stop="1511.963000">I need to load the library before I can do that.</span> <span class="audio-time caption" data-speaker="" data-start="1511.964000" data-stop="1516.590000">load-library newsticker to load it.</span> <span class="audio-time caption" data-speaker="" data-start="1521.751000" data-stop="1524.176000">newsticker-url-list.</span> <span class="audio-time caption" data-speaker="" data-start="1527.522000" data-stop="1533.233000">Okay. Click on INS and add...</span> <span class="audio-time caption" data-speaker="" data-start="1542.130000" data-stop="1543.573000">Oh, as a URI...</span> <span class="audio-time caption" data-speaker="" data-start="1555.501000" data-stop="1556.883000">Click on INS.</span> <span class="audio-time caption" data-speaker="" data-start="1562.693000" data-stop="1568.863000">Emacs News URI. That...</span> <span class="audio-time caption" data-speaker="" data-start="1572.969000" data-stop="1579.800000">Okay, let's try it ourselves. Emacs News.</span> <span class="audio-time caption" data-speaker="" data-start="1579.801000" data-stop="1581.964000">And that is the URI.</span> <span class="audio-time caption" data-speaker="" data-start="1584.239000" data-stop="1587.362000">Huh, I never actually used this.</span> <span class="audio-time caption" data-speaker="" data-start="1587.363000" data-stop="1589.226000">Okay, I'll click on apply and save.</span> <span class="audio-time caption" data-speaker="" data-start="1596.276000" data-stop="1600.061000">And then, how do you actually watch it? I mean, look at it.</span> <span class="audio-time caption" data-speaker="" data-start="1600.062000" data-stop="1609.335000">newsticker. newsticker-start? No, it's not like that. Okay.</span> <span class="audio-time caption" data-speaker="" data-start="1609.355000" data-stop="1610.837000">newsticker-show-news.</span> <span class="audio-time caption" data-speaker="" data-start="1614.547000" data-stop="1620.258000">Oh, okay, okay. newsticker-show-news. Alright, okay,</span> <span class="audio-time caption" data-speaker="" data-start="1620.278000" data-stop="1625.128000">okay. That is newsticker. That is fairly easy to get started</span> <span class="audio-time caption" data-speaker="" data-start="1625.208000" data-stop="1631.661000">with. So let's recommend that. So this is set up.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1645.000000">00:27:25</span> <strong>Stream delay</strong></div><span class="audio-time caption" data-speaker="" data-start="1645.259000" data-stop="1650.967000">We are slightly delayed, @charliemcmackin4859 says. It is because I am</span> <span class="audio-time caption" data-speaker="" data-start="1651.047000" data-stop="1655.794000">trying to have a 10 second stream delay in case I do silly</span> <span class="audio-time caption" data-speaker="" data-start="1655.854000" data-stop="1662.102000">things like accidentally show my entire email screen</span> <span class="audio-time caption" data-speaker="" data-start="1662.503000" data-stop="1666.549000">online and other such things. I have a panic keyboard</span> <span class="audio-time caption" data-speaker="" data-start="1666.569000" data-stop="1669.993000">shortcut and a panic menu item. This is the panic menu item.</span> <span class="audio-time caption" data-speaker="" data-start="1670.054000" data-stop="1675.089000">See, it says panic, which kills the stream. I previously</span> <span class="audio-time caption" data-speaker="" data-start="1675.209000" data-stop="1679.255000">had another OBS that this could stream to in order for it to</span> <span class="audio-time caption" data-speaker="" data-start="1679.295000" data-stop="1683.560000">switch to a backup message if I cut the streaming, but for</span> <span class="audio-time caption" data-speaker="" data-start="1683.601000" data-stop="1686.845000">some reason that one is segfaulting constantly when I start</span> <span class="audio-time caption" data-speaker="" data-start="1686.905000" data-stop="1690.410000">streaming from that second OBS instance, so I need to look at</span> <span class="audio-time caption" data-speaker="" data-start="1690.470000" data-stop="1693.714000">that more. But yes, now we have a little bit of a stream delay,</span> <span class="audio-time caption" data-speaker="" data-start="1694.115000" data-stop="1698.241000">and 10 seconds is a bit long, but apparently my reflexes and</span> <span class="audio-time caption" data-speaker="" data-start="1698.261000" data-stop="1701.405000">my panicking are still kind of tough at the moment.</span> <span class="audio-time caption" data-speaker="" data-start="1701.740000" data-stop="1704.363000">Eventually, when I get better at saying okay, I know</span> <span class="audio-time caption" data-speaker="" data-start="1704.383000" data-stop="1706.645000">which keyboard shortcut to go, I can reduce the</span> <span class="audio-time caption" data-speaker="" data-start="1706.685000" data-stop="1711.068000">delay, but yes. All right.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1711.000000">00:28:31</span> <strong>Reading news with newsticker</strong></div><span class="audio-time caption" data-speaker="" data-start="1711.069000" data-stop="1714.131000">Reading news... This is.. what is this again...</span> <span class="audio-time caption" data-speaker="" data-start="1714.132000" data-stop="1719.236000">That was newsticker-show-news. Thank you so much.</span> <span class="audio-time caption" data-speaker="" data-start="1719.237000" data-stop="1723.400000">So that was a very helpful tip from @charliemcmackin4859.</span> <span class="audio-time caption" data-speaker="" data-start="1723.401000" data-stop="1728.070000">Okay so there's the tutorial, mini tutorial...</span> <span class="audio-time caption" data-speaker="" data-start="1728.071000" data-stop="1733.504000">Elfeed is slightly more complicated, but also quite useful.</span> <span class="audio-time caption" data-speaker="" data-start="1733.505000" data-stop="1740.079000">Okay, so we can just move this one for now.</span> <span class="audio-time caption" data-speaker="" data-start="1740.080000" data-stop="1744.723000">We should show people what it looks like.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1744.000000">00:29:04</span> <strong>The usefulness of screenshots and videos</strong></div><span class="audio-time caption" data-speaker="" data-start="1744.724000" data-stop="1746.265000">So @mehrad42 says, when I</span> <span class="audio-time caption" data-speaker="" data-start="1746.325000" data-stop="1749.148000">started with Emacs, one of the biggest issues was not to know</span> <span class="audio-time caption" data-speaker="" data-start="1749.188000" data-stop="1752.651000">what each package does. Some have a picture or video or ASCII</span> <span class="audio-time caption" data-speaker="" data-start="1752.671000" data-stop="1758.856000">cinema, but most of them don't. Yeah, that's definitely a</span> <span class="audio-time caption" data-speaker="" data-start="1758.917000" data-stop="1762.079000">thing. It would be great for more packages to have</span> <span class="audio-time caption" data-speaker="" data-start="1762.099000" data-stop="1766.223000">screenshots and descriptions, and videos show workflows</span> <span class="audio-time caption" data-speaker="" data-start="1766.283000" data-stop="1772.850000">better than just... Since</span> <span class="audio-time caption" data-speaker="" data-start="1775.333000" data-stop="1777.916000">the people making packages and the people making videos or</span> <span class="audio-time caption" data-speaker="" data-start="1777.976000" data-stop="1780.479000">screenshots or blog posts are not necessarily the same</span> <span class="audio-time caption" data-speaker="" data-start="1780.519000" data-stop="1785.765000">people, we should have a different way of finding the</span> <span class="audio-time caption" data-speaker="" data-start="1786.105000" data-stop="1791.430000">resources related to a package that might be helpful.</span> <span class="audio-time caption" data-speaker="" data-start="1791.531000" data-stop="1796.806000">Where was I? I was actually taking a picture, adding a</span> <span class="audio-time caption" data-speaker="" data-start="1796.866000" data-stop="1800.552000">screenshot of this, right? Okay, so let's show this</span> <span class="audio-time caption" data-speaker="" data-start="1800.652000" data-stop="1805.499000">screenshot over here. And I want to show, this is what it</span> <span class="audio-time caption" data-speaker="" data-start="1805.659000" data-stop="1811.268000">looks like. And I take a screenshot using my [super-s] and this is</span> <span class="audio-time caption" data-speaker="" data-start="1811.608000" data-stop="1816.495000">the newsticker thing.</span> <span class="audio-time caption" data-speaker="" data-start="1816.496000" data-stop="1819.580000">And then I'm going to stick that in this page.</span> <span class="audio-time caption" data-speaker="" data-start="1822.074000" data-stop="1825.481000">And this is what it looks like. This is what I'm saying.</span> <span class="audio-time caption" data-speaker="" data-start="1825.501000" data-stop="1826.484000">Insert screenshot.</span> <span class="audio-time caption" data-speaker="" data-start="1832.116000" data-stop="1833.819000">That is not the last screenshot.</span> <span class="audio-time caption" data-speaker="" data-start="1833.820000" data-stop="1834.882000">Where did the screenshot go?</span> <span class="audio-time caption" data-speaker="" data-start="1837.968000" data-stop="1839.712000">Oh, hang on a second.</span> <span class="audio-time caption" data-speaker="" data-start="1843.421000" data-stop="1847.586000">Okay, newsticker. There we go. That's because the recording</span> <span class="audio-time caption" data-speaker="" data-start="1847.626000" data-stop="1852.511000">keeps getting bigger. So this is a screenshot of</span> <span class="audio-time caption" data-speaker="" data-start="1852.591000" data-stop="1858.438000">newsticker. There you go. People can then see and decide for</span> <span class="audio-time caption" data-speaker="" data-start="1858.478000" data-stop="1865.506000">themselves: is this worth it? Because inspiration is...</span> <span class="audio-time caption" data-speaker="" data-start="1866.186000" data-stop="1871.942000">The things that people struggle with when it comes to</span> <span class="audio-time caption" data-speaker="" data-start="1872.062000" data-stop="1874.504000">overwhelming, there's a lot of stuff to get through.</span> <span class="audio-time caption" data-speaker="" data-start="1874.505000" data-stop="1876.528000">The main question that newbies will have is, is</span> <span class="audio-time caption" data-speaker="" data-start="1876.588000" data-stop="1882.035000">this worth it? Is it worth it to read this tutorial or figure</span> <span class="audio-time caption" data-speaker="" data-start="1882.076000" data-stop="1885.881000">out how to fit this package into my config, figure out how to</span> <span class="audio-time caption" data-speaker="" data-start="1886.141000" data-stop="1890.702000">set up my config in the first place? Having a</span> <span class="audio-time caption" data-speaker="" data-start="1890.782000" data-stop="1895.309000">screenshot or a video up front makes it much easier for</span> <span class="audio-time caption" data-speaker="" data-start="1895.369000" data-stop="1899.095000">people to say, "Yes, I want that, and I'm willing to spend one</span> <span class="audio-time caption" data-speaker="" data-start="1899.135000" data-stop="1904.563000">or two hours to figure out how to get that working."</span> <span class="audio-time caption" data-speaker="" data-start="1904.564000" data-stop="1906.947000">I want to add a screenshot to this one, of course, so that</span> <span class="audio-time caption" data-speaker="" data-start="1907.007000" data-stop="1911.534000">people can see what it looks like. And in fact, why don't I</span> <span class="audio-time caption" data-speaker="" data-start="1911.614000" data-stop="1916.442000">stick this up here so people can see right away.</span> <span class="audio-time caption" data-speaker="" data-start="1920.675000" data-stop="1925.500000">Let's see what that page looks like if I have that.</span> <span class="audio-time caption" data-speaker="" data-start="1929.464000" data-stop="1934.007000">Blog Emacs News. Oh, that's not it actually.</span> <span class="audio-time caption" data-speaker="" data-start="1934.008000" data-stop="1939.993000">This is topic Emacs News. All right.</span> <span class="audio-time caption" data-speaker="" data-start="1939.994000" data-stop="1941.695000">It is not actually showing up.</span> <span class="audio-time caption" data-speaker="" data-start="1941.696000" data-stop="1947.121000">Why isn't it showing up? That shows up there. Okay, good.</span> <span class="audio-time caption" data-speaker="" data-start="1951.455000" data-stop="1956.140000">My export is not exporting.</span> <span class="audio-time caption" data-speaker="" data-start="1960.886000" data-stop="1969.535000">Fun. Okay. Hang on a second. Let's look at the HTML. I expect</span> <span class="audio-time caption" data-speaker="" data-start="1969.595000" data-stop="1970.997000">that to just have</span> <span class="audio-time caption" data-speaker="" data-start="1974.020000" data-stop="1979.927000">~/proj/static-blog/topic/emacs-news/index.html.</span> <span class="audio-time caption" data-speaker="" data-start="1979.928000" data-stop="1982.553000">I expect that to have the image. It does not have the image.</span> <span class="audio-time caption" data-speaker="" data-start="1982.554000" data-stop="1983.876000">Why does it not have the image?</span> <span class="audio-time caption" data-speaker="" data-start="1989.929000" data-stop="1996.261000">Is it because it has a description? Derp.</span> <span class="audio-time caption" data-speaker="" data-start="1996.262000" data-stop="1998.286000">Okay, let's try that once more with feeling.</span> <span class="audio-time caption" data-speaker="" data-start="2007.277000" data-stop="2012.202000">Yes! Okay, okay, okay. Almost. All right.</span> <span class="audio-time caption" data-speaker="" data-start="2012.203000" data-stop="2022.175000">Now my caption is not captioning. Is it because...</span> <span class="audio-time caption" data-speaker="" data-start="2022.195000" data-stop="2025.439000">Is it because it's a list and it's getting confused because</span> <span class="audio-time caption" data-speaker="" data-start="2025.499000" data-stop="2030.965000">it's not a block? Okay, okay, okay. Here's a preview. Here's</span> <span class="audio-time caption" data-speaker="" data-start="2031.006000" data-stop="2034.770000">what newsticker looks like.</span> <span class="audio-time caption" data-speaker="" data-start="2039.576000" data-stop="2045.884000">Built into Emacs.</span> <span class="audio-time caption" data-speaker="" data-start="2045.904000" data-stop="2049.427000">Progress! Progress. @JacksonScholberg says it's gotta be</span> <span class="audio-time caption" data-speaker="" data-start="2049.428000" data-stop="2054.774000">ASCII Cinema. I actually haven't been using ASCII Cinema.</span> <span class="audio-time caption" data-speaker="" data-start="2054.775000" data-stop="2056.455000">I should probably check that out too.</span> <span class="audio-time caption" data-speaker="" data-start="2056.456000" data-stop="2060.902000">I've just been recording videos.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2060.000000">00:34:20</span> <strong>Back to Emacs News</strong></div><span class="audio-time caption" data-speaker="" data-start="2060.922000" data-stop="2067.210000">Okay, okay. So now on my topic, Emacs News. Has it been copied</span> <span class="audio-time caption" data-speaker="" data-start="2067.290000" data-stop="2074.306000">over yet? We are making things better live. This is great.</span> <span class="audio-time caption" data-speaker="" data-start="2077.739000" data-stop="2081.935000">Okay.</span> <span class="audio-time caption" data-speaker="" data-start="2084.261000" data-stop="2085.923000">Do I want to always, like...</span> <span class="audio-time caption" data-speaker="" data-start="2085.924000" data-stop="2087.646000">People are scrolling through this.</span> <span class="audio-time caption" data-speaker="" data-start="2087.647000" data-stop="2092.614000">Yeah, it's fine. I can put that in a details disclosure</span> <span class="audio-time caption" data-speaker="" data-start="2092.674000" data-stop="2096.220000">thingy if they want to not see it unless they</span> <span class="audio-time caption" data-speaker="" data-start="2096.259000" data-stop="2098.984000">click on it. It's there. People can scroll. It's fine.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2100.000000">00:35:00</span> <strong>Prerequisite knowledge for Elfeed</strong></div><span class="audio-time caption" data-speaker="" data-start="2100.146000" data-stop="2103.171000">Elfeed is a separate package. You'll need to know how to</span> <span class="audio-time caption" data-speaker="" data-start="2103.251000" data-stop="2108.359000">install packages. You'll need to know how to add... Is it</span> <span class="audio-time caption" data-speaker="" data-start="2108.520000" data-stop="2109.982000">available? Where is it available?</span> <span class="audio-time caption" data-speaker="" data-start="2113.961000" data-stop="2118.086000">It is MELPA or el-get so people would have to know how to to</span> <span class="audio-time caption" data-speaker="" data-start="2118.687000" data-stop="2128.178000">enable MELPA, which is not listed here,</span> <span class="audio-time caption" data-speaker="" data-start="2128.179000" data-stop="2132.984000">so this is a bit more advanced. You'll need...</span> <span class="audio-time caption" data-speaker="" data-start="2132.985000" data-stop="2136.690000">Then nnrss and Gnus is like way advanced, so</span> <span class="audio-time caption" data-speaker="" data-start="2136.750000" data-stop="2138.643000">Elfeed is more of an intermediate.</span> <span class="audio-time caption" data-speaker="" data-start="2138.644000" data-stop="2144.043000">Newsticker's basic. You're right, this is what we</span> <span class="audio-time caption" data-speaker="" data-start="2144.063000" data-stop="2145.785000">should probably recommend if people are just getting</span> <span class="audio-time caption" data-speaker="" data-start="2145.825000" data-stop="2149.949000">started. Which means I should include it in</span> <span class="audio-time caption" data-speaker="" data-start="2150.509000" data-stop="2161.760000">here. News... Do I say elfeed somewhere here?</span> <span class="audio-time caption" data-speaker="" data-start="2162.000000" data-stop="2165.964000">Oh actually, emacs-news.html.</span> <span class="audio-time caption" data-speaker="" data-start="2166.845000" data-stop="2172.357000">This is the header part here. Use newsticker. That means I</span> <span class="audio-time caption" data-speaker="" data-start="2172.398000" data-stop="2182.515000">a tip instead.</span> <span class="audio-time caption" data-speaker="" data-start="2188.325000" data-stop="2194.475000">This is like, topic emacs news, how to subscribe.</span> <span class="audio-time caption" data-speaker="" data-start="2205.170000" data-stop="2213.101000">Oh, I'm not in Org Mode. I can't just use those links. I'm sad.</span> <span class="audio-time caption" data-speaker="" data-start="2213.121000" data-stop="2215.825000">Topic, Emacs News.</span> <span class="audio-time caption" data-speaker="" data-start="2223.055000" data-stop="2230.486000">Fine. Write HTML. Okay, here we go. So now the tip is there.</span> <span class="audio-time caption" data-speaker="" data-start="2232.913000" data-stop="2236.781000">and I can send that to my blog in the background.</span> <span class="audio-time caption" data-speaker="" data-start="2240.510000" data-stop="2249.368000">Progress is being made! Where are we now?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2249.000000">00:37:29</span> <strong>Other resources that people might find useful</strong></div><span class="audio-time caption" data-speaker="" data-start="2249.369000" data-stop="2252.255000">Other resources that people might find useful...</span> <span class="audio-time caption" data-speaker="" data-start="2256.892000" data-stop="2265.201000">EmacsWiki has a newbie sort of page. Here we go. This is</span> <span class="audio-time caption" data-speaker="" data-start="2265.261000" data-stop="2272.388000">where I want to gradually start adding stuff.</span> <span class="audio-time caption" data-speaker="" data-start="2272.408000" data-stop="2282.036000">I cannot... Emacs newbie page on Emacs wiki.</span> <span class="audio-time caption" data-speaker="" data-start="2282.037000" data-stop="2286.043000">Okay, so if people are starting out, I</span> <span class="audio-time caption" data-speaker="" data-start="2286.123000" data-stop="2289.989000">want them to come across the Emacs Newbie page for sure.</span> <span class="audio-time caption" data-speaker="" data-start="2298.883000" data-stop="2306.495000">What else should they find out about? So let's go see.</span> <span class="audio-time caption" data-speaker="" data-start="2308.257000" data-stop="2312.490000">Fairly straightforward. I don't know if Emacs Newbie with</span> <span class="audio-time caption" data-speaker="" data-start="2312.530000" data-stop="2324.043000">Icicles is, uh... Well...</span> <span class="audio-time caption" data-speaker="" data-start="2324.063000" data-stop="2328.888000">I feel a little uncertain about this recommendation, but I</span> <span class="audio-time caption" data-speaker="" data-start="2328.928000" data-stop="2331.291000">don't want to take it all away, because someone's put a lot of</span> <span class="audio-time caption" data-speaker="" data-start="2331.311000" data-stop="2336.457000">work into it. Maybe it might be helpful to add some other</span> <span class="audio-time caption" data-speaker="" data-start="2336.477000" data-stop="2341.229000">stuff. Okay, anyway. Help. So i need to make sure there's a</span> <span class="audio-time caption" data-speaker="" data-start="2341.490000" data-stop="2344.234000">way for people to get help. Yes.</span> <span class="audio-time caption" data-speaker="" data-start="2347.980000" data-stop="2348.180000">Okay.</span> <span class="audio-time caption" data-speaker="" data-start="2353.007000" data-stop="2355.231000">The beginner map thing that I mentioned,</span> <span class="audio-time caption" data-speaker="" data-start="2358.316000" data-stop="2359.918000">which I do not have...</span> <span class="audio-time caption" data-speaker="" data-start="2368.892000" data-stop="2370.314000">I should have as a...</span> <span class="audio-time caption" data-speaker="" data-start="2374.601000" data-stop="2380.151000">Beginner resources from Emacs News Archives.</span> <span class="audio-time caption" data-speaker="" data-start="2383.736000" data-stop="2386.301000">And How to Learn Emacs.</span> <span class="audio-time caption" data-speaker="" data-start="2388.905000" data-stop="2391.389000">That's definitely a thing.</span> <span class="audio-time caption" data-speaker="" data-start="2408.480000" data-stop="2413.306000">Oh, yeah, let's mention Planet Emacslife. So we're just</span> <span class="audio-time caption" data-speaker="" data-start="2413.327000" data-stop="2415.730000">going to link up a bunch of things here for now.</span> <span class="audio-time caption" data-speaker="" data-start="2418.513000" data-stop="2427.746000">And, um...</span> <span class="audio-time caption" data-speaker="" data-start="2427.766000" data-stop="2435.036000">Where are we? I'm very confused. Did I accidentally close my</span> <span class="audio-time caption" data-speaker="" data-start="2436.357000" data-stop="2437.559000">Big Blue Button thing?</span> <span class="audio-time caption" data-speaker="" data-start="2440.442000" data-stop="2446.969000">Oh, no, we're still here. Planet Emacslife aggregator</span> <span class="audio-time caption" data-speaker="" data-start="2446.970000" data-stop="2453.257000">brings together lots of Emacs-related blog posts.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2456.000000">00:40:56</span> <strong>Beginner map</strong></div><span class="audio-time caption" data-speaker="" data-start="2456.241000" data-stop="2460.666000">You know, this thing over here needs to have me saying,</span> <span class="audio-time caption" data-speaker="" data-start="2461.107000" data-stop="2465.252000">Hey, if you need help navigating this, please email me.</span> <span class="audio-time caption" data-speaker="" data-start="2466.413000" data-stop="2473.606000">Where is this even? Beginner map. Okay, if you need</span> <span class="audio-time caption" data-speaker="" data-start="2474.507000" data-stop="2480.960000">help navigating this or would like to suggest other</span> <span class="audio-time caption" data-speaker="" data-start="2481.060000" data-stop="2485.969000">beginner related resources, please email me.</span> <span class="audio-time caption" data-speaker="" data-start="2489.295000" data-stop="2497.673000">Alright. Let's explain why I'm doing this. I want to make a</span> <span class="audio-time caption" data-speaker="" data-start="2497.693000" data-stop="2504.584000">map of those things people often wonder about when they're</span> <span class="audio-time caption" data-speaker="" data-start="2504.644000" data-stop="2509.852000">learning so that you can find what's close by.</span> <span class="audio-time caption" data-speaker="" data-start="2519.653000" data-stop="2523.479000">Maybe we'll add...</span> <span class="audio-time caption" data-speaker="" data-start="2531.631000" data-stop="2538.201000">Theoretically, unless weird things happen, I should have</span> <span class="audio-time caption" data-speaker="" data-start="2538.262000" data-stop="2542.908000">that introduction.</span> <span class="audio-time caption" data-speaker="" data-start="2542.909000" data-stop="2545.392000">It's always good for people to have contact information.</span> <span class="audio-time caption" data-speaker="" data-start="2545.393000" data-stop="2548.377000">There you go. Okay.</span> <span class="audio-time caption" data-speaker="" data-start="2549.842000" data-stop="2552.685000">So that gives them a list of the things that are in this,</span> <span class="audio-time caption" data-speaker="" data-start="2555.589000" data-stop="2564.239000">and then it gives them, like, themes.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2564.000000">00:42:44</span> <strong>emacs-news/index.org is 5.5 MB of plain text</strong></div><span class="audio-time caption" data-speaker="" data-start="2564.259000" data-stop="2570.466000">Okay, okay, okay. Back to Emacs news. So Emacs Newbie, plan an</span> <span class="audio-time caption" data-speaker="" data-start="2570.547000" data-stop="2574.231000">Emacs life, map of some beginner resources. What do people</span> <span class="audio-time caption" data-speaker="" data-start="2574.331000" data-stop="2577.655000">also find helpful?</span> <span class="audio-time caption" data-speaker="" data-start="2586.765000" data-stop="2588.045000">Yeah, there are tons of resources.</span> <span class="audio-time caption" data-speaker="" data-start="2588.046000" data-stop="2591.908000">So @JacksonScholberg says, I didn't know there were so</span> <span class="audio-time caption" data-speaker="" data-start="2591.909000" data-stop="2594.652000">many resources for Emacs. There are tons</span> <span class="audio-time caption" data-speaker="" data-start="2594.752000" data-stop="2599.496000">of resources for Emacs. In fact, if you want to go through all</span> <span class="audio-time caption" data-speaker="" data-start="2599.536000" data-stop="2603.459000">the ones that I've posted in my Emacs news thus far,</span> <span class="audio-time caption" data-speaker="" data-start="2607.122000" data-stop="2611.946000">this file over here is five megabytes and basically</span> <span class="audio-time caption" data-speaker="" data-start="2612.146000" data-stop="2617.410000">includes all the links, links, links, so many links. ever</span> <span class="audio-time caption" data-speaker="" data-start="2617.511000" data-stop="2624.979000">since the first one that I have in this thing. It's long and</span> <span class="audio-time caption" data-speaker="" data-start="2625.220000" data-stop="2628.798000">it's in Org Mode, so you can you can just search through</span> <span class="audio-time caption" data-speaker="" data-start="2628.818000" data-stop="2632.964000">the categories you're interested in, or you can use occur or</span> <span class="audio-time caption" data-speaker="" data-start="2633.004000" data-stop="2635.246000">this new command that I just found out about.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2635.000000">00:43:55</span> <strong>consult-focus-lines</strong></div><span class="audio-time caption" data-speaker="" data-start="2635.247000" data-stop="2640.353000">If you have consult, you can consult-focus-lines and it will do kind of</span> <span class="audio-time caption" data-speaker="" data-start="2640.413000" data-stop="2644.779000">like occur but within your regular buffer. So it just</span> <span class="audio-time caption" data-speaker="" data-start="2644.819000" data-stop="2649.025000">focuses on the lines that match or don't match a specific</span> <span class="audio-time caption" data-speaker="" data-start="2650.006000" data-stop="2653.269000">expression. Anyway, there are a lot.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2653.000000">00:44:13</span> <strong>Organizing the links</strong></div><span class="audio-time caption" data-speaker="" data-start="2653.270000" data-stop="2656.853000">What I'm thinking of doing is I'm thinking of going through</span> <span class="audio-time caption" data-speaker="" data-start="2656.854000" data-stop="2660.397000">all the things that said beginner, anything that I stuck</span> <span class="audio-time caption" data-speaker="" data-start="2660.398000" data-stop="2666.984000">in the beginner category, and filing that somewhere in the map.</span> <span class="audio-time caption" data-speaker="" data-start="2666.985000" data-stop="2670.288000">So for example, here, this is a kind of a meta discussion.</span> <span class="audio-time caption" data-speaker="" data-start="2670.289000" data-stop="2674.654000">How do you deal with that overwhelm problem where you're like,</span> <span class="audio-time caption" data-speaker="" data-start="2674.674000" data-stop="2677.017000">I'm overwhelmed by the number of key bindings that I want to</span> <span class="audio-time caption" data-speaker="" data-start="2677.097000" data-stop="2680.764000">learn. And there's a discussion here about, yeah, you know,</span> <span class="audio-time caption" data-speaker="" data-start="2680.844000" data-stop="2683.447000">do the tutorial, then take advantage of which-key, make sure</span> <span class="audio-time caption" data-speaker="" data-start="2683.467000" data-stop="2687.572000">which key is enabled, memorize the basic movement keys, and</span> <span class="audio-time caption" data-speaker="" data-start="2687.652000" data-stop="2691.036000">then start, you know, start using Post-it notes.</span> <span class="audio-time caption" data-speaker="" data-start="2692.078000" data-stop="2694.281000">Everything's fine. You can just stick a Post-it note on the</span> <span class="audio-time caption" data-speaker="" data-start="2694.321000" data-stop="2697.885000">thing. Yeah. So there are a lot of beginner related</span> <span class="audio-time caption" data-speaker="" data-start="2697.965000" data-stop="2701.049000">resources and there are a ton of other resources for other</span> <span class="audio-time caption" data-speaker="" data-start="2701.089000" data-stop="2702.590000">things.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2702.000000">00:45:02</span> <strong>Organizing screenshots and videos by package</strong></div><span class="audio-time caption" data-speaker="" data-start="2702.591000" data-stop="2707.812000">So what I probably can do is to help with a newbie</span> <span class="audio-time caption" data-speaker="" data-start="2708.233000" data-stop="2711.977000">issue where they're curious about learning Emacs, they</span> <span class="audio-time caption" data-speaker="" data-start="2712.017000" data-stop="2714.320000">don't know whether it's going to be worth spending the time</span> <span class="audio-time caption" data-speaker="" data-start="2714.420000" data-stop="2720.687000">to do it, is I can look for or keep an eye out for interesting</span> <span class="audio-time caption" data-speaker="" data-start="2720.767000" data-stop="2724.872000">videos that come, you know, or screenshots that come along</span> <span class="audio-time caption" data-speaker="" data-start="2724.912000" data-stop="2728.175000">with detailed tutorials on how to get started.</span> <span class="audio-time caption" data-speaker="" data-start="2728.176000" data-stop="2733.562000">Let's say, for example, Org Mode Latex Export or how to set up your Emacs</span> <span class="audio-time caption" data-speaker="" data-start="2733.622000" data-stop="2738.054000">for JavaScript development. And then I can say, okay, if</span> <span class="audio-time caption" data-speaker="" data-start="2738.075000" data-stop="2740.201000">you're starting out, these are some of the things that you</span> <span class="audio-time caption" data-speaker="" data-start="2740.642000" data-stop="2743.871000">might typically be interested in. How do you get started</span> <span class="audio-time caption" data-speaker="" data-start="2743.931000" data-stop="2749.008000">with it for note-taking, for example.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2749.000000">00:45:49</span> <strong>Info pages</strong></div><span class="audio-time caption" data-speaker="" data-start="2749.009000" data-stop="2754.362000">@mehrad42 says, also info pages are a very good source of information.</span> <span class="audio-time caption" data-speaker="" data-start="2754.363000" data-stop="2758.386000">The info pages' key bindings are a bit odd at first, so need some</span> <span class="audio-time caption" data-speaker="" data-start="2758.567000" data-stop="2764.271000">explanation. We should say that in the Emacs news,</span> <span class="audio-time caption" data-speaker="" data-start="2764.411000" data-stop="2767.874000">assuming people are starting out from scratch and they</span> <span class="audio-time caption" data-speaker="" data-start="2767.934000" data-stop="2773.980000">don't know how to get help. It's kind of something</span> <span class="audio-time caption" data-speaker="" data-start="2774.040000" data-stop="2780.222000">about... Also the Emacs and Org Mode manuals are great. You can</span> <span class="audio-time caption" data-speaker="" data-start="2780.362000" data-stop="2793.758000">read them as within Emacs with C-h i, with M-x info.</span> <span class="audio-time caption" data-speaker="" data-start="2796.882000" data-stop="2798.064000">Yeah, that's C-h i.</span> <span class="audio-time caption" data-speaker="" data-start="2803.791000" data-stop="2820.185000">Or find them on... Emacs manual, and the Org one is here as well.</span> <span class="audio-time caption" data-speaker="" data-start="2825.632000" data-stop="2825.972000">Okay.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2828.000000">00:47:08</span> <strong>Remembering keybindings</strong></div><span class="audio-time caption" data-speaker="" data-start="2828.696000" data-stop="2833.482000">@maxfriis says try to articulate what you want to do with words</span> <span class="audio-time caption" data-speaker="" data-start="2833.483000" data-stop="2841.780000">that start with a key binding. To easily memorize key bindings.</span> <span class="audio-time caption" data-speaker="" data-start="2841.781000" data-stop="2851.259000">I like to use M-x. M-x also shows keybindings. I have it</span> <span class="audio-time caption" data-speaker="" data-start="2851.340000" data-stop="2856.810000">set up with marginalia and consult, which I think might be</span> <span class="audio-time caption" data-speaker="" data-start="2856.890000" data-stop="2862.020000">too advanced for newbies, but definitely completion is one</span> <span class="audio-time caption" data-speaker="" data-start="2862.081000" data-stop="2866.806000">of the things I like to get people up and running first.</span> <span class="audio-time caption" data-speaker="" data-start="2866.807000" data-stop="2869.712000">Is there like a recommended quick start?</span> <span class="audio-time caption" data-speaker="" data-start="2869.713000" data-stop="2873.539000">Here, you're brand new to Emacs. Get this going.</span> <span class="audio-time caption" data-speaker="" data-start="2873.540000" data-stop="2876.805000">I guess that's where the newcomer presets thing comes in</span> <span class="audio-time caption" data-speaker="" data-start="2876.806000" data-stop="2879.110000">and I should see what's inside it.</span> <span class="audio-time caption" data-speaker="" data-start="2880.525000" data-stop="2886.571000">Emacs says try to articulate what you want to do with words</span> <span class="audio-time caption" data-speaker="" data-start="2886.591000" data-stop="2888.593000">that start with a keybinding to easily memorize</span> <span class="audio-time caption" data-speaker="" data-start="2888.633000" data-stop="2891.636000">keybindings with the letter used in the keybinding. So this</span> <span class="audio-time caption" data-speaker="" data-start="2891.736000" data-stop="2896.400000">is advice to make your keybindings mnemonic, to make them</span> <span class="audio-time caption" data-speaker="" data-start="2896.420000" data-stop="2901.926000">make sense. And it's probably useful for newbies to learn</span> <span class="audio-time caption" data-speaker="" data-start="2901.966000" data-stop="2905.069000">that you can easily change your keybindings so that they can</span> <span class="audio-time caption" data-speaker="" data-start="2905.089000" data-stop="2910.777000">make more sense to you. Sorry, C-c plus a letter is</span> <span class="audio-time caption" data-speaker="" data-start="2910.877000" data-stop="2913.300000">reserved for your use so you can stick whatever keybindings</span> <span class="audio-time caption" data-speaker="" data-start="2913.620000" data-stop="2916.964000">make sense to you on there with regular letters and</span> <span class="audio-time caption" data-speaker="" data-start="2917.004000" data-stop="2917.424000">everything.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2920.000000">00:48:40</span> <strong>The guided tour</strong></div><span class="audio-time caption" data-speaker="" data-start="2920.387000" data-stop="2924.512000">So I want to link to something from Emacs News that gets</span> <span class="audio-time caption" data-speaker="" data-start="2924.592000" data-stop="2927.855000">people started on that journey, which I think might be the</span> <span class="audio-time caption" data-speaker="" data-start="2927.935000" data-stop="2933.281000">Emacs Newbie page. So the Emacs Newbie page will link people</span> <span class="audio-time caption" data-speaker="" data-start="2933.361000" data-stop="2940.394000">to is a guided tour. Guided tour. This is not very much of a</span> <span class="audio-time caption" data-speaker="" data-start="2940.554000" data-stop="2944.741000">guided tour. There used to be a better guided tour. Where is</span> <span class="audio-time caption" data-speaker="" data-start="2944.801000" data-stop="2947.605000">it? That's a guided tour. Okay, that's a guided tour. Okay,</span> <span class="audio-time caption" data-speaker="" data-start="2947.625000" data-stop="2948.506000">that's a guided tour.</span> <span class="audio-time caption" data-speaker="" data-start="2952.012000" data-stop="2952.432000">All right.</span> <span class="audio-time caption" data-speaker="" data-start="2957.580000" data-stop="2964.671000">So it gets people through navigation, but it does, can you,</span> <span class="audio-time caption" data-speaker="" data-start="2964.831000" data-stop="2966.894000">does it talk about configuration?</span> <span class="audio-time caption" data-speaker="" data-start="2969.000000" data-stop="2971.724000">It does not talk about getting started with your</span> <span class="audio-time caption" data-speaker="" data-start="2971.764000" data-stop="2977.131000">configuration. Okay, where do we start telling people</span> <span class="audio-time caption" data-speaker="" data-start="2977.291000" data-stop="2981.357000">about getting started with configuration? Learning</span> <span class="audio-time caption" data-speaker="" data-start="2981.417000" data-stop="2981.777000">Emacs.</span> <span class="audio-time caption" data-speaker="" data-start="2990.649000" data-stop="2994.755000">Okay, maybe I should include all these things.</span> <span class="audio-time caption" data-speaker="" data-start="2999.696000" data-stop="3007.327000">I cannot decide.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3007.000000">00:50:07</span> <strong>Recap</strong></div><span class="audio-time caption" data-speaker="" data-start="3007.347000" data-stop="3009.670000">Okay, well, we'll start with the Emacs New page, which is</span> <span class="audio-time caption" data-speaker="" data-start="3009.790000" data-stop="3015.739000">already better than it used to be before.</span> <span class="audio-time caption" data-speaker="" data-start="3015.759000" data-stop="3023.189000">Okay, so today I wanted to:</span> <span class="audio-time caption" data-speaker="" data-start="3025.447000" data-stop="3028.731000">update the header of the Emacs news page to make it easier for</span> <span class="audio-time caption" data-speaker="" data-start="3028.771000" data-stop="3033.716000">people who are new. I've got the short URL so that people who</span> <span class="audio-time caption" data-speaker="" data-start="3033.736000" data-stop="3037.200000">are recommending them, it's easier I think maybe to stick it</span> <span class="audio-time caption" data-speaker="" data-start="3037.580000" data-stop="3040.623000">in people's brains. Although, challenge as always,</span> <span class="audio-time caption" data-speaker="" data-start="3040.783000" data-stop="3045.068000">spelling my name is tricky. So maybe I need to make sure that</span> <span class="audio-time caption" data-speaker="" data-start="3045.088000" data-stop="3049.733000">yayemacs.com/news goes to this as well.</span> <span class="audio-time caption" data-speaker="" data-start="3052.295000" data-stop="3057.302000">which I don't think it currently does. So, did I already add</span> <span class="audio-time caption" data-speaker="" data-start="3057.322000" data-stop="3069.137000">that as a TODO? Ah, here we are. Also, yayemacs.com/news and</span> <span class="audio-time caption" data-speaker="" data-start="3069.237000" data-stop="3073.283000">emacslife.com/news. I mean, I have domains. I might as well</span> <span class="audio-time caption" data-speaker="" data-start="3073.383000" data-stop="3081.000000">use them. Okay, so that's done. And I've updated this. so</span> <span class="audio-time caption" data-speaker="" data-start="3081.080000" data-stop="3085.947000">that people can start to connect with the community and find</span> <span class="audio-time caption" data-speaker="" data-start="3086.027000" data-stop="3092.678000">ways to work, you know, find better, find ways to use this</span> <span class="audio-time caption" data-speaker="" data-start="3092.878000" data-stop="3094.060000">Emacs beginner thing.</span> <span class="audio-time caption" data-speaker="" data-start="3100.390000" data-stop="3104.056000">It's still a little hard for people to read. You know what I</span> <span class="audio-time caption" data-speaker="" data-start="3104.096000" data-stop="3107.902000">should do is I should take this beginner resources</span> <span class="audio-time caption" data-speaker="" data-start="3109.097000" data-stop="3111.739000">So my beginner resources org is in</span> <span class="audio-time caption" data-speaker="" data-start="3111.840000" data-stop="3115.783000">~sync/web/beginner-map.org.</span> <span class="audio-time caption" data-speaker="" data-start="3117.125000" data-stop="3124.191000">So if I make this part of...</span> <span class="audio-time caption" data-speaker="" data-start="3126.994000" data-stop="3132.499000">sacha-copy-filename.</span> <span class="audio-time caption" data-speaker="" data-start="3133.120000" data-stop="3137.804000">Okay, if I make this part of my...</span> <span class="audio-time caption" data-speaker="" data-start="3139.185000" data-stop="3146.615000">I want to say it's like a refile target. Yeah, here we go. And I</span> <span class="audio-time caption" data-speaker="" data-start="3146.675000" data-stop="3153.284000">want to say, okay, add that to my refiles.</span> <span class="audio-time caption" data-speaker="" data-start="3157.430000" data-stop="3167.535000">So then if I... think about this carefully... C-u C-c C-w,</span> <span class="audio-time caption" data-speaker="" data-start="3167.536000" data-stop="3172.142000">which is org-refile, then I should be able to go to, all right,</span> <span class="audio-time caption" data-speaker="" data-start="3172.143000" data-stop="3174.547000">the beginner maps. Ah, perfect. Okay, okay.</span> <span class="audio-time caption" data-speaker="" data-start="3174.968000" data-stop="3180.176000">So now if I'm talking to somebody and I say, oh, okay,</span> <span class="audio-time caption" data-speaker="" data-start="3180.196000" data-stop="3186.045000">they want to learn more about customization, I can jump to</span> <span class="audio-time caption" data-speaker="" data-start="3187.147000" data-stop="3192.254000">this, which actually reminds me, what?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3192.000000">00:53:12</span> <strong>newcomers-presets</strong></div><span class="audio-time caption" data-speaker="" data-start="3192.255000" data-stop="3195.280000">Newcomer, preset, Emacs.</span> <span class="audio-time caption" data-speaker="" data-start="3197.960000" data-stop="3198.780000">Newcomers presets.</span> <span class="audio-time caption" data-speaker="" data-start="3198.781000" data-stop="3202.024000">Is there like a thing that says what this is?</span> <span class="audio-time caption" data-speaker="" data-start="3206.368000" data-stop="3208.390000">Has anyone written a blog post about it yet?</span> <span class="audio-time caption" data-speaker="" data-start="3215.877000" data-stop="3222.062000">Where do I even find this? Okay, okay. Splash screen. It was</span> <span class="audio-time caption" data-speaker="" data-start="3222.142000" data-stop="3225.065000">in the splash screen, wasn't it? How do I...</span> <span class="audio-time caption" data-speaker="" data-start="3231.069000" data-stop="3237.795000">Okay, display splash screen. Splash screen.</span> <span class="audio-time caption" data-speaker="" data-start="3237.796000" data-stop="3241.538000">That is not it. Okay, how do I find this newcomer presets?</span> <span class="audio-time caption" data-speaker="" data-start="3241.539000" data-stop="3248.406000">So I can tell people, this is what you do in order to do it.</span> <span class="audio-time caption" data-speaker="" data-start="3248.426000" data-stop="3255.773000">Chapter 51 of the manual. Read the manual. Emacs. Newcomer.</span> <span class="audio-time caption" data-speaker="" data-start="3259.597000" data-stop="3260.738000">Okay, newcomer theme.</span> <span class="audio-time caption" data-speaker="" data-start="3264.617000" data-stop="3273.228000">Okay, fine. If I say load-theme newcomers-presets...</span> <span class="audio-time caption" data-speaker="" data-start="3273.229000" data-stop="3275.250000">Okay, I don't actually want to load the theme though.</span> <span class="audio-time caption" data-speaker="" data-start="3275.251000" data-stop="3279.416000">Can I say find-theme? I cannot say find-theme. Can I say...</span> <span class="audio-time caption" data-speaker="" data-start="3279.417000" data-stop="3290.732000">Oh, fine. I load the theme and then it'll be loaded.</span> <span class="audio-time caption" data-speaker="" data-start="3293.716000" data-stop="3304.296000">Interesting. So now is it loaded.</span> <span class="audio-time caption" data-speaker="" data-start="3307.119000" data-stop="3311.705000">Newcomers theme. Okay, here we go. I can just find the</span> <span class="audio-time caption" data-speaker="" data-start="3311.865000" data-stop="3315.829000">function newcomers-presets-mode... Okay, now I see it.</span> <span class="audio-time caption" data-speaker="" data-start="3317.291000" data-stop="3318.552000">newcomers presets theme</span> <span class="audio-time caption" data-speaker="" data-start="3321.857000" data-stop="3337.694000">Okay, line number, flymake, flyspell. That makes sense.</span> <span class="audio-time caption" data-speaker="" data-start="3337.714000" data-stop="3349.506000">So, does it...</span> <span class="audio-time caption" data-speaker="" data-start="3349.566000" data-stop="3351.188000">Let's do it in emacs -q.</span> <span class="audio-time caption" data-speaker="" data-start="3354.577000" data-stop="3357.040000">What do I type here in order to get that to work?</span> <span class="audio-time caption" data-speaker="" data-start="3360.303000" data-stop="3366.329000">load-theme newcomers-presets. Completion is still not</span> <span class="audio-time caption" data-speaker="" data-start="3366.349000" data-stop="3369.312000">there. I want completion as part of the newcomer's theme. I</span> <span class="audio-time caption" data-speaker="" data-start="3369.352000" data-stop="3374.077000">should mention that in emacs-devel. Because M-x, it's not</span> <span class="audio-time caption" data-speaker="" data-start="3374.177000" data-stop="3376.980000">obvious that you should type tab in order to complete</span> <span class="audio-time caption" data-speaker="" data-start="3377.020000" data-stop="3381.665000">things. I just do want to have... ido-vertical maybe?</span> <span class="audio-time caption" data-speaker="" data-start="3384.480000" data-stop="3390.047000">fido-vertical-mode. I mean, this by itself would already be</span> <span class="audio-time caption" data-speaker="" data-start="3391.048000" data-stop="3398.617000">nicer, I think. Okay. I need to suggest fido-vertical-mode,</span> <span class="audio-time caption" data-speaker="" data-start="3399.298000" data-stop="3402.462000">maybe, for newcomers-presets.</span> <span class="audio-time caption" data-speaker="" data-start="3409.069000" data-stop="3421.184000">Okay. And then, want to say...</span> <span class="audio-time caption" data-speaker="" data-start="3427.513000" data-stop="3430.978000">this would be nice to have a crash course: here's how you get a</span> <span class="audio-time caption" data-speaker="" data-start="3431.078000" data-stop="3434.803000">reasonable Emacs for the basic working environment</span> <span class="audio-time caption" data-speaker="" data-start="3434.804000" data-stop="3435.525000">that you want,</span> <span class="audio-time caption" data-speaker="" data-start="3439.871000" data-stop="3442.955000">but it's really better than it was before.</span> <span class="audio-time caption" data-speaker="" data-start="3450.832000" data-stop="3453.796000">And I think newcomers-presets is actually even... It's in</span> <span class="audio-time caption" data-speaker="" data-start="3453.797000" data-stop="3457.682000">Emacs 31, so most newbies will not even be on this yet. Okay, so</span> <span class="audio-time caption" data-speaker="" data-start="3458.783000" data-stop="3462.088000">that is... that's more of a future recommendation, I think.</span> <span class="audio-time caption" data-speaker="" data-start="3462.769000" data-stop="3463.570000">Okay, I got two minutes! I got two minutes before it's</span> <span class="audio-time caption" data-speaker="" data-start="3464.271000" data-stop="3465.833000">lunchtime.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3472.000000">00:57:52</span> <strong>Wrapping up</strong></div><span class="audio-time caption" data-speaker="" data-start="3472.322000" data-stop="3479.100000">Okay, where was I? I'm going to go take this transcript for</span> <span class="audio-time caption" data-speaker="" data-start="3479.101000" data-stop="3482.233000">this session as well and then do my tinkering with the</span> <span class="audio-time caption" data-speaker="" data-start="3482.234000" data-stop="3487.733000">spelling and things like that. But I did set out to do the</span> <span class="audio-time caption" data-speaker="" data-start="3487.734000" data-stop="3491.200000">things, I got the things done that I set out to do, so yay!</span> <span class="audio-time caption" data-speaker="" data-start="3492.241000" data-stop="3494.704000">Thank you so much for the chat because that was very</span> <span class="audio-time caption" data-speaker="" data-start="3494.784000" data-stop="3497.989000">helpful. I learned all sorts of things. I learned about</span> <span class="audio-time caption" data-speaker="" data-start="3498.029000" data-stop="3499.511000">newsticker which I've never used before.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3499.000000">00:58:19</span> <strong>Remembering keybindings</strong></div><span class="audio-time caption" data-speaker="" data-start="3499.512000" data-stop="3507.276000">I should also note, @maxfriis says, I almost never use operations</span> <span class="audio-time caption" data-speaker="" data-start="3507.316000" data-stop="3511.804000">rectangles, but I remember C-x r and then I can use which-key.</span> <span class="audio-time caption" data-speaker="" data-start="3511.805000" data-stop="3514.110000">So you only need to remember the letter R, @JacksonScholberg says.</span> <span class="audio-time caption" data-speaker="" data-start="3514.130000" data-stop="3516.796000">And @maxfiis says, refer to the operation as an operation or a</span> <span class="audio-time caption" data-speaker="" data-start="3516.856000" data-stop="3519.641000">rectangle. So I remember the R.</span> <span class="audio-time caption" data-speaker="" data-start="3519.642000" data-stop="3525.882000">So if you can get the logic behind the keyboard shortcuts,</span> <span class="audio-time caption" data-speaker="" data-start="3525.883000" data-stop="3527.825000">they become a lot easier to remember.</span> <span class="audio-time caption" data-speaker="" data-start="3527.826000" data-stop="3531.029000">It helps to make your own cheat sheets for that</span> <span class="audio-time caption" data-speaker="" data-start="3531.129000" data-stop="3537.016000">because you can say, all right, C-x 5 is all the frame</span> <span class="audio-time caption" data-speaker="" data-start="3537.076000" data-stop="3540.800000">related things. And here I have which-key kick in</span> <span class="audio-time caption" data-speaker="" data-start="3540.881000" data-stop="3544.865000">automatically after a short while. And it says, okay, these</span> <span class="audio-time caption" data-speaker="" data-start="3544.905000" data-stop="3547.748000">are the things. I've got this like weird highlighting going</span> <span class="audio-time caption" data-speaker="" data-start="3547.889000" data-stop="3553.179000">on. These are the things that start with C-x 5.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3553.000000">00:59:13</span> <strong>Picking Prot's brain next week about the newcomer experience</strong></div><span class="audio-time caption" data-speaker="" data-start="3553.180000" data-stop="3569.546000">Prot, if you're still listening, I would like to pick your brain next</span> <span class="audio-time caption" data-speaker="" data-start="3569.547000" data-stop="3573.599000">week about what you think about improving the newcomer experience.</span> <span class="audio-time caption" data-speaker="" data-start="3573.600000" data-stop="3576.855000">Especially since we can take advantage of the fact</span> <span class="audio-time caption" data-speaker="" data-start="3576.856000" data-stop="3578.758000">you came in without a programming background. A lot</span> <span class="audio-time caption" data-speaker="" data-start="3578.838000" data-stop="3582.033000">of people are coming into Emacs for surprising reasons,</span> <span class="audio-time caption" data-speaker="" data-start="3582.034000" data-stop="3584.567000">like they've heard awesome things about Org Mode, and</span> <span class="audio-time caption" data-speaker="" data-start="3584.568000" data-stop="3588.033000">they're not programmers, they're writers, or they do other</span> <span class="audio-time caption" data-speaker="" data-start="3588.034000" data-stop="3591.667000">stuff. Sometimes they're teachers, sometimes they just do</span> <span class="audio-time caption" data-speaker="" data-start="3591.668000" data-stop="3594.867000">things, and Org Mode sounds like a thing that might help</span> <span class="audio-time caption" data-speaker="" data-start="3594.868000" data-stop="3597.699000">their brain from going to twenty different places.</span> <span class="audio-time caption" data-speaker="" data-start="3597.700000" data-stop="3604.479000">What can we do to make it better for newcomers to Emacs?</span> <span class="audio-time caption" data-speaker="" data-start="3604.480000" data-stop="3606.333000">What paths can we build?</span> <span class="audio-time caption" data-speaker="" data-start="3606.334000" data-stop="3610.899000">What resources can we share that people can then link to</span> <span class="audio-time caption" data-speaker="" data-start="3610.900000" data-stop="3615.133000">that helps address that? Prot says, yeah, he's listening,</span> <span class="audio-time caption" data-speaker="" data-start="3615.134000" data-stop="3619.433000">happy to discuss this with me and with all y'all if you want to</span> <span class="audio-time caption" data-speaker="" data-start="3619.434000" data-stop="3622.233000">join us next week. But right now the kid is going to come out</span> <span class="audio-time caption" data-speaker="" data-start="3622.234000" data-stop="3624.824000">and have lunch break, so I'm going to have lunch break too.</span> <span class="audio-time caption" data-speaker="" data-start="3625.364000" data-stop="3627.488000">Thank you for joining me. This was fantastic. I'm going to</span> <span class="audio-time caption" data-speaker="" data-start="3627.929000" data-stop="3636.123000">post the notes, the live stream video will already be</span> <span class="audio-time caption" data-speaker="" data-start="3627.929000" data-stop="3636.123000">immediately available from yayemacs.com. If you search</span> <span class="audio-time caption" data-speaker="" data-start="3636.542000" data-stop="3642.288000">for ye21, then you will find wherever the notes end up. Thank</span> <span class="audio-time caption" data-speaker="" data-start="3642.308000" data-stop="3645.944000">you everyone again, and I'll see you around!</span>
<p></p>


</details>
</div>
</div>
<div id="outline-container-ye21-april-23-continuing-to-think-about-newbies-starter-kits-chat" class="outline-3">
<h3 id="ye21-april-23-continuing-to-think-about-newbies-starter-kits-chat">Chat</h3>
<div class="outline-text-3" id="text-ye21-april-23-continuing-to-think-about-newbies-starter-kits-chat">
<ul class="org-ul">
<li>@mehrad42: ​​hand-pink-waving</li>
<li>@JacksonScholberg: ​Good morning Sacha</li>
<li>@protesilaos: ​Bonjour Sacha!</li>
<li>@JacksonScholberg: ​I gave up on Emacs yesterday then I realized I could use VSCode to get things done while I am learning Emacs.</li>
<li>@JacksonScholberg: ​First just edit a file.</li>
<li>@mtendethecreator: Hello. From the other side lol</li>
<li>@j7gy8b: I'm researching making a VSCode plugin actually</li>
<li>@j7gy8b: ​for comparison</li>
<li>@mehrad42: ​​there is an org-mode extension in vascode that is hoping to do things is Emacs way. i'd stick to Emacs, but it someone find it useful, use it.</li>
<li>@charliemcmackin4859: ​​newsticker just happens to be the first one I set up, but seems pretty friendly too</li>
<li>@JacksonScholberg: ​Outside of email would be good. I ignore email sometimes.</li>
<li>@mehrad42: ​​when I started with Emacs, one of the biggest issues was not to know what each package does. some have a picture or video or asciinema, but most of them don't.</li>
<li>@JacksonScholberg: ​That's why I ignore email haha</li>
<li>@charliemcmackin4859: ​newsticker-show-news</li>
<li>@charliemcmackin4859: ​hah, we are delayed</li>
<li>@JacksonScholberg: game over</li>
<li>@JacksonScholberg: ​It's gotta be ascii cinema</li>
<li>@mehrad42: ​​also infopages are very good source of information. The infopages keybindings are a bit odd at first, so need some explanation.</li>
<li>@JacksonScholberg: ​I didn't know there were so many resources for Emacs</li>
<li>@JacksonScholberg: ​Post its are great</li>
<li>@maxfriis: ​​Try to articulate what you want to do with words that start with the keybinding.</li>
<li>@maxfriis: ​​to easily memorize keybindings</li>
<li>@maxfriis: ​with the letter used in the keybinding</li>
<li>@JacksonScholberg: ​Good idea thanks</li>
<li>@maxfriis: ​I almost never use operations on rectangles, but I remember C-x r - then I can use which-key</li>
<li>@JacksonScholberg: ​Only need to remember letter r</li>
<li>@maxfriis: ​and refer to the operation as an operation on a rectangle so I remember the r</li>
<li>@charliemcmackin4859: ​👋 fun stuff</li>
<li>@protesilaos: ​​I am listening. Happy to discuss this with you.</li>
<li>@JacksonScholberg:​ ​Bye!</li>
<li>@maxfriis: ​thanks</li>
<li>@mehrad42: ​awesome. thanks</li>
</ul>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/04/ye21-continuing-to-think-about-newbies-starter-kits/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%2F04%2Fye21-continuing-to-think-about-newbies-starter-kits%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>YE16: Sacha and Prot talk Emacs</title>
		<link>https://sachachua.com/blog/2026/04/ye16-sacha-and-prot-talk-emacs/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Thu, 16 Apr 2026 16:44:19 GMT</pubDate>
    <category>emacs</category>
<category>yay-emacs</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/04/ye16-sacha-and-prot-talk-emacs/</guid>
		<description><![CDATA[<div class="update" id="orgfd12aac">
<p>
<span class="timestamp-wrapper"><time class="timestamp" datetime="2026-04-17">[2026-04-17 Fri]</time></span>: Updated chapter markers and transcript
</p>

</div>

<p>
In this livestream, I showed <a href="https://protesilaos.com">Prot</a> what I've been doing since <a href="https://sachachua.com/blog/2026/04/yayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp/">our last conversation about Emacs configuration and livestreaming</a>.
</p>

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

<ul class="org-ul">
<li><span class="media-time" data-start="0.000">00:00</span> Opening</li>
<li><span class="media-time" data-start="264.000">04:24</span> Workflow checklist</li>
<li><span class="media-time" data-start="287.000">04:47</span> Demonstrating <code>sacha-stream-show-message</code> and <a target="_blank" href="https://melpa.org/#/qrencode">qrencode</a></li>
<li><span class="media-time" data-start="354.000">05:54</span> qrencode</li>
<li><span class="media-time" data-start="475.000">07:55</span> Embark</li>
<li><span class="media-time" data-start="1034.000">17:14</span> My objectives</li>
<li><span class="media-time" data-start="1140.000">19:00</span> keycast-header-mode</li>
<li><span class="media-time" data-start="1185.000">19:45</span> Trade-offs when livestreaming while coding</li>
<li><span class="media-time" data-start="1284.000">21:24</span> Trade-offs: seeing less text on the screen</li>
<li><span class="media-time" data-start="1432.000">23:52</span> Lowering the effort needed to announce a stream: Prot just announces it and the blog post embeds it</li>
<li><span class="media-time" data-start="1483.000">24:43</span> Timestamps</li>
<li><span class="media-time" data-start="1649.000">27:29</span> Different types of livestreams</li>
<li><span class="media-time" data-start="1694.000">28:14</span> Reading other people's configs</li>
<li><span class="media-time" data-start="1812.000">30:12</span> Hanging out</li>
<li><span class="media-time" data-start="1900.000">31:40</span> Livestreams for explaining specific things</li>
<li><span class="media-time" data-start="1920.000">32:00</span> Prot on didactic livestreams</li>
<li><span class="media-time" data-start="2047.000">34:07</span> Prot suggests breadcrumbs</li>
<li><span class="media-time" data-start="2279.000">37:59</span> Announcing livestreams</li>
<li><span class="media-time" data-start="2338.000">38:58</span> Embeds: Prot embeds specific YouTube videos instead of the general channel one</li>
<li><span class="media-time" data-start="2372.000">39:32</span> Demo of my new shortcut for converting time zones</li>
<li><span class="media-time" data-start="2508.000">41:48</span> Ozzloy's questions about time zones and QR codes</li>
<li><span class="media-time" data-start="2626.000">43:46</span> Prot on announcing livestreams on blogs</li>
<li><span class="media-time" data-start="2725.000">45:25</span> Processing the recordings</li>
<li><span class="media-time" data-start="2835.000">47:15</span> Commitment devices</li>
<li><span class="media-time" data-start="2909.000">48:29</span> Automating more of the process</li>
<li><span class="media-time" data-start="3074.000">51:14</span> Copying non-packaged code</li>
<li><span class="media-time" data-start="3145.000">52:25</span> Prot on defcustom</li>
<li><span class="media-time" data-start="3312.000">55:12</span> helpful and elisp-demos</li>
<li><span class="media-time" data-start="3383.000">56:23</span> Prot on code libraries</li>
<li><span class="media-time" data-start="3410.000">56:50</span> Prot rewrites functions to fit his style and naming conventions</li>
<li><span class="media-time" data-start="3558.000">59:18</span> Prot's preference for small functions</li>
<li><span class="media-time" data-start="3623.000">01:00:23</span> avy-goto-char-timer</li>
<li><span class="media-time" data-start="3760.000">01:02:40</span> One-shot keyboard modifiers</li>
<li><span class="media-time" data-start="3809.000">01:03:29</span> Toggling</li>
<li><span class="media-time" data-start="3908.000">01:05:08</span> System-wide toggle shortcuts using emacsclient</li>
<li><span class="media-time" data-start="4045.000">01:07:25</span> My next steps</li>
<li><span class="media-time" data-start="4098.000">01:08:18</span> Tips from Prot: small functions used frequently</li>
<li><span class="media-time" data-start="4146.000">01:09:06</span> Maybe using the header line for tips?</li>
<li><span class="media-time" data-start="4223.000">01:10:23</span> Reorganizing keys</li>
</ul>

<p>
<a class="photoswipe sketch-link" href="https://sketches.sachachua.com/filename/2026-04-16-01%20Preparing%20for%20chat%20with%20Prot.jpeg" data-src="https://sketches.sachachua.com/static/2026-04-16-01%20Preparing%20for%20chat%20with%20Prot.jpeg" data-title="2026-04-16-01 Preparing for chat with Prot.jpeg" data-w="2900" data-h="2050">2026-04-16-01 Preparing for chat with Prot.jpeg</a>
</p>

<ul class="org-ul">
<li>Recap of my objectives:
<ul class="org-ul">
<li>Overall: capture and share more, create opportunities for conversation</li>
<li>Timeline:
<ul class="org-ul">
<li>April, May, June: take advantage of predictable-ish schedule and set up streams, chats</li>
<li>July, Aug: Focus on posts, videos, spontaneous streams</li>
<li>Sept-: prepare for EmacsConf, see what I can squeeze in at the same time</li>
</ul></li>
<li>This session:
<ul class="org-ul">
<li>Share my updates, see if you have other ideas, hear what you've been learning about</li>
</ul></li>
</ul></li>
<li><a href="https://sachachua.com/blog/2026/04/yayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp/#projects-experiment-with-learning-from-prot-yayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp-ideas-for-next-steps">#YayEmacs 10: Emacs coaching with Prot: Emacs workflows and streaming</a>
<ul class="org-ul">
<li><a href="https://sachachua.com/dotemacs">Emacs config modularization</a>
<ul class="org-ul">
<li>Moved the functions of my config into .el files and renamed to <code>sacha-</code> prefix</li>
<li>Experimenting with using <a href="https://github.com/rvaiya/keyd">keyd</a> for one-shot ctrl/alt/super modifiers on Linux</li>
<li><a href="https://sachachua.com/dotemacs#toggle">Used C-z to toggle live.org and C-Z to toggle now.org</a></li>
<li>Reading people's configs</li>
</ul></li>
<li>Streaming
<ul class="org-ul">
<li><a href="https://sachachua.com/dotemacs#streaming-mode-for-streaming">Set up mode for livestreaming</a> and <a href="https://github.com/obs-websocket-el/obs-websocket-el/">obs-websocket-el</a>
<ul class="org-ul">
<li>Saves variables, changes agenda / refile targets / capture templates, changes theme, etc.</li>
</ul></li>
<li>Planning upcoming videos / livestreams:
<ul class="org-ul">
<li>Looks like there's lots of interest in <a href="https://sachachua.com/blog/category/emacs-chat-podcast/all/">Emacs Chat</a> (config demos)
<ul class="org-ul">
<li><a href="https://social.sachachua.com/@sacha/statuses/01KP12W9CBT581YR7V3GMWFVN8">Mastodon thread with interested people</a></li>
<li><a href="https://sachachua.com/topic/emacs-chat/">Emacs Chat</a></li>
</ul></li>
<li>I have a video call with jwiegley and Karthik which we will post afterwards</li>
</ul></li>
<li>Watching lots of other people's videos, reading people's configs</li>
<li>Could have fun with a Thursday show-and-tell</li>
</ul></li>
<li>Contributing upstream
<ul class="org-ul">
<li>Sent revised patch for org and sentence-at-point</li>
<li>Bumped into something in which-key which I want to tweak</li>
</ul></li>
</ul></li>
<li><a href="https://protesilaos.com/emacs/dotemacs">GNU Emacs configuration | Protesilaos Stavrou</a></li>
<li><a href="https://sachachua.com/dotemacs/">Sacha Chua's Emacs configuration</a></li>
<li><a target="_blank" href="https://melpa.org/#/qrencode">qrencode</a></li>
<li><a href="https://sachachua.com/dotemacs#org-mode-time-zones">Time zones</a></li>
</ul>

<p>
Questions I'm thinking about / areas I'm working on improving:
</p>

<ul class="org-ul">
<li>(Log) <b>Getting more out of livestreams</b> (for yourself or others)
<ul class="org-ul">
<li>You've mentioned that you don't really go back to your videos to listen to them. I was wondering what could make the livestreamed recordings more useful to either the person who made them, people who watched it live, or people who come across it later.</li>
<li>Tradeoffs for livestreaming:
<ul class="org-ul">
<li>Plus: debugging help, capturing your thinking out loud, conversation, sharing more practices/tips</li>
<li>Minus: Fitting less stuff on screen, distractability</li>
</ul></li>
<li>A few types of livestreams:
<ul class="org-ul">
<li>"I'm going to spend the time doing this anyway, I might as well open it up in case other people are interested."
<ul class="org-ul">
<li>Your package maintenance videos <a href="https://www.youtube.com/watch?v=xFQDYTCS1os&amp;t=1502s">Emacs: live stream about maintaining the modus-themes - YouTube</a></li>
<li>My Emacs News categorization</li>
<li>People coding other things</li>
<li>Other types of tinkering with code, debugging, etc.</li>
</ul></li>
<li>"I have something that I specifically want to teach/show."
<ul class="org-ul">
<li>After writing a post</li>
<li>Before writing a post
<ul class="org-ul">
<li><span class="timestamp-wrapper"><time class="timestamp" datetime="2026-04-16T10:54:00-0400">[2026-04-16 Thu 10:54]</time></span> Leaving yourself breadcrumbs ZZZ consider also colour (font-lock-keywords), maybe occur</li>
</ul></li>
</ul></li>
<li>Reacting to other things
<ul class="org-ul">
<li>Config: <a href="https://www.youtube.com/live/qLjFYMQG71E">YE15: Fiddling with my Emacs config and streaming setup - YouTube</a></li>
</ul></li>
<li>Chatting with a guest
<ul class="org-ul">
<li>I had fun fiddling with my two-speaker workflow for whisperx and subed; hooray for the visual distinction between your subtitles and mine on <a href="https://www.youtube.com/watch?v=kvBS8wz8ZRw">Yay Emacs 10: Talking to Prot about Emacs workflows - YouTube</a> =)</li>
</ul></li>
<li>Chatting with the community, hanging out</li>
<li>Playing</li>
</ul></li>
<li>(Log) <b>Announcing livestreams</b>
<ul class="org-ul">
<li>You add a post for scheduled/spontaneous livestreams and then you update it with the description; probably fine considering RSS readers - people can visit the page if it's finished</li>
<li><p>
Debating whether to embed the channel livestream (picks next public scheduled stream, I think) or embed the specific livestream
</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/live_stream?channel=UClT2UAbC6j7TqOWurVhkuHQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe></li>
<li>Now on <a href="https://yayemacs.com">https://yayemacs.com</a> (also <a href="https://sach.ac/live">https://sach.ac/live</a>, <a href="https://sachachua.com/live">https://sachachua.com/live</a>)</li>
<li>Added timestamp translation to Embark keymap for timestamps, <code>sacha-org-timestamp-in-time-zones</code></li>
<li class="off"><span class="task-todo">&#x2610;</span> TODO: Post template</li>
<li class="off"><span class="task-todo">&#x2610;</span> TODO: ical file</li>
<li class="off"><span class="task-todo">&#x2610;</span> TODO: Easier workflow for embedding streams</li>
<li class="off"><span class="task-todo">&#x2610;</span> TODO: Google API for scheduling a livestream</li>
</ul></li>
<li>(Log) <b>Processing the recordings</b>
<ul class="org-ul">
<li>I like editing transcripts because that also helps me quickly split up chapters</li>
<li>Tracking chapters on the fly</li>
<li>Extracting screenshots and clips</li>
<li>Turning videos into blog posts (or vice versa)</li>
<li class="off"><span class="task-todo">&#x2610;</span> TODO: Automate more of the downloading/transcription, common edits, Internet Archive uploads</li>
</ul></li>
</ul></li>
<li>(Log) Do you sometimes find yourself copying non-packaged code from other people? How do you like to integrate it into your config, keep references to the source, check for updates?
<ul class="org-ul">
<li>convert defvar to defcustom</li>
<li><p>
Current approach: autoload if possible; if not, add a note to the docstring
</p>

<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>   (<span class="org-keyword">use-package</span> prot-comment                <span class="org-comment-delimiter">; </span><span class="org-comment">TODO 2026-04-16:</span>
    <span class="org-builtin">:load-path</span> <span class="org-string">"~/vendor/prot-dotfiles/emacs/.emacs.d/prot-lisp"</span>
          <span class="org-builtin">:commands</span> (prot-comment-timestamp-keyword)
          <span class="org-builtin">:bind</span>
          (<span class="org-builtin">:map</span> prog-mode-map
                                  (<span class="org-string">"C-x M-;"</span> . prot-comment-timestamp-keyword)))
</code></pre>
</div>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>   <span class="org-comment-delimiter">;;;</span><span class="org-comment">###autoload</span>
(<span class="org-keyword">defun</span> <span class="org-function-name">sacha-org-capture-region-contents-with-metadata</span> (start end parg)
  <span class="org-doc">"Write selected text between START and END to currently clocked `</span><span class="org-doc"><span class="org-constant">org-mode</span></span><span class="org-doc">' entry.</span>

<span class="org-doc">   With PARG, kill the content instead.</span>
<span class="org-doc">   If there is no clocked task, create it as a new note in my inbox instead.</span>

<span class="org-doc">   From https://takeonrules.com/2022/10/16/adding-another-function-to-sacha-workflow/, modified slightly so that it creates a new entry if we are not currently clocked in."</span>
  (<span class="org-keyword">interactive</span> <span class="org-string">"r\nP"</span>)
  (<span class="org-keyword">let</span> ((text (sacha-org-region-contents-get-with-metadata start end)))
    (<span class="org-keyword">if</span> (car parg)
        (kill-new text)
      (org-capture-string (concat <span class="org-string">"&#45;&#45;&#45;&#45;-\n"</span> text)
                          (<span class="org-keyword">if</span> (org-clocking-p) <span class="org-string">"c"</span>
                            <span class="org-string">"r"</span>)))))
</code></pre>
</div>
</li>
<li>prot-window: run a command in a new frame</li>
<li class="off"><span class="task-todo">&#x2610;</span> Look into using keyd for tap and hold space?</li>
<li class="off"><span class="task-todo">&#x2610;</span> header line format with common tips</li>
</ul></li>
</ul>

<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Transcript</strong></summary>
<style>
span.caption[data-speaker="Prot"] { color: var(&#45;&#45;modus-fg-ochre); }
</style>

<p>
</p><p></p><div class="transcript-heading"><span class="audio-time" data-start="0.000000">00:00:00</span> <strong>Opening</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="0.031000" data-stop="4.677000">[Sacha]: This is Yay Emacs number 16. I'm Sacha Chua and today I will be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4.737000" data-stop="12.728000">talking with Prot once my alarms stop going off. Yes, yes. I'm</span> <span class="audio-time caption" data-speaker="Sacha" data-start="12.768000" data-stop="15.472000">going to be talking with Prot later, assuming that all of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="15.552000" data-stop="24.359000">this stuff works. Let me double check my audio is on. Audio</span> <span class="audio-time caption" data-speaker="Sacha" data-start="24.419000" data-stop="28.144000">is definitely on. I'm trying a little bit early so that I'm</span> <span class="audio-time caption" data-speaker="Sacha" data-start="28.184000" data-stop="32.891000">not doing so much last-minute panicking. Let's see what</span> <span class="audio-time caption" data-speaker="Sacha" data-start="32.931000" data-stop="39.640000">we've got here.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="46.285000" data-stop="52.055000">I am also trying the new OBS 32 interface for things, so that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="52.095000" data-stop="58.866000">should be fun. Alright, thank you to phyzixlab for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="58.906000" data-stop="62.592000">confirming that the audio works. I am so fairly new to this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="62.673000" data-stop="65.778000">livestreaming thing, but I'm looking forward to seeing if I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="65.818000" data-stop="67.961000">can do it more regularly because I have a little bit of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="68.522000" data-stop="72.585000">predictable focus time between now and the end of June. In</span> <span class="audio-time caption" data-speaker="Sacha" data-start="72.645000" data-stop="75.251000">July, the kid is on summer break and so will probably want to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="75.311000" data-stop="78.537000">hang out with me all the time. Or not, you know, kids are like</span> <span class="audio-time caption" data-speaker="Sacha" data-start="78.577000" data-stop="85.130000">that, right? So in the meantime, I am trying to get the hang of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="85.892000" data-stop="90.721000">scheduling things and since Prot happens to have an Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="90.762000" data-stop="94.644000">coaching service, I figured I would engage him to coach me</span> <span class="audio-time caption" data-speaker="Sacha" data-start="95.185000" data-stop="97.848000">on live streaming and Emacs and all sorts of stuff, which is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="97.888000" data-stop="101.552000">really, you know, making sure that I have somebody to talk to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="102.813000" data-stop="106.937000">and bounce ideas around with and see where we end up. So the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="107.038000" data-stop="113.785000">last time, which was, Yay Emacs, when was this? Yay Emacs 10,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="114.766000" data-stop="118.309000">I had a coaching session with him to talk about Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="118.329000" data-stop="120.952000">workflows and streaming. So I've been working on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="120.992000" data-stop="123.709000">modularizing my configuration. I'll explain all of this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="123.769000" data-stop="134.970000">again when he comes on, but just to get the hang of this. I've</span> <span class="audio-time caption" data-speaker="Sacha" data-start="135.031000" data-stop="138.758000">modulized my config. I've gotten through hundreds of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="139.119000" data-stop="142.866000">function definitions and exported them all into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="142.926000" data-stop="149.142000">individual files. I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="149.162000" data-stop="152.586000">have in fact even renamed them from my-whatever to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="152.746000" data-stop="160.015000">sacha-whatever. So it's slightly</span> <span class="audio-time caption" data-speaker="Sacha" data-start="160.075000" data-stop="162.918000">easier to copy my functions because they won't trample over</span> <span class="audio-time caption" data-speaker="Sacha" data-start="163.018000" data-stop="168.165000">other people's custom functions called my-whatever. My</span> <span class="audio-time caption" data-speaker="Sacha" data-start="168.225000" data-stop="173.312000">background blurring is very background blurring. So</span> <span class="audio-time caption" data-speaker="Sacha" data-start="173.352000" data-stop="176.138000">that's all good. And then I've got a couple of other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="177.341000" data-stop="180.207000">modifications that I've made. So I've made good progress on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="180.247000" data-stop="186.020000">this very long to-do list that I had made for myself after his</span> <span class="audio-time caption" data-speaker="Sacha" data-start="186.762000" data-stop="191.532000">chat. But the kiddo is here. Oh my goodness!</span> <span class="audio-time caption" data-speaker="Sacha" data-start="198.970000" data-stop="201.613000">Okay, you're gonna go back to school and stuff? You just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="201.633000" data-stop="204.958000">wanted to drop by and make a comment? Yes. Also, the teacher</span> <span class="audio-time caption" data-speaker="Sacha" data-start="204.978000" data-stop="208.663000">let me change my name, but not family. They just wanted to add</span> <span class="audio-time caption" data-speaker="Sacha" data-start="208.683000" data-stop="213.369000">a - in parenthesis. Oh, yeah. Oh, that's good. Now they</span> <span class="audio-time caption" data-speaker="Sacha" data-start="213.389000" data-stop="221.299000">can refer to you. Post my name and my nickname. Alright, I'm</span> <span class="audio-time caption" data-speaker="Sacha" data-start="221.339000" data-stop="222.160000">going to test this new thing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="242.305000" data-stop="252.509000">Interesting</span> <span class="audio-time caption" data-speaker="Sacha" data-start="254.132000" data-stop="256.839000">conflict here. The kiddo likes making cameos. I am not sure</span> <span class="audio-time caption" data-speaker="Sacha" data-start="256.858000" data-stop="261.791000">how I feel about the kiddo making cameos. Anyhow! Where are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="261.831000" data-stop="264.918000">we? Okay, the mic is unmuted again.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="264.000000">00:04:24</span> <strong>Workflow checklist</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="264.919000" data-stop="265.961000">[Sacha]: I am going through my</span> <span class="audio-time caption" data-speaker="Sacha" data-start="266.061000" data-stop="269.269000">checklist. I have this lovely checklist now. It includes,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="269.831000" data-stop="273.660000">naturally because it's Org Mode, it includes Emacs Lisp</span> <span class="audio-time caption" data-speaker="Sacha" data-start="273.940000" data-stop="277.449000">buttons that I can just click on to get stuff running. In this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="277.509000" data-stop="282.499000">case, for example, I can use obs-websocket-el to start</span> <span class="audio-time caption" data-speaker="Sacha" data-start="282.539000" data-stop="286.487000">recording and start streaming at the same time. So that's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="286.548000" data-stop="287.789000">all good.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="287.000000">00:04:47</span> <strong>Demonstrating =sacha-stream-show-message= and package:qrencode</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="287.790000" data-stop="290.135000">[Sacha]: And I want to double check that this message thing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="290.155000" data-stop="295.927000">works. Let's go see if I can send a message to the chat. Show</span> <span class="audio-time caption" data-speaker="Sacha" data-start="295.947000" data-stop="296.528000">string.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="298.955000" data-stop="303.579000">This is a test message that you can ignore. And</span> <span class="audio-time caption" data-speaker="Sacha" data-start="303.759000" data-stop="309.745000">theoretically that shows up there. That shows up in the chat</span> <span class="audio-time caption" data-speaker="Sacha" data-start="309.985000" data-stop="313.709000">with a timestamp. So people using video on demand feature</span> <span class="audio-time caption" data-speaker="Sacha" data-start="313.809000" data-stop="317.052000">where you can go back and just go playback part of the thing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="317.612000" data-stop="323.618000">can go see it. It would help, of course, if I had the time. And</span> <span class="audio-time caption" data-speaker="Sacha" data-start="323.678000" data-stop="328.023000">if I expand this. You have the time in the mode line here. It's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="328.223000" data-stop="333.510000">currently 10:25. But then, my Firefox... Oh, maybe I should</span> <span class="audio-time caption" data-speaker="Sacha" data-start="333.530000" data-stop="340.260000">just tell you what. I will make this above others. There you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="340.300000" data-stop="347.710000">go. Fancy. Super fancy. Except this is right where the...</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="354.000000">00:05:54</span> <strong>qrencode</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="354.136000" data-stop="359.003000">[Sacha]: What's the QR code? The QR code just repeats the string. So</span> <span class="audio-time caption" data-speaker="Sacha" data-start="359.103000" data-stop="363.690000">this will be a little more handy if I have... Let me just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="363.730000" data-stop="366.634000">double check that it does do the string properly. Come on,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="366.774000" data-stop="371.401000">show me the thing. Yep. So this is my... In case you're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="371.441000" data-stop="375.526000">watching this in a mobile device and I show URLs, like for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="375.586000" data-stop="380.594000">example, let's bring up Prot's configuration here. Let's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="380.634000" data-stop="387.249000">go to... Let's do, do, do, do, do... Prot. Yeah, here. And</span> <span class="audio-time caption" data-speaker="Sacha" data-start="387.289000" data-stop="393.499000">then if I say show string and I give it the URL, then it gives</span> <span class="audio-time caption" data-speaker="Sacha" data-start="393.559000" data-stop="398.628000">you the string and the URL should be in the QR code. So people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="398.668000" data-stop="401.617000">who are watching mobile. You can do that. People who are in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="401.637000" data-stop="404.863000">the chat can get it from the chat. It's timestamped so that if</span> <span class="audio-time caption" data-speaker="Sacha" data-start="404.923000" data-stop="409.671000">I grab the timestamps later on, I can use that sort of for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="409.791000" data-stop="413.758000">chapters. And just generally all these little</span> <span class="audio-time caption" data-speaker="Sacha" data-start="413.818000" data-stop="417.705000">conveniences. This QR code is provided by the qrencode</span> <span class="audio-time caption" data-speaker="Sacha" data-start="418.386000" data-stop="422.854000">package. So it's in Emacs. It's actually characters.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="423.087000" data-stop="430.017000">There's probably a way to just insert the image. But I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="430.057000" data-stop="434.203000">thought it was cool. I can't remember who had this technique</span> <span class="audio-time caption" data-speaker="Sacha" data-start="434.263000" data-stop="438.309000">in one of his videos. Maybe it was John Kitchin? That seems</span> <span class="audio-time caption" data-speaker="Sacha" data-start="438.329000" data-stop="441.353000">like the sort of thing he might do. Or it might be someone</span> <span class="audio-time caption" data-speaker="Sacha" data-start="441.393000" data-stop="446.120000">else. Anyway, just these little conveniences because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="446.521000" data-stop="450.186000">copying text, especially in mobile, or trying to type</span> <span class="audio-time caption" data-speaker="Sacha" data-start="450.266000" data-stop="455.366000">things... Try to pause the video at just the right moment. It's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="455.386000" data-stop="461.377000">very annoying. Eventually,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="462.099000" data-stop="466.407000">I would like to plug it into all the usual Embark stuff. For</span> <span class="audio-time caption" data-speaker="Sacha" data-start="466.467000" data-stop="470.335000">example, you'll see this later as I go through this stuff</span> <span class="audio-time caption" data-speaker="Sacha" data-start="470.495000" data-stop="475.947000">with Prot. Log buttons will show messages.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="475.000000">00:07:55</span> <strong>Embark</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="475.948000" data-stop="479.252000">[Sacha]: But theoretically, it would be nice to have my Embark here. For</span> <span class="audio-time caption" data-speaker="Sacha" data-start="479.292000" data-stop="483.337000">example, I'm on Embark on an org URL link. It makes sense</span> <span class="audio-time caption" data-speaker="Sacha" data-start="483.377000" data-stop="487.262000">that... Wait a minute, I do have it. Okay, I think I have it on Z</span> <span class="audio-time caption" data-speaker="Sacha" data-start="487.342000" data-stop="493.710000">here. Is that a capital Z or a small z? Let's find out. Z? Not a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="493.770000" data-stop="497.194000">small z. Capital Z. Whoa, look at that! Okay, okay, so I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="497.234000" data-stop="501.916000">already do have it. Embark is a package that lets you have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="502.016000" data-stop="506.803000">context-sensitive keyboard shortcuts. And so I have this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="506.924000" data-stop="511.450000">now mapped so that if I want an org link, I can press control</span> <span class="audio-time caption" data-speaker="Sacha" data-start="511.510000" data-stop="517.860000">dot and Z and it will send it to the chat and display it on the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="517.900000" data-stop="523.508000">screen with a message because who wants to type things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="523.568000" data-stop="525.711000">manually? You know, this is Emacs. We don't do anything</span> <span class="audio-time caption" data-speaker="Sacha" data-start="525.751000" data-stop="530.408000">manually. And then theoretically, that also should show up</span> <span class="audio-time caption" data-speaker="Sacha" data-start="530.648000" data-stop="533.312000">in... Look at that! It's showing up over here in my timestamp</span> <span class="audio-time caption" data-speaker="Sacha" data-start="533.352000" data-stop="538.539000">section using the magic of org-capture. It includes a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="538.599000" data-stop="542.804000">timestamp and then, of course, with a little bit of math, I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="542.884000" data-stop="548.792000">can calculate this as an offset into the streaming video</span> <span class="audio-time caption" data-speaker="Sacha" data-start="548.812000" data-stop="552.537000">file because I started the stream probably at the same time.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="552.697000" data-stop="556.101000">Anyway, just a little bit of math to calculate that. And then</span> <span class="audio-time caption" data-speaker="Sacha" data-start="556.161000" data-stop="559.799000">I can get chapters out of it. Theoretically. Or I could use</span> <span class="audio-time caption" data-speaker="Sacha" data-start="559.839000" data-stop="563.363000">that to index into the transcript and edit things. Hello,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="563.383000" data-stop="568.349000">Prot! Hello! We are already live. I have just been on screen.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="568.369000" data-stop="569.830000">[Prot]: Already live! Great. Yes.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="569.831000" data-stop="571.332000">[Sacha]: Panicking. Not panicking.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="571.613000" data-stop="574.837000">Experimenting with all the fun stuff. I'm now going to share</span> <span class="audio-time caption" data-speaker="Sacha" data-start="574.877000" data-stop="580.463000">my screen with you so that you can see also. Select window.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="581.124000" data-stop="584.628000">Let's go to all of it. Screen one? Screen one. I think it's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="584.668000" data-stop="591.186000">screen one. Okay. Allow. So, theoretically, you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="594.111000" data-stop="595.653000">should see my screen.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="595.654000" data-stop="599.219000">[Prot]: Very well, very well. Looks good, looks good.</span> <span class="audio-time caption" data-speaker="Prot" data-start="599.220000" data-stop="602.444000">We have connectivity issues, it seems.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="602.445000" data-stop="607.112000">[Sacha]: Your audio sounds choppy.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="607.113000" data-stop="615.547000">[Prot]: Yeah, same here. I cannot hear you well.</span> <span class="audio-time caption" data-speaker="Prot" data-start="615.548000" data-stop="616.670000">Can you hear me now?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="616.671000" data-stop="618.113000">[Sacha]: I dropped my performance.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="618.114000" data-stop="619.376000">[Prot]: Okay, okay, do that.</span> <span class="audio-time caption" data-speaker="Prot" data-start="619.377000" data-stop="625.151000">Well, very well. Because it seems that our... Yes, okay, I did the same.</span> <span class="audio-time caption" data-speaker="Prot" data-start="625.171000" data-stop="627.915000">Okay, so hopefully this will work. Let's see.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="627.916000" data-stop="629.377000">[Sacha]: It's an experiment.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="629.378000" data-stop="631.079000">[Prot]: It seems more stable now.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="631.080000" data-stop="633.323000">[Sacha]: Yes, this is one of the reasons why</span> <span class="audio-time caption" data-speaker="Sacha" data-start="633.324000" data-stop="635.206000">we're having these sessions, so that you can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="635.246000" data-stop="638.811000">experiment to see what's possible. And I was just telling</span> <span class="audio-time caption" data-speaker="Sacha" data-start="638.911000" data-stop="643.818000">stream that I've been having a lot of fun tinkering with a lot</span> <span class="audio-time caption" data-speaker="Sacha" data-start="643.878000" data-stop="648.324000">of the ideas that I was working on after the last chat two</span> <span class="audio-time caption" data-speaker="Sacha" data-start="648.445000" data-stop="655.320000">weeks ago. So my goal for this session is to not panic.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="655.321000" data-stop="663.413000">[Prot]: I really cannot hear you clearly. I keep getting</span> <span class="audio-time caption" data-speaker="Prot" data-start="663.654000" data-stop="671.445000">interruptions, so... It seems that... Yeah, I don't know</span> <span class="audio-time caption" data-speaker="Prot" data-start="671.465000" data-stop="677.475000">what we could do. Maybe I can try to leave and rejoin, maybe.</span> <span class="audio-time caption" data-speaker="Prot" data-start="677.495000" data-stop="682.061000">Let me exit and rejoin Jitsi, maybe that will fix it. Okay,</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="682.082000" data-stop="687.175000">[Sacha]: let's try that. Okay, so let me do that very quickly.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="694.542000" data-stop="697.566000">Quite possibly, I am asking my computer to do too many</span> <span class="audio-time caption" data-speaker="Sacha" data-start="697.626000" data-stop="703.412000">things. Let's see. I am asking my computer to do too many</span> <span class="audio-time caption" data-speaker="Sacha" data-start="703.472000" data-stop="704.832000">things, audio-wise.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="704.833000" data-stop="707.395000">[Prot]: Okay, we will see. We will find out.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="707.396000" data-stop="714.652000">[Sacha]: Let me try changing my virtual mic. How about this one?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="714.653000" data-stop="719.864000">[Prot]: No, your audio is still kind of choppy. Why is your audio choppy?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="719.884000" data-stop="728.039000">[Sacha]: Let's see. What do you think? Yeti, monitor your audio.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="728.040000" data-stop="734.974000">Let me check. Not good. It's okay. Live debugging. Here we go.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="735.578000" data-stop="742.289000">Okay, you are, where are we? You are Firefox. Yes, yes, yes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="743.090000" data-stop="750.341000">Okay, I can disconnect the, uh, disconnect the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="750.542000" data-stop="754.448000">connections. Let me think.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="757.988000" data-stop="765.680000">Connect the ports of Combined Sink Monitor to Firefox Input.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="769.545000" data-stop="775.714000">[Prot]: And while you do that, we will... Testing.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="775.715000" data-stop="776.816000">[Sacha]: How are we doing?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="778.198000" data-stop="779.840000">[Prot]: There it is.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="779.841000" data-stop="780.882000">[Sacha]: Is this slightly better?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="783.586000" data-stop="785.932000">Testing. One, two, three.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="785.933000" data-stop="787.996000">[Prot]: Yeah, let's see here, so... Okay,</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="788.016000" data-stop="795.226000">[Sacha]: that seems to be good. And now I'm sharing my screen. How is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="795.306000" data-stop="795.967000">our screen?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="801.013000" data-stop="805.419000">Hmm, does not like screen sharing at the same time. Let me see</span> <span class="audio-time caption" data-speaker="Sacha" data-start="805.459000" data-stop="809.264000">what's going on with my memory. My memory is fine. I have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="809.304000" data-stop="814.952000">memory. Let us stop the screen sharing. How are we now? Is our</span> <span class="audio-time caption" data-speaker="Sacha" data-start="815.012000" data-stop="815.653000">audio back?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="819.548000" data-stop="824.773000">[Prot]: Okay. I can hear you well. I can hear you well in terms of the</span> <span class="audio-time caption" data-speaker="Prot" data-start="824.833000" data-stop="828.817000">fact that there is no choppiness now in the audio. However,</span> <span class="audio-time caption" data-speaker="Prot" data-start="828.918000" data-stop="833.022000">your voice has been distorted a little bit. It's not a</span> <span class="audio-time caption" data-speaker="Prot" data-start="833.082000" data-stop="835.905000">problem. I can hear you clearly, but I just mention it for the</span> <span class="audio-time caption" data-speaker="Prot" data-start="836.185000" data-stop="838.968000">sake of your setup.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="840.469000" data-stop="845.094000">[Sacha]: This is interesting and I'm not entirely sure how I will go</span> <span class="audio-time caption" data-speaker="Sacha" data-start="845.174000" data-stop="849.848000">about fixing it at this moment. No</span> <span class="audio-time caption" data-speaker="Sacha" data-start="854.578000" data-stop="858.706000">problem. It's not really a problem because I hear you well,</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="858.726000" data-stop="863.055000">[Prot]: so that's enough. I am tempted to suggest the non-free...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="863.576000" data-stop="866.262000">[Sacha]: Let's jump over to Google Meet and see if that's any better.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="867.237000" data-stop="874.727000">[Prot]: Let's do it. Send me the link and let's do that. No problem.</span> <span class="audio-time caption" data-speaker="Prot" data-start="874.728000" data-stop="882.658000">We are already on YouTube anyways. Let me try this.</span> <span class="audio-time caption" data-speaker="Prot" data-start="882.659000" data-stop="889.027000">[Sacha] I will send it to you in the Jitsi chat and then things will be crazy.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="889.028000" data-stop="895.017000">[Sacha]: It's in the Jitsi chat and we'll see if that works. Does that work?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="896.549000" data-stop="908.986000">I will also email it to you.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="913.212000" data-stop="916.556000">That's not the link.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="922.565000" data-stop="925.088000">Okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="926.705000" data-stop="935.593000">Now I need to see whether this actually works. Oh. Ah!</span> <span class="audio-time caption" data-speaker="Sacha" data-start="939.337000" data-stop="947.024000">Ah, technology! How does it work?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="947.044000" data-stop="949.666000">Camera is starting. Camera is not starting. I don't know</span> <span class="audio-time caption" data-speaker="Sacha" data-start="949.686000" data-stop="952.589000">what it's talking about. Camera is starting. Allow camera.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="954.291000" data-stop="963.893000">Join now. Okay. Testing. My audio works. Admit one guest.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="965.475000" data-stop="972.946000">Admit. Okay. Testing. Does this work now? I can hear you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="972.966000" data-stop="980.436000">clearly. Okay. Now I'm going to try sharing this. Yes. Very</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="980.476000" data-stop="984.843000">[Prot]: well. And then let's see what happens. Share. Yeah. The</span> <span class="audio-time caption" data-speaker="Prot" data-start="984.923000" data-stop="990.984000">moment of truth. Let's see.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="990.985000" data-stop="992.907000">[Sacha]: Technology continues to work?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="993.968000" data-stop="997.433000">[Prot]: Yeah, yeah, it does work. This is smooth. This works. So</span> <span class="audio-time caption" data-speaker="Prot" data-start="997.533000" data-stop="1000.877000">let's see. Okay, all right. So it probably means that in the</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1000.957000" data-stop="1004.141000">[Sacha]: future I might actually need to spin up our Big Blue Button</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1004.181000" data-stop="1007.345000">server because sometimes the free Jitsi, you know, you're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1007.605000" data-stop="1011.783000">just dealing with whatever you get for free, right? We</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1012.924000" data-stop="1016.769000">already have comments. phyzixlab wants to know, well,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1017.390000" data-stop="1020.074000">phyzixlab says, Prot, I'm jealous of your beard. Which</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1020.194000" data-stop="1025.501000">Emacs package can I install to have a glorious beard like</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1025.521000" data-stop="1029.847000">you? Emacs Genes. Emacs Genes. Y'all can book your own</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1030.007000" data-stop="1032.830000">coaching session with Prat. Although technically, I don't</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1032.851000" data-stop="1034.535000">mind sharing mine.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1034.000000">00:17:14</span> <strong>My objectives</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1034.536000" data-stop="1038.723000">[Sacha]: Okay, so my objectives is I want to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1038.742000" data-stop="1043.672000">capture and share more, right? And that's great because in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1043.692000" data-stop="1045.636000">the experiments that I've been doing with live streaming so</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1045.715000" data-stop="1048.560000">far, I have found myself going on tangents based on people's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1048.641000" data-stop="1052.568000">questions. And theoretically, I can go back and use those</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1052.648000" data-stop="1056.274000">transcripts, which I haven't yet. But that could be more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1056.355000" data-stop="1059.926000">stuff into blog posts that are more searchable. And</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1059.946000" data-stop="1063.849000">creating opportunities for conversation, which I think</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1063.889000" data-stop="1066.011000">you've also been experiencing with your experiments with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1066.071000" data-stop="1070.075000">live streams lately. Because it is nice to have that back and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1070.135000" data-stop="1072.297000">forth when you're demonstrating something and you can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1072.397000" data-stop="1076.421000">immediately show something that was unclear. Quick</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1076.481000" data-stop="1079.323000">overview of my timeline. Again, until June, I've got a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1079.443000" data-stop="1082.386000">fairly predictable schedule, except for the times when the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1082.466000" data-stop="1085.369000">kid turns out to have a substitute teacher and is too grumpy</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1085.409000" data-stop="1089.713000">to go to school. So just some flexibility still with the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1089.733000" data-stop="1092.557000">schedule, but I am starting to experiment with scheduling</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1092.617000" data-stop="1096.702000">chats. So that's nice. And this is our first experiment with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1096.762000" data-stop="1099.845000">it. I'm like, okay, let's try a live stream at this date at</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1099.905000" data-stop="1104.931000">this time with somebody who is going to show up also. And then</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1104.971000" data-stop="1107.214000">in July and August, since my schedule will be less</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1107.254000" data-stop="1110.397000">predictable, then we'll do more spontaneous things like we</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1110.437000" data-stop="1112.920000">also have been doing. And then September onwards is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1112.960000" data-stop="1116.659000">probably going to be EmacsConf. So with that in mind, I want</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1116.699000" data-stop="1120.105000">to quickly share the updates from the last one. And</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1120.165000" data-stop="1123.730000">probably, you know, you will think about stuff and say, oh,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1123.891000" data-stop="1126.395000">yeah, have you thought about doing this? Or, oh, that's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1126.455000" data-stop="1129.920000">good. Try this one next. Or in my experience, so and so and so.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1131.022000" data-stop="1134.147000">And of course, I'd love to hear what you've been learning</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1134.247000" data-stop="1136.450000">about also.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1136.451000" data-stop="1139.190000">[Prot]: Yeah, yeah, yeah, yeah, yeah. Very good.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1139.000000">00:18:59</span> <strong>keycast-header-mode</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="1139.191000" data-stop="1140.912000">[Prot]: And I will tell you my experience as well,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1140.913000" data-stop="1142.535000">because based on our last exchange,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1142.536000" data-stop="1145.681000">I also tried keycast at the top, for example.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1145.701000" data-stop="1149.586000">[Sacha]: Yeah, yeah. It gets out of the way of the closed captions.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1149.587000" data-stop="1152.311000">[Prot]: It does. It does. Yeah. So it has some advantages and it's</span> <span class="audio-time caption" data-speaker="Prot" data-start="1152.391000" data-stop="1155.716000">always visible and the key and the command is always</span> <span class="audio-time caption" data-speaker="Prot" data-start="1155.776000" data-stop="1158.460000">visible. But I have to get used to it because it was</span> <span class="audio-time caption" data-speaker="Prot" data-start="1158.501000" data-stop="1161.097000">distracting me.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1161.098000" data-stop="1163.401000">[Sacha]: Yeah, I hear you, I hear you. It's kind of a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1163.461000" data-stop="1167.346000">trade-off, right? And that actually goes to one of the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1167.406000" data-stop="1172.553000">points that I wanted to touch on later where getting the hang</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1172.733000" data-stop="1175.817000">of live streaming while coding or while working does</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1175.917000" data-stop="1181.144000">require a fair bit of trade-offs. On the plus side, I'm going</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1181.184000" data-stop="1185.870000">to see if this works. It should insert a chapter marker so</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1185.000000">00:19:45</span> <strong>Trade-offs when livestreaming while coding</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1185.910000" data-stop="1189.532000">[Sacha]: that I know, okay, this part to this part is this conversation.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1189.533000" data-stop="1192.898000">So when you're live streaming while you're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1193.339000" data-stop="1195.883000">doing package maintenance or you're working on config or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1195.903000" data-stop="1200.109000">whatever else, it is slightly more distracting because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1200.329000" data-stop="1202.152000">people come up with interesting comments and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1202.212000" data-stop="1206.959000">conversations. But on the plus side, it is also, as I've seen</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1207.019000" data-stop="1210.665000">you do, helpful at debugging. You're staring at something.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1210.685000" data-stop="1213.569000">You're like, what's wrong here? And someone is like, oh</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1213.589000" data-stop="1215.789000">yeah, you're missing a trailing slash.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1215.790000" data-stop="1219.834000">[Prot]: Yes, yes. It really helps.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1219.835000" data-stop="1222.418000">Well, I'm not sure if it helps, though, because the</span> <span class="audio-time caption" data-speaker="Prot" data-start="1222.478000" data-stop="1224.820000">fact that you are talking to the chat means that you are not</span> <span class="audio-time caption" data-speaker="Prot" data-start="1224.861000" data-stop="1230.087000">paying attention to what is in front of you. So it can cut both</span> <span class="audio-time caption" data-speaker="Prot" data-start="1230.187000" data-stop="1233.010000">ways, right? There are times, though, where it really</span> <span class="audio-time caption" data-speaker="Prot" data-start="1233.070000" data-stop="1236.394000">helps. Yes. Where you are completely lost and then the</span> <span class="audio-time caption" data-speaker="Prot" data-start="1236.454000" data-stop="1241.659000">people in the chat are like, hey, that's how you fix it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1241.660000" data-stop="1246.089000">[Sacha]: All right. So maybe I just have to A, build up more of a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1246.570000" data-stop="1250.798000">conversation so that we can get those benefits and B, figure</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1250.838000" data-stop="1255.467000">out how to run my narration on a separate worker thread in my</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1255.528000" data-stop="1259.975000">brain. I don't think it happens. I think I used to be more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1260.035000" data-stop="1262.778000">multithreaded in the past, but I am slightly less</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1262.818000" data-stop="1265.422000">multithreaded now. However, it turns out that spending all</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1265.442000" data-stop="1269.207000">this time with kids means I am getting better at generating</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1269.267000" data-stop="1272.951000">verbal responses that I'm not necessarily, you know, like</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1273.332000" data-stop="1276.376000">focusing too much on or just saying like stuff to keep them</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1276.436000" data-stop="1280.241000">amused and entertained. Oh, that's quite a skill. Yes,</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1280.381000" data-stop="1283.847000">[Prot]: that's good. That's good. I don't know. But yeah, so there</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1283.947000" data-stop="1284.868000">[Sacha]: are trade-offs here.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1284.000000">00:21:24</span> <strong>Trade-offs: seeing less text on the screen</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1284.869000" data-stop="1286.673000">[Sacha]: The other thing is now that I am using</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1286.713000" data-stop="1291.302000">mode to switch on my... I am streaming, do the Fontaine</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1291.362000" data-stop="1294.749000">preset and all of that stuff. Now there's like less space on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1294.789000" data-stop="1299.693000">my screen for code. So I had to get used to it again. yes yes yes</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1299.773000" data-stop="1303.220000">[Prot]: yes that that's one of the downsides of course yes like you</span> <span class="audio-time caption" data-speaker="Prot" data-start="1303.260000" data-stop="1306.546000">have to have a larger font so that people can see what you are</span> <span class="audio-time caption" data-speaker="Prot" data-start="1306.626000" data-stop="1311.014000">typing and then of course that comes at the cost of including</span> <span class="audio-time caption" data-speaker="Prot" data-start="1311.095000" data-stop="1315.838000">fewer things on screen Though maybe you could have a little</span> <span class="audio-time caption" data-speaker="Prot" data-start="1315.878000" data-stop="1319.244000">bit of a wider frame, like specifically in your case. I don't</span> <span class="audio-time caption" data-speaker="Prot" data-start="1319.264000" data-stop="1322.510000">know, it's already at the 80 characters already? Yeah, it's</span> <span class="audio-time caption" data-speaker="Prot" data-start="1322.590000" data-stop="1327.499000">already... Yeah, I think in my case, my frame fits about 100</span> <span class="audio-time caption" data-speaker="Prot" data-start="1327.599000" data-stop="1331.947000">characters. Well, I haven't measured it, but I think it's</span> <span class="audio-time caption" data-speaker="Prot" data-start="1332.027000" data-stop="1336.234000">something in that... Like, yeah, about there is my frame.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1336.254000" data-stop="1338.589000">[Sacha]: Yeah, it has about 80 characters.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1338.590000" data-stop="1340.900000">So it's about 75 characters.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1340.901000" data-stop="1346.167000">[Prot]: So in my case...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1346.168000" data-stop="1348.600000">[Sacha]: All right. And then the stream can tell me if this is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1348.600000" data-stop="1348.600000">still readable, because of course more code on the screen</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1348.601000" data-stop="1357.733000">means more code getting written or done.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1357.734000" data-stop="1361.706000">[Prot]: And just to say also more code on the screen means</span> <span class="audio-time caption" data-speaker="Prot" data-start="1361.767000" data-stop="1366.514000">that it can be easier to debug or write the code. Because you</span> <span class="audio-time caption" data-speaker="Prot" data-start="1366.574000" data-stop="1369.017000">have the context right there. You don't have to go up and down</span> <span class="audio-time caption" data-speaker="Prot" data-start="1369.117000" data-stop="1370.738000">the screen to find it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1370.739000" data-stop="1372.341000">[Sacha]: Especially since I'm used to actually</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1372.421000" data-stop="1376.586000">dividing my frame into two windows so I can do left and right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1377.367000" data-stop="1382.734000">And I'm doing this on a standard aspect mode. You have a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1382.814000" data-stop="1385.237000">widescreen, so you're a little bit spoiled in this regard. I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1385.297000" data-stop="1389.782000">only have like two monitors that I'm doing. But maybe that is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1389.842000" data-stop="1395.048000">what I'll end up just using separate frames for. Yes, so</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1395.208000" data-stop="1398.471000">slightly smaller font size, and stream can tell me whether</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1398.491000" data-stop="1403.777000">this is too small for them. I know people who are older will</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1403.797000" data-stop="1407.180000">develop an appreciation for larger font also, so take</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1407.220000" data-stop="1410.804000">advantage of this ability to work with medium-sized fonts</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1410.864000" data-stop="1417.412000">while they can. So font sets, that's definitely a thing. And</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1417.492000" data-stop="1422.212000">then just trying to figure out how I can make it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1422.312000" data-stop="1429.021000">more useful both to other people and for myself and during</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1429.102000" data-stop="1432.185000">the live stream as well as after the live stream.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1432.000000">00:23:52</span> <strong>Lowering the effort needed to announce a stream: Prot just announces it and the blog post embeds it</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1432.186000" data-stop="1434.108000">[Sacha]: Now you've mentioned you don't actually go back into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1434.109000" data-stop="1436.251000">your live streams afterwards.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1436.252000" data-stop="1440.738000">You just plug the YouTube video, you update</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1440.778000" data-stop="1443.302000">your description so that it's past tense instead of future</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1443.362000" data-stop="1445.565000">tense and you republish your post. I think that's your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1445.605000" data-stop="1452.470000">workflow, right? Even less. So I don't even retrofit the</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1452.530000" data-stop="1455.243000">[Prot]: past tense, you know, present tense to past tense. It's like</span> <span class="audio-time caption" data-speaker="Prot" data-start="1455.364000" data-stop="1458.264000">all present tense. It's like I will do a live stream. It will</span> <span class="audio-time caption" data-speaker="Prot" data-start="1458.284000" data-stop="1461.827000">be recorded. You can find it here kind of thing. Okay.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1461.828000" data-stop="1462.388000">[Sacha]: All right.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1462.389000" data-stop="1465.732000">[Prot]: And so just to say, though, just to say the reason I do</span> <span class="audio-time caption" data-speaker="Prot" data-start="1465.793000" data-stop="1470.178000">this is because I don't want to go through a three hour stream</span> <span class="audio-time caption" data-speaker="Prot" data-start="1470.258000" data-stop="1472.941000">again because then a three hour stream becomes like a ten</span> <span class="audio-time caption" data-speaker="Prot" data-start="1473.021000" data-stop="1476.665000">hour stream in practice. And this means that it adds</span> <span class="audio-time caption" data-speaker="Prot" data-start="1476.805000" data-stop="1479.909000">friction and it adds to the requirements, which</span> <span class="audio-time caption" data-speaker="Prot" data-start="1479.969000" data-stop="1482.992000">effectively means I will be doing fewer of them. Yeah.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1483.000000">00:24:43</span> <strong>Timestamps</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1483.630000" data-stop="1486.875000">[Sacha]: That's what I'm thinking. Maybe lightweight sort of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1487.476000" data-stop="1491.402000">chapter markers. You've mentioned you just remember this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1491.442000" data-stop="1494.207000">sort of stuff, but since I don't actually remember this sort</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1494.247000" data-stop="1499.235000">of stuff, having a way for Emacs to send messages to the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1499.275000" data-stop="1504.322000">stream and also show things in the timestamps. I have a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1504.382000" data-stop="1510.790000">timestamp now. It's nice. It just says Org Capture. And all</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1510.830000" data-stop="1513.993000">that will then theoretically make it easier for me to say,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1514.173000" data-stop="1517.257000">okay, let's go find the chapter and then I'll just adjust the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1517.317000" data-stop="1520.260000">timestamps afterwards to say, okay, from this point to this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1520.320000" data-stop="1524.325000">point. If people are interested, they can go in there and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1524.365000" data-stop="1528.196000">they can look at the transcript for more.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1528.197000" data-stop="1531.682000">[Prot]: I think we discussed this last time as well.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1531.683000" data-stop="1532.544000">You could have a function</span> <span class="audio-time caption" data-speaker="Prot" data-start="1532.584000" data-stop="1537.372000">like start-stream and it starts a timer or it starts</span> <span class="audio-time caption" data-speaker="Prot" data-start="1537.433000" data-stop="1540.458000">recording the time and then relative to that point, any</span> <span class="audio-time caption" data-speaker="Prot" data-start="1540.558000" data-stop="1543.863000">offset and that's your timestamp right away. And whenever</span> <span class="audio-time caption" data-speaker="Prot" data-start="1543.943000" data-stop="1547.489000">there is some event happening, you can type a key and then</span> <span class="audio-time caption" data-speaker="Prot" data-start="1547.550000" data-stop="1551.336000">maybe it gives you a prompt and you write what is it, like just</span> <span class="audio-time caption" data-speaker="Prot" data-start="1551.376000" data-stop="1553.931000">a string and then that is the chapter.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1553.932000" data-stop="1557.735000">[Sacha]: An org timer will do that kind of insert a timestamp for you.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1557.736000" data-stop="1559.276000">But one of the reasons why I liked having</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1559.277000" data-stop="1563.482000">my custom show message thing is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1563.642000" data-stop="1568.006000">that it can display the text on the screen, display a QR code</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1568.106000" data-stop="1570.989000">for the text in case people want to copy the function that I'm</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1571.029000" data-stop="1575.373000">talking about, send it to the chat so that people using video</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1575.393000" data-stop="1580.370000">on demand can say, oh yeah, at around 10:25 or whatever. I'm</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1580.410000" data-stop="1583.396000">currently using wall-clock timestamps, which means I need to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1583.456000" data-stop="1587.745000">modify my mode line so that the time starts earlier and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1587.785000" data-stop="1593.757000">people can use that to jump around the thing. And then, so</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1593.777000" data-stop="1597.364000">it's like in half a dozen places, which is what org-timer does</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1597.404000" data-stop="1600.883000">not get me if I'm just inserting a timestamp here. Anyway,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1601.423000" data-stop="1604.728000">minor, like, you know, little workflow improvements. But</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1604.868000" data-stop="1609.595000">it's this whole, as you said, I don't want to go back and spend</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1609.755000" data-stop="1613.059000">six hours processing the three-hour livestream. I want to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1613.119000" data-stop="1616.844000">say, all right, this video has some potential interesting</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1616.884000" data-stop="1619.548000">things here because these people ask these questions. This</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1619.608000" data-stop="1623.874000">is roughly the time when I answer those questions. Ideally,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1623.894000" data-stop="1626.357000">this is the text of the question. Someday, there might even</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1626.417000" data-stop="1630.164000">be screenshots and clips. I'm modifying compile-media to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1630.204000" data-stop="1632.910000">make it easier for me to do that kind of video editing from</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1632.950000" data-stop="1635.173000">within Emacs.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1635.174000" data-stop="1636.215000">[Prot]: Oh, wonderful.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1636.216000" data-stop="1637.839000">[Sacha]: yeah, yeah. But it's all</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1637.899000" data-stop="1640.243000">still like, okay, progress. First, I've got to develop the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1640.304000" data-stop="1642.868000">habit of streaming, and then I have to develop the habit of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1642.928000" data-stop="1647.016000">saying, now we are talking about this topic so that it can all</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1647.076000" data-stop="1649.308000">get marked everywhere.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1649.000000">00:27:29</span> <strong>Different types of livestreams</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1649.309000" data-stop="1651.712000">[Sacha]: And that got me to thinking, well,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1651.732000" data-stop="1654.216000">there are a couple of different types of live streams and you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1654.236000" data-stop="1657.060000">might have also done something about which ones fit the way</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1657.080000" data-stop="1660.184000">that you had to present. One is the, you know, the, I'm going</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1660.204000" data-stop="1663.549000">to spend time doing this anyway, which is like your package</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1663.609000" data-stop="1666.372000">maintenance, where you will accept a little bit of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1666.413000" data-stop="1670.498000">distractibility for the benefit of having other people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1670.618000" data-stop="1673.683000">around to ask questions and clarify things and stop you when</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1673.703000" data-stop="1681.125000">you're getting stuck somewhere. I have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1681.185000" data-stop="1683.470000">something I specifically want to teach and you've done this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1683.510000" data-stop="1686.094000">before with walking through a blog post and just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1686.154000" data-stop="1689.100000">demonstrating things interactively because there's some</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1689.120000" data-stop="1692.546000">things that are easier when you're showing it, right?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1693.500000" data-stop="1694.826000">[Prot]: Correct, correct. ...</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1694.000000">00:28:14</span> <strong>Reading other people's configs</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1694.827000" data-stop="1697.090000">[Sacha]: Reacting to other things. In this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1697.170000" data-stop="1699.494000">one, I've started to have fun with because I've been going</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1699.514000" data-stop="1702.518000">through your Emacs configuration, which is several</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1702.578000" data-stop="1706.885000">hundred pages when converted to a PDF. And I forget, do you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1706.965000" data-stop="1709.990000">actually, like, do you produce a PDF, PDF, like a nicely</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1710.410000" data-stop="1711.391000">thingy?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1711.392000" data-stop="1713.954000">[Prot]: I haven't done it, but that's trivial to do, actually.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1713.955000" data-stop="1715.056000">I could do it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1715.057000" data-stop="1718.341000">[Sacha]: Yeah, yeah, so I've also been reading tecosaur's PDF,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1718.342000" data-stop="1720.043000">and his PDF is gorgeous.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1720.044000" data-stop="1724.522000">Like, it starts off with, like, a cover page and and everything.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1724.523000" data-stop="1726.206000">But it's Doom Emacs. I have to translate a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1726.247000" data-stop="1732.498000">lot of things to my specific setup. But now I have literate</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1732.538000" data-stop="1738.069000">config envy. Anyway, that's an entire category of live</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1738.089000" data-stop="1740.634000">streams here, which could just be me copying interesting</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1740.674000" data-stop="1744.760000">things out of other people's configs. Today we are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1744.800000" data-stop="1748.103000">experimenting with a chatting with a guest variety of live</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1748.123000" data-stop="1751.687000">stream, which you also do with your Prot asks. Actually, I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1751.707000" data-stop="1753.548000">forget. Are those live streams?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1753.549000" data-stop="1755.391000">[Prot]: They are not live streamed,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1755.431000" data-stop="1758.755000">but the idea is that I do not edit them. However, if somebody</span> <span class="audio-time caption" data-speaker="Prot" data-start="1758.835000" data-stop="1763.039000">really wants, I can edit it. So the idea is let's go with the</span> <span class="audio-time caption" data-speaker="Prot" data-start="1763.100000" data-stop="1766.743000">flow. Don't worry about it. It's casual, all that. But if</span> <span class="audio-time caption" data-speaker="Prot" data-start="1766.804000" data-stop="1769.667000">somebody says something that doesn't sound right, doesn't</span> <span class="audio-time caption" data-speaker="Prot" data-start="1769.707000" data-stop="1771.808000">mean it or whatever, I'm happy to edit it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1771.809000" data-stop="1775.616000">[Sacha]: Yeah. I'm starting to look into how to do that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1775.617000" data-stop="1777.602000">if I'm doing this live and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1777.662000" data-stop="1783.676000">apparently if I set up a sufficiently long buffer in OBS for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1783.716000" data-stop="1788.125000">streaming, like a delay for 20 seconds or 15 seconds, then I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1788.166000" data-stop="1792.611000">can stop streaming and the stuff that happened in the last 10</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1792.672000" data-stop="1796.897000">or 15 seconds doesn't make it out to the public, but it's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1797.738000" data-stop="1798.278000">still kind of...</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1798.279000" data-stop="1799.740000">[Prot]: Living dangerously, yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1799.741000" data-stop="1800.402000">[Sacha]: Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1800.422000" data-stop="1803.005000">Because seeing as I'm still practicing remembering to flip</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1803.025000" data-stop="1807.832000">the webcam down when the kid runs in and wants to be on camera,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1807.852000" data-stop="1812.017000">I'm like... My reaction time, not there yet.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1812.000000">00:30:12</span> <strong>Hanging out</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1812.018000" data-stop="1813.319000">[Sacha]: And then other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1813.359000" data-stop="1818.224000">people are like, they just hang out. They're not like, I'm</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1818.264000" data-stop="1820.527000">going to do something. They're just hanging out, which I'm</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1820.607000" data-stop="1822.849000">sort of starting to experiment with when I'm doing Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1822.909000" data-stop="1825.752000">News on Mondays, because I'm like, I'm categorizing it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1825.812000" data-stop="1829.035000">anyway, but it doesn't require a lot of brainpower because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1829.055000" data-stop="1831.338000">I'm not coding or debugging. I'm just saying, okay, this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1831.378000" data-stop="1833.760000">looks like an Org Mode link. This looks like a miscellaneous</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1834.000000" data-stop="1838.565000">link. And then some people just play games, which is fun too.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1838.866000" data-stop="1842.089000">[Prot]: Yes, that's good. And they want to have somebody on the side,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1843.131000" data-stop="1845.452000">guide them through what they are doing.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1845.453000" data-stop="1848.996000">[Sacha]: Yeah, or it blends into a hanging out sort of thing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1848.997000" data-stop="1852.180000">Yes, yes. And it's like,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1852.200000" data-stop="1854.562000">what is the kiddo doing now?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1854.563000" data-stop="1856.004000">[Prot]: Yeah, the camera, the camera.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1856.125000" data-stop="1864.333000">That's fun, that's fun. Good reaction time. Yeah, yeah,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1864.714000" data-stop="1868.738000">yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1870.338000" data-stop="1872.903000">[Sacha]: Yes, thank you for your homework. I will scan this and put it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1873.003000" data-stop="1880.035000">online later. This is it. Yes, life. Life.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1880.036000" data-stop="1882.339000">[Prot]: Putting your reaction time to the test.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1882.340000" data-stop="1886.288000">[Sacha]: Yes. So in terms of getting more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1886.508000" data-stop="1889.180000">out of livestreams, That's what I've been thinking about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1889.260000" data-stop="1893.126000">lately. I think I would like to do more of these, you know,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1893.687000" data-stop="1897.032000">hey, folks, keep keeping company while I'm coding this or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1897.072000" data-stop="1899.677000">whatever, since you've been having a lot of good experience</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1899.717000" data-stop="1900.737000">with that.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1900.000000">00:31:40</span> <strong>Livestreams for explaining specific things</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1900.738000" data-stop="1903.002000">[Sacha]: I would also like to eventually move into more of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1903.042000" data-stop="1905.365000">these. I have something I specifically want to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1905.406000" data-stop="1907.829000">demonstrate, which probably necessitates actually</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1907.970000" data-stop="1911.415000">organizing my thoughts. And you've done a bunch of these.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1911.850000" data-stop="1915.104000">After writing a post, it seems like more like recording a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1915.164000" data-stop="1918.920000">video and walking through it. Do you also sometimes do them</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1918.980000" data-stop="1920.692000">before writing a post?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1920.000000">00:32:00</span> <strong>Prot on didactic livestreams</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="1920.693000" data-stop="1923.155000">[Prot]: I haven't done that but actually,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1923.156000" data-stop="1925.339000">when I write posts, I write them in one go,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1925.340000" data-stop="1926.620000">so maybe I should do a live stream</span> <span class="audio-time caption" data-speaker="Prot" data-start="1926.621000" data-stop="1928.884000">where I actually write a blog post</span> <span class="audio-time caption" data-speaker="Prot" data-start="1928.885000" data-stop="1933.330000">just to show that I can do it.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1933.331000" data-stop="1936.616000">The thing is of course what do you want to</span> <span class="audio-time caption" data-speaker="Prot" data-start="1936.676000" data-stop="1939.840000">communicate, because if it's teaching, like if you are</span> <span class="audio-time caption" data-speaker="Prot" data-start="1939.920000" data-stop="1943.004000">writing it and trying to teach it at the same time,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1943.005000" data-stop="1945.447000">there is a chance that you might leave something out.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1945.448000" data-stop="1949.411000">Some of that detail, some of that nuance.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1949.412000" data-stop="1951.833000">For example, if you want to explain how</span> <span class="audio-time caption" data-speaker="Prot" data-start="1951.834000" data-stop="1955.978000">a form in Emacs Lisp works, let's say if or cond,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1956.478000" data-stop="1960.522000">you may not come up with a very good example live and it may not</span> <span class="audio-time caption" data-speaker="Prot" data-start="1960.582000" data-stop="1963.645000">have didactic value. So even though you know how it works,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1964.926000" data-stop="1970.471000">the communication value is not there. So that it helps for</span> <span class="audio-time caption" data-speaker="Prot" data-start="1970.531000" data-stop="1974.315000">you to write it in advance. Even if it's in one go, again, you</span> <span class="audio-time caption" data-speaker="Prot" data-start="1974.335000" data-stop="1976.797000">can write it, you can read it, and then you can come up with a</span> <span class="audio-time caption" data-speaker="Prot" data-start="1976.837000" data-stop="1981.981000">good example and then stream that. So it really depends on</span> <span class="audio-time caption" data-speaker="Prot" data-start="1982.021000" data-stop="1984.824000">what you want to do. The other day I did a stream, a live</span> <span class="audio-time caption" data-speaker="Prot" data-start="1984.864000" data-stop="1988.107000">stream, where I was writing a package from scratch, a small</span> <span class="audio-time caption" data-speaker="Prot" data-start="1988.147000" data-stop="1993.551000">package. So there part of it was to teach, but also to</span> <span class="audio-time caption" data-speaker="Prot" data-start="1993.651000" data-stop="1999.636000">demonstrate. And there I don't really care if the didactic</span> <span class="audio-time caption" data-speaker="Prot" data-start="1999.696000" data-stop="2003.801000">value is very high. Because even if there are mistakes, it's</span> <span class="audio-time caption" data-speaker="Prot" data-start="2003.942000" data-stop="2007.290000">part of the process. It's not like, well, you will come here</span> <span class="audio-time caption" data-speaker="Prot" data-start="2007.731000" data-stop="2011.281000">and from zero to hero kind of thing, you will learn</span> <span class="audio-time caption" data-speaker="Prot" data-start="2011.361000" data-stop="2013.827000">everything. It's not like that. It's like you come here, you</span> <span class="audio-time caption" data-speaker="Prot" data-start="2013.947000" data-stop="2018.280000">might learn something, but the bar is relatively low.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2018.281000" data-stop="2022.125000">[Sacha]: I think especially since my mind likes to jump around a lot&#45;&#45;</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2022.145000" data-stop="2025.408000">you seem a lot more organized when you're thinking through</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2025.428000" data-stop="2027.169000">things, especially if you're saying you write your blog</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2027.189000" data-stop="2030.793000">posts straight in one go. I'm like, okay, do this part over</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2030.833000" data-stop="2033.115000">here, do that part there. I will definitely lose things,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2033.455000" data-stop="2036.538000">like you mentioned, and I will definitely go back and say,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2036.819000" data-stop="2041.944000">no, I need to do this before I can say that. So yeah, I think I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2041.984000" data-stop="2045.227000">can save that for summer when I might be focusing more on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2045.267000" data-stop="2047.811000">things I cannot schedule.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2047.000000">00:34:07</span> <strong>Prot suggests breadcrumbs</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="2047.812000" data-stop="2050.356000">[Prot]: How about leaving breadcrumbs</span> <span class="audio-time caption" data-speaker="Prot" data-start="2050.596000" data-stop="2054.521000">for yourself? Like, I was writing this. Like, write a</span> <span class="audio-time caption" data-speaker="Prot" data-start="2054.561000" data-stop="2057.284000">comment. Basically, I was writing this, I need to remember</span> <span class="audio-time caption" data-speaker="Prot" data-start="2057.364000" data-stop="2059.527000">that, and then you jump off on the tangent.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2064.415000" data-stop="2069.583000">[Sacha]: I need to use a universal prefix to get the time, don't I? Yes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2070.684000" data-stop="2076.187000">Leaving yourself breadcrumbs. Yeah, yeah, yeah.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2076.188000" data-stop="2079.511000">[Prot]: And then you can retrace your thoughts, basically.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2079.512000" data-stop="2082.575000">Like, okay, I was here, I was meaning to do that.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2082.576000" data-stop="2085.117000">Especially when you are streaming, chances are that</span> <span class="audio-time caption" data-speaker="Prot" data-start="2085.118000" data-stop="2086.940000">there will be several comments</span> <span class="audio-time caption" data-speaker="Prot" data-start="2086.980000" data-stop="2089.882000">that are very interesting and you want to get to. And you</span> <span class="audio-time caption" data-speaker="Prot" data-start="2089.922000" data-stop="2093.507000">might be talking to them for 10 minutes or more. And then, of</span> <span class="audio-time caption" data-speaker="Prot" data-start="2093.547000" data-stop="2096.469000">course, if you don't have that or you want to jump off on a</span> <span class="audio-time caption" data-speaker="Prot" data-start="2096.510000" data-stop="2099.211000">tangent, you will eventually forget what you were doing.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2099.212000" data-stop="2100.813000">[Sacha]: Do you have anything like this already</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2100.814000" data-stop="2102.520000">that you're currently doing?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2102.521000" data-stop="2105.353000">[Prot]: And no, but this is the sort of thing that should be a</span> <span class="audio-time caption" data-speaker="Prot" data-start="2105.453000" data-stop="2108.667000">fun exercise to actually demonstrate as well for yourself.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2109.052000" data-stop="2115.721000">[Sacha]: I use ZZZ if I just put it in text and I have some things, for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2115.761000" data-stop="2119.086000">example, in my message hooks so I can't send email that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2119.126000" data-stop="2123.492000">contains this. And</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2123.632000" data-stop="2127.919000">of course, org has its whole clocking and interrupting</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2127.959000" data-stop="2132.365000">tasks that I can use. I just have to have the presence of mind</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2132.405000" data-stop="2134.948000">to actually say, oh yeah, now I'm going to go on this tangent</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2135.008000" data-stop="2138.352000">and I want to go back to this later on. Leaving myself</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2138.392000" data-stop="2140.883000">breadcrumbs is definitely something I need to formalize</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2141.044000" data-stop="2145.096000">into workflows that I actually use.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2145.097000" data-stop="2146.018000">[Prot]: Yeah, that's the thing.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2146.038000" data-stop="2148.802000">And you can also benefit. I don't know. Of course, that's</span> <span class="audio-time caption" data-speaker="Prot" data-start="2148.922000" data-stop="2152.387000">depending on if you are a visual person or not. But you could</span> <span class="audio-time caption" data-speaker="Prot" data-start="2152.667000" data-stop="2158.015000">also rely on color or, for example, include an emoji as well</span> <span class="audio-time caption" data-speaker="Prot" data-start="2158.235000" data-stop="2162.401000">or modify font-lock-keywords to have like something that</span> <span class="audio-time caption" data-speaker="Prot" data-start="2162.461000" data-stop="2167.387000">stands out. Basically, make it clear that, well, this is an</span> <span class="audio-time caption" data-speaker="Prot" data-start="2167.588000" data-stop="2171.913000">interjection. I will just go and then I will be back. Yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2171.933000" data-stop="2175.439000">[Sacha]: Good idea. Okay. So that will definitely help with the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2175.519000" data-stop="2180.586000">things where maybe I want to demonstrate something and I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2180.646000" data-stop="2184.030000">want to do the thinking out loud so that it's recorded. And</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2184.210000" data-stop="2186.754000">just in case other people have any questions, they can come</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2186.814000" data-stop="2192.722000">by and ask them. And then I can sort of massage it into a proper</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2192.782000" data-stop="2198.269000">blog post, but still leave the link to the video in case</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2198.309000" data-stop="2201.173000">people want to hear the stream of consciousness figuring</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2201.233000" data-stop="2205.795000">out of all of this stuff. That sounds like maybe a more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2205.876000" data-stop="2210.764000">polished video or blog post with screenshots and clips</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2211.585000" data-stop="2216.193000">coming out of this livestream ramble, kind of tangled.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2216.574000" data-stop="2222.584000">Okay, we're going to jump over here. Gotta leave myself a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2222.644000" data-stop="2224.748000">breadcrumb because I'm going to go in this detour to answer</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2224.788000" data-stop="2226.281000">someone's question.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2226.282000" data-stop="2229.846000">[Prot]: There is value to both. There is value</span> <span class="audio-time caption" data-speaker="Prot" data-start="2229.886000" data-stop="2232.750000">to both because the live stream is a stream of</span> <span class="audio-time caption" data-speaker="Prot" data-start="2232.810000" data-stop="2235.654000">consciousness. You can think of it like a bubbling effect.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2235.714000" data-stop="2239.438000">There is fermentation going on, a lot of things happening.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2239.458000" data-stop="2242.162000">And then when you publish the polished, the finished</span> <span class="audio-time caption" data-speaker="Prot" data-start="2242.282000" data-stop="2244.945000">article, that's the distillation effect. So fermentation</span> <span class="audio-time caption" data-speaker="Prot" data-start="2245.005000" data-stop="2248.589000">distillation. So both are useful. Both is good to see and</span> <span class="audio-time caption" data-speaker="Prot" data-start="2249.030000" data-stop="2252.803000">have a sense of what they are up to, what they are doing. Yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2252.823000" data-stop="2256.787000">[Sacha]: And Charlie in the comments says he likes Emacs' excursions</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2256.867000" data-stop="2259.970000">terminology. So if you can think of it as a save excursion,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2260.050000" data-stop="2263.573000">I'm going to go do something and then come back. I am not very</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2263.593000" data-stop="2269.279000">good at popping the stack, but I will work on it. Yes. A couple</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2269.319000" data-stop="2271.641000">of other things that I want you to pick your brain about. So</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2271.861000" data-stop="2274.944000">you mentioned that in terms of announcing live streams,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2275.184000" data-stop="2278.868000">you're like, look, I'm remembering to mark a topic change.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2279.000000">00:37:59</span> <strong>Announcing livestreams</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2279.978000" data-stop="2283.442000">[Sacha]: So you mentioned, okay, you have a post for the scheduled or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2283.482000" data-stop="2287.226000">spontaneous live streams. Then you actually, you don't</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2287.286000" data-stop="2288.908000">even update it with the description. You write the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2288.928000" data-stop="2292.112000">description beforehand and you leave it alone. Probably</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2292.352000" data-stop="2295.776000">when people get it in their RSS reader, I guess the YouTube</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2295.856000" data-stop="2298.960000">embed always just points to, you know, it's either the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2299.020000" data-stop="2302.043000">currently playing live stream or the archived recording of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2302.163000" data-stop="2308.911000">it. And that's that. The link is the same. The link is the</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2308.951000" data-stop="2312.806000">[Prot]: same. Yes. Yeah, on this live page. So now I have</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2312.866000" data-stop="2316.871000">[Sacha]: yayemacs.com and SachaChua.com/live pointing to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2316.931000" data-stop="2321.296000">this page. And there's like, there's a YouTube way to embed</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2321.336000" data-stop="2325.100000">just like upcoming live stream, but then it's like fiddly</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2325.140000" data-stop="2328.705000">when it comes to, oh, you know, you've got, if you have more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2328.745000" data-stop="2332.309000">than one public up scheduled live stream or whatever, do you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2332.489000" data-stop="2334.731000">use any of this stuff at all where you're like saying a page</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2335.052000" data-stop="2338.382000">that's always has your upcoming or current stuff?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2338.000000">00:38:58</span> <strong>Embeds: Prot embeds specific YouTube videos instead of the general channel one</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="2338.383000" data-stop="2342.808000">[Prot]: No, I have a generic embed which I copied many, many years ago</span> <span class="audio-time caption" data-speaker="Prot" data-start="2342.809000" data-stop="2345.712000">and I have it in my static site generator.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2345.713000" data-stop="2350.699000">Then the only field that changes is the ID of the video.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2350.700000" data-stop="2355.585000">And this works for live streams as well as pre-recorded videos.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2355.586000" data-stop="2359.210000">[Sacha]: Okay, so you always give it like the video IDs basically.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2359.211000" data-stop="2363.356000">[Prot]: The video ID, yes. I can share with you the exact snippet.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2363.357000" data-stop="2367.502000">[Sacha]: Yeah, yeah. That would be, you know, and you can send...</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2367.503000" data-stop="2369.588000">[Prot]: Yeah. Well, it's public anyway.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2369.589000" data-stop="2372.913000">[Sacha]: I can steal it off your website. It's fine.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2372.000000">00:39:32</span> <strong>Demo of my new shortcut for converting time zones</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2372.914000" data-stop="2378.583000">[Sacha]: And then I have just added timestamp translation as well.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2378.584000" data-stop="2379.265000">So I can say,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2379.305000" data-stop="2383.573000">okay, you know, let me show it to you. So this is my webpage,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2383.593000" data-stop="2387.299000">right? So here, this is your standard org timestamp. Yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2388.441000" data-stop="2392.448000">And if I open up https://sachachua.com/live, it's also the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2392.468000" data-stop="2398.002000">same as Emacs. Okay, okay, okay. And I find the browser</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2398.763000" data-stop="2405.731000">window. Okay. Theoretically, if I say, okay, down here, you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2405.791000" data-stop="2410.936000">click on this, it translates it to your language. Ah, nice,</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2410.956000" data-stop="2411.196000">[Prot]: Nice, nice.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2411.197000" data-stop="2414.280000">[Sacha]: Because YouTube will do that for the upcoming</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2414.400000" data-stop="2417.604000">one if people link to it. But, you know, it's just people. But</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2417.624000" data-stop="2420.307000">this is JavaScript, anyhow. And the other thing that I have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2420.407000" data-stop="2427.036000">just added today is I can go onto that in Org. If I press my</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2427.116000" data-stop="2433.524000">control dot embark thing, I can use my Sacha Org timestamp in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2433.584000" data-stop="2436.989000">time zones, which is shift W. And it translates it into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2437.029000" data-stop="2437.930000">a gazillion time zones.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2441.315000" data-stop="2444.677000">So then I can mastodon toot it, which I did,</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2444.678000" data-stop="2450.304000">[Prot]: Just to say that copy to the kill ring, okay, yes, okay, good, good, good.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2450.484000" data-stop="2456.150000">[Sacha]: Because time zones suck. I mean, it's great, but I cannot</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2456.210000" data-stop="2461.035000">do the translation and so I am slightly... I'm working on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2461.335000" data-stop="2466.100000">announcing those upcoming scheduled streams while</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2466.461000" data-stop="2469.963000">doing all the math so that... well, having emacs do all the math so</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2469.964000" data-stop="2472.606000">that I don't have to do the math.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2472.607000" data-stop="2473.531000">[Prot]: Yes, that's the spirit.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2473.692000" data-stop="2477.043000">That's good. Very good. This is very nice.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2477.044000" data-stop="2479.814000">Is this timestamp always meant for Mastodon</span> <span class="audio-time caption" data-speaker="Prot" data-start="2479.815000" data-stop="2481.632000">or do you have it elsewhere?</span> <span class="audio-time caption" data-speaker="Prot" data-start="2481.633000" data-stop="2483.692000">I think I've seen it in the Emacs news as well.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2483.693000" data-stop="2487.237000">[Sacha]: Oh yeah, I'm basically stealing the code.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2487.238000" data-stop="2491.524000">I've used it in Emacs Conf and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2491.585000" data-stop="2495.490000">for Emacs News. I used to announce the Emacs News events</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2495.590000" data-stop="2500.117000">also. I should get back to doing that. But definitely in the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2500.217000" data-stop="2504.243000">Emacs News and Emacs Calendar, I translate all of the events</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2504.443000" data-stop="2508.488000">into multiple time zones for the virtual ones.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2508.000000">00:41:48</span> <strong>Ozzloy's questions about time zones and QR codes</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2508.489000" data-stop="2512.014000">[Sacha]: Line 23 doesn't have a time offset.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2514.255000" data-stop="2525.465000">Okay, someone is commenting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2525.466000" data-stop="2527.868000">Ozzloy will tell me about it a little bit later.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2527.968000" data-stop="2530.511000">Ozzloy also has a question. Am I creating the QR code with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2530.631000" data-stop="2535.035000">Emacs Lisp? Is it actually text in Emacs? I'm going to go on a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2535.175000" data-stop="2539.620000">quick detour to show the QR code. Yes, do it, do it, do it. By</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2539.660000" data-stop="2543.323000">[Prot]: the way, I will like the stream. I didn't have the chance to do</span> <span class="audio-time caption" data-speaker="Prot" data-start="2543.363000" data-stop="2553.253000">that. A show string. Yes. So here, this is my... Look, I'm</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2553.333000" data-stop="2556.679000">[Sacha]: using line numbers, but they're really long. Yeah, these</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2556.739000" data-stop="2561.287000">[Prot]: are massive. Of course. What can we do? But it's still better</span> <span class="audio-time caption" data-speaker="Prot" data-start="2561.347000" data-stop="2565.474000">because I can say, okay, go to 97, right? And you kind of know</span> <span class="audio-time caption" data-speaker="Prot" data-start="2565.534000" data-stop="2569.234000">where I mean. Yeah. Yeah, so this is qrencode, qrencode</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2569.254000" data-stop="2573.039000">[Sacha]: format, and all of that stuff. It is in Emacs. I think this one</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2573.059000" data-stop="2575.782000">actually inserts text. There's probably a way to get it to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2575.802000" data-stop="2582.670000">get images as well. But yeah, so QR codes, because why not?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2582.690000" data-stop="2585.033000">[Prot]: Yeah, no, that's very efficient. Yeah, yeah, good, good.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2586.635000" data-stop="2594.683000">[Sacha]: Okay. Yes. So these timestamps are basically in my local</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2594.723000" data-stop="2598.467000">time, and then I can translate them to other time zones, and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2598.527000" data-stop="2601.911000">then I can start announcing them, which will probably happen</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2601.971000" data-stop="2606.255000">more if I can get my GotoSocial Mastodon thing to be more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2606.316000" data-stop="2609.799000">reliable. But also following your example, I should try</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2609.859000" data-stop="2612.242000">putting it in my blog. I just feel like a little weird</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2612.282000" data-stop="2616.826000">suddenly going from posting on my blog like once or twice,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2616.846000" data-stop="2619.763000">well, two or three times a week to Hey, OK, every day. All</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2619.783000" data-stop="2622.065000">right. In ten minutes, you're going to have a live stream of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2622.085000" data-stop="2623.227000">me talking about random stuff.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2626.000000">00:43:46</span> <strong>Prot on announcing livestreams on blogs</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="2626.070000" data-stop="2630.456000">[Prot]: Well, in a sense, it is weird because it's not something you</span> <span class="audio-time caption" data-speaker="Prot" data-start="2630.476000" data-stop="2633.640000">would normally do on a blog, right? Like you have been</span> <span class="audio-time caption" data-speaker="Prot" data-start="2633.680000" data-stop="2636.724000">blogging for a long time and you know how blogging is, right?</span> <span class="audio-time caption" data-speaker="Prot" data-start="2636.824000" data-stop="2642.030000">You just do it on your own. But this streaming culture is a</span> <span class="audio-time caption" data-speaker="Prot" data-start="2642.131000" data-stop="2645.818000">different experience. I think, however, it shares a lot</span> <span class="audio-time caption" data-speaker="Prot" data-start="2645.898000" data-stop="2649.387000">with the blogging way of doing things, which is like, well,</span> <span class="audio-time caption" data-speaker="Prot" data-start="2649.407000" data-stop="2652.815000">this is what I have to say. This is what I think. And I just do it</span> <span class="audio-time caption" data-speaker="Prot" data-start="2652.875000" data-stop="2656.484000">in a slightly different format. And of course, because you</span> <span class="audio-time caption" data-speaker="Prot" data-start="2656.524000" data-stop="2660.253000">are doing the stream, ultimately you control how you</span> <span class="audio-time caption" data-speaker="Prot" data-start="2660.293000" data-stop="2664.479000">participate, to the degree that you participate, what you</span> <span class="audio-time caption" data-speaker="Prot" data-start="2664.519000" data-stop="2667.324000">want to comment on. So ultimately, even though it's a live</span> <span class="audio-time caption" data-speaker="Prot" data-start="2667.344000" data-stop="2672.732000">stream, you can control it in a way that is not that much of a</span> <span class="audio-time caption" data-speaker="Prot" data-start="2672.972000" data-stop="2678.620000">live stream. In the sense that you can be very specific, very</span> <span class="audio-time caption" data-speaker="Prot" data-start="2678.641000" data-stop="2680.724000">structured and be like, you know what, this is my structure,</span> <span class="audio-time caption" data-speaker="Prot" data-start="2680.744000" data-stop="2684.089000">this is what I will do, and I will not run off on a tangent, for</span> <span class="audio-time caption" data-speaker="Prot" data-start="2684.149000" data-stop="2685.416000">example.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2685.417000" data-stop="2688.983000">[Sacha]: I don't know if it is possible for me to not run off on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2689.003000" data-stop="2695.613000">a tangent. I appreciate people who can be very focused. It's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2695.693000" data-stop="2700.680000">okay. I think my job, I think my goal is more of how do I at least</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2700.800000" data-stop="2704.286000">describe the tangents in text form so that I can find them</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2704.346000" data-stop="2707.691000">again and so that other people can decide whether this is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2707.791000" data-stop="2710.956000">worth two hours of their time or whether they can just skip to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2711.056000" data-stop="2713.840000">the five minutes that concerns the thing that they like.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2714.867000" data-stop="2719.024000">[Prot]: Yes, in that case the timestamping would be the way to go.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2719.044000" data-stop="2721.934000">Timestamp plus a brief description.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2721.935000" data-stop="2723.237000">[Sacha]: Yes, yes, and that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2723.337000" data-stop="2725.818000">actually gets me to... ta-da!</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2725.000000">00:45:25</span> <strong>Processing the recordings</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2725.819000" data-stop="2727.621000">[Sacha]: topic: processing the recordings</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2728.923000" data-stop="2732.867000">So, yes, as I mentioned, I've been enjoying going back and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2733.087000" data-stop="2736.811000">editing the transcripts because it becomes an excuse to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2736.871000" data-stop="2742.637000">tinker with Emacs and subed-mode, and then because I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2742.697000" data-stop="2747.202000">have this thing for adding a note above the start of a chapter,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2747.672000" data-stop="2751.157000">I can then easily use that to extract the chapter markers for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2751.959000" data-stop="2755.864000">YouTube and all of that stuff. As I mentioned, I'm working on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2755.945000" data-stop="2760.331000">some workflows for tracking chapters on the fly. You know,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2760.351000" data-stop="2762.735000">it's actually really nice having this little button. I used</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2762.755000" data-stop="2764.958000">to think, okay, I can just press a keyboard shortcut, but</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2765.018000" data-stop="2767.903000">apparently I forget all of my keyboard shortcuts when I'm</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2768.384000" data-stop="2772.430000">trying to talk at the same time. So if there's a button, I'm</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2772.450000" data-stop="2776.875000">like, I get incentivized to click on it to see whether my</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2776.915000" data-stop="2779.097000">code still works.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2779.098000" data-stop="2781.860000">[Prot]: Plus it functions as a reminder.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2781.861000" data-stop="2786.506000">[Sacha]: Yes. So it's very helpful that way.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2786.507000" data-stop="2788.590000">And then, as I mentioned, I still</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2788.610000" data-stop="2790.872000">need to work on a good workflow for extracting the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2790.892000" data-stop="2794.257000">screenshots and clips so that I can then turn it into blog</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2794.277000" data-stop="2798.141000">posts later on and so forth. Right now, I have a pretty manual</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2798.181000" data-stop="2801.285000">process for, okay, after the video is posted, I'm going to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2801.325000" data-stop="2804.429000">download it. I have some shell scripts now and the next step</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2804.489000" data-stop="2807.532000">of course after this one is going to write an Emacs function</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2807.973000" data-stop="2811.517000">that actually and I just finished this part. I have an Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2811.557000" data-stop="2813.519000">function that calls the shell scripts to download the thing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2813.619000" data-stop="2818.865000">using yt-dlp and then start the transcription process but I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2818.925000" data-stop="2822.188000">still manually do the upload to internet archive which I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2822.248000" data-stop="2826.173000">know has a CLI tool so that's next in my list, and fix</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2826.193000" data-stop="2831.745000">subtitles and all that stuff, so that's kind of... if</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2831.865000" data-stop="2834.430000">I want to get more out of the recordings, that's a general</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2834.470000" data-stop="2835.711000">direction I'm going.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2835.000000">00:47:15</span> <strong>Commitment devices</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2835.712000" data-stop="2836.694000">[Sacha]: This is not something that you're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2836.734000" data-stop="2840.420000">currently fiddling with.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2840.421000" data-stop="2844.408000">[Prot]: Basically, I'm the wrong person for this.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2844.409000" data-stop="2847.214000">[Sacha]: Yeah, it's okay. And part of these conversations</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2847.294000" data-stop="2851.603000">is not so much that I'm looking to you for specific advice on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2851.663000" data-stop="2854.790000">things that you explicitly don't do because it would be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2854.850000" data-stop="2858.278000">against the alla prima. Just get it done and lower the barrier</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2858.979000" data-stop="2863.510000">going in. But it's also useful as a commitment device for me</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2863.530000" data-stop="2866.457000">to say, alright, I would like to get better at this. I am</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2866.517000" data-stop="2869.103000">telling Prot in order to be able to demonstrate the stuff and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2869.384000" data-stop="2872.709000">make myself... If I'm going to see him in another two weeks...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2872.710000" data-stop="2874.835000">Am I going to see you in another two weeks?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2874.836000" data-stop="2881.601000">[Prot]: Yes, yes, yes. And I will ask. I keep receipts. Yes, yes, yes.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2881.602000" data-stop="2885.485000">[Sacha]: Exactly, right? So this is also valuable for that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2885.486000" data-stop="2890.249000">Not just hoping that in your config, which I have now read,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2890.250000" data-stop="2891.071000">that you would have a snippet</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2891.151000" data-stop="2894.174000">exactly for this purpose, but more like, okay, I'm telling</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2894.234000" data-stop="2897.903000">somebody I'm going to do it, which means I got to go do it.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2897.904000" data-stop="2901.682000">[Prot]: Yes, yes. And of course, just verbalizing it means that you can</span> <span class="audio-time caption" data-speaker="Prot" data-start="2901.762000" data-stop="2905.750000">also understand it a little bit better. And you start</span> <span class="audio-time caption" data-speaker="Prot" data-start="2905.810000" data-stop="2909.655000">thinking about it. And then it's a matter of writing the code.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2909.000000">00:48:29</span> <strong>Automating more of the process</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="2909.656000" data-stop="2913.103000">[Prot]: I'm curious, though, why do you have the shell scripts</span> <span class="audio-time caption" data-speaker="Prot" data-start="2913.183000" data-stop="2917.531000">and not bring all of that into Emacs? What's the advantage of</span> <span class="audio-time caption" data-speaker="Prot" data-start="2917.932000" data-stop="2920.617000">having Emacs called the shell scripts? Or was it just more</span> <span class="audio-time caption" data-speaker="Prot" data-start="2920.657000" data-stop="2921.734000">convenient?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2921.735000" data-stop="2925.008000">[Sacha]: It's just out of convenience. Emacs does call</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2925.048000" data-stop="2928.099000">the shell scripts. The shell scripts are there just in case I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2928.159000" data-stop="2933.446000">happen to be SSH-ing in from my phone. Because I'm</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2933.466000" data-stop="2937.291000">downstairs or whatever and then I can just run it from the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2937.331000" data-stop="2942.357000">shell also because I use it not just for my... So I have some</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2942.397000" data-stop="2947.423000">shell scripts for downloading the video as an MP3 or as an MP4</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2947.663000" data-stop="2951.868000">or as the subtitles. And so these are generally useful</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2951.908000" data-stop="2955.272000">things that I might not necessarily remember to be in Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2955.372000" data-stop="2960.157000">for. So that's definitely, you know... I needed to find this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2960.438000" data-stop="2963.800000">whole process that eventually ends up in a blog post</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2963.801000" data-stop="2965.433000">that has all my lovely stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2965.434000" data-stop="2972.167000">where this chat that I have with you is kind of my high-water mark</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2972.168000" data-stop="2975.167000">of this is really fun. I would like to do more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2975.168000" data-stop="2979.067000">things like this, where it ends up with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2979.068000" data-stop="2983.033000">transcripts, resources, kind of like the show notes</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2983.034000" data-stop="2988.067000">chapter marker indexes. These are automatically</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2988.068000" data-stop="2990.725000">extracted from the transcript.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2991.144000" data-stop="2995.100000">Rough notes that we were working on there. The session</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2995.101000" data-stop="2996.453000">... The transcript</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2996.493000" data-stop="3006.991000">has speaker diarization. In a video, I got your subtitles to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3007.031000" data-stop="3010.958000">show up in italics and my subtitles to show up in plain text.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3011.327000" data-stop="3014.972000">So now that I have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3018.417000" data-stop="3022.163000">this infrastructure, I feel compelled to make sure I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3022.223000" data-stop="3026.908000">schedule conversations with people so that I use it.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3026.909000" data-stop="3031.276000">[Prot]: Yes, of course.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3031.779000" data-stop="3036.363000">And that's actually a good reason generally for writing</span> <span class="audio-time caption" data-speaker="Prot" data-start="3036.423000" data-stop="3040.067000">code, ultimately, because it's the vehicle for doing what</span> <span class="audio-time caption" data-speaker="Prot" data-start="3040.127000" data-stop="3043.490000">the code is supposed to facilitate. So the code is just a</span> <span class="audio-time caption" data-speaker="Prot" data-start="3043.570000" data-stop="3046.251000">pretext for actually doing the thing.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3046.252000" data-stop="3047.993000">[Sacha]: Or the other way around, yeah.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3047.994000" data-stop="3050.695000">[Prot]: Or it can be the other way around.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3050.696000" data-stop="3052.136000">So the code is the goal, yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3052.137000" data-stop="3056.842000">[Sacha]: Yeah, yeah, I know. EmacsConf is basically</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3056.962000" data-stop="3059.204000">the way that I test emacsconf.el.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3064.466000" data-stop="3067.413000">Hi. It's fine. It's fine. Yeah, so that's my thing for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3067.473000" data-stop="3071.160000">processing recordings. Changing topic.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3071.161000" data-stop="3074.214000">The button. The button. The button. We must press the button.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3074.000000">00:51:14</span> <strong>Copying non-packaged code</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3074.215000" data-stop="3080.464000">[Sacha]: Non-packaged code. So now that I've modularized my Emacs configuration,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3080.524000" data-stop="3083.311000">I've split all the defuns into different files. I have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3083.371000" data-stop="3086.896000">renamed everything from my- to sacha- so that I don't step on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3086.936000" data-stop="3089.981000">other people's function definitions. Now I'm starting to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3090.042000" data-stop="3092.926000">copy things from other people's code to see whether this is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3093.006000" data-stop="3098.195000">actually a viable approach. So this is the way I'm currently</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3098.255000" data-stop="3102.502000">stealing something from your prot-comment. Is this sort of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3103.063000" data-stop="3107.236000">like... It seems to work when I go into something. If I go into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3107.296000" data-stop="3110.842000">something, I can press C-x M-; and it does</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3110.883000" data-stop="3113.808000">the thing that you define. So this is sort of what you had in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3113.828000" data-stop="3115.470000">mind, right?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3115.471000" data-stop="3117.254000">[Prot]: This is basically what I was thinking earlier</span> <span class="audio-time caption" data-speaker="Prot" data-start="3117.274000" data-stop="3120.285000">with the comment. Yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3120.286000" data-stop="3123.792000">[Sacha]: And then theoretically, this sort</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3123.832000" data-stop="3125.935000">of structure will also work for other people who have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3125.996000" data-stop="3130.483000">checked out my very large config and they can autoload</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3130.523000" data-stop="3134.109000">specific commands out of it and then they can bind key</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3134.149000" data-stop="3138.115000">bindings without necessarily importing all of my other set</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3138.155000" data-stop="3141.480000">queues and add hooks because that's in a separate file now.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3141.501000" data-stop="3145.597000">The only thing in my list is defuns.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3145.000000">00:52:25</span> <strong>Prot on defcustom</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="3145.598000" data-stop="3147.461000">[Prot]: And if you also, just to</span> <span class="audio-time caption" data-speaker="Prot" data-start="3147.621000" data-stop="3152.508000">add, if you also have configurations for your packages,</span> <span class="audio-time caption" data-speaker="Prot" data-start="3152.568000" data-stop="3155.953000">right? You can also have defcustoms for there, maybe with a</span> <span class="audio-time caption" data-speaker="Prot" data-start="3155.993000" data-stop="3159.278000">default value that works for you or with a default value that</span> <span class="audio-time caption" data-speaker="Prot" data-start="3159.338000" data-stop="3162.022000">is generally useful. And then you can also separate that</span> <span class="audio-time caption" data-speaker="Prot" data-start="3162.122000" data-stop="3166.769000">out. So users don't have to pull anything from your</span> <span class="audio-time caption" data-speaker="Prot" data-start="3166.849000" data-stop="3170.493000">configuration, but just pull the package.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3170.494000" data-stop="3172.918000">[Sacha]: So right now I have...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3172.919000" data-stop="3179.735000">Right now I have my configurations as defvars because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3179.795000" data-stop="3184.846000">I'm lazy. Do you happen to have a function or whatever that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3184.887000" data-stop="3189.359000">you like to use to just convert a defvar into a defcustom?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3189.360000" data-stop="3192.688000">[Prot]: I haven't done it because it's actually tricky with the type.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3193.089000" data-stop="3194.209000">[Sacha]: Yes.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3194.210000" data-stop="3196.933000">[Prot]: You know, the defcustom has the type keyword. And of</span> <span class="audio-time caption" data-speaker="Prot" data-start="3196.973000" data-stop="3199.435000">course, for the most trivial cases, this is easy. Like, OK,</span> <span class="audio-time caption" data-speaker="Prot" data-start="3199.455000" data-stop="3203.299000">it's boolean or it's a string or whatever. But usually it's</span> <span class="audio-time caption" data-speaker="Prot" data-start="3203.339000" data-stop="3205.321000">not that simple. Like if you have an alist, you have to</span> <span class="audio-time caption" data-speaker="Prot" data-start="3205.381000" data-stop="3210.746000">describe what are the key and value pairs or whatever and the</span> <span class="audio-time caption" data-speaker="Prot" data-start="3210.806000" data-stop="3213.929000">elements of the alist. So I haven't done that because it's</span> <span class="audio-time caption" data-speaker="Prot" data-start="3214.069000" data-stop="3219.839000">always on a case by case basis. And many of the defcustom I</span> <span class="audio-time caption" data-speaker="Prot" data-start="3219.939000" data-stop="3224.645000">have will have like a bespoke type because the data</span> <span class="audio-time caption" data-speaker="Prot" data-start="3224.685000" data-stop="3227.729000">structure is really specific. You know, the value they</span> <span class="audio-time caption" data-speaker="Prot" data-start="3227.809000" data-stop="3231.333000">expect. For example, if you are doing something with the</span> <span class="audio-time caption" data-speaker="Prot" data-start="3232.054000" data-stop="3236.379000">action alists of display buffer, like they have a really</span> <span class="audio-time caption" data-speaker="Prot" data-start="3236.419000" data-stop="3239.338000">specific type how you write it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3239.339000" data-stop="3241.705000">[Sacha]: Yeah, yeah, I hear you. So I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3241.745000" data-stop="3245.453000">think because I have a lot of strings, I probably can get away</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3245.493000" data-stop="3249.242000">with something that just reads the form, smooshes it into a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3249.322000" data-stop="3253.752000">string, adds a string, or possibly what this will end up</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3253.772000" data-stop="3258.022000">looking like is maybe a completing read on the type of the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3258.082000" data-stop="3262.317000">function. Sorry, the type of the thing. And then I can just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3262.337000" data-stop="3264.678000">select from several types.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3264.679000" data-stop="3268.284000">[Prot]: Well, you can make it like you can</span> <span class="audio-time caption" data-speaker="Prot" data-start="3268.584000" data-stop="3272.749000">make it a guess. Like, of course, if this thing is quoted and</span> <span class="audio-time caption" data-speaker="Prot" data-start="3272.809000" data-stop="3277.855000">it's a symbol, it's not a list. Maybe I can have like a choice</span> <span class="audio-time caption" data-speaker="Prot" data-start="3278.456000" data-stop="3282.261000">or a repeat symbol or something like you. You can, but it</span> <span class="audio-time caption" data-speaker="Prot" data-start="3282.361000" data-stop="3285.505000">won't be accurate. Like that would be like for you to fill it</span> <span class="audio-time caption" data-speaker="Prot" data-start="3285.565000" data-stop="3286.885000">in later.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3286.886000" data-stop="3288.608000">[Sacha]: Yeah. No, I was thinking just more along the lines</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3288.769000" data-stop="3294.575000">of Like a completion so that you can select from maybe some of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3294.635000" data-stop="3297.959000">your common types. The actual guessing of what type it is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3298.680000" data-stop="3302.905000">would be an exercise left for future me. But even just not</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3302.965000" data-stop="3308.972000">having to remember exactly what the syntax is for repeat</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3309.252000" data-stop="3310.919000">would be nice.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3310.920000" data-stop="3312.354000">[Prot]: Actually, that's good.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3312.000000">00:55:12</span> <strong>helpful and elisp-demos</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3312.355000" data-stop="3313.698000">[Sacha]: Yes. I mean, one of the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3313.778000" data-stop="3317.524000">things that I always find helpful is, like, I think I've got</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3317.624000" data-stop="3322.852000">some examples now. I'm using helpful, right? And I'm also</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3323.052000" data-stop="3328.701000">using this elisp-demos. So it just tells me, like, I can add</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3328.781000" data-stop="3331.485000">more notes here and I can say, okay, this is what a defcustom,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3331.505000" data-stop="3334.867000">that's a repeat of a string or what a const looks like, so that...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3334.868000" data-stop="3338.267000">'Cause the manual doesn't have a lot of examples sometimes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3338.268000" data-stop="3341.000000">Sometimes it's annoying to dig through it looking for examples.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3341.001000" data-stop="3343.767000">Usually it has no examples. I think that that's...</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3343.768000" data-stop="3346.359000">[Prot]: if there was one area of improvement, it's that.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3346.360000" data-stop="3349.588000">Keep it as is, because it's high quality, but complement it with</span> <span class="audio-time caption" data-speaker="Prot" data-start="3349.649000" data-stop="3350.679000">examples.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3350.680000" data-stop="3353.062000">[Sacha]: I mean, technically, all of Emacs is an example,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3353.102000" data-stop="3356.244000">and you can just find something, but...</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3356.245000" data-stop="3357.706000">[Prot]: Yeah, that's why you have the manual,</span> <span class="audio-time caption" data-speaker="Prot" data-start="3357.707000" data-stop="3359.829000">because if I have to dig through thousands</span> <span class="audio-time caption" data-speaker="Prot" data-start="3359.889000" data-stop="3364.714000">of lines of Emacs Lisp, that will take a toll on my patience.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3365.254000" data-stop="3369.357000">[Sacha]: Yeah, so for anyone who's watching,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3369.358000" data-stop="3373.200000">helpful and elisp-demos is how to add these</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3373.201000" data-stop="3375.244000">helpful little notes to your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3375.384000" data-stop="3378.867000">describe-function, because who remembers these things?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3380.332000" data-stop="3383.458000">[Prot]: Yeah, yeah, yeah. That's very good. That's very good. Yes.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3383.000000">00:56:23</span> <strong>Prot on code libraries</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="3383.839000" data-stop="3388.047000">[Prot]: Just to say on the point, if you have packages, this is</span> <span class="audio-time caption" data-speaker="Prot" data-start="3388.107000" data-stop="3391.233000">something I actually do. I just go and reference one of my</span> <span class="audio-time caption" data-speaker="Prot" data-start="3391.293000" data-stop="3394.720000">packages, which I know I have done the research for. So I'm</span> <span class="audio-time caption" data-speaker="Prot" data-start="3394.740000" data-stop="3398.146000">like, okay, how do you do the display buffer action alist</span> <span class="audio-time caption" data-speaker="Prot" data-start="3398.266000" data-stop="3399.227000">type? I will just go to, for example, denote and copy it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3399.228000" data-stop="3409.008000">[Sacha]: I will eventually build up a list of examples</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3409.009000" data-stop="3410.531000">that I can refer to.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3410.000000">00:56:50</span> <strong>Prot rewrites functions to fit his style and naming conventions</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3410.532000" data-stop="3412.977000">[Sacha]: The other question I had though was do you ever find</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3413.018000" data-stop="3417.226000">yourself copying code from people who do not have their You</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3417.246000" data-stop="3419.830000">know, they're functions in nice little things that you can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3419.870000" data-stop="3424.458000">just import and autoload. And what do you do about it? Like if</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3424.478000" data-stop="3428.924000">they're, you know, let's say they named it, then maybe they</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3428.965000" data-stop="3431.869000">named it without the prefix. So it might be possible to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3431.909000" data-stop="3437.638000">confuse it with the standard stuff or they, you know, it's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3437.718000" data-stop="3440.122000">mixed in with the rest of their config so you can just load the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3440.142000" data-stop="3444.208000">file. What do you like doing when you are copying that kind of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3444.288000" data-stop="3446.107000">code?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3446.108000" data-stop="3449.288000">[Prot]: I will basically check if I can make edits to it.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3449.289000" data-stop="3453.319000">The first thing I would make is probably change the style to be</span> <span class="audio-time caption" data-speaker="Prot" data-start="3453.379000" data-stop="3458.086000">like my style. So I would anyway change it so there is no</span> <span class="audio-time caption" data-speaker="Prot" data-start="3458.907000" data-stop="3462.452000">scenario where I would just copy it verbatim and paste it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3463.273000" data-stop="3466.378000">[Sacha]: Okay, so you like to rewrite things and then you fit it into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3467.059000" data-stop="3470.475000">your naming convention because it is now yours.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3470.476000" data-stop="3474.361000">[Prot]: But also like the style. For example, this function you have over</span> <span class="audio-time caption" data-speaker="Prot" data-start="3474.421000" data-stop="3477.344000">there, like Sacha here, like the one we are seeing now on</span> <span class="audio-time caption" data-speaker="Prot" data-start="3477.364000" data-stop="3482.029000">screen. For example, I would change the name of pargs. Not</span> <span class="audio-time caption" data-speaker="Prot" data-start="3482.069000" data-stop="3484.512000">because it's wrong, but because stylistically it's not</span> <span class="audio-time caption" data-speaker="Prot" data-start="3484.592000" data-stop="3488.210000">what I would write. Then I would change the indentation.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3488.211000" data-stop="3489.597000">Org Capture String, I would put the concat, the line below.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3489.598000" data-stop="3494.904000">I would basically do small tweaks, not because it's wrong</span> <span class="audio-time caption" data-speaker="Prot" data-start="3494.964000" data-stop="3498.528000">what you have, but because stylistically I have a different</span> <span class="audio-time caption" data-speaker="Prot" data-start="3498.588000" data-stop="3500.209000">way of expressing it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3500.210000" data-stop="3502.273000">[Sacha]: Yeah, yeah, yeah. Absolutely. I've</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3502.313000" data-stop="3507.541000">started to add where I got it from in the docstring instead</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3507.581000" data-stop="3510.666000">of... I used to put it in the comment. But as you mentioned,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3510.706000" data-stop="3513.509000">the doc strings are a little bit more visible.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3513.510000" data-stop="3519.519000">So then I usually don't end up looking for updates. But at least</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3519.599000" data-stop="3523.285000">theoretically, if I do want to, I could find out who was... Or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3523.345000" data-stop="3526.129000">if I want to credit somebody or see what else they've come up</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3526.149000" data-stop="3529.622000">with lately, then at least it's there.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3529.623000" data-stop="3530.864000">[Prot]: Yes, it's good enough.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3530.865000" data-stop="3533.109000">Plus, when we are talking about these smaller</span> <span class="audio-time caption" data-speaker="Prot" data-start="3533.189000" data-stop="3538.597000">functions, having the link there, I think, is enough. Like,</span> <span class="audio-time caption" data-speaker="Prot" data-start="3538.617000" data-stop="3541.962000">you wouldn't need to go search for updates or whatever.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3542.003000" data-stop="3544.506000">Like, if they have made some changes, chances are it's</span> <span class="audio-time caption" data-speaker="Prot" data-start="3544.546000" data-stop="3546.548000">there.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3546.549000" data-stop="3551.517000">[Sacha]: Yeah. Okay, so rewrite things, make it fit your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3551.537000" data-stop="3555.543000">style, and add stuff to the docstring because you like to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3555.604000" data-stop="3558.647000">have thorough docstrings.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3558.000000">00:59:18</span> <strong>Prot's preference for small functions</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="3558.648000" data-stop="3560.130000">[Prot]: Yeah, yeah, yeah. There are many</span> <span class="audio-time caption" data-speaker="Prot" data-start="3560.330000" data-stop="3563.494000">functions I have where the docstring is longer than the</span> <span class="audio-time caption" data-speaker="Prot" data-start="3563.534000" data-stop="3568.740000">code. I would say, yeah, many of them are like that. But also,</span> <span class="audio-time caption" data-speaker="Prot" data-start="3568.800000" data-stop="3573.124000">just to say, it's because of how I will write the code, where</span> <span class="audio-time caption" data-speaker="Prot" data-start="3573.165000" data-stop="3576.628000">there are many small functions building up to a big one. And</span> <span class="audio-time caption" data-speaker="Prot" data-start="3576.749000" data-stop="3579.692000">so then the docstring explains basically what all these</span> <span class="audio-time caption" data-speaker="Prot" data-start="3579.732000" data-stop="3582.171000">small functions contribute to.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3582.172000" data-stop="3583.255000">[Sacha]: I like small functions too</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3583.315000" data-stop="3587.504000">because I got used to coding on even smaller screens, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3587.564000" data-stop="3590.109000">And so anything that could just actually fit in the screen</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3590.149000" data-stop="3593.276000">was much better than things that I had to page through. And it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3593.316000" data-stop="3597.424000">gives you many more avenues to modify the behavior because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3597.464000" data-stop="3600.030000">you have more places that you could def-advice, sorry,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3600.771000" data-stop="3603.433000">advice-add :around or whatever.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3603.434000" data-stop="3604.256000">[Prot]: Actually, this is why I</span> <span class="audio-time caption" data-speaker="Prot" data-start="3604.296000" data-stop="3608.003000">started doing it as well, because it's easier. I had this</span> <span class="audio-time caption" data-speaker="Prot" data-start="3608.584000" data-stop="3613.012000">reason myself. I think it was an org function, which is like</span> <span class="audio-time caption" data-speaker="Prot" data-start="3613.032000" data-stop="3616.279000">200 lines, and I wanted to really change one thing and I had to</span> <span class="audio-time caption" data-speaker="Prot" data-start="3616.319000" data-stop="3619.124000">copy the whole function. And I'm like, well, if this was a</span> <span class="audio-time caption" data-speaker="Prot" data-start="3619.204000" data-stop="3622.310000">helper function, I would be done by just overriding the</span> <span class="audio-time caption" data-speaker="Prot" data-start="3622.350000" data-stop="3623.431000">helper and I would be good.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3623.000000">01:00:23</span> <strong>avy-goto-char-timer</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3623.432000" data-stop="3627.171000">[Sacha]: I am slowly getting the hang of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3627.291000" data-stop="3634.242000">using avy-goto-char-timer so that I can copy the symbols from</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3634.263000" data-stop="3640.894000">elsewhere. Because even if I'm using nameless to insert the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3640.934000" data-stop="3645.400000">prefixes and then I'm using dabbrev-expand or hippie-expand,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3645.620000" data-stop="3648.183000">for which the config I still need to fiddle with to make it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3648.464000" data-stop="3652.149000">absolutely perfect. It's still a lot of typing sometimes,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3652.229000" data-stop="3655.492000">since we like to use long function names.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3655.493000" data-stop="3658.916000">[Prot]: And which timer variant do you use? Because it has,</span> <span class="audio-time caption" data-speaker="Prot" data-start="3658.917000" data-stop="3660.899000">with two characters, it has the 0 one,</span> <span class="audio-time caption" data-speaker="Prot" data-start="3660.900000" data-stop="3663.283000">which is type as much as you can within a certain</span> <span class="audio-time caption" data-speaker="Prot" data-start="3663.323000" data-stop="3666.266000">time window.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3666.267000" data-stop="3672.909000">[Sacha]: That's a good question. Where is this?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3672.910000" data-stop="3678.186000">[Prot]: Char timer. I think this is based on... I think this is the zero.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3678.206000" data-stop="3681.142000">Yeah, I'm not sure. I remember it's called zero.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3681.143000" data-stop="3685.228000">[Sacha]: So like I can type li and then go to like lj</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3685.229000" data-stop="3686.991000">to jump to that one and now I have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3687.072000" data-stop="3696.044000">it so that I can M-j li and then I can press the yank yeah</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3696.264000" data-stop="3702.713000">like y like insert from there which is yes when I was when I was</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3702.733000" data-stop="3707.408000">stealing stuff from your config, I could... oh let me show you...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3707.409000" data-stop="3714.410000">where is this... So this is your config, right? Well, this is...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3715.111000" data-stop="3718.156000">Hang on a second. Org link preview.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3720.860000" data-stop="3724.665000">There you go. So now the highlights of your config. I can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3724.806000" data-stop="3731.435000">steal stuff from your config and say, okay, M-j, open</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3731.455000" data-stop="3733.158000">parenthesis, oops.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3736.007000" data-stop="3741.634000">M-j. Open parenthesis. I can copy the entire line of LK</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3742.595000" data-stop="3748.262000">from avy, which is very nice. Very nice. Yes, yes. So, pretty</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3748.282000" data-stop="3752.648000">fast side there into avy. I have to slow down and actually</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3752.768000" data-stop="3756.573000">focus on doing the keyboard shortcuts because it's a new</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3756.633000" data-stop="3760.176000">habit that I want to build, especially since.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3760.000000">01:02:40</span> <strong>One-shot keyboard modifiers</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3760.177000" data-stop="3762.801000">[Sacha]: Also related to one of your recent videos, I'm experimenting with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3762.821000" data-stop="3765.501000">one-shot keyboard modifiers.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3765.502000" data-stop="3766.382000">[Prot]: Oh, well done.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3766.383000" data-stop="3770.247000">[Sacha]: Yes. It's a little tricky. I have to get my brain to get used to it. I'm</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3770.267000" data-stop="3778.414000">using keyd to do this on Linux. And it's just getting the hang</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3778.434000" data-stop="3781.817000">of pressing control and then moving to the thing. It's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3782.238000" data-stop="3785.139000">messing with my brain a little.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3785.140000" data-stop="3787.382000">[Prot]: But consider that it's a good</span> <span class="audio-time caption" data-speaker="Prot" data-start="3787.422000" data-stop="3792.607000">opportunity to also use two-handed mode, basically. So,</span> <span class="audio-time caption" data-speaker="Prot" data-start="3792.687000" data-stop="3797.889000">for example, C-x, right? Not like C-x. You see</span> <span class="audio-time caption" data-speaker="Prot" data-start="3797.909000" data-stop="3800.412000">what I'm saying? So basically one hand for the modifier.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3800.532000" data-stop="3805.438000">Yeah, exactly. Because that's a good practice in general,</span> <span class="audio-time caption" data-speaker="Prot" data-start="3805.578000" data-stop="3809.181000">even if you use the standard modifiers. Yeah.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3809.000000">01:03:29</span> <strong>Toggling</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3809.182000" data-stop="3810.043000">[Sacha]: And one of the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3810.063000" data-stop="3814.308000">other things that I started doing after our previous</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3814.368000" data-stop="3817.511000">conversation and having looked at some of your toggling</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3817.571000" data-stop="3821.822000">sort of things, in your config, what's this idea of using the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3821.902000" data-stop="3826.308000">C-z and C-S-z shortcuts? Since who likes to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3826.348000" data-stop="3830.554000">suspend Emacs anyway, right? So now my C-S-z</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3830.714000" data-stop="3834.540000">toggles my now.org, which is the stuff that I'm going to be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3834.560000" data-stop="3836.984000">working on, including the stuff that I want to get the hang of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3837.144000" data-stop="3841.891000">using. So this is my, all right, I need to scope it down so that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3841.931000" data-stop="3845.095000">I don't get overwhelmed. These are the things that will, you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3845.135000" data-stop="3847.779000">know, these are the things that I'm trying to get the hang of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3848.020000" data-stop="3863.332000">using. C-z gets me to my stream notes because then I can add things while</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3863.392000" data-stop="3868.479000">I'm live, and then C-S-z is what I have as my now, which</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3868.619000" data-stop="3873.686000">also gets posted to my web page, sort of like what I'm focusing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3873.806000" data-stop="3878.495000">on. Which, actually, I can reorganize anyway. So I'm liking</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3878.515000" data-stop="3881.298000">this toggling because I can press, like for example, if I'm</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3881.458000" data-stop="3884.340000">in the middle of my scratch buffer, I can press C-S-z,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3884.421000" data-stop="3888.964000">pop it up, and then pop it back down. And I was watching Joshua</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3889.004000" data-stop="3892.668000">Blais's video about he gets to do this sort of like toggling</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3892.748000" data-stop="3896.491000">things in and out from anywhere in his system. So now I'm</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3896.571000" data-stop="3899.253000">jealous and I need to figure out how to get that working too.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3899.533000" data-stop="3902.996000">[Prot]: Yeah, yeah, yeah. That's the kind of thing that is really</span> <span class="audio-time caption" data-speaker="Prot" data-start="3903.056000" data-stop="3906.740000">helpful. Like pop it out and then when you don't need it, it</span> <span class="audio-time caption" data-speaker="Prot" data-start="3906.880000" data-stop="3908.320000">disappears.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3908.000000">01:05:08</span> <strong>System-wide toggle shortcuts using emacsclient</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3908.321000" data-stop="3910.023000">[Sacha]: Do you have any of that kind of system level of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3910.063000" data-stop="3913.447000">toggling even when you don't have Emacs as your main</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3913.967000" data-stop="3918.050000">application sort of thing?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3918.051000" data-stop="3920.113000">[Prot]: Via emacsclient. So you can have</span> <span class="audio-time caption" data-speaker="Prot" data-start="3920.173000" data-stop="3923.256000">a key binding to emacsclient, an emacsclient call, and it</span> <span class="audio-time caption" data-speaker="Prot" data-start="3923.296000" data-stop="3926.499000">will bring up an Emacs window from anywhere. I have that,</span> <span class="audio-time caption" data-speaker="Prot" data-start="3926.519000" data-stop="3931.824000">yes. I have it for a few things. TMR mostly, the timer</span> <span class="audio-time caption" data-speaker="Prot" data-start="3931.864000" data-stop="3936.962000">package. So if I am, for example, here, I can bring it up and</span> <span class="audio-time caption" data-speaker="Prot" data-start="3937.723000" data-stop="3940.807000">start the timer without actually switching to Emacs. Okay,</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3940.927000" data-stop="3946.934000">[Sacha]: so that sounds like something I need to look into. It's</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3946.994000" data-stop="3950.718000">[Prot]: in the prot-window file, prot-window.el. I have a macro</span> <span class="audio-time caption" data-speaker="Prot" data-start="3950.758000" data-stop="3956.969000">there, and it's a macro that defines a command. To run in a new</span> <span class="audio-time caption" data-speaker="Prot" data-start="3957.049000" data-stop="3962.855000">frame and once you do something, such as complete or cancel,</span> <span class="audio-time caption" data-speaker="Prot" data-start="3963.396000" data-stop="3967.781000">to close that frame basically. And it's using a condition</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3967.861000" data-stop="3971.545000">[Sacha]: case. It's using a condition case. I think it's the simplest</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3971.605000" data-stop="3973.686000">[Prot]: you can do.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3973.687000" data-stop="3976.711000">[Sacha]: And then that's a global keybinding on your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3976.831000" data-stop="3978.011000">window manager that runs that and then brings that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3978.012000" data-stop="3984.600000">so that you can pop it up and put it back.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3984.601000" data-stop="3989.167000">[Prot]: Yeah. It's just emacsclient -e and then the command.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3989.168000" data-stop="3992.290000">[Sacha]: Oh, that's interesting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3992.793000" data-stop="3998.158000">Rickard says using space as control has revolutionized</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3998.739000" data-stop="4002.343000">their Emacsing. I'm not sure I'm ready to take that step yet.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4003.043000" data-stop="4006.186000">Also, I can probably figure out how to use keyd to use it as a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4006.286000" data-stop="4010.070000">modifier. We'll see. It's a nice big key, you know? You're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4010.270000" data-stop="4013.512000">just tempted to do all sorts of things with it.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4013.513000" data-stop="4016.155000">[Prot]: Of course, at the keyboard level,</span> <span class="audio-time caption" data-speaker="Prot" data-start="4016.156000" data-stop="4018.198000">you can have different behavior for tap</span> <span class="audio-time caption" data-speaker="Prot" data-start="4018.258000" data-stop="4023.352000">and hold. So when you tap the space, it's an ordinary space.</span> <span class="audio-time caption" data-speaker="Prot" data-start="4023.372000" data-stop="4026.797000">When you hold it, it's control. Maybe that's what they are.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4026.817000" data-stop="4029.661000">[Sacha]: Yeah, I think that's what's happening there. Look into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4029.681000" data-stop="4033.204000">using keyd for tap and hold.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4033.205000" data-stop="4034.568000">[Prot]: Yeah, and this is the principle</span> <span class="audio-time caption" data-speaker="Prot" data-start="4034.608000" data-stop="4039.154000">behind the home row mods, the standard home row mods. It's</span> <span class="audio-time caption" data-speaker="Prot" data-start="4039.234000" data-stop="4043.260000">like when you tap, for example, H, it just does H. When you</span> <span class="audio-time caption" data-speaker="Prot" data-start="4043.320000" data-stop="4045.963000">hold it, it's some modifier key.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4045.000000">01:07:25</span> <strong>My next steps</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4045.964000" data-stop="4048.028000">[Sacha]: I have three minutes before</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4048.068000" data-stop="4054.999000">the kiddo runs out and goes, mom, it's lunchtime. So do you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4055.059000" data-stop="4059.287000">have any, like, okay, my next steps, I've got stuff that I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4059.307000" data-stop="4062.432000">need to work on in terms of improving the processing of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4062.512000" data-stop="4066.278000">things and automating things. I found this session very</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4066.338000" data-stop="4069.624000">helpful for saying, okay, you know, like, in the weeks</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4069.684000" data-stop="4071.687000">leading up to it, two weeks leading up to it, it's like, okay,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4071.707000" data-stop="4073.629000">I got to write this code because I want to be able to say I did</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4073.710000" data-stop="4079.879000">it, which is good. And as a result, I have all sorts of fancy</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4079.939000" data-stop="4084.686000">things now in my Emacs for streaming and also for my config.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4086.108000" data-stop="4089.072000">In two weeks, I would love to have this kind of conversation</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4089.132000" data-stop="4093.519000">with you again, if that's all right with you. Do you have any</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4094.120000" data-stop="4098.174000">tips before the kiddo comes out?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4098.000000">01:08:18</span> <strong>Tips from Prot: small functions used frequently</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="4098.175000" data-stop="4100.878000">[Prot]: Yeah, yeah, yeah. So for the</span> <span class="audio-time caption" data-speaker="Prot" data-start="4100.958000" data-stop="4105.282000">functions you want to write, you want to make the functions</span> <span class="audio-time caption" data-speaker="Prot" data-start="4105.362000" data-stop="4111.207000">be small so you can test them all and make them part of your</span> <span class="audio-time caption" data-speaker="Prot" data-start="4111.248000" data-stop="4115.110000">habit, like start using them even before the streams. So try</span> <span class="audio-time caption" data-speaker="Prot" data-start="4115.171000" data-stop="4119.233000">to use them every day so that you basically have almost</span> <span class="audio-time caption" data-speaker="Prot" data-start="4119.234000" data-stop="4122.398000">a knee-jerk reaction where it's like, oh, I'm doing this and you</span> <span class="audio-time caption" data-speaker="Prot" data-start="4122.438000" data-stop="4125.621000">call the function basically right away. And I don't know if</span> <span class="audio-time caption" data-speaker="Prot" data-start="4125.661000" data-stop="4129.445000">you use the F keys, the function keys for your shortcuts.</span> <span class="audio-time caption" data-speaker="Prot" data-start="4130.466000" data-stop="4132.787000">Maybe those would be good.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4132.788000" data-stop="4134.770000">[Sacha]: Yeah, I have some of them. But</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4134.891000" data-stop="4138.715000">again, it's hard for me to remember sometimes which one I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4138.735000" data-stop="4141.818000">have matched there. So again, it's trying to build it into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4141.858000" data-stop="4145.342000">muscle memory. Probably what I just need is some kind of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4145.362000" data-stop="4146.922000">drill thing.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4146.000000">01:09:06</span> <strong>Maybe using the header line for tips?</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="4146.923000" data-stop="4152.029000">[Prot]: How about a minor mode that sets the header line</span> <span class="audio-time caption" data-speaker="Prot" data-start="4152.109000" data-stop="4155.430000">format? You have seen in many buffers where it says type</span> <span class="audio-time caption" data-speaker="Prot" data-start="4155.650000" data-stop="4159.996000">C-c C-c to finish, right? So set the header line</span> <span class="audio-time caption" data-speaker="Prot" data-start="4160.056000" data-stop="4164.442000">format to be like, you know, type, I don't know, Ctrl-Z to</span> <span class="audio-time caption" data-speaker="Prot" data-start="4164.521000" data-stop="4166.603000">bring up the pop-up, whatever, right?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4166.604000" data-stop="4167.300000">[Sacha]: Yeah, I mean, quick help sort of is that idea...</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4170.820000" data-stop="4174.032000">[Prot]: Yes, quick help would help you do that as well, yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4174.033000" data-stop="4180.229000">[Sacha]: It's a screen space thing. But if I can find something that I can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4180.309000" data-stop="4184.238000">smoosh together with keycast so that it reminds me of my key</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4184.297000" data-stop="4186.397000">tip in this context.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4186.398000" data-stop="4192.168000">Ah, with keycast. Interesting.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4194.792000" data-stop="4197.517000">[Prot]: That's why I was thinking of header-line-format. So it would</span> <span class="audio-time caption" data-speaker="Prot" data-start="4197.557000" data-stop="4201.844000">be something that will appear there. And of course, the</span> <span class="audio-time caption" data-speaker="Prot" data-start="4201.904000" data-stop="4205.370000">header line works exactly like the mode line, meaning that</span> <span class="audio-time caption" data-speaker="Prot" data-start="4205.430000" data-stop="4210.979000">it can update the content. It's not static. So like your mode</span> <span class="audio-time caption" data-speaker="Prot" data-start="4210.999000" data-stop="4213.160000">line will update information.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4213.161000" data-stop="4215.465000">[Sacha]: Yeah. Okay. All right. So let</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4215.505000" data-stop="4219.570000">me think about which tips might be, you know, like my keyword</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4220.651000" data-stop="4223.854000">shortcut of the day focus could be interesting.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="4223.000000">01:10:23</span> <strong>Reorganizing keys</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="4223.855000" data-stop="4228.041000">[Prot]: But it also brings the point like here, of course, like the keys you</span> <span class="audio-time caption" data-speaker="Prot" data-start="4228.121000" data-stop="4230.745000">have, maybe it's also a good opportunity to organize them</span> <span class="audio-time caption" data-speaker="Prot" data-start="4230.805000" data-stop="4235.531000">differently. Like the header here should prompt you for one</span> <span class="audio-time caption" data-speaker="Prot" data-start="4235.611000" data-stop="4240.202000">prefix key, for example. Like, you know, C-t, let's</span> <span class="audio-time caption" data-speaker="Prot" data-start="4240.242000" data-stop="4246.314000">say, and that's for transcribing or whatever. Right. And it</span> <span class="audio-time caption" data-speaker="Prot" data-start="4246.354000" data-stop="4249.499000">will just have that one there. And then with the help of</span> <span class="audio-time caption" data-speaker="Prot" data-start="4249.500000" data-stop="4253.414000">which-key, for example, you see what you have behind that prefix.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4253.415000" data-stop="4257.033000">[Sacha]: I have a hard time figuring out keybindings, which is one of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4257.053000" data-stop="4259.697000">the reasons why I like looking at configs like yours and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4259.757000" data-stop="4262.120000">other people. Because I'm like, yeah, I can totally use that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4262.301000" data-stop="4265.225000">as a starting point for keybindings. But then what else do I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4265.265000" data-stop="4268.711000">assign to it? So for example, I've got this. I apparently</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4268.771000" data-stop="4274.499000">don't have this. I have this sacha-stream-transient</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4275.120000" data-stop="4278.566000">C-c v. That's where I put it now. Okay. Which now has</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4278.567000" data-stop="4279.835000">things like OBS and all that stuff.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4279.836000" data-stop="4280.569000">[Prot]: What's the mnemonic for v?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4282.925000" data-stop="4286.273000">[Sacha]: Oh, v would have been video sort of thing.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4286.274000" data-stop="4287.209000">[Prot]: Okay, I see.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4287.210000" data-stop="4293.261000">[Sacha]: But I have to fiddle with it and the kiddo is going to come out any</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4293.301000" data-stop="4296.591000">moment now. So thanks just in case she comes out.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4296.592000" data-stop="4300.010000">[Prot]: You're welcome.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4300.011000" data-stop="4303.276000">[Sacha]: Well, it's lunchtime. Thank you for this. I will</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4303.516000" data-stop="4305.840000">schedule something else in two weeks. I'm going to try to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4305.900000" data-stop="4310.206000">practice more scheduled live streams and keep fiddling</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4310.247000" data-stop="4312.629000">with this workflow. This has all been very helpful. And</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4312.729000" data-stop="4316.513000">thank you to the people who also have dropped by and said</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4316.553000" data-stop="4319.656000">hello. You can check the chat later. It's fine. Yes, yes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4319.676000" data-stop="4324.180000">Thanks, everybody. All right. Okay. I'm going to say bye</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4324.261000" data-stop="4327.283000">here just in case. Take care. Take care. Take care, Sacha.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4327.303000" data-stop="4337.333000">[Prot]: Take care, everybody. Bye-bye. Bye-bye. Thank you.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4339.372000" data-stop="4344.379000">[Sacha]: Thank you everyone for hanging out. That was my chat with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4345.020000" data-stop="4349.666000">Prot. And I will see y'all again maybe Thurs... Well,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4349.967000" data-stop="4353.531000">probably before then. But I will try to schedule something</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4353.712000" data-stop="4356.496000">on Thursday for around that time. Who knows what it's going</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4356.516000" data-stop="4360.401000">to be about. But yeah, thank you for coming and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4360.461000" data-stop="4366.149000">experimenting with me. Let us end the stream there. Because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4366.189000" data-stop="4367.050000">it's lunchtime.</span>
<p></p>


</details>
<div><a href="https://sachachua.com/blog/2026/04/ye16-sacha-and-prot-talk-emacs/index.org">View Org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F04%2Fye16-sacha-and-prot-talk-emacs%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>YE12: Categorizing Emacs News, epwgraph, languages</title>
		<link>https://sachachua.com/blog/2026/04/ye12-categorizing-emacs-news-epwgraph-languages/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Mon, 06 Apr 2026 14:36:57 GMT</pubDate>
    <category>emacs</category>
<category>stream</category>
<category>yay-emacs</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/04/ye12-categorizing-emacs-news-epwgraph-languages/</guid>
		<description><![CDATA[<p>
<video controls="1" src="https://archive.org/download/2026-04-06-ye-12-emacs-news-epwgraph-languages/2026-04-06-ye12-emacs-news-epwgraph-languages.mp4" type="video/mp4"></video>
</p>

<p>
<a href="https://archive.org/details/2026-04-06-ye-12-emacs-news-epwgraph-languages">View in the Internet Archive</a>, <a href="https://youtube.com/live/zMcyTAOG0i8">watch or comment on YouTube</a>, or <a href="mailto:sacha@sachachua.com">email me</a>.
</p>

<p>
Chapters:
</p>

<ul class="org-ul">
<li><span class="media-time" data-start="2481.000">00:41:21</span> epwgraph</li>
<li><span class="media-time" data-start="3296.000">00:54:56</span> learning languages</li>
</ul>

<p>
Thanks for your patience with the audio issues! At some point, I need to work out the contention between all the different processes that I want to be listening to the audio from my mic. =)
</p>

<p>
In this livestream, I categorize <a href="https://sachachua.com/blog/2026/04/2026-04-06-emacs-news/">Emacs News for 2026-04-06</a>, show <a href="https://github.com/sachac/epwgraph">epwgraph</a> for managing Pipewire connections from Emacs, and share some of my <a href="https://codeberg.org/sachac/learn-lang/">language learning workflows</a>.
</p>
<div><a href="https://sachachua.com/blog/2026/04/ye12-categorizing-emacs-news-epwgraph-languages/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%2F04%2Fye12-categorizing-emacs-news-epwgraph-languages%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>YE11: Fix find-function for Emacs Lisp from org-babel or scratch</title>
		<link>https://sachachua.com/blog/2026/04/ye11-fix-find-function-for-emacs-lisp-from-org-babel-or-scratch/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Sun, 05 Apr 2026 21:03:48 GMT</pubDate>
    <category>org</category>
<category>emacs</category>
<category>elisp</category>
<category>stream</category>
<category>yay-emacs</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/04/ye11-fix-find-function-for-emacs-lisp-from-org-babel-or-scratch/</guid>
		<description><![CDATA[<p>
<video controls="1" src="https://archive.org/download/yay-emacs-11-fix-find-function-for-emacs-lisp-from-org-babel-or-scratch/ye11-find-function.mp4" poster="https://sachachua.com/blog/2026/04/ye11-fix-find-function-for-emacs-lisp-from-org-babel-or-scratch/2026-04-05-19-25-03.png" type="video/mp4"><track kind="subtitles" label="Captions" src="https://sachachua.com/blog/2026/04/ye11-fix-find-function-for-emacs-lisp-from-org-babel-or-scratch/Yay%20Emacs%2011:%20Fix%20find-function%20for%20Emacs%20Lisp%20from%20org-babel%20or%20scratch.vtt" srclang="en" default=""><span>Video not supported. Thumbnail:<br><img src="https://sachachua.com/blog/2026/04/ye11-fix-find-function-for-emacs-lisp-from-org-babel-or-scratch/2026-04-05-19-25-03.png" alt="Thumbnail"></span></video>
</p>

<p>
<a href="https://archive.org/details/yay-emacs-11-fix-find-function-for-emacs-lisp-from-org-babel-or-scratch">Watch on Internet Archive</a>, <a href="https://youtube.com/live/PKkV1Tbev_Y">watch/comment on YouTube</a>, <a href="https://sachachua.com/blog/2026/04/ye11-fix-find-function-for-emacs-lisp-from-org-babel-or-scratch/Yay%20Emacs%2011:%20Fix%20find-function%20for%20Emacs%20Lisp%20from%20org-babel%20or%20scratch.vtt">download captions</a>, or <a href="mailto:sacha@sachachua.com">email me</a>
</p>


<p>
Where can you define an Emacs Lisp function so
that you can use <code>find-function</code> to jump to it
again later?
</p>

<ul class="org-ul">
<li><b>A: In an indirect buffer</b> from Org Mode source
block with your favorite eval function like
<code>eval-defun</code> <label class="hint"><input type="checkbox"> <span class="hint-desc">(hint)</span><span class="hint-text">nope</span></label>

<ul class="org-ul">
<li><p>
<code>C-c '</code> (<code>org-edit-special</code>) inside the block; execute the defun with <code>C-M-x</code> (<code>eval-defun</code>), <code>C-x C-e</code> (<code>eval-last-sexp</code>), or <code>eval-buffer</code>.
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>    (<span class="org-keyword">defun</span> <span class="org-function-name">my-test-1</span> () (message <span class="org-string">"Hello"</span>))
</code></pre>
</div>
</li>
</ul></li>

<li><p>
<b>B: In an Org Mode file</b> by executing the block
with C-c C-c <label class="hint"><input type="checkbox"> <span class="hint-desc">(hint)</span><span class="hint-text">nope</span></label>
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>  (<span class="org-keyword">defun</span> <span class="org-function-name">my-test-2</span> () (message <span class="org-string">"Hello"</span>))
</code></pre>
</div>
</li>

<li><p>
<b>C: In a .el file</b> <label class="hint"><input type="checkbox"> <span class="hint-desc">(hint)</span><span class="hint-text">yup</span></label>
</p>

<p>
<a href="https://sachachua.com/blog/2026/04/ye11-fix-find-function-for-emacs-lisp-from-org-babel-or-scratch/test-search-function.el">file:///tmp/test-search-function.el</a> : execute the defun with <code>C-M-x</code> (<code>eval-defun</code>), <code>C-x C-e</code> (<code>eval-last-sexp</code>), or <code>eval-buffer</code>
</p></li>

<li><p>
<b>D: In a scratch buffer,</b> other temporary buffer,
or really any buffer thanks to eval-last-sexp
<label class="hint"><input type="checkbox"> <span class="hint-desc">(hint)</span><span class="hint-text">nope</span></label>
</p>

<p>
<code>(defun my-test-4 () (message "Hello"))</code>
</p></li>
</ul>

<p>
Only option C works - it's gotta be in an .el file for
<code>find-function</code> to find it. But I love jumping to
function definitions using <code>find-function</code> or
<code>lispy-goto-symbol</code> (which is bound to <code>M-.</code> if
you use <a target="_blank" href="https://melpa.org/#/lispy">lispy</a> and set up <code>lispy-mode</code>) so
that I can look at or change how something works.
It can be a little frustrating when I try to jump
to a definition and it says, "Don't know where
blahblahblah is defined." I just defined it five
minutes ago! It's there in one of my other
buffers, don't make me look for it myself.
Probably this will get fixed in Emacs core
someday, but no worries, we can work around it
today with a little bit of advice.
</p>

<p>
I did some digging around in the source code.
Turns out that <code>symbol-file</code> can't find the
function definition in the <code>load-history</code> variable
if you're not in a .el file, so
<code>find-function-search-for-symbol</code> gets called with
<code>nil</code> for the library, which causes the error.
(<a href="https://github.com/emacs-mirror/emacs/blob/master/lisp/subr.el">emacs:subr.el</a>)
</p>

<p>
I wrote some advice that searches in any open
<code>emacs-lisp-mode</code> buffers or in a list of other
files, like my Emacs configuration.
This is how I activate it:
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">setq</span> sacha-elisp-find-function-search-extra <span class="org-highlight-quoted-quote">'</span>(<span class="org-string">"~/sync/emacs/Sacha.org"</span>))
(advice-add <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">find-function-search-for-symbol</span> <span class="org-builtin">:around</span> <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">sacha-elisp-find-function-search-for-symbol</span>)
</code></pre>
</div>


<p>
Now I should be able to jump to all those
functions wherever they're defined.
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(my-test-1)
(my-test-2)
(my-test-3)
(my-test-4)
</code></pre>
</div>


<p>
Note that by default, <code>M-.</code> in <code>emacs-lisp-mode</code> uses <code>xref-find-definitions</code>, which seems to really want files. I haven't figured out a good workaround for that yet, but <a target="_blank" href="https://melpa.org/#/lispy">lispy-mode</a> makes <code>M-.</code> work and gives me a bunch of other great shortcuts, so I'd recommend checking that out.
</p>

<p>
Here's the source code for the find function thing:
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">defvar</span> <span class="org-variable-name">sacha-elisp-find-function-search-extra</span>
  nil
  <span class="org-doc">"List of filenames to search for functions."</span>)

<span class="org-comment-delimiter">;;;</span><span class="org-comment">###</span><span class="org-comment"><span class="org-warning">autoload</span></span>
(<span class="org-keyword">defun</span> <span class="org-function-name">sacha-elisp-find-function-search-for-symbol</span> (fn symbol type library <span class="org-type">&amp;rest</span> _)
  <span class="org-doc">"Find SYMBOL with TYPE in Emacs Lisp buffers or `</span><span class="org-doc"><span class="org-constant">sacha-find-function-search-extra</span></span><span class="org-doc">'.</span>
<span class="org-doc">Prioritize buffers that do not have associated files, such as Org Src</span>
<span class="org-doc">buffers or *scratch*. Note that the fallback search uses \"^([</span><span class="org-doc"><span class="org-negation-char">^</span></span><span class="org-doc"> )]+\" so that</span>
<span class="org-doc">it isn't confused by preceding forms.</span>

<span class="org-doc">If LIBRARY is specified, fall back to FN.</span>

<span class="org-doc">Activate this with:</span>

<span class="org-doc">(advice-add 'find-function-search-for-symbol</span>
<span class="org-doc"> :around #'sacha-org-babel-find-function-search-for-symbol-in-dotemacs)"</span>
  (<span class="org-keyword">if</span> (null library)
      <span class="org-comment-delimiter">;; </span><span class="org-comment">Could not find library; search my-dotemacs-file just in case</span>
      (<span class="org-keyword">progn</span>
        (<span class="org-keyword">while</span> (<span class="org-keyword">and</span> (symbolp symbol) (get symbol <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">definition-name</span>))
          (<span class="org-keyword">setq</span> symbol (get symbol <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">definition-name</span>)))
        (<span class="org-keyword">catch</span> <span class="org-highlight-quoted-quote">'</span><span class="org-constant">found</span>
          (mapc
           (<span class="org-keyword">lambda</span> (buffer-or-file)
             (<span class="org-keyword">with-current-buffer</span> (<span class="org-keyword">if</span> (bufferp buffer-or-file)
                                      buffer-or-file
                                    (find-file-noselect buffer-or-file))
               (<span class="org-keyword">let*</span> ((regexp-symbol
                       (<span class="org-keyword">or</span> (<span class="org-keyword">and</span> (symbolp symbol)
                                (alist-get type (get symbol <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">find-function-type-alist</span>)))
                           (alist-get type find-function-regexp-alist)))
                      (form-matcher-factory
                       (<span class="org-keyword">and</span> (functionp (cdr-safe regexp-symbol))
                            (cdr regexp-symbol)))
                      (regexp-symbol (<span class="org-keyword">if</span> form-matcher-factory
                                         (car regexp-symbol)
                                       regexp-symbol))

                      (case-fold-search)
                      (regexp (<span class="org-keyword">if</span> (functionp regexp-symbol) regexp-symbol
                                (format (symbol-value regexp-symbol)
                                        <span class="org-comment-delimiter">;; </span><span class="org-comment">Entry for ` (backquote) macro in loaddefs.el,</span>
                                        <span class="org-comment-delimiter">;; </span><span class="org-comment">(defalias (quote \`)..., has a \ but</span>
                                        <span class="org-comment-delimiter">;; </span><span class="org-comment">(symbol-name symbol) doesn't.  Add an</span>
                                        <span class="org-comment-delimiter">;; </span><span class="org-comment">optional \ to catch this.</span>
                                        (concat <span class="org-string">"\\\\?"</span>
                                                (regexp-quote (symbol-name symbol)))))))
                 (<span class="org-keyword">save-restriction</span>
                   (widen)
                   (<span class="org-keyword">with-syntax-table</span> emacs-lisp-mode-syntax-table
                     (goto-char (point-min))
                     (<span class="org-keyword">if</span> (<span class="org-keyword">if</span> (functionp regexp)
                             (funcall regexp symbol)
                           (<span class="org-keyword">or</span> (re-search-forward regexp nil t)
                               <span class="org-comment-delimiter">;; </span><span class="org-comment">`</span><span class="org-comment"><span class="org-constant">regexp</span></span><span class="org-comment">' matches definitions using known forms like</span>
                               <span class="org-comment-delimiter">;; </span><span class="org-comment">`</span><span class="org-comment"><span class="org-constant">defun</span></span><span class="org-comment">', or `</span><span class="org-comment"><span class="org-constant">defvar</span></span><span class="org-comment">'.  But some functions/variables</span>
                               <span class="org-comment-delimiter">;; </span><span class="org-comment">are defined using special macros (or functions), so</span>
                               <span class="org-comment-delimiter">;; </span><span class="org-comment">if `</span><span class="org-comment"><span class="org-constant">regexp</span></span><span class="org-comment">' can't find the definition, we look for</span>
                               <span class="org-comment-delimiter">;; </span><span class="org-comment">something of the form "(SOMETHING &lt;symbol&gt; ...)".</span>
                               <span class="org-comment-delimiter">;; </span><span class="org-comment">This fails to distinguish function definitions from</span>
                               <span class="org-comment-delimiter">;; </span><span class="org-comment">variable declarations (or even uses thereof), but is</span>
                               <span class="org-comment-delimiter">;; </span><span class="org-comment">a good pragmatic fallback.</span>
                               (re-search-forward
                                (concat <span class="org-string">"^([</span><span class="org-string"><span class="org-negation-char">^</span></span><span class="org-string"> )]+"</span> find-function-space-re <span class="org-string">"['(]?"</span>
                                        (regexp-quote (symbol-name symbol))
                                        <span class="org-string">"\\_&gt;"</span>)
                                nil t)))
                         (<span class="org-keyword">progn</span>
                           (beginning-of-line)
                           (<span class="org-keyword">throw</span> <span class="org-highlight-quoted-quote">'</span><span class="org-constant">found</span>
                                   (cons (current-buffer) (point))))
                       (<span class="org-keyword">when-let*</span> ((find-expanded
                                    (<span class="org-keyword">when</span> (trusted-content-p)
                                      (find-function&#45;&#45;search-by-expanding-macros
                                       (current-buffer) symbol type
                                       form-matcher-factory))))
                         (<span class="org-keyword">throw</span> <span class="org-highlight-quoted-quote">'</span><span class="org-constant">found</span>
                                 (cons (current-buffer)
                                       find-expanded)))))))))
           (delq nil
                 (append
                  (sort
                   (match-buffers <span class="org-highlight-quoted-quote">'</span>(derived-mode . emacs-lisp-mode))
                   <span class="org-builtin">:key</span> (<span class="org-keyword">lambda</span> (o) (<span class="org-keyword">or</span> (buffer-file-name o) <span class="org-string">""</span>)))
                  sacha-elisp-find-function-search-extra)))))
    (funcall fn symbol type library)))
</code></pre>
</div>


<p>
I even figured out how to <span title="(ignore (ert &quot;sacha-elisp&#45;&#45;find-function-search-for-symbol&#45;&#45;.*&quot;))">write tests for it</span>:
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">ert-deftest</span> <span class="org-function-name">sacha-elisp&#45;&#45;find-function-search-for-symbol&#45;&#45;in-buffer</span> ()
  (<span class="org-keyword">let</span> ((sym (make-temp-name <span class="org-string">"&#45;&#45;test-fn"</span>))
        buffer)
    (<span class="org-keyword">unwind-protect</span>
        (<span class="org-keyword">with-temp-buffer</span>
          (emacs-lisp-mode)
          (insert (format <span class="org-string">";; Comment\n(defun %s () (message \"Hello\"))"</span> sym))
          (eval-last-sexp nil)
          (<span class="org-keyword">setq</span> buffer (current-buffer))
          (<span class="org-keyword">with-temp-buffer</span>
            (<span class="org-keyword">let</span> ((pos (sacha-elisp-find-function-search-for-symbol nil (intern sym) nil nil)))
              (<span class="org-keyword">should</span> (equal (car pos) buffer))
              (<span class="org-keyword">should</span> (equal (cdr pos) 12)))))
      (fmakunbound (intern sym)))))

(<span class="org-keyword">ert-deftest</span> <span class="org-function-name">sacha-elisp&#45;&#45;find-function-search-for-symbol&#45;&#45;in-file</span> ()
  (<span class="org-keyword">let*</span> ((sym (make-temp-name <span class="org-string">"&#45;&#45;test-fn"</span>))
         (temp-file (make-temp-file
                     <span class="org-string">"test-"</span> nil <span class="org-string">".org"</span>
                     (format
                      <span class="org-string">"#+begin_src emacs-lisp\n;; Comment\n(defun %s () (message \"Hello\"))\n#+end_src"</span>
                      sym)))
         (sacha-elisp-find-function-search-extra (list temp-file))
         buffer)
    (<span class="org-keyword">unwind-protect</span>
        (<span class="org-keyword">with-temp-buffer</span>
          (<span class="org-keyword">let</span> ((pos (sacha-elisp-find-function-search-for-symbol nil (intern sym) nil nil)))
            (<span class="org-keyword">should</span> (equal (buffer-file-name (car pos)) temp-file))
            (<span class="org-keyword">should</span> (equal (cdr pos) 35))))
      (delete-file temp-file))))
</code></pre>
</div>


<div class="note">This is part of my <a href="https://sachachua.com/dotemacs#org-mode-org-babel-fix-find-function-when-i-ve-evaluated-something-from-org-babel">Emacs configuration.</a></div><div><a href="https://sachachua.com/blog/2026/04/ye11-fix-find-function-for-emacs-lisp-from-org-babel-or-scratch/index.org">View Org source for this post</a></div>
<p>You can <a href="https://social.sachachua.com/@sacha/statuses/01KNFTFSC3D0K7XH1JW1XTF6QG" 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%2F04%2Fye11-fix-find-function-for-emacs-lisp-from-org-babel-or-scratch%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item><item>
		<title>#YayEmacs 10: Emacs coaching with Prot: Emacs workflows and streaming</title>
		<link>https://sachachua.com/blog/2026/04/yayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp/</link>
		<dc:creator><![CDATA[Sacha Chua]]></dc:creator>
		<pubDate>Sat, 04 Apr 2026 02:23:03 GMT</pubDate>
    <category>emacs</category>
<category>yay-emacs</category>
		<guid isPermaLink="false">https://sachachua.com/blog/2026/04/yayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp/</guid>
		<description><![CDATA[<p>
I realized that one of the <a href="https://sachachua.com/blog/2026/03/emacs-carnival-march-2026-mistakes-and-learning-to-reach-out/">mistakes</a> I often make with Emacs is not asking other people for help, so I experimented with a coaching session with Prot. With his permission, here's a recording of our conversation.
</p>

<video controls="1" preload="none" src="https://archive.org/download/2026-04-02-sacha-prot-emacs-workflows-and-streaming/2026-04-02-sacha-prot-emacs-workflows-and-streaming.mp4" type="video/mp4"><track kind="subtitles" label="Captions" src="https://sachachua.com/blog/2026/04/yayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp/2026-04-02-sacha-prot-emacs-workflows-and-streaming.vtt" srclang="en" default=""><a href="https://archive.org/download/2026-04-02-sacha-prot-emacs-workflows-and-streaming/2026-04-02-sacha-prot-emacs-workflows-and-streaming.mp4">Download the video</a></video>

<p>
View in the <a href="https://archive.org/details/2026-04-02-sacha-prot-emacs-workflows-and-streaming">Internet Archive</a>, <a href="https://youtu.be/kvBS8wz8ZRw">watch/comment on YouTube</a>, <a href="https://sachachua.com/blog/2026/04/yayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp/2026-04-02-sacha-prot-emacs-workflows-and-streaming.vtt">download the captions</a>, or <a href="mailto:sacha@sachachua.com">e-mail me your thoughts</a>.
</p>

<div class="sticky-toc" id="orge59e1c0">
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="https://sachachua.com/blog/feed/index.xml#org7a14ead">Resources</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#org186a346">Chapters</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#projects-experiment-with-learning-from-prot-yayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp-rough-notes-to-clean-up-over-the-next-little-while">Rough notes to clean up over the next little while</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#projects-experiment-with-learning-from-prot-yayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp-transcript">Transcript</a></li>
<li><a href="https://sachachua.com/blog/feed/index.xml#projects-experiment-with-learning-from-prot-yayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp-ideas-for-next-steps">Ideas for next steps</a></li>
</ul>
</div>

</div>
<div id="outline-container-org7a14ead" class="outline-3">
<h3 id="org7a14ead">Resources</h3>
<div class="outline-text-3" id="text-org7a14ead">
<ul class="org-ul">
<li><a href="https://protesilaos.com/codelog/2026-03-31-emacs-coaching-with-sacha-chua/">Emacs coaching with Sacha Chua | Protesilaos Stavrou</a></li>
<li><a href="https://sachachua.com/blog/2026/03/thinking-about-coaching-goals-with-prot/">Thinking about Emacs coaching goals with Prot</a></li>
<li><a href="https://sachachua.com/dotemacs">My Emacs configuration</a></li>
<li><a href="https://protesilaos.com/emacs/dotemacs">Prot's Emacs configuration</a></li>
<li><a href="https://youtube.com/live/djE_pVlgDHg?feature=share">The livestream we've penciled in for April 16</a> - come join us!</li>
</ul>
</div>
</div>
<div id="outline-container-org186a346" class="outline-3">
<h3 id="org186a346">Chapters</h3>
<div class="outline-text-3" id="text-org186a346">
<ul class="org-ul">
<li><span class="media-time" data-start="0.000">00:00</span> Intro</li>
<li><span class="media-time" data-start="50.000">00:50</span> Organizing my config into multiple modules and org-babel-post-tangle-hook</li>
<li><span class="media-time" data-start="285.000">04:45</span> Changing namespace, renaming functions</li>
<li><span class="media-time" data-start="431.000">07:11</span> Defining aliases for old functions</li>
<li><span class="media-time" data-start="510.000">08:30</span> Improving my streaming setup</li>
<li><span class="media-time" data-start="729.000">12:09</span> Keeping things from accidentally airing</li>
<li><span class="media-time" data-start="890.000">14:50</span> Livestreaming and recording</li>
<li><span class="media-time" data-start="909.000">15:09</span> Keeping track of interesting moments</li>
<li><span class="media-time" data-start="1099.000">18:19</span> Editing</li>
<li><span class="media-time" data-start="1226.000">20:26</span> Writing</li>
<li><span class="media-time" data-start="1354.000">22:34</span> Packaging</li>
<li><span class="media-time" data-start="1540.000">25:40</span> Responding to email</li>
<li><span class="media-time" data-start="1761.000">29:21</span> Development workflow</li>
<li><span class="media-time" data-start="1799.000">29:59</span> Testing</li>
<li><span class="media-time" data-start="2026.000">33:46</span> Learning and reminders</li>
<li><span class="media-time" data-start="2131.000">35:31</span> Encapsulating workflows into functions</li>
<li><span class="media-time" data-start="2225.000">37:05</span> Popping up notes</li>
<li><span class="media-time" data-start="2301.000">38:21</span> Rediscovering things in my config</li>
<li><span class="media-time" data-start="2431.000">40:31</span> Catching up on Emacs developments</li>
<li><span class="media-time" data-start="2489.000">41:29</span> diffs</li>
<li><span class="media-time" data-start="2588.000">43:08</span> Thinking about the community</li>
<li><span class="media-time" data-start="2640.000">44:00</span> org-link-preview</li>
<li><span class="media-time" data-start="2731.000">45:31</span> Prioritizing things to work on</li>
<li><span class="media-time" data-start="2799.000">46:39</span> Modelines</li>
<li><span class="media-time" data-start="2930.000">48:50</span> Themes would be nice to have per-frame</li>
<li><span class="media-time" data-start="2967.000">49:27</span> Livestreaming conversations with Prot</li>
<li><span class="media-time" data-start="3011.000">50:11</span> Getting together</li>
<li><span class="media-time" data-start="3284.000">54:44</span> Namespaces</li>
<li><span class="media-time" data-start="3346.000">55:46</span> Verbose function names</li>
<li><span class="media-time" data-start="3405.000">56:45</span> Naming conventions for ERT tests</li>
<li><span class="media-time" data-start="3434.000">57:14</span> shorthands</li>
<li><span class="media-time" data-start="3507.000">58:27</span> Bisecting config in multiple files</li>
<li><span class="media-time" data-start="3526.000">58:46</span> "I don't write bugs."</li>
</ul>
</div>
</div>
<div id="outline-container-projects-experiment-with-learning-from-prot-yayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp-rough-notes-to-clean-up-over-the-next-little-while" class="outline-3">
<h3 id="projects-experiment-with-learning-from-prot-yayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp-rough-notes-to-clean-up-over-the-next-little-while">Rough notes to clean up over the next little while</h3>
<div class="outline-text-3" id="text-projects-experiment-with-learning-from-prot-yayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp-rough-notes-to-clean-up-over-the-next-little-while">
<ul class="org-ul">
<li>Meta: learning things
<ul class="org-ul">
<li>Don't try to remember too many things</li>
<li>Build a command that does those for you</li>
<li>Ex: preparing for videos, prot-streaming-mode
<ul class="org-ul">
<li>line numbers</li>
<li>disable spacious padding</li>
</ul></li>
<li>long names: more chances to match it</li>
<li>new frame and then making it disappear: org-capture, timer; I can use that for notes</li>
<li>Tip: prefix keys are also helpful; for example, replace C-z, no one needs to suspend Emacs anyway
<code>defvar-keymap</code> <code>:prefix</code> defines how it should be called as a command, which is good for handling updates to keymaps as well</li>
</ul></li>
<li>Emacs Lisp development workflow
<ul class="org-ul">
<li>diff-buffer-with-file buffer-file-name - diff current buffer</li>
<li>Renaming a symbol
<ul class="org-ul">
<li>single file
<ul class="org-ul">
<li><a target="_blank" href="https://elpa.gnu.org/packages/substitute.html">substitute</a>
<ul class="org-ul">
<li>also noting function aliases, obsolete</li>
</ul></li>
</ul></li>
<li>multiple files?
-wgrep
<ul class="org-ul">
<li>keyboard macros from dired and substitute</li>
</ul></li>
</ul></li>
<li>Bisecting config in modules?
<ul class="org-ul">
<li>"I don't write bugs&hellip; Of course I'm kidding."</li>
<li>Ah, I can probably use bug-hunter with a setup file</li>
</ul></li>
<li>Testing
<ul class="org-ul">
<li>I think I just need to get the hang of:
<ul class="org-ul">
<li>ERT, modus-themes-test&ndash;modus-themes-load-theme</li>
<li>nameless -&gt; shorthands</li>
<li>Tip: Docstring as a declaration of intent; the docstring is the source of truth, not the code. If you write more than the minimum, then you are helping future you.</li>
<li>setting things up at the beginning (Makefiles, continuously running batch mode tests, etc.)</li>
<li>navigating to where I want to write the tests</li>
<li>mocking functions</li>
</ul></li>
</ul></li>
</ul></li>
<li>Making more of my config reusable
<ul class="org-ul">
<li>"I implement the package that I want."</li>
</ul></li>
<li>Workflows for writing, making videos, livestreaming
<ul class="org-ul">
<li>wide monitor is awesome</li>
<li>different font configuration with <a target="_blank" href="https://elpa.gnu.org/packages/fontaine.html">fontaine</a></li>
<li>private stuff:
<ul class="org-ul">
<li>private vertico</li>
<li>turning off preview for consult</li>
<li>keeping files organized</li>
</ul></li>
<li>marking chapters and highlights: using his memory for this</li>
<li>just capture a timestamp and possibly a note</li>
<li>could also just do the offsets manually by saving the time</li>
<li>display line numbers to help people orient themselves and so they can mention it in the chat</li>
<li>writing: splitting it into modules helps</li>
<li>Ooh, idea, theme for streaming</li>
</ul></li>
<li>Other stuff I forgot to mention
<ul class="org-ul">
<li>TODO: link preview - update my code for svgs</li>
<li>Emacs modeline? Smaller lighters, buffer name, view narrowed, read-only, keyboard macro;
<ul class="org-ul">
<li>streaming, microphone</li>
</ul></li>
</ul></li>
</ul>
</div>
</div>
<div id="outline-container-projects-experiment-with-learning-from-prot-yayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp-transcript" class="outline-3">
<h3 id="projects-experiment-with-learning-from-prot-yayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp-transcript">Transcript</h3>
<div class="outline-text-3" id="text-projects-experiment-with-learning-from-prot-yayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp-transcript">
<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Transcript</strong></summary>
<ul class="org-ul">
<li><p>
<span class="audio-time" data-start="1.720" data-stop="56.839">0:01</span>: <b>Intro</b>:
Sacha: Fantastic, this is great, I finally get to talk to you. I
appreciate that you blogged so quickly about some of the
things that I mentioned, and we can certainly dive right
into that, or you have a lot more experience with how these
conversations go, so I can let you take the lead.
</p>

<p>
Prot: Since you put in the effort to write, we already have a
very good structure. The idea is, let's have your screen, so
you can share your screen with Jitsi.
</p>

<p>
Sacha: Yeah. I will share my screen.
</p>

<p>
Prot: And we can go right into it. Let's see. So if you hover over&hellip;
Okay, yeah, you have it.
</p>

<p>
Sacha: yeah oh you know if if at some point I should be really like fancy&hellip; Future session, we should get crdt working because that's fun.
</p>

<p>
Prot: Ah, yes. Oh, that would be nice. Yes.
</p>

<p>
Sacha: Yeah, that would be nice. All right.
</p></li>

<li><p>
<span class="audio-time" data-start="50.455" data-stop="285.228">0:50</span>: <b>Organizing my config into multiple modules and org-babel-post-tangle-hook</b>:
Sacha: So I've been making good progress in splitting up my config into
multiple modules. I just have to iron out a couple of things
like do I actually have to load the autoloads from the user
list directory or does it automatically take care of that?
Because sometimes it doesn't seem like it's doing the
thing. Anyway. It's making good progress. And in fact, I
came across something that I'm not sure you know about yet,
or maybe you know about it and you decided not to do it. I found
out that, so, okay, so here's the context. You know, when you
do your literate config, you have your modules and they're
actually just one big file, like one big source block with a
commentary and everything in it. Yeah, yeah. So I found out
that you can use a hook if you want to, to add stuff to the
tangled files afterwards. So the way I set it up with my
config is I still want all the different functions
scattered all over the place because I'm not yet as
organized as you in terms of the modules. So the
org-babel-post-tangle-hook here, post. Yeah, yeah, yeah, post
</p>

<p>
Prot: So what did you do with that? Let's see.
</p>

<p>
Sacha: and boilerplate&hellip; has that boilerplate here we go so what
it's what this does is when it tangles it it then goes back
into the file and it inserts all that extra text and the
footer into the tangled files so I still have my links to
</p>

<p>
Prot: Nice.
</p>

<p>
Sacha: the different source files where it comes from. So this is
the section where it comes from but I also have all the extra
lovely commentary and stuff so I'm like&hellip;
</p>

<p>
Prot: Ah, that's smart. That's good. That's good. Yes.
</p>

<p>
Sacha: That way, you don't have to keep repeating things. Although I
guess if you really wanted to repeat things you could you
could theoretically have the license just as a no web
reference and then have it go in there automatically.
anyway so I thought that was really cool so I'm making
progress on the things that I had mentioned in the in the blog
post about organizing my config into multiple modules
and other yeah&hellip;
</p>

<p>
Prot: And how far are you in that project? How far are you?
</p>

<p>
Sacha: Let me see. I can look at the sacha.el here and I can do an occur on the files that have the lines that have the
defun. I only have 482 defuns to get rid of. This is
already a lot less than what I started with because like you,
I have a very large&hellip; Almost 40,000 lines in this sacha.org.
</p>

<p>
Prot: Yeah, yeah, that's massive. Yeah.
</p>

<p>
Sacha: It's fun and it's interesting. It is a little reassuring to
know that people still rely on your published modules
instead of actually, like, do people take your config? I
know you've got stuff in the config that makes it possible
for people to just load it and add their customizations on
top, but do you hear from a lot of people who do that?
</p>

<p>
Prot: From a few of them, yes. And this is why I actually created
those customizations. But I must say, I have been trying to
</p>

<p>
Sacha: Yeah, yeah.
</p>

<p>
Prot: make it more difficult for them. So I used to have a use
package, but now I disabled it on purpose and I have my own
macros, so that somebody doesn't just copy-paste. And I
don't do this to be mean, but I do it because this way somebody
will have to think about, like, okay, what is this?
What am I doing here?
</p>

<p>
Sacha: yeah I figure making making them still do that okay what am I
doing here while still being able to automatically load all
the function definitions will probably get them over that
you know like make it a little bit easier for them so at least
that way like right now it is difficult to copy things from my
config like like you're so like okay maybe this is a feature
but you know, maybe changing it will be nice.
</p></li>

<li><p>
<span class="audio-time" data-start="285.229" data-stop="430.519">4:45</span>: <b>Changing namespace, renaming functions</b>:
Sacha: The other big thing that I need to do with my config is
I'm thinking about shifting everything to the sacha- namespace
instead of the my- namespace, which is going to be a lot of
renaming, which is actually, it was actually the question
that I had about renaming things, not necessarily coming up
with clever names that have good acronyms like you do. And I
love that the humor that you have in there, but like, like
just mechanically, are we talking wgrep is like, is there a
more modern, emacs 31 way to rename things? Am I just using
erefactor or like replace-regexp? What do you do when you need
to rename a symbol in possibly multiple files?
</p>

<p>
Prot: If it's in multiple files, I do the grep approach. So it's not
that sophisticated, but it works. Because the thing
with the multiple files is, and it goes also to what you were
telling me in that article, is first you organize, and then
you refactor. It's that idea. The multiple files will not
have a lot of extraneous information. You will not be
matching, at least in theory, you will not be matching too
many false positives.
</p>

<p>
Sacha: Yeah, and if you're doing a single file,
</p>

<p>
Prot: So you won't have to sort it.
</p>

<p>
Sacha: what do you like to do?
</p>

<p>
Prot: I have a package called substitute.
One of the ways I do it is just
substitute the symbol at point. But of course, this is just a
minor convenience. You can do that with a query-replace.
I'm not saying that you really need the package. But the idea is
that you do it and you know that it works. Like, for me&hellip;
I know that it works in the file.
So for me, that's very reliable.
But the other thing I should mention is
keyboard macros from dired combined with substitute.
So you start from a dired buffer, and you go file by file.
That's the general idea. And in each file, you will perform,
for example, a search to the symbol. Once you are on the symbol,
you do the substitute-replace command, and then you move to
the next file. So that is the workflow. And I do that a lot, for
example, with my themes, because they have a lot of
repetitive code, like each theme.
</p></li>

<li><p>
<span class="audio-time" data-start="431.457" data-stop="510.949">7:11</span>: <b>Defining aliases for old functions</b>:
Sacha: Okay, the other thing that I was thinking of as a
workflow improvement here, because I'm sure that I'm going
to keep calling them by their old names, especially
interactively, like have a lot of commands that go off the
meta x, my do this and this and this is I might also need to
think about adding a function alias automatically. And one
way I was thinking of doing that was just, you know,
iterating over our array and bulk defining aliases so that
all the sacha- stuff is now named my- stuff but I was wondering
if that was a or actually also manually inserting the like
well not of course manually but but creating forms for like
defining the aliases somewhere but I was wondering if
this was something that you already did as part of your
workflow like do you when you rename things okay
</p>

<p>
Prot: No, I haven't. When I rename things for my packages, I do use
aliases. But for my own code, if I rename it, basically, it's
</p>

<p>
Sacha: yeah yeah
</p>

<p>
Prot: just the latest name. So I don't try to keep aliases around.
Because I eventually use a similar name,
it won't be very different.
</p>

<p>
Sacha: huh all right yeah yeah I mean like it's it's there you
</p>

<p>
Prot: But what you said about the obarray makes perfect sense.
</p>

<p>
Sacha: might as well do do it automatically right okay all right
that's me oh okay okay I can
</p></li>

<li><p>
<span class="audio-time" data-start="510.950" data-stop="729.648">8:30</span>: <b>Improving my streaming setup</b>:
Sacha: I can do my jitsi thing so I can see
everyone and the screen at the same time the screen is very
small okay so so that's I do have a dual monitor setup, which
</p>

<p>
Prot: Yeah, you need that dual monitor setup,
</p>

<p>
Sacha: is why I was like, OK, maybe I can start looking at your
B-frame things. And in fact, in the minutes before I called,
I figured out how to use MasterChat CLI to get the YouTube
live chat into a command line program, which means that it
can be run from call-process or make-process or other such
wonderful things. So now it's an Emacs buffer. And then I was
thinking, okay, maybe I'll make a pause frame or like a
B-framed like dedicated frame for it so that I can have the
chat of a live stream displayed within Emacs because you
know, it's Emacs. We should do that. Yeah, yeah, yeah.
</p>

<p>
Prot: Nice. Yes, of course.
And you can have it in a side window dedicated buffer.
</p>

<p>
Sacha: Although I might actually have to write my own like Node.js
program so that I can also send text from it, from Emacs.
I think the masterchat CLI, it only displays, but
the library that it uses, if you pass it your browser
cookie, you can use it to send messages back to chat as well.
The reason I had liked Twitch before was because
Twitch had some kind of IRC type thing that you could connect
to. And then that meant, of course, that you can use ERC from
within Emacs in order to send stuff to it. Anyway, live
streaming and chatting, I've also been getting into that
lately. And I was going to pick your brain about this whole
like workflow for making videos or live streaming them. And
more importantly, going back afterwards and
remembering to post them or edit it, in case you forgot
something or whatever. So if you happen to have any tips
or the things that you like about your setup, I would love to
hear about that.
</p>

<p>
Prot: Though in my case, the setup is really simple,
and I admit that I could improve it.
But it's really simple right now,
where I have a wide monitor.
So it's one display, I don't have two,
but it's like 2500 pixels instead of 920.
So I have a little sidebar on the side,
and there on the sidebar I put OBS, for example,
and I put everything I need there on the sidebar.
And then I have enough space to have
whatever it is I am displaying
and maybe another widget on the side.
So that is in terms of the physical layout
of the monitor here.
And then in terms of the Emacs side,
I don't have a lot going on.
I have one package to load the different font configuration.
So when I do streaming or videos,
I will load basically the presentation setup.
</p>

<p>
Sacha: It is a spontaneous.
</p>

<p>
Prot: That's Fontaine, exactly.
But again, it's not a matter of the package.
You could have a function that just changes the
default phase, the height attribute.
</p>

<p>
Sacha: I have this monitor and then laptop,
so this is my workaround for not having
enough space in this desk for a super wide monitor.
My husband has a super wide monitor which I like to borrow
during EmacsConf.
Hello child who is wonderful and likes to
make cameos during my EmacsConf. Okay, I'm going to hug you.
</p>

<p>
Prot: Hello!
</p>

<p>
Sacha: Yes. So okay, so live streaming and then you just basically
hop on the stream and talk about stuff.
</p></li>

<li><p>
<span class="audio-time" data-start="729.649" data-stop="890.389">12:09</span>: <b>Keeping things from accidentally airing</b>:
Sacha: I know you've mentioned things like just starting Emacs with your
Scratch buffer, but yeah, how about the interesting
workflows for not accidentally spilling secret stuff
online?
</p>

<p>
Prot: Part of that is&hellip;
so I use Vertico normally for my completions.
I have some configurations for private Vertico,
where by default, it doesn't display
what Vertico normally displays.
It's just a blank minibuffer,
the way it is with the default Emacs minibuffer UI, right?
But what happens is as soon as you do TAB
or as soon as you move up and down,
then it displays Vertico.
So that, that is one way for me to make sure
that I'm not showing anything I didn't want to show.
The other thing is when I do videos,
I don't use consult actually, even though I like it,
because of the preview functionality.
I don't want to be switching between files
and then consult shows us something which is private.
Right. So. So the private VertiCo, it's a small extension
that I have with a few functions for Vertico.
</p>

<p>
Sacha: I've been thinking about modifying the console preview
states so that I can elide more, I can skip over things that
might be private. And things like, I already have a filter
function for marginalia so that it doesn't show me the
values of variables that might be private. But yeah, just
turning off all these things makes it a little bit easier to
say, okay, I'm just going to jump on the live stream and do
this thing.
Some of the other fun stuff that I've been doing along the
</p>

<p>
Prot: So there is that. And for private, of course, the other thing
with privacy is that you want to have a generally good sense
of where you put your files. So for example, in my pictures
folder, I know that I don't have anything private there. But
there are some sub folders which are like personal. So I know
not to go there.
So it might happen, I need to show a picture,
okay, I just go to the pictures folder, and I show it,
no problem.
</p>

<p>
Sacha: lines of keeping things organized is if I have a stream tag on
a task, I know that's safe to show on screen.
And then I modified my Org jump stuff.
There's a hook that you can use to
narrow things to just that subtree.
So at least I can jump to it
and not have to worry about
the rest of the context in my inbox.
Trying to slowly slowly get the hang of this
</p></li>

<li><p>
<span class="audio-time" data-start="890.390" data-stop="909.531">14:50</span>: <b>Livestreaming and recording</b>:
Sacha: Okay. So it's live stream. Do you like to
live stream and record at the same time locally
or just live stream and then go into
the YouTube thing afterwards to download?
</p>

<p>
Prot: I just do the latter.
</p>

<p>
Sacha: It takes a little bit of a while,
</p>

<p>
Prot: I just download it from Youtube afterwards
</p>

<p>
Sacha: so I'm like&hellip; I could get started on the transcription.
</p></li>

<li><p>
<span class="audio-time" data-start="909.532" data-stop="1099.399">15:09</span>: <b>Keeping track of interesting moments</b>:
Sacha: Do you have anything to keep track of interesting moments
that you want to revisit, or do you just, I don't know, skip
around in the video, look at the transcript, whatever?
</p>

<p>
Prot: I remember, I know this sounds bad, but I remember.
</p>

<p>
Sacha: People with good memories, boo!
</p>

<p>
Prot: And generally I try to also sharpen my memory.
So whenever I can practice something, I will do it like that.
But otherwise, if you really need to take a note of something,
you can always have a small function
that just records the timestamp.
Like, what is the current time? And then you know
when you started, so you will know where you are in the video.
Like, it would be a very simple function that simply prints
the current time, you know, format-time-string,
</p>

<p>
Sacha: Yeah. I just have to write something that gets the time
</p>

<p>
Prot: in a buffer at the bottom of a buffer.
And that buffer is like your interesting moments kind of thing.
And if you really want, you can make that prompt you
for some text, like here is the timestamp
and here is like, you know Prot said a joke
or whatever, you know, like&hellip;
</p>

<p>
Sacha: started from YouTube
and then calculates the offset automatically,
so that I can say okay, here are my chapters roughly.
</p>

<p>
Prot: Yeah, that's even more fancy.
Or you could do the other thing, which is all local,
which is the moment the stream starts,
you hit this command, like you invoke it,
so it resets the time
and then it performs the calculation locally.
So you can do calculations with time in Emacs.
So you can perform that as well.
</p>

<p>
Sacha: Yeah, that's really straightforward.
Okay, so that's definitely something that I'm going to want
to think about, because video is great for enthusiasm
and showing cool stuff that you might otherwise
forget to mention, but it's just so slow to review afterwards.
</p>

<p>
Prot: Yeah, of course, of course, of course.
Just to say another thing with video,
what I have found that is really helpful is
to display line numbers.
</p>

<p>
Sacha: Oh yeah? Huh.
</p>

<p>
Prot: Me personally, I don't use line numbers,
but I have found that when I am displaying
something that others need to follow,
line numbers help them. Because for example,
earlier you were jumping around trying to find that hook, you were&hellip;
</p>

<p>
Sacha: Oh yeah, yeah, yeah. Okay. Display now.
</p>

<p>
Prot: And of course, me, I have experience,
so I kind of know what you are doing,
but somebody who is not really into it will be like,
what is happening?
Why are things moving up and down so quickly, right?
</p>

<p>
Sacha: Okay. And they can mention it, too, in the comments,
</p>

<p>
Prot: And they cannot track where you are.
</p>

<p>
Sacha: which is nice.
</p>

<p>
Prot: Yes, yes, of course. And also, when you are displaying
something, you can say, look, on line 100,
what I am doing, for example.
</p>

<p>
Sacha: I have to steal your config for the highlight line
</p>

<p>
Prot: And it's easy for everybody. Yeah.
</p>

<p>
Sacha: priority because I've been using the highlight line for
that. But sometimes it overwrites things. I'm like, OK.
Today it is well-behaved, so I'm glad for that.
</p></li>

<li><p>
<span class="audio-time" data-start="1099.400" data-stop="1226.578">18:19</span>: <b>Editing</b>:
Sacha: Making videos, all right. Just go ahead and make the videos,
you just do it pretty straight, you don't do a lot of editing
afterwards, I'm hearing,
following the same kind of philosophy
that you use for your blog posts?
</p>

<p>
Prot: That's the idea.
</p>

<p>
Sacha: All right, I should just go do things and not worry about
whether the live stream demo that I just made
of how I can highlight the PDF of your literate config
and extract the stuff into whatever has a bug in it.
And I'm like, oh, I just demonstrated that.
It's okay, I can update it in the show notes.
Oh, that's true, especially since
</p>

<p>
Prot: Or even better, you do a second video
afterwards, a follow up.
</p>

<p>
Sacha: now I figured out that you can use org-pdfview view
to link to pages in the PDF.
So now my index.org has the highlights from your config,
and it takes me back to the page that it was on.
Very very cool stuff.
</p>

<p>
Prot: That's nice.
</p>

<p>
Sacha: Okay, so I just gotta do it.
</p>

<p>
Prot: I think Org-noter also is another package
you could use for that.
</p>

<p>
Sacha: Yeah, probably. and then I just need to get&hellip;
I think I've got PDF tools or PDF view set up.
And then reader of course looks very interesting also.
So I've got to tweak my config a little bit more
to get it running because it has an
external dependency.
Anyway, so just got to do the live streaming.
I was delighted. People have actually been
dropping by and commenting or chatting during the live
streams, which is great because I get to remember,
oh yeah, I should explain that part, taking it for granted.
</p>

<p>
Prot: The thing with a live stream,
</p>

<p>
Sacha: So all of that is good stuff.
</p>

<p>
Prot: because it's something you also wrote,
like getting used to talking to yourself, right?
So, of course, that takes some practice,
but I think, yeah, you have the hang of it already.
</p>

<p>
Sacha: Something is ringing. Hang on, sorry.
I forgot. That was just my reminder that the kiddo is back to
school. Virtual school is fine.
Anyways, OK, so so just got to do it.
</p></li>

<li><p>
<span class="audio-time" data-start="1226.579" data-stop="1354.451">20:26</span>: <b>Writing</b>:
Sacha: Thank you for the tips. This is very helpful for
</p>

<p>
Prot: You're welcome.
</p>

<p>
Sacha: writing. I'm getting better at actually remembering to
include more bits and pieces from my config, and I'm sure
that now that I have them in different files, it'll be easier
for me to then write the post that links to, oh yeah, here's
the five other functions you need in order to make this
little snippet work. But do you happen to, knowing the kinds
of stuff that we like to write about, do you have any other
tips from your workflow?
</p>

<p>
Prot: When it comes to sharing code like that, I already noticed
while you were moving around that you have many things like
my-consult, my-org, etc.
What helps there is to just make those
their own module right away. And from there, you know
that, okay, this is either self-contained or it has an
explicit require, so I can already know where I need to
search for dependencies.
So it's really that. It's because, for example, if you take
just a my-consult function, right, of course, you know by the
name that it depends on consult, but you don't know if it
depends on my- common functions, for example. Right.
Whereas if you have it in its own file,
there will be a require at the top.
So, you know, OK, require my-common-functions.
And that way you can tell, okay, there is a dependency here.
So then when you are to share this function, you can search
for, okay, my-common-functions, is it mentioned here?
Yes or no. And then you know what the dependency is.
</p>

<p>
Sacha: And I think this process of moving things into those
separate files will make it easier for then, for people to
say, okay, yes, I do want to try that thing. Let me check out
the repository required, just load-file that
particular file and then be off to the races.
So we'll see how it works.
I don't know if people actually&hellip;
Sometimes people mention borrowing stuff from my blog.
So maybe people are actually reading
the non-Emacs News posts. We'll get to see that.
</p></li>

<li><p>
<span class="audio-time" data-start="1354.452" data-stop="1540.575">22:34</span>: <b>Packaging</b>:
Sacha: Sometimes I feel like a lot of my tweaks
are very idiosyncratic, right?
</p>

<p>
Prot: Yes, what I found that has helped me is I implement the
</p>

<p>
Sacha: They're very suited to the particular need that I have.
And then it's difficult to say,
OK, if I were going to generalize this for other people, what
kind of defcustoms will I need? What kind of options?
And there's always that trade-off between, yeah, but I just
want to implement the next little thing that I want to make
for myself versus, well, if I put in the
polishing effort, then possibly other people could use it,
and learn from it, and then contribute their own ideas,
and then everything gets better without me having to do the work
myself. So it's a bit of a balance.
</p>

<p>
Prot: package that I want. So for example with denote, but this
applies to everything, denote version 0.1 is the package
that I wanted. So basically, it works for me. Ever since, I
have been adding other things that people want, which are,
of course, good things to have. They improve the package,
but I have already been using the package that I want since
the beginning. So ever since, it's just adding stuff and
learning about how people use it and refining the code,
which everybody benefits from. So whenever you have an idea
that you are like, okay, this may be too idiosyncratic,
don't worry about it. Make it into a package, and then what
other people need will become apparent, and then over time
it will change, but the core package is still what you want.
</p>

<p>
Sacha: Although it is interesting to see, for example, with the
university calendar, institution-calendar thing, it's
like, okay, you can get it to work for a small number of
institutions, ELPA wants&hellip; they want it to work for
everyone, everywhere, all the time.
Okay, that might be too general.
You might need to actually have lots of other people
saying what they need in order to make that
happen in the first place, right?
</p>

<p>
Prot: Which at that point, of course, what you want
is to write the documentation. So for example, with the
institution calendar, I wrote a couple of examples. Okay,
how do you extend this? And yeah, I think that helps. But then
of course, you cannot cover every use case like people have
to also make contributions if they really care about.
</p>

<p>
Sacha: Yeah, so I think at the moment,
I've been writing for n equals one,
the audience is really just me.
And occasionally I hear from people who are like,
oh, that's an interesting idea, let me adapt it.
Sometimes if I'm really lucky,
they will go and write their own package
on top of the stuff that I shared,
which is the ideal situation,
because then I can just like, oh, yeah,
I'm going to borrow that and use it.
It'll have more features
and they're in charge of dealing with that.
But I suppose at some point it behooves me to practice.
OK, I'm just going to write it as a package,
pretending that this is something,
as you said, this is something that I want to be able to
install and use myself. Then if other people find it
useful, it's a lot easier for them to experiment with and
then add on to.
</p></li>

<li><p>
<span class="audio-time" data-start="1540.576" data-stop="1761.852">25:40</span>: <b>Responding to email</b>:
Sacha: Which goes to my second thing. Doing this and
making things open to other people probably means being
more responsive to email. And this is, for me, this is a bit of
a challenge. I'm starting to feel less time-starved,
which is good. I'm starting to actually be able to schedule
things.
One of these days, we should probably see if
we can schedule a Prot Asks thing.
I don't know if I can do two hours,
but maybe I can do one hour or whatever.
Anyway, the rest of it involves actually doing
</p>

<p>
Prot: For sure.
</p>

<p>
Sacha: the responsible thing and responding to issues
and emails and whatever.
It's always a bit of a trade-off, like, oh, do I implement
this other crazy idea I have, or do I answer my email?
</p>

<p>
Prot: For that, of course, it's a challenge. I must say that a lot of
the maintenance work I do is via email. Or email or Signal or
Telegram. People will ask me, hey, Prat, what is this? And
many of the issues are not with my package. I had an issue
earlier with the modus themes, no, the ef-themes, and
eventually it was something to do with the user's
configuration of some function of center tabs. But I had to
go into it and check. So, of course, there will be that. But I
must say, it's not too bad. It's not a big issue. You can
always have in your email, like, hey, please don't use this
for issues. And it's not a replacement for that.
Just use the issue tracker.
</p>

<p>
Sacha: I know I just have to&hellip;
I think I just have to like reframe my perspective.
This is a gift. Other people are taking their
time and effort to do this.
It's wonderful that they're trying things out
and putting their&hellip;
actually doing things themselves
and then reaching out in case&hellip;
'cause it would be nice to get things working on more
people's computers. I think that the stuff that I've
been building around learning languages and doing voice
input into Emacs probably&hellip;
There are a lot of these things already,
but they tend to also be very individual workflows
and individual setups.
So it'll be interesting to get to the point
where we can start to even have a conversation with shared code.
</p>

<p>
Prot: About the individual workflow, again, it's not a
problem because what is individual now will eventually
become kind of a standard workflow. Think about org, the
beginning of org. You have Carsten Dominik, who is like, you
know what, this outline mode isn't enough. I need more stuff
on top. And eventually we have Org. In the beginning, I
imagine org was basically Carsten's org, and it became this uh
this package that everybody can use however they feel like.
</p>

<p>
Sacha: I used to maintain Planner Mode before Org Mode got super popular
and I remember feeling very embarrassed when someone very,
very kindly said "I appreciate the work that
you do; incidentally, the latest update kind of
deleted a lot of my notes." So this is like,
when you make something that other people use,
sometimes your mistakes will affect more people
than just you. But I'm hoping now that
now that the disks are in the spaces of terabytes
instead of whatever, people are just backing up everything
and version controlling everything
and everything will be fine.
</p>

<p>
Prot: Yeah, of course, of course.
Writing packages, of course, is a responsibility. The
upside, though, is that because you know that it is a
responsibility, you try to write cleaner code at the outset.
Whereas if it's just for your own configuration,
you're like, okay, this will work and I will fix it later.
</p></li>

<li><span class="audio-time" data-start="1761.646" data-stop="1799.534">29:21</span>: <b>Development workflow</b>:
Sacha: Yeah, and that actually brings me back to this Emacs Lisp
development workflow thing. So I think one of the things
that I just need to do is I just need to set up the Makefiles and
the snippets and the shortcuts to say that if I'm
starting a new proto-package, the thing to run the tests
is there, and whatever it is that maybe even continuously
runs the test when I make a change, and lets me mock up
functions so that I can test some of the things that might be
more interactive or might require deleting files or
whatever. It's just changing my buffer configuration and
whatever.</li>

<li><p>
<span class="audio-time" data-start="1799.535" data-stop="2026.503">29:59</span>: <b>Testing</b>:
Sacha: So I occasionally write ERT tests when I feel diligent.
Sometimes I'm starting to write the test first
and then write the code that makes a thing,
but if you happen to have any parts of your workflow
that you particularly like
when it comes to testing things,
I would love to hear about them
because I haven't gotten to
that part of your config yet
</p>

<p>
Prot: Yeah, so I don't have a lot going on for that. So it's simply
ERT. But what I do with the tests is really basic. So ERT,
M-x ert, and then I pick the test that I want. And I must say that
when it comes to tests, I can be better myself. So there are
some packages I write where they have good tests, but there
are others that have zero tests. So I want to reach a point
where everything has tests, but it takes a lot of work.
</p>

<p>
Sacha: Yeah. I mean, like every so often
I feel like very, very diligent
and I'm like, okay, let's do code coverage.
So I can see things with undercover.
Let's write a function and make sure there's a test
associated with it. And let's write a keyboard shortcut that
lets me jump from the thing to the test
that's associated with it or to run it.
And in fact, I still need to
get embark to do all these things for me so I can
be looking at a function and say
just rerun the test for this, please.
</p>

<p>
Prot: Just to say one low-tech feature that has helped me a lot,
low-tech, Is i use the docstring as a declaration of intent.
So in the docstring, I say what is the function or the variable
meant to do, like what is it meant to provide. And then if I look
at the code and I'm like, ah, this doesn't work, I know that
the doc string is what I wanted. It's never the code. So there
is this idea that the code is a source of truth. For me, it's
the opposite. It's like the doc. It's the specification.
And then the code is&hellip; I was wrong. I was sloppy. I
wasn't paying attention. I missed something or whatever.
And the reason for that is the following. It's because with
the code, you may have used the symbol wrongly, or you may be
calling something that you don't mean to call, or there is
another function. Or, for example, you use mapc instead of
mapcar, so you don't get the return value you expect, that
sort of thing. So something, basically you don't deal with
sloppy problems. So you don't have confusion there. You
know that, okay, the source of truth is the docstring.
This is my intention.
</p>

<p>
Sacha: I should do that more often. Now that I've changed my
yasnippet for inserting functions to automatically have the
docstring, I feel a little guiltier when I delete the
docstring, so I am compelled to instead fill it out. But if I
specify it in more detail, as you do with it becoming the
statement of intent, then I can be like, OK, let's try that.
It's a good practice.
And then I can write the test.
</p>

<p>
Prot: And the thing with docstrings is that, of course, you are
</p>

<p>
Sacha: Yeah? This is me.
</p>

<p>
Prot: motivated to just write the minimum necessary so that you
don't get the warnings, right, from checkdoc.
But if you write more, then you are rewarded yourself.
It's something that helps you, future you,
and of course other users, because you always have to
consider yourself as basically a user.
I don't remember why I wrote this six months ago,
so of course having the docstring there,
actually spell it out, helps me.
</p></li>

<li><p>
<span class="audio-time" data-start="2026.504" data-stop="2130.784">33:46</span>: <b>Learning and reminders</b>:
Sacha: I definitely have problems with working memory
and long-term attention. Which actually touches on this
other thing that I mentioned in my post, which is, in your
experience coaching other people and also in your personal
practice, what are you finding as good ways to keep
reminding yourself, okay, these are the keyboard
shortcuts I want to internalize, or this is the the workflow
tweak that I wanted to try naturally. I was
thinking, maybe I make an Org file or maybe I make a
quick help thing or whatever. But it's always interesting
to hear about other people's workflows.
</p>

<p>
Prot: What I find most useful is to not try to memorize too many
things, but whenever you are in the flow of, oh, this is a
process that I want to be doing, to actually implement it as a
command or whatever, as a package or whatever, like
basically don't try to memorize the steps and of course the
key bindings.
Try to build a function that does those for you.
A command basically that does those for you.
So for example, to be concrete,
I mentioned earlier that for video purposes,
I will enable line numbers.
And I will also enable the line highlight.
And I have another thing where I disable spacious padding.
So the package I have. And all this, of course,
I know the key binding. So it's F7 and F8 and F6 or
whatever, right? But I'm like, I cannot remember all that.
I will just write a function, and it will be
prot-streaming-mode. And I enable prot-streaming-mode, and
it does what I want it to do, and then I disable
prot-streaming-mode, and I'm back to where I need to be.
</p></li>

<li><p>
<span class="audio-time" data-start="2131.732" data-stop="2225.120">35:31</span>: <b>Encapsulating workflows into functions</b>:
Sacha: Yeah, I have a prepare-for-screencast that does
something similar, changes font size, etc, etc.
Tt's so wonderful that in Emacs, you can
</p>

<p>
Prot: Exactly.
</p>

<p>
Sacha: just keep collapsing things into functions that do the
thing that you wanted,
and it has access to pretty much everything.
I just need to remember to actually call the
thing and remember what the thing was actually called.
Aliases are very helpful, so it's orderless, but it's like&hellip;
</p>

<p>
Prot: Another thing that might help is long names. Because with long
names, you have more chances to match it. For example, in
this case, it could be called prot-streaming-mode, but you
could also call it prot-streaming-and-video-demonstrations-mode.
And of course it sounds ridiculous,
but if you think about it, I might search for,
I do M-x and I search stream. I find it. I search video.
I find it, right. I search demo. I find it.
So, if you care about something, you can name it that way,
and then you find it more easily. Or, of course, with
aliases, you do the same, right? prot-streaming-mode,
alias, prot-video-mode, alias, you know how it is. But, yeah,
either of those would work. Basically, benefit from the
fact that you have completion, and I imagine you also have
orderless.
</p>

<p>
Sacha: So definitely that. And then
</p>

<p>
Prot: So, yeah.
</p>

<p>
Sacha: for the free form notes thing, it just occurred to me.
</p></li>

<li><p>
<span class="audio-time" data-start="2225.121" data-stop="2301.616">37:05</span>: <b>Popping up notes</b>:
Sacha: So in addition to your posframe stuff in your config for
quickly popping up an Emacs posframe for some
commands, like, do you have some things?
I suppose I could just use that directly for my notes
and for the chat. Do you have any other of those "quickly pop up
something so that you can do something with it and then make
it disappear?"
</p>

<p>
Prot: No, I haven't built a lot on that. So I have some functions I do
</p>

<p>
Sacha: That's your main thing.
</p>

<p>
Prot: with that. Specifically, I have it for the timers. For me,
that's very useful. And for org-capture, but I haven't
elaborated on it. Of course, I could do that more. Another
that I&hellip; By the way, it's not a poframe.
Technically, what I have is just a new frame.
But the idea is the same, right?
It pops up and it disappears.
And I can share the code for that.
It's in the prot-window package, actually.
</p>

<p>
Sacha: I have it highlighted here in my&hellip;
</p>

<p>
Prot: So it's a small macro there.
</p>

<p>
Sacha: So this is the thing that I was telling you about earlier
where it just extracts all the things that I've
highlighted. It's very, very cool.
It's in one of these, I'll grab it eventually.
Which is good because I have to go over
my config at some point.
</p></li>

<li><p>
<span class="audio-time" data-start="2301.617" data-stop="2431.131">38:21</span>: <b>Rediscovering things in my config</b>:
Sacha: There's so much in there that
I've completely forgotten writing about.
And so I'm like
reading this now as I'm splitting it into different modules
and saying, oh yeah, I automated that.
I'm doing it manually again.
</p>

<p>
Prot: The other thing that might help is a prefix key.
So I have done that with C-z. So it's a prefix key,
and then either with which-key or with Embark,
you know, the Embark&hellip; When Embark replaces C-h.
I forget how it's called now.
You can always see, OK, what do I have? Like, what are the groups?
And then you can cluster things there. And it's very easy.
Ever since defvar-keymap, ever since that became a thing,
it's very easy to write prefix keymaps, because it has a
keyword called prefix, and then with that prefix you define
how the keymap should be called as a command.
</p>

<p>
Sacha: That's interesting. I should definitely look into that.
Finds how it should be called. That's a command.
So you can just add it to other key maps as needed.
That sounds cool.
</p>

<p>
Prot: So consider this difference, like right now, you can take a
defvar, which is a keymap, right? And you can bind it to a key,
the keymap itself, without the quote,
you can bind it to a key. So you will do define key
in the global map, like whatever you want, and then bind it.
What happens though with that
is that you're binding the value of the keymap to the key,
which means if you make changes to the keymap,
your key doesn't know about them.
</p>

<p>
Sacha: I've been running into that. I get annoyed and I have to keep
re-evaluating my definitions.
So yeah, okay, that's what I do.
</p>

<p>
Prot: Whereas if you have the prefix, which is now a command, you
have created an indirection. So now you define key to the
symbol that you have specified.
And that, of course, is that indirection,
which now gets the up-to-date value of the keymap.
</p></li>

<li><p>
<span class="audio-time" data-start="2431.853" data-stop="2489.639">40:31</span>: <b>Catching up on Emacs developments</b>:
Sacha: So this is Emacs stuff that I have been missing out on,
because for the past 10 years
I've just been squeezing things
into whatever moments I can have
before somebody comes and says hello
and says mom mom mom mom,
and now that I have a little bit more focus time,
I'm looking forward to finding out about all the cool stuff
that has gone into Emacs and that I'm not currently taking
advantage of.
So things like, for example, I only scratch the
surface of using Lispy, and I want to do other things as
expressions because it's all magical. And if you have
similar, like, oh yeah, this is a new thing in Emacs 30 or 31
that is super helpful and not everyone knows about it, I'd
love to know about it. I mean, I know it's on Emacs News,
but sometimes I'm like, whoosh, it goes past my radar
and I don't have the time to dig in.
</p>

<p>
Prot: Yeah, right now I cannot think of something.
But yeah, I will.
</p></li>

<li><p>
<span class="audio-time" data-start="2489.640" data-stop="2590.465">41:29</span>: <b>diffs</b>:
Prot: Oh, a very small thing that helps me a lot when I make any
kind of edit. You know, there is this function diff buffer
with file. So that's good. For me, what I always want is
</p>

<p>
Sacha: that sounds like a little tweak
</p>

<p>
Prot: diff-buffer with a current file.
I don't want to diff a buffer
with some random file. So what I have is a very small
extension, a very small function,
which is diff-buffer-buffer-file-name.
So buffer-file-name is the variable for the
current buffer's file. And then I do the buffer file name.
And for me, that's very useful. Whenever I make an edit or I'm
not sure what happened, I do that and I already see the diff. I
use that a lot.
</p>

<p>
Sacha: that I would love to to pick up as well.
There's all sorts of interesting workflow things
that I am looking forward to discovering
as I figure out the better way to watch videos
and then also make videos,
because one of the things I find
is whenever you demonstrate something, sometimes,
if you're really lucky, someone will say,
oh yeah do you know about this thing
that does the whole thing,
which is great.
One of my favorite reasons for sharing things
is learning from other people.
All right.
You write this really long blog
</p>

<p>
Prot: Same. Like you put it out there and somebody will be like,
hey, you could do it this way instead.
</p>

<p>
Sacha: post about this clever thing that you just figured out and
then five minutes later, oh yeah,
that's been built into Org since, you know, version 9.7.
</p>

<p>
Prot: Exactly, exactly.
</p></li>

<li><p>
<span class="audio-time" data-start="2588.000" data-stop="2639.759">43:08</span>: <b>Thinking about the community</b>:
Sacha: Which actually leads me to: what can we do?
We've got about 20, 15 minutes left in this hour.
Taking advantage of your very large context window for all things
Emacs community, you know, those kinds of stuff that we are
interested in, what are some of the things that we could do to
make things even better? This is a very open question, of
course, but yeah.
</p>

<p>
Prot: Even better, you mean Emacs in general or Org in particular?
Because Org got a very nice feature lately, Org 9.8, which is
the ability to preview images for any link type.
So that's very useful.
Before it was like the file type. Now it's any
link type. And of course, if you ever want to do something
with a custom link type, there you have it.
</p></li>

<li><p>
<span class="audio-time" data-start="2640.640" data-stop="2731.744">44:00</span>: <b>org-link-preview</b>:
Sacha: Which is good because I, in fact, have an override for a
custom link type where I had done it before. So I just
basically copied and pasted the image preview link so that I
could have my SVGs either included in it as a whole or just
preview.
Anyway, so yes, I'm going to switch over to the new one.
Link preview, update my code for SVGs.
</p>

<p>
Prot: Yeah, for example, now imagine this. Imagine you have a
custom link type, which is called image or something, and
you just give the image a name, nothing else. And
internally, this link type knows to go in a specific
directory and get the image from there, maybe even have
copies of the image, so it can give you a copy that matches
some parameter or whatever, like some user option maybe.
You could have fancy things like this. I have been thinking
about it, but I haven't written anything yet.
</p>

<p>
Sacha: I would probably like&hellip; Things like my audio waveforms could
go in there very easily and things like that.
I'm very curious about this idea of mixing more things into other
places in Emacs. And one of the things that I've been meaning
to dig into is how LECDraw does SVG interaction, because it
uses mouse events to be able to drag things around and
whatever. Because I think if we can get richer
interactivity and more graphical elements, that could be
really fun.
</p></li>

<li><p>
<span class="audio-time" data-start="2731.745" data-stop="2812.599">45:31</span>: <b>Prioritizing things to work on</b>:
Sacha: Anyway, but yes, so I've got basically three
months of focus time before the kid goes on summer vacation
and wants my attention at probably the majority of the day
at an irregular interval. So it'll be a lot harder for me to
schedule things then. I can set aside maybe 10
hours a week to work on Emacs-y things, including possibly
working on infrastructure for the upcoming EmacsConf,
or tweaking Emacs News or hosting meetups or whatever.
Taking advantage of you as an external perspective,
are there things that would be a good idea for
me to particularly focus on? Things that you've been
wishing you could say, Sacha, hey,
just do this thing and it'll be awesome.
</p>

<p>
Prot: I think you already have a very good setup, actually.
So I don't think there is much to be done
in terms of adding things.
Maybe the work here is to be removing things, and
that's the more difficult part.
</p>

<p>
Sacha: No!
Delegating things. Passing things to other people, maybe.
Making it possible for other people to help.
</p></li>

<li><span class="audio-time" data-start="2799.931" data-stop="2813.679">46:39</span>: <b>Modelines</b>:
Prot: There is a very small thing which maybe is useful,
maybe it isn't. I don't know how much you use the mode line,
how much you rely on that, but the newer version of Emacs makes it
possible to shrink the lighters for the minor modes.</li>

<li><p>
<span class="audio-time" data-start="2812.600" data-stop="2944.755">46:52</span>: <b>Modelines</b>:
Sacha: Yeah, I don't use the mode-line as much.
I ended up moving keycast to the header line
because it's a little bit more visible in videos.
Sometimes when closed captioning is on, it obscures the mode line.
So I don't tend to look at the mode line for much,
and I'm wondering what I'm missing out on.
And I'll probably also want to add: am I streaming?
</p>

<p>
Prot: Yeah, not much. Not much is the answer, but maybe you could
declutter it in that regard so that then it is useful. For me,
where it really is useful is to know some things such as, of
course, what is the buffer name? Is the view narrowed?
That's, for me, really important.
Maybe is it a read-only file?
And am I running a keyboard macro?
</p>

<p>
Sacha: Is my microphone on?
</p>

<p>
Prot: Yes. Good, good.
You see, there are all sorts of good ideas.
And you can think of those as just one character, right?
And you can have that one character with a face, which has,
for example, a background. So is my microphone on?
That's a green background. Am I streaming?
That's a red background or whatever.
And you just see the colors there and you know
everything is all right.
</p>

<p>
Sacha: Although, actually, now that we're talking about it,
I'm thinking maybe I should just revive websockets.
So I made an obs-websocket.el thing before, and someone has&hellip;
The benefits of making a package:
someone has actually updated it
to work with the new WebSocket protocols.
I just have to get the whole thing set up again
so I can communicate with OBS.
I can use a different theme, most likely
another Modus theme, when I'm streaming,
so that it's a little bit more in my face:
okay I'm looking at the correct colors, I am public.
</p>

<p>
Prot: That's the other thing. Yeah, that's good. That's good.
</p></li>

<li><p>
<span class="audio-time" data-start="2930.136" data-stop="2967.263">48:50</span>: <b>Themes would be nice to have per-frame</b>:
Prot: With themes, unfortunately, that's
actually something I would like to have. We cannot have them
per frame, which is strange because if you do
set-face-attribute, you can specify a frame argument.
But if you do something like custom-set-faces, you cannot.
</p>

<p>
Sacha: I'm sure that once you start messing around with Emacs
internals, you might be able to figure out the way to do that.
</p>

<p>
Prot: Yeah, now that I say it, it shouldn't be too difficult. Yeah.
Famous last words.
</p>

<p>
Sacha: Yeah, yeah, yeah. That's really fun.
Okay, so that gives me stuff to work on.
</p></li>

<li><span class="audio-time" data-start="2967.264" data-stop="3011.719">49:27</span>: <b>Livestreaming conversations with Prot</b>:
Sacha: I brought up briefly the idea of possibly
setting up some kind of streaming things because I think,
for example, this conversation that we have&hellip;
I have so far managed to not share anything
that is too private, except for, of course,
the time when the kid is like, hello, mom,
I need your attention and I want to be on stream.
She likes to make cameos.
So we could share this,
and we could potentially think about
having these kinds of conversations
as something that other people could join in on,
because it causes more questions,
it's more interesting, and it also gets stuff out there
without me having to type the lessons learned.
So is that maybe something we can consider doing,
I don't know, once a month for the next three months?</li>

<li><p>
<span class="audio-time" data-start="3011.965" data-stop="3284.242">50:11</span>: <b>Getting together</b>:
Prot: For me, yes. Even more frequently than once a month.
Whatever works for you. For me, it works. That's the point.
And also not in the context of coaching or whatever, but
generally as a collaboration, I'm totally okay with that.
Basically, more events for the community. I'm all for it.
</p>

<p>
Sacha: Yeah, because it is different.
I very much had missed doing Emacs chats,
and I'm so delighted that you've got Prot Asks.
I'm looking forward to watching
the one that you just released,
because it's a community event, right?
You get to know about interesting things about people.
And there are a lot of things
that come up through conversations
that don't come up when you're just
writing by yourself.
</p>

<p>
Prot: Yes, yes, yes. It's really that. It's really that. And for
me, it's also another thing, which is it's more inviting.
Like, it's like you are telling people, hey, show up like you
can participate. Actually, we are friendly. Like, here we
are. You see us.
I think that kind of encouragement helps.
</p>

<p>
Sacha: So if you want to do, like, Emacs office hours
on a regular basis,
either something that you schedule in yours&hellip;
Is it a YouTube thing where we can both schedule a live
and then both have it, or not?
I think they've got a collab thing now. I don't know.
</p>

<p>
Prot: I haven't explored it. So on the technical side, I really
don't know. But in terms of intention, I'm all for it. So we
can of course figure out the technicality.
</p>

<p>
Sacha: You have the bigger channel.
</p>

<p>
Prot: But I really don't know.
We can do it twice a month, or even if you want, if you are really
</p>

<p>
Sacha: If you want to set it up, then Thursdays are probably good.
Or if you want me to set it up, then I can do that.
And then we can figure out the platform details
and the non-YouTube way for people to join&hellip;
probably IRC. We've got all this lovely
infrastructure for EmacsConf,
which I dust off every month for meetups.
So that's certainly something
we can slide right in there too.
Okay, so if we do it once a month,
that just gives me three sessions of practice,
but if we do it like twice a month or more,
I am also okay with that.
I think we can squeeze that in and make that happen.
</p>

<p>
Prot: into it, once a week, a live stream once a week. And yeah,
people can join, and we can always have a topic and talk about
it and take it from there. We could also do it.
Now, I don't know whatever makes more sense,
but we could do it on my channel. And then, of course,
with a prominent link to your channel,
or we can do it one on your channel,
one on my channel or always on your channel.
Me, I don't mind at all. Like me,
I'm in for the fun.
</p>

<p>
Sacha: We'll figure out the technical details
and whatever off-stream.
It could be interesting because then
that gives people a friendly place to drop by and chat.
And also because I know you're there and I'm there,
it gets away from the talking to myself.
When it's just me talking
and then it's just like chat is silent,
it just feels like I have this unfairly privileged position.
So yeah, that's definitely something
we're going to look into.
We can structure that as one of these coaching thingies
if I'm looking for excuses to use
the Google Open Source Peer Bonus.
I still haven't really made a justifiably good plan for it.
So yes. Okay.
Oh, this has been very helpful.
I've got like all these tips.
If you're okay with it, I am totally fine with posting
this recording online.
If you want, you can also post it.
I think there's some kind of collab thing.
</p>

<p>
Prot: Me, I don't have a recording. So you can do whatever you want.
So it's really up to you. Me, I don't mind. The reason I don't
have recordings of my meetings is because I really have this
policy of, you know, it's private. Your name is never known.
Nobody has seen this. That's the idea. Of course, in your
case, you're making it public. So, of course, that's fine.
</p>

<p>
Sacha: Yeah, my stance is always, well,
I'm going to learn stuff, but A, I'm very forgetful,
so I need to be able to search it and find it again.
And B, other people can pick up stuff too.
I might as well expand the learning
and do the learning out loud.
So all that is good.
And then for next time,
which will probably be in two weeks,
or maybe earlier if I manage to get my act together,
</p></li>

<li><p>
<span class="audio-time" data-start="3284.243" data-stop="3346.639">54:44</span>: <b>Namespaces</b>:
Sacha: I'd like to see if I can get my stuff
properly split up into different modules
that have the different namespace.
I really think I'm going to end up shifting to
the sacha- namespace instead of all the my- stuff.
I used to use the my- namespace prefix
so that people could copy and paste things
more easily into their code.
But now I'm like, well, if I put it in sacha-,
then I'm not polluting their namespace
if they're loading the whole library.
</p>

<p>
Prot: Yes, yes, exactly. Exactly, exactly. That's a good thing.
</p>

<p>
Sacha: So that's on my to-do list.
</p>

<p>
Prot: And with naming things, of course, I also hinted that in the
article I wrote in response to your blog post. It really
helps to think about the names. Also, with what we said
earlier about finding things like so don't try to be too
terse, too economical with the names like make the most of it.
</p>

<p>
Sacha: I'm using nameless anyway to hide the prefixes.
Got to get the hang of using the keyboard shortcuts
to insert things.
</p></li>

<li><p>
<span class="audio-time" data-start="3346.640" data-stop="3403.240">55:46</span>: <b>Verbose function names</b>:
Sacha: Yeah, so I do like having very verbose function names
and just practically full sentences in the thing.
All that is very good. So that's my main thing.
Aand then of course, getting into more ERT&hellip;
I have this function that now that lets me try to
jump to the test or the file that's related to this thing.
So we'll see how it goes,
especially as I move things into these different functions.
</p>

<p>
Prot: Okay, okay I'm not sure how you are doing that, but if I were to
implement something like that myself, what I do with the ERT
tests, it's always the prefix of the ERT file and then the
name of the original function, double dash and then the name
of the original function. So, for example, let's say,
modus-themes-tests, right? So then it's
modus-themes-tests&ndash;modus-themes-load-theme, for example.
</p></li>

<li><p>
<span class="audio-time" data-start="3405.526" data-stop="3434.839">56:45</span>: <b>Naming conventions for ERT tests</b>:
Sacha: Okay, so that's your naming convention.
</p>

<p>
Prot: That's a convention. That's a convention, yes.
</p>

<p>
Sacha: I should try that.
I've just been basically naming things as function-name.
And then I was,  like, maybe I should be calling them
function-name-test.
Or in this case, you know, package.
</p>

<p>
Prot: Just to add something to this, because you also named this,
so the nameless user. So there is built into Emacs this thing
called shorthands.
</p></li>

<li><p>
<span class="audio-time" data-start="3434.650" data-stop="3507.720">57:14</span>: <b>shorthands</b>:
Sacha: Yeah, I read about that, but you did mention that some people
have been going back and forth about whether it's worth
using it or whether it confuses things more.
I think just leaving the names as is
and then just displaying it differently
seems to be like an in-between step.
</p>

<p>
Prot: So that's what shorthand does. The name is, for example,
modus-themes-test. And shorthand, effectively, is a buffer
local variable which takes the small prefix and maps it to
the larger prefix. So modus-themes-test can be mtt, for example.
</p>

<p>
Sacha: Okay. All right.
So basically it's a more powerful nameless,
more configurable, and it's built in.
So I should check that out also.
</p>

<p>
Prot: Yeah, you can check it. It's not configurable, like it
doesn't give you too many options. But the point is that for
this simple case, at least for the tests, I find it useful
because I don't want to have like a railroad of a function
name, right? So I just want to be looking at something that I
can understand. And basically, the prefix of the test is
just there for it to have a prefix. And then I know what the
function I am testing is.
</p></li>

<li><span class="audio-time" data-start="3507.786" data-stop="3525.222">58:27</span>: <b>Bisecting config in multiple files</b>:
Sacha: I had a quick question about the config. So you
have, in addition to your modules, you also have&hellip;
Your Emacs's configuration is also split up
into multiple files.
How do you bisect these things when you're tracking down the bug?</li>

<li><p>
<span class="audio-time" data-start="3526.908" data-stop="3989.520">58:46</span>: <b>"I don't write bugs."</b>:
Prot: I don't write bugs. No, no, no, of course, I'm kidding.
</p>

<p>
Sacha: That's going to go in the quotes.
Okay, I don't write bugs.
I write a lot of bugs.
That's going to go to the blog post.
It's going to be very large.
So you never have to use bug-hunter because you just
don't write bugs in the first place. Bravo. Good for you.
</p>

<p>
Prot: Why didn't people think about that?
Now, of course, I'm kidding.
So the way it works is that they are actually
standalone packages. So there is a distinction, actually,
in my configuration. So there are the modules, which is the
configuration blocks, what would be done with. And then
there are the libraries, which are actually packages, like
I could just publish them right now. For example, for the
mode line, there is prot-mode-line. That could be a package
tomorrow, no problem. So if there is a bug there, I will go and
deal with it the way I would deal with any package, like
edebug, toggle-debug-on-error, whatever it is that I am
doing. So there never is a scenario where the code is in all
sorts of places, scattered across the file, and then, of
course, it's very difficult to track it.
</p>

<p>
Sacha: But for your config, if it's in multiple files
and you need to bisect it&hellip; Bisecting can get you to
this load-file over here, this require over here
is where things break down, but then you have to&hellip;
okay, I want to load everything above that point and then
bisect into the thing, which is slightly more annoying.
</p>

<p>
Prot: In practice, it's not difficult, because the way I
</p>

<p>
Sacha: I don't know. How does that work?
</p>

<p>
Prot: load my packages, so in the modules themselves. So I have
this macro, which has a condition case in it. Of course,
usePackage has the same, but with usePackage, you have to
have everything as a package, whereas what I have here is
even if it's not a package. So condition case, and basically
if there is an error, it tells me where the error is, and then I
can find it very easily. I have never had a scenario (of course I was joking,
but actually I'm serious)&hellip; I've never had a scenario where
I was confused as to what was happening. It was always very
easy to find the error. If it's a bug&hellip; Yeah.
</p>

<p>
Sacha: Errors are fairly straightforward
because it complains about it,
but when it runs but it just produces
the wrong behavior eventually,
then that's the annoying part
that I've been using bug hunter for.
</p>

<p>
Prot: The only scenario I think now that I had an
issue like that was with the mode line, actually. Because
with the mode line, if you give it like a wrong face or
something, I don't remember, it will print like several
messages for everything that changes on the mode line. So
you will get like, well, invalid face, and there will be
like, in square brackets, 100 times of this message. So
That's the sort of thing that indeed is more tricky, but that
was not because of my code. It was because of one small tweak
that affects the mode line, and then it was about figuring
out what the error is there, what's the bug there. But if you
have the configuration split up in ways that are logical or
thematic, if you want, whatever bug is always in one spot. It
won't cut between files. So for example i have a module
which is theme in the wider set but the theme also includes
fonts. because fonts are, in Emacs terms, part of faces,
themes deal with faces, that sort of thing. So whenever it's
something related to appearance, I know that it's in the
theme. It cannot be somewhere else because of how I have
written it. Of course, depending on how you split things up,
you will end up in a scenario where you have bugs that go
across files. For example, a common one is where people will
have, for example, evil mode, right? And then they will load
everything, and then they will have a separate
configuration module, which is for key bindings. And
basically, that's a disaster, because whenever there is
some problem, you don't know which key binding relates to
which package, and you are always in a state that it's hard to
predict.
And basically, you have to do every key binding with eval
after load, this package, this key binding kind of thing.
</p>

<p>
Sacha: Oh, that's going to be fun.
I do have a bunch of key bindings in my file,
so I'll just have to see how that all gets organized.
</p>

<p>
Prot: If you have them, organize them by package. Define them
close to the context. Okay.
</p>

<p>
Sacha: That's actually mostly what I've been doing,
mostly because I think of it,
I think of the key binding
when I'm adding the package to my config,
so it's right there.
I just realized I could probably just copy
the top of my config file with requires or whatever
to a setup file,
which bug-hunter can then load. So I can still probably use
</p>

<p>
Prot: Okay, good.
</p>

<p>
Sacha: bug-hunter with that. Anyway, thank you so much.
</p>

<p>
Prot: Yeah, sure. I just wanted to ask the last thing.
What is the kind of bug that you have encountered?
What kind of bugs are we talking about here?
</p>

<p>
Sacha: Recently, in my shifting of everything to the new system,
I also happened to realize that I had updated my Emacs
and then stuff wasn't highlighting in the mini buffer.
I eventually found out that it was because I needed
to upgrade certain packages.
But in the meantime, I was like, what do you mean?
Okay, emacs -Q, sometimes it's working,
sometimes it's not working.
Okay, let's start narrowing it down.
And that was fun.
The other thing that I recently had to bisect was:
I was exporting my really large config
after having split things up into different modules.
One of the lines was causing it to go into like a
debugging thing, but it would not tell me what
it actually debugged. You know, the backtrace would just
not happen. So then I actually had to narrow to region
and then export the specific sections of my file until I
narrowed it down to, okay, my defvar custom link needs
fixing. So I do this kind of bisection a lot.
Ideally, whenever I can, I like to be able to
just write an assertion
so that Emacs can do the work of narrowing down
when this happens but sometimes it's just,
you know, you gotta pick your range
and then execute the thing and see what happens.
So I'm always looking for tools
because I write a lot of bugs.
I'm sure by the time I see you again,
it may be either next week or next next week,
I will have more bugs to share
and more things to learn from.
But this is very helpful
and I am looking forward to updating you
once I get all of the stuff checked off my to-do list.
</p>

<p>
Prot: Very good. Let me know how it goes.
</p>

<p>
Sacha: Yeah, yeah, awesome. Thank you so much.
</p>

<p>
Prot: And for the live streams, we see how it goes. Yeah.
You will tell me. Yeah.
</p>

<p>
Sacha: And it's okay to post this recording if you want to?
</p>

<p>
Prot: Whatever you want. Whatever you want.
</p>

<p>
Sacha: Awesome, all right, see you around.
</p>

<p>
Prot: Take care, Sacha. Bye bye.
</p></li>
</ul>


</details>
</div>
</div>
<div id="outline-container-projects-experiment-with-learning-from-prot-yayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp-ideas-for-next-steps" class="outline-3">
<h3 id="projects-experiment-with-learning-from-prot-yayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp-ideas-for-next-steps">Ideas for next steps</h3>
<div class="outline-text-3" id="text-projects-experiment-with-learning-from-prot-yayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp-ideas-for-next-steps">
<p>
Oh, do I ever have a lot of ideas to follow up on. =) But I'm making myself get used to writing them down so that I can post these notes instead of trying to squeeze in just one more tweak&hellip; Anyway, plenty to explore!
</p>

<ul class="org-ul">
<li class="on"><span class="task-done">&#x2611;</span> Add chapters to video</li>
<li class="on"><span class="task-done">&#x2611;</span> Edit transcript - rough</li>
<li class="on"><span class="task-done">&#x2611;</span> combine multiple captions</li>
<li class="on"><span class="task-done">&#x2611;</span> Post the video</li>
<li class="on"><span class="task-done">&#x2611;</span> Post notes (this one!)</li>
<li class="on"><span class="task-done">&#x2611;</span> Schedule next session and open it up</li>
<li class="on"><span class="task-done">&#x2611;</span> Try Internet Archive</li>
<li class="on"><span class="task-done">&#x2611;</span> Combine transcripts and use speaker tags; style the output</li>
<li class="trans"><span class="task-in-progress">[-]</span> Redact part of the video
<ul class="org-ul">
<li class="off"><span class="task-todo">&#x2610;</span> Write about compile-media updates</li>
<li class="on"><span class="task-done">&#x2611;</span> Get my GPU working for ffmpeg</li>
<li class="on"><span class="task-done">&#x2611;</span> Get my GPU working for whisperx</li>
<li class="off"><span class="task-todo">&#x2610;</span> Select the coordinates from Emacs</li>
</ul></li>

<li>Streaming and video
<ul class="org-ul">
<li class="off"><span class="task-todo">&#x2610;</span> Write about two-speaker workflow</li>
<li class="on"><span class="task-done">&#x2611;</span> Make sure vtime link type works with this player</li>
<li class="on"><span class="task-done">&#x2611;</span> Figure out a workflow for adding intros or wrap-ups - cancelled, not needed for livestream</li>
<li class="on"><span class="task-done">&#x2611;</span> Display YouTube chat in Emacs</li>
<li class="on"><span class="task-done">&#x2611;</span> Find a way to send text to the YouTube chat</li>
<li class="off"><span class="task-todo">&#x2610;</span> Extract part of a video as a clip</li>
<li class="trans"><span class="task-in-progress">[-]</span> Make a global minor mode for doing things publicly (<a href="https://sachachua.com/dotemacs#streaming-mode-for-streaming">Mode for streaming</a>)
<ul class="org-ul">
<li class="on"><span class="task-done">&#x2611;</span> Change theme</li>
<li class="on"><span class="task-done">&#x2611;</span> Turn on line numbers</li>
<li class="on"><span class="task-done">&#x2611;</span> Turn on keycast</li>
<li class="on"><span class="task-done">&#x2611;</span> Change agenda files and inbox</li>
<li class="off"><span class="task-todo">&#x2610;</span> Save narration</li>
<li class="on"><span class="task-done">&#x2611;</span> Consider consult previews, marginalia</li>
</ul></li>
<li class="off"><span class="task-todo">&#x2610;</span> Make a todo link type that creates the TODO item and publishes a link to it when finished</li>
<li class="on"><span class="task-done">&#x2611;</span> Make public-ish Org files</li>
<li class="off"><span class="task-todo">&#x2610;</span> Send a URL to the stream as QR and text chat</li>
<li class="on"><span class="task-done">&#x2611;</span> Send text to the stream</li>
<li class="off"><span class="task-todo">&#x2610;</span> Calculate timestamp offsets into a recording</li>
<li class="on"><span class="task-done">&#x2611;</span> Quickly log times and notes to current task and stream log</li>
<li class="off"><span class="task-todo">&#x2610;</span> Make a nicer combined transcript PDF for review</li>
</ul></li>
<li class="trans"><span class="task-in-progress">[-]</span> Reorganize my configuration
<ul class="org-ul">
<li class="on"><span class="task-done">&#x2611;</span> Finish extracting the rest of my functions</li>
<li class="on"><span class="task-done">&#x2611;</span> Rename my- to sacha-</li>
<li class="on"><span class="task-done">&#x2611;</span> Write about my org-babel-post-tangle-hook</li>
<li class="on"><span class="task-done">&#x2611;</span> Try out substitute, especially with the replace-regexp-as-diff idea</li>
<li class="on"><span class="task-done">&#x2611;</span> Define function aliases - cancelled, didn't need them</li>
<li class="off"><span class="task-todo">&#x2610;</span> Try shorthands</li>
<li class="on"><span class="task-done">&#x2611;</span> Try defvar-keymap :prefix</li>
<li class="off"><span class="task-todo">&#x2610;</span> Practise using docstrings to declare intent</li>
<li class="off"><span class="task-todo">&#x2610;</span> Convert my custom link preview code</li>
<li class="on"><span class="task-done">&#x2611;</span> Replace C-z</li>
</ul></li>
<li class="off"><span class="task-todo">&#x2610;</span> Testing
<ul class="org-ul">
<li class="off"><span class="task-todo">&#x2610;</span> Set up a Makefile snippet for tests</li>
<li class="off"><span class="task-todo">&#x2610;</span> Settle into a naming convention for tests</li>
<li class="off"><span class="task-todo">&#x2610;</span> Practise mocking up functions in order to test things that are more interactive</li>
<li class="off"><span class="task-todo">&#x2610;</span> Make code coverage more habitual</li>
</ul></li>
<li class="on"><span class="task-done">&#x2611;</span> Finish reading Prot's config and process my notes</li>
<li class="off"><span class="task-todo">&#x2610;</span> Set up crdt just in case</li>
<li class="off"><span class="task-todo">&#x2610;</span> Play with the idea of XP (experience points) as a reward for postponing a task and then picking it up again</li>
<li class="off"><span class="task-todo">&#x2610;</span> Write about deleting windows vertically; consider beframe and shortcuts to arrange frames</li>
<li class="on"><span class="task-done">&#x2611;</span> Pop up and dismiss my notes</li>
<li class="off"><span class="task-todo">&#x2610;</span> Make my notes contextual</li>
</ul>


<p>
Want to join us on Thu April 16 10:30 AM America/Toronto, 5:30 PM Europe/Athens? Check out <a href="https://youtube.com/live/djE_pVlgDHg?feature=share">the livestream we've penciled in for April 16</a> - come join us!
</p>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/04/yayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp/index.org">View Org source for this post</a></div>
<p>You can <a href="https://social.sachachua.com/@sacha/statuses/01KNBEKNBFP9NNX9MSPCFFZ05Z" 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%2F04%2Fyayemacs-10-emacs-coaching-with-prot-packaging-emacs-lisp%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></description>
		</item>
	</channel>
</rss>