<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/assets/atom.xsl" type="text/xsl"?><feed
	xmlns="http://www.w3.org/2005/Atom"
	xmlns:thr="http://purl.org/syndication/thread/1.0"
	xml:lang="en-US"
	><title>Sacha Chua - category - emacs</title>
	<subtitle>Emacs, sketches, and life</subtitle>
	<link rel="self" type="application/atom+xml" href="https://sachachua.com/blog/category/emacs/feed/atom/index.xml" />
  <link rel="alternate" type="text/html" href="https://sachachua.com/blog/category/emacs" />
  <id>https://sachachua.com/blog/category/emacs/feed/atom/index.xml</id>
  <generator uri="https://11ty.dev">11ty</generator>
	<updated>2026-06-01T19:28:55Z</updated>
<entry>
		<title type="html">Transcript of chat with Matei Candea about Emacs and AI</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/06/transcript-of-chat-with-matei-candea-about-emacs-and-ai/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-06-01T19:28:55Z</updated>
    <published>2026-06-01T19:28:55Z</published>
    <category term="emacs" />
<category term="ai" />
		<id>https://sachachua.com/blog/2026/06/transcript-of-chat-with-matei-candea-about-emacs-and-ai/</id>
		<content type="html"><![CDATA[<p>
This is an edited transcript of my chat with Matei Candea, an anthropologist who is curious about the Emacs community and AI. Sharing it here with permission so that it becomes a thing I can refer to and in case it sparks further conversations. AI is a bit of a contentious topic, so I hope people will be patient and kind as we figure things out!
</p>

<p>
Related links:
</p>

<ul class="org-ul">
<li><a href="https://www.cam.ac.uk/stories/ai-and-scholarship-manifesto">AI and scholarship: a manifesto | University of Cambridge</a></li>
<li><a href="https://batsov.com/articles/2026/03/09/emacs-and-vim-in-the-age-of-ai/">Emacs and Vim in the Age of AI | (think)</a></li>
<li><a href="https://sockpuppet.org/blog/2026/05/12/emacsification/">The Emacsification of Software — Quarrelsome</a> (<a href="https://news.ycombinator.com/item?id=48118727">HN</a>)</li>
<li><a href="https://www.winestockwebdesign.com/Essays/Lisp_Curse.html">The Lisp Curse</a></li>
<li><a href="https://emacsconf.org/">EmacsConf</a></li>
<li><a href="https://www.emacswiki.org/emacs/Usergroups">EmacsWiki: Usergroups</a></li>
<li><a href="https://emacslife.com/calendar/">Emacs calendar</a></li>
</ul>

<details class="code-details"><summary>Expand for the transcript</summary>
<p>
</p><div class="full-transcript"><p></p><div class="transcript-heading">Matei is an anthropologist; ethnographic research</div><p></p><span class="audio-time caption" data-speaker="Matei" data-start="129.597000" data-stop="132.423000"><strong class="speaker-name">Matei:</strong>  I'm an anthropologist.</span> <span class="audio-time caption" data-speaker="Matei" data-start="132.443000" data-stop="134.427000">What I actually</span> <span class="audio-time caption" data-speaker="Matei" data-start="134.487000" data-stop="137.293000">do for work is to do <b>ethnographic research</b>, to</span> <span class="audio-time caption" data-speaker="Matei" data-start="137.333000" data-stop="137.955000">interview people.</span> <span class="audio-time caption" data-speaker="Matei" data-start="138.095000" data-stop="140.240000">I've written a lot about scientific communities.</span> <span class="audio-time caption" data-speaker="Matei" data-start="140.260000" data-stop="143.286000">For instance, I've written articles on</span> <span class="audio-time caption" data-speaker="Matei" data-start="143.823000" data-stop="146.084000">behavioral scientists who work with animals</span> <span class="audio-time caption" data-speaker="Matei" data-start="146.085000" data-stop="147.333000">and how they think about knowledge</span> <span class="audio-time caption" data-speaker="Matei" data-start="147.334000" data-stop="148.500000">and technology and stuff.</span> <span class="audio-time caption" data-speaker="Matei" data-start="148.501000" data-stop="151.784000">Completely independently of that,</span> <span class="audio-time caption" data-speaker="Matei" data-start="151.785000" data-stop="153.167000">I kind of got into Emacs</span> <span class="audio-time caption" data-speaker="Matei" data-start="153.168000" data-stop="154.234000">and got really excited.</span> <span class="audio-time caption" data-speaker="Matei" data-start="154.235000" data-stop="156.150000">About four years later, I was, like,</span> <span class="audio-time caption" data-speaker="Matei" data-start="156.151000" data-stop="158.950000">wait a minute, why don't I do an ethnography</span> <span class="audio-time caption" data-speaker="Matei" data-start="158.951000" data-stop="160.768000">of Emacs as a community?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="160.748000" data-stop="163.392000"><strong class="speaker-name">Sacha:</strong>  Really cool people.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="163.393000" data-stop="164.193000"><strong class="speaker-name">Matei:</strong>  Right? Really cool people.</span> <p></p><div class="transcript-heading">Curious about Emacs as a community in the time of AI</div><p></p><span class="audio-time caption" data-speaker="Matei" data-start="164.194000" data-stop="166.036000"><strong class="speaker-name">Matei:</strong> I think what I'm really saying is</span> <span class="audio-time caption" data-speaker="Matei" data-start="166.037000" data-stop="169.904000"><b>Emacs as a community in the time of AI</b> and how that's</span> <span class="audio-time caption" data-speaker="Matei" data-start="169.985000" data-stop="172.609000">shifting or not shifting how people are using it,</span> <span class="audio-time caption" data-speaker="Matei" data-start="172.669000" data-stop="177.999000">and what it does. I've spoken to Prot on</span> <span class="audio-time caption" data-speaker="Matei" data-start="178.059000" data-stop="180.363000">Monday. That was the first interview I did, and we</span> <span class="audio-time caption" data-speaker="Matei" data-start="180.383000" data-stop="183.128000">had a great chat. I basically</span> <span class="audio-time caption" data-speaker="Matei" data-start="183.901000" data-stop="186.345000">asked him how he got into Emacs and what</span> <span class="audio-time caption" data-speaker="Matei" data-start="186.405000" data-stop="187.988000">it meant to him and what his relationship is to</span> <span class="audio-time caption" data-speaker="Matei" data-start="188.028000" data-stop="189.391000">the community and stuff,</span> <span class="audio-time caption" data-speaker="Matei" data-start="189.831000" data-stop="191.995000">and then a bit about AI and then a bit about what</span> <span class="audio-time caption" data-speaker="Matei" data-start="192.676000" data-stop="195.181000">he feels are the interactions between the two.</span> <span class="audio-time caption" data-speaker="Matei" data-start="195.561000" data-stop="198.486000">That's broadly</span> <span class="audio-time caption" data-speaker="Matei" data-start="198.526000" data-stop="200.649000">speaking what I would be interested in doing with you.</span> <span class="audio-time caption" data-speaker="Matei" data-start="200.650000" data-stop="207.462000">If you think there's a broader conversation,</span> <span class="audio-time caption" data-speaker="Matei" data-start="210.594000" data-stop="213.197000">we could live stream and have an actual</span> <span class="audio-time caption" data-speaker="Matei" data-start="213.237000" data-stop="215.219000">chat about how people use Emacs.</span> <span class="audio-time caption" data-speaker="Matei" data-start="215.499000" data-stop="217.001000">By the way, I'm very happy also to tell you</span> <span class="audio-time caption" data-speaker="Matei" data-start="217.041000" data-stop="225.630000">where my own trajectory was that I got into Emacs</span> <span class="audio-time caption" data-speaker="Matei" data-start="226.671000" data-stop="230.635000">weirdly and randomly about a year before ChatGPT</span> <span class="audio-time caption" data-speaker="Matei" data-start="230.675000" data-stop="231.656000">really hit the mainstream.</span> <span class="audio-time caption" data-speaker="Matei" data-start="233.038000" data-stop="236.942000">The thing that you read by me was written because</span> <span class="audio-time caption" data-speaker="Matei" data-start="237.361000" data-stop="239.725000">me and Ella together were</span> <span class="audio-time caption" data-speaker="Matei" data-start="240.145000" data-stop="242.409000">trying to figure out Cambridge's response to AI</span> <span class="audio-time caption" data-speaker="Matei" data-start="243.030000" data-stop="243.631000">as a university.</span> <span class="audio-time caption" data-speaker="Matei" data-start="243.651000" data-stop="244.632000">Like, what are we going to do about it?</span> <span class="audio-time caption" data-speaker="Matei" data-start="245.353000" data-stop="246.515000">If I'm going to be</span> <span class="audio-time caption" data-speaker="Matei" data-start="246.555000" data-stop="247.977000">talking about that, I need to know how it works.</span> <span class="audio-time caption" data-speaker="Matei" data-start="248.278000" data-stop="250.661000">But I don't want to use AI in my own actual work</span> <span class="audio-time caption" data-speaker="Matei" data-start="250.801000" data-stop="253.425000">or in my teaching, because I think it's a bit dodgy.</span> <span class="audio-time caption" data-speaker="Matei" data-start="253.466000" data-stop="254.447000">I don't really like it.</span> <span class="audio-time caption" data-speaker="Matei" data-start="254.467000" data-stop="256.329000">Why don't I just do it with this kind of side</span> <span class="audio-time caption" data-speaker="Matei" data-start="256.690000" data-stop="258.974000">project I've got, which is learning Emacs, right?</span> <span class="audio-time caption" data-speaker="Matei" data-start="260.216000" data-stop="262.339000">And the weird paradoxical thing was that</span> <span class="audio-time caption" data-speaker="Matei" data-start="263.011000" data-stop="268.279000">I now basically kind of live in Emacs.</span> <span class="audio-time caption" data-speaker="Matei" data-start="268.681000" data-stop="271.784000">My email is mu4e.</span> <span class="audio-time caption" data-speaker="Matei" data-start="272.625000" data-stop="275.769000">If you saw my screen now, the notes are basically</span> <span class="audio-time caption" data-speaker="Matei" data-start="275.789000" data-stop="277.951000">a narrowed Org buffer with questions.</span> <span class="audio-time caption" data-speaker="Matei" data-start="278.011000" data-stop="280.113000">Everything's email.</span> <span class="audio-time caption" data-speaker="Matei" data-start="280.914000" data-stop="283.617000">But I don't think I could have got there that</span> <span class="audio-time caption" data-speaker="Matei" data-start="283.697000" data-stop="285.158000">fast if it hadn't been for the fact that I</span> <span class="audio-time caption" data-speaker="Matei" data-start="285.199000" data-stop="287.961000">started asking ChatGPT, like, "Oh, this isn't</span> <span class="audio-time caption" data-speaker="Matei" data-start="288.002000" data-stop="288.362000">working.</span> <span class="audio-time caption" data-speaker="Matei" data-start="288.902000" data-stop="291.365000">Can you just write me a defun that does this?"</span> <span class="audio-time caption" data-speaker="Matei" data-start="293.167000" data-stop="294.568000">I'm not completely vibe coding.</span> <span class="audio-time caption" data-speaker="Matei" data-start="295.109000" data-stop="297.872000">I'm trying to learn Elisp at the same time, but</span> <span class="audio-time caption" data-speaker="Matei" data-start="297.912000" data-stop="300.308000">I'm in this weird position where...</span> <span class="audio-time caption" data-speaker="Matei" data-start="300.309000" data-stop="303.978000">Anyway, this is why for me it raised these questions of:</span> <span class="audio-time caption" data-speaker="Matei" data-start="304.859000" data-stop="307.182000">what does learning Emacs in the time of AI mean?</span> <span class="audio-time caption" data-speaker="Matei" data-start="308.263000" data-stop="311.777000">As you can probably gather from the manifesto,</span> <span class="audio-time caption" data-speaker="Matei" data-start="311.778000" data-stop="313.528000">I'm not pushing it at all.</span> <span class="audio-time caption" data-speaker="Matei" data-start="313.548000" data-stop="316.011000">I'm really ambivalent about the use of AI.</span> <span class="audio-time caption" data-speaker="Matei" data-start="322.394000" data-stop="329.284000">Anyway, would you be happy to do an interview like I did</span> <span class="audio-time caption" data-speaker="Matei" data-start="329.324000" data-stop="329.685000">with Prot?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="330.406000" data-stop="331.968000"><strong class="speaker-name">Sacha:</strong>  Yeah, we can certainly do that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="332.148000" data-stop="335.653000">In addition to whatever I can share from my</span> <span class="audio-time caption" data-speaker="Sacha" data-start="335.713000" data-stop="338.477000">personal experiences, I think your interest in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="338.517000" data-stop="341.061000">understanding and describing the community and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="341.101000" data-stop="344.706000">the culture and how it's interacting with this AI</span> <span class="audio-time caption" data-speaker="Sacha" data-start="344.766000" data-stop="348.151000">thing, I think it'll offer a perspective that is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="348.231000" data-stop="350.815000">different from what you usually see,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="350.795000" data-stop="356.523000">because Emacs users have had this long tradition</span> <span class="audio-time caption" data-speaker="Sacha" data-start="356.784000" data-stop="359.908000">of fiddling with things and making it really</span> <span class="audio-time caption" data-speaker="Sacha" data-start="360.008000" data-stop="363.173000">malleable and fitting it to them and figuring</span> <span class="audio-time caption" data-speaker="Sacha" data-start="363.193000" data-stop="364.315000">this out in dialogue.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="364.575000" data-stop="367.800000">It's figuring out in dialogue with themselves as</span> <span class="audio-time caption" data-speaker="Sacha" data-start="367.840000" data-stop="369.622000">they figure out their workflows, with the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="369.682000" data-stop="371.605000">software as they learn from the code, with other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="371.665000" data-stop="374.629000">people, with resources on the internet not necessarily</span> <span class="audio-time caption" data-speaker="Sacha" data-start="374.669000" data-stop="375.831000">attached to specific people.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="376.332000" data-stop="377.814000">That's got a really long history.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="378.935000" data-stop="382.100000">It's really interesting to see how AI both</span> <span class="audio-time caption" data-speaker="Sacha" data-start="382.320000" data-stop="385.344000">has plus sides and minus sides in this whole mix.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="386.686000" data-stop="388.869000">It definitely, I think, will offer some</span> <span class="audio-time caption" data-speaker="Sacha" data-start="388.949000" data-stop="392.053000">insight that you won't hear with the frothy AI hype</span> <span class="audio-time caption" data-speaker="Sacha" data-start="392.674000" data-stop="395.758000">that other communities have.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="395.778000" data-stop="396.900000">It's all very interesting.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="397.133000" data-stop="397.596000"><strong class="speaker-name">Matei:</strong>  Amazing.</span> <span class="audio-time caption" data-speaker="Matei" data-start="398.824000" data-stop="400.998000">Let's start with a general kind of</span> <span class="audio-time caption" data-speaker="Matei" data-start="401.038000" data-stop="401.421000">interview thing.</span> <p></p><div class="transcript-heading">How did I first get into Emacs</div><p></p><span class="audio-time caption" data-speaker="Matei" data-start="401.441000" data-stop="403.937000"><strong class="speaker-name">Matei:</strong> <b>How did you first get into Emacs?</b></span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="405.048000" data-stop="406.710000"><strong class="speaker-name">Sacha:</strong>  I was going through all the books</span> <span class="audio-time caption" data-speaker="Sacha" data-start="406.770000" data-stop="409.214000">in my university library about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="409.254000" data-stop="409.955000">computer science.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="410.295000" data-stop="411.817000">One of them was Unix Power Tools.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="412.218000" data-stop="414.461000">I was like, there's this chapter on Emacs,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="414.501000" data-stop="416.363000">and it mentions Tetris and other things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="416.423000" data-stop="418.586000">What is going on here?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="418.606000" data-stop="419.047000">I tried it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="420.068000" data-stop="420.769000">It was great.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="421.150000" data-stop="422.091000">I liked it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="422.251000" data-stop="425.596000">Then in fourth year or so, my screen stopped</span> <span class="audio-time caption" data-speaker="Sacha" data-start="425.636000" data-stop="425.996000">working.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="427.598000" data-stop="428.640000">I didn't want to replace it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="429.080000" data-stop="430.843000">But there was Emacspeak.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="431.243000" data-stop="433.486000">I was amazed.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="438.204000" data-stop="440.988000">Lots of people had</span> <span class="audio-time caption" data-speaker="Sacha" data-start="441.408000" data-stop="443.872000">put together Emacs so I could use the computer</span> <span class="audio-time caption" data-speaker="Sacha" data-start="444.212000" data-stop="445.193000">with a broken screen.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="446.575000" data-stop="448.037000">I could still read it periodically,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="448.197000" data-stop="450.160000">if I tilted it and kind of looked at the low</span> <span class="audio-time caption" data-speaker="Sacha" data-start="450.180000" data-stop="453.224000">contrast thing… The speech synthesis</span> <span class="audio-time caption" data-speaker="Sacha" data-start="453.264000" data-stop="454.105000">worked just fine.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="454.185000" data-stop="455.967000">I'm going to program this way.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="456.388000" data-stop="459.572000">I'll plug into a monitor when I'm back in my room.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="459.632000" data-stop="462.536000">But if I'm out and about, I have this other way</span> <span class="audio-time caption" data-speaker="Sacha" data-start="462.556000" data-stop="463.557000">to do it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="463.537000" data-stop="466.760000">Something that maybe most programs would not have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="467.441000" data-stop="469.443000">anticipated, but because somebody had built it for themselves,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="470.304000" data-stop="471.345000">it was something I could use.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="471.806000" data-stop="474.389000">Beffore I got into Emacsspeak, I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="474.629000" data-stop="477.552000">got into Planner Mode because I was a university</span> <span class="audio-time caption" data-speaker="Sacha" data-start="477.592000" data-stop="478.913000">student and I was taking notes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="479.334000" data-stop="481.296000">Planner Mode was an easy way for me to keep</span> <span class="audio-time caption" data-speaker="Sacha" data-start="481.376000" data-stop="482.237000">track of tasks.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="482.477000" data-stop="485.220000">It was more flexible than other to-do managers.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="485.320000" data-stop="489.625000">It's one of the packages that was popular before Org Mode.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="490.746000" data-stop="491.687000"><strong class="speaker-name">Matei:</strong>  Right, right.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="492.258000" data-stop="495.342000"><strong class="speaker-name">Sacha:</strong>  I started using that to write my blog.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="495.983000" data-stop="498.928000">Blogs had just been invented around then.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="499.048000" data-stop="501.591000">I was figuring out, how do I export RSS</span> <span class="audio-time caption" data-speaker="Sacha" data-start="501.672000" data-stop="502.252000">out of this?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="502.913000" data-stop="505.817000">I was able to customize it to do that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="506.398000" data-stop="507.440000">I liked it so much</span> <span class="audio-time caption" data-speaker="Sacha" data-start="507.540000" data-stop="510.003000">I emailed John Wiegley, who had created Planner Mode.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="510.024000" data-stop="511.946000">I said, hey, I can help you fix bugs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="512.948000" data-stop="517.354000">He said, great, you're the new maintainer now.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="517.469000" data-stop="520.772000">Which was actually very good for me because I was</span> <span class="audio-time caption" data-speaker="Sacha" data-start="520.871000" data-stop="523.695000">a university student in the Philippines, and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="523.775000" data-stop="525.877000">Philippines, and normally we don't get to work on anything</span> <span class="audio-time caption" data-speaker="Sacha" data-start="525.917000" data-stop="526.497000">really cool.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="526.537000" data-stop="529.400000">Suddenly I was in this global community of people.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="529.740000" data-stop="530.601000">There was a mailing list.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="530.621000" data-stop="534.104000">People would send in questions or feature requests.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="534.124000" data-stop="536.186000">I would share the things that I was working on.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="536.687000" data-stop="538.208000">They were very, very patient with me.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="538.268000" data-stop="540.550000">Like that one time, one of my changes</span> <span class="audio-time caption" data-speaker="Sacha" data-start="540.851000" data-stop="543.193000">accidentally deleted somebody's notes and they</span> <span class="audio-time caption" data-speaker="Sacha" data-start="543.213000" data-stop="545.755000">were still nice to me afterwards.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="546.325000" data-stop="548.730000">The community has always been part of how I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="548.770000" data-stop="550.715000">experience Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="550.995000" data-stop="553.381000">Learning in public has also always been part</span> <span class="audio-time caption" data-speaker="Sacha" data-start="553.461000" data-stop="556.467000">of how I've been figuring out what I can do with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="556.568000" data-stop="559.614000">it and changing it to fit my needs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="559.895000" data-stop="562.381000">It's very idiosyncratic as they are sometimes,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="562.942000" data-stop="565.247000">has also always been part of my experience of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="565.327000" data-stop="565.768000">Emacs.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="566.086000" data-stop="569.790000"><strong class="speaker-name">Matei:</strong>  When did this start?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="570.111000" data-stop="578.200000"><strong class="speaker-name">Sacha:</strong>  Very shortly after I started Emacs, I started</span> <span class="audio-time caption" data-speaker="Sacha" data-start="578.241000" data-stop="579.001000">blogging with it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="579.302000" data-stop="581.585000">My first blog post from that is 2001.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="582.526000" data-stop="582.726000"><strong class="speaker-name">Matei:</strong>  Right.</span> <span class="audio-time caption" data-speaker="Matei" data-start="583.327000" data-stop="585.289000">You were studying computer science?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="585.309000" data-stop="587.031000"><strong class="speaker-name">Sacha:</strong>  I was studying computer science, yes.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="587.720000" data-stop="590.063000"><strong class="speaker-name">Matei:</strong>  Are you a computer scientist now?</span> <span class="audio-time caption" data-speaker="Matei" data-start="590.303000" data-stop="592.605000">What do you do when you're not doing Emacs?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="592.625000" data-stop="594.507000"><strong class="speaker-name">Sacha:</strong>  Most of the time, I'm still focused</span> <span class="audio-time caption" data-speaker="Sacha" data-start="594.567000" data-stop="596.450000">on full-time parenting, which is why I'm going</span> <span class="audio-time caption" data-speaker="Sacha" data-start="596.510000" data-stop="598.512000">over to the freezer now to remember to put yogurt</span> <span class="audio-time caption" data-speaker="Sacha" data-start="598.572000" data-stop="600.053000">in the freezer.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="601.175000" data-stop="603.978000">I do a tiny, tiny, tiny bit of consulting, but</span> <span class="audio-time caption" data-speaker="Sacha" data-start="604.458000" data-stop="607.722000">consulting, but for the last 10 years or so, I've just been</span> <span class="audio-time caption" data-speaker="Sacha" data-start="607.742000" data-stop="610.605000">focused on parenting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="610.585000" data-stop="612.768000">Playing with Emacs and being in touch with the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="612.788000" data-stop="614.650000">Emacs community has been one of the ways that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="614.670000" data-stop="615.932000">I've kind of kept sane.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="616.813000" data-stop="621.878000">I've enjoyed the intellectual puzzles of:</span> <span class="audio-time caption" data-speaker="Sacha" data-start="621.879000" data-stop="622.805000">I have this thing that I want to do,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="622.806000" data-stop="624.543000">how do I do it with code</span> <span class="audio-time caption" data-speaker="Sacha" data-start="625.584000" data-stop="628.487000">in ways that I can fit into five minutes here,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="628.488000" data-stop="630.210000">ten minutes there of my life.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="631.151000" data-stop="633.454000"><strong class="speaker-name">Matei:</strong>  Do you do any other coding or just Elisp?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="633.957000" data-stop="636.800000"><strong class="speaker-name">Sacha:</strong>  JavaScript, Python on occasion.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="638.822000" data-stop="641.225000">Some of my consulting involves making little</span> <span class="audio-time caption" data-speaker="Sacha" data-start="641.265000" data-stop="644.448000">JavaScript prototypes for ideas that my client</span> <span class="audio-time caption" data-speaker="Sacha" data-start="644.488000" data-stop="648.392000">has, but it's really just an hour a week, maybe less.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="649.293000" data-stop="652.537000">But for fun, I still write a bit of JavaScript and Python.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="653.578000" data-stop="655.380000">Emacs Lisp, however, is what I usually write</span> <span class="audio-time caption" data-speaker="Sacha" data-start="655.440000" data-stop="657.102000">because it's so much easier to do things when</span> <span class="audio-time caption" data-speaker="Sacha" data-start="657.122000" data-stop="658.403000">you've got the full editor with you.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="659.124000" data-stop="662.007000"><strong class="speaker-name">Matei:</strong>  Yes, that makes sense.</span> <span class="audio-time caption" data-speaker="Matei" data-start="662.425000" data-stop="664.352000">I've got a million questions, but I'm going to</span> <span class="audio-time caption" data-speaker="Matei" data-start="664.372000" data-stop="665.215000">try and do them in order.</span> <span class="audio-time caption" data-speaker="Matei" data-start="666.199000" data-stop="667.705000">You've said a little bit about this already, but</span> <p></p><div class="transcript-heading">What do you love about Emacs?</div><p></p><span class="audio-time caption" data-speaker="Matei" data-start="667.745000" data-stop="672.402000"><strong class="speaker-name">Matei:</strong> <b>what do you love about Emacs?</b></span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="672.668000" data-stop="674.230000"><strong class="speaker-name">Sacha:</strong>  You can come up with a crazy idea</span> <span class="audio-time caption" data-speaker="Sacha" data-start="674.851000" data-stop="676.073000">and you can actually make it happen.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="676.674000" data-stop="679.699000">So, for example, I've been doing a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="679.739000" data-stop="681.721000">lot of conversations,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="681.722000" data-stop="684.847000">interviewing people or working with my sister's interviews.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="684.907000" data-stop="687.090000">I always like turning these into text</span> <span class="audio-time caption" data-speaker="Sacha" data-start="687.671000" data-stop="689.353000">because text is a lot more searchable.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="689.354000" data-stop="691.016000">Chapters and things like that too, right,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="691.056000" data-stop="692.799000">so that people can jump to just the part they're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="692.839000" data-stop="693.580000">interested in.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="693.560000" data-stop="697.586000">I don't know how other tools do it, but I love</span> <span class="audio-time caption" data-speaker="Sacha" data-start="697.606000" data-stop="699.950000">the fact that I can modify Org Mode so that I can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="700.010000" data-stop="702.874000">capture timestamps. Wall-clock time is easier for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="702.914000" data-stop="703.455000">me to work with.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="703.695000" data-stop="707.521000">I can say, okay, while I'm typing, I just use</span> <span class="audio-time caption" data-speaker="Sacha" data-start="707.541000" data-stop="710.285000">an abbreviation to put in the timestamp that's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="710.305000" data-stop="712.108000">the current time and my rough notes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="712.488000" data-stop="714.311000">I have another piece of code that translates</span> <span class="audio-time caption" data-speaker="Sacha" data-start="714.351000" data-stop="716.474000">that into offsets from the start of the video</span> <span class="audio-time caption" data-speaker="Sacha" data-start="716.514000" data-stop="718.858000">based on YouTube's live stream or the file name</span> <span class="audio-time caption" data-speaker="Sacha" data-start="718.898000" data-stop="720.360000">of the video.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="720.340000" data-stop="723.424000">Then I can paste that into the subtitle file</span> <span class="audio-time caption" data-speaker="Sacha" data-start="723.785000" data-stop="725.627000">so that it automatically puts the chapters in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="725.667000" data-stop="727.149000">roughly the right places.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="727.169000" data-stop="729.993000">As I come up with little workflow ideas, I can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="730.073000" data-stop="731.555000">actually implement them.</span> <p></p><div class="transcript-heading">Community</div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="731.575000" data-stop="733.458000"><strong class="speaker-name">Sacha:</strong> I also love the <b>community</b> of it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="733.478000" data-stop="736.262000">Looking through the blog posts or as I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="736.302000" data-stop="738.425000">put together Emacs News every week, there's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="738.465000" data-stop="740.628000">always all these interesting examples from people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="740.648000" data-stop="742.911000">who are asking the same questions about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="742.931000" data-stop="744.793000">about "What is it I want to do?" and "How can I do</span> <span class="audio-time caption" data-speaker="Sacha" data-start="744.854000" data-stop="748.879000">it 0.5% better?"</span> <span class="audio-time caption" data-speaker="Sacha" data-start="750.395000" data-stop="752.177000">They write these little functions.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="752.217000" data-stop="754.079000">I'm like, oh, that is a fantastic idea.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="754.159000" data-stop="755.741000">I get to absorb that into my life.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="756.682000" data-stop="759.404000">Because I'm seeing it in the context of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="759.424000" data-stop="761.426000">their blog post or their video, you get</span> <span class="audio-time caption" data-speaker="Sacha" data-start="761.466000" data-stop="764.106000">a glimpse of other people's lives as expressed through code,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="764.730000" data-stop="766.752000">because all of the code is very personal.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="767.232000" data-stop="769.655000">That is one of the things that is good</span> <span class="audio-time caption" data-speaker="Sacha" data-start="769.695000" data-stop="772.638000">about the fact that people are using AI sometimes</span> <span class="audio-time caption" data-speaker="Sacha" data-start="772.698000" data-stop="773.559000">to generate this code.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="773.579000" data-stop="774.580000">They can make things that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="774.560000" data-stop="776.882000">things that punch above their weight.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="776.902000" data-stop="779.404000">A newcomer to Emacs can have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="779.504000" data-stop="781.787000">customized functions that let you fully</span> <span class="audio-time caption" data-speaker="Sacha" data-start="782.167000" data-stop="783.068000">appreciate its power.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="783.548000" data-stop="786.050000">But on the other hand, if the AI is just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="786.130000" data-stop="788.432000">generating this code, you don't get a sense of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="788.473000" data-stop="791.075000">like, where's the blog post this is coming from?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="791.195000" data-stop="794.378000">Or who would I talk to to keep up with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="794.538000" data-stop="796.380000">other crazy ideas they come up with?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="796.400000" data-stop="797.881000">You're limited to just your ideas.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="798.221000" data-stop="799.583000">Then there's the whole thing about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="799.903000" data-stop="801.044000">license-washing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="801.664000" data-stop="803.806000">Most of the people release their code under GPL</span> <span class="audio-time caption" data-speaker="Sacha" data-start="803.846000" data-stop="804.472000">because it's Emacs,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="804.473000" data-stop="807.892000">but the large language models never mention that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="807.912000" data-stop="810.375000">They never say, you also have the right to go and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="810.435000" data-stop="813.239000">share this and modify this and build on top of it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="813.319000" data-stop="815.822000">and contribute back to the community.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="818.946000" data-stop="821.951000">Sometimes it doesn't feel right, the code.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="821.971000" data-stop="824.234000">It doesn't quite get the conventions and the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="824.334000" data-stop="825.255000">idioms yet.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="825.860000" data-stop="827.562000">So the things that I love about Emacs are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="827.602000" data-stop="829.966000">generally the fact that it can fit me like a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="830.026000" data-stop="833.430000">glove and it's got this community of people who</span> <span class="audio-time caption" data-speaker="Sacha" data-start="833.490000" data-stop="837.556000">are also exploring what is possible as crazy as</span> <span class="audio-time caption" data-speaker="Sacha" data-start="837.696000" data-stop="838.857000">ideas sometimes get.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="838.917000" data-stop="841.261000">There's always some way to hack it in.</span> <p></p><div class="transcript-heading">Do you know how big the community is?</div><p></p><span class="audio-time caption" data-speaker="Matei" data-start="842.622000" data-stop="845.286000"><strong class="speaker-name">Matei:</strong>  <p>
<b>Do you know how big the community is?</b></p>
</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="845.941000" data-stop="846.462000"><strong class="speaker-name">Sacha:</strong>  I have no idea.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="847.885000" data-stop="850.769000">We generally feel like it's a lot smaller</span> <span class="audio-time caption" data-speaker="Sacha" data-start="850.770000" data-stop="853.736000">than VS Code and probably a lot smaller than Vim.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="854.698000" data-stop="858.806000">It depends, of course, on if you're talking about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="859.106000" data-stop="862.212000">percentage, it depends also on...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="862.192000" data-stop="864.935000">There's a lot of Clojure developers using it,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="864.955000" data-stop="866.717000">because it's the standard Clojure way of doing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="866.777000" data-stop="869.159000">things, but there are probably a lot fewer Java</span> <span class="audio-time caption" data-speaker="Sacha" data-start="869.199000" data-stop="871.301000">or JavaScript people using it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="871.361000" data-stop="873.624000">because a lot of people are in VS Code instead.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="874.565000" data-stop="877.968000">I used to do Google Analytics tracking on my</span> <span class="audio-time caption" data-speaker="Sacha" data-start="878.008000" data-stop="880.511000">website, but I stripped all of that out because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="881.472000" data-stop="882.793000">cookies and tracking and all of that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="884.715000" data-stop="887.878000">When people ask me how many people read this stuff,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="887.858000" data-stop="891.141000">I have no idea, but I do know that every time I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="891.181000" data-stop="895.225000">look for Emacs News, I'm delighted by the breadth</span> <span class="audio-time caption" data-speaker="Sacha" data-start="896.145000" data-stop="897.467000">that I come across.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="897.587000" data-stop="899.368000">To me, it feels like there's a thriving</span> <span class="audio-time caption" data-speaker="Sacha" data-start="899.408000" data-stop="901.510000">community that's large enough for my interests.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="902.231000" data-stop="902.531000"><strong class="speaker-name">Matei:</strong>  Cool.</span> <span class="audio-time caption" data-speaker="Matei" data-start="902.952000" data-stop="905.234000">You're the second person I've</span> <span class="audio-time caption" data-speaker="Matei" data-start="905.254000" data-stop="908.036000">actually spoken to. The first person was Protesilaos.</span> <span class="audio-time caption" data-speaker="Matei" data-start="908.056000" data-stop="911.880000">I'm struck by the fact that from a sample of</span> <span class="audio-time caption" data-speaker="Matei" data-start="911.900000" data-stop="915.103000">two, I've got two people who are not based in the</span> <span class="audio-time caption" data-speaker="Matei" data-start="915.163000" data-stop="916.904000">US, who are super international, and also who are</span> <span class="audio-time caption" data-speaker="Matei" data-start="916.924000" data-stop="917.865000">not developers.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="918.757000" data-stop="921.020000"><strong class="speaker-name">Sacha:</strong>  That is a fantastic thing about it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="921.060000" data-stop="924.063000">I love that we have researchers and sourdough</span> <span class="audio-time caption" data-speaker="Sacha" data-start="924.083000" data-stop="926.326000">bakers and knitters.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="926.886000" data-stop="928.448000">Of course, the programming part is still there,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="928.468000" data-stop="931.312000">but a lot of people end up getting into some kind</span> <span class="audio-time caption" data-speaker="Sacha" data-start="931.352000" data-stop="933.514000">of programming because of Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="933.534000" data-stop="935.637000">Emacs is the only thing they ever code, and they</span> <span class="audio-time caption" data-speaker="Sacha" data-start="935.677000" data-stop="936.898000">don't even think of it as coding.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="936.978000" data-stop="939.862000">It's just like, I do this, but I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="939.922000" data-stop="941.844000">wanted to be able to do this, so I learned how to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="941.884000" data-stop="943.826000">do Org Mode and source blocks, and that's all I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="943.866000" data-stop="945.388000">can do, but it's great.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="945.807000" data-stop="948.670000">I think that's really interesting because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="948.730000" data-stop="951.694000">when you talk to people about their origin</span> <span class="audio-time caption" data-speaker="Sacha" data-start="951.734000" data-stop="953.236000">stories with Emacs…</span> <span class="audio-time caption" data-speaker="Sacha" data-start="954.858000" data-stop="958.262000">Sure, of course, you have the pockets of people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="958.302000" data-stop="960.064000">who are like, I'm a computer science</span> <span class="audio-time caption" data-speaker="Sacha" data-start="960.104000" data-stop="962.046000">student and my professor said use this, so I'm</span> <span class="audio-time caption" data-speaker="Sacha" data-start="962.126000" data-stop="963.989000">using this, and so forth.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="964.029000" data-stop="966.431000">But then you get these random high school music</span> <span class="audio-time caption" data-speaker="Sacha" data-start="966.492000" data-stop="968.294000">students who are like, oh, yeah, I just saw this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="968.354000" data-stop="969.956000">video and I thought it looked really cool, so I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="969.996000" data-stop="970.977000">taught myself how to do that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="970.997000" data-stop="972.919000">I don't know anybody else who uses it in real</span> <span class="audio-time caption" data-speaker="Sacha" data-start="972.979000" data-stop="974.481000">life, but I like it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="974.883000" data-stop="979.188000">Musicians using it live to do performance...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="979.189000" data-stop="982.713000">Where are these people coming from? But they come across it,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="982.773000" data-stop="985.116000">and it just strikes a chord with them, deep in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="985.136000" data-stop="988.180000">their souls. It appeals to a certain</span> <span class="audio-time caption" data-speaker="Sacha" data-start="988.400000" data-stop="991.383000">tinkerer type, I guess.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="991.384000" data-stop="993.928000">They just continue with it. They get stuck.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="994.228000" data-stop="996.010000">Sometimes they leave and they come back, and all</span> <span class="audio-time caption" data-speaker="Sacha" data-start="996.050000" data-stop="996.490000">that stuff…</span> <span class="audio-time caption" data-speaker="Sacha" data-start="996.491000" data-stop="1000.536000">But the breadth is one of my favorite things about Emacs.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="1000.685000" data-stop="1004.053000"><strong class="speaker-name">Matei:</strong>  Do you think that most of the</span> <span class="audio-time caption" data-speaker="Matei" data-start="1004.093000" data-stop="1005.817000">people in the community are probably developers?</span> <span class="audio-time caption" data-speaker="Matei" data-start="1005.837000" data-stop="1007.601000">Because when you were saying the community, you</span> <span class="audio-time caption" data-speaker="Matei" data-start="1007.641000" data-stop="1011.170000">compared it to Vim and VS Code, which is to think</span> <span class="audio-time caption" data-speaker="Matei" data-start="1011.210000" data-stop="1014.778000">of it really as an IDE kind of thing.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1015.214000" data-stop="1016.817000"><strong class="speaker-name">Sacha:</strong>  That's usually what people talk</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1016.857000" data-stop="1018.539000">about, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1018.700000" data-stop="1020.643000">Because usually when people are thinking, how</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1020.743000" data-stop="1025.851000">popular is this, they're stacking it up against developer tools</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1025.972000" data-stop="1031.359000">because those are the surveys that the development websites do.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1031.800000" data-stop="1035.294000">Stack Overflow or State of Clojure or whatever.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1035.714000" data-stop="1037.539000">They'll ask people, “What editor do you use?”</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1038.741000" data-stop="1041.988000">But given Emacs' surprising</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1042.028000" data-stop="1043.952000">popularity among people who are, for example,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1044.794000" data-stop="1047.039000">diagnosed with ADHD and find that Org Mode is the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1047.118000" data-stop="1048.521000">only way they can manage their brains…</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="1048.722000" data-stop="1049.504000"><strong class="speaker-name">Matei:</strong>  Is that a thing?</span> <span class="audio-time caption" data-speaker="Matei" data-start="1049.825000" data-stop="1050.767000">That's really interesting.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1052.270000" data-stop="1056.452000"><strong class="speaker-name">Sacha:</strong>  In a number of Reddit threads that I've seen,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1056.953000" data-stop="1058.956000">people are like, yeah, I'm not a programmer, but</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1059.277000" data-stop="1061.300000">Org Mode is the only way that I've figured out</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1061.360000" data-stop="1062.281000">how to manage my brain.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1062.422000" data-stop="1065.246000">Or people will come to Emacs from something else</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1065.386000" data-stop="1069.192000">specifically for Org Mode because of the way that it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1069.593000" data-stop="1072.057000">can help them manage their tasks or agenda,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1072.077000" data-stop="1075.722000">because they can sculpt it to fit what their</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1075.782000" data-stop="1077.445000">specific workflow could be.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1078.707000" data-stop="1079.528000">It's amazing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1079.508000" data-stop="1081.372000">Of course, we've got the writers</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1081.452000" data-stop="1083.677000">and the researchers who are like,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1083.697000" data-stop="1086.262000">"I love publishing beautifully typeset</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1086.302000" data-stop="1088.046000">things, but I don't like working with LaTeX all</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1088.066000" data-stop="1090.651000">that much, so let me just figure out the template once."</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="1092.756000" data-stop="1094.419000"><strong class="speaker-name">Matei:</strong>  Yeah, totally.</span> <span class="audio-time caption" data-speaker="Matei" data-start="1094.439000" data-stop="1096.283000">I really came to Emacs because I</span> <span class="audio-time caption" data-speaker="Matei" data-start="1096.323000" data-stop="1097.907000">was looking for an outliner.</span> <span class="audio-time caption" data-speaker="Matei" data-start="1100.416000" data-stop="1102.819000">I'd been writing in Markdown</span> <span class="audio-time caption" data-speaker="Matei" data-start="1102.820000" data-stop="1105.653000">for a while. I was really getting sick of the heavy</span> <span class="audio-time caption" data-speaker="Matei" data-start="1105.654000" data-stop="1109.986000">Word stuff. And I was, like, Org Mode, omg, it's amazing!</span> <span class="audio-time caption" data-speaker="Matei" data-start="1109.987000" data-stop="1113.653000">Then from there, I was bitten.</span> <p></p><div class="transcript-heading">Do you have any frustrations with Emacs?</div><p></p><span class="audio-time caption" data-speaker="Matei" data-start="1113.654000" data-stop="1116.012000"><strong class="speaker-name">Matei:</strong>  <p>
<b>Do you have any frustrations with Emacs?</b></p>
</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1116.734000" data-stop="1118.996000"><strong class="speaker-name">Sacha:</strong>  I would like to have more time in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1119.036000" data-stop="1120.418000">the day to fiddle with things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1123.441000" data-stop="1129.086000">In terms of the balance between fiddling with my</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1129.147000" data-stop="1131.409000">config and doing the thing that I want to do, if</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1131.469000" data-stop="1136.534000">I sandwich it so that I do my 5 to 15 minutes</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1136.634000" data-stop="1138.876000">of Emacs fiddling at the start, then I'm</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1138.936000" data-stop="1141.259000">motivated to go through the task because I want</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1141.279000" data-stop="1143.501000">to test that my improvement works.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1143.481000" data-stop="1146.445000">Then it becomes a good balance for me.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1146.485000" data-stop="1149.069000">I don't spend all the time feeling like I'm</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1149.109000" data-stop="1151.052000">yak shaving, and I don't spend the time struggling</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1151.072000" data-stop="1152.634000">with workflow because I didn't take the time to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1152.714000" data-stop="1153.195000">automate it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1156.179000" data-stop="1158.282000">I would like to have more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1158.342000" data-stop="1160.846000">time, because I always come up with more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1160.866000" data-stop="1162.348000">ideas in the middle of something.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1163.309000" data-stop="1164.651000">I know this is possible.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1164.691000" data-stop="1167.153000">I just have to sit down and do it, and it'll be great.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1167.674000" data-stop="1170.597000">But okay, I have to wait till my next 5 to 15</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1170.637000" data-stop="1173.561000">minute window where I can fiddle with it again.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1174.342000" data-stop="1176.544000">The other thing that I've been trying to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1176.604000" data-stop="1179.668000">figure out is: how do you help people develop that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1179.808000" data-stop="1183.913000">intuition for how to do things, how to make Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1183.973000" data-stop="1184.453000">do things?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1186.816000" data-stop="1189.001000">We see a lot of people come into the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1189.262000" data-stop="1191.548000">community. They might get stuck on some things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1191.808000" data-stop="1195.617000">The tutorial is very useful, but it can be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1195.678000" data-stop="1196.219000">overwhelming.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1196.259000" data-stop="1198.384000">The whole Emacs thing can be very overwhelming</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1198.444000" data-stop="1198.885000">for people.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1199.627000" data-stop="1203.677000">How you help people get</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1203.657000" data-stop="1207.302000">through that part is something that's of great</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1207.422000" data-stop="1208.824000">interest to me.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1209.645000" data-stop="1212.669000">Bringing it back to AI and large</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1212.709000" data-stop="1215.393000">language models, the fact that people can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1215.453000" data-stop="1219.599000">sometimes have a conversation with this endlessly</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1219.679000" data-stop="1223.524000">patient tutor where they might be too embarrassed</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1223.544000" data-stop="1225.567000">to ask their questions on a mailing list or a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1225.647000" data-stop="1227.690000">forum, I think that's fantastic.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1228.025000" data-stop="1231.891000">But also, going to your manifesto's points about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1233.033000" data-stop="1236.598000">learning by doing and education and the eureka</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1236.638000" data-stop="1239.523000">moment, we also don't want this quick and easy</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1239.623000" data-stop="1242.888000">help to rob people of the understanding that they</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1242.968000" data-stop="1246.534000">get from looking at it and tweaking the code or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1246.594000" data-stop="1248.197000">learning how to read through the source code</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1248.237000" data-stop="1249.138000">themselves.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1249.118000" data-stop="1254.665000">There's just so much there that I would hate for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1254.705000" data-stop="1258.090000">people to just get stuck in the “please generate</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1258.110000" data-stop="1261.074000">this code for me" level rather than be able to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1261.134000" data-stop="1263.317000">learn this is how I start learning from other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1263.357000" data-stop="1265.199000">people's source code so that I can come up with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1265.239000" data-stop="1265.880000">more ideas.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="1267.682000" data-stop="1268.063000"><strong class="speaker-name">Matei:</strong>  That's right.</span> <span class="audio-time caption" data-speaker="Matei" data-start="1269.084000" data-stop="1270.546000">That's also what I think basically.</span> <span class="audio-time caption" data-speaker="Matei" data-start="1274.511000" data-stop="1275.713000">Here's an interesting question.</span> <p></p><div class="transcript-heading">Would you ever leave Emacs?</div><p></p><span class="audio-time caption" data-speaker="Matei" data-start="1276.674000" data-stop="1278.096000"><strong class="speaker-name">Matei:</strong>  <p>
<b>Would you ever leave Emacs?</b></p>
</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1278.953000" data-stop="1281.819000"><strong class="speaker-name">Sacha:</strong>  I cannot imagine an editor at the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1281.879000" data-stop="1283.963000">moment that would let me get away with nearly</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1284.083000" data-stop="1287.310000">half of the things that I do, but maybe even less.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1289.194000" data-stop="1292.300000">Right now, I've got so many odd little</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1292.360000" data-stop="1294.785000">customizations for it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1294.951000" data-stop="1301.779000">For example, on my phone, I'll use Orgzly Revived</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1301.819000" data-stop="1304.002000">to capture a quick note so that I can go back</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1304.042000" data-stop="1306.125000">into Emacs later and do it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1306.785000" data-stop="1309.689000">But even though I'm comfortable programming in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1309.709000" data-stop="1311.631000">JavaScript and Python, and there are lots of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1311.711000" data-stop="1315.636000">tools available there, the interactive interface</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1315.696000" data-stop="1318.900000">part of things is something that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1318.880000" data-stop="1322.668000">I don't see any other program give me the same</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1322.728000" data-stop="1326.896000">kind of platform of support or building blocks to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1326.936000" data-stop="1327.397000">play with.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1328.139000" data-stop="1332.788000">Who knows? If some day, this thing manages to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1332.828000" data-stop="1336.335000">support all of my hacks built on hacks and gives</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1336.355000" data-stop="1339.842000">me that same kind of feedback loop, but it's also</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1339.822000" data-stop="1341.885000">multithreaded and graphical and whatever,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1342.686000" data-stop="1346.491000">I might give it a try. But at the moment since I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1346.531000" data-stop="1348.894000">can get away with so much in Emacs and I know</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1348.934000" data-stop="1350.916000">that people behind the scenes are working on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1351.017000" data-stop="1353.420000">adding even more to it, it's okay,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1353.480000" data-stop="1357.265000">long term. It's been around for 40 years. It'll be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1357.305000" data-stop="1359.087000">around for... Probably it'll outlive me.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1359.107000" data-stop="1363.373000">I don't have to worry too much about giving up on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1363.393000" data-stop="1363.473000">it.</span> <p></p><div class="transcript-heading">How important for you is the free software bit of Emacs?</div><p></p><span class="audio-time caption" data-speaker="Matei" data-start="1364.294000" data-stop="1371.067000"><strong class="speaker-name">Matei:</strong>  <p>
<b>How important for you is the free software bit of Emacs?</b></p>
</span> <span class="audio-time caption" data-speaker="Matei" data-start="1371.387000" data-stop="1375.916000">I was on Mac when I got into Emacs. I went to</span> <span class="audio-time caption" data-speaker="Matei" data-start="1376.437000" data-stop="1378.260000">GNU Emacs to download it and it said,</span> <span class="audio-time caption" data-speaker="Matei" data-start="1378.481000" data-stop="1380.004000">we made this available to people on</span> <span class="audio-time caption" data-speaker="Matei" data-start="1380.044000" data-stop="1382.308000">proprietary systems in order to teach you to free</span> <span class="audio-time caption" data-speaker="Matei" data-start="1382.328000" data-stop="1382.729000">yourself.</span> <span class="audio-time caption" data-speaker="Matei" data-start="1382.769000" data-stop="1383.691000">I was like, huh?</span> <span class="audio-time caption" data-speaker="Matei" data-start="1383.991000" data-stop="1385.995000">I downloaded it and</span> <span class="audio-time caption" data-speaker="Matei" data-start="1387.645000" data-stop="1389.488000">I'm now running Arch Linux.</span> <span class="audio-time caption" data-speaker="Matei" data-start="1392.454000" data-stop="1393.556000">It definitely worked.</span> <span class="audio-time caption" data-speaker="Matei" data-start="1393.716000" data-stop="1395.840000">Richard Stallman has downloaded himself into my</span> <span class="audio-time caption" data-speaker="Matei" data-start="1395.860000" data-stop="1396.001000">brain.</span> <span class="audio-time caption" data-speaker="Matei" data-start="1396.762000" data-stop="1399.066000">How much is the free software bit of</span> <span class="audio-time caption" data-speaker="Matei" data-start="1399.167000" data-stop="1401.030000">it important to you in using Emacs?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1401.466000" data-stop="1402.768000"><strong class="speaker-name">Sacha:</strong>  I'm not a purist.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1402.908000" data-stop="1407.236000">I will happily be the interface using the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1407.276000" data-stop="1407.917000">non-free things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1407.937000" data-stop="1409.720000">For example, when we were doing EmacsConf, the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1409.760000" data-stop="1413.326000">first few years before Whisper was around, I was</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1413.366000" data-stop="1415.750000">the one doing like, okay, fine, YouTube has this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1416.411000" data-stop="1419.016000">subtitling thing that we can grab the stuff from.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1419.296000" data-stop="1421.059000">Yeah, it's a non-free service, but I will</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1421.099000" data-stop="1424.305000">happily take advantage of it in order to make the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1424.405000" data-stop="1426.849000">information more free, and things like that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1426.829000" data-stop="1430.596000">I use both free and non-free things, but I love</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1430.616000" data-stop="1434.183000">the single-minded focus that a lot of people have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1434.544000" data-stop="1436.628000">on freedom and making sure that other people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1436.728000" data-stop="1437.570000">enjoy these rights.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1438.251000" data-stop="1439.955000">For example, in the Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1439.995000" data-stop="1442.980000">community, a surprising number refuse to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1443.281000" data-stop="1447.790000">use JavaScript because a lot of JavaScript is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1447.850000" data-stop="1448.972000">non-free software.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1455.403000" data-stop="1457.166000">I want to make sure that my website still</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1457.206000" data-stop="1458.408000">makes sense without JavaScript.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1459.069000" data-stop="1461.092000">EmacsConf, there are ways to participate even</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1461.212000" data-stop="1463.677000">participate even without JavaScript. You can use MPV to watch</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1463.997000" data-stop="1464.598000">the stream.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1464.578000" data-stop="1466.361000">It's all free software.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1466.681000" data-stop="1468.524000">You can use IRC to chat.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1468.905000" data-stop="1470.668000">All that stuff is very important to people, and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1470.708000" data-stop="1471.309000">that's great.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1472.170000" data-stop="1474.474000">I love the fact that for a lot of people,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1474.534000" data-stop="1476.958000">they really care about making sure other people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1477.198000" data-stop="1480.944000">can continue to enjoy these freedoms to modify</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1481.025000" data-stop="1482.587000">things and to build on it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1482.567000" data-stop="1485.170000">Every so often someone comes into the Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1485.190000" data-stop="1487.513000">community and they're like, oh yeah, I want to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1487.553000" data-stop="1489.356000">make money making packages here.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1489.376000" data-stop="1490.938000">I'm going to put my package behind a paywall.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1490.978000" data-stop="1492.680000">You've got to send me a donation in order to use it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1493.141000" data-stop="1494.602000">Then they get smacked down so hard.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1496.425000" data-stop="1498.187000">Usually the way it works is someone will then,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1498.608000" data-stop="1500.750000">you know, take a look at their README and say,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1500.770000" data-stop="1502.893000">okay, that looks vibe-coded. I can do it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1502.933000" data-stop="1504.135000">faster and I'll do it for free.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1504.896000" data-stop="1506.558000">That's the usual response to this stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1506.578000" data-stop="1508.000000">Yeah, here's the thing that you're trying to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1508.040000" data-stop="1509.081000">sell, but it's free.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="1510.107000" data-stop="1511.449000"><strong class="speaker-name">Matei:</strong>  So that never works. I was</span> <span class="audio-time caption" data-speaker="Matei" data-start="1511.489000" data-stop="1514.534000">struck by this. It seems to be so absolutely</span> <span class="audio-time caption" data-speaker="Matei" data-start="1515.094000" data-stop="1517.919000">immune to takeover by proprietary stuff.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1518.399000" data-stop="1520.543000"><strong class="speaker-name">Sacha:</strong>  I mean, it's a startup</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1520.583000" data-stop="1522.726000">hustle mentality in other communities, but in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1522.866000" data-stop="1525.210000">Emacs, it does not fly. Mostly because people are, like,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1525.270000" data-stop="1527.233000">are, like, I know the tools you're using, I can do that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1527.693000" data-stop="1528.875000">better myself.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1528.855000" data-stop="1533.361000">There are people who do get sustained by</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1533.441000" data-stop="1535.684000">donations from Emacs community members, but it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1535.704000" data-stop="1538.207000">generally is more of a "I appreciate</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1538.247000" data-stop="1540.230000">your work and I will send you this voluntary</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1540.290000" data-stop="1543.755000">donation" instead of your paywalling your stuff</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1543.815000" data-stop="1546.799000">behind this thing, which feels very much against</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1546.839000" data-stop="1549.362000">the ethos of the Emacs community.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1549.342000" data-stop="1554.690000">It's been interesting to see the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1554.691000" data-stop="1562.563000">AI hustle "software as a service or product type" thing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1562.564000" data-stop="1564.848000">try to infiltrate the Emacs community, and they are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1564.968000" data-stop="1565.749000">having none of it.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="1566.330000" data-stop="1566.791000"><strong class="speaker-name">Matei:</strong>  Interesting.</span> <span class="audio-time caption" data-speaker="Matei" data-start="1567.112000" data-stop="1569.055000">Why do you think it's so resilient to that?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1569.895000" data-stop="1571.418000"><strong class="speaker-name">Sacha:</strong>  Because we've had such a long</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1571.438000" data-stop="1573.764000">tradition of sharing things for free, building on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1573.824000" data-stop="1576.831000">top of things that people have freely shared: not</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1576.911000" data-stop="1580.599000">just like free as in beer, but free as in you've got</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1580.960000" data-stop="1582.403000">the source code, you've got all the rights to do</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1582.423000" data-stop="1585.069000">whatever you want with it, including for free.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1585.268000" data-stop="1587.130000">That's baked into the community.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1587.150000" data-stop="1589.812000">Any time someone comes in and tries to say,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1590.212000" data-stop="1594.976000">oh yeah, I've got this commercial packaging of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1595.056000" data-stop="1596.618000">Emacs, it's all rights reserved, people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1596.658000" data-stop="1599.060000">are like, yeah, there's probably a GPL</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1599.100000" data-stop="1600.921000">violation right there, so let's go.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="1603.003000" data-stop="1604.444000"><strong class="speaker-name">Matei:</strong>  Cool.</span> <p></p><div class="transcript-heading">How do you explain your passion for Emacs to non-Emacs users?</div><p></p><span class="audio-time caption" data-speaker="Matei" data-start="1604.464000" data-stop="1609.989000"><strong class="speaker-name">Matei:</strong> <b>How do you explain your passion for Emacs to non-Emacs users?</b></span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1612.851000" data-stop="1615.073000"><strong class="speaker-name">Sacha:</strong>  I don't usually.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1615.998000" data-stop="1622.372000">I love the fact that I can tinker with it, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1622.392000" data-stop="1625.238000">If it clicks for people, it clicks.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1625.559000" data-stop="1628.044000">But if it doesn't click for people and they don't</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1628.085000" data-stop="1630.209000">necessarily want or need that, then it's okay for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1630.249000" data-stop="1631.492000">them to use something else.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1631.472000" data-stop="1634.114000">I love the fact that people are using or even</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1634.214000" data-stop="1635.776000">shifting to other editors.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1636.436000" data-stop="1638.458000">For example, we've had a couple of people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1639.059000" data-stop="1640.720000">announce that they're leaving Emacs recently</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1640.780000" data-stop="1642.842000">because vibe coding has made it possible for them</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1642.882000" data-stop="1644.924000">to build native applications and they don't have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1644.944000" data-stop="1646.445000">to build it on top of Emacs anymore.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1646.906000" data-stop="1650.009000">They can finally get their Vim config set up the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1650.049000" data-stop="1654.293000">way that they wanted to because the LLM can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1654.333000" data-stop="1655.534000">generate that stuff for them.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1655.874000" data-stop="1657.996000">Whereas in Emacs, it would have been a lot easier</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1658.016000" data-stop="1659.697000">to write it themselves, but now they can do it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1659.737000" data-stop="1661.479000">with VS Code or whatever.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1661.459000" data-stop="1664.284000">It's great because the more people are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1664.364000" data-stop="1665.927000">experimenting with interesting ideas, even</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1666.068000" data-stop="1668.873000">outside Emacs, the more we get to steal those</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1668.973000" data-stop="1670.436000">ideas and then bring them back.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1671.037000" data-stop="1672.219000">You see a lot of this sometimes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1672.259000" data-stop="1674.984000">You see people re-implementing cool ideas from</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1675.084000" data-stop="1677.088000">other editors or other tools.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1677.068000" data-stop="1679.311000">To me, it's totally okay if other people use</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1679.351000" data-stop="1681.495000">something else, especially if they tell me the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1681.555000" data-stop="1683.738000">cool stuff that they think only that editor can do.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1684.719000" data-stop="1686.282000">Because I'm like, that sounds</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1686.302000" data-stop="1687.383000">like an interesting feature.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1687.704000" data-stop="1688.425000">Do tell me more.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1689.006000" data-stop="1691.469000">There was an interesting talk by Jeremy Friesen</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1691.690000" data-stop="1693.933000">in either last EmacsConf or the one</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1693.953000" data-stop="1696.997000">before that, about mentoring and how he's no</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1697.058000" data-stop="1699.161000">longer trying to push people to use</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1699.281000" data-stop="1699.621000">Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1700.062000" data-stop="1702.345000">He wants to share the general workflow</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1702.385000" data-stop="1703.447000">practices he's using.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1703.883000" data-stop="1707.249000">If he's pair programming</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1707.269000" data-stop="1709.432000">with someone, he might say, how do you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1710.935000" data-stop="1713.960000">jump to a specific function definition?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1714.321000" data-stop="1715.923000">They might show him something, or they might</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1715.963000" data-stop="1717.506000">realize that's a thing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1718.047000" data-stop="1720.291000">I can go look in my editor how to do that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1720.311000" data-stop="1721.853000">He might show, this is how I do it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1721.873000" data-stop="1722.855000">That's the general idea.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1723.396000" data-stop="1725.199000">Sometimes when people start talking workflow, then</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1726.040000" data-stop="1726.621000">talking workflow, then</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1727.521000" data-stop="1730.364000">talking workflow, then people who are not using Emacs will go, "That</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1730.384000" data-stop="1731.165000">looks really cool.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1731.285000" data-stop="1732.026000">How do I do that?" Then</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1732.086000" data-stop="1734.228000">that?" Then you send them down the path of:</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1734.428000" data-stop="1736.730000">get it installed, go through the tutorial, that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1736.770000" data-stop="1737.371000">sort of stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1738.672000" data-stop="1741.095000">But it always helps to have that specific reason,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1741.635000" data-stop="1744.218000">the thing that they want to be able to do.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1744.918000" data-stop="1749.203000">For me, for example, I love the way that Org Mode</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1749.243000" data-stop="1753.667000">lets me have my notes and the code and the links.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1754.649000" data-stop="1756.393000">It's all one big thing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1756.413000" data-stop="1758.678000">I don't have to think about, oh, okay, I have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1758.698000" data-stop="1761.103000">to do everything in Python because that's what</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1761.444000" data-stop="1762.166000">Jupyter does.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1762.366000" data-stop="1764.491000">I can do some of it in Emacs Lisp, and I can do</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1764.531000" data-stop="1766.355000">some of it in shell scripts, and I can do some of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1766.435000" data-stop="1768.840000">it in JavaScript or Python.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1768.860000" data-stop="1771.065000">It's like all this big mess</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1771.045000" data-stop="1772.627000">Org Babel kind of thing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1773.107000" data-stop="1776.030000">Yeah, because your brain might not be in tune with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1776.090000" data-stop="1778.052000">all those different languages, but it works for me.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1778.712000" data-stop="1780.774000">If other people see that and they say, I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1780.814000" data-stop="1783.517000">want to do that too, then that's when you help</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1783.557000" data-stop="1785.379000">them get into Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1785.399000" data-stop="1787.821000">But aside from that, I don't talk to people in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1787.921000" data-stop="1789.923000">elevators and say, have you heard the good news?</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="1791.044000" data-stop="1792.385000"><strong class="speaker-name">Matei:</strong>  I was wondering even</span> <span class="audio-time caption" data-speaker="Matei" data-start="1792.425000" data-stop="1794.587000">more broadly than kind of people who are already</span> <span class="audio-time caption" data-speaker="Matei" data-start="1794.627000" data-stop="1795.628000">coding with a different editor.</span> <span class="audio-time caption" data-speaker="Matei" data-start="1795.648000" data-stop="1797.390000">To tell you a story...</span> <span class="audio-time caption" data-speaker="Matei" data-start="1797.691000" data-stop="1800.039000">My cousin is also an anthropologist. He's an</span> <span class="audio-time caption" data-speaker="Matei" data-start="1800.079000" data-stop="1802.508000">anthropologist in France. I've known for years</span> <span class="audio-time caption" data-speaker="Matei" data-start="1802.548000" data-stop="1804.053000">that he was into Linux and free software and</span> <span class="audio-time caption" data-speaker="Matei" data-start="1804.073000" data-stop="1806.722000">stuff. When I got into Emacs, he said, you know</span> <span class="audio-time caption" data-speaker="Matei" data-start="1806.743000" data-stop="1808.629000">I've been doing Emacs for 10 years.</span> <span class="audio-time caption" data-speaker="Matei" data-start="1808.710000" data-stop="1810.614000">I was like, what?</span> <span class="audio-time caption" data-speaker="Matei" data-start="1810.634000" data-stop="1810.935000">How?</span> <span class="audio-time caption" data-speaker="Matei" data-start="1811.115000" data-stop="1811.536000">What?</span> <span class="audio-time caption" data-speaker="Matei" data-start="1811.556000" data-stop="1812.218000">And he'd never told me.</span> <span class="audio-time caption" data-speaker="Matei" data-start="1812.538000" data-stop="1814.743000">I realize now, having been doing Emacs for</span> <span class="audio-time caption" data-speaker="Matei" data-start="1814.783000" data-stop="1817.048000">four years, I can't talk to my colleagues and</span> <span class="audio-time caption" data-speaker="Matei" data-start="1817.108000" data-stop="1818.090000">friends about it because they</span> <span class="audio-time caption" data-speaker="Matei" data-start="1818.110000" data-stop="1819.433000">look over my shoulder and it's</span> <span class="audio-time caption" data-speaker="Matei" data-start="1819.473000" data-stop="1820.796000">like, what are you doing?</span> <span class="audio-time caption" data-speaker="Matei" data-start="1820.816000" data-stop="1822.820000">This looks like it's from the 1980s.</span> <span class="audio-time caption" data-speaker="Matei" data-start="1822.840000" data-stop="1825.165000">Even trying to explain to people what</span> <span class="audio-time caption" data-speaker="Matei" data-start="1825.286000" data-stop="1828.272000">Emacs is... I don't mean coders, I just mean people.</span> <span class="audio-time caption" data-speaker="Matei" data-start="1832.066000" data-stop="1833.708000">My cousin said, yeah, I</span> <span class="audio-time caption" data-speaker="Matei" data-start="1833.728000" data-stop="1835.109000">talk to people about free software all the time.</span> <span class="audio-time caption" data-speaker="Matei" data-start="1835.189000" data-stop="1836.471000">I've never talked to anyone about Emacs.</span> <span class="audio-time caption" data-speaker="Matei" data-start="1836.491000" data-stop="1837.652000">It's just so weird.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1839.654000" data-stop="1841.596000"><strong class="speaker-name">Sacha:</strong>  I think that's why the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1841.636000" data-stop="1843.237000">community is so important, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1846.140000" data-stop="1848.422000">I aggregate a lot of blogs on Planet Emacslife</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1848.463000" data-stop="1851.045000">on Planet Emacslife so people can bump into each other.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1851.165000" data-stop="1853.127000">There are a lot of meetups, some of which we host</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1853.267000" data-stop="1855.950000">on BigBlueButton... There are meetups, by</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1855.970000" data-stop="1856.210000">the way.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1856.691000" data-stop="1860.116000">If you check under Emacs News, there's actually a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1860.136000" data-stop="1861.197000">very active London meetup.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="1863.741000" data-stop="1864.463000"><strong class="speaker-name">Matei:</strong>  I haven't yet.</span> <p></p><div class="transcript-heading">To what extent do people meet in person with Emacs?</div><p></p><span class="audio-time caption" data-speaker="Matei" data-start="1864.663000" data-stop="1869.431000"><strong class="speaker-name">Matei:</strong> <b>To what extent do people meet in person with Emacs?</b></span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1869.471000" data-stop="1870.573000"><strong class="speaker-name">Sacha:</strong>  Apparently, a lot of people meet in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1870.613000" data-stop="1873.237000">person whenever they're lucky enough to get a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1873.297000" data-stop="1875.200000">sense that there are actually other people in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1875.240000" data-stop="1877.304000">their general geographic location who are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1877.324000" data-stop="1878.025000">interested in this.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1878.365000" data-stop="1880.008000">But there are also a lot of people who meet online.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1880.589000" data-stop="1884.195000">Org Meetup has a meetup every month that has about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1884.175000" data-stop="1885.977000">20 people in it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1886.197000" data-stop="1888.939000">Emacs Berlin has a meetup that's hybrid, and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1889.440000" data-stop="1891.442000">so it's both in person and online.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1892.503000" data-stop="1894.745000">There's Emacs Asia Pacific.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1894.765000" data-stop="1897.728000">There's a whole list of meetups in Emacs News,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1897.788000" data-stop="1899.429000">which is that newsletter that I do every week.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1900.731000" data-stop="1904.474000">I list upcoming events, and there's also a link</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1904.514000" data-stop="1907.157000">there to the calendar as well as to the user</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1907.177000" data-stop="1910.740000">groups page which lists by region.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1910.720000" data-stop="1915.461000">There are a lot of people getting together about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1915.481000" data-stop="1917.490000">Emacs because a lot of times,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1918.837000" data-stop="1921.700000">you learn about Emacs by looking over someone's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1921.861000" data-stop="1924.444000">shoulder, physical or virtual, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1924.684000" data-stop="1926.286000">This is how you learn about things that you would</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1926.346000" data-stop="1929.530000">not have even thought of asking an AI about.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1930.091000" data-stop="1932.674000">They're doing a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1932.754000" data-stop="1935.297000">demonstration or they're doing a video, and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1935.317000" data-stop="1937.440000">you're like, what is that thing that you just did?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1938.821000" data-stop="1940.804000">They had no plans to talk about it because it's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1940.884000" data-stop="1942.345000">just something they take for granted.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1942.366000" data-stop="1943.887000">It's a keyword shortcut or a command.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1943.947000" data-stop="1945.269000">It's just part of the workflow.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1945.289000" data-stop="1946.511000">They don't think about it anymore.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1947.031000" data-stop="1948.573000">Or it's even as simple as</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1948.553000" data-stop="1949.355000">"What's that theme?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1949.395000" data-stop="1950.116000">What's that font?"</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1951.659000" data-stop="1954.725000">Because people can see it, can see somebody</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1954.905000" data-stop="1958.773000">doing stuff with Emacs, they get inspired to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1958.813000" data-stop="1961.699000">learn more and to adopt that into their workflow.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1962.200000" data-stop="1964.645000">That is one of the things that I love about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1964.765000" data-stop="1966.709000">how people learn Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1966.729000" data-stop="1968.132000">It's very convivial, right?</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="1968.412000" data-stop="1969.414000"><strong class="speaker-name">Matei:</strong>  Yeah.</span> <p></p><div class="transcript-heading">Learning in public</div><p></p><span class="audio-time caption" data-speaker="Matei" data-start="1969.394000" data-stop="1974.323000"><strong class="speaker-name">Matei:</strong> You said the phrase earlier: <b>learning in public</b>.</span> <span class="audio-time caption" data-speaker="Matei" data-start="1974.324000" data-stop="1976.849000">In one sense, that sounds scary. Learning</span> <span class="audio-time caption" data-speaker="Matei" data-start="1976.889000" data-stop="1978.772000">in public, making mistakes in</span> <span class="audio-time caption" data-speaker="Matei" data-start="1978.832000" data-stop="1980.736000">public and stuff. You said it as a really</span> <span class="audio-time caption" data-speaker="Matei" data-start="1980.776000" data-stop="1982.660000">good thing. Tell me more about learning in</span> <span class="audio-time caption" data-speaker="Matei" data-start="1982.700000" data-stop="1983.201000">public.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1984.025000" data-stop="1986.069000"><strong class="speaker-name">Sacha:</strong>  My favorite kinds of blog posts is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1986.109000" data-stop="1988.173000">when I'm proud of myself for figuring</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1988.213000" data-stop="1989.075000">out something clever.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1989.495000" data-stop="1990.998000">Like, okay, here's this function</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1991.018000" data-stop="1995.267000">function to do this thing. I had to figure</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1995.307000" data-stop="1995.527000">it out.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1995.587000" data-stop="1996.349000">It was hard.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1996.429000" data-stop="1998.272000">It took like a day or two to do it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1998.693000" data-stop="2000.316000">Then someone comes by in the comments and says,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2000.497000" data-stop="2002.320000">oh yeah, that's built in.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="2003.752000" data-stop="2005.073000"><strong class="speaker-name">Matei:</strong>  Yeah, I've been there.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2005.233000" data-stop="2008.136000"><strong class="speaker-name">Sacha:</strong>  "You just change this variable."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2008.176000" data-stop="2009.417000">It happens so often.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2010.058000" data-stop="2012.921000">The reason is because Emacs is so big, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2012.981000" data-stop="2019.127000">There are variables and functions that I would not think of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2019.187000" data-stop="2019.767000">coming across.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2019.787000" data-stop="2021.449000">Maybe I'm not using the right words to search for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2021.469000" data-stop="2022.130000">them, or whatever.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2022.570000" data-stop="2024.512000">If you add to that the entire package</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2024.552000" data-stop="2027.395000">ecosystem and as well as the things that are not</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2027.435000" data-stop="2029.477000">people's packaged code, snippets</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2029.537000" data-stop="2031.058000">in people's config and whatnot...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2031.038000" data-stop="2034.761000">Chances are someone has come across the same</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2034.821000" data-stop="2036.743000">problem that I'm thinking about and has come up</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2036.783000" data-stop="2038.965000">with a more elegant solution for it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2038.985000" data-stop="2040.706000">If I'm not using the same words, I might not</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2040.766000" data-stop="2041.147000">find it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2041.527000" data-stop="2042.768000">One of the things that I like about large</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2042.828000" data-stop="2045.190000">language models is that even if I use my words,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2045.350000" data-stop="2048.533000">sometimes it will suggest something that does</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2048.572000" data-stop="2049.434000">that translation, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2049.494000" data-stop="2051.695000">It's an <b>approximate search</b>.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2051.876000" data-stop="2054.418000">But even if I don't have that, if I'm writing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2054.478000" data-stop="2057.440000">about something, then I have that opportunity for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2057.540000" data-stop="2060.623000">somebody to say, oh yeah, you should check this out.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2060.603000" data-stop="2063.770000">Or several years later, someone might also say,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2064.311000" data-stop="2066.175000">that is exactly what I was trying to do.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2066.215000" data-stop="2067.898000">I'm taking your code.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2067.938000" data-stop="2070.402000">I've built something on top of it to make it even better.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2070.944000" data-stop="2073.911000">For me, writing about what I'm learning</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2073.951000" data-stop="2078.159000">with Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2079.402000" data-stop="2083.168000">is a great way to learn even more from the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2083.208000" data-stop="2083.630000">community.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2083.771000" data-stop="2085.534000">I keep trying to convince people, yes, please,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2085.634000" data-stop="2087.478000">even if you're a beginner, write about what</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2087.498000" data-stop="2089.922000">you're learning, because it's a great way to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2090.464000" data-stop="2092.628000">crystallize that knowledge for yourself,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2092.668000" data-stop="2094.672000">become part of the community and part of the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2094.732000" data-stop="2096.996000">conversations, and learn about things that you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2097.036000" data-stop="2099.301000">would not have thought of asking about.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="2099.416000" data-stop="2101.200000"><strong class="speaker-name">Matei:</strong>  Well, I'm following your example.</span> <span class="audio-time caption" data-speaker="Matei" data-start="2101.220000" data-stop="2103.205000">I'm trying to write my config in Org Babel at the</span> <span class="audio-time caption" data-speaker="Matei" data-start="2103.245000" data-stop="2108.839000">moment, partly as a way to say, wait a</span> <span class="audio-time caption" data-speaker="Matei" data-start="2108.859000" data-stop="2110.784000">minute, what is this thing?</span> <span class="audio-time caption" data-speaker="Matei" data-start="2110.804000" data-stop="2111.346000">How does it work?</span> <span class="audio-time caption" data-speaker="Matei" data-start="2111.366000" data-stop="2112.569000">It's so useful.</span> <span class="audio-time caption" data-speaker="Matei" data-start="2112.970000" data-stop="2114.574000">But one thing I was wondering, and it's partly</span> <span class="audio-time caption" data-speaker="Matei" data-start="2114.614000" data-stop="2116.378000">also just a practical question,</span> <p></p><div class="transcript-heading">Disclaimers</div><p></p><span class="audio-time caption" data-speaker="Matei" data-start="2116.358000" data-stop="2119.242000"><strong class="speaker-name">Matei:</strong> I've never tried to contribute or to post</span> <span class="audio-time caption" data-speaker="Matei" data-start="2119.302000" data-stop="2123.948000">anything on anything, partly because <b>I worry that my stuff is crap</b>.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2136.085000" data-stop="2145.626000"><strong class="speaker-name">Sacha:</strong>  If you put a disclaimer,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2145.627000" data-stop="2149.395000">that way they know they're reading it for the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2149.475000" data-stop="2153.183000">idea, but not necessarily the Emacs Lisp style.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2153.163000" data-stop="2155.587000">That's fine with me too.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2156.188000" data-stop="2157.851000">There are a lot of people who are like, you know,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2158.372000" data-stop="2159.795000">it's got too many emojis in it,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2159.835000" data-stop="2160.816000">I'm not going to read that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2160.897000" data-stop="2162.459000">I'm going to focus my time reading something else</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2162.499000" data-stop="2164.162000">that's been handcrafted and all that stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2164.182000" data-stop="2164.924000">That's fine too.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2165.344000" data-stop="2166.987000">There's room for all sorts of people and all</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2167.027000" data-stop="2168.590000">sorts of approaches to this.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2177.902000" data-stop="2180.886000">Sometimes even just the idea of something</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2181.647000" data-stop="2184.511000">is already valuable, that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2184.611000" data-stop="2187.755000">valuable, that somebody thought of saying, hey, my workflow</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2187.795000" data-stop="2190.679000">would be better if it could just do this.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2193.924000" data-stop="2195.466000">If there's a screenshot, even better, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2195.486000" data-stop="2196.408000">You can see how it works.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2196.448000" data-stop="2198.671000">Screenshot or video or animated GIF.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2199.052000" data-stop="2201.396000">Because then they can go and write the code that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2201.416000" data-stop="2202.477000">they would have to do anyway.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2202.537000" data-stop="2204.180000">Because of course, they've got their own</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2204.240000" data-stop="2205.342000">personalized setup.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2205.702000" data-stop="2209.248000">You know, the code that you write will not mesh</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2209.708000" data-stop="2211.992000">perfectly with their particular setup.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2212.782000" data-stop="2215.906000">There's this whole… There's this Lisp curse</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2216.086000" data-stop="2218.850000">essay that's sort of related to…</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="2218.870000" data-stop="2220.092000"><strong class="speaker-name">Matei:</strong>  I was going to ask you about that.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2221.093000" data-stop="2224.918000"><strong class="speaker-name">Sacha:</strong>  We've all got our ecosystems of our</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2225.098000" data-stop="2228.062000">own code and absorbing something into it is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2228.102000" data-stop="2228.743000">sometimes hard.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2228.783000" data-stop="2231.246000">But if you start with even just the idea that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2231.327000" data-stop="2233.830000">somebody else has written about, whether or not</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2233.870000" data-stop="2235.752000">you take their actual code for it or use their</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2235.792000" data-stop="2238.716000">code as a building block, that is already useful</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2238.796000" data-stop="2240.038000">and interesting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2240.018000" data-stop="2243.783000">Again, you don't have to be Bozhidar Batsov or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2243.803000" data-stop="2247.068000">Omar Antolin to be able to contribute at that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2247.148000" data-stop="2247.449000">level.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2247.529000" data-stop="2249.071000">Even at the beginner level, you could just be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2249.091000" data-stop="2251.935000">like, I just need to do this thing and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2251.975000" data-stop="2253.998000">it's driving me crazy to do it manually all the time.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2254.739000" data-stop="2257.062000">Then I'm like, you can do that non-manually?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2257.283000" data-stop="2259.546000">Oh yeah, we should do that.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="2260.387000" data-stop="2261.830000"><strong class="speaker-name">Matei:</strong>  Cool.</span> <span class="audio-time caption" data-speaker="Matei" data-start="2261.931000" data-stop="2265.198000">Just to come back to the question about</span> <span class="audio-time caption" data-speaker="Matei" data-start="2265.239000" data-stop="2266.862000">talking to other people about Emacs, do you ever</span> <span class="audio-time caption" data-speaker="Matei" data-start="2266.923000" data-stop="2268.867000">talk to people who are not programmers?</span> <p></p><div class="transcript-heading">Do you ever talk to family and friends about Emacs?</div><p></p><span class="audio-time caption" data-speaker="Matei" data-start="2268.927000" data-stop="2271.253000"><strong class="speaker-name">Matei:</strong> <b>Do you ever talk to family and friends about Emacs?</b></span> <span class="audio-time caption" data-speaker="Matei" data-start="2271.393000" data-stop="2273.157000">Do you ever have to explain what this thing is</span> <span class="audio-time caption" data-speaker="Matei" data-start="2273.177000" data-stop="2275.543000">that you're doing or do you just not?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2275.912000" data-stop="2278.516000"><strong class="speaker-name">Sacha:</strong>  Well, my kiddo is 10, and she's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2278.556000" data-stop="2280.158000">like, can you set me up a kid Emacs?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2280.178000" data-stop="2281.580000">Because she sees me like... Yes!</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2282.140000" data-stop="2284.403000">Clearly something of great interest to me.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2284.423000" data-stop="2285.225000">I said, maybe.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2285.245000" data-stop="2290.572000">She does a little bit of vibe coding with Claude as</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2290.612000" data-stop="2292.214000">she generates interactive stories.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2292.875000" data-stop="2295.118000">She was trying to track</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2295.158000" data-stop="2297.541000">down a syntax error at some point.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2297.581000" data-stop="2299.564000">I was like, can I just install Emacs on your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2299.604000" data-stop="2302.648000">computer so I can do... And she said no.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2302.668000" data-stop="2305.632000">My husband uses Vim.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2306.497000" data-stop="2311.647000"></span> <span class="audio-time caption" data-speaker="Sacha" data-start="2311.707000" data-stop="2313.430000">Org Mode at some point, so he found the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2313.450000" data-stop="2315.654000">appropriate Vim plug-in for it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2317.057000" data-stop="2318.299000">That was amazing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2320.443000" data-stop="2323.244000">I don't talk to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2323.344000" data-stop="2324.726000">people about editor choices.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2325.647000" data-stop="2327.790000">I just do the stuff that I do. When I write about it,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2327.810000" data-stop="2331.275000">sometimes people will come across it, again,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2331.315000" data-stop="2333.017000">coming from completely different backgrounds.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2333.037000" data-stop="2335.741000">They'll be like, oh yeah, I also need to edit transcripts.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2335.761000" data-stop="2337.143000">What is this Emacs thing?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2337.663000" data-stop="2340.727000">And I'm like, well, it's a very long road, but</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2340.787000" data-stop="2342.029000">it's a lot of fun and it's worth it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2342.069000" data-stop="2343.832000">If you do want to get into it, here's some ways</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2343.852000" data-stop="2344.492000">to get started.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2344.573000" data-stop="2345.013000">I don't know.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2345.494000" data-stop="2346.996000">But you can look at the videos first to see</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2347.056000" data-stop="2349.079000">whether it might be something that resonates with you.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="2349.779000" data-stop="2349.980000"><strong class="speaker-name">Matei:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Matei" data-start="2350.340000" data-stop="2350.881000">No, I'm the same.</span> <span class="audio-time caption" data-speaker="Matei" data-start="2350.901000" data-stop="2352.443000">I'm very cautious.</span> <span class="audio-time caption" data-speaker="Matei" data-start="2352.710000" data-stop="2353.491000">I've seen that.</span> <span class="audio-time caption" data-speaker="Matei" data-start="2353.511000" data-stop="2354.732000">The learning curve thing is so cool.</span> <span class="audio-time caption" data-speaker="Matei" data-start="2355.513000" data-stop="2360.158000">My kids are like, your</span> <span class="audio-time caption" data-speaker="Matei" data-start="2360.198000" data-stop="2362.701000">computer used to be so pretty when it was a Mac</span> <span class="audio-time caption" data-speaker="Matei" data-start="2362.741000" data-stop="2364.282000">and now it just looks really ugly.</span> <span class="audio-time caption" data-speaker="Matei" data-start="2364.383000" data-stop="2366.084000">I'm like, oh, if you knew.</span> <span class="audio-time caption" data-speaker="Matei" data-start="2367.065000" data-stop="2368.887000">It's so much more beautiful now, but never mind.</span> <span class="audio-time caption" data-speaker="Matei" data-start="2370.729000" data-stop="2371.010000">Cool.</span> <span class="audio-time caption" data-speaker="Matei" data-start="2371.310000" data-stop="2373.092000">We've talked a lot about AI actually already.</span> <p></p><div class="transcript-heading">Do you ever use AI in chatbots for anything else?</div><p></p><span class="audio-time caption" data-speaker="Matei" data-start="2373.692000" data-stop="2376.996000"><strong class="speaker-name">Matei:</strong> <b>Do you ever use AI in chatbots for anything else?</b></span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2377.820000" data-stop="2379.923000"><strong class="speaker-name">Sacha:</strong>  Well, I'm learning French at the moment.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2380.083000" data-stop="2383.448000">In this case, the kind of the regression to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2383.468000" data-stop="2386.572000">the mean that AI does is very useful for me</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2386.632000" data-stop="2390.438000">because I need to know, what is the common word choice here?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2390.718000" data-stop="2393.121000">How do I get the grammar to do the thing?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2393.142000" data-stop="2396.446000">I don't really want to spend an hour of a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2397.047000" data-stop="2399.490000">relatively expensive tutor's time picking apart</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2399.611000" data-stop="2404.297000">my subject-verb agreement or my nouns</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2404.317000" data-stop="2407.181000">agreeing in plurality with the verbs and stuff</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2407.201000" data-stop="2407.742000">like that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2407.722000" data-stop="2413.680000">It's reasonably acceptable to use large language</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2413.720000" data-stop="2415.686000">models for language feedback.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2415.706000" data-stop="2417.592000">That makes sense.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2418.174000" data-stop="2420.601000">In terms of coding,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2420.952000" data-stop="2421.893000">I'm not there yet.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2423.616000" data-stop="2428.822000">Quite a few people are very enthusiastic about it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2428.943000" data-stop="2431.586000">Even in Emacs, some people are like, "I don't write</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2431.626000" data-stop="2432.487000">my code anymore.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2432.507000" data-stop="2434.009000">I just vibe the whole thing."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2434.730000" data-stop="2436.753000">I love the way that it gets a lot of people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2436.833000" data-stop="2439.036000">to make things that they would not otherwise have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2439.076000" data-stop="2442.100000">the time or effort or experience to do,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2442.080000" data-stop="2445.446000">but on the other hand also, it hallucinates</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2445.466000" data-stop="2446.908000">a lot of things. It gets me excited:</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2446.928000" data-stop="2448.611000">oh there's a variable or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2448.631000" data-stop="2450.594000">function specifically for this? No! It doesn't</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2450.694000" data-stop="2455.041000">exist. I can make it exist, so it's a little less</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2455.081000" data-stop="2457.245000">frustrating for me, because I can say, you know,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2457.826000" data-stop="2460.510000">that does make sense. I can write that. I can fill</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2460.550000" data-stop="2462.613000">in the blanks for it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2462.614000" data-stop="2471.051000">But 9 times out of 10, I'll be like, no, no, go back</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2471.111000" data-stop="2472.653000">and do the proper search.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2473.894000" data-stop="2477.379000">One out of 10 times, it'll tell me, oh yeah,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2478.119000" data-stop="2479.681000">there is this function and it will exist,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2479.701000" data-stop="2480.823000">exist, then I'm like, okay, great,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2480.923000" data-stop="2482.244000">I want to use that, because I wouldn't have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2482.324000" data-stop="2483.346000">otherwise come across it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2484.407000" data-stop="2486.610000">But I cannot use it to generate a lot of code</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2486.670000" data-stop="2489.873000">because I get this urge to just rewrite things to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2490.094000" data-stop="2490.955000">fit the way I want.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2491.015000" data-stop="2494.272000">I just use it like… it suggests ideas.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2494.332000" data-stop="2496.742000">It acts kind of like a search engine that gets</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2496.802000" data-stop="2497.887000">things wrong most of the time.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2498.429000" data-stop="2499.835000">I'll just take the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2499.956000" data-stop="2502.225000">interesting parts of that and do it myself.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2503.522000" data-stop="2509.450000">Aside from that, I haven't really dug into it to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2509.470000" data-stop="2510.972000">the extent that other people have.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2511.793000" data-stop="2516.159000">I am happy to take a step back and see how this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2516.279000" data-stop="2519.563000">all shakes out because with the shake-up in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2519.603000" data-stop="2522.908000">pricing and all the externalized costs that are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2522.948000" data-stop="2527.854000">slowly being factored in, I'm not going to build</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2527.894000" data-stop="2528.876000">a house of cards on it.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="2529.216000" data-stop="2531.419000"><strong class="speaker-name">Matei:</strong>  Yeah, that's very wise, I think.</span> <span class="audio-time caption" data-speaker="Matei" data-start="2532.479000" data-stop="2534.182000">How do you feel about</span> <span class="audio-time caption" data-speaker="Matei" data-start="2535.384000" data-stop="2537.147000">the fact that these models have been trained on</span> <span class="audio-time caption" data-speaker="Matei" data-start="2537.568000" data-stop="2539.972000">all these free conversations?</span> <span class="audio-time caption" data-speaker="Matei" data-start="2542.175000" data-stop="2544.059000">They just suck up all</span> <span class="audio-time caption" data-speaker="Matei" data-start="2544.079000" data-stop="2546.423000">this stuff that people have been doing for 40</span> <span class="audio-time caption" data-speaker="Matei" data-start="2546.443000" data-stop="2547.504000">years.</span> <span class="audio-time caption" data-speaker="Matei" data-start="2547.524000" data-stop="2549.087000">Is that a problem in and of itself?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2549.337000" data-stop="2551.280000"><strong class="speaker-name">Sacha:</strong>  It's interesting in the particular</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2551.320000" data-stop="2552.202000">case of Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2552.462000" data-stop="2555.547000">As I mentioned, the vast majority of Emacs Lisp</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2555.767000" data-stop="2558.532000">is released under either the GPL or the MIT</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2558.592000" data-stop="2562.278000">license or even public domain because people in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2562.358000" data-stop="2566.184000">Emacs really care about sharing stuff and they</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2566.224000" data-stop="2567.226000">want other people to do it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2567.266000" data-stop="2569.930000">It's not like, oh, we've got this proprietary</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2569.990000" data-stop="2571.953000">code and it's been stolen away from us, it's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2571.933000" data-stop="2573.816000">us, it's not available for other people.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2573.836000" data-stop="2577.603000">The fact that we're treating AI-generated</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2577.643000" data-stop="2580.868000">code as non-copyrightable, it's okay that it's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2581.469000" data-stop="2582.371000">sort of out there.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2582.731000" data-stop="2584.735000">It would be nice to be able to say, hey, this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2584.755000" data-stop="2586.718000">stuff is GPL, so if you're going to build on it,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2587.820000" data-stop="2590.083000">please share it under the same licenses.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2591.145000" data-stop="2594.090000">But in terms of the way that many people use it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2594.170000" data-stop="2596.354000">for personal configuration and learning,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2596.334000" data-stop="2597.775000">I'm okay with that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2597.855000" data-stop="2599.637000">I know that other people in the community have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2599.717000" data-stop="2602.019000">stronger stances, and that's also okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2603.161000" data-stop="2606.103000">Because there's no attribution, there's no link</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2606.143000" data-stop="2606.884000">back to the person.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2606.904000" data-stop="2611.128000">The licensing doesn't require [lots of] attribution.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2612.209000" data-stop="2617.034000">You don't have to say, oh yeah, this config</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2617.074000" data-stop="2619.016000">was inspired by these people and at these links.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2619.036000" data-stop="2620.778000">You don't have to do that,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2621.078000" data-stop="2623.180000">but it would be nice to be able to follow those</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2623.240000" data-stop="2624.181000">links back to the people.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2624.581000" data-stop="2625.362000">That would be nice.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2626.439000" data-stop="2632.605000">The ability for more people to learn from this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2632.706000" data-stop="2635.188000">stuff is good.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2635.669000" data-stop="2637.751000">If we can encourage them to share what</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2637.811000" data-stop="2640.374000">they're figuring out with other people, that's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2640.414000" data-stop="2641.375000">also good.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="2641.395000" data-stop="2643.617000"><strong class="speaker-name">Matei:</strong>  So is the problem less about kind</span> <span class="audio-time caption" data-speaker="Matei" data-start="2643.657000" data-stop="2645.759000">of taking intellectual property and more about</span> <p></p><div class="transcript-heading">Not breaking connections to people</div><p></p><span class="audio-time caption" data-speaker="Matei" data-start="2647.161000" data-stop="2649.723000"><strong class="speaker-name">Matei:</strong> <b>breaking connections to people</b> or like breaking</span> <span class="audio-time caption" data-speaker="Matei" data-start="2649.784000" data-stop="2651.505000">these traceable connections to other people in</span> <span class="audio-time caption" data-speaker="Matei" data-start="2651.545000" data-stop="2652.126000">the community?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2652.646000" data-stop="2654.488000"><strong class="speaker-name">Sacha:</strong>  That's the part that I'm interested</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2654.608000" data-stop="2657.131000">in and care about, because I feel the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2657.191000" data-stop="2659.434000">community experience of Emacs is very interesting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2660.315000" data-stop="2662.898000">All the other stuff, there are people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2662.978000" data-stop="2665.421000">who are far smarter than me and have focused on...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2665.441000" data-stop="2666.702000">This is above my pay grade, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2666.742000" data-stop="2669.686000">Actually working out intellectual property,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2670.587000" data-stop="2671.308000">what that means.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2673.310000" data-stop="2674.972000">A lot of people think about copyright and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2675.012000" data-stop="2677.455000">copyleft and that stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2677.435000" data-stop="2679.979000">I will leave that to them to sort all of the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2680.139000" data-stop="2681.321000">ethics after that one.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2681.341000" data-stop="2684.467000">I just care about making sure people can feel</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2684.487000" data-stop="2686.149000">like they're learning, feel like they're welcome,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2686.790000" data-stop="2689.976000">and can find the ways forward both with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2689.996000" data-stop="2692.560000">assistance of large language models if they want</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2692.600000" data-stop="2698.109000">to, but also connecting with real people who they</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2698.129000" data-stop="2698.970000">can learn from too.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="2699.592000" data-stop="2701.114000"><strong class="speaker-name">Matei:</strong>  Yeah, super.</span> <span class="audio-time caption" data-speaker="Matei" data-start="2702.275000" data-stop="2704.099000">I think that's sort of the questions I had,</span> <span class="audio-time caption" data-speaker="Matei" data-start="2705.362000" data-stop="2705.642000">really.</span> <span class="audio-time caption" data-speaker="Matei" data-start="2705.662000" data-stop="2707.506000">I'm sure</span> <span class="audio-time caption" data-speaker="Matei" data-start="2707.526000" data-stop="2708.829000">I'm going to have a million other</span> <span class="audio-time caption" data-speaker="Matei" data-start="2708.930000" data-stop="2709.270000">questions.</span> <span class="audio-time caption" data-speaker="Matei" data-start="2709.290000" data-stop="2710.533000">I might email you back about this.</span> <span class="audio-time caption" data-speaker="Matei" data-start="2713.379000" data-stop="2714.682000">Did you have any questions for me?</span> <p></p><div class="transcript-heading">Education and ethics and eureka</div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2715.910000" data-stop="2719.757000"><strong class="speaker-name">Sacha:</strong>  I love now knowing that you were</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2720.178000" data-stop="2722.502000">writing your manifesto with that experience of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2722.643000" data-stop="2724.847000">being an Emacs user in mind, because the way that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2724.887000" data-stop="2727.912000">the <b>education and ethics and eureka</b> was like,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2728.333000" data-stop="2732.821000">that actually lines up precisely with the Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2732.942000" data-stop="2734.545000">community and what it's like and what we care</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2734.585000" data-stop="2735.286000">about.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2735.266000" data-stop="2739.111000">I would love to explore this in future</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2739.191000" data-stop="2742.175000">conversations and see how we can help people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2743.316000" data-stop="2744.558000">navigate this time.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2744.578000" data-stop="2748.864000">There's a lot of froth about AI, and the business</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2748.904000" data-stop="2750.506000">world is losing their heads over this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2750.626000" data-stop="2752.048000">collectively.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2754.251000" data-stop="2758.136000">The programmers in industry either find it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2758.536000" data-stop="2760.799000">useful but also, in general, seem to have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2760.839000" data-stop="2763.703000">a fairly worse experience.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2763.683000" data-stop="2767.508000">This is not where we should be using this.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2768.288000" data-stop="2770.671000">This is not how this is supposed to be turning</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2770.811000" data-stop="2770.972000">out.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2771.332000" data-stop="2774.356000">It should not be leading to more unhappiness, but</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2774.416000" data-stop="2775.817000">it is.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2776.098000" data-stop="2777.880000">It would be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2777.920000" data-stop="2782.606000">interesting to sort out both in the society</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2782.906000" data-stop="2785.048000">level, but also in the individual level, as people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2785.089000" data-stop="2786.350000">make their own choices about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2786.600000" data-stop="2789.565000">what to use and how much to use it for, and also</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2790.126000" data-stop="2792.891000">the impact, even if they're not making those</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2792.911000" data-stop="2794.834000">choices themselves.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2795.355000" data-stop="2799.922000">I think the general sense now, for at least Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2799.962000" data-stop="2802.406000">and Org Mode, is "we're not going to accept</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2803.348000" data-stop="2805.391000">LLM-generated contributions because we've got to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2805.411000" data-stop="2809.518000">have a person who can stand behind the code."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2810.340000" data-stop="2814.427000">We so far have been safe from the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2815.248000" data-stop="2818.574000">inundation of generated pull requests that are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2818.634000" data-stop="2820.717000">plaguing other open source projects.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2821.298000" data-stop="2822.761000">It's definitely something to watch out for.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2823.322000" data-stop="2825.145000">But there is some tension.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2825.328000" data-stop="2828.772000">People are proud of their vibe-coded projects,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2828.792000" data-stop="2830.714000">but on the other hand, people are like, well, it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2830.754000" data-stop="2833.378000">takes 5 minutes or 15 minutes to generate this,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2833.938000" data-stop="2838.183000">and because it's not really maintainable, people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2838.223000" data-stop="2840.566000">will lose interest in it after their 15 minutes</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2840.646000" data-stop="2843.590000">of fame on Reddit with their nice screenshots and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2843.650000" data-stop="2844.050000">all that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2844.591000" data-stop="2846.693000">It's not going to keep moving forward.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="2848.195000" data-stop="2852.280000"><strong class="speaker-name">Matei:</strong>  Is that kind of like a…</span> <span class="audio-time caption" data-speaker="Matei" data-start="2853.104000" data-stop="2855.230000">version of the Curse of Lisp written large? Everyone's</span> <span class="audio-time caption" data-speaker="Matei" data-start="2855.310000" data-stop="2856.794000">just going to write their own programs</span> <span class="audio-time caption" data-speaker="Matei" data-start="2857.656000" data-stop="2860.965000">at home and no one's going to be talking to each</span> <span class="audio-time caption" data-speaker="Matei" data-start="2861.005000" data-stop="2861.386000">other anymore.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2862.028000" data-stop="2867.603000"><strong class="speaker-name">Sacha:</strong>  It is very similar to that. that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2870.047000" data-stop="2871.310000">It can be a problem.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2871.691000" data-stop="2873.154000">It can be an opportunity.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2874.217000" data-stop="2876.663000">It's not one or the other yet.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2876.683000" data-stop="2879.149000">We're figuring out as a community and as</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2879.209000" data-stop="2883.539000">individuals how to navigate this.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2883.660000" data-stop="2886.527000">We have this long history of people not actually</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2886.567000" data-stop="2887.549000">being able to adopt</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2887.529000" data-stop="2889.392000">to adopt someone else's code off the shelf.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2889.472000" data-stop="2892.117000">It's amazing when someone actually puts together</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2892.177000" data-stop="2895.342000">a package that can cut across a large variety of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2895.462000" data-stop="2896.023000">use cases.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2896.063000" data-stop="2897.746000">It takes a lot of work to get there, but things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2897.786000" data-stop="2902.354000">like Magit and Org Mode, how do these things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2902.454000" data-stop="2903.496000">happen?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2903.830000" data-stop="2905.313000">Yeah, it's fantastic.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2905.433000" data-stop="2908.899000">I love the fact that we can look at things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2908.979000" data-stop="2918.856000">like consult and vertico...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2918.876000" data-stop="2920.739000">The fact that they can work for a lot of people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2920.880000" data-stop="2921.481000">is amazing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2921.521000" data-stop="2925.147000">It's actually pretty rare in the Emacs community.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2925.127000" data-stop="2929.355000">But for the most part, we are in our little</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2929.415000" data-stop="2932.501000">fiefdoms and we have to make an effort to do that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2932.562000" data-stop="2933.884000">kind of connection.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2934.145000" data-stop="2936.449000">Whether or not the other person is using</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2936.509000" data-stop="2938.193000">vibe-coded code doesn't matter that much.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2938.473000" data-stop="2940.657000">There's still that barrier. Higher barrier if</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2940.677000" data-stop="2942.381000">you're dealing with vibe code because they don't</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2942.441000" data-stop="2944.765000">understand it and you don't understand it and the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2944.785000" data-stop="2946.088000">code is hard to read.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2946.507000" data-stop="2953.739000">The ideas can be transmitted over blog posts and videos.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2954.340000" data-stop="2957.385000">But at the same time, the fact that more people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2957.886000" data-stop="2960.830000">like you can use this to start to experience the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2960.890000" data-stop="2963.635000">power of Emacs, the customizability of it, and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2963.675000" data-stop="2966.760000">can then go on to imagine, hey, is this what</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2966.820000" data-stop="2967.802000">software could be?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2968.082000" data-stop="2969.164000">Can it be personal?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2969.625000" data-stop="2970.666000">Can it be malleable?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2971.608000" data-stop="2972.970000">Can I say,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2972.950000" data-stop="2976.576000">"No company is going to anticipate this particular</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2976.656000" data-stop="2979.400000">need, but I can make it for myself."?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2979.420000" data-stop="2980.822000">I think that's really worth it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2980.842000" data-stop="2983.266000">If the tools will help us get there, and if</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2983.306000" data-stop="2989.836000">we can find our own balance of ethics that are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2990.337000" data-stop="2992.420000">okay with this... Some people might say, no,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2992.620000" data-stop="2994.664000">definitely not for me, even if it gives me the power.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2994.724000" data-stop="2996.527000">Some people were like, I just want to get</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2996.547000" data-stop="2997.248000">this stuff working.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2997.308000" data-stop="2998.029000">That's cool, too.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2998.570000" data-stop="3000.713000">We get to see how that all works out.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="3001.216000" data-stop="3001.677000"><strong class="speaker-name">Matei:</strong>  It's interesting.</span> <span class="audio-time caption" data-speaker="Matei" data-start="3001.897000" data-stop="3004.001000">I've written this paper for which I</span> <span class="audio-time caption" data-speaker="Matei" data-start="3004.062000" data-stop="3006.627000">gave a talk in Oxford a couple of weeks ago</span> <span class="audio-time caption" data-speaker="Matei" data-start="3006.787000" data-stop="3010.234000">about this, really for anthropologists. It's</span> <span class="audio-time caption" data-speaker="Matei" data-start="3010.294000" data-stop="3011.757000">anthropologists. It's very interesting that a lot of the</span> <span class="audio-time caption" data-speaker="Matei" data-start="3011.777000" data-stop="3013.480000">things we were talking about today, I</span> <span class="audio-time caption" data-speaker="Matei" data-start="3014.222000" data-stop="3015.664000">thought that might be the case on some of</span> <span class="audio-time caption" data-speaker="Matei" data-start="3015.685000" data-stop="3016.226000">these things.</span> <span class="audio-time caption" data-speaker="Matei" data-start="3016.246000" data-stop="3019.512000">It's partly thinking about the</span> <span class="audio-time caption" data-speaker="Matei" data-start="3020.723000" data-stop="3024.691000">way in which AI, ChatGPT, whatever, kind of</span> <span class="audio-time caption" data-speaker="Matei" data-start="3024.731000" data-stop="3026.655000">interferes, becomes like a broker between the</span> <span class="audio-time caption" data-speaker="Matei" data-start="3026.695000" data-stop="3028.398000">community and the individual.</span> <span class="audio-time caption" data-speaker="Matei" data-start="3028.438000" data-stop="3033.099000">So the good side of it is that</span> <span class="audio-time caption" data-speaker="Matei" data-start="3033.100000" data-stop="3034.590000">you're never going to</span> <span class="audio-time caption" data-speaker="Matei" data-start="3034.650000" data-stop="3037.763000">be told to go and read the manual, right?</span> <span class="audio-time caption" data-speaker="Matei" data-start="3037.764000" data-stop="3039.397000">It's always going to say, "Yeah, sure,</span> <span class="audio-time caption" data-speaker="Matei" data-start="3039.398000" data-stop="3041.364000">that's great." But the bad thing is,</span> <span class="audio-time caption" data-speaker="Matei" data-start="3041.365000" data-stop="3042.680000">you're never going to go and read the manual.</span> <span class="audio-time caption" data-speaker="Matei" data-start="3042.681000" data-stop="3044.714000">That's the problem, right?</span> <span class="audio-time caption" data-speaker="Matei" data-start="3044.715000" data-stop="3046.813000">But what I said at the end of it</span> <span class="audio-time caption" data-speaker="Matei" data-start="3046.814000" data-stop="3048.047000">and I don't know whether this resonates</span> <span class="audio-time caption" data-speaker="Matei" data-start="3048.048000" data-stop="3051.214000">at all, but I said now that I'm becoming aware</span> <span class="audio-time caption" data-speaker="Matei" data-start="3051.215000" data-stop="3052.464000">that this is a problem,</span> <span class="audio-time caption" data-speaker="Matei" data-start="3052.465000" data-stop="3054.463000">the paradox that I got into</span> <span class="audio-time caption" data-speaker="Matei" data-start="3054.464000" data-stop="3055.314000">Emacs for the community</span> <span class="audio-time caption" data-speaker="Matei" data-start="3055.315000" data-stop="3057.380000">and yet, in a way, I'm being moved</span> <span class="audio-time caption" data-speaker="Matei" data-start="3057.381000" data-stop="3060.380000">away from the community.</span> <span class="audio-time caption" data-speaker="Matei" data-start="3060.381000" data-stop="3062.458000">Increasingly, now,</span> <span class="audio-time caption" data-speaker="Matei" data-start="3063.147000" data-stop="3065.874000">I will ask not "write this code for me"</span> <span class="audio-time caption" data-speaker="Matei" data-start="3065.994000" data-stop="3068.220000">but "explain to me why this code doesn't work" or</span> <span class="audio-time caption" data-speaker="Matei" data-start="3069.062000" data-stop="3070.726000">"explain to me why my problem could be done</span> <span class="audio-time caption" data-speaker="Matei" data-start="3070.746000" data-stop="3073.272000">differently," and even more than that, not even</span> <span class="audio-time caption" data-speaker="Matei" data-start="3073.352000" data-stop="3076.440000">"explain to me this" but "suggest to me how I could</span> <span class="audio-time caption" data-speaker="Matei" data-start="3076.520000" data-stop="3077.663000">post this on a forum."</span> <span class="audio-time caption" data-speaker="Matei" data-start="3078.132000" data-stop="3082.198000">I'm a bit worried about posting on a forum in</span> <span class="audio-time caption" data-speaker="Matei" data-start="3082.239000" data-stop="3083.741000">case someone turns around and says, that's stupid.</span> <span class="audio-time caption" data-speaker="Matei" data-start="3083.781000" data-stop="3087.627000">Claude or someone can say,</span> <span class="audio-time caption" data-speaker="Matei" data-start="3088.328000" data-stop="3089.811000">if you write it like that, some people might find</span> <span class="audio-time caption" data-speaker="Matei" data-start="3089.851000" data-stop="3090.331000">it interesting.</span> <span class="audio-time caption" data-speaker="Matei" data-start="3091.433000" data-stop="3093.897000">Does that feel like a different kind of use of AI maybe?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3093.978000" data-stop="3097.622000"><strong class="speaker-name">Sacha:</strong>  It does, and I encourage the more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3097.702000" data-stop="3098.864000">reflective use of it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3099.324000" data-stop="3101.407000">For example, you might say, instead of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3101.467000" data-stop="3103.769000">generating this code, you might say, can you help</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3103.830000" data-stop="3105.972000">me figure out what it is that I actually want to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3106.052000" data-stop="3106.973000">have in my workflow?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3107.234000" data-stop="3109.857000">Can you ask me questions to help me figure out</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3110.357000" data-stop="3112.880000">how to do this or how to break it down into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3112.940000" data-stop="3113.781000">smaller tasks?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3114.302000" data-stop="3116.284000">Then that might be a more useful way of doing it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3120.269000" data-stop="3122.312000">Sometimes people respond better when something is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3122.432000" data-stop="3123.954000">asking them questions.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3126.217000" data-stop="3130.603000">That is possibly an interesting use of AI.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="3132.106000" data-stop="3132.466000"><strong class="speaker-name">Matei:</strong>  Amazing.</span> <span class="audio-time caption" data-speaker="Matei" data-start="3132.967000" data-stop="3134.269000">Sacha, thank you so much for your time.</span> <p></p><div class="transcript-heading">Future conversations</div><p></p><span class="audio-time caption" data-speaker="Matei" data-start="3134.489000" data-stop="3138.635000"><strong class="speaker-name">Matei:</strong> Having had this conversation, do you think there's matter here</span> <span class="audio-time caption" data-speaker="Matei" data-start="3138.675000" data-stop="3140.357000">for some kind of live stream or something, maybe</span> <span class="audio-time caption" data-speaker="Matei" data-start="3140.397000" data-stop="3141.919000">with other people who want to talk about this stuff?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3143.624000" data-stop="3145.508000"><strong class="speaker-name">Sacha:</strong>  In fact, if you wanted to take this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3145.568000" data-stop="3147.792000">recording and plop it somewhere public, I am</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3147.813000" data-stop="3148.534000">totally fine with that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3158.033000" data-stop="3160.037000">Learning out loud is how we have these</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3160.097000" data-stop="3162.342000">conversations grow, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3162.322000" data-stop="3169.271000">The conversation is like this brain dump of ideas, and if we</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3169.331000" data-stop="3171.694000">want to start unpacking those ideas and exploring</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3171.774000" data-stop="3174.577000">them through all the multifaceted perspectives</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3174.637000" data-stop="3177.080000">that we have in the Emacs community, other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3177.200000" data-stop="3179.343000">anthropologists or people who are interested in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3179.363000" data-stop="3182.507000">the philosophy of it, there's people who</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3182.487000" data-stop="3186.052000">have so much deep experience in things that I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3186.112000" data-stop="3186.953000">have no idea.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3186.994000" data-stop="3189.517000">I would love for them to be able to say,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3189.537000" data-stop="3191.981000">let's take this facet of this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3192.021000" data-stop="3194.705000">conversation and build on it and explore that one.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3195.225000" data-stop="3198.009000">I am totally okay with both sharing this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3198.090000" data-stop="3200.633000">conversation, if you want to, as well as having</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3200.653000" data-stop="3204.178000">other conversations that other people might be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3204.218000" data-stop="3206.081000">able to ripple out from.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="3206.482000" data-stop="3206.882000"><strong class="speaker-name">Matei:</strong>  Fantastic.</span> <span class="audio-time caption" data-speaker="Matei" data-start="3224.557000" data-stop="3227.060000">I mentioned to Protesilaos that we're going to</span> <span class="audio-time caption" data-speaker="Matei" data-start="3227.080000" data-stop="3228.623000">have this chat, and he said, you know, if you want</span> <span class="audio-time caption" data-speaker="Matei" data-start="3228.643000" data-stop="3231.467000">to at some point organize a discussion over this</span> <span class="audio-time caption" data-speaker="Matei" data-start="3231.507000" data-stop="3233.970000">kind of stuff, he'd be very happy to be involved.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3234.010000" data-stop="3239.097000"><strong class="speaker-name">Sacha:</strong>  I've been experimenting with making myself ask</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3239.117000" data-stop="3239.778000">people for help.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3239.798000" data-stop="3242.922000">Prot has coaching sessions.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3246.567000" data-stop="3249.091000">If our schedules can line up, then I can schedule</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3249.151000" data-stop="3250.232000">a three-way conversation.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3250.313000" data-stop="3251.374000">It can be live and we can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3251.354000" data-stop="3253.915000">build on the ideas that you might have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3253.916000" data-stop="3255.881000">or follow-up questions that you might have,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3255.882000" data-stop="3259.148000">and then we can see if other people do as well.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3259.149000" data-stop="3260.948000">So that could be good.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3269.516000" data-stop="3271.982000">I'm looking forward to hearing about your insights.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3271.983000" data-stop="3275.632000">I would love to see where this goes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3275.633000" data-stop="3278.188000">I think the Emacs community is definitely worth studying.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3278.371000" data-stop="3282.797000">I think that there are insights here that you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3282.837000" data-stop="3285.641000">might not otherwise come across in more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3285.821000" data-stop="3289.687000">specialized, more focused... Like, just developers or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3289.727000" data-stop="3292.250000">whatever, or more focused on closed source.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3292.270000" data-stop="3294.393000">There's something interesting about this mix of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3294.434000" data-stop="3297.538000">Emacs and AI and plain text and all that stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3297.999000" data-stop="3299.240000">I would love to see where this goes.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="3299.941000" data-stop="3300.322000"><strong class="speaker-name">Matei:</strong>  Amazing.</span> <span class="audio-time caption" data-speaker="Matei" data-start="3300.702000" data-stop="3301.303000">Thank you very much.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3301.884000" data-stop="3302.244000"><strong class="speaker-name">Sacha:</strong>  All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3302.485000" data-stop="3302.765000">Bye.</span> <p></p><span class="audio-time caption" data-speaker="Matei" data-start="3303.006000" data-stop="3303.366000"><strong class="speaker-name">Matei:</strong>  Bye.</span></div>
<p></p>


</details>

<p>
If you want to chat about Emacs and AI, you can or check out <a href="https://www.candea.org/">Matei Candea | Anthropology</a>.
</p>
<div><a href="https://sachachua.com/blog/2026/06/transcript-of-chat-with-matei-candea-about-emacs-and-ai/index.org">View Org source for this post</a></div><p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F06%2Ftranscript-of-chat-with-matei-candea-about-emacs-and-ai%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></content>
		</entry><entry>
		<title type="html">Emacs Carnival May 2026 wrap-up: "May I recommend..."</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/05/emacs-carnival-may-2026-may-i-recommend/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-06-01T16:39:46Z</updated>
    <published>2026-06-01T16:50:38Z</published>
    <category term="emacs" />
<category term="community" />
		<id>https://sachachua.com/blog/2026/05/emacs-carnival-may-2026-may-i-recommend/</id>
		<content type="html"><![CDATA[<div class="update" id="orgf9d8e3a">
<p>
<span class="timestamp-wrapper"><time class="timestamp" datetime="2026-06-01">[2026-06-01 Mon]</time></span>: Thanks to everyone who participated! I've included the links below.
</p>

</div>

<p>
It's May and I like puns, so I'm going to suggest <b><a href="https://www.emacswiki.org/emacs/CarnivalMay2026">"May I
recommend&hellip;"</a></b> as our <a href="https://www.emacswiki.org/emacs/Carnival">Emacs Carnival</a> theme this month, building on
lively conversations about people's favourite packages on <a href="https://lobste.rs/s/sz3gab/what_are_your_favorite_emacs_packages">lobste.rs</a>,
<a href="https://www.reddit.com/r/emacs/comments/1stw78y/what_are_your_favorite_emacs_packages/">Reddit</a>, and <a href="https://news.ycombinator.com/item?id=47875031">Hacker News</a>. Let's go beyond packages and talk workflows,
tips, practices, perspectives&hellip; whatever you'd recommend!
</p>

<p>
It was pretty nice having a wiki page that people could edit without
needing to wait for me, so if you write about this topic, feel free to
<a href="https://www.emacswiki.org/emacs/CarnivalMay2026">edit the wiki page</a> and add your link. If you run into problems doing
that, please <a href="mailto:sacha@sachachua.com">e-mail me</a> and I can add the link for you.
</p>

<p>
People have already started sharing their recommendations:
</p>

<ul class="org-ul">
<li><a href="https://www.finaprosadigital.com/2026-05-02-may-emacs-carnival.html">May Emacs Carnival</a>, Carlos Pajuelo</li>
<li><a href="https://idlip.in/posts/may-i-recommend/">May I Recommend EWM</a>, Dilip</li>
<li><a href="https://sachachua.com/blog/2026/05/from-david-dimagid-what-we-talk-about-when-we-talk-about-recommending-emacs-packages/">What we talk about when we talk about recommending Emacs packages</a>, David Dimagid</li>
<li><a href="https://vannilla.org/write/1778277936/article.html">May I recommend… escaping the minibuffer</a>, Alessio Vanni</li>
<li><a href="https://giampaolo.guiducci.it/posts/2026-05-09-may-i-recommend-vibemacsing/">May I recommend&hellip; vibemacsing?</a>, by Giampaolo Guiducci</li>
<li><a href="https://mstempl.netlify.app/post/may-i-recommend/">May I recommend&hellip; to only add items to your init files you understand and document?</a>, by <a href="https://www.emacswiki.org/emacs/MartinStemplinger">MartinStemplinger</a></li>
<li><a href="https://curtismchale.ca/2026/05/05/emacs-carnival-may-i-recommend">May I recommend&hellip; Stop messing around and get work done.</a>, by Curtis McHale</li>
<li><a href="https://www.acdw.net/carnival-emacs-2026-05/">May I recommend declaring bankruptcy from time to time</a>, by Case Duckworth</li>
<li><a href="https://www.matem.unam.mx/~omar/apropos-emacs.html#may-i-recommend-eww-for-emacs-innovative-ui">May I recommend eww for Emacs's innovative UI?</a>, by Omar Antolín Camarena</li>
<li><a href="https://www.chiply.dev/post-emacs-carnival-may">May I recommend&hellip; understanding Emacs's patterns</a>, by Charlie Holland</li>
<li><a href="https://meanwhiling.com/blog/2026-05-21-may-i-recommend-using-your-thumbs/">May I recommend using your thumbs</a> on Meanwhiling</li>
<li><a href="https://martinsos.com/posts/may-recommend-emacs-home-base/">May I recommend thinking of Emacs as your Fortress of Solitude</a>, by Martin Sosic</li>
<li><a href="https://sachachua.com/blog/2026/05/may-28-sacha-and-prot-talk-emacs-may-i-recommend/">Sacha and Prot Talk Emacs: May I Recommend&hellip;</a></li>
<li><a href="https://blog.southfox.me/2026/05/may-i-recommend-treating-emacs-as-emacs/">May I recommend&hellip; Treating Emacs as Emacs</a>, by <a href="https://www.emacswiki.org/emacs/SouthFox">SouthFox</a></li>
<li><a href="https://tusharhero.codeberg.page/may-i-recommend-these-lesser-known-org-modes.html">May I recommend: lesser known org-modes</a>, by tusharhero</li>
<li><a href="https://wenshan.home.blog/2026/05/31/emacs-carnival-may-i-recommend/">May I Recommend: org2blog, journaling &amp; reading hacks</a>, by Wenshan Ren</li>
<li><a href="https://commonplace.doubleloop.net/emacs-carnival-may-i-recommend">May I recommend&hellip; less stretching for your common commands</a>, by Neil M</li>
</ul>

<p>
(Still got ideas, just a bit late? Let me know and I can add it here as well as to Emacs News!)
</p>
<div><a href="https://sachachua.com/blog/2026/05/emacs-carnival-may-2026-may-i-recommend/index.org">View Org source for this post</a></div><p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F05%2Femacs-carnival-may-2026-may-i-recommend%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></content>
		</entry><entry>
		<title type="html">2026-06-01 Emacs news</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/06/2026-06-01-emacs-news/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-06-01T13:56:44Z</updated>
    <published>2026-06-01T13:56:44Z</published>
    <category term="emacs" />
<category term="emacs-news" />
		<id>https://sachachua.com/blog/2026/06/2026-06-01-emacs-news/</id>
		<content type="html"><![CDATA[<p>
There were 17 posts in the in the May carnival topic "<a href="https://www.emacswiki.org/emacs/CarnivalMay2026">May I recommend</a>", very cool! Looking for something to write about next? Check out the June theme <a href="https://rossabaker.com/blog/underappreciated-emacs-built-ins/">Underappreciated Emacs Built-ins</a> hosted by Ross A. Baker.
</p>

<ul class="org-ul">
<li>Help wanted:
<ul class="org-ul">
<li><a href="https://github.com/emacs-elfeed/elfeed/blob/main/NEWS.org#upcoming-400-development">elfeed getting ready for 4.0 release, bug reports welcome</a> (<a href="https://mastodon.world/@minad/116634996927379067">@minad@mastodon.world</a>)</li>
<li><a href="https://codeberg.org/MonadicSheep/emacs/src/branch/cross-platform">Help wanted: testing canvas patch on Windows and Mac OS</a> (<a href="https://mathstodon.xyz/@divyaranjan/116669299330851751">@divyaranjan@mathstodon.xyz</a>)</li>
</ul></li>
<li>Upcoming events (<a href="https://emacslife.com/calendar/emacs-calendar.ics">iCal file</a>, <a href="https://emacslife.com/calendar/">Org</a>):
<ul class="org-ul">
<li>Emacs.si (in person): Emacs.si meetup #6 2026 (v #živo) <a href="https://dogodki.kompot.si/events/67d716c3-6c04-4530-9c1a-f67aa44d31bc">https://dogodki.kompot.si/events/67d716c3-6c04-4530-9c1a-f67aa44d31bc</a> Mon Jun 1 1900 CET</li>
<li>Emacs Paris: S: Emacs workshop in Paris (online) <a href="https://emacs-doctor.com/">https://emacs-doctor.com/</a> Thu Jun 4 0830 America/Vancouver - 1030 America/Chicago - 1130 America/Toronto - 1530 Etc/GMT - 1730 Europe/Berlin - 2100 Asia/Kolkata - 2330 Asia/Singapore</li>
<li>EmacsATX: Emacs Social <a href="https://www.meetup.com/emacsatx/events/314809959/">https://www.meetup.com/emacsatx/events/314809959/</a> Thu Jun 4 1600 America/Vancouver - 1800 America/Chicago - 1900 America/Toronto - 2300 Etc/GMT &ndash; Fri Jun 5 0100 Europe/Berlin - 0430 Asia/Kolkata - 0700 Asia/Singapore</li>
<li>M-x Research: TBA <a href="https://m-x-research.github.io/">https://m-x-research.github.io/</a> Fri Jun 5 0800 America/Vancouver - 1000 America/Chicago - 1100 America/Toronto - 1500 Etc/GMT - 1700 Europe/Berlin - 2030 Asia/Kolkata - 2300 Asia/Singapore</li>
<li>Emacs Berlin: In-Person-Only Emacs-Berlin Stammtisch <a href="https://emacs-berlin.org/">https://emacs-berlin.org/</a> Tue Jun 9 1900 Europe/Berlin</li>
<li>OrgMeetup (virtual) <a href="https://orgmode.org/worg/orgmeetup.html">https://orgmode.org/worg/orgmeetup.html</a> Wed Jun 10 0900 America/Vancouver - 1100 America/Chicago - 1200 America/Toronto - 1600 Etc/GMT - 1800 Europe/Berlin - 2130 Asia/Kolkata &ndash; Thu Jun 11 0000 Asia/Singapore</li>
<li>Atelier Emacs Montpellier (in person) <a href="https://lebib.org/date/atelier-emacs">https://lebib.org/date/atelier-emacs</a> Fri Jun 12 1800 Europe/Paris</li>
</ul></li>
<li>Emacs configuration:
<ul class="org-ul">
<li><a href="https://commonplace.doubleloop.net/emacs-carnival-may-i-recommend">May I recommend&hellip; less stretching for your common commands</a>, by Neil M</li>
<li><a href="http://yummymelon.com/devnull/anju-v150-update.html">Charles Choi: Anju v1.5.0 Update</a> - mouse context menus</li>
<li><a href="https://write.moxnet.eu/brainiac-v2-0-released">Kemal: Brainiac v2.0 released</a> (<a href="https://codeberg.org/kemal/brainiac/releases/tag/v2.0.1">Codeberg</a>, <a href="https://www.reddit.com/r/emacs/comments/1trabor/brainiac_v20_released/">Reddit</a>)</li>
<li><a href="https://github.com/hrs/dotfiles/blob/main/emacs/.config/emacs/configuration.org">dotfiles/emacs/.config/emacs/configuration.org at main · hrs/dotfiles · GitHub</a> (<a href="https://mastodon.social/@hafner/116672833318086035">@hafner</a>)</li>
</ul></li>
<li>Emacs Lisp:
<ul class="org-ul">
<li><a href="https://i.redd.it/eqww4hblfk4h1.png">Wanna give a shout-out to Exercism.org's Emacs Lisp track</a> (<a href="https://www.reddit.com/r/emacs/comments/1ttcwe7/wanna_give_a_shoutout_to_exercismorgs_emacs_lisp/">Reddit</a>)</li>
<li><a href="https://www.youtube.com/watch?v=SbesjOkICsg">Xah Talk Show Ep787. emacs lisp. add width height to all thumbnails</a> (01:01:25)</li>
</ul></li>
<li>Appearance:
<ul class="org-ul">
<li><a href="https://github.com/abougouffa/emacs-vim-file-locals">vim-file-locals: A small package to support some of Vim's modelines in Emacs</a> (<a href="https://www.reddit.com/r/emacs/comments/1ttahii/vimfilelocals_a_small_package_to_support_some_of/">Reddit</a>)</li>
<li><a href="https://github.com/Senka07/turboc-emacs-theme">Senka07/turboc-emacs-theme · GitHub</a> (<a href="https://www.reddit.com/r/emacs/comments/1tpyxp4/i_created_an_emacs_theme_based_on_turbo_c_trying/">Reddit</a>)</li>
</ul></li>
<li>Navigation:
<ul class="org-ul">
<li><a href="https://tailswish.industries/objects/e99c9f61-db9b-425c-914a-63bf25877f85">Tip: bind scroll-up-line and scroll-down-line to shortcuts to make it easy to read when a cat is blocking part of the screen (@lightspill@tailswish.industries)</a></li>
</ul></li>
<li>Writing:
<ul class="org-ul">
<li><a href="https://ray-on-emacs.blogspot.com/2026/05/zap-to-char-m-z.html">Raymond Zeitler: zap-to-char M-z</a> (<a href="https://irreal.org/blog/?p=13838">Irreal</a>)</li>
<li><a href="https://taonaw.com/2026/05/31/installing-harper-on-kubuntu-the.html">TAONAW - Emacs and Org Mode: Installing Harper on Kubuntu: The Right Way. Maybe.</a> - grammar check</li>
</ul></li>
<li>Denote:
<ul class="org-ul">
<li><a href="https://taonaw.com/2026/05/26/using-denote-for-email-a.html">Using Denote for Email: A manual workflow | The Art Of Not Asking Why</a> (<a href="https://fosstodon.org/@jtr/116641175609413241">@jtr@fosstodon.org</a>)</li>
</ul></li>
<li>Org Mode:
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=uaHyR8sAn90">I Replaced Obsidian with Doom Emacs &amp; Org Mode</a> (14:37, <a href="https://www.reddit.com/r/emacs/comments/1tswduc/first_time_emacs_coming_from_neovim_and_im/">Reddit</a>)</li>
<li><a href="https://whhone.com/posts/refining-org-mode-deadlines/">Refining Org-mode Deadlines - Wai Hon's Blog</a> (<a href="https://mastodon.social/@whhone/116635595042154725">@whhone</a>)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1tt7awc/speeding_up_orgagenda_by_keeping_orgagendafiles/">Speeding up org-agenda by keeping org-agenda-files to a minimum</a></li>
<li><a href="https://tusharhero.codeberg.page/may-i-recommend-these-lesser-known-org-modes.html">tusharhero: May I recommend: lesser known org-modes</a>: org-num-mode, org-toggle-pretty-entities (<a href="https://mathstodon.xyz/@tusharhero/116668082218869772">@tusharhero@mathstodon.xyz</a>)</li>
<li><a href="https://wenshan.home.blog/2026/05/31/emacs-carnival-may-i-recommend/">May I Recommend: org2blog, journaling &amp; reading hacks</a>, by Wenshan Ren</li>
<li>Import, export, and integration:
<ul class="org-ul">
<li><a href="https://github.com/novoid/Memacs">Memacs: added module for getting PodcastAddict episods into Org Mode</a> (<a href="https://graz.social/@publicvoit/116636436372373569">@publicvoit@graz.social</a>)</li>
<li><a href="https://codeberg.org/tnalpgge/ox-wikidot">tnalpgge/ox-wikidot: org-mode exporter for Wikidot markup - Codeberg.org</a> (<a href="https://bsd.network/@nasunasu/116639205205943402">@nasunasu@bsd.network</a>)</li>
<li><a href="https://taonaw.com/2026/05/25/journelly-and-osm-for-emacs.html">TAONAW - Emacs and Org Mode: Journelly and OSM for Emacs are good together</a> - OpenStreetMap locations</li>
<li><a href="https://list.orgmode.org/87ecitjbjp.fsf@Host-002.lan/T/#u">Notes from #29 bbb:OrgMeetup on Wed, March 11, 19:00 UTC+3</a> (<a href="https://fosstodon.org/@yantar92/116663682793035364">@yantar92@fosstodon.org</a>)</li>
</ul></li>
<li>Org development: <a href="https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/etc/ORG-NEWS?id=22a724bb41fd24eed50fbf95b54a38a6e4572a14">etc/ORG-NEWS: Announce about internal changes in org-colview</a></li>
</ul></li>
<li>Coding:
<ul class="org-ul">
<li><a href="https://sfba.social/@kickingvegas/116643819531994106">Tip about using show-paren-context-when-offscreen (@kickingvegas@sfba.social)</a></li>
<li><a href="https://buzz.cicadas.surf/@shoshin/116641447472476509">Tip about using magit-git-show-refs (@shoshin@buzz.cicadas.surf)</a></li>
<li><a href="https://emacs.dyerdwelling.family/emacs/20260528103245-emacs&#45;&#45;stashing-a-single-file-and-why-i-was-too-quick-to-blame-vc-mode/">James Dyer: Stashing a Single File, and Why I Was Too Quick to Blame vc-mode!</a></li>
<li><a href="https://kowelenz.social/objects/dd93848d-ba14-45d2-92f1-89106cfb206f">Tip about using phpantom_lsp to improve performance of php-mode - @django@kowelenz.social</a></li>
</ul></li>
<li>Mail, news, and chat:
<ul class="org-ul">
<li><a href="https://coyotetracks.org/blog/best-worst-email/">The Best Worst Email Client</a> (<a href="https://irreal.org/blog/?p=13834">Irreal</a>)</li>
<li><a href="https://thecloudlet.github.io/technical/til/mu4e-gmail-macos/">TIL: Reading Gmail in Emacs with mu4e on macOS | The Cloudlet</a> (<a href="https://www.reddit.com/r/emacs/comments/1tqv985/mu4e_gmail_on_macos_without_oauth2_app_password/">Reddit</a>, <a href="https://irreal.org/blog/?p=13842">Irreal</a>)</li>
</ul></li>
<li>Fun:
<ul class="org-ul">
<li><a href="https://github.com/oantolin/lugagge">oantolin/luggage: A Largely Undesired Gadget: a Generative Art Gallery for Emacs · GitHub</a> (<a href="https://mathstodon.xyz/@oantolin/116666554114870746">@oantolin@mathstodon.xyz</a>)</li>
<li><a href="http://en.andros.dev/blog/d8b3a759/playing-chess-online-with-emacs/">Andros Fenollosa: Playing chess online with Emacs</a>
<ul class="org-ul">
<li><a href="https://andros.dev/blog/002f1b83/jugando-al-ajedrez-en-red-con-emacs/">Jugando al ajedrez en red con Emacs | Andros Fenollosa</a></li>
</ul></li>
</ul></li>
<li>AI:
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1tovj9y/whats_the_least_painful_emacs_ai_coding_agent/">What’s the least painful Emacs + AI coding agent setup right now?</a></li>
<li><a href="https://github.com/seanvert/cherry-prompt">Built a lightweight, zero-dependency interactive file aggregator (with token estimates) to gather LLM context</a> (<a href="https://www.reddit.com/r/emacs/comments/1tos31v/built_a_lightweight_zerodependency_interactive/">Reddit</a>)</li>
<li><a href="https://github.com/ahyatt/llm-buddy">Turning agents on their head: LLM help for human authorship</a> (<a href="https://www.reddit.com/r/emacs/comments/1tnhul1/turning_agents_on_their_head_llm_help_for_human/">Reddit</a>)</li>
<li><a href="https://www.chiply.dev/post-emacs-space-tree">Announcing space-tree: Workspace Management Trees in Emacs</a> (<a href="https://github.com/chiply/space-tree">Github</a>, <a href="https://www.youtube.com/watch?v=ENdca9uBtoQ">YouTube</a> 27:56, <a href="https://www.reddit.com/r/emacs/comments/1tp35hs/announcing_spacetree_workspace_management_trees/">Reddit</a>, <a href="https://news.ycombinator.com/item?id=48296372">HN</a>)</li>
</ul></li>
<li>Community:
<ul class="org-ul">
<li><a href="https://blog.southfox.me/2026/05/may-i-recommend-treating-emacs-as-emacs/">May I recommend&hellip; Treating Emacs as Emacs — 狐狸反走矣</a> (<a href="https://foxsay.southfox.me/@SouthFox/116665355522011429">@SouthFox@foxsay.southfox.me</a>)</li>
<li><a href="https://sachachua.com/blog/2026/05/may-28-sacha-and-prot-talk-emacs-may-i-recommend/">Sacha Chua: Yay Emacs 32: Sacha and Prot Talk Emacs: May I recommend&hellip;</a> (<a href="https://protesilaos.com/codelog/2026-05-27-emacs-live-sacha-chua-may-i-recommend/">Prot</a>, <a href="https://www.youtube.com/watch?v=xl-ifABU45A">YouTube</a> 01:01:41)</li>
<li><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/">Emacs Chat 24: Omar Antolin Camarena</a> (<a href="https://www.youtube.com/watch?v=M7-dJb2GTN4">YouTube</a> 01:08:11)
<ul class="org-ul">
<li><a href="https://sachachua.com/blog/2026/05/karthik-s-notes-on-emacs-chat-24-omar-antolin-camarena/">Sacha Chua: Karthik's notes on Emacs Chat 24: Omar Antolin Camarena</a></li>
</ul></li>
<li><a href="https://fediverse.tv/c/emacs_with_dr_howell/videos">Emacs with Dr. Howell - FediverseTV</a> (<a href="https://fediscience.org/@jameshowell/116664141819486533">@jameshowell@fediscience.org</a>)</li>
<li><a href="https://www.youtube.com/watch?v=mqSzXM9R8W4">From GNU Emacs to code gouv fr</a> (38:59) - Bastien Guerry</li>
<li><a href="https://www.youtube.com/watch?v=X1nu0il5KgU">Shibuya.lisp lispmeetup #118  2026-05-28</a> (01:42:20)</li>
</ul></li>
<li>Other:
<ul class="org-ul">
<li>Carnival for June: <a href="https://rossabaker.com/blog/underappreciated-emacs-built-ins/">Ross A. Baker: Underappreciated Emacs built-ins</a> (<a href="https://social.rossabaker.com/@ross/116672580144160342">@ross@rossabaker.com</a>)</li>
<li><a href="https://github.com/abougouffa/real-backup">real-backup-mode: a package to backup files at each save point, never lose your changes again</a> (<a href="https://www.reddit.com/r/emacs/comments/1trbjnp/realbackupmode_a_package_to_backup_files_at_each/">Reddit</a>, <a href="https://www.emacswiki.org/emacs/BackupEachSave">EmacsWiki</a>)</li>
<li><a href="https://mbork.pl/2026-05-25_Ignoring_pdfs_when_auto-reverting_files">Marcin Borkowski: Ignoring pdfs when auto-reverting files</a> (<a href="https://irreal.org/blog/?p=13840">Irreal</a>)</li>
<li><a href="https://ray-on-emacs.blogspot.com/2026/05/emacs-view-commands.html">Raymond Zeitler: Emacs view- Commands</a></li>
<li><a href="https://pulusound.fi/blog/emacs-bra-size-calculator">Emacs bra size calculator - pulusound</a> (<a href="https://anticapitalist.party/@ahihi/116648421712726884">@ahihi@anticapitalist.party</a>, <a href="https://news.ycombinator.com/item?id=48330390">HN</a>, <a href="https://lobste.rs/s/yszuka/emacs_bra_size_calculator">lobste.rs</a>, <a href="https://programming.dev/post/51246395?scrollToComments=true">programming.dev</a>)</li>
</ul></li>
<li>Emacs development:
<ul class="org-ul">
<li>emacs-devel: <a href="https://yhetil.org/emacs-devel/865x4631fw.fsf@gnu.org/">Where to find out what happens when a menu is created or handled</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=64f4ce7b2d9d8bf8c291b8b6993f9b4ced51814c">Allow optionally disabling the use of TABs for TTY cursor movement</a></li>
<li><a href="https://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=833553dd9aec0072961a7f1a7797f9481855a07f">dbus-call-method-asynchronously supports also an ERROR-HANDLER</a></li>
</ul></li>
<li>New packages:
<ul class="org-ul">
<li><a target="_blank" href="https://melpa.org/#/elot">elot</a>: Emacs Literate Ontology Tool (ELOT) (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/f90-ts-mode">f90-ts-mode</a>: Tree-sitter based Fortran 90 mode (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/lsp-ltex-plus">lsp-ltex-plus</a>: Grammar and spell checking for LaTeX, Markdown, Org and more (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/mac-ime">mac-ime</a>: Seamless macOS IME integration without any IME patches (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/ox-zola">ox-zola</a>: Org export to Zola static site generator (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/phony">phony</a>: Speech bindings for Elisp (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/sysml-mode">sysml-mode</a>: Major mode for SysML v2 (Systems Modeling Language) (MELPA)</li>
</ul></li>
</ul>

<p>
Links from <a href="https://www.reddit.com/r/emacs">reddit.com/r/emacs</a>, <a href="https://www.reddit.com/r/orgmode">r/orgmode</a>, <a href="https://www.reddit.com/r/spacemacs">r/spacemacs</a>, <a href="https://mastodon.social/tags/emacs">Mastodon #emacs</a>, <a href="https://bsky.app/hashtag/emacs">Bluesky #emacs</a>, <a href="https://hn.algolia.com/?query=emacs&amp;sort=byDate&amp;prefix&amp;page=0&amp;dateRange=all&amp;type=story">Hacker News</a>, <a href="https://lobste.rs/search?q=emacs&amp;what=stories&amp;order=newest">lobste.rs</a>, <a href="https://programming.dev/c/emacs?dataType=Post&amp;page=1&amp;sort=New">programming.dev</a>, <a href="https://lemmy.world/c/emacs">lemmy.world</a>, <a href="https://lemmy.ml/c/emacs?dataType=Post&amp;page=1&amp;sort=New">lemmy.ml</a>, <a href="https://planet.emacslife.com">planet.emacslife.com</a>, <a href="https://www.youtube.com/playlist?list=PL4th0AZixyREOtvxDpdxC9oMuX7Ar7Sdt">YouTube</a>, <a href="http://git.savannah.gnu.org/cgit/emacs.git/log/etc/NEWS">the Emacs NEWS file</a>, <a href="https://emacslife.com/calendar/">Emacs Calendar</a>, and <a href="https://lists.gnu.org/archive/html/emacs-devel/2026-06">emacs-devel</a>. Thanks to Andrés Ramírez for emacs-devel links. Do you have an Emacs-related link or announcement? Please e-mail me at <a href="mailto:sacha@sachachua.com">sacha@sachachua.com</a>. Thank you!</p>
<div><a href="https://sachachua.com/blog/2026/06/2026-06-01-emacs-news/index.org">View Org source for this post</a></div><p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F06%2F2026-06-01-emacs-news%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></content>
		</entry><entry>
		<title type="html">Karthik's notes on Emacs Chat 24: Omar Antolin Camarena</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/05/karthik-s-notes-on-emacs-chat-24-omar-antolin-camarena/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-05-31T22:35:02Z</updated>
    <published>2026-05-31T22:35:02Z</published>
    <category term="emacs" />
		<id>https://sachachua.com/blog/2026/05/karthik-s-notes-on-emacs-chat-24-omar-antolin-camarena/</id>
		<content type="html"><![CDATA[<div class="update" id="org4b1c117">
<p>
Here's a guest post from <a href="https://karthinks.com/">Karthik Chikmagalur</a> in response to <a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/">Emacs Chat 24: Omar Antolin Camarena</a>.
</p>

</div>

<ul class="org-ul">
<li><a href="https://archive.org/details/emacs-chat-24-omar-antolin-camarena/?start=16:00">16:00</a> - Omar's embark-on-last-message is gold!  I implemented it and
have already used it a dozen times in an hour.</li>

<li><p>
<a href="https://archive.org/details/emacs-chat-24-omar-antolin-camarena/?start=17:00">17:00</a>  - Omar mentions his tmp package for creating throwaway buffers.
I use the scratch package for this.  <code>M-x scratch</code> will open up a
scratch buffer.  If you had a region selected, that will be copied to
the scratch buffer.  By default, it will use the same major mode as
the buffer you calling it from.  Calling <code>M-x scratch</code> with a prefix arg
will let you pick the major mode you want.
</p>

<p>
I have some additional customizations to try to automagically pick a
major mode based on what I have selected:
<a href="https://github.com/karthink/.emacs.d/blob/3deed38c0e02e95fdfab6812c494b1736b945a1e/lisp/utilities.el#L36">https://github.com/karthink/.emacs.d/blob/3deed38c0e02e95fdfab6812c494b1736b945a1e/lisp/utilities.el#L36</a>
</p>

<p>
Also related is the <a target="_blank" href="https://melpa.org/#/edit-indirect">edit-indirect</a> package, which I'm sure you're aware
of.  I think of it as scratch's dual: scratch is for when I want to
edit something without regard to its provenance, <code>edit-indirect</code> is for
editing the source (exactly like <code>org-edit-special</code>).
</p>

<p>
I also try to automagically guess which major mode a piece of text
should be edited in.  <code>edit-indirect</code> edits something that looks like a
lisp form in <code>lisp-interaction-mode</code>, even if the origin is (say) this
email composition buffer:
<a href="https://github.com/karthink/.emacs.d/blob/3deed38c0e02e95fdfab6812c494b1736b945a1e/lisp/utilities.el#L67">https://github.com/karthink/.emacs.d/blob/3deed38c0e02e95fdfab6812c494b1736b945a1e/lisp/utilities.el#L67</a>
</p></li>

<li><p>
<a href="https://archive.org/details/emacs-chat-24-omar-antolin-camarena/?start=21:20">21:20</a>  - You mention that you sometimes want to insert something into
the minibuffer when you're in the minibuffer, but you end up inserting
into the main buffer instead.  Omar agreed that there is no easy fix
for this.
</p>

<p>
Omar, Daniel Mendler and I actually discussed this years ago and came
up with a separate command to do this:
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">defun</span> <span class="org-function-name">minibuffer-replace-input</span> (<span class="org-type">&amp;optional</span> arg)
  <span class="org-doc">"Replace original minibuffer input.</span>

<span class="org-doc">When a recursive minibuffer is active, insert the current string</span>
<span class="org-doc">into the original minibuffer input.  With prefix ARG, replace it</span>
<span class="org-doc">instead."</span>
  (<span class="org-keyword">interactive</span> <span class="org-string">"P"</span>)
  (<span class="org-keyword">when</span> (<span class="org-keyword">and</span> (minibufferp) (&gt; (minibuffer-depth) 1))
    (<span class="org-keyword">let*</span> ((replacement (minibuffer-contents)))
      (<span class="org-keyword">unwind-protect</span> (minibuffer-quit-recursive-edit)
        (run-at-time 0 nil
                     (<span class="org-keyword">lambda</span> (rep)
                       (<span class="org-keyword">when</span> arg (delete-minibuffer-contents))
                       (insert rep)
                       (pulse-momentary-highlight-one-line))
                     replacement)))))
</code></pre>
</div>


<p>
I don't need it every day, but when I do it's very handy.
</p></li>

<li><p>
<a href="https://archive.org/details/emacs-chat-24-omar-antolin-camarena/?start=29:40">29:40</a>  - Omar mentions that he prefers to have lots of commands to mark
specific text objects instead of hammering <code>expand-region</code> (or
<code>expreg-expand</code>).  There is a (now) old package called <a target="_blank" href="https://melpa.org/#/easy-kill">easy-kill</a> which
does this, allowing you to define marking commands for different
objects at point (e.g. s for sexp, w for word, l for line, d for defun
etc).  It's easy to add support for more objects because I think it
integrates with <code>thing-at-point</code>.  The marking command provided by this
package is actually called <code>easy-mark</code>.
</p>

<p>
But <code>easy-kill</code> / <code>easy-mark</code> is actually the best of both marking styles,
because you can use <code>SPC</code> to cycle between marking all the different
text objects at point.  I've further integrated this with
expand-region so that at any point in the <code>easy-kill</code> mark process I can
expand the region as well:
<a href="https://github.com/karthink/.emacs.d/blob/3deed38c0e02e95fdfab6812c494b1736b945a1e/lisp/setup-editing-extra.el#L250">https://github.com/karthink/.emacs.d/blob/3deed38c0e02e95fdfab6812c494b1736b945a1e/lisp/setup-editing-extra.el#L250</a>
</p></li>

<li><a href="https://archive.org/details/emacs-chat-24-omar-antolin-camarena/?start=36:00">36:00</a>  - Didn't know Omar is the reason <code>vertico-grid-mode</code> exists.
That's fortunate, I use it all the time!</li>

<li><a href="https://archive.org/details/emacs-chat-24-omar-antolin-camarena/?start=44:00">44:00</a>  - Omar's point about improving ffap to improve Embark's default
action on files is great, really speaks to my sensibilities about
composing features in Emacs in a way that provides multiplicative
benefits.</li>

<li><a href="https://archive.org/details/emacs-chat-24-omar-antolin-camarena/?start=48:00">48:00</a>  - <code>NOPE</code>!  I use <code>CANCELLED</code> as a <code>TODO</code> kwd in Org, but the fact that
it's not 4 letters long has bothered me forever.  <code>NOPE</code> is much better.</li>

<li><p>
<a href="https://archive.org/details/emacs-chat-24-omar-antolin-camarena/?start=58:30">58:30</a>  - Re: Omar's toggle map: this is something I think many users
end up writing?  Mine is a transient map:
<img src="https://share.karthinks.com/toggle-modes-transient.png" alt="toggle-modes-transient.png">
that grows extra columns in specific major-modes:
<img src="https://share.karthinks.com/toggle-modes-full-transient.png" alt="toggle-modes-full-transient.png">
</p>

<p>
But I appreciate that Omar uses a regular keymap instead of a visual
menu, that's the Embark way.  Transient menus are frustratingly
non-composable with other Emacs features.
</p></li>

<li><a href="https://archive.org/details/emacs-chat-24-omar-antolin-camarena/?start=1:00:00">1:00:00</a>  - <code>isearch-delete-wrong</code> is actually built-into ISearch?
Pressing <code>C-g</code> once should delete the non-matching part.  It's possible
he's customized <code>C-g</code> to quit Isearch right away.</li>

<li><a href="https://archive.org/details/emacs-chat-24-omar-antolin-camarena/?start=1:07:30">1:07:30</a>  - I didn't understand Omar's practice of using embark-dwim to
preview the result of any minibuffer command, like <code>org-ql-find</code>.  Is
this something you were able to reproduce?

<ul class="org-ul">
<li>I've been using <a target="_blank" href="https://melpa.org/#/dot-mode">dot-mode</a> for almost as long as Emacs, to the point
where I've often made the mistake of assuming it was an included
feature.  It uses simple heuristics, but works surprisingly well at
capturing your intent on what the "bounds of an edit" should be in
Emacs.</li>

<li><p>
Omar mentioned that he stopped using <a target="_blank" href="https://melpa.org/#/multiple-cursors">multiple-cursors</a> because the
immediate feedback from all cursors inspired false confidence, as
off-screen cursors could do something unexpected.  I use a personal
fork of a package called macrursors that's somewhere in between
multiple-cursors and keyboard macros:
</p>

<p>
<a href="https://github.com/corytertel/macrursors">https://github.com/corytertel/macrursors</a>
Fork: <a href="https://github.com/karthink/macrursors">https://github.com/karthink/macrursors</a>
</p>

<p>
It's inspired by both <a target="_blank" href="https://melpa.org/#/multiple-cursors">multiple-cursors</a> and meow's <code>beacon-mode</code>.  It
places cursors at the locations where the keyboard macro will be
executed, but executes the full keyboard macro at each location at
once, without immediate updates.  This addresses the "false confidence"
issue, but it does three other things that are very handy:
</p>

<ul class="org-ul">
<li>You can bound the region inside which cursors should be placed.  The
scope can be the paragraph, like in Omar's example, but also any
other text object (defun, line etc), and you can cycle between the
scopes or expand it with <code>expand-region</code>.</li>

<li>You can place cursors from most common actions, like at ISearch or
Avy candidates (selectively or all at once), or at all text objects
of a certain type inside the bounds.</li>

<li><p>
You can "narrow" the buffer to only the cursor locations, fitting
and verifying more of them on screen.  When the macro runs, the
selective display in the buffer persists for a second so you can
scan the results:
</p>

<p>
<a href="https://share.karthinks.com/macrursors-isearch-hideshow-demo.mp4">https://share.karthinks.com/macrursors-isearch-hideshow-demo.mp4</a>
</p>

<p>
Steps:
</p>

<ol class="org-ol">
<li>Start ISearch and search for <code>cl-defmethod</code></li>
<li>Create cursors from all ISearch matches</li>
<li>Selectively display only the cursors</li>
<li>Show more context around the cursors</li>
<li>Make a change (involving a kmacro counter)</li>
<li>Finish.  (The selective display persists for a second.)</li>
<li>Examine the changes.</li>
</ol></li>
</ul>

<p>
It uses undo amalgamation by default so you can undo all the cursor
changes except the original one in one step.  Of course, your changes
are stored in the kmacro ring so you can now apply them as regular
keyboard macros too.
</p>

<p>
Most of these features are probably present in <a target="_blank" href="https://melpa.org/#/multiple-cursors">multiple-cursors</a> at
this point, although I'm not sure about bounding cursor ranges with
<code>macrursors-select</code>.  But this has replaced the usual keyboard macro
workflow for me, and not many people are aware of macrursors so I
thought I'd mention it.
</p></li>
</ul></li>
</ul>

<div class="update" id="org76639f1">
<p>
Thanks to Karthik for his notes! If you have any comments, please feel free to <a href="mailto:contact@karthinks.com">email him</a>.
</p>

</div>
<div><a href="https://sachachua.com/blog/2026/05/karthik-s-notes-on-emacs-chat-24-omar-antolin-camarena/index.org">View Org source for this post</a></div><p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F05%2Fkarthik-s-notes-on-emacs-chat-24-omar-antolin-camarena%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></content>
		</entry><entry>
		<title type="html">Emacs Chat 24: Omar Antolin Camarena</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-05-31T22:36:02Z</updated>
    <published>2026-05-29T22:02:50Z</published>
    <category term="emacs" />
<category term="emacs-chat-podcast" />
<category term="emacs-chat" />
		<id>https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/</id>
		<content type="html"><![CDATA[<div class="update" id="orgbe753d6">
<p>
<span class="timestamp-wrapper"><time class="timestamp" datetime="2026-05-31">[2026-05-31 Sun]</time></span>: Updated transcript and added a link to <a href="https://sachachua.com/blog/2026/05/karthik-s-notes-on-emacs-chat-24-omar-antolin-camarena/">Karthik's notes</a>.
</p>

</div>

<p>
I chatted with Omar Antolín Camarena about Emacs, keyboard macros, temporary buffers, Embark, and other workflow tips.
<video preload="none" controls="1" src="https://archive.org/download/emacs-chat-24-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena" poster="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/2026-05-17_18-03-54.png" type="nil"><track kind="subtitles" label="Captions" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena.vtt" srclang="en" default=""><span>Video not supported. Thumbnail:<br><img src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/2026-05-17_18-03-54.png" alt="Thumbnail"></span></video>
</p>

<p>
<a href="https://archive.org/details/emacs-chat-24-omar-antolin-camarena/">View in the Internet Archive</a>, <a href="https://sachachua.com/blog/feed/atom/index.xml#ID-emacs-chat-24-omar-antolin-camarena-transcript">read the transcript online</a>, <a href="https://youtube.com/live/M7-dJb2GTN4">watch or comment on YouTube</a>, download <a href="https://archive.org/download/emacs-chat-24-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena.mp3">the audio</a> or <a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena.vtt">the transcript</a>, or <a href="mailto:sacha@sachachua.com">e-mail me</a>.
</p>

<p>
Related links:
</p>

<ul class="org-ul">
<li><a href="https://www.matem.unam.mx/~omar/">Omar Antolín Camarena</a>: a researcher at Instituto de Matemáticas, UNAM in Mexico City</li>
<li><a href="https://www.matem.unam.mx/~omar/apropos-emacs.html">M-x apropos Emacs</a></li>
<li><a href="https://github.com/oantolin/emacs-config">oantolin/emacs-config: My personal Emacs configuration · GitHub</a></li>
<li><a href="https://github.com/oantolin/placeholder">oantolin/placeholder: Emacs package to treat any buffer as a template with placeholders to fill-in · GitHub</a></li>
<li><a href="https://github.com/oantolin">oantolin (Omar Antolín Camarena) · GitHub</a></li>
<li><a href="https://mathstodon.xyz/@oantolin">Omar Antolín (@oantolin@mathstodon.xyz) - Mathstodon</a></li>
<li><a href="https://www.reddit.com/user/oantolin/">u/oantolin on Reddit</a></li>
<li><a href="https://toobnix.org/w/752ix2RNx5BijosuYtSGCv">#Emacs #Embark with Omar Antolin, Ramin Honary and Kent Pitman #lisp and more #interview #lispyGopherClimate - toobnix</a></li>

<li><a href="https://sachachua.com/blog/2026/05/karthik-s-notes-on-emacs-chat-24-omar-antolin-camarena/">Karthik's notes on Emacs Chat 24: Omar Antolin Camarena</a></li>
<li></li>
</ul>
<p>
You can add the iCal for upcoming Emacs Chat episodes to your calendar. <a href="https://sachachua.com/topic/emacs-chat/upcoming-emacs-chats.ics">https://sachachua.com/topic/emacs-chat/upcoming-emacs-chats.ics</a>
</p>

<p>
Find more Emacs Chats or join the fun: <a href="https://sachachua.com/emacs-chat">https://sachachua.com/emacs-chat</a>
</p>
<div id="outline-container-emacs-chats-emacs-chat-24-omar-antolin-camarena-chapters" class="outline-3">
<h3 id="emacs-chats-emacs-chat-24-omar-antolin-camarena-chapters"><a href="https://sachachua.com/blog/feed/atom/index.xml#emacs-chats-emacs-chat-24-omar-antolin-camarena-chapters">Chapters</a></h3>
<div class="outline-text-3" id="text-emacs-chats-emacs-chat-24-omar-antolin-camarena-chapters">
<p>
</p><ul class="org-ul">
<li><span class="audio-time" data-start="0.031" data-stop="2.117">0:00</span> Ignore this part</li>
<li><span class="audio-time" data-start="18.170" data-stop="21.917">0:18</span> Opening</li>
<li><span class="audio-time" data-start="46.000" data-stop="49.309">0:46</span> How did you get into Emacs in the first place?</li>
<li><span class="audio-time" data-start="361.253" data-stop="363.958">6:01</span> Repeating edits</li>
<li><span class="audio-time" data-start="448.726" data-stop="453.415">7:28</span> dot-mode: repeating commands</li>
<li><span class="audio-time" data-start="564.410" data-stop="567.534">9:24</span> block-undo: undo things as a chunk</li>

<li><span class="audio-time" data-start="629.139" data-stop="631.102">10:29</span> Starting and stopping keyboard macros</li>

<li><span class="audio-time" data-start="735.848" data-stop="741.857">12:15</span> Keycast and Embark</li>

<li><span class="audio-time" data-start="813.575" data-stop="814.716">13:33</span> apply-macro-to-lines-of-paragraph</li>
<li><span class="audio-time" data-start="994.070" data-stop="997.474">16:34</span> embark-on-last-message</li>
<li><span class="audio-time" data-start="1086.124" data-stop="1086.565">18:06</span> tmp-buffer with a major mode</li>

<li><span class="audio-time" data-start="1166.532" data-stop="1171.279">19:26</span> placeholder</li>

<li><span class="audio-time" data-start="1238.605" data-stop="1240.307">20:38</span> enable-recursive-minibuffers</li>
<li><span class="audio-time" data-start="1377.928" data-stop="1380.210">22:57</span> Overriding embark-select</li>

<li><span class="audio-time" data-start="1412.967" data-stop="1415.823">23:32</span> quick-calc</li>

<li><span class="audio-time" data-start="1590.600" data-stop="1593.080">26:30</span> Multiple cursors</li>
<li><span class="audio-time" data-start="1660.582" data-stop="1662.105">27:40</span> Block-undo and regular undo</li>
<li><span class="audio-time" data-start="1733.600" data-stop="1736.085">28:53</span> Cycling through Embark targets</li>
<li><span class="audio-time" data-start="1899.840" data-stop="1901.855">31:39</span> Imenu for navigation</li>
<li><span class="audio-time" data-start="1971.993" data-stop="1974.556">32:51</span> Collaboration</li>
<li><span class="audio-time" data-start="2281.080" data-stop="2282.638">38:01</span> Technology adoption and Emacs packages</li>
<li><span class="audio-time" data-start="2406.100" data-stop="2409.479">40:06</span> Personal packages and naming conventions</li>
<li><span class="audio-time" data-start="2546.500" data-stop="2548.574">42:26</span> find-file-at-point and directory names</li>

<li><span class="audio-time" data-start="2629.200" data-stop="2631.734">43:49</span> The value of using Emacs’s APIs</li>
<li><span class="audio-time" data-start="2696.840" data-stop="2698.175">44:56</span> org-ql and usual files</li>

<li><span class="audio-time" data-start="2826.260" data-stop="2827.596">47:06</span> Shortcuts for org-ql search syntax</li>
<li><span class="audio-time" data-start="2863.400" data-stop="2865.651">47:43</span> Org TODO states: TODO, WAIT, DONE, NOPE</li>

<li><span class="audio-time" data-start="2906.460" data-stop="2908.199">48:26</span> The inserter macro</li>

<li><span class="audio-time" data-start="3005.760" data-stop="3007.302">50:05</span> luggage: generative art experiments</li>

<li><span class="audio-time" data-start="3229.383" data-stop="3230.805">53:49</span> Teaching and Emacs</li>
<li><span class="audio-time" data-start="3293.187" data-stop="3293.888">54:53</span> The print10 generator</li>

<li><span class="audio-time" data-start="3383.600" data-stop="3386.598">56:23</span> arXiv</li>

<li><span class="audio-time" data-start="3509.103" data-stop="3510.727">58:29</span> Toggle keymap</li>

<li><span class="audio-time" data-start="3654.970" data-stop="3658.619">1:00:54</span> isearch-delete-wrong</li>

<li><span class="audio-time" data-start="3794.105" data-stop="3797.269">1:03:14</span> isearch - continue from the beginning of the match</li>

<li><span class="audio-time" data-start="3912.460" data-stop="3916.084">1:05:12</span> Using keymaps to remember sets of commands</li>
<li><span class="audio-time" data-start="3964.981" data-stop="3966.383">1:06:04</span> Other things from the config</li>
</ul>

<p></p>
</div>
</div>
<div id="outline-container-emacs-chats-emacs-chat-24-omar-antolin-camarena-transcript" class="outline-3">
<h3 id="emacs-chats-emacs-chat-24-omar-antolin-camarena-transcript"><a href="https://sachachua.com/blog/feed/atom/index.xml#emacs-chats-emacs-chat-24-omar-antolin-camarena-transcript">Transcript</a></h3>
<div class="outline-text-3" id="text-emacs-chats-emacs-chat-24-omar-antolin-camarena-transcript">
<details class="code-details"><a name="ID-emacs-chat-24-omar-antolin-camarena-transcript"></a><summary>Expand this to see the transcript and screenshots</summary>
<p>
</p><div class="full-transcript"><p></p><div class="transcript-heading"><span class="audio-time" data-start="0.000000">0:00</span> <strong>Ignore this part</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="0.031000" data-stop="2.117000"><strong class="speaker-name">Sacha:</strong>  Cut off at, you know, roughly an</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2.217000" data-stop="3.702000">hour and seven minutes from now.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3.762000" data-stop="5.347000">She's going to come out and have lunch.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6.751000" data-stop="7.072000">Okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7.593000" data-stop="7.914000">All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7.934000" data-stop="9.619000">Going live.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="13.160000" data-stop="17.008000">Alright folks, we are here a little bit early.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="18.000000">0:18</span> <strong>Opening</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="18.170000" data-stop="21.917000"><strong class="speaker-name">Sacha:</strong>  This is Emacs Chat 24 with Omar Antolin Camarena,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="22.378000" data-stop="24.963000">whom we know from Embark and Orderless and a lot</span> <span class="audio-time caption" data-speaker="Sacha" data-start="25.003000" data-stop="27.388000">of other little packages that I personally use on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="27.468000" data-stop="28.190000">a daily basis.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="28.210000" data-stop="29.693000">I'm very much looking forward to this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="29.773000" data-stop="31.656000">conversation.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="31.676000" data-stop="33.480000"><strong class="speaker-name">Omar:</strong>  Yeah, so am I. Very excited.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="34.270000" data-stop="36.676000"><strong class="speaker-name">Sacha:</strong>  Of course, before we dive into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="36.736000" data-stop="40.205000">all these lovely details, tell us a little bit</span> <span class="audio-time caption" data-speaker="Sacha" data-start="40.225000" data-stop="41.288000">more about your context.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="41.509000" data-stop="43.454000">You're a researcher at the Mathematics</span> <span class="audio-time caption" data-speaker="Sacha" data-start="43.554000" data-stop="43.995000">Institute.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="44.055000" data-stop="45.940000">I can see why Emacs would be a great fit for that.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="46.000000">0:46</span> <strong>How did you get into Emacs in the first place?</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="46.000000" data-stop="49.309000"><strong class="speaker-name">Sacha:</strong> How did you get into Emacs in the first place?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="49.795000" data-stop="52.740000"><strong class="speaker-name">Omar:</strong>  I think it's just by virtue</span> <span class="audio-time caption" data-speaker="Omar" data-start="52.780000" data-stop="53.361000">of being old.</span> <span class="audio-time caption" data-speaker="Omar" data-start="53.441000" data-stop="55.945000">When I started out looking for a text editor,</span> <span class="audio-time caption" data-speaker="Omar" data-start="55.985000" data-stop="57.687000">there were not that many great options.</span> <span class="audio-time caption" data-speaker="Omar" data-start="58.328000" data-stop="63.136000">When I was a teenager, 30 years ago, I</span> <span class="audio-time caption" data-speaker="Omar" data-start="63.276000" data-stop="65.459000">decided to install Linux because I heard about it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="65.559000" data-stop="68.063000">That was the era where you went to a newsstand</span> <span class="audio-time caption" data-speaker="Omar" data-start="68.123000" data-stop="70.026000">and you bought a Linux magazine that came with a</span> <span class="audio-time caption" data-speaker="Omar" data-start="70.066000" data-stop="73.452000">CD, and I installed Linux from that.</span> <span class="audio-time caption" data-speaker="Omar" data-start="73.472000" data-stop="77.558000">I think it was Slackware, maybe.</span> <span class="audio-time caption" data-speaker="Omar" data-start="77.538000" data-stop="82.511000">I was already a hobby computer programmer.</span> <span class="audio-time caption" data-speaker="Omar" data-start="82.751000" data-stop="86.000000">I've been learning programming languages since I</span> <span class="audio-time caption" data-speaker="Omar" data-start="86.060000" data-stop="88.707000">was a child, when my father gave me my first</span> <span class="audio-time caption" data-speaker="Omar" data-start="88.747000" data-stop="90.872000">computer.</span> <span class="audio-time caption" data-speaker="Omar" data-start="91.392000" data-stop="93.816000">I think that was the main reason I switched to</span> <span class="audio-time caption" data-speaker="Omar" data-start="93.856000" data-stop="94.116000">Linux.</span> <span class="audio-time caption" data-speaker="Omar" data-start="94.337000" data-stop="96.701000">I noticed that people wrote many more</span> <span class="audio-time caption" data-speaker="Omar" data-start="97.121000" data-stop="99.665000">interpreters and compilers for Linux than for</span> <span class="audio-time caption" data-speaker="Omar" data-start="99.706000" data-stop="100.026000">Windows.</span> <span class="audio-time caption" data-speaker="Omar" data-start="100.587000" data-stop="102.430000">That's why I wanted to use Linux.</span> <span class="audio-time caption" data-speaker="Omar" data-start="102.650000" data-stop="104.734000">I needed a text editor that handled all sorts of</span> <span class="audio-time caption" data-speaker="Omar" data-start="104.814000" data-stop="106.096000">weird programming languages.</span> <span class="audio-time caption" data-speaker="Omar" data-start="107.278000" data-stop="110.022000">I was looking for a general purpose one, not an</span> <span class="audio-time caption" data-speaker="Omar" data-start="110.123000" data-stop="110.443000">IDE.</span> <span class="audio-time caption" data-speaker="Omar" data-start="110.904000" data-stop="114.109000">I used IDEs, younger ones, like Turbo Pascal.</span> <span class="audio-time caption" data-speaker="Omar" data-start="114.089000" data-stop="116.011000">Probably that was the main one.</span> <span class="audio-time caption" data-speaker="Omar" data-start="116.111000" data-stop="116.752000">I loved that.</span> <span class="audio-time caption" data-speaker="Omar" data-start="116.772000" data-stop="117.293000">It was great.</span> <span class="audio-time caption" data-speaker="Omar" data-start="117.973000" data-stop="120.737000">I went through the Linux distro, tried a</span> <span class="audio-time caption" data-speaker="Omar" data-start="120.797000" data-stop="124.779000">bunch of editors.</span> <span class="audio-time caption" data-speaker="Omar" data-start="124.780000" data-stop="128.225000">I settled on Emacs and Emacs-like editors.</span> <span class="audio-time caption" data-speaker="Omar" data-start="128.324000" data-stop="131.389000">I tried Jove, which stands for Jonathan's Own</span> <span class="audio-time caption" data-speaker="Omar" data-start="131.429000" data-stop="132.350000">Version of Emacs.</span> <span class="audio-time caption" data-speaker="Omar" data-start="134.292000" data-stop="136.975000">And there was also an editor called...</span> <span class="audio-time caption" data-speaker="Omar" data-start="137.258000" data-stop="138.140000">Oh, I forget.</span> <span class="audio-time caption" data-speaker="Omar" data-start="138.160000" data-stop="140.787000">There was one that had its own extension language</span> <span class="audio-time caption" data-speaker="Omar" data-start="140.847000" data-stop="141.750000">called S-Lang.</span> <span class="audio-time caption" data-speaker="Omar" data-start="142.492000" data-stop="143.655000">I used that for a while.</span> <span class="audio-time caption" data-speaker="Omar" data-start="144.276000" data-stop="148.327000">A little later, I remember using Slava Pestov's</span> <span class="audio-time caption" data-speaker="Omar" data-start="148.427000" data-stop="149.129000">jEdit.</span> <span class="audio-time caption" data-speaker="Omar" data-start="149.149000" data-stop="151.335000">I really like that, too, although</span> <span class="audio-time caption" data-speaker="Omar" data-start="151.720000" data-stop="154.005000">Java is not that fun to write extensions in.</span> <span class="audio-time caption" data-speaker="Omar" data-start="156.771000" data-stop="158.976000">I was looking for an editor and I wanted it to be</span> <span class="audio-time caption" data-speaker="Omar" data-start="159.016000" data-stop="161.200000">extensible, which is funny because I hardly ever</span> <span class="audio-time caption" data-speaker="Omar" data-start="161.240000" data-stop="161.621000">extend it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="162.263000" data-stop="164.868000">I just wanted there to be the option.</span> <span class="audio-time caption" data-speaker="Omar" data-start="165.129000" data-stop="166.532000">I used Emacs for a long time.</span> <span class="audio-time caption" data-speaker="Omar" data-start="167.153000" data-stop="169.037000">But when I got serious at</span> <span class="audio-time caption" data-speaker="Omar" data-start="169.422000" data-stop="171.400000">being efficient at text-editing,</span> <span class="audio-time caption" data-speaker="Omar" data-start="171.401000" data-stop="173.433000">I actually switched to Vim.</span> <span class="audio-time caption" data-speaker="Omar" data-start="173.434000" data-stop="178.918000">I switched back to Emacs many years later because</span> <span class="audio-time caption" data-speaker="Omar" data-start="178.998000" data-stop="181.523000">of one very specific problem in Vim.</span> <span class="audio-time caption" data-speaker="Omar" data-start="181.543000" data-stop="184.688000">The syntax highlighting for LaTeX files is pretty</span> <span class="audio-time caption" data-speaker="Omar" data-start="184.728000" data-stop="185.490000">slow.</span> <span class="audio-time caption" data-speaker="Omar" data-start="185.510000" data-stop="187.253000">On a normal computer, you won't notice that</span> <span class="audio-time caption" data-speaker="Omar" data-start="187.293000" data-stop="187.693000">it's slow.</span> <span class="audio-time caption" data-speaker="Omar" data-start="188.034000" data-stop="191.901000">But I had a little netbook that was like 10 years</span> <span class="audio-time caption" data-speaker="Omar" data-start="191.981000" data-stop="194.485000">old when I had it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="194.465000" data-stop="197.850000">I took it to class to take notes in math</span> <span class="audio-time caption" data-speaker="Omar" data-start="197.870000" data-stop="198.832000">courses.</span> <span class="audio-time caption" data-speaker="Omar" data-start="198.852000" data-stop="204.941000">I was writing in LaTeX Live with a bunch of</span> <span class="audio-time caption" data-speaker="Omar" data-start="205.021000" data-stop="206.143000">macros to insert things.</span> <span class="audio-time caption" data-speaker="Omar" data-start="206.703000" data-stop="210.449000">The syntax highlighting meant that Vim lagged</span> <span class="audio-time caption" data-speaker="Omar" data-start="210.629000" data-stop="212.432000">behind my typing.</span> <span class="audio-time caption" data-speaker="Omar" data-start="212.452000" data-stop="214.856000">I'm not that fast of a typist, so it was</span> <span class="audio-time caption" data-speaker="Omar" data-start="215.036000" data-stop="215.557000">problematic.</span> <span class="audio-time caption" data-speaker="Omar" data-start="216.158000" data-stop="218.381000">The Vim manual has an entire section on what</span> <span class="audio-time caption" data-speaker="Omar" data-start="218.421000" data-stop="220.424000">to do if text highlighting is slow.</span> <span class="audio-time caption" data-speaker="Omar" data-start="220.664000" data-stop="223.088000">You can look for it with</span> <span class="audio-time caption" data-speaker="Omar" data-start="223.372000" data-stop="225.660000">Vim :help tex-slow</span> <span class="audio-time caption" data-speaker="Omar" data-start="225.800000" data-stop="230.597000">That pops up the right section of the manual.</span> <span class="audio-time caption" data-speaker="Omar" data-start="231.573000" data-stop="233.776000">I tried everything that it said there and they</span> <span class="audio-time caption" data-speaker="Omar" data-start="233.816000" data-stop="236.159000">all made it slightly faster, but none of them</span> <span class="audio-time caption" data-speaker="Omar" data-start="236.199000" data-stop="237.921000">really solved the lag, other than turning off</span> <span class="audio-time caption" data-speaker="Omar" data-start="237.961000" data-stop="238.622000">syntax highlighting.</span> <span class="audio-time caption" data-speaker="Omar" data-start="239.123000" data-stop="240.925000">I turned off syntax highlighting and took</span> <span class="audio-time caption" data-speaker="Omar" data-start="241.005000" data-stop="243.388000">notes for like half a semester, and then I decided</span> <span class="audio-time caption" data-speaker="Omar" data-start="243.429000" data-stop="246.713000">to try Emacs on that old netbook. Its syntax</span> <span class="audio-time caption" data-speaker="Omar" data-start="246.753000" data-stop="248.115000">highlighting was perfectly snappy.</span> <span class="audio-time caption" data-speaker="Omar" data-start="248.515000" data-stop="250.117000">This is just a weird thing in Vim that</span> <span class="audio-time caption" data-speaker="Omar" data-start="250.278000" data-stop="253.321000">specifically LaTeX syntax highlighting is slow.</span> <span class="audio-time caption" data-speaker="Omar" data-start="253.402000" data-stop="257.547000">I never noticed it being slow in any other...</span> <span class="audio-time caption" data-speaker="Omar" data-start="258.100000" data-stop="260.142000">I don't know what Vim calls them, what Emacs</span> <span class="audio-time caption" data-speaker="Omar" data-start="260.163000" data-stop="261.065000">would call a major mode.</span> <span class="audio-time caption" data-speaker="Omar" data-start="261.987000" data-stop="264.090000">It was only ever slow in LaTeX, but that was</span> <span class="audio-time caption" data-speaker="Omar" data-start="264.150000" data-stop="265.753000">enough to get me to try Emacs.</span> <span class="audio-time caption" data-speaker="Omar" data-start="266.093000" data-stop="269.239000">But by then in Vim, I had learned that you want</span> <span class="audio-time caption" data-speaker="Omar" data-start="269.940000" data-stop="272.785000">very granular motion commands to move by word or</span> <span class="audio-time caption" data-speaker="Omar" data-start="272.845000" data-stop="275.509000">by sentence, and you want to be able to be placed</span> <span class="audio-time caption" data-speaker="Omar" data-start="275.569000" data-stop="277.292000">at the end of the word or at the beginning of the</span> <span class="audio-time caption" data-speaker="Omar" data-start="277.332000" data-stop="278.995000">word.</span> <span class="audio-time caption" data-speaker="Omar" data-start="278.975000" data-stop="283.419000">All of these higher-level editing constructs that</span> <span class="audio-time caption" data-speaker="Omar" data-start="283.459000" data-stop="285.141000">Vim really pushes you toward.</span> <span class="audio-time caption" data-speaker="Omar" data-start="285.581000" data-stop="287.543000">In Emacs, I hadn't done any of that before.</span> <span class="audio-time caption" data-speaker="Omar" data-start="287.583000" data-stop="288.984000">I moved around with the arrow keys.</span> <span class="audio-time caption" data-speaker="Omar" data-start="290.225000" data-stop="292.447000">But when I came back to Emacs after having been</span> <span class="audio-time caption" data-speaker="Omar" data-start="292.487000" data-stop="294.069000">in Vim, then I wanted to get serious about</span> <span class="audio-time caption" data-speaker="Omar" data-start="294.109000" data-stop="295.810000">editing efficiently in Emacs.</span> <span class="audio-time caption" data-speaker="Omar" data-start="296.491000" data-stop="299.213000">I think I actually like it better than Vim</span> <span class="audio-time caption" data-speaker="Omar" data-start="299.233000" data-stop="299.754000">now.</span> <span class="audio-time caption" data-speaker="Omar" data-start="299.774000" data-stop="304.098000">But yeah, that's why I switched back to Emacs.</span> <span class="audio-time caption" data-speaker="Omar" data-start="304.218000" data-stop="307.260000">It's just this quirk that LaTeX syntax</span> <span class="audio-time caption" data-speaker="Omar" data-start="307.441000" data-stop="308.982000">highlighting is slow in Vim.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="308.962000" data-stop="310.244000"><strong class="speaker-name">Sacha:</strong>  Well, their loss.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="310.685000" data-stop="313.350000">So you tried a whole bunch of other editors.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="313.690000" data-stop="316.435000">You got into Vim because you wanted to be more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="316.495000" data-stop="317.016000">efficient.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="318.699000" data-stop="322.286000">Getting deeply into Vim was great, but you ran</span> <span class="audio-time caption" data-speaker="Sacha" data-start="322.346000" data-stop="323.027000">into that bug.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="323.247000" data-stop="325.351000">So you switched to Emacs because it was more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="325.411000" data-stop="328.236000">efficient, more performant.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="328.216000" data-stop="331.901000">All that experience with Vim has made you a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="331.941000" data-stop="333.924000">better Emacs user because now you're like, okay,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="333.944000" data-stop="336.188000">you appreciate all the navigation and movement.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="336.528000" data-stop="338.010000">And you were telling me over email...</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="338.070000" data-stop="340.394000"><strong class="speaker-name">Omar:</strong>  Things I missed from Vim.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="340.414000" data-stop="340.774000"><strong class="speaker-name">Sacha:</strong>  Yeah,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="340.794000" data-stop="343.979000">You were telling me over email how the kind of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="344.019000" data-stop="347.304000">the keyboard macros that you got used to in Vim,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="348.245000" data-stop="350.428000">you've translated some of that over to Emacs and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="350.508000" data-stop="351.390000">how you use them.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="351.410000" data-stop="353.633000">We definitely want to get into that.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="353.798000" data-stop="355.321000"><strong class="speaker-name">Omar:</strong>  Keyboard macro-like things.</span> <span class="audio-time caption" data-speaker="Omar" data-start="355.421000" data-stop="358.227000">In Emacs, for a while, I used multiple-cursors.</span> <span class="audio-time caption" data-speaker="Omar" data-start="359.068000" data-stop="360.752000">I liked it a lot.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="361.000000">6:01</span> <strong>Repeating edits</strong></div><p></p><span class="audio-time caption" data-speaker="Omar" data-start="361.253000" data-stop="363.958000"><strong class="speaker-name">Omar:</strong> One thing I really missed from Vim is the dot</span> <span class="audio-time caption" data-speaker="Omar" data-start="363.978000" data-stop="366.723000">command that repeats the last edit.</span> <span class="audio-time caption" data-speaker="Omar" data-start="367.405000" data-stop="369.609000">But in Vim, edits are composite things.</span> <span class="audio-time caption" data-speaker="Omar" data-start="369.709000" data-stop="373.697000">You have a command to change</span> <span class="audio-time caption" data-speaker="Omar" data-start="373.677000" data-stop="375.201000">a sentence, for example.</span> <span class="audio-time caption" data-speaker="Omar" data-start="375.743000" data-stop="377.949000">That will delete the current sentence,</span> <span class="audio-time caption" data-speaker="Omar" data-start="377.969000" data-stop="380.256000">put you into insert mode, let you type a new</span> <span class="audio-time caption" data-speaker="Omar" data-start="380.296000" data-stop="382.703000">sentence, and when you press escape, that</span> <span class="audio-time caption" data-speaker="Omar" data-start="382.763000" data-stop="383.465000">concludes the edit.</span> <span class="audio-time caption" data-speaker="Omar" data-start="383.485000" data-stop="385.731000">The whole edit is the operation of deleting</span> <span class="audio-time caption" data-speaker="Omar" data-start="385.772000" data-stop="387.557000">the current sentence and replacing it with the</span> <span class="audio-time caption" data-speaker="Omar" data-start="387.617000" data-stop="389.121000">specific thing you typed.</span> <span class="audio-time caption" data-speaker="Omar" data-start="389.101000" data-stop="392.106000">That is a thing you can repeat.</span> <span class="audio-time caption" data-speaker="Omar" data-start="392.387000" data-stop="399.018000">The repeatable edit commands in Vim are much</span> <span class="audio-time caption" data-speaker="Omar" data-start="399.459000" data-stop="403.746000">coarser and more conceptually appropriate units</span> <span class="audio-time caption" data-speaker="Omar" data-start="403.806000" data-stop="404.407000">than in Emacs.</span> <span class="audio-time caption" data-speaker="Omar" data-start="404.427000" data-stop="406.591000">The repeat command repeats the last Emacs</span> <span class="audio-time caption" data-speaker="Omar" data-start="406.611000" data-stop="408.915000">command, but everything runs a command in Emacs.</span> <span class="audio-time caption" data-speaker="Omar" data-start="408.895000" data-stop="410.778000">You can repeat inserting the last character.</span> <span class="audio-time caption" data-speaker="Omar" data-start="410.838000" data-stop="411.720000">That's not very useful.</span> <span class="audio-time caption" data-speaker="Omar" data-start="411.780000" data-stop="415.486000">You want to repeat at least the whole consecutive</span> <span class="audio-time caption" data-speaker="Omar" data-start="415.586000" data-stop="417.389000">stretch of characters you inserted.</span> <span class="audio-time caption" data-speaker="Omar" data-start="417.850000" data-stop="419.753000">Undo in Emacs does do that.</span> <span class="audio-time caption" data-speaker="Omar" data-start="420.254000" data-stop="421.476000">Undo coalesces.</span> <span class="audio-time caption" data-speaker="Omar" data-start="421.756000" data-stop="424.461000">If you type a bunch of characters and you undo,</span> <span class="audio-time caption" data-speaker="Omar" data-start="425.102000" data-stop="426.665000">it doesn't undo them one by one.</span> <span class="audio-time caption" data-speaker="Omar" data-start="426.685000" data-stop="427.867000">It undoes them.</span> <span class="audio-time caption" data-speaker="Omar" data-start="428.127000" data-stop="430.932000">It clumps them depending on pauses between your</span> <span class="audio-time caption" data-speaker="Omar" data-start="430.972000" data-stop="431.713000">typing.</span> <span class="audio-time caption" data-speaker="Omar" data-start="431.693000" data-stop="432.675000">That's fine.</span> <span class="audio-time caption" data-speaker="Omar" data-start="432.715000" data-stop="434.599000">I want that sort of coarseness.</span> <span class="audio-time caption" data-speaker="Omar" data-start="434.819000" data-stop="436.703000">I don't want to undo every single step at a time.</span> <span class="audio-time caption" data-speaker="Omar" data-start="436.863000" data-stop="438.586000">Similarly, when you repeat things, you don't</span> <span class="audio-time caption" data-speaker="Omar" data-start="438.606000" data-stop="440.530000">want to repeat every single step.</span> <span class="audio-time caption" data-speaker="Omar" data-start="440.971000" data-stop="444.337000">I think Vim has like a pretty good unit of</span> <span class="audio-time caption" data-speaker="Omar" data-start="445.139000" data-stop="446.963000">things you can repeat.</span> <span class="audio-time caption" data-speaker="Omar" data-start="446.983000" data-stop="448.566000">I was missing that in Emacs.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="448.000000">7:28</span> <strong>dot-mode: repeating commands</strong></div><p></p><span class="audio-time caption" data-speaker="Omar" data-start="448.726000" data-stop="453.415000"><strong class="speaker-name">Omar:</strong> There's a package called dot-mode</span> <span class="audio-time caption" data-speaker="Omar" data-start="453.597000" data-stop="455.780000">which I used to use and I like a lot.</span> <span class="audio-time caption" data-speaker="Omar" data-start="456.280000" data-stop="460.445000">I'm not exactly sure why I stopped using it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="462.467000" data-stop="465.771000">So this gives you a more Vim-like experience for</span> <span class="audio-time caption" data-speaker="Omar" data-start="465.991000" data-stop="470.096000">repeating commands in Emacs and what it does is</span> <span class="audio-time caption" data-speaker="Omar" data-start="470.136000" data-stop="475.382000">that it watches you as you type and it constantly</span> <span class="audio-time caption" data-speaker="Omar" data-start="475.462000" data-stop="478.947000">makes a keyboard macro out of the last</span> <span class="audio-time caption" data-speaker="Omar" data-start="479.027000" data-stop="482.811000">consecutive stretch of buffer modifying commands.</span> <span class="audio-time caption" data-speaker="Omar" data-start="483.449000" data-stop="486.573000">So, for example, in Vim, if you want to change a</span> <span class="audio-time caption" data-speaker="Omar" data-start="486.633000" data-stop="488.415000">word, there is a change word command, and you</span> <span class="audio-time caption" data-speaker="Omar" data-start="488.435000" data-stop="491.099000">type <code>c w</code>, and then you change the word, and then</span> <span class="audio-time caption" data-speaker="Omar" data-start="491.139000" data-stop="492.060000">that thing gets repeated.</span> <span class="audio-time caption" data-speaker="Omar" data-start="492.461000" data-stop="494.483000">In Emacs, to change a word, it's not a single</span> <span class="audio-time caption" data-speaker="Omar" data-start="494.563000" data-stop="494.924000">unit, right?</span> <span class="audio-time caption" data-speaker="Omar" data-start="494.944000" data-stop="497.387000">You delete the word, and then you type in</span> <span class="audio-time caption" data-speaker="Omar" data-start="497.427000" data-stop="500.811000">something new, and each character you type is</span> <span class="audio-time caption" data-speaker="Omar" data-start="501.773000" data-stop="506.138000">running insert-char. dot-mode will coalesce</span> <span class="audio-time caption" data-speaker="Omar" data-start="506.259000" data-stop="508.361000">all of that into a single keyboard macro that you</span> <span class="audio-time caption" data-speaker="Omar" data-start="508.381000" data-stop="509.743000">can repeat, right?</span> <span class="audio-time caption" data-speaker="Omar" data-start="509.723000" data-stop="513.493000">If you do some motion command that doesn't modify</span> <span class="audio-time caption" data-speaker="Omar" data-start="513.813000" data-stop="516.139000">the buffer, and then you delete a word and type a</span> <span class="audio-time caption" data-speaker="Omar" data-start="516.179000" data-stop="518.986000">new word, everything from the deletion to the end</span> <span class="audio-time caption" data-speaker="Omar" data-start="519.006000" data-stop="521.373000">of the typing would be what dot mode repeats.</span> <span class="audio-time caption" data-speaker="Omar" data-start="521.653000" data-stop="523.999000">The experience is actually very similar to</span> <span class="audio-time caption" data-speaker="Omar" data-start="524.120000" data-stop="526.686000">using dot in Vim.</span> <span class="audio-time caption" data-speaker="Omar" data-start="526.666000" data-stop="528.209000">In my opinion, a little bit better,</span> <span class="audio-time caption" data-speaker="Omar" data-start="528.269000" data-stop="530.594000">because in Vim, I often had this problem.</span> <span class="audio-time caption" data-speaker="Omar" data-start="530.754000" data-stop="533.359000">It gets you into this competitive video game</span> <span class="audio-time caption" data-speaker="Omar" data-start="533.399000" data-stop="534.502000">mentality.</span> <span class="audio-time caption" data-speaker="Omar" data-start="534.602000" data-stop="536.726000">How do I do the edit in a single repeatable</span> <span class="audio-time caption" data-speaker="Omar" data-start="536.766000" data-stop="537.087000">command?</span> <span class="audio-time caption" data-speaker="Omar" data-start="537.107000" data-stop="539.271000">I want to be able to use dot to do this again.</span> <span class="audio-time caption" data-speaker="Omar" data-start="539.672000" data-stop="541.536000">So that you have to think ahead.</span> <span class="audio-time caption" data-speaker="Omar" data-start="541.896000" data-stop="543.680000">It's kind of distracting.</span> <span class="audio-time caption" data-speaker="Omar" data-start="543.700000" data-stop="546.105000">Of course, if a sensible person would not get</span> <span class="audio-time caption" data-speaker="Omar" data-start="546.405000" data-stop="548.269000">caught up in that, it would just...</span> <span class="audio-time caption" data-speaker="Omar" data-start="548.249000" data-stop="549.851000">do the edit whichever way they can,</span> <span class="audio-time caption" data-speaker="Omar" data-start="550.211000" data-stop="552.575000">but I wanted to maximize the repeatability.</span> <span class="audio-time caption" data-speaker="Omar" data-start="554.157000" data-stop="556.179000">dot-mode lets you be a little bit more relaxed.</span> <span class="audio-time caption" data-speaker="Omar" data-start="556.439000" data-stop="560.124000">It still catches all of the thing that should</span> <span class="audio-time caption" data-speaker="Omar" data-start="560.164000" data-stop="561.426000">have been a single edit.</span> <span class="audio-time caption" data-speaker="Omar" data-start="561.446000" data-stop="562.928000">So yeah, I like it a lot.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="563.508000" data-stop="564.390000"><strong class="speaker-name">Sacha:</strong>  So that's dot-mode.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="564.000000">9:24</span> <strong>block-undo: undo things as a chunk
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-01-06-05-633.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-01-06-05-633.jpg" alt="image from video 01:06:05.633" data-time="01:06:05.633"></a><span class="audio-time caption" data-speaker="Sacha" data-start="564.410000" data-stop="567.534000"><strong class="speaker-name">Sacha:</strong> You also mentioned block-undo.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="568.375000" data-stop="571.799000"><strong class="speaker-name">Omar:</strong>  That is a package of mine I can</span> <span class="audio-time caption" data-speaker="Omar" data-start="571.939000" data-stop="572.620000">show you.</span> <span class="audio-time caption" data-speaker="Omar" data-start="573.629000" data-stop="576.293000">That's the entire package.</span> <span class="audio-time caption" data-speaker="Omar" data-start="576.734000" data-stop="580.259000">It just uses this <code>with-undo-amalgamate</code> command.</span> <span class="audio-time caption" data-speaker="Omar" data-start="580.279000" data-stop="584.246000">Whatever you run inside <code>with-undo-amalgamate</code></span> <span class="audio-time caption" data-speaker="Omar" data-start="584.566000" data-stop="586.549000">undoes in a single step.</span> <span class="audio-time caption" data-speaker="Omar" data-start="586.589000" data-stop="589.714000">I use it for executions of keyboard macros.</span> <span class="audio-time caption" data-speaker="Omar" data-start="589.694000" data-stop="594.860000">A keyboard macro, if you run it all over the</span> <span class="audio-time caption" data-speaker="Omar" data-start="594.901000" data-stop="597.604000">place, if you apply it to every line in a region,</span> <span class="audio-time caption" data-speaker="Omar" data-start="598.024000" data-stop="601.349000">or you just repeat it a hundred times, that is a</span> <span class="audio-time caption" data-speaker="Omar" data-start="601.449000" data-stop="602.851000">lot of tiny individual edits.</span> <span class="audio-time caption" data-speaker="Omar" data-start="603.351000" data-stop="605.494000">If you undo that, you do not want to undo them</span> <span class="audio-time caption" data-speaker="Omar" data-start="606.115000" data-stop="606.635000">one by one.</span> <span class="audio-time caption" data-speaker="Omar" data-start="607.216000" data-stop="611.221000">This just makes them all undo in a single step,</span> <span class="audio-time caption" data-speaker="Omar" data-start="611.541000" data-stop="613.023000">which is what Vim does, actually.</span> <span class="audio-time caption" data-speaker="Omar" data-start="613.063000" data-stop="614.565000">This is one of the things that I said, no,</span> <span class="audio-time caption" data-speaker="Omar" data-start="614.605000" data-stop="615.426000">Vim has this right.</span> <span class="audio-time caption" data-speaker="Omar" data-start="615.486000" data-stop="616.748000">I need this in Emacs.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="617.605000" data-stop="619.067000"><strong class="speaker-name">Sacha:</strong>  Okay, that makes sense.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="619.928000" data-stop="623.232000">So dot-mode is more like implicit keyboard</span> <span class="audio-time caption" data-speaker="Sacha" data-start="623.272000" data-stop="625.034000">macro boundary definitions.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="626.015000" data-stop="628.138000">This one is like the undo-ness of it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="629.000000">10:29</span> <strong>Starting and stopping keyboard macros
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-11-29-533.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-11-29-533.jpg" alt="image from video 00:11:29.533" data-time="00:11:29.533"></a><span class="audio-time caption" data-speaker="Sacha" data-start="629.139000" data-stop="631.102000"><strong class="speaker-name">Sacha:</strong> I saw in your config, you also have more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="631.162000" data-stop="633.385000">convenient shortcuts for starting and stopping</span> <span class="audio-time caption" data-speaker="Sacha" data-start="633.425000" data-stop="634.766000">keyboard macros.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="634.866000" data-stop="640.473000">It's like a modifier and the keystroke instead</span> <span class="audio-time caption" data-speaker="Sacha" data-start="640.513000" data-stop="642.956000">of two or like function keys, which are further</span> <span class="audio-time caption" data-speaker="Sacha" data-start="643.017000" data-stop="643.297000">away.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="643.477000" data-stop="645.840000">I'm guessing you use keyboard macros a lot.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="646.900000" data-stop="647.541000"><strong class="speaker-name">Omar:</strong>  Yeah, I do.</span> <span class="audio-time caption" data-speaker="Omar" data-start="650.524000" data-stop="654.849000">When I got rid of dot-mode, it was an experiment</span> <span class="audio-time caption" data-speaker="Omar" data-start="654.889000" data-stop="657.993000">to see if I could just remember to record</span> <span class="audio-time caption" data-speaker="Omar" data-start="658.053000" data-stop="659.494000">keyboard macros.</span> <span class="audio-time caption" data-speaker="Omar" data-start="659.514000" data-stop="662.718000">The thing that the dot-mode or the dot command in</span> <span class="audio-time caption" data-speaker="Omar" data-start="662.758000" data-stop="665.201000">Vim solves is that you don't always have the</span> <span class="audio-time caption" data-speaker="Omar" data-start="665.261000" data-stop="666.983000">foresight to record a keyboard macro.</span> <span class="audio-time caption" data-speaker="Omar" data-start="667.003000" data-stop="668.645000">Sometimes you realize, oh, I need to do the same</span> <span class="audio-time caption" data-speaker="Omar" data-start="668.745000" data-stop="670.427000">at some other places,</span> <span class="audio-time caption" data-speaker="Omar" data-start="670.407000" data-stop="673.415000">but you didn't record it ahead of time.</span> <span class="audio-time caption" data-speaker="Omar" data-start="673.455000" data-stop="676.163000">Then you wind up doing it once, realizing you</span> <span class="audio-time caption" data-speaker="Omar" data-start="676.203000" data-stop="678.008000">need to do it a bunch of times, then recording</span> <span class="audio-time caption" data-speaker="Omar" data-start="678.048000" data-stop="679.271000">the macro, then doing it again.</span> <span class="audio-time caption" data-speaker="Omar" data-start="679.732000" data-stop="682.841000">I wanted to see if I could remember to record</span> <span class="audio-time caption" data-speaker="Omar" data-start="682.881000" data-stop="683.563000">macros.</span> <span class="audio-time caption" data-speaker="Omar" data-start="683.583000" data-stop="686.290000">I decided that I needed to make it as</span> <span class="audio-time caption" data-speaker="Omar" data-start="686.270000" data-stop="688.232000">as frictionless as possible.</span> <span class="audio-time caption" data-speaker="Omar" data-start="689.514000" data-stop="692.418000">This is the command that is bound by default to</span> <span class="audio-time caption" data-speaker="Omar" data-start="693.479000" data-stop="697.764000">F3.</span> <span class="audio-time caption" data-speaker="Omar" data-start="697.924000" data-stop="702.750000">I like it better than the thing that's bound to</span> <span class="audio-time caption" data-speaker="Omar" data-start="703.171000" data-stop="706.675000">C-x ( because</span> <span class="audio-time caption" data-speaker="Omar" data-start="706.840000" data-stop="710.245000">this <code>kmacro-start-macro-or-insert-counter</code> does</span> <span class="audio-time caption" data-speaker="Omar" data-start="710.285000" data-stop="710.686000">both things.</span> <span class="audio-time caption" data-speaker="Omar" data-start="710.806000" data-stop="712.789000">It could start a recording, or if you are</span> <span class="audio-time caption" data-speaker="Omar" data-start="712.849000" data-stop="716.014000">recording, it will insert the keyboard macro</span> <span class="audio-time caption" data-speaker="Omar" data-start="716.054000" data-stop="719.159000">counter.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="721.802000" data-stop="723.225000"><strong class="speaker-name">Sacha:</strong>  For folks who are like, what?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="723.385000" data-stop="723.926000">Macros?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="723.946000" data-stop="724.446000">Counters?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="724.527000" data-stop="726.590000">Yes, you can have your keyboard macro</span> <span class="audio-time caption" data-speaker="Sacha" data-start="726.690000" data-stop="729.815000">automatically add one to a number, for example.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="729.875000" data-stop="730.836000">There you go.</span> <p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-12-10-867.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-12-10-867.jpg" alt="image from video 00:12:10.867" data-time="00:12:10.867"></a><span class="audio-time caption" data-speaker="Sacha" data-start="730.856000" data-stop="731.697000"><strong class="speaker-name">Sacha:</strong> Hello, hello, hello.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="735.000000">12:15</span> <strong>Keycast and Embark
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-16-44-033.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-16-44-033.jpg" alt="image from video 00:16:44.033" data-time="00:16:44.033"></a><span class="audio-time caption" data-speaker="Omar" data-start="735.848000" data-stop="741.857000"><strong class="speaker-name">Omar:</strong>  I also activated keycast.</span> <span class="audio-time caption" data-speaker="Omar" data-start="743.259000" data-stop="744.361000">I hope people can follow along.</span> <span class="audio-time caption" data-speaker="Omar" data-start="744.461000" data-stop="747.786000">I have some small modifications to make</span> <span class="audio-time caption" data-speaker="Omar" data-start="748.347000" data-stop="749.869000">embark transparent to keycast.</span> <span class="audio-time caption" data-speaker="Omar" data-start="749.889000" data-stop="753.414000">If I use embark, you see embark-act, but then</span> <span class="audio-time caption" data-speaker="Omar" data-start="753.555000" data-stop="755.798000">you also see what command I call.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="756.689000" data-stop="758.873000"><strong class="speaker-name">Sacha:</strong>  I just stole that from your config.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="759.214000" data-stop="761.077000">I wasn't entirely sure if I was using it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="761.117000" data-stop="762.760000">correctly, but it definitely looked like</span> <span class="audio-time caption" data-speaker="Sacha" data-start="762.780000" data-stop="764.183000">something interesting and useful.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="764.724000" data-stop="767.449000"><strong class="speaker-name">Omar:</strong>  If you don't use that change, then</span> <span class="audio-time caption" data-speaker="Omar" data-start="768.692000" data-stop="770.355000">keycast doesn't see through embark and you</span> <span class="audio-time caption" data-speaker="Omar" data-start="770.415000" data-stop="772.639000">don't get which actions you called.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="772.923000" data-stop="774.745000"><strong class="speaker-name">Sacha:</strong>  Yeah, the opacity of some of these</span> <span class="audio-time caption" data-speaker="Sacha" data-start="774.966000" data-stop="782.154000">kind of key binding niceties... they hide a lot of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="782.195000" data-stop="784.598000">stuff from the standard Emacs ways of doing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="784.658000" data-stop="784.958000">things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="785.419000" data-stop="789.083000">That's one of the criticisms of transient and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="789.243000" data-stop="790.265000">other tools.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="790.405000" data-stop="792.648000">I'm glad that you're finding these ways to make</span> <span class="audio-time caption" data-speaker="Sacha" data-start="792.728000" data-stop="795.471000">these packages work well with other packages.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="796.514000" data-stop="800.101000"><strong class="speaker-name">Omar:</strong>  I think this was by request.</span> <span class="audio-time caption" data-speaker="Omar" data-start="800.161000" data-stop="801.022000">Somebody requested it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="801.063000" data-stop="802.145000">Maybe it was Prot.</span> <span class="audio-time caption" data-speaker="Omar" data-start="802.146000" data-stop="804.048000">It's definitely a good idea.</span> <span class="audio-time caption" data-speaker="Omar" data-start="810.139000" data-stop="813.105000">The code for that is on the Embark Wiki as well.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="813.000000">13:33</span> <strong>apply-macro-to-lines-of-paragraph</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="813.575000" data-stop="814.716000"><strong class="speaker-name">Sacha:</strong>  The other thing that I wanted to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="814.757000" data-stop="817.921000">point out that you make a convenient keyboard</span> <span class="audio-time caption" data-speaker="Sacha" data-start="818.021000" data-stop="821.305000">shortcut for in terms of keyboard macros is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="821.385000" data-stop="824.029000"><code>apply-macro-to-lines-of-paragraph</code>, which I
personally</span> <span class="audio-time caption" data-speaker="Sacha" data-start="824.049000" data-stop="826.191000">had not been using until I saw your config.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="826.231000" data-stop="827.593000">And I was like, that is a thing.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="829.796000" data-stop="830.517000"><strong class="speaker-name">Omar:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="830.557000" data-stop="840.319000">Well, that's a command that I wrote.</span> <span class="audio-time caption" data-speaker="Omar" data-start="840.320000" data-stop="843.526000">It’s a wrapper around <code>apply-macro-to-region-lines</code>,</span> <span class="audio-time caption" data-speaker="Omar" data-start="845.168000" data-stop="847.171000">but it automatically uses the paragraph.</span> <span class="audio-time caption" data-speaker="Omar" data-start="847.191000" data-stop="849.434000">That way you don't need to select it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="849.454000" data-stop="851.618000">I find that extremely convenient.</span> <span class="audio-time caption" data-speaker="Omar" data-start="855.779000" data-stop="857.401000">What would be a good example of that?</span> <span class="audio-time caption" data-speaker="Omar" data-start="857.421000" data-stop="859.204000">You want to wrap something.</span> <span class="audio-time caption" data-speaker="Omar" data-start="861.107000" data-stop="865.753000">What should I do as an example of this?</span> <span class="audio-time caption" data-speaker="Omar" data-start="866.094000" data-stop="868.317000">For some reason, I needed to convert these things</span> <span class="audio-time caption" data-speaker="Omar" data-start="868.998000" data-stop="875.487000">to, say, unwrap the parentheses and turn them</span> <span class="audio-time caption" data-speaker="Omar" data-start="875.527000" data-stop="877.149000">into an Org Mode table.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="878.171000" data-stop="879.693000"><strong class="speaker-name">Sacha:</strong>  Yeah, that makes sense.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="879.713000" data-stop="881.235000"><strong class="speaker-name">Omar:</strong>  I just apply it to the rest of</span> <span class="audio-time caption" data-speaker="Omar" data-start="881.275000" data-stop="881.816000">the paragraph.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="882.958000" data-stop="883.879000"><strong class="speaker-name">Sacha:</strong>  Magic.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="886.880000" data-stop="889.533000">That's great, because I would normally</span> <span class="audio-time caption" data-speaker="Sacha" data-start="889.534000" data-stop="893.533000">just start executing the macro and hope I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="893.534000" data-stop="894.533000">remember to stop at the end,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="894.534000" data-stop="897.067000">but then I overshoot, and then I have to undo,
j</span> <span class="audio-time caption" data-speaker="Sacha" data-start="897.068000" data-stop="899.100000">and then it's a mess.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="899.101000" data-stop="901.006000"><strong class="speaker-name">Omar:</strong>  Or you could select the paragraph and then just</span> <span class="audio-time caption" data-speaker="Omar" data-start="901.146000" data-stop="904.973000">use the built-in <code>apply-macro-to-lines-in-region</code>.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="905.881000" data-stop="907.945000"><strong class="speaker-name">Sacha:</strong>  Yes, yes, that's a possibility.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="908.346000" data-stop="909.308000"><strong class="speaker-name">Omar:</strong>  It just saves you the step of</span> <span class="audio-time caption" data-speaker="Omar" data-start="909.388000" data-stop="910.310000">marking the paragraph.</span> <span class="audio-time caption" data-speaker="Omar" data-start="910.390000" data-stop="913.176000">I found that I most often when I used apply macro</span> <span class="audio-time caption" data-speaker="Omar" data-start="913.196000" data-stop="914.999000">to lines in region, the region was exactly a</span> <span class="audio-time caption" data-speaker="Omar" data-start="915.060000" data-stop="915.420000">paragraph.</span> <span class="audio-time caption" data-speaker="Omar" data-start="915.440000" data-stop="916.963000">So I figured like there's no point in...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="917.464000" data-stop="918.426000"><strong class="speaker-name">Sacha:</strong>  All right, all right.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="918.507000" data-stop="922.675000"><strong class="speaker-name">Omar:</strong>  It's undone in a single step.</span> <span class="audio-time caption" data-speaker="Omar" data-start="922.655000" data-stop="925.619000">Like the application.</span> <span class="audio-time caption" data-speaker="Omar" data-start="925.639000" data-stop="928.323000">The thing I recorded as a macro, that is not</span> <span class="audio-time caption" data-speaker="Omar" data-start="928.383000" data-stop="929.064000">coalesced.</span> <span class="audio-time caption" data-speaker="Omar" data-start="929.084000" data-stop="930.346000">Yes, of course.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="930.366000" data-stop="932.509000"><strong class="speaker-name">Sacha:</strong>  Because that's the actual recording</span> <span class="audio-time caption" data-speaker="Sacha" data-start="932.589000" data-stop="932.829000">of it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="933.490000" data-stop="936.054000">Charlie Baker in the chat says,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="936.094000" data-stop="938.117000">"Definitely going to add the keycast transparency</span> <span class="audio-time caption" data-speaker="Sacha" data-start="938.157000" data-stop="938.798000">to my config.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="938.818000" data-stop="940.160000">I've been wanting that for a while."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="940.540000" data-stop="942.803000">These little demos of like, oh,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="942.863000" data-stop="945.227000">this is what this thing in your config does.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="945.627000" data-stop="947.390000">It's very helpful for people to be able to see</span> <span class="audio-time caption" data-speaker="Sacha" data-start="948.952000" data-stop="949.733000">its awesomeness.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="949.753000" data-stop="959.239000"><strong class="speaker-name">Omar:</strong>  Where is that?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="959.240000" data-stop="960.628000"><strong class="speaker-name">Sacha:</strong>  One of the other interesting things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="960.668000" data-stop="962.990000">you mentioned was your placeholder package.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="963.010000" data-stop="964.953000">I can see how the keyword macros help you with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="964.993000" data-stop="966.314000">text that's already there.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="966.334000" data-stop="967.916000">Then you've got these placeholders for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="968.056000" data-stop="969.758000">informal snippets or quick snippets.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="970.679000" data-stop="971.300000">Show us that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="971.400000" data-stop="973.182000">You use it a lot.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="973.162000" data-stop="973.803000"><strong class="speaker-name">Omar:</strong>  Yeah, I do.</span> <span class="audio-time caption" data-speaker="Omar" data-start="975.046000" data-stop="978.352000">Oh, that <code>tmp-buffer</code> is a command I have for</span> <span class="audio-time caption" data-speaker="Omar" data-start="978.673000" data-stop="981.599000">popping up temporary buffers in specific major</span> <span class="audio-time caption" data-speaker="Omar" data-start="981.639000" data-stop="981.939000">modes.</span> <span class="audio-time caption" data-speaker="Omar" data-start="983.122000" data-stop="984.765000">Maybe I can quickly show that first.</span> <span class="audio-time caption" data-speaker="Omar" data-start="985.125000" data-stop="985.707000">Yeah, yeah, yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="986.729000" data-stop="987.410000">So let's see.</span> <span class="audio-time caption" data-speaker="Omar" data-start="989.213000" data-stop="990.115000">Oh, yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="990.255000" data-stop="991.558000">So let me...</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="994.000000">16:34</span> <strong>embark-on-last-message</strong></div><p></p><span class="audio-time caption" data-speaker="Omar" data-start="994.070000" data-stop="997.474000"><strong class="speaker-name">Omar:</strong> There I used another little command I have.</span> <span class="audio-time caption" data-speaker="Omar" data-start="998.896000" data-stop="1001.259000"><code>embark-on-last-message</code></span> <span class="audio-time caption" data-speaker="Omar" data-start="1001.279000" data-stop="1004.322000">It just calls Embark on the last thing in the</span> <span class="audio-time caption" data-speaker="Omar" data-start="1004.382000" data-stop="1005.123000">messages buffer.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1007.306000" data-stop="1010.490000">Often I want to act on the thing that is the last</span> <span class="audio-time caption" data-speaker="Omar" data-start="1010.550000" data-stop="1012.712000">word in the echo area,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1012.732000" data-stop="1015.015000">so that's what this does.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1016.429000" data-stop="1016.950000"><strong class="speaker-name">Sacha:</strong>  Okay.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1017.810000" data-stop="1019.352000"><strong class="speaker-name">Omar:</strong>  The last thing in the echo</span> <span class="audio-time caption" data-speaker="Omar" data-start="1019.512000" data-stop="1022.375000">area was this symbol <code>embark-on-last-message</code> so I</span> <span class="audio-time caption" data-speaker="Omar" data-start="1022.435000" data-stop="1024.196000">can act on it directly.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1024.217000" data-stop="1025.759000"><strong class="speaker-name">Sacha:</strong>  Which is brilliant because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1025.779000" data-stop="1028.121000">I keep switching to the messages buffer to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1028.161000" data-stop="1031.023000">try to copy something, and by the time I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1031.064000" data-stop="1032.906000">switch, sometimes there are other messages,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1032.986000" data-stop="1035.729000">so it's great to just be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1035.769000" data-stop="1036.770000">able to do something.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1036.790000" data-stop="1038.050000"><strong class="speaker-name">Omar:</strong>  If there are other messages,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1038.252000" data-stop="1040.534000">then I also switch to the messages buffer, but if</span> <span class="audio-time caption" data-speaker="Omar" data-start="1040.594000" data-stop="1043.057000">I want to act on the very last thing, I have that</span> <span class="audio-time caption" data-speaker="Omar" data-start="1043.097000" data-stop="1043.517000">command for it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1043.497000" data-stop="1044.377000"><strong class="speaker-name">Sacha:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1044.397000" data-stop="1047.320000">I'm saying this is faster, so I get the chance of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1047.421000" data-stop="1050.344000">just hitting the shortcut before another timer</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1050.764000" data-stop="1052.746000">goes in and messes around with my messages.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1053.307000" data-stop="1054.528000">So yes, shortcuts.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1054.548000" data-stop="1055.549000">Okay, temp buffer.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1056.290000" data-stop="1058.072000">Tell us about that.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1058.152000" data-stop="1061.836000"><strong class="speaker-name">Omar:</strong>  You can configure single... Wait, where am I?</span> <span class="audio-time caption" data-speaker="Omar" data-start="1063.958000" data-stop="1064.839000">Transcribing job.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1065.259000" data-stop="1068.623000">I ran Whisper by accident.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1069.323000" data-stop="1070.404000"><strong class="speaker-name">Sacha:</strong>  Which is another thing I wanted to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1070.464000" data-stop="1071.245000">check.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1071.265000" data-stop="1072.947000">Many things I want to talk to you about…</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1076.030000" data-stop="1077.953000"><strong class="speaker-name">Omar:</strong>  The idea of using Whisper, I stole</span> <span class="audio-time caption" data-speaker="Omar" data-start="1078.013000" data-stop="1078.333000">from you</span> <span class="audio-time caption" data-speaker="Omar" data-start="1079.835000" data-stop="1082.078000">using it to dictate. I thought, oh, this looks</span> <span class="audio-time caption" data-speaker="Omar" data-start="1082.139000" data-stop="1082.579000">convenient</span> <span class="audio-time caption" data-speaker="Omar" data-start="1082.619000" data-stop="1084.442000">if the model is good. I tried it and it is</span> <span class="audio-time caption" data-speaker="Omar" data-start="1084.482000" data-stop="1084.862000">very good.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1086.000000">18:06</span> <strong>tmp-buffer with a major mode
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-18-10-233.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-18-10-233.jpg" alt="image from video 00:18:10.233" data-time="00:18:10.233"></a><span class="audio-time caption" data-speaker="Sacha" data-start="1086.124000" data-stop="1086.565000"><strong class="speaker-name">Sacha:</strong>  Temp buffer.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1087.045000" data-stop="1089.148000"><strong class="speaker-name">Omar:</strong>  Different major modes.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1089.869000" data-stop="1093.415000">It has a customizable list of bindings for</span> <span class="audio-time caption" data-speaker="Omar" data-start="1093.655000" data-stop="1094.696000">specific major modes.</span> <p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-18-19-533.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-18-19-533.jpg" alt="image from video 00:18:19.533" data-time="00:18:19.533"></a><span class="audio-time caption" data-speaker="Omar" data-start="1095.217000" data-stop="1097.520000"><strong class="speaker-name">Omar:</strong> It also has an option to just prompt you for a</span> <span class="audio-time caption" data-speaker="Omar" data-start="1097.560000" data-stop="1098.101000">major mode.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1099.724000" data-stop="1104.269000">It pops up a temp buffer in whatever major</span> <span class="audio-time caption" data-speaker="Omar" data-start="1104.309000" data-stop="1104.990000">mode you chose.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1106.251000" data-stop="1110.216000">I use it all the time to make new scratch buffers.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1110.236000" data-stop="1111.257000"><strong class="speaker-name">Sacha:</strong>  Yeah, I can see that's useful.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1111.277000" data-stop="1115.021000">I switch to a buffer that's got a name that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1115.061000" data-stop="1116.923000">doesn't exist yet, and then I have to press more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1116.963000" data-stop="1118.104000">keys to get to the major mode.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1118.405000" data-stop="1119.326000"><strong class="speaker-name">Omar:</strong>  But if you're doing certain</span> <span class="audio-time caption" data-speaker="Omar" data-start="1119.346000" data-stop="1122.409000">things, just type random letters to make a new</span> <span class="audio-time caption" data-speaker="Omar" data-start="1122.489000" data-stop="1122.769000">buffer,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1122.930000" data-stop="1125.132000">this is much better.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1125.172000" data-stop="1127.014000">They might as well all be called temp.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1128.107000" data-stop="1130.249000"><strong class="speaker-name">Sacha:</strong>  Do you reuse the buffers, or it's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1130.289000" data-stop="1131.290000">always just the one buffer?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1132.091000" data-stop="1134.934000"><strong class="speaker-name">Omar:</strong>  New buffer, then I kill it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1134.954000" data-stop="1135.655000"><strong class="speaker-name">Sacha:</strong>  Very temporary.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1136.216000" data-stop="1136.596000">Gotcha.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1137.177000" data-stop="1138.778000"><strong class="speaker-name">Omar:</strong>  By the way, <code>kill-current-buffer</code> doesn’t</span> <span class="audio-time caption" data-speaker="Omar" data-start="1138.818000" data-stop="1139.899000">have a default key binding.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1139.960000" data-stop="1141.041000">I don't understand why not.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1144.464000" data-stop="1145.586000">OK.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1145.746000" data-stop="1148.889000">I bind it to <code>C-c C-k</code>, which normally, I</span> <span class="audio-time caption" data-speaker="Omar" data-start="1148.929000" data-stop="1149.790000">think, is <code>kill-buffer</code>,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1149.830000" data-stop="1152.833000">but why would you want to kill a buffer that's</span> <span class="audio-time caption" data-speaker="Omar" data-start="1152.893000" data-stop="1155.516000">not the one you're looking at?</span> <span class="audio-time caption" data-speaker="Omar" data-start="1156.930000" data-stop="1159.059000">Wait, what was I going to show you?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1159.481000" data-stop="1160.204000"><strong class="speaker-name">Sacha:</strong>  You were going to show me</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1160.264000" data-stop="1161.067000">placeholders.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1162.393000" data-stop="1163.557000"><strong class="speaker-name">Omar:</strong>  Right.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1166.000000">19:26</span> <strong>placeholder
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-19-42-100.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-19-42-100.jpg" alt="image from video 00:19:42.100" data-time="00:19:42.100"></a><span class="audio-time caption" data-speaker="Omar" data-start="1166.532000" data-stop="1171.279000"><strong class="speaker-name">Omar:</strong> I often need to send several similar email</span> <span class="audio-time caption" data-speaker="Omar" data-start="1171.319000" data-stop="1171.820000">messages.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1173.242000" data-stop="1178.109000">I'm going to invite you on some day of some month</span> <span class="audio-time caption" data-speaker="Omar" data-start="1178.910000" data-stop="1181.454000">to give a talk, etc.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1182.075000" data-stop="1184.979000">That's the body of an email.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1185.440000" data-stop="1186.902000">I'll write it once.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1186.962000" data-stop="1191.950000">Here I’m using <code>placeholder-insert</code> to insert this
symbol.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1192.511000" data-stop="1194.193000">It appears in green,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1194.832000" data-stop="1198.479000">but it doesn't matter.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1198.519000" data-stop="1199.200000">It's just text.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1199.340000" data-stop="1202.065000">You could type that symbol yourself.</span> <p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-20-05-633.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-20-05-633.jpg" alt="image from video 00:20:05.633" data-time="00:20:05.633"></a><span class="audio-time caption" data-speaker="Omar" data-start="1202.566000" data-stop="1206.232000"><strong class="speaker-name">Omar:</strong> Then the <code>placeholder-next</code> and -previous</span> <span class="audio-time caption" data-speaker="Omar" data-start="1206.272000" data-stop="1210.340000">commands will cycle among those and let you fill</span> <span class="audio-time caption" data-speaker="Omar" data-start="1210.740000" data-stop="1212.403000">each one in.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1212.644000" data-stop="1214.086000">You don't have to fill it in right now.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1214.708000" data-stop="1216.591000">If you repeat the command, it restores the</span> <span class="audio-time caption" data-speaker="Omar" data-start="1216.631000" data-stop="1218.915000">placeholder and moves you to the next location.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1219.368000" data-stop="1221.231000"><strong class="speaker-name">Sacha:</strong>  That's one of the things I liked</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1221.291000" data-stop="1223.815000">about the implementation compared to yasnippet,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1223.835000" data-stop="1225.538000">because yasnippet, you’ve got to actually remember</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1225.578000" data-stop="1227.781000">to fill in the fields before you move on to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1227.821000" data-stop="1228.422000">something else.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1228.683000" data-stop="1231.087000">If you get out of it, you can't tab to the next</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1231.127000" data-stop="1231.667000">field.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1231.688000" data-stop="1234.312000">The placeholders will let you go and come</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1234.372000" data-stop="1236.876000">back and look up some information and put that in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1236.936000" data-stop="1237.697000">and so forth.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1238.000000">20:38</span> <strong>enable-recursive-minibuffers</strong></div><p></p><span class="audio-time caption" data-speaker="Omar" data-start="1238.605000" data-stop="1240.307000"><strong class="speaker-name">Omar:</strong>  Yeah, there's lots of things I</span> <span class="audio-time caption" data-speaker="Omar" data-start="1240.367000" data-stop="1242.690000">loved about Vim, but one thing I grew to strongly</span> <span class="audio-time caption" data-speaker="Omar" data-start="1242.750000" data-stop="1245.593000">dislike is modal computer programs.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1246.274000" data-stop="1247.936000">Not just modal editing, modal anything.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1248.196000" data-stop="1250.739000">I don't like being forced to finish what I</span> <span class="audio-time caption" data-speaker="Omar" data-start="1250.799000" data-stop="1251.180000">started.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1251.720000" data-stop="1254.424000">I want to be able to get distracted and go off</span> <span class="audio-time caption" data-speaker="Omar" data-start="1254.464000" data-stop="1255.885000">and do something else.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1255.905000" data-stop="1258.749000">For example, in Emacs, I very much dislike the</span> <span class="audio-time caption" data-speaker="Omar" data-start="1258.849000" data-stop="1262.453000">default value of <code>enable-recursive-minibuffers</code>.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1263.901000" data-stop="1266.886000">The default value is <code>nil</code>.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1266.926000" data-stop="1269.711000">They don't let you use the minibuffer if you're</span> <span class="audio-time caption" data-speaker="Omar" data-start="1269.751000" data-stop="1271.213000">already using the minibuffer.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1271.313000" data-stop="1273.056000">Emacs is supposed to be about freedom.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1273.116000" data-stop="1274.639000">Why is that the default value?</span> <span class="audio-time caption" data-speaker="Omar" data-start="1275.440000" data-stop="1277.523000">So I set it to <code>t</code>, which is more sensible.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1277.864000" data-stop="1279.767000">That way you're not stuck in the minibuffer.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1281.012000" data-stop="1282.214000"><strong class="speaker-name">Sacha:</strong>  Actually, one of the things that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1282.254000" data-stop="1284.558000">I've been trying to figure out is when I'm in a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1284.658000" data-stop="1287.182000">minibuffer, sometimes I want to use Embark to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1287.222000" data-stop="1289.145000">insert something into the minibuffer, but then I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1289.205000" data-stop="1291.850000">end up inserting it into the buffer buffer.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1291.870000" data-stop="1295.035000"><strong class="speaker-name">Omar:</strong>  Yeah, there's no... Embark doesn't</span> <span class="audio-time caption" data-speaker="Omar" data-start="1295.075000" data-stop="1298.160000">have any solution to that problem.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1298.461000" data-stop="1300.706000">It doesn't always do that.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1300.746000" data-stop="1302.510000">It does that if you're in the minibuffer in a</span> <span class="audio-time caption" data-speaker="Omar" data-start="1302.570000" data-stop="1304.193000">completion session.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1304.374000" data-stop="1306.599000">If you're in the minibuffer in a non-completion</span> <span class="audio-time caption" data-speaker="Omar" data-start="1306.659000" data-stop="1309.064000">session, then it acts as a regular buffer.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1309.124000" data-stop="1314.148000">So if you're in eval and here you had...</span> <span class="audio-time caption" data-speaker="Omar" data-start="1314.149000" data-stop="1316.480000">You can use <code>embark-insert</code> in the usual way to</span> <span class="audio-time caption" data-speaker="Omar" data-start="1316.580000" data-stop="1318.444000">duplicate stuff.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1318.508000" data-stop="1320.412000"><strong class="speaker-name">Sacha:</strong>  I have a workaround.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1320.432000" data-stop="1323.618000">I just use kill. I copy the text</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1323.698000" data-stop="1325.582000">instead of inserting it and that works out fine.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1327.125000" data-stop="1328.187000"><strong class="speaker-name">Omar:</strong>  Yeah, I do too.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1328.648000" data-stop="1331.653000">The behavior of inserting into the previous</span> <span class="audio-time caption" data-speaker="Omar" data-start="1331.714000" data-stop="1334.539000">buffer is so useful that I don't think I would</span> <span class="audio-time caption" data-speaker="Omar" data-start="1334.559000" data-stop="1335.321000">want to change that.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1335.761000" data-stop="1337.465000">But yeah, it is unfortunate that for that</span> <span class="audio-time caption" data-speaker="Omar" data-start="1337.505000" data-stop="1340.230000">specific instance, you can't use insert.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1340.615000" data-stop="1344.241000"><strong class="speaker-name">Sacha:</strong>  I appreciate that Embark allows</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1344.301000" data-stop="1346.445000">us to have all of these key bindings that we can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1346.485000" data-stop="1347.186000">do stuff with.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1347.547000" data-stop="1349.931000">I noticed in your config, in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1349.991000" data-stop="1352.476000">addition to Embark, you also modify a lot of the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1352.556000" data-stop="1357.284000">standard key maps to add other shortcuts to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1357.324000" data-stop="1358.927000">rebind things that make sense to you.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1359.717000" data-stop="1363.866000">Key bindings are something that a lot of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1363.906000" data-stop="1366.051000">people struggle with, trying to figure out more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1366.091000" data-stop="1367.935000">places to put more shortcuts that make</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1367.975000" data-stop="1368.195000">sense.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1368.235000" data-stop="1371.222000">What are the key shortcuts that work really well</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1371.282000" data-stop="1374.148000">for you?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1377.000000">22:57</span> <strong>Overriding embark-select
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-23-18-367.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-23-18-367.jpg" alt="image from video 00:23:18.367" data-time="00:23:18.367"></a><span class="audio-time caption" data-speaker="Omar" data-start="1377.928000" data-stop="1380.210000"><strong class="speaker-name">Omar:</strong>  One thing I don't like about the default</span> <span class="audio-time caption" data-speaker="Omar" data-start="1380.230000" data-stop="1384.875000">Embark configuration is that <code>SPC</code> is used for</span> <span class="audio-time caption" data-speaker="Omar" data-start="1385.056000" data-stop="1390.101000"><code>embark-select</code>, which marks a target for later use.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1390.121000" data-stop="1392.824000">I hardly ever use <code>embark-select</code>, so I would</span> <span class="audio-time caption" data-speaker="Omar" data-start="1392.864000" data-stop="1396.048000">rather <code>SPC</code>be for marking the region, which is</span> <span class="audio-time caption" data-speaker="Omar" data-start="1396.088000" data-stop="1398.031000">something I do pretty often, and have</span> <span class="audio-time caption" data-speaker="Omar" data-start="1398.032000" data-stop="1401.274000"><code>embark-select</code> on <code>C-SPC</code>, which is not a
command I</span> <span class="audio-time caption" data-speaker="Omar" data-start="1401.374000" data-stop="1402.515000">use very often.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1402.495000" data-stop="1404.237000">I swapped those.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1406.039000" data-stop="1409.443000">I think most of this is just adding new actions</span> <span class="audio-time caption" data-speaker="Omar" data-start="1409.663000" data-stop="1411.665000">that feel specific to me.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1412.000000">23:32</span> <strong>quick-calc
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-24-05-733.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-24-05-733.jpg" alt="image from video 00:24:05.733" data-time="00:24:05.733"></a><span class="audio-time caption" data-speaker="Omar" data-start="1412.967000" data-stop="1415.823000"><strong class="speaker-name">Omar:</strong> <code>quick-calc</code> is the thing usually found to</span> <span class="audio-time caption" data-speaker="Omar" data-start="1415.824000" data-stop="1420.195000"><code>C-x *</code>… <code>calc-dispatch</code> is the command.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1420.215000" data-stop="1424.540000">It’s <code>C-x * q</code>. That’s <code>quick-calc</code>.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1425.121000" data-stop="1426.622000">It's useful as an Embark action.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1429.124000" data-stop="1434.612000">If you have an expression and you... Wait, what am I</span> <span class="audio-time caption" data-speaker="Omar" data-start="1434.652000" data-stop="1441.441000">doing wrong? I forgot</span> <span class="audio-time caption" data-speaker="Omar" data-start="1441.481000" data-stop="1445.587000">what my binding to mark what Vim calls a</span> <span class="audio-time caption" data-speaker="Omar" data-start="1445.707000" data-stop="1448.050000">word in capital letters, which means a consecutive</span> <span class="audio-time caption" data-speaker="Omar" data-start="1448.110000" data-stop="1450.754000">stretch of non-space characters... If you</span> <span class="audio-time caption" data-speaker="Omar" data-start="1450.774000" data-stop="1452.912000">mark this, I can act on it with <code>=</code>,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1452.913000" data-stop="1454.018000">get the result.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1454.487000" data-stop="1458.192000"><strong class="speaker-name">Sacha:</strong>  And specifically this <code>embark-region-map</code> is what</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1459.054000" data-stop="1460.536000">you can add in the selected region.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1461.056000" data-stop="1463.179000">Incidentally, I've been playing around with using</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1463.199000" data-stop="1465.102000">the Selected package for this because it also</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1465.122000" data-stop="1466.104000">gives you the key map.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1467.706000" data-stop="1467.926000"><strong class="speaker-name">Omar:</strong>  Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1467.946000" data-stop="1469.829000">I love the Selected package and recommend it</span> <span class="audio-time caption" data-speaker="Omar" data-start="1469.889000" data-stop="1470.109000">often.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1470.189000" data-stop="1474.596000">I don't use it myself just because the only thing</span> <span class="audio-time caption" data-speaker="Omar" data-start="1474.656000" data-stop="1477.560000">it would save me is calling <code>embark-act</code>,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1477.580000" data-stop="1479.983000">because the commands I would put in the selected</span> <span class="audio-time caption" data-speaker="Omar" data-start="1480.023000" data-stop="1481.986000">key map are exactly the commands I have in the</span> <span class="audio-time caption" data-speaker="Omar" data-start="1482.026000" data-stop="1483.228000"><code>embark-region-map</code>.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1483.208000" data-stop="1486.077000">For me, Selected would only save me one</span> <span class="audio-time caption" data-speaker="Omar" data-start="1486.117000" data-stop="1487.822000">keystroke, which is <code>Embark Act</code>,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1487.963000" data-stop="1490.712000">so I don't feel it's worth it, but it's a great</span> <span class="audio-time caption" data-speaker="Omar" data-start="1490.752000" data-stop="1491.012000">idea.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1492.798000" data-stop="1495.206000">For example, I do use the rectangle keymap.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1495.948000" data-stop="1496.931000">Yes.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1497.485000" data-stop="1500.269000">So they're the only difference.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1500.489000" data-stop="1503.293000">It's equally good an idea as Selected is.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1503.593000" data-stop="1505.736000">The only difference is that the rectangle keymap</span> <span class="audio-time caption" data-speaker="Omar" data-start="1506.016000" data-stop="1508.800000">comes with Emacs and Selected is an external</span> <span class="audio-time caption" data-speaker="Omar" data-start="1508.840000" data-stop="1509.180000">package.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1509.200000" data-stop="1512.204000">I decided it's not worth installing an</span> <span class="audio-time caption" data-speaker="Omar" data-start="1512.265000" data-stop="1514.127000">external package when I could just use</span> <span class="audio-time caption" data-speaker="Omar" data-start="1514.147000" data-stop="1517.972000"><code>Embark Act</code>, which I do have to use because otherwise
I</span> <span class="audio-time caption" data-speaker="Omar" data-start="1518.012000" data-stop="1519.454000">won't understand people's bug reports.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1520.856000" data-stop="1523.900000">But the rectangle mode there, that one is</span> <span class="audio-time caption" data-speaker="Omar" data-start="1523.940000" data-stop="1524.260000">built in,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1524.280000" data-stop="1526.243000">so I just found a bunch of useful stuff in it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1526.830000" data-stop="1528.853000"><strong class="speaker-name">Sacha:</strong>  Yeah, and I noticed you have also</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1528.933000" data-stop="1531.658000">like you have a <code>narrow-to-point</code> so that you can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1531.798000" data-stop="1534.482000">use your rectangle commands to yank something</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1534.522000" data-stop="1534.823000">into it,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1535.163000" data-stop="1537.186000">so I get the sense that you use rectangles a fair</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1537.227000" data-stop="1537.407000">bit.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1537.447000" data-stop="1539.891000"><strong class="speaker-name">Omar:</strong>  You've really read my configuration</span> <span class="audio-time caption" data-speaker="Omar" data-start="1539.931000" data-stop="1541.093000">very carefully.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1541.153000" data-stop="1542.675000">This <code>narrow-to-point</code> is subtle.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1543.056000" data-stop="1545.460000">I am very impressed that you figured out the</span> <span class="audio-time caption" data-speaker="Omar" data-start="1545.500000" data-stop="1546.341000">reason for it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1546.456000" data-stop="1549.139000"><strong class="speaker-name">Sacha:</strong>  I started digging through</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1549.239000" data-stop="1551.162000"><code>narrow-extras</code> because I saw your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1551.182000" data-stop="1552.103000"><code>narrow-or-widen-dwim</code></span> <span class="audio-time caption" data-speaker="Sacha" data-start="1552.143000" data-stop="1554.005000">and I said, yes, I need that in my life.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1555.146000" data-stop="1557.189000"><strong class="speaker-name">Omar:</strong>  I don't think... I took it from somebody.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1557.870000" data-stop="1560.713000">Endless Parentheses, probably.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1561.694000" data-stop="1564.558000">The issue with <code>narrow-to-point</code>, the reason you</span> <span class="audio-time caption" data-speaker="Omar" data-start="1564.618000" data-stop="1567.721000">need it, is that if you insert a rectangle</span> <span class="audio-time caption" data-speaker="Omar" data-start="1567.782000" data-stop="1574.910000">somewhere, try to insert it in a blank line,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1575.329000" data-stop="1578.559000">and it'll overlap with what was after it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1579.121000" data-stop="1581.649000">But if you first narrow to the point and then</span> <span class="audio-time caption" data-speaker="Omar" data-start="1581.709000" data-stop="1584.718000">insert the rectangle and then widen again, it</span> <span class="audio-time caption" data-speaker="Omar" data-start="1584.738000" data-stop="1585.822000">gets its own blank lines.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1586.464000" data-stop="1590.599000">That's the reason I have it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1590.000000">26:30</span> <strong>Multiple cursors</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1590.600000" data-stop="1593.080000"><strong class="speaker-name">Sacha:</strong>  @zor_​org asks, was there a time you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1593.120000" data-stop="1595.042000">wanted multiple cursors?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1595.062000" data-stop="1596.023000">Have you ever been tempted?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1596.524000" data-stop="1597.685000"><strong class="speaker-name">Omar:</strong>  Multiple cursors.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1600.468000" data-stop="1602.930000">I think it gave me a false sense of security</span> <span class="audio-time caption" data-speaker="Omar" data-start="1603.010000" data-stop="1606.995000">which is why I experimented not using it and then</span> <span class="audio-time caption" data-speaker="Omar" data-start="1607.035000" data-stop="1609.357000">the experiment just never stopped.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1609.758000" data-stop="1612.120000">The thing with</span> <span class="audio-time caption" data-speaker="Omar" data-start="1612.100000" data-stop="1613.162000">multiple cursors...</span> <span class="audio-time caption" data-speaker="Omar" data-start="1613.943000" data-stop="1616.068000">Multiple cursors are more interactive than</span> <span class="audio-time caption" data-speaker="Omar" data-start="1616.108000" data-stop="1620.456000">keyboard macros, because if you can see several</span> <span class="audio-time caption" data-speaker="Omar" data-start="1620.496000" data-stop="1623.281000">cursors on the screen, you can visually make sure</span> <span class="audio-time caption" data-speaker="Omar" data-start="1623.341000" data-stop="1625.425000">that what you're doing does apply correctly at</span> <span class="audio-time caption" data-speaker="Omar" data-start="1625.465000" data-stop="1626.868000">each of those locations.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1627.591000" data-stop="1630.394000">But then I started noticing that that made me</span> <span class="audio-time caption" data-speaker="Omar" data-start="1630.474000" data-stop="1632.537000">feel very confident I was doing things the right</span> <span class="audio-time caption" data-speaker="Omar" data-start="1632.557000" data-stop="1633.538000">way in multiple cursors,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1633.858000" data-stop="1636.301000">but there were some cursors offscreen where I</span> <span class="audio-time caption" data-speaker="Omar" data-start="1636.361000" data-stop="1638.343000">wasn't paying attention to what was happening</span> <span class="audio-time caption" data-speaker="Omar" data-start="1638.383000" data-stop="1639.064000">there,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1639.084000" data-stop="1641.607000">and then I got it wrong and was more confused.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1641.627000" data-stop="1643.769000">Just psychologically, a keyboard macro,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1643.789000" data-stop="1645.912000">since I know I don't see the other places where</span> <span class="audio-time caption" data-speaker="Omar" data-start="1645.952000" data-stop="1648.274000">I'm going to run it, I'm more careful when I</span> <span class="audio-time caption" data-speaker="Omar" data-start="1648.335000" data-stop="1649.616000">record the keyboard macro.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1649.596000" data-stop="1654.212000">It's a psychological trick I'm playing on myself.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1654.774000" data-stop="1656.680000">By using keyboard macros instead of multiple</span> <span class="audio-time caption" data-speaker="Omar" data-start="1656.700000" data-stop="1659.510000">cursors, I force myself to pay more attention to</span> <span class="audio-time caption" data-speaker="Omar" data-start="1659.550000" data-stop="1660.112000">what I'm doing.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1660.000000">27:40</span> <strong>Block-undo and regular undo</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1660.582000" data-stop="1662.105000"><strong class="speaker-name">Sacha:</strong>  Does the block undo still let you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1662.686000" data-stop="1665.731000">select a region in order to undo just the part</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1665.751000" data-stop="1668.235000">that was within it, in case you notice offscreen</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1668.276000" data-stop="1670.640000">that it's done something bad in just these</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1670.760000" data-stop="1671.541000">entries?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1671.561000" data-stop="1673.725000"><strong class="speaker-name">Omar:</strong>  Yeah, that's completely independent.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1673.745000" data-stop="1676.390000">That built-in Emacs behavior is not affected by</span> <span class="audio-time caption" data-speaker="Omar" data-start="1676.871000" data-stop="1678.353000">undo boundaries.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1679.435000" data-stop="1680.497000"><strong class="speaker-name">Sacha:</strong>  Wait, is it?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1680.713000" data-stop="1683.878000"><strong class="speaker-name">Omar:</strong>  If it overlaps with part of... I</span> <span class="audio-time caption" data-speaker="Omar" data-start="1683.938000" data-stop="1684.278000">don't know.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1684.318000" data-stop="1684.879000">Sorry, sorry.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1686.261000" data-stop="1686.802000">I don't know.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1688.365000" data-stop="1691.850000">So if I have a big change that I amalgamated into</span> <span class="audio-time caption" data-speaker="Omar" data-start="1691.890000" data-stop="1694.995000">a single undo, and then I pick a region that</span> <span class="audio-time caption" data-speaker="Omar" data-start="1695.135000" data-stop="1697.779000">overlaps partially with that but not completely,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1697.799000" data-stop="1699.021000">what would undo and region do?</span> <span class="audio-time caption" data-speaker="Omar" data-start="1699.541000" data-stop="1700.062000">I don't know.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1700.343000" data-stop="1701.945000">I think it...</span> <span class="audio-time caption" data-speaker="Omar" data-start="1702.398000" data-stop="1703.101000">I'm just guessing.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1703.241000" data-stop="1705.812000">I would just think that it sees that the affected</span> <span class="audio-time caption" data-speaker="Omar" data-start="1705.872000" data-stop="1709.467000">region by the big block undo is not completely</span> <span class="audio-time caption" data-speaker="Omar" data-start="1709.528000" data-stop="1711.456000">contained in the region and then it doesn't undo</span> <span class="audio-time caption" data-speaker="Omar" data-start="1711.536000" data-stop="1711.817000">it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1712.354000" data-stop="1714.677000"><strong class="speaker-name">Sacha:</strong>  Okay, so I'm just going to conclude</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1714.737000" data-stop="1717.361000">that you do not make mistakes with your keyboard</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1717.401000" data-stop="1717.881000">macros.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1719.163000" data-stop="1721.626000"><strong class="speaker-name">Omar:</strong>  I can easily undo</span> <span class="audio-time caption" data-speaker="Omar" data-start="1721.646000" data-stop="1723.869000">them instead of having to keep running on undo.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1723.889000" data-stop="1726.392000">So it's not that I don't make mistakes, but that</span> <span class="audio-time caption" data-speaker="Omar" data-start="1726.493000" data-stop="1729.056000">I try to fix them right after running the</span> <span class="audio-time caption" data-speaker="Omar" data-start="1729.096000" data-stop="1730.558000">keyboard macro.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1730.578000" data-stop="1731.519000"><strong class="speaker-name">Sacha:</strong>  All right, all right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1732.360000" data-stop="1733.599000">I had another question.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1733.000000">28:53</span> <strong>Cycling through Embark targets</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1733.600000" data-stop="1736.085000"><strong class="speaker-name">Sacha:</strong> Ou've got a lot of different Embark maps and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1736.165000" data-stop="1738.689000">you've got a lot of different Embark targets.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1740.291000" data-stop="1741.332000">How do you handle</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1742.611000" data-stop="1744.835000">going through the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1744.895000" data-stop="1748.041000">different ones that are at the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1748.101000" data-stop="1749.984000">point? At the moment, I've got</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1750.005000" data-stop="1752.649000">the label at the top and I just flip</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1752.669000" data-stop="1754.753000">through it. I know sometimes I need to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1754.793000" data-stop="1756.897000">hit it twice or sometimes I need to hit</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1756.937000" data-stop="1760.704000"><code>embark-act</code> three times for this kind of thing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1760.684000" data-stop="1764.372000">How do you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1764.412000" data-stop="1765.935000">distinguish between lots of them when you're just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1765.956000" data-stop="1766.376000">going through it?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1766.797000" data-stop="1770.145000"><strong class="speaker-name">Omar:</strong>  I think that's the poorest part of</span> <span class="audio-time caption" data-speaker="Omar" data-start="1770.185000" data-stop="1772.690000">the user experience with <code>Embark Act</code> currently.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1773.131000" data-stop="1776.278000">I don't really like it, but I don't have a good</span> <span class="audio-time caption" data-speaker="Omar" data-start="1776.358000" data-stop="1778.102000">alternative.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1778.082000" data-stop="1782.490000">A lot of people like <code>expand-region</code> and I don’t</span> <span class="audio-time caption" data-speaker="Omar" data-start="1782.530000" data-stop="1784.434000">like it because I feel like I have to hammer it</span> <span class="audio-time caption" data-speaker="Omar" data-start="1784.674000" data-stop="1785.976000">off.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1785.996000" data-stop="1788.962000">I prefer to have a lot of… This is another thing</span> <span class="audio-time caption" data-speaker="Omar" data-start="1789.002000" data-stop="1790.945000">I learned from Vim: have a lot of commands to</span> <span class="audio-time caption" data-speaker="Omar" data-start="1790.986000" data-stop="1794.091000">mark specific things and just memorize all of</span> <span class="audio-time caption" data-speaker="Omar" data-start="1794.472000" data-stop="1794.572000">them.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1794.552000" data-stop="1796.975000">But <code>expand-region</code> says, no, don’t memorize</span> <span class="audio-time caption" data-speaker="Omar" data-start="1797.015000" data-stop="1797.175000">that.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1797.215000" data-stop="1800.278000">Just hammer on <code>expand-region</code> until you get the</span> <span class="audio-time caption" data-speaker="Omar" data-start="1800.338000" data-stop="1800.819000">thing you want.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1800.859000" data-stop="1806.826000">Ffor me, even though it's objectively fast, it</span> <span class="audio-time caption" data-speaker="Omar" data-start="1806.846000" data-stop="1808.668000">just feels very slow.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1808.688000" data-stop="1810.330000">It feels like I have to hit it four times</span> <span class="audio-time caption" data-speaker="Omar" data-start="1810.490000" data-stop="1811.651000">whenever I want to mark something.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1812.051000" data-stop="1814.474000">I get the same feeling from cycling in</span> <span class="audio-time caption" data-speaker="Omar" data-start="1814.534000" data-stop="1814.694000"><code>embark-act</code>.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1814.915000" data-stop="1816.056000">I don't really like it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1816.136000" data-stop="1819.059000">But if we had come up with a better alternative,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1819.079000" data-stop="1821.322000">and I say we because I discussed this in the</span> <span class="audio-time caption" data-speaker="Omar" data-start="1821.362000" data-stop="1822.483000">GitHub issues with</span> <span class="audio-time caption" data-speaker="Omar" data-start="1822.463000" data-stop="1828.466000">with Daniel Mendler and Prot, and I think @hmelman</span> <span class="audio-time caption" data-speaker="Omar" data-start="1828.506000" data-stop="1832.502000">was also in those discussions, and maybe</span> <span class="audio-time caption" data-speaker="Omar" data-start="1832.582000" data-stop="1833.566000">Clemens Radermacher?</span> <span class="audio-time caption" data-speaker="Omar" data-start="1836.622000" data-stop="1839.726000">I just couldn't come up with a much better</span> <span class="audio-time caption" data-speaker="Omar" data-start="1839.786000" data-stop="1840.447000">alternative,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1840.467000" data-stop="1842.250000">so I put up with it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1842.610000" data-stop="1844.273000">I don't need to cycle that much.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1844.373000" data-stop="1846.976000">I almost always want to act on the first target.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1846.996000" data-stop="1850.942000">Which is unfair, because I decided what the first</span> <span class="audio-time caption" data-speaker="Omar" data-start="1850.982000" data-stop="1852.524000">target is in the default configuration,</span> <span class="audio-time caption" data-speaker="Omar" data-start="1852.544000" data-stop="1855.288000">so it's sort of tuned so that I hardly ever need</span> <span class="audio-time caption" data-speaker="Omar" data-start="1855.328000" data-stop="1855.768000">to cycle.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1855.869000" data-stop="1858.492000">I apologize if it means other people need to</span> <span class="audio-time caption" data-speaker="Omar" data-start="1858.532000" data-stop="1859.153000">cycle a lot.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1859.453000" data-stop="1859.934000"><strong class="speaker-name">Sacha:</strong>  Nonsense.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1859.974000" data-stop="1861.818000">We can all modify our target list,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1862.500000" data-stop="1864.264000">so we can always tune it to what we want.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1865.045000" data-stop="1866.428000"><strong class="speaker-name">Omar:</strong>  I mean, it's a lot of work, right?</span> <span class="audio-time caption" data-speaker="Omar" data-start="1866.949000" data-stop="1869.936000">I think the default Embark configuration is over</span> <span class="audio-time caption" data-speaker="Omar" data-start="1870.036000" data-stop="1871.499000">half of the source code of Embark.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1873.083000" data-stop="1879.116000">The configuration is... Where does that start?</span> <span class="audio-time caption" data-speaker="Omar" data-start="1879.653000" data-stop="1882.035000">Oh, I wish the autoload cookies were not in the</span> <span class="audio-time caption" data-speaker="Omar" data-start="1882.115000" data-stop="1882.476000">outline.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1884.378000" data-stop="1889.062000"><strong class="speaker-name">Sacha:</strong>  If you do a space, oh, I guess it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1889.102000" data-stop="1890.143000">doesn't do that, right?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1890.163000" data-stop="1891.184000"><strong class="speaker-name">Omar:</strong>  Oh, yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1891.204000" data-stop="1895.188000">For orderless, I use</span> <span class="audio-time caption" data-speaker="Omar" data-start="1895.248000" data-stop="1899.839000">the escapable spaces, so I can do that.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1899.000000">31:39</span> <strong>Imenu for navigation</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1899.840000" data-stop="1901.855000"><strong class="speaker-name">Sacha:</strong>  I should also point out that your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1901.935000" data-stop="1905.638000">config uses a lot of imenu also, which was</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1905.698000" data-stop="1907.040000">another interesting thing I picked up.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1907.440000" data-stop="1909.542000"><strong class="speaker-name">Omar:</strong>  Yeah, I like imenu, yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1909.522000" data-stop="1911.184000">I should add imenu for this.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1911.304000" data-stop="1914.348000">One thing I did to imenu is I added a section for</span> <span class="audio-time caption" data-speaker="Omar" data-start="1914.388000" data-stop="1917.031000">key maps.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1917.051000" data-stop="1920.114000"><strong class="speaker-name">Sacha:</strong>  I saw that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1920.274000" data-stop="1922.176000">You have a regular expression so you can see it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1922.257000" data-stop="1923.999000">easily.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1925.180000" data-stop="1925.540000"><strong class="speaker-name">Omar:</strong>  Right.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1930.106000" data-stop="1932.488000">It's not half, but a big chunk of Embark is just</span> <span class="audio-time caption" data-speaker="Omar" data-start="1932.528000" data-stop="1934.010000">the default configuration.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1934.260000" data-stop="1937.996000">It would be a lot of work to configure Embark</span> <span class="audio-time caption" data-speaker="Omar" data-start="1938.036000" data-stop="1938.619000">from scratch.</span> <span class="audio-time caption" data-speaker="Omar" data-start="1938.699000" data-stop="1940.467000">That's why the package comes with an extensive</span> <span class="audio-time caption" data-speaker="Omar" data-start="1940.527000" data-stop="1941.672000">default configuration.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1942.225000" data-stop="1944.367000"><strong class="speaker-name">Sacha:</strong>  Charlie Baker says, “I have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1944.407000" data-stop="1946.869000"><code>embark-act</code> set up to expand in the same way</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1946.929000" data-stop="1948.991000"><code>expand-region</code> does, but with Embark’s type
awareness,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1949.071000" data-stop="1950.553000">it's easy to add a contract function.”</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1950.573000" data-stop="1952.935000">I guess maybe also some highlighting helps</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1952.955000" data-stop="1953.355000">with that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1954.336000" data-stop="1956.738000">Charlie also says, “I also have a completing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1956.778000" data-stop="1958.800000">read interface in the transient menu to jump</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1958.860000" data-stop="1961.022000">directly to one of the many types under point</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1961.062000" data-stop="1963.144000">that I'm seeking.” Charlie, you're going to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1963.184000" data-stop="1964.926000">share somewhere so I can steal that part of your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1964.966000" data-stop="1965.666000">config, right?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="1967.248000" data-stop="1968.609000"><strong class="speaker-name">Omar:</strong>  I mean, that would be something I</span> <span class="audio-time caption" data-speaker="Omar" data-start="1968.649000" data-stop="1971.912000">would consider adding to Embark itself.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1971.000000">32:51</span> <strong>Collaboration</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1971.993000" data-stop="1974.556000"><strong class="speaker-name">Sacha:</strong>  You mentioned having all these</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1974.596000" data-stop="1977.500000">conversations with Daniel and others through</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1977.520000" data-stop="1979.242000">GitHub and other things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1979.282000" data-stop="1982.986000">I wanted to touch on that because I think in the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1983.107000" data-stop="1987.312000">Emacs community, it's pretty rare to find people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1987.352000" data-stop="1989.574000">who are collaborating on packages and packages</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1989.614000" data-stop="1990.896000">that work so well together.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1991.717000" data-stop="1995.822000">The partnership between your packages and Daniel</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1995.862000" data-stop="1998.505000">Mendler or Minad's packages with Consult and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1998.545000" data-stop="2000.768000">Vertico and Marginalia is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2000.748000" data-stop="2003.657000">really nice. We don't see a lot</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2003.677000" data-stop="2006.406000">of examples of that kind of inter-packaged</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2006.486000" data-stop="2008.813000">conversation as much.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2008.894000" data-stop="2011.281000">How did that start?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2011.632000" data-stop="2013.536000"><strong class="speaker-name">Omar:</strong>  I think it was mostly Daniel's</span> <span class="audio-time caption" data-speaker="Omar" data-start="2013.576000" data-stop="2013.977000">initiative.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2014.138000" data-stop="2019.570000">I had started work on Orderless and</span> <span class="audio-time caption" data-speaker="Omar" data-start="2019.670000" data-stop="2022.797000">Embark. I think his first package was</span> <span class="audio-time caption" data-speaker="Omar" data-start="2022.897000" data-stop="2025.463000">Consult, maybe, of this family of packages.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2028.189000" data-stop="2032.600000">I remember Embark was a pretty sad shape when</span> <span class="audio-time caption" data-speaker="Omar" data-start="2032.601000" data-stop="2034.600000">Daniel started raising issues</span> <span class="audio-time caption" data-speaker="Omar" data-start="2034.601000" data-stop="2038.800000">on the Github. He really lit a fire under me</span> <span class="audio-time caption" data-speaker="Omar" data-start="2038.801000" data-stop="2041.800000">to improve Embark.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2041.801000" data-stop="2044.000000">It started with him complaining about things</span> <span class="audio-time caption" data-speaker="Omar" data-start="2044.001000" data-stop="2046.967000">in Embark, and I immediately realized that he</span> <span class="audio-time caption" data-speaker="Omar" data-start="2046.968000" data-stop="2048.367000">was thinking very carefully about</span> <span class="audio-time caption" data-speaker="Omar" data-start="2048.368000" data-stop="2051.367000">the user experience, so I thought</span> <span class="audio-time caption" data-speaker="Omar" data-start="2051.368000" data-stop="2053.033000">he is full of good ideas</span> <span class="audio-time caption" data-speaker="Omar" data-start="2053.034000" data-stop="2054.194000">and I should listen to them.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2054.174000" data-stop="2056.742000">Back then at the start of Embark and</span> <span class="audio-time caption" data-speaker="Omar" data-start="2056.782000" data-stop="2059.449000">Orderless, Prot was also very involved in</span> <span class="audio-time caption" data-speaker="Omar" data-start="2059.550000" data-stop="2060.672000">discussing the design.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2060.954000" data-stop="2062.418000">All of this is on GitHub issues.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2063.360000" data-stop="2066.952000">Some software archaeologists can find all of it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2067.539000" data-stop="2072.130000">So I think we started working together when</span> <span class="audio-time caption" data-speaker="Omar" data-start="2072.190000" data-stop="2074.357000">we realized we were both writing Marginalia,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2074.657000" data-stop="2076.723000">so we decided to merge those two packages into a</span> <span class="audio-time caption" data-speaker="Omar" data-start="2076.783000" data-stop="2077.224000">single one.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2077.906000" data-stop="2081.495000">I think maybe the name Marginalia was</span> <span class="audio-time caption" data-speaker="Omar" data-start="2081.514000" data-stop="2082.317000">suggested by Prot,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2082.456000" data-stop="2084.282000">I don't remember, but it's a very good name.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2084.532000" data-stop="2090.559000">The collaboration was completely unplanned.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2091.040000" data-stop="2094.484000">We just did it because we had already talked on</span> <span class="audio-time caption" data-speaker="Omar" data-start="2094.524000" data-stop="2098.069000">the Embark issues and Daniel's suggestions</span> <span class="audio-time caption" data-speaker="Omar" data-start="2098.109000" data-stop="2102.194000">improved Embark a great deal in a short amount of</span> <span class="audio-time caption" data-speaker="Omar" data-start="2102.214000" data-stop="2102.534000">time.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2103.155000" data-stop="2106.719000">So then when we both realized we were writing</span> <span class="audio-time caption" data-speaker="Omar" data-start="2106.779000" data-stop="2108.842000">something like Marginalia, we decided to just</span> <span class="audio-time caption" data-speaker="Omar" data-start="2108.922000" data-stop="2111.265000">merge those two packages and write a single one.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2111.245000" data-stop="2113.828000">Since that worked out well, we kept on</span> <span class="audio-time caption" data-speaker="Omar" data-start="2113.868000" data-stop="2114.428000">collaborating.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2115.510000" data-stop="2119.233000">So far, we haven't co-written any other package.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2120.355000" data-stop="2123.358000">One thing like that is that now Daniel is a</span> <span class="audio-time caption" data-speaker="Omar" data-start="2123.418000" data-stop="2125.881000">co-maintainer of Orderless, which is great</span> <span class="audio-time caption" data-speaker="Omar" data-start="2125.961000" data-stop="2128.964000">because Daniel is extremely efficient at fixing</span> <span class="audio-time caption" data-speaker="Omar" data-start="2129.044000" data-stop="2129.324000">bugs.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2129.464000" data-stop="2132.568000">He does it instantly.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2132.588000" data-stop="2136.272000">He figures out what's wrong and has a patch in a</span> <span class="audio-time caption" data-speaker="Omar" data-start="2136.332000" data-stop="2138.674000">few minutes after he looks at the issue.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2138.714000" data-stop="2140.476000">He looks at the issue</span> <span class="audio-time caption" data-speaker="Omar" data-start="2140.456000" data-stop="2142.339000">the day it was posted or the day after.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2142.459000" data-stop="2145.142000">I can't do things that quickly.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2145.263000" data-stop="2149.969000">It's great that he's helping out with orderless.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2150.409000" data-stop="2152.312000">It wasn't planned.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2152.472000" data-stop="2154.315000">It just felt right from the very beginning.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2154.415000" data-stop="2157.819000">I immediately realized he had some great ideas</span> <span class="audio-time caption" data-speaker="Omar" data-start="2157.900000" data-stop="2159.942000">and implemented a lot of them.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2161.444000" data-stop="2163.968000">Then we started doing that the other way around.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2164.068000" data-stop="2166.712000">I started commenting on a bunch of issues in</span> <span class="audio-time caption" data-speaker="Omar" data-start="2167.392000" data-stop="2169.315000">Consult and Vertico.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2169.852000" data-stop="2173.537000">I think I exerted some pressure on Daniel to add</span> <span class="audio-time caption" data-speaker="Omar" data-start="2173.577000" data-stop="2177.021000">features to Vertico, like the grid view and the</span> <span class="audio-time caption" data-speaker="Omar" data-start="2177.082000" data-stop="2177.923000">horizontal view.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2178.884000" data-stop="2181.207000">Or maybe specifically the grid view, because at</span> <span class="audio-time caption" data-speaker="Omar" data-start="2181.227000" data-stop="2183.790000">the time I was... I'm sort of slow to switch</span> <span class="audio-time caption" data-speaker="Omar" data-start="2184.031000" data-stop="2185.352000">basic Emacs infrastructure.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2185.713000" data-stop="2187.916000">I wasn't using Vertico for a long time, even</span> <span class="audio-time caption" data-speaker="Omar" data-start="2187.936000" data-stop="2188.857000">though I was like</span> <span class="audio-time caption" data-speaker="Omar" data-start="2188.837000" data-stop="2193.533000">opining on the Github issues for Vertico,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2193.534000" data-stop="2195.033000">and the reason was that</span> <span class="audio-time caption" data-speaker="Omar" data-start="2195.034000" data-stop="2198.337000">I was stuck with the vastly inferior <code>embark-live</code>.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2198.858000" data-stop="2201.303000">There was this <code>embark-live</code> thing where you could</span> <span class="audio-time caption" data-speaker="Omar" data-start="2201.864000" data-stop="2204.360000">pop up a buffer with the targets in the</span> <span class="audio-time caption" data-speaker="Omar" data-start="2204.361000" data-stop="2206.514000">minibuffer, which just means a completion candidate.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2206.534000" data-stop="2209.360000">So you could use Embark as a kind of</span> <span class="audio-time caption" data-speaker="Omar" data-start="2209.340000" data-stop="2212.224000">completion user interface.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2213.346000" data-stop="2217.172000">It was very slow, but it was very featureful.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2217.492000" data-stop="2220.317000">You could do a vertical list.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2220.357000" data-stop="2221.318000">You could do a grid.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2221.659000" data-stop="2224.182000">In the list, you could activate zebra stripes.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2225.284000" data-stop="2226.806000">Yeah, you can see</span> <span class="audio-time caption" data-speaker="Omar" data-start="2227.668000" data-stop="2229.110000">that's been removed from Embark.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2229.511000" data-stop="2233.356000">But I kept saying to Daniel, I'll switch to</span> <span class="audio-time caption" data-speaker="Omar" data-start="2233.477000" data-stop="2235.359000">Vertico if you add a grid view.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2235.660000" data-stop="2237.743000">He eventually did add the grid view.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2237.723000" data-stop="2240.346000">I kept my word and switched to Vertico, which is much</span> <span class="audio-time caption" data-speaker="Omar" data-start="2240.406000" data-stop="2242.168000">better than the thing in Embark.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2242.228000" data-stop="2243.870000">I was just being stubborn by not switching</span> <span class="audio-time caption" data-speaker="Omar" data-start="2243.950000" data-stop="2244.871000">earlier.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2244.891000" data-stop="2246.733000">But if I had switched earlier, maybe Vertico</span> <span class="audio-time caption" data-speaker="Omar" data-start="2246.773000" data-stop="2248.916000">wouldn't have a grid view.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2249.677000" data-stop="2251.279000"><strong class="speaker-name">Sacha:</strong>  I think it's definitely a good</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2251.339000" data-stop="2258.407000">example of a set of packages that has... So all</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2258.427000" data-stop="2260.289000">this started in about 2020s or so.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2261.010000" data-stop="2265.655000">So we actually can see how people have gotten into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2265.955000" data-stop="2269.560000">using Vertico and all the other packages compared</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2269.600000" data-stop="2272.304000">to, say, looking at more popular packages that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2272.344000" data-stop="2273.686000">have been around for a long time.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2273.726000" data-stop="2277.431000">"Of course everyone's been using</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2277.531000" data-stop="2278.592000">Org Mode for a long time."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2278.632000" data-stop="2279.333000">It's there.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2279.373000" data-stop="2281.079000">It's part of the fabric.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2281.000000">38:01</span> <strong>Technology adoption and Emacs packages</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2281.080000" data-stop="2282.638000"><strong class="speaker-name">Sacha:</strong> It's very interesting to see the technology</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2282.658000" data-stop="2284.240000">adoption around it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2284.280000" data-stop="2286.303000">A lot of the things that people struggle with as</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2286.383000" data-stop="2288.386000">package authors is getting other people to try</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2288.426000" data-stop="2291.490000">out their stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2291.470000" data-stop="2294.837000">With Orderless and Embark probably in the early</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2294.897000" data-stop="2298.203000">days, what was that like to put this thing out</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2298.224000" data-stop="2301.410000">there in the world and have people start to try</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2301.490000" data-stop="2302.733000">it?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2302.753000" data-stop="2303.995000">How did people find it?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2305.004000" data-stop="2307.989000"><strong class="speaker-name">Omar:</strong>  I personally found it very scary.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2308.791000" data-stop="2313.159000">At the beginning, I still thought Embark was a</span> <span class="audio-time caption" data-speaker="Omar" data-start="2313.500000" data-stop="2315.884000">part of my personal Emacs configuration that sort</span> <span class="audio-time caption" data-speaker="Omar" data-start="2315.924000" data-stop="2318.609000">of grew out of control and I decided to publish</span> <span class="audio-time caption" data-speaker="Omar" data-start="2318.649000" data-stop="2319.090000">separately.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2320.272000" data-stop="2322.977000">But then I have all these people telling me how</span> <span class="audio-time caption" data-speaker="Omar" data-start="2323.017000" data-stop="2325.582000">to improve what I still thought of as part of my</span> <span class="audio-time caption" data-speaker="Omar" data-start="2325.642000" data-stop="2328.447000">personal configuration.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2328.427000" data-stop="2330.470000">I think one thing that helped was that people</span> <span class="audio-time caption" data-speaker="Omar" data-start="2330.510000" data-stop="2331.391000">made very good suggestions.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2331.411000" data-stop="2333.714000">So I realized, no, no, it's worth publishing</span> <span class="audio-time caption" data-speaker="Omar" data-start="2334.134000" data-stop="2336.397000">reusable parts of your configuration just for the</span> <span class="audio-time caption" data-speaker="Omar" data-start="2336.677000" data-stop="2339.401000">GitHub issues, just for people finding bugs and</span> <span class="audio-time caption" data-speaker="Omar" data-start="2339.441000" data-stop="2341.804000">suggesting improvements and so on.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2342.645000" data-stop="2347.511000">But yeah, I had to adjust to having some users.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2347.551000" data-stop="2349.013000">At first, it was very few people.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2350.235000" data-stop="2353.459000">But then they got added to Doom.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2353.499000" data-stop="2356.122000">I think they were made the default in Doom.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2356.237000" data-stop="2359.243000">That was a huge influx of users.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2359.283000" data-stop="2361.248000">That was very scary.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2361.508000" data-stop="2363.813000">We were suddenly flooded with new bug reports,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2363.933000" data-stop="2365.917000">like all of the packages in the family.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2366.038000" data-stop="2370.327000">I remember feeling like there's a horde of Doom</span> <span class="audio-time caption" data-speaker="Omar" data-start="2370.447000" data-stop="2371.950000">users running at us.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2374.748000" data-stop="2375.749000"><strong class="speaker-name">Sacha:</strong>  All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2377.070000" data-stop="2378.832000">So, starter kit, then everybody gets</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2378.892000" data-stop="2381.534000">into it, and then everybody starts talking about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2381.614000" data-stop="2382.835000">it because they're like, yeah, you know, it's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2382.875000" data-stop="2383.055000">great.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2383.075000" data-stop="2385.578000">You can specify things out of order.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2385.638000" data-stop="2387.540000">You don't have to remember what words come in,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2387.560000" data-stop="2389.081000">which order when you're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2389.121000" data-stop="2389.882000">completing things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2390.542000" data-stop="2393.465000">Those of us who aren't on starter kits are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2393.485000" data-stop="2395.046000">like, yes, we should try that too.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2395.847000" data-stop="2397.589000">That's how it's done.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2397.609000" data-stop="2399.991000"><strong class="speaker-name">Omar:</strong>  Doom helped a lot to raise</span> <span class="audio-time caption" data-speaker="Omar" data-start="2400.771000" data-stop="2406.099000">awareness and adoption.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2406.000000">40:06</span> <strong>Personal packages and naming conventions</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2406.100000" data-stop="2409.479000"><strong class="speaker-name">Sacha:</strong>  You've got a lot of other small packages.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2410.040000" data-stop="2412.724000">For something as small as block-undo, which you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2412.764000" data-stop="2414.947000">showed us, it really just fits in one screen.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2414.967000" data-stop="2416.529000">Is that something that you would set up as a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2416.589000" data-stop="2419.233000">different repository or just as a file within</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2419.253000" data-stop="2419.854000">your current one?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2419.874000" data-stop="2421.496000"><strong class="speaker-name">Omar:</strong>  No, those are all in my <code>user-lisp</code></span> <span class="audio-time caption" data-speaker="Omar" data-start="2421.616000" data-stop="2422.117000">directory.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2423.940000" data-stop="2425.382000"><strong class="speaker-name">Sacha:</strong>  I have actually successfully used</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2425.562000" data-stop="2428.226000">use package to grab stuff out of your <code>user-lisp</code></span> <span class="audio-time caption" data-speaker="Sacha" data-start="2428.246000" data-stop="2431.350000">directory and use them in my config.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2431.330000" data-stop="2432.211000">Yeah,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2432.231000" data-stop="2432.751000">it works.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2432.891000" data-stop="2435.934000">I just say, all right, my <code>load path</code> is here where</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2435.954000" data-stop="2437.155000">I've checked out your source code.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2438.276000" data-stop="2440.899000">It defines these commands. Then I can bind</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2440.979000" data-stop="2445.243000">your functions to my shortcuts.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2446.063000" data-stop="2450.467000">Although, because your functions are named the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2450.507000" data-stop="2455.151000">way that I would expect Emacs functions to be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2455.191000" data-stop="2457.634000">named, I've been defaliasing them so that I don't</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2457.754000" data-stop="2459.635000">accidentally say, oh yeah, that's totally built</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2459.736000" data-stop="2461.337000">in when it isn't.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2461.317000" data-stop="2465.481000"><strong class="speaker-name">Omar:</strong>  Yeah, I'm inconsistent with these</span> <span class="audio-time caption" data-speaker="Omar" data-start="2465.521000" data-stop="2467.464000">little packages in my <code>user-lisp</code> directory.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2468.244000" data-stop="2470.747000">In some of them, I do stick to the convention</span> <span class="audio-time caption" data-speaker="Omar" data-start="2470.807000" data-stop="2473.350000">that the package name is a prefix for all the</span> <span class="audio-time caption" data-speaker="Omar" data-start="2473.390000" data-stop="2474.491000">functions,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2474.511000" data-stop="2475.272000">and for some, I don't.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2475.312000" data-stop="2477.795000">For some, I just try to name them the way exactly</span> <span class="audio-time caption" data-speaker="Omar" data-start="2477.835000" data-stop="2478.215000">what you said.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2478.235000" data-stop="2479.857000">Like, what would these be called if they were</span> <span class="audio-time caption" data-speaker="Omar" data-start="2479.897000" data-stop="2480.778000">built into Emacs?</span> <span class="audio-time caption" data-speaker="Omar" data-start="2481.278000" data-stop="2483.521000">Which means they don't share a consistent prefix</span> <span class="audio-time caption" data-speaker="Omar" data-start="2483.621000" data-stop="2483.861000">often.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2484.362000" data-stop="2487.125000">I should probably make that more</span> <span class="audio-time caption" data-speaker="Omar" data-start="2487.225000" data-stop="2488.506000">consistently</span> <span class="audio-time caption" data-speaker="Omar" data-start="2488.486000" data-stop="2491.131000">use the package name as a prefix so that they're</span> <span class="audio-time caption" data-speaker="Omar" data-start="2491.371000" data-stop="2492.173000">easier to dot.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2493.014000" data-stop="2494.697000"><strong class="speaker-name">Sacha:</strong>  Or I have another suggestion.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2494.737000" data-stop="2499.105000">You could get <code>apply-kmacro-to-paragraph</code> or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2499.165000" data-stop="2501.589000">whatever that is into core Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2501.609000" data-stop="2502.651000">That would be great for everyone.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2504.254000" data-stop="2505.817000"><strong class="speaker-name">Omar:</strong>  Yeah, maybe that one is useful</span> <span class="audio-time caption" data-speaker="Omar" data-start="2505.857000" data-stop="2507.760000">enough.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2508.263000" data-stop="2510.526000">Some of these I don't use anymore because I think</span> <span class="audio-time caption" data-speaker="Omar" data-start="2510.546000" data-stop="2513.829000">I've substituted them with workflows with Embark.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2513.849000" data-stop="2515.771000">For example, <code>eval-region-advice</code>.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2515.791000" data-stop="2518.955000">It bothered me that none of the evaluate commands</span> <span class="audio-time caption" data-speaker="Omar" data-start="2519.335000" data-stop="2522.299000">are “do what you mean” in the most common sense in</span> <span class="audio-time caption" data-speaker="Omar" data-start="2522.359000" data-stop="2522.779000">Emacs.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2522.799000" data-stop="2524.942000">The most common sense of do what I mean in Emacs</span> <span class="audio-time caption" data-speaker="Omar" data-start="2525.002000" data-stop="2527.104000">is if the region is active, use the region.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2527.144000" data-stop="2528.846000">Otherwise, do the normal thing.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2529.567000" data-stop="2531.529000">All of the evaluate commands should evaluate</span> <span class="audio-time caption" data-speaker="Omar" data-start="2531.549000" data-stop="2532.791000">the region if the region is active.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2534.012000" data-stop="2536.735000">So that's what this does.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2536.715000" data-stop="2539.199000">But I don't use that anymore, because to evaluate</span> <span class="audio-time caption" data-speaker="Omar" data-start="2539.259000" data-stop="2545.409000">a region, I usually use <code>embark-act</code> <code>e</code>. What
else</span> <span class="audio-time caption" data-speaker="Omar" data-start="2545.549000" data-stop="2546.499000">is here?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2546.000000">42:26</span> <strong>find-file-at-point and directory names
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-43-06-133.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-43-06-133.jpg" alt="image from video 00:43:06.133" data-time="00:43:06.133"></a><span class="audio-time caption" data-speaker="Omar" data-start="2546.500000" data-stop="2548.574000"><strong class="speaker-name">Omar:</strong> Oh, some of these things are like tiny things</span> <span class="audio-time caption" data-speaker="Omar" data-start="2548.594000" data-stop="2551.379000">that are almost invisible, like this.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2552.441000" data-stop="2554.504000">In Eshell buffers,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2554.889000" data-stop="2559.778000">By default, <code>find-file-at-point</code> doesn’t realize</span> <span class="audio-time caption" data-speaker="Omar" data-start="2559.818000" data-stop="2565.107000">that if it sees the filename printed in an <code>eshell</code></span> <span class="audio-time caption" data-speaker="Omar" data-start="2565.147000" data-stop="2568.834000">buffer, it won't look at the prompt to figure out</span> <span class="audio-time caption" data-speaker="Omar" data-start="2568.894000" data-stop="2570.076000">what directory it came from.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2570.296000" data-stop="2571.919000">If you type <code>ls</code></span> <span class="audio-time caption" data-speaker="Omar" data-start="2572.000000" data-stop="2574.764000">and you're in your current working directory,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2574.784000" data-stop="2578.409000">all of those listed files, the <code>find-file-at-point</code></span> <span class="audio-time caption" data-speaker="Omar" data-start="2578.469000" data-stop="2581.714000">guesses that they are files in the default</span> <span class="audio-time caption" data-speaker="Omar" data-start="2581.754000" data-stop="2583.036000">directory, and that guess is correct.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2583.517000" data-stop="2586.100000">But if, further above, you had gone into a</span> <span class="audio-time caption" data-speaker="Omar" data-start="2586.120000" data-stop="2588.724000">different directory, called <code>ls</code> there,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2589.165000" data-stop="2591.829000">then those files are no longer in what is now the</span> <span class="audio-time caption" data-speaker="Omar" data-start="2591.889000" data-stop="2592.810000">default directory.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2592.790000" data-stop="2596.856000">So this just adds a little bit of smarts to</span> <span class="audio-time caption" data-speaker="Omar" data-start="2596.916000" data-stop="2597.898000"><code>find-file-at-point</code>.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2598.038000" data-stop="2599.981000">It looks at the prior prompt to see what</span> <span class="audio-time caption" data-speaker="Omar" data-start="2600.041000" data-stop="2603.567000">directory that was run in, and then tries to see</span> <span class="audio-time caption" data-speaker="Omar" data-start="2603.627000" data-stop="2605.810000">if the files it sees there are in that directory.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2606.151000" data-stop="2608.114000">Of course, the only reason I want this is</span> <span class="audio-time caption" data-speaker="Omar" data-start="2608.174000" data-stop="2611.279000">because I sometimes use <code>embark-act</code> on files I see</span> <span class="audio-time caption" data-speaker="Omar" data-start="2611.319000" data-stop="2612.841000">written in the Eshell buffer.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2613.665000" data-stop="2614.207000"><strong class="speaker-name">Sacha:</strong>  I love this.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2614.608000" data-stop="2617.097000">I love how all these little bits of code show</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2617.117000" data-stop="2620.288000">that at some point you were annoyed by a tiny,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2620.308000" data-stop="2622.555000">tiny problem and you're like, that's it,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2622.596000" data-stop="2623.980000">I'm just going to write some code and it's never</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2624.000000" data-stop="2629.199000">going to be a problem again.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2629.000000">43:49</span> <strong>The value of using Emacs’s APIs</strong></div><p></p><span class="audio-time caption" data-speaker="Omar" data-start="2629.200000" data-stop="2631.734000"><strong class="speaker-name">Omar:</strong>  One thing I like about this is it</span> <span class="audio-time caption" data-speaker="Omar" data-start="2631.774000" data-stop="2637.300000">also shows sticking to Emacs APIs.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2637.320000" data-stop="2639.983000">Embark uses <code>find-file-at-point</code> to guess what things</span> <span class="audio-time caption" data-speaker="Omar" data-start="2640.283000" data-stop="2641.865000">are referred to files.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2642.846000" data-stop="2645.589000">I did this to improve the functionality of Embark</span> <span class="audio-time caption" data-speaker="Omar" data-start="2645.849000" data-stop="2648.312000">in Eshell buffers, but what it really does is</span> <span class="audio-time caption" data-speaker="Omar" data-start="2648.392000" data-stop="2650.494000">improve the functionality of <code>find-file-at-point</code>,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2650.594000" data-stop="2651.996000">which I hardly ever use directly.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2652.056000" data-stop="2655.720000">I almost always use it through Embark.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2656.747000" data-stop="2661.778000"><strong class="speaker-name">Sacha:</strong>  Send it upstream!</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2662.920000" data-stop="2666.809000">Okay, so you use Emacs for working with a shell,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2666.829000" data-stop="2669.515000">working with your files, doing math, doing some</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2669.555000" data-stop="2670.537000">programming as well.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2671.038000" data-stop="2673.704000">Are there unexpected things that you use Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2673.764000" data-stop="2674.165000">for?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2675.360000" data-stop="2677.203000"><strong class="speaker-name">Omar:</strong>  I don't think so.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2679.167000" data-stop="2679.948000">Mostly I write.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2680.549000" data-stop="2682.633000">It's mostly writing prose.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2682.653000" data-stop="2687.541000">I think I was slightly misled about what a job in</span> <span class="audio-time caption" data-speaker="Omar" data-start="2687.601000" data-stop="2688.343000">academia is like.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2688.583000" data-stop="2689.805000">I mostly write emails.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2689.825000" data-stop="2696.839000">That's the bulk of my job by the time consumed.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2696.000000">44:56</span> <strong>org-ql and usual files
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-45-18-667.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-45-18-667.jpg" alt="image from video 00:45:18.667" data-time="00:45:18.667"></a><span class="audio-time caption" data-speaker="Sacha" data-start="2696.840000" data-stop="2698.175000"><strong class="speaker-name">Sacha:</strong>  You have some shortcuts around</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2699.217000" data-stop="2702.081000">org-ql for managing your agenda or other things.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2702.101000" data-stop="2707.029000"><strong class="speaker-name">Omar:</strong>  This notion of the usual files.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2707.189000" data-stop="2711.295000">I was often using org-ql to search this set of</span> <span class="audio-time caption" data-speaker="Omar" data-start="2711.335000" data-stop="2711.635000">files:</span> <span class="audio-time caption" data-speaker="Omar" data-start="2712.196000" data-stop="2715.661000">every file mentioned in a refile target,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2715.681000" data-stop="2717.564000">every file mentioned in a capture template,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2718.666000" data-stop="2723.473000">and every file agenda file.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2724.297000" data-stop="2724.978000">Here it is.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2725.739000" data-stop="2727.582000">So I thought that's what I want to search.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2727.622000" data-stop="2729.485000">I want to search every file I mentioned in a</span> <span class="audio-time caption" data-speaker="Omar" data-start="2729.525000" data-stop="2733.310000">refile target, every agenda file, and every file</span> <span class="audio-time caption" data-speaker="Omar" data-start="2733.350000" data-stop="2735.193000">that I mentioned in some template.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2736.054000" data-stop="2737.376000">That's what this does.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2738.618000" data-stop="2740.281000"><strong class="speaker-name">Sacha:</strong>  I don't know if you trust your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2742.244000" data-stop="2744.908000">hiding things enough for us to try that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2745.248000" data-stop="2746.810000">Since you put so much work into it...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2747.311000" data-stop="2749.434000">Or do you want me to hide the screen first and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2749.454000" data-stop="2751.317000">then you can let me know when it's safe to look?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2751.449000" data-stop="2752.191000"><strong class="speaker-name">Omar:</strong>  No, no, that's fine.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2752.571000" data-stop="2754.696000">I can show you the censorship process.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2754.716000" data-stop="2756.820000">What I thought I would do is I could show you</span> <span class="audio-time caption" data-speaker="Omar" data-start="2757.441000" data-stop="2760.267000">the... Wait, what is this?</span> <span class="audio-time caption" data-speaker="Omar" data-start="2760.287000" data-stop="2761.350000">Why is that not an action?</span> <span class="audio-time caption" data-speaker="Omar" data-start="2761.470000" data-stop="2762.031000">Oh, library.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2763.454000" data-stop="2764.797000">Oh, I have not loaded this.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2767.603000" data-stop="2768.725000">Yes, now it's loaded.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2769.126000" data-stop="2771.230000">Oh, so this should be...</span> <span class="audio-time caption" data-speaker="Omar" data-start="2772.188000" data-stop="2776.072000">Why is this not recognizing org-ql usual files as</span> <span class="audio-time caption" data-speaker="Omar" data-start="2776.092000" data-stop="2777.654000">a variable now that this is loaded?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2778.775000" data-stop="2779.115000"><strong class="speaker-name">Sacha:</strong>  Oh, great.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2779.656000" data-stop="2782.319000">I'm also open to debugging demonstrations live</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2782.399000" data-stop="2784.922000">because that is something that a lot of people do.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2784.942000" data-stop="2786.143000"><strong class="speaker-name">Omar:</strong>  Sorry, I think it just hadn't</span> <span class="audio-time caption" data-speaker="Omar" data-start="2786.203000" data-stop="2787.945000">loaded this file.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2787.965000" data-stop="2789.667000">Now I ran a command from here and now I</span> <span class="audio-time caption" data-speaker="Omar" data-start="2789.707000" data-stop="2790.508000">should have a variable.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2790.528000" data-stop="2791.649000">Yes, I have a variable.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2792.089000" data-stop="2793.451000">So we can go to Customize.</span> <p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-46-33-967.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-46-33-967.jpg" alt="image from video 00:46:33.967" data-time="00:46:33.967"></a><span class="audio-time caption" data-speaker="Omar" data-start="2793.971000" data-stop="2795.953000"><strong class="speaker-name">Omar:</strong> The ones that have sensitive information are</span> <span class="audio-time caption" data-speaker="Omar" data-start="2796.014000" data-stop="2800.238000">tasks, home, health,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2801.467000" data-stop="2802.208000">Definitely work.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2804.011000" data-stop="2804.933000">Journal.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2804.953000" data-stop="2806.536000">I don't really mind people seeing my journal, but</span> <span class="audio-time caption" data-speaker="Omar" data-start="2806.596000" data-stop="2807.117000">that's boring.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2808.179000" data-stop="2808.600000">There we go.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2808.940000" data-stop="2809.461000">Yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2809.561000" data-stop="2813.889000">So now I got rid of all of the sensitive files.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2813.949000" data-stop="2815.492000">And so now I can show you.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2816.013000" data-stop="2817.836000">I usually just search through all of these files</span> <span class="audio-time caption" data-speaker="Omar" data-start="2817.896000" data-stop="2818.176000">at once.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2821.182000" data-stop="2823.606000">So I had a list of things I wanted to tell you</span> <span class="audio-time caption" data-speaker="Omar" data-start="2823.646000" data-stop="2826.259000">about.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2826.000000">47:06</span> <strong>Shortcuts for org-ql search syntax</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2826.260000" data-stop="2827.596000"><strong class="speaker-name">Sacha:</strong>  I should also point out that your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2827.656000" data-stop="2830.780000">config has some stuff for inserting things into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2830.920000" data-stop="2833.623000">the org-ql search syntax.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2833.643000" data-stop="2835.185000"><strong class="speaker-name">Omar:</strong>  You're extremely prepared for this</span> <span class="audio-time caption" data-speaker="Omar" data-start="2835.665000" data-stop="2835.946000">chat.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2836.246000" data-stop="2841.512000">Yes, <code>C-,</code>has a little key map that will</span> <span class="audio-time caption" data-speaker="Omar" data-start="2841.572000" data-stop="2843.315000">insert stuff like priority.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2845.417000" data-stop="2847.960000">Oh, I don't have, let me remove “Sacha”.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2848.092000" data-stop="2850.497000">Oh, yes, everything that I have with priorities</span> <span class="audio-time caption" data-speaker="Omar" data-start="2850.557000" data-stop="2851.840000">is in one of the files I removed.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2851.900000" data-stop="2854.085000">I only use priorities for work.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2854.105000" data-stop="2854.827000"><strong class="speaker-name">Sacha:</strong>  Okay, gotcha.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2855.729000" data-stop="2863.399000"><strong class="speaker-name">Omar:</strong>  We could use to-dos.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2863.000000">47:43</span> <strong>Org TODO states: TODO, WAIT, DONE, NOPE
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-47-45-733.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-47-45-733.jpg" alt="image from video 00:47:45.733" data-time="00:47:45.733"></a><span class="audio-time caption" data-speaker="Sacha" data-start="2863.400000" data-stop="2865.651000"><strong class="speaker-name">Sacha:</strong>  I love that you have a to-do state</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2865.711000" data-stop="2866.793000">called NOPE.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2867.667000" data-stop="2869.009000"><strong class="speaker-name">Omar:</strong>  It's for things that are</span> <span class="audio-time caption" data-speaker="Omar" data-start="2869.049000" data-stop="2871.152000">cancelled, but I don't want to delete them yet.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2871.673000" data-stop="2875.038000">Actually, it's mainly there because when I</span> <span class="audio-time caption" data-speaker="Omar" data-start="2875.219000" data-stop="2877.402000">archive them, I want to know that I had that task</span> <span class="audio-time caption" data-speaker="Omar" data-start="2877.442000" data-stop="2879.786000">at some point, but decided not to do it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2879.806000" data-stop="2881.769000"><strong class="speaker-name">Sacha:</strong>  Well, it's so much less verbose than CANCELLED,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2881.949000" data-stop="2883.979000">so I think I might actually just...</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2883.980000" data-stop="2890.302000"><strong class="speaker-name">Omar:</strong>  For a long time, I was using monospace fonts, so I wanted to</span> <span class="audio-time caption" data-speaker="Omar" data-start="2890.542000" data-stop="2892.445000">have everything fit in four letters.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2893.106000" data-stop="2894.248000">So I have...</span> <span class="audio-time caption" data-speaker="Omar" data-start="2894.515000" data-stop="2898.994000">Yeah, all of my, I have TODO, WAIT, DONE, NOPE,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2899.255000" data-stop="2900.560000">and they're all four letters long.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2901.653000" data-stop="2902.414000"><strong class="speaker-name">Sacha:</strong>  Nope.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2902.434000" data-stop="2902.854000">Gotcha.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2902.974000" data-stop="2903.214000">Okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2903.234000" data-stop="2906.459000">So that's org-ql and that's your inserting thingy.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2906.000000">48:26</span> <strong>The inserter macro
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-48-36-667.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-48-36-667.jpg" alt="image from video 00:48:36.667" data-time="00:48:36.667"></a><span class="audio-time caption" data-speaker="Sacha" data-start="2906.460000" data-stop="2908.199000"><strong class="speaker-name">Sacha:</strong> The other thing that I wanted to point out</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2908.219000" data-stop="2910.221000">that your definition of the inserter was nice</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2910.241000" data-stop="2911.142000">because it's a macro.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2911.182000" data-stop="2913.043000">So you have this thing that allows you to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2913.063000" data-stop="2916.466000">just define all these interactive functions.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2916.506000" data-stop="2918.408000">You can add it to the key map because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2918.428000" data-stop="2920.370000">the key map expects interactive functions.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2921.010000" data-stop="2923.092000">If people are watching, yeah, this is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2923.132000" data-stop="2923.733000">something you can do.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2923.753000" data-stop="2927.356000"><strong class="speaker-name">Omar:</strong>  I should tell you that there was</span> <span class="audio-time caption" data-speaker="Omar" data-start="2927.696000" data-stop="2929.878000">actually a serious performance bug previously.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2929.918000" data-stop="2931.660000">What I had before this…</span> <span class="audio-time caption" data-speaker="Omar" data-start="2931.640000" data-stop="2936.190000">This string is a keyboard macro that inserts</span> <span class="audio-time caption" data-speaker="Omar" data-start="2936.651000" data-stop="2937.513000">those letters.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2938.996000" data-stop="2941.281000">It is extremely slow if you do it that way for</span> <span class="audio-time caption" data-speaker="Omar" data-start="2941.321000" data-stop="2941.822000">some reason.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2941.942000" data-stop="2945.490000">I think org-ql searches after the T, after the O,</span> <span class="audio-time caption" data-speaker="Omar" data-start="2945.590000" data-stop="2947.995000">after the D, after the O, after the colon.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2948.212000" data-stop="2950.876000">For some reason, that was extremely slow.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2951.297000" data-stop="2956.265000">So I switched to these lambdas that just call</span> <span class="audio-time caption" data-speaker="Omar" data-start="2956.365000" data-stop="2956.805000">insert.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2957.126000" data-stop="2960.351000">That does it in a single step, and it's</span> <span class="audio-time caption" data-speaker="Omar" data-start="2960.391000" data-stop="2961.012000">instantaneous.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2961.613000" data-stop="2963.937000">But my first instinct was, oh, well, this is a</span> <span class="audio-time caption" data-speaker="Omar" data-start="2963.977000" data-stop="2965.099000">good use of keyboard macros.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2965.119000" data-stop="2966.881000">I'll just assign these to keyboard macros.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2967.082000" data-stop="2969.445000">It's not a good idea in this</span> <span class="audio-time caption" data-speaker="Omar" data-start="2969.505000" data-stop="2970.227000">particular case.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2972.798000" data-stop="2974.761000"><strong class="speaker-name">Sacha:</strong>  I imagine there should be some kind</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2974.801000" data-stop="2977.525000">of debouncing on org-ql to make it not do that if</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2977.545000" data-stop="2980.450000">you're typing very quickly, but... I don't think</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2980.490000" data-stop="2980.810000">there is.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2980.890000" data-stop="2983.054000"><strong class="speaker-name">Omar:</strong>  Let me see if... Maybe also do a</span> <span class="audio-time caption" data-speaker="Omar" data-start="2983.094000" data-stop="2983.995000">longer one so it...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2986.779000" data-stop="2987.340000"><strong class="speaker-name">Sacha:</strong>  That's okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2987.360000" data-stop="2989.804000">I take your word for the bug that you ran into.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="2991.467000" data-stop="2992.769000"><strong class="speaker-name">Omar:</strong>  I wanted to show you just because</span> <span class="audio-time caption" data-speaker="Omar" data-start="2992.789000" data-stop="2995.813000">it just feels like a really long pause, but it</span> <span class="audio-time caption" data-speaker="Omar" data-start="2995.853000" data-stop="2997.416000">didn't work right now and I don't know why not.</span> <span class="audio-time caption" data-speaker="Omar" data-start="2998.077000" data-stop="2998.838000">That's okay.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2999.259000" data-stop="3000.240000"><strong class="speaker-name">Sacha:</strong>  Curse of the live demo.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3003.157000" data-stop="3004.218000">So that's inserter.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3005.000000">50:05</span> <strong>luggage: generative art experiments
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-51-32-367.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-51-32-367.jpg" alt="image from video 00:51:32.367" data-time="00:51:32.367"></a><span class="audio-time caption" data-speaker="Sacha" data-start="3005.760000" data-stop="3007.302000"><strong class="speaker-name">Sacha:</strong> One thing that I definitely want to make sure we</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3007.342000" data-stop="3011.547000">had time for was your little generative art</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3011.607000" data-stop="3013.089000">experiment, <code>luggage</code>,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3014.150000" data-stop="3015.412000">because you're having fun with Emacs.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3017.114000" data-stop="3017.394000"><strong class="speaker-name">Omar:</strong>  Yes.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3017.654000" data-stop="3018.155000">Yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3018.876000" data-stop="3022.180000">There are some people doing amazing generative...</span> <span class="audio-time caption" data-speaker="Omar" data-start="3022.200000" data-stop="3022.640000">Oh my gosh.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3022.780000" data-stop="3024.202000">I do not even have it installed.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3025.083000" data-stop="3025.323000">Yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3027.246000" data-stop="3028.287000">Let's...</span> <span class="audio-time caption" data-speaker="Omar" data-start="3029.060000" data-stop="3031.424000">I forgot that we were going to do that.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3031.945000" data-stop="3032.365000">That's okay.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3032.506000" data-stop="3033.487000">But it should be easy.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3034.449000" data-stop="3035.611000">How is <code>:vc</code> used?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3036.332000" data-stop="3037.234000"><strong class="speaker-name">Sacha:</strong>  <code>(:vc (:url …))</code>.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3039.237000" data-stop="3041.380000"><strong class="speaker-name">Omar:</strong>  I have to go to a previous example</span> <span class="audio-time caption" data-speaker="Omar" data-start="3041.421000" data-stop="3041.921000">to figure out.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3044.265000" data-stop="3045.888000"><strong class="speaker-name">Sacha:</strong>  I'm surprised you don't have a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3045.948000" data-stop="3048.492000"><code>consult-line</code> and then just
<code>embark-insert</code>.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3049.494000" data-stop="3050.395000"><strong class="speaker-name">Omar:</strong>  I do that.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3050.436000" data-stop="3052.098000">I do that a lot.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3052.118000" data-stop="3053.160000">But I forgot this time.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3053.258000" data-stop="3055.081000"><strong class="speaker-name">Sacha:</strong>  Actually, looking at your config, I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3055.141000" data-stop="3057.605000">learned about <code>consult-multi-occur</code> because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3058.447000" data-stop="3061.171000">apparently there all these multi-buffer equivalents to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3061.192000" data-stop="3062.494000">the commands that I've been using.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3063.015000" data-stop="3065.739000">That is really useful for using stuff</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3065.779000" data-stop="3067.502000">from buffers I'm not even looking at.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3070.808000" data-stop="3071.529000"><strong class="speaker-name">Omar:</strong>  Okay, load it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3072.531000" data-stop="3073.653000"><strong class="speaker-name">Sacha:</strong>  Let's see if it actually can still</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3073.693000" data-stop="3074.514000">do the thing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3076.417000" data-stop="3077.359000">There we go.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3079.533000" data-stop="3083.258000">So you have some Emacs Lisp to generate this SVG.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3084.119000" data-stop="3086.482000">Yeah, and it's just got...</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3087.123000" data-stop="3089.005000"><strong class="speaker-name">Omar:</strong>  And which other ones do I have?</span> <span class="audio-time caption" data-speaker="Omar" data-start="3090.627000" data-stop="3091.048000">Luggage.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3091.108000" data-stop="3091.609000">There we go.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3092.750000" data-stop="3094.172000">Tubes.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3098.998000" data-stop="3102.783000">I think this one has some nice</span> <span class="audio-time caption" data-speaker="Omar" data-start="3102.903000" data-stop="3106.688000">other color schemes.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3108.743000" data-stop="3109.729000">Classic?</span> <span class="audio-time caption" data-speaker="Omar" data-start="3110.212000" data-stop="3111.620000">Classic is the one.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3111.942000" data-stop="3115.463000">Oh yeah, stained glasses is the one I wanted.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3118.227000" data-stop="3119.589000"><strong class="speaker-name">Sacha:</strong>  Nice.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3120.791000" data-stop="3122.694000">I wanted to mention it specifically because a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3122.734000" data-stop="3125.218000">lot of times people think, oh, Emacs is a text</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3125.318000" data-stop="3126.340000">editor.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3126.360000" data-stop="3129.024000">But because it's also got support for SVG and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3129.064000" data-stop="3131.307000">other types of graphics, you can play around with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3131.387000" data-stop="3131.488000">it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3131.528000" data-stop="3133.551000">Sometimes it's just doing it for fun like</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3133.591000" data-stop="3135.934000">this, but also there might be some other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3135.975000" data-stop="3138.879000">visualizations that you can do with Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3138.899000" data-stop="3141.643000">That is actually pretty interesting.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3141.663000" data-stop="3141.884000"><strong class="speaker-name">Omar:</strong>  Yeah.</span> <p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-52-26-800.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-52-26-800.jpg" alt="image from video 00:52:26.800" data-time="00:52:26.800"></a><span class="audio-time caption" data-speaker="Omar" data-start="3141.904000" data-stop="3143.686000"><strong class="speaker-name">Omar:</strong> Have you heard of this program?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3145.109000" data-stop="3146.631000"><strong class="speaker-name">Sacha:</strong>  No, I haven't come across it.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3146.797000" data-stop="3148.419000"><strong class="speaker-name">Omar:</strong>  There's an entire book with this title.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3148.699000" data-stop="3150.882000">So it's a single line of BASIC.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3150.902000" data-stop="3154.086000">10 print.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3154.106000" data-stop="3156.469000">Oh, I'm not, I don't know BASIC, but the idea is</span> <span class="audio-time caption" data-speaker="Omar" data-start="3156.509000" data-stop="3159.973000">like you randomly pick either forward slash or</span> <span class="audio-time caption" data-speaker="Omar" data-start="3160.073000" data-stop="3160.634000">backslash.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3161.374000" data-stop="3162.816000"><strong class="speaker-name">Sacha:</strong>  Oh, yeah, yeah, that makes sense</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3162.936000" data-stop="3163.076000">now.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3165.319000" data-stop="3167.782000"><strong class="speaker-name">Omar:</strong>  I'm sure this is not correct BASIC,</span> <span class="audio-time caption" data-speaker="Omar" data-start="3168.143000" data-stop="3169.024000">but, you know, something like that.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3169.064000" data-stop="3171.066000">Yeah, I get the idea.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3171.518000" data-stop="3172.520000">Yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3172.720000" data-stop="3174.022000">And that's what this does.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3174.062000" data-stop="3174.663000">And then you GOTO 10.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3174.683000" data-stop="3175.544000">It's like...</span> <span class="audio-time caption" data-speaker="Omar" data-start="3177.047000" data-stop="3179.290000">It makes these elaborate mazes.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3179.431000" data-stop="3181.173000">It's an extremely simple program.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3181.895000" data-stop="3183.137000"><strong class="speaker-name">Sacha:</strong>  So this is the kind of stuff you do</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3183.177000" data-stop="3183.557000">for fun.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3184.178000" data-stop="3185.941000">I mean, you probably do lots of other things for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3185.981000" data-stop="3186.382000">fun, too.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3187.784000" data-stop="3188.205000"><strong class="speaker-name">Omar:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3188.225000" data-stop="3192.311000">But this... No, that's not the buffer I wanted.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3192.331000" data-stop="3193.914000">Where is... Did I kill it?</span> <span class="audio-time caption" data-speaker="Omar" data-start="3194.034000" data-stop="3195.957000">I killed it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3197.692000" data-stop="3200.261000">Yeah, one of these I did.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3200.723000" data-stop="3201.205000">What is it?</span> <span class="audio-time caption" data-speaker="Omar" data-start="3201.225000" data-stop="3201.707000">Dominoes.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3201.727000" data-stop="3203.794000">Yeah, this I did for a math talk I gave.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3204.156000" data-stop="3206.725000">It just produces random domino tilings of the</span> <span class="audio-time caption" data-speaker="Omar" data-start="3206.785000" data-stop="3208.090000">board.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3208.829000" data-stop="3213.737000">I gave that talk from an Org file using Prot’s</span> <span class="audio-time caption" data-speaker="Omar" data-start="3215.420000" data-stop="3216.242000">Logos package.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3216.963000" data-stop="3220.950000">I usually use PDF slides, but</span> <span class="audio-time caption" data-speaker="Omar" data-start="3220.990000" data-stop="3222.813000">that time I wanted to use an Org mode buffer</span> <span class="audio-time caption" data-speaker="Omar" data-start="3222.833000" data-stop="3224.636000">because I was going to run code on the computer.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3225.237000" data-stop="3228.002000">Like this, for example, generating random domino</span> <span class="audio-time caption" data-speaker="Omar" data-start="3228.022000" data-stop="3228.863000">tilings.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3229.000000">53:49</span> <strong>Teaching and Emacs</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3229.383000" data-stop="3230.805000"><strong class="speaker-name">Sacha:</strong>  So you've given a number of talks.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3230.866000" data-stop="3232.168000">Do you also teach any courses?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3233.310000" data-stop="3237.757000"><strong class="speaker-name">Omar:</strong>  Yeah, I do teach both undergraduate</span> <span class="audio-time caption" data-speaker="Omar" data-start="3237.797000" data-stop="3239.841000">and graduate math courses.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3240.001000" data-stop="3241.684000">Recently, mostly graduate math courses.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3242.265000" data-stop="3244.349000">But yeah, I really like teaching.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3244.509000" data-stop="3245.631000">You always learn something.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3245.671000" data-stop="3247.534000">Even the subjects that you think you know very</span> <span class="audio-time caption" data-speaker="Omar" data-start="3247.574000" data-stop="3249.838000">well, teaching a course always teaches you</span> <span class="audio-time caption" data-speaker="Omar" data-start="3249.958000" data-stop="3250.459000">something new.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3251.801000" data-stop="3253.905000"><strong class="speaker-name">Sacha:</strong>  Have you gotten students into Emacs?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3254.982000" data-stop="3256.366000"><strong class="speaker-name">Omar:</strong>  No, I don't even try.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3256.606000" data-stop="3260.698000">“I use this weird text editor Emacs, it's</span> <span class="audio-time caption" data-speaker="Omar" data-start="3260.818000" data-stop="3262.763000">pretty cool, but it takes a while to learn.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3263.205000" data-stop="3264.909000">I'm not recommending it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3265.651000" data-stop="3266.112000">I love it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3266.253000" data-stop="3268.519000">If you do try to use it, you can ask me anything.”</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3270.473000" data-stop="3272.656000"><strong class="speaker-name">Sacha:</strong>  Yeah, it's pretty hard.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3272.716000" data-stop="3275.100000">I know some professors are like, okay, this is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3275.140000" data-stop="3277.183000">what we're going to use for the course.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3277.243000" data-stop="3279.627000">But I imagine, depending on your subject matter,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3279.667000" data-stop="3281.369000">you might already have your hands full teaching</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3281.389000" data-stop="3283.332000">the subject matter rather than adding it.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3283.352000" data-stop="3284.213000"><strong class="speaker-name">Omar:</strong>  Oh, yeah, yeah, definitely.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3284.293000" data-stop="3284.614000">No, no.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3285.315000" data-stop="3287.478000">The students I try to talk to Emacs about are</span> <span class="audio-time caption" data-speaker="Omar" data-start="3287.498000" data-stop="3289.601000">like the students that are writing their thesis</span> <span class="audio-time caption" data-speaker="Omar" data-start="3289.641000" data-stop="3291.064000">with me.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3291.084000" data-stop="3292.065000">No, never in a course.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3292.185000" data-stop="3292.906000">I never mention it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3293.000000">54:53</span> <strong>The print10 generator
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-54-56-900.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-54-56-900.jpg" alt="image from video 00:54:56.900" data-time="00:54:56.900"></a><span class="audio-time caption" data-speaker="Omar" data-start="3293.187000" data-stop="3293.888000"><strong class="speaker-name">Omar:</strong> Oh, there it is.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3293.968000" data-stop="3296.812000">In the docstring, I have the correct program in</span> <span class="audio-time caption" data-speaker="Omar" data-start="3296.872000" data-stop="3297.493000">BASIC.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3298.385000" data-stop="3302.453000">The backslash and the forward slash are</span> <span class="audio-time caption" data-speaker="Omar" data-start="3302.553000" data-stop="3304.096000">consecutive ASCII characters.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3304.176000" data-stop="3310.467000">206 and 207.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3311.008000" data-stop="3314.415000">You add a random number between 0 and 1 to</span> <span class="audio-time caption" data-speaker="Omar" data-start="3314.455000" data-stop="3316.258000">this one and then round to the nearest integer.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3316.508000" data-stop="3318.631000"><strong class="speaker-name">Sacha:</strong>  All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3318.751000" data-stop="3320.874000">You can get surprisingly interesting patterns</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3320.994000" data-stop="3321.455000">out of it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3322.997000" data-stop="3325.381000">That is also very cool.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3326.282000" data-stop="3327.884000">Fun with Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3328.485000" data-stop="3331.670000">This could definitely be like a zone screensaver</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3332.331000" data-stop="3333.212000">if you wanted to.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3334.474000" data-stop="3334.975000"><strong class="speaker-name">Omar:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3335.295000" data-stop="3338.219000">I just thought it was really nice that Emacs</span> <span class="audio-time caption" data-speaker="Omar" data-start="3338.279000" data-stop="3339.641000">displays SVGs natively.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3339.661000" data-stop="3342.145000">Those are very easy to generate by text.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3342.547000" data-stop="3346.311000"><strong class="speaker-name">Sacha:</strong>  Are there other interesting corners</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3346.411000" data-stop="3349.014000">of your config that might not be immediately</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3349.134000" data-stop="3350.936000">obvious to people who are just reading the source</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3350.996000" data-stop="3351.957000">code?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3351.977000" data-stop="3353.859000">What other workflow things are nice for you?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3359.264000" data-stop="3362.828000"><strong class="speaker-name">Omar:</strong>  Sorry, what were you saying?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3362.908000" data-stop="3365.551000"><strong class="speaker-name">Sacha:</strong>  I can also start just occurring</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3365.591000" data-stop="3368.474000">through my config for all the things that I've</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3368.534000" data-stop="3371.457000">stolen from your config in the last two days.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3372.095000" data-stop="3377.804000"><strong class="speaker-name">Omar:</strong>  I don't think I have any concrete</span> <span class="audio-time caption" data-speaker="Omar" data-start="3377.864000" data-stop="3380.428000">idea of what to show now.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3380.448000" data-stop="3383.599000">I think we've covered most of the ones I wanted.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3383.000000">56:23</span> <strong>arXiv
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-57-42-967.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-57-42-967.jpg" alt="image from video 00:57:42.967" data-time="00:57:42.967"></a><span class="audio-time caption" data-speaker="Omar" data-start="3383.600000" data-stop="3386.598000"><strong class="speaker-name">Omar:</strong> As an academic, I deal a lot with preprints on</span> <span class="audio-time caption" data-speaker="Omar" data-start="3386.618000" data-stop="3388.681000">the arXiv, so I have a little library that will</span> <span class="audio-time caption" data-speaker="Omar" data-start="3390.584000" data-stop="3393.208000">show me the PDF or copy the URL.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3393.661000" data-stop="3398.387000">I like personalized software because it does</span> <span class="audio-time caption" data-speaker="Omar" data-start="3398.447000" data-stop="3399.769000">exactly what you needed to do.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3400.229000" data-stop="3402.693000">I noticed that there were a bunch of tags on</span> <span class="audio-time caption" data-speaker="Omar" data-start="3402.773000" data-stop="3406.438000">Mastodon that related to archive papers.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3406.738000" data-stop="3409.782000">Often when I was in a Mastodon buffer, I wanted to</span> <span class="audio-time caption" data-speaker="Omar" data-start="3410.122000" data-stop="3412.846000">do something to the paper mentioned at point.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3413.166000" data-stop="3414.888000">That's one of the acceptable inputs for my</span> <span class="audio-time caption" data-speaker="Omar" data-start="3415.709000" data-stop="3430.419000">arXiv library.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3430.420000" data-stop="3432.843000">So, for example, this is an arXiv link and I</span> <span class="audio-time caption" data-speaker="Omar" data-start="3432.883000" data-stop="3456.419000">can ask it to show me.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3456.420000" data-stop="3457.258000">So that's a bug.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3457.298000" data-stop="3460.742000">This should definitely have <code>visual-line-mode</code></span> <span class="audio-time caption" data-speaker="Omar" data-start="3461.003000" data-stop="3461.303000">activated.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3462.965000" data-stop="3465.348000">I can just quickly read the</span> <span class="audio-time caption" data-speaker="Omar" data-start="3465.449000" data-stop="3467.832000">abstract without visiting the archive website.</span> <p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-57-51-200.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-57-51-200.jpg" alt="image from video 00:57:51.200" data-time="00:57:51.200"></a><span class="audio-time caption" data-speaker="Omar" data-start="3468.793000" data-stop="3472.798000"><strong class="speaker-name">Omar:</strong> Or I can open the PDF.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3473.158000" data-stop="3473.699000"><strong class="speaker-name">Sacha:</strong>  Very cool.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3473.939000" data-stop="3474.821000">Very convenient.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3477.850000" data-stop="3478.833000"><strong class="speaker-name">Omar:</strong>  Yeah, so.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3480.162000" data-stop="3481.864000">I like that in Emacs you can do all these</span> <span class="audio-time caption" data-speaker="Omar" data-start="3482.224000" data-stop="3484.446000">personal things that you'll need but are not</span> <span class="audio-time caption" data-speaker="Omar" data-start="3484.506000" data-stop="3486.708000">likely to be needed by many people.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3486.768000" data-stop="3488.269000">They're just easy to do.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3488.430000" data-stop="3491.212000">Vim is also very configurable, but the Vim script</span> <span class="audio-time caption" data-speaker="Omar" data-start="3491.252000" data-stop="3494.655000">language is sort of awkward, so I never did</span> <span class="audio-time caption" data-speaker="Omar" data-start="3495.156000" data-stop="3497.198000">anywhere close to the amount of configuration in</span> <span class="audio-time caption" data-speaker="Omar" data-start="3497.558000" data-stop="3498.719000">Vim that I do in Emacs.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3503.263000" data-stop="3505.665000">That's why I would never</span> <span class="audio-time caption" data-speaker="Omar" data-start="3505.726000" data-stop="3506.526000">go back to Vim now.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3506.546000" data-stop="3508.448000">I would miss all the stuff I've written.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3509.000000">58:29</span> <strong>Toggle keymap
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-59-06-133.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-00-59-06-133.jpg" alt="image from video 00:59:06.133" data-time="00:59:06.133"></a><span class="audio-time caption" data-speaker="Sacha" data-start="3509.103000" data-stop="3510.727000"><strong class="speaker-name">Sacha:</strong>  One of the little personal</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3510.767000" data-stop="3513.234000">customizations that I liked reading in your config</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3513.294000" data-stop="3515.179000">was the fact that you have a key map just for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3515.239000" data-stop="3518.527000">toggling various things like the mode line or the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3518.607000" data-stop="3519.149000">header, you know?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3519.449000" data-stop="3519.690000">Yeah.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3519.710000" data-stop="3523.660000">You want to tell us more about your awesome</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3523.720000" data-stop="3525.525000">key map for that?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3526.163000" data-stop="3530.210000"><strong class="speaker-name">Omar:</strong>  You don't need them that often, so</span> <span class="audio-time caption" data-speaker="Omar" data-start="3530.270000" data-stop="3532.253000">it's OK if it's under a long prefix.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3532.613000" data-stop="3534.416000">It's just tedious when you want one of them,</span> <span class="audio-time caption" data-speaker="Omar" data-start="3534.456000" data-stop="3536.319000">to have to type the command name.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3536.900000" data-stop="3541.708000">It also helps me remember which things I</span> <span class="audio-time caption" data-speaker="Omar" data-start="3541.888000" data-stop="3542.730000">commonly toggle.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3542.790000" data-stop="3546.015000">I often have to hit <code>C-h</code> here and see what I</span> <span class="audio-time caption" data-speaker="Omar" data-start="3546.075000" data-stop="3548.264000">have available to toggle.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3549.625000" data-stop="3555.070000">I don't know why toggle is a category for</span> <span class="audio-time caption" data-speaker="Omar" data-start="3555.371000" data-stop="3557.032000">commands, because obviously these are very</span> <span class="audio-time caption" data-speaker="Omar" data-start="3557.132000" data-stop="3559.114000">disparate commands that do very different things.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3559.134000" data-stop="3561.556000">But they're things that you occasionally turn on</span> <span class="audio-time caption" data-speaker="Omar" data-start="3561.617000" data-stop="3564.499000">or off, and it's convenient to have them all</span> <span class="audio-time caption" data-speaker="Omar" data-start="3564.519000" data-stop="3564.840000">together.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3565.320000" data-stop="3567.762000">Choosing the letters here was very difficult.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3568.743000" data-stop="3570.445000">Everybody wanted to have the same letters.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3571.566000" data-stop="3573.788000">L was for visual lines.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3573.768000" data-stop="3577.772000">P for variable pitch mode because I think of them</span> <span class="audio-time caption" data-speaker="Omar" data-start="3577.832000" data-stop="3578.873000">as proportional fonts.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3580.594000" data-stop="3581.996000">It took a lot of tweaking.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3582.016000" data-stop="3585.859000">I'm sure if I looked through the GitHub history,</span> <span class="audio-time caption" data-speaker="Omar" data-start="3585.879000" data-stop="3588.782000">you'd see a lot of tiny changes just changing the</span> <span class="audio-time caption" data-speaker="Omar" data-start="3588.822000" data-stop="3591.645000">binding of one of these.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3591.665000" data-stop="3593.547000"><strong class="speaker-name">Sacha:</strong>  I find it difficult to get the hang</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3593.587000" data-stop="3596.109000">of new key bindings, especially for things that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3596.129000" data-stop="3598.351000">I'm not using often enough for the key bindings</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3598.391000" data-stop="3599.833000">to stick.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3599.953000" data-stop="3601.294000"><strong class="speaker-name">Omar:</strong>  I often forget that I have a key</span> <span class="audio-time caption" data-speaker="Omar" data-start="3601.334000" data-stop="3602.475000">binding for something.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3603.687000" data-stop="3605.009000"><strong class="speaker-name">Sacha:</strong>  So how do you deal with that?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3605.129000" data-stop="3607.072000">I mean, yes, you stick it in an Embark keymap and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3607.092000" data-stop="3608.455000">you just bring it up to the target.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3609.637000" data-stop="3616.247000"><strong class="speaker-name">Omar:</strong>  Yeah, I do use Embark bindings in</span> <span class="audio-time caption" data-speaker="Omar" data-start="3616.267000" data-stop="3620.093000">keymap a lot to just explore keymaps and remind</span> <span class="audio-time caption" data-speaker="Omar" data-start="3620.134000" data-stop="3623.379000">myself. I don't need to memorize a</span> <span class="audio-time caption" data-speaker="Omar" data-start="3623.419000" data-stop="3623.699000">binding.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3623.719000" data-stop="3625.743000">I just need to remember that I have a binding.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3626.464000" data-stop="3628.247000">If I have a binding, I can find it later.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3628.307000" data-stop="3629.809000">But sometimes I don't remember that I have a</span> <span class="audio-time caption" data-speaker="Omar" data-start="3629.849000" data-stop="3631.011000">binding,</span> <span class="audio-time caption" data-speaker="Omar" data-start="3631.413000" data-stop="3635.740000">so when I'm looking at my configuration, I'll</span> <span class="audio-time caption" data-speaker="Omar" data-start="3635.760000" data-stop="3638.385000">just re-scan what things I have bound from time</span> <span class="audio-time caption" data-speaker="Omar" data-start="3638.425000" data-stop="3638.725000">to time.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3639.347000" data-stop="3644.095000">Mostly I stick with just… I know under</span> <span class="audio-time caption" data-speaker="Omar" data-start="3644.195000" data-stop="3647.601000">what the start of the prefix is, and then I'll</span> <span class="audio-time caption" data-speaker="Omar" data-start="3647.621000" data-stop="3649.804000">just use Embark to remind me of what I have there.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3650.485000" data-stop="3653.691000">Which is nice, because you can also see the docstrings.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3654.000000">1:00:54</span> <strong>isearch-delete-wrong
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-01-01-32-267.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-01-01-32-267.jpg" alt="image from video 01:01:32.267" data-time="01:01:32.267"></a><span class="audio-time caption" data-speaker="Sacha" data-start="3654.970000" data-stop="3658.619000"><strong class="speaker-name">Sacha:</strong>  I like how you try to use some</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3658.819000" data-stop="3661.345000">of the conventions to make it somewhat easier to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3661.385000" data-stop="3661.766000">remember.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3662.127000" data-stop="3664.011000">One of the key bindings that you have that I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3664.071000" data-stop="3666.317000">want to point out, because I think it's a useful</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3666.397000" data-stop="3669.424000">technique, is you have an <code>isearch-delete-wrong</code>.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3671.048000" data-stop="3676.078000"><strong class="speaker-name">Omar:</strong>  Right.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3676.919000" data-stop="3681.745000">isearch keeps track of where the last portion</span> <span class="audio-time caption" data-speaker="Omar" data-start="3681.805000" data-stop="3683.888000">of the search string that matched is.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3684.368000" data-stop="3686.611000">You can see it highlighted in the buffer,</span> <span class="audio-time caption" data-speaker="Omar" data-start="3686.631000" data-stop="3686.831000">right?</span> <span class="audio-time caption" data-speaker="Omar" data-start="3687.452000" data-stop="3691.838000">So this means it found up to “del”, and then it</span> <span class="audio-time caption" data-speaker="Omar" data-start="3691.898000" data-stop="3693.620000">didn't find "tok".</span> <span class="audio-time caption" data-speaker="Omar" data-start="3693.640000" data-stop="3695.762000"><code>isearch-delete-wrong</code> will just delete that entire</span> <span class="audio-time caption" data-speaker="Omar" data-start="3695.802000" data-stop="3696.283000">part.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3698.474000" data-stop="3700.076000"><strong class="speaker-name">Sacha:</strong>  So that way, you can just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3700.156000" data-stop="3702.378000">restart from what actually exists.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3702.959000" data-stop="3705.222000">Combining that with the fact that you've got</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3705.262000" data-stop="3710.608000">your search whitespace regular expression to be a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3710.728000" data-stop="3712.239000">wildcard means you can...</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3712.240000" data-stop="3714.032000"><strong class="speaker-name">Omar:</strong>  Oh yes, this I stole from Prot.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3714.692000" data-stop="3716.434000">He recommends this.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3716.454000" data-stop="3718.437000"><strong class="speaker-name">Sacha:</strong>  Yeah, which means you can use</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3718.477000" data-stop="3720.439000">isearch to find things, even if there's other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3720.479000" data-stop="3721.400000">stuff in between them.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3721.720000" data-stop="3723.382000">When you can't find something, you can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3723.402000" data-stop="3723.823000">restart.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3724.884000" data-stop="3725.865000"><strong class="speaker-name">Omar:</strong>  I'm not sure...</span> <span class="audio-time caption" data-speaker="Omar" data-start="3726.183000" data-stop="3729.588000">I'm not sure if this is the best setting.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3729.689000" data-stop="3733.294000">I want to be able to search this way sometimes,</span> <span class="audio-time caption" data-speaker="Omar" data-start="3733.354000" data-stop="3736.279000">and sometimes with whitespaces treated literally,</span> <span class="audio-time caption" data-speaker="Omar" data-start="3736.499000" data-stop="3738.603000">so I should keep statistics on how often I</span> <span class="audio-time caption" data-speaker="Omar" data-start="3738.663000" data-stop="3739.745000">actually have to turn this off.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3739.785000" data-stop="3741.908000">It might be that for me the better default is the</span> <span class="audio-time caption" data-speaker="Omar" data-start="3741.948000" data-stop="3742.589000">other way around.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3745.133000" data-stop="3747.437000">You can turn it off with <code>M-s SPC</code>.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3747.898000" data-stop="3749.620000">Match spaces literally.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3751.023000" data-stop="3753.827000"><code>isearch-toggle-lax-whitespace</code>.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3754.870000" data-stop="3756.592000">I don't know.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3756.632000" data-stop="3760.277000">Maybe for me the default would be to treat</span> <span class="audio-time caption" data-speaker="Omar" data-start="3760.778000" data-stop="3764.142000">whitespace literally, because I find that if I</span> <span class="audio-time caption" data-speaker="Omar" data-start="3764.182000" data-stop="3768.488000">have a space in my search string, I often want to</span> <span class="audio-time caption" data-speaker="Omar" data-start="3768.528000" data-stop="3769.950000">turn on the literal matching.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3770.450000" data-stop="3772.052000">But it's probably still this is the better</span> <span class="audio-time caption" data-speaker="Omar" data-start="3772.072000" data-stop="3772.353000">default.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3772.373000" data-stop="3774.275000">I think I do it less than half of the time I have</span> <span class="audio-time caption" data-speaker="Omar" data-start="3774.295000" data-stop="3774.696000">a space.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3775.257000" data-stop="3777.880000">But it's not that far from half, it feels.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3778.200000" data-stop="3780.203000">I don't have statistics.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3782.630000" data-stop="3784.296000"><strong class="speaker-name">Sacha:</strong>  How do you even collect statistics</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3784.396000" data-stop="3784.938000">on this?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3784.958000" data-stop="3786.864000">Aside from making a little note every time you're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3786.884000" data-stop="3787.888000">like, oh, I didn't like this.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3788.731000" data-stop="3791.139000"><strong class="speaker-name">Omar:</strong>  I mean, I would instrument isearch</span> <span class="audio-time caption" data-speaker="Omar" data-start="3791.199000" data-stop="3793.045000">somehow, but I haven't thought about that problem.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3794.000000">1:03:14</span> <strong>isearch - continue from the beginning of the match
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-01-03-44-400.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/emacs-chat-24-omar-antolin-camarena-01-03-44-400.jpg" alt="image from video 01:03:44.400" data-time="01:03:44.400"></a><span class="audio-time caption" data-speaker="Omar" data-start="3794.105000" data-stop="3797.269000"><strong class="speaker-name">Omar:</strong> One nice thing I do with isearch is another one</span> <span class="audio-time caption" data-speaker="Omar" data-start="3797.309000" data-stop="3798.591000">of those things I got from Vim.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3799.792000" data-stop="3802.456000">isearch, by default, leaves you at the end of the</span> <span class="audio-time caption" data-speaker="Omar" data-start="3802.496000" data-stop="3802.776000">match.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3803.116000" data-stop="3805.439000">I almost always want to be at the beginning</span> <span class="audio-time caption" data-speaker="Omar" data-start="3805.499000" data-stop="3807.041000">of the match, because that's what I got used to</span> <span class="audio-time caption" data-speaker="Omar" data-start="3807.081000" data-stop="3807.402000">in Vim.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3808.083000" data-stop="3810.806000">I think it must be here.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3811.127000" data-stop="3812.689000">I have something exit at start.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3813.790000" data-stop="3817.895000">I tell isearch to exit at the beginning of the</span> <span class="audio-time caption" data-speaker="Omar" data-start="3817.955000" data-stop="3818.236000">match.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3818.476000" data-stop="3821.139000">The way you use this is you install it as a</span> <span class="audio-time caption" data-speaker="Omar" data-start="3821.259000" data-stop="3823.302000">hook, I believe.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3824.395000" data-stop="3825.196000">Is that right?</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3826.578000" data-stop="3827.759000"><strong class="speaker-name">Sacha:</strong>  You seem to have options.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3828.160000" data-stop="3828.360000"><strong class="speaker-name">Omar:</strong>  Yes.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3829.321000" data-stop="3829.681000"><strong class="speaker-name">Sacha:</strong>  I see.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3829.762000" data-stop="3832.665000">So S-RET lets you exit at the end, and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3832.705000" data-stop="3834.708000">then by default... Yeah, which is Emacs default.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3834.988000" data-stop="3837.811000"><strong class="speaker-name">Omar:</strong>  But I find that the better default</span> <span class="audio-time caption" data-speaker="Omar" data-start="3837.872000" data-stop="3838.953000">is to exit at the beginning.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3839.313000" data-stop="3841.075000">Yes, and that's the whole point of that.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3841.095000" data-stop="3848.628000">For example, if I want to mark until that parentheses,</span> <span class="audio-time caption" data-speaker="Omar" data-start="3848.629000" data-stop="3851.348000">then I would search for the parentheses,</span> <span class="audio-time caption" data-speaker="Omar" data-start="3851.328000" data-stop="3854.713000">and I don't want to include the parentheses.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3854.733000" data-stop="3855.615000">That's not a good example.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3855.655000" data-stop="3857.718000">But with a word, it's often like, I'm looking for</span> <span class="audio-time caption" data-speaker="Omar" data-start="3857.758000" data-stop="3860.602000">a word, but I want to highlight up to the end of</span> <span class="audio-time caption" data-speaker="Omar" data-start="3860.642000" data-stop="3860.923000">the word.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3861.223000" data-stop="3864.268000">It's just like, if you want to mark a region from</span> <span class="audio-time caption" data-speaker="Omar" data-start="3864.308000" data-stop="3867.513000">point to some search term, with the Emacs</span> <span class="audio-time caption" data-speaker="Omar" data-start="3867.533000" data-stop="3869.536000">default, what you have to search for is the thing</span> <span class="audio-time caption" data-speaker="Omar" data-start="3869.576000" data-stop="3872.661000">that is at the end of the part you want to match.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3872.641000" data-stop="3876.226000">But often I want to say until like the thing that</span> <span class="audio-time caption" data-speaker="Omar" data-start="3876.286000" data-stop="3876.827000">starts here.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3877.107000" data-stop="3878.489000">It's just my brain works that way.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3879.130000" data-stop="3881.514000">So for me, it's much better to exit at the</span> <span class="audio-time caption" data-speaker="Omar" data-start="3881.554000" data-stop="3882.255000">start of the search.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3884.178000" data-stop="3885.259000">Which means I don't understand</span> <span class="audio-time caption" data-speaker="Omar" data-start="3885.279000" data-stop="3886.861000">isearch on other people's Emacs.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3886.901000" data-stop="3889.906000">It just leaves the point in the wrong location</span> <span class="audio-time caption" data-speaker="Omar" data-start="3889.966000" data-stop="3890.386000">all the time.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3890.767000" data-stop="3892.429000">If you're going quickly, you won't realize</span> <span class="audio-time caption" data-speaker="Omar" data-start="3892.449000" data-stop="3893.831000">that it's just a mess.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3894.192000" data-stop="3896.355000">It does mean that I can only use isearch if it's</span> <span class="audio-time caption" data-speaker="Omar" data-start="3896.375000" data-stop="3897.737000">configured this way.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3899.928000" data-stop="3901.830000"><strong class="speaker-name">Sacha:</strong>  Well, that's the thing about Emacs, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3901.910000" data-stop="3904.292000">Once you've got it set up, you've</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3904.312000" data-stop="3906.074000">got to use your config because everything else</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3906.114000" data-stop="3907.536000">just feels off.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3908.076000" data-stop="3908.997000">It just feels weird.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3909.017000" data-stop="3909.558000"><strong class="speaker-name">Omar:</strong>  Yeah, that's right.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3910.579000" data-stop="3910.879000"><strong class="speaker-name">Sacha:</strong>  All right.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3912.000000">1:05:12</span> <strong>Using keymaps to remember sets of commands</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3912.460000" data-stop="3916.084000"><strong class="speaker-name">Sacha:</strong> Going back to the toggle keymap, @gcentauri says,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3916.124000" data-stop="3916.805000">I'm not lazy enough.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3916.865000" data-stop="3919.087000">I just M-x orderless consult, find the thing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3919.107000" data-stop="3921.329000">that I'm toggling, which I do a lot also.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3921.349000" data-stop="3923.391000">I just use M-x for all the things because I can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3923.411000" data-stop="3925.553000">just specify parts of it.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3925.573000" data-stop="3926.755000"><strong class="speaker-name">Omar:</strong>  There's some toggles I don't have</span> <span class="audio-time caption" data-speaker="Omar" data-start="3926.795000" data-stop="3928.797000">in the keymap because I use them very rarely, but</span> <span class="audio-time caption" data-speaker="Omar" data-start="3929.177000" data-stop="3929.277000">yeah.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3929.257000" data-stop="3935.109000">What I like also about the keymap is that it's a</span> <span class="audio-time caption" data-speaker="Omar" data-start="3935.269000" data-stop="3938.736000">place to remind myself of the toggle commands.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3938.756000" data-stop="3940.440000">I often just do this.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3940.460000" data-stop="3941.562000">What was the thing?</span> <span class="audio-time caption" data-speaker="Omar" data-start="3942.132000" data-stop="3945.035000">I haven't used that in a while.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3945.215000" data-stop="3949.300000"><strong class="speaker-name">Sacha:</strong>  Having a shorter list, it means you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3949.340000" data-stop="3951.603000">can just use recognition instead of recall, right?</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3953.104000" data-stop="3954.246000"><strong class="speaker-name">Omar:</strong>  It's short enough that I can read</span> <span class="audio-time caption" data-speaker="Omar" data-start="3954.266000" data-stop="3954.566000">through it.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3955.367000" data-stop="3956.829000"><strong class="speaker-name">Sacha:</strong>  I like that a lot.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3956.869000" data-stop="3959.812000">I like the fact that with that Embark <code>C-h</code></span> <span class="audio-time caption" data-speaker="Sacha" data-start="3959.992000" data-stop="3961.914000">screen, you can use completion even to select</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3961.934000" data-stop="3964.377000">the commands from that subset.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3964.000000">1:06:04</span> <strong>Other things from the config</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3964.981000" data-stop="3966.383000"><strong class="speaker-name">Sacha:</strong> A couple of other things that I picked up from</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3966.403000" data-stop="3967.043000">your config:</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3967.084000" data-stop="3970.007000">There’s your <code>dired-open-externally</code>, so it makes</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3970.047000" data-stop="3972.931000">it very easy to open something in an external</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3973.371000" data-stop="3974.292000">application.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="3974.312000" data-stop="3975.774000"><strong class="speaker-name">Omar:</strong>  And it just calls Embark open</span> <span class="audio-time caption" data-speaker="Omar" data-start="3975.814000" data-stop="3976.255000">externally.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3978.758000" data-stop="3980.139000">This function moved back and forth</span> <span class="audio-time caption" data-speaker="Omar" data-start="3980.199000" data-stop="3981.020000">from different places.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3981.080000" data-stop="3983.223000">I think <code>embark-open-externally</code> used to be in</span> <span class="audio-time caption" data-speaker="Omar" data-start="3983.263000" data-stop="3983.744000">consult.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3984.444000" data-stop="3986.567000">Daniel said he felt it didn't fit in</span> <span class="audio-time caption" data-speaker="Omar" data-start="3986.607000" data-stop="3987.328000">with consult.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3989.771000" data-stop="3994.937000"><code>Embark consult</code> would put it in keymaps.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3995.542000" data-stop="3996.463000">He was right.</span> <span class="audio-time caption" data-speaker="Omar" data-start="3997.904000" data-stop="4000.787000">Consult didn't have a very clear personality at</span> <span class="audio-time caption" data-speaker="Omar" data-start="4000.807000" data-stop="4001.247000">the beginning.</span> <span class="audio-time caption" data-speaker="Omar" data-start="4001.288000" data-stop="4003.109000">It was sort of like a grab bag of commands.</span> <span class="audio-time caption" data-speaker="Omar" data-start="4003.149000" data-stop="4006.953000">Eventually, what gelled is that a</span> <span class="audio-time caption" data-speaker="Omar" data-start="4006.993000" data-stop="4008.995000">command should be in Consult if there is a useful</span> <span class="audio-time caption" data-speaker="Omar" data-start="4009.035000" data-stop="4010.436000">way to write previews for it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="4010.456000" data-stop="4012.999000">So, preview is the distinguishing feature of what</span> <span class="audio-time caption" data-speaker="Omar" data-start="4013.059000" data-stop="4014.220000">is a good fit for Consult.</span> <span class="audio-time caption" data-speaker="Omar" data-start="4015.001000" data-stop="4017.023000">Now, I hope Daniel would agree with that.</span> <span class="audio-time caption" data-speaker="Omar" data-start="4017.063000" data-stop="4019.285000">That seems to be the criteria now.</span> <span class="audio-time caption" data-speaker="Omar" data-start="4019.305000" data-stop="4020.025000">That's great.</span> <span class="audio-time caption" data-speaker="Omar" data-start="4020.186000" data-stop="4021.667000">I absolutely love preview.</span> <span class="audio-time caption" data-speaker="Omar" data-start="4021.765000" data-stop="4024.391000">That's one thing I miss a little bit with org-ql.</span> <span class="audio-time caption" data-speaker="Omar" data-start="4024.491000" data-stop="4026.755000">I use org-ql mostly to search through Org files,</span> <span class="audio-time caption" data-speaker="Omar" data-start="4027.497000" data-stop="4030.343000">but the preview is kind of manual in that I use</span> <span class="audio-time caption" data-speaker="Omar" data-start="4030.403000" data-stop="4031.085000">Embark to do it.</span> <span class="audio-time caption" data-speaker="Omar" data-start="4031.225000" data-stop="4035.774000">If I want to preview a command, I just use Embark</span> <span class="audio-time caption" data-speaker="Omar" data-start="4035.955000" data-stop="4036.616000">to do what I mean.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4040.003000" data-stop="4042.288000"><strong class="speaker-name">Sacha:</strong>  Yeah, that's a good idea.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4042.387000" data-stop="4043.090000">I should try that.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="4043.331000" data-stop="4045.380000"><strong class="speaker-name">Omar:</strong>  So any command that doesn't have a</span> <span class="audio-time caption" data-speaker="Omar" data-start="4045.400000" data-stop="4047.890000">preview, I mean does, you can just use <code>embark-dwim</code>,</span> <span class="audio-time caption" data-speaker="Omar" data-start="4047.910000" data-stop="4051.907000">it'll complete the command for you.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4055.735000" data-stop="4057.457000"><strong class="speaker-name">Sacha:</strong>  Okay, the kid has arrived,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4057.477000" data-stop="4058.478000">so I have to go off to lunch.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4058.498000" data-stop="4060.580000">But thank you so much for the quick peek into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4060.600000" data-stop="4062.001000">your config.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4063.042000" data-stop="4065.604000">I'll put the transcript together and then people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4065.644000" data-stop="4066.005000">can do that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4066.025000" data-stop="4067.706000">But in the meantime, people can look at your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4067.746000" data-stop="4069.728000">config for all sorts of wonderful goodness.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="4070.649000" data-stop="4070.909000"><strong class="speaker-name">Omar:</strong>  Thanks.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4070.969000" data-stop="4073.532000"><strong class="speaker-name">Sacha:</strong>  Thanks to everyone for hanging out.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4073.932000" data-stop="4076.294000">Looks like the isearch tip was popular,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4076.355000" data-stop="4078.236000">so you might see a lot of people getting that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4078.256000" data-stop="4078.937000">from your config.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4079.578000" data-stop="4081.399000">Anyway, thank you so much for this.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="4081.600000" data-stop="4082.721000">I’ll see you around.</span> <p></p><span class="audio-time caption" data-speaker="Omar" data-start="4083.181000" data-stop="4083.922000"><strong class="speaker-name">Omar:</strong>  Thanks, Sacha.</span> <span class="audio-time caption" data-speaker="Omar" data-start="4084.022000" data-stop="4085.303000">This was fantastic.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="4085.283000" data-stop="4086.806000"><strong class="speaker-name">Sacha:</strong>  Alright, nice.</span></div>
<p></p>


<a name="end-emacs-chat-24-omar-antolin-camarena-transcript"></a></details>
</div>
</div>
<div id="outline-container-emacs-chats-emacs-chat-24-omar-antolin-camarena-chat" class="outline-3">
<h3 id="emacs-chats-emacs-chat-24-omar-antolin-camarena-chat"><a href="https://sachachua.com/blog/feed/atom/index.xml#emacs-chats-emacs-chat-24-omar-antolin-camarena-chat">Chat</a></h3>
<div class="outline-text-3" id="text-emacs-chats-emacs-chat-24-omar-antolin-camarena-chat">
<div class="chat" id="org181ed02">
<ul class="org-ul">
<li><span class="nick">takoverflow:</span> ​​Hello Sacha and Omar, thanks for this chat! :)</li>
<li><span class="nick">CharlieBaker707:</span> ​​Definitely going to add the keycast transparency to my config! I've been wanting that for a while!</li>
<li><span class="nick">gcentauri:</span> ​​i'm still a minibuffer noob - its been nil my whole Emacs life!</li>
<li><span class="nick">CharlieBaker707:</span> ​recursive minibuffers is amazing. biggest win for me is that it lets you select things and paste them in, like from a completing-read's history for example</li>
<li><span class="nick">gcentauri:</span> ​haha apparently i do have recursive minibuffers set to t, along with my Vertico config 🤔</li>
<li><span class="nick">Zor_org:</span> ​​was there a time you wanted multiple cursors?</li>
<li><span class="nick">Zor_org:</span> ​if so, was there any workaround you thought of with embark or kmacro?</li>
<li><span class="nick">gcentauri:</span> ​keyboard macros are a fun mini-game</li>
<li><span class="nick">CharlieBaker707:</span> ​I have embark-act set up to expand in the same way expand-region does, but with embark's type awareness. It's also easy to add a contract function.</li>
<li><span class="nick">CharlieBaker707:</span> ​I also have a completing-read interface and a transient menu to jump directly to one of many types under point that I'm seeiking.</li>
<li><span class="nick">CharlieBaker707:</span> ​For sure!</li>
<li><span class="nick">CharlieBaker707:</span> ​I was going to create a tiny extension, but I can open a PR in embark!</li>
<li><span class="nick">Zor_org:</span> ​even more crazy with elfeed 4.0</li>
<li><span class="nick">gcentauri:</span> ​I found Orderless and Embark through Daniel's suggestions in his packages :)</li>
<li><span class="nick">Zor_org:</span> ​if emacs gets canvas patch soon, more things can be done in luggage (lik gifs and image frame as well)</li>
<li><span class="nick">gcentauri:</span> ​i am not lazy enough, i just M-x orderless consult find the thing i'm toggling</li>
<li><span class="nick">PuercoPop:</span> ​​I didn't knew isearch had a built-in way to fix the isearch quirk. Now I can remove the snippet I use the implement it that I cribbed from the internets</li>
<li><span class="nick">gcentauri:</span> ​yeah adding something to a keymap you make does help recall</li>
<li><span class="nick">PuercoPop:</span> ​​The isearch quirk is a common complaint from what I understand</li>
<li><span class="nick">gcentauri:</span> ​yeah i'm gonna use that iserach bit</li>
</ul>

</div>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/05/may-29-emacs-chat-with-omar-antolin-camarena/index.org">View Org source for this post</a></div><p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F05%2Fmay-29-emacs-chat-with-omar-antolin-camarena%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></content>
		</entry><entry>
		<title type="html">Yay Emacs 32: Sacha and Prot Talk Emacs: May I recommend...</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/05/may-28-sacha-and-prot-talk-emacs-may-i-recommend/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-05-29T19:00:42Z</updated>
    <published>2026-05-29T19:00:42Z</published>
    <category term="emacs" />
<category term="community" />
<category term="yay-emacs" />
		<id>https://sachachua.com/blog/2026/05/may-28-sacha-and-prot-talk-emacs-may-i-recommend/</id>
		<content type="html"><![CDATA[<p>
In this livestream, I chatted with <a href="https://protesilaos.com">Prot</a> about the May 2026 Emacs Carnival theme "<a href="https://www.emacswiki.org/emacs/CarnivalMay2026">May I recommend</a>".
It was a joint braindump of quick recommendations for people at different points in their Emacs journey, building on our conversation about <a href="https://sachachua.com/blog/2026/04/yay-emacs-sacha-and-prot-talk-emacs-newbies-starter-kits/">newbies/starter kits</a> and the <a href="https://sachachua.com/blog/2026/05/may-14-sacha-prot-and-philip-kaludercic-talk-emacs-newcomer-experience/">newcomer experience</a> all the way up to power users, Emacs Lisp coders, and package developers.
<video preload="none" controls="1" src="https://archive.org/download/yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend/yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend.mp4" poster="https://sachachua.com/blog/2026/05/may-28-sacha-and-prot-talk-emacs-may-i-recommend/2026-05-25_21-27-02.png" type="video/mp4"><track kind="subtitles" label="Captions" src="https://sachachua.com/blog/2026/05/may-28-sacha-and-prot-talk-emacs-may-i-recommend/yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend.vtt" srclang="en" default=""><span>Video not supported. Thumbnail:<br><img src="https://sachachua.com/blog/2026/05/may-28-sacha-and-prot-talk-emacs-may-i-recommend/2026-05-25_21-27-02.png" alt="Thumbnail"></span></video>
</p>

<p>
<a href="https://archive.org/details/yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend/">View in the Internet Archive</a>, <a href="https://youtube.com/live/xl-ifABU45A">watch or comment on YouTube</a>, <a href="https://sachachua.com/blog/feed/atom/index.xml#yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend-transcript">read the transcript online</a>, download the <a href="https://archive.org/download/yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend/yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend.mp3">audio</a> or the <a href="https://sachachua.com/blog/2026/05/may-28-sacha-and-prot-talk-emacs-may-i-recommend/yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend.vtt">transcript</a>, or <a href="mailto:sacha@sachachua.com">e-mail me</a>.
</p>

<p>
Related links
</p>

<ul class="org-ul">
<li><a href="https://www.emacswiki.org/emacs/CarnivalMay2026">EmacsWiki: CarnivalMay2026: "May I Recommend&hellip;"</a></li>
<li><a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/index.html#SEC_Contents">Top (GNU Emacs Manual)</a></li>
<li><a href="https://www.gnu.org/software/emacs/manual/html_node/org/">Top (The Org Manual)</a></li>
<li><a href="https://www.gnu.org/software/emacs/manual/html_node/eintr/">Top (Programming in Emacs Lisp)</a></li>
<li><a href="https://www.gnu.org/software/emacs/manual/html_node/elisp/">Top (GNU Emacs Lisp Reference Manual)</a></li>
<li><a href="https://www.masteringemacs.org/">Mastering Emacs</a></li>
<li><a href="https://protesilaos.com/emacs/emacs-lisp-elements">Emacs Lisp Elements | Protesilaos</a></li>
<li><a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Bookmarks.html">Bookmarks (GNU Emacs Manual)</a></li>
<li><a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Keyboard-Macros.html">Keyboard Macros (GNU Emacs Manual)</a></li>
<li><a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Hooks.html">Hooks (GNU Emacs Manual)</a></li>
<li><a href="https://www.gnu.org/software/emacs/manual/html_node/elisp/Advising-Functions.html">Advising Functions (GNU Emacs Lisp Reference Manual)</a></li>
<li><a href="https://www.gnu.org/software/emacs/manual/html_node/elisp/Edebug.html">Edebug (GNU Emacs Lisp Reference Manual)</a></li>
<li><a href="https://www.gnu.org/software/emacs/manual/html_node/ert/">Top (Emacs Lisp Regression Testing)</a></li>
<li><a href="https://github.com/oantolin/embark">oantolin/embark: Emacs Mini-Buffer Actions Rooted in Keymaps · GitHub</a></li>
<li><a href="https://github.com/justbur/emacs-which-key">justbur/emacs-which-key: Emacs package that displays available keybindings in popup · GitHub</a></li>
<li><a href="https://github.com/minad/marginalia">minad/marginalia: :scroll: marginalia.el - Marginalia in the minibuffer · GitHub</a></li>
<li><a href="https://github.com/minad/consult">minad/consult: :mag: consult.el - Search and navigate via completing-read · GitHub</a></li>
<li><a href="https://github.com/minad/vertico">minad/vertico: :dizzy: vertico.el - VERTical Interactive COmpletion · GitHub</a></li>
<li><a href="https://protesilaos.com/emacs/denote">Denote (denote.el) | Protesilaos</a></li>
<li><a href="https://github.com/jtroo/kanata">jtroo/kanata: Improve keyboard comfort and usability with advanced customization · GitHub</a></li>
</ul>

<p>
</p><div class="sketch-full"><a class="photoswipe" href="https://sketches.sachachua.com/filename/2026-05-27-03%20Emacs%20skills%20&#45;&#45;%20emacs.jpeg" data-src="https://sketches.sachachua.com/static/2026-05-27-03%20Emacs%20skills%20&#45;&#45;%20emacs.jpeg" data-title="2026-05-27-03 Emacs skills &#45;&#45; emacs.jpeg" data-w="2900" data-h="2050"><picture>
      <img src="https://sketches.sachachua.com/static/2026-05-27-03%20Emacs%20skills%20&#45;&#45;%20emacs.jpeg" width="2900" height="2050" alt="2026-05-27-03 Emacs skills &#45;&#45; emacs.jpeg" loading="lazy" style="max-height: 90vw; height: auto; width: auto" decoding="async">
      <figcaption>2026-05-27-03 Emacs skills &#45;&#45; emacs.jpeg</figcaption>
    </picture></a></div>
<p></p>

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

<p>
Find more Yay Emacs posts or join the fun: <a href="https://sachachua.com/topic/live">https://sachachua.com/topic/live</a>
</p>

<div class="sticky-toc" id="org05b9466">
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="https://sachachua.com/blog/feed/atom/index.xml#yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend-chapters">Chapters</a></li>
<li><a href="https://sachachua.com/blog/feed/atom/index.xml#yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend-transcript">Transcript</a></li>
<li><a href="https://sachachua.com/blog/feed/atom/index.xml#yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend-chat">Chat</a></li>
</ul>
</div>

</div>
<div id="outline-container-yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend-chapters" class="outline-3">
<h3 id="yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend-chapters"><a href="https://sachachua.com/blog/feed/atom/index.xml#yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend-chapters">Chapters</a></h3>
<div class="outline-text-3" id="text-yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend-chapters">
<p>
</p><ul class="org-ul">
<li><span class="audio-time" data-start="0.031" data-stop="1.716">0:00</span> Opening</li>

<li><span class="audio-time" data-start="147.701" data-stop="152.533">2:27</span> Tip: Less is more. Start small.</li>
<li><span class="audio-time" data-start="247.800" data-stop="249.862">4:07</span> Tip: Start with what is built in</li>
<li><span class="audio-time" data-start="267.280" data-stop="269.744">4:27</span> Skill: Figuring out the words to look for</li>
<li><span class="audio-time" data-start="385.094" data-stop="387.838">6:25</span> Tip: Be okay with starting over</li>
<li><span class="audio-time" data-start="506.101" data-stop="512.067">8:26</span> Skill: Learning to discover</li>
<li><span class="audio-time" data-start="522.532" data-stop="527.060">8:42</span> Tip: Read manuals for fun</li>
<li><span class="audio-time" data-start="616.743" data-stop="619.887">10:16</span> Tip: Use Emacs bookmarks to save your place in the manual</li>
<li><span class="audio-time" data-start="643.020" data-stop="644.763">10:43</span> Tip: Generally, investing time into navigation and note-taking workflows pays off</li>
<li><span class="audio-time" data-start="739.223" data-stop="742.510">12:19</span> Skill: Keyboard macros</li>
<li><span class="audio-time" data-start="773.703" data-stop="776.326">12:53</span> Skill: Modifying the behavior of code via hooks and advice</li>
<li><span class="audio-time" data-start="795.134" data-stop="798.109">13:15</span> Tip: Learn to think in terms of buffers and windows</li>
<li><span class="audio-time" data-start="847.645" data-stop="850.209">14:07</span> Skill: Reading the source code; Tip: Just jump in</li>
<li><span class="audio-time" data-start="933.708" data-stop="936.654">15:33</span> Tip: edebug is great for exploring code</li>
<li><span class="audio-time" data-start="986.020" data-stop="987.343">16:26</span> Tip: Reading tests can help you understand code, too.</li>
<li><span class="audio-time" data-start="1022.217" data-stop="1025.624">17:02</span> Skill: Idiomatic Elisp</li>
<li><span class="audio-time" data-start="1037.306" data-stop="1039.871">17:17</span> Tip: Write tests.</li>
<li><span class="audio-time" data-start="1072.563" data-stop="1075.687">17:52</span> Tip: When writing Emacs Lisp that expects a list, use plurals</li>
<li><span class="audio-time" data-start="1139.768" data-stop="1142.493">18:59</span> Tip: When naming, be verbose rather than terse</li>
<li><span class="audio-time" data-start="1186.338" data-stop="1188.403">19:46</span> Tip: Iterate on your workflow in small steps</li>
<li><span class="audio-time" data-start="1220.701" data-stop="1222.323">20:20</span> Tip: Make things more automatic, and use context-sensitive clues</li>
<li><span class="audio-time" data-start="1488.550" data-stop="1492.019">24:48</span> Skill: Thinking in terms of elements</li>
<li><span class="audio-time" data-start="1576.601" data-stop="1584.200">26:16</span> Skill: Reading other people's configuration and adapting ideas to yours</li>
<li><span class="audio-time" data-start="1627.540" data-stop="1631.486">27:07</span> Tip: Start with focusing on just one thing</li>
<li><span class="audio-time" data-start="1653.612" data-stop="1657.077">27:33</span> Blog posts and videos are useful</li>
<li><span class="audio-time" data-start="1689.472" data-stop="1691.354">28:09</span> Tip: Take notes as you learn, and ideally, share them too.</li>
<li><span class="audio-time" data-start="1734.595" data-stop="1736.558">28:54</span> Tip: Accept being a beginner.</li>
<li><span class="audio-time" data-start="1876.753" data-stop="1880.583">31:16</span> Group: Power users</li>
<li><span class="audio-time" data-start="1933.113" data-stop="1936.858">32:13</span> Tip: Browse through package lists</li>
<li><span class="audio-time" data-start="1945.848" data-stop="1947.931">32:25</span> Tip: Dive deeply into the packages you have: customization options, code, etc.</li>
<li><span class="audio-time" data-start="1961.716" data-stop="1963.882">32:41</span> Tip: find-library gets you to the source code, occur can help you browse it</li>
<li><span class="audio-time" data-start="2009.952" data-stop="2011.775">33:29</span> Tip: You can also browse through Customize</li>
<li><span class="audio-time" data-start="2028.934" data-stop="2030.556">33:48</span> Tip: Have fun with randomness and serendipity</li>
<li><span class="audio-time" data-start="2072.766" data-stop="2074.849">34:32</span> Tip: Check out people's workflow descriptions and stories</li>
<li><span class="audio-time" data-start="2142.301" data-stop="2146.185">35:42</span> Resources: manuals, Mastering Emacs, Emacs Lisp Elements</li>
<li><span class="audio-time" data-start="2249.323" data-stop="2253.669">37:29</span> Skill: Figuring out what's possible and making a habit of writing tiny functions</li>
<li><span class="audio-time" data-start="2265.685" data-stop="2268.048">37:45</span> Skill: Being mindful of what you do over and over again</li>
<li><span class="audio-time" data-start="2306.658" data-stop="2309.502">38:26</span> Tip: Keyboard macros can help you jumpstart custom functions</li>
<li><span class="audio-time" data-start="2351.140" data-stop="2354.344">39:11</span> Tip: Use C-h k (describe-key) to describe shortcuts or menu items</li>
<li><span class="audio-time" data-start="2404.432" data-stop="2407.655">40:04</span> Tip: You can set up M-x to show keyboard shortcuts too (Marginalia?)</li>
<li><span class="audio-time" data-start="2486.521" data-stop="2488.944">41:26</span> Resource: Emacs from Scratch series by System Crafters</li>
<li><span class="audio-time" data-start="2510.076" data-stop="2512.059">41:50</span> Tip: Old tutorials can still be useful, although don't treat them as the sole source of truth (things may have changed since then)</li>
<li><span class="audio-time" data-start="2575.848" data-stop="2580.594">42:55</span> Skill: Finding preferred resources</li>
<li><span class="audio-time" data-start="2652.501" data-stop="2656.834">44:12</span> Tip: If you find your tribe, look for ways to keep in touch with them</li>
<li><span class="audio-time" data-start="2700.513" data-stop="2704.103">45:00</span> Tip: Manage unequal RSS frequencies with folders or tags</li>
<li><span class="audio-time" data-start="2793.198" data-stop="2795.482">46:33</span> Tip: Doing more things in Emacs has compounding benefits</li>
<li><span class="audio-time" data-start="2911.812" data-stop="2913.615">48:31</span> Tip: Learn to think of it as just text</li>
<li><span class="audio-time" data-start="2986.012" data-stop="2988.115">49:46</span> Tip: Take notes along the way</li>
<li><span class="audio-time" data-start="3016.312" data-stop="3019.656">50:16</span> Tip: Explore different ways to navigate and act on things</li>
<li><span class="audio-time" data-start="3069.475" data-stop="3072.279">51:09</span> Tip: Learn to combine different building blocks</li>
<li><span class="audio-time" data-start="3167.648" data-stop="3174.038">52:47</span> Tip: Get the hang of keybinding conventions</li>
<li><span class="audio-time" data-start="3366.258" data-stop="3368.362">56:06</span> Tip: Use which-key for keybinding help</li>
<li><span class="audio-time" data-start="3461.503" data-stop="3463.887">57:41</span> Tip: Figure out your ergonomics</li>
</ul>

<p></p>
</div>
</div>
<div id="outline-container-yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend-transcript" class="outline-3">
<h3 id="yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend-transcript"><a href="https://sachachua.com/blog/feed/atom/index.xml#yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend-transcript">Transcript</a></h3>
<div class="outline-text-3" id="text-yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend-transcript">
<details class="code-details"><a name="ID-yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend-transcript"></a><summary>Expand this to read the transcript</summary>
<p>
</p><div class="full-transcript"><p></p><div class="transcript-heading"><span class="audio-time" data-start="0.000000">0:00</span> <strong>Opening
</strong></div><p></p><a href="https://sachachua.com/blog/2026/05/may-28-sacha-and-prot-talk-emacs-may-i-recommend/yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend-00-00-38-400.jpg"><img loading="lazy" target="_blank" src="https://sachachua.com/blog/2026/05/may-28-sacha-and-prot-talk-emacs-may-i-recommend/yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend-00-00-38-400.jpg" alt="image from video 00:00:38.400" data-time="00:00:38.400"></a><span class="audio-time caption" data-speaker="Sacha" data-start="0.031000" data-stop="1.716000"><strong class="speaker-name">Sacha:</strong>  My typing is still going to be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1.756000" data-stop="3.662000">very loud, but that's okay.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="4.264000" data-stop="5.327000"><strong class="speaker-name">Prot:</strong>  That's part of the charm.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="5.829000" data-stop="6.250000"><strong class="speaker-name">Sacha:</strong>  Okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6.371000" data-stop="6.652000">All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="6.672000" data-stop="7.133000">Here we go.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="7.454000" data-stop="8.758000">Let's go live.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="10.392000" data-stop="11.253000">Hello, everyone.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="11.293000" data-stop="12.294000">This is Yay Emacs [32].</span> <span class="audio-time caption" data-speaker="Sacha" data-start="12.334000" data-stop="13.315000">I forgot which number.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="15.017000" data-stop="20.524000">Anyhow, I'm here with Prot because it's Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="20.564000" data-stop="22.026000">Carnival for May 2026,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="22.727000" data-stop="24.849000">and the theme is "May I Recommend" because I like</span> <span class="audio-time caption" data-speaker="Sacha" data-start="24.869000" data-stop="27.312000">puns and couldn't pass up the chance to say "May."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="28.453000" data-stop="29.915000">So "May I recommend..." is our topic,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="30.416000" data-stop="33.079000">and our goal for this one is to brain dump</span> <span class="audio-time caption" data-speaker="Sacha" data-start="33.080000" data-stop="35.742000">a whole bunch of things that people might</span> <span class="audio-time caption" data-speaker="Sacha" data-start="35.782000" data-stop="38.425000">find useful in their Emacs learning journey.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="38.405000" data-stop="43.735000">We've already talked about newbies and starter</span> <span class="audio-time caption" data-speaker="Sacha" data-start="43.755000" data-stop="46.501000">kits in the previous two conversations we've had</span> <span class="audio-time caption" data-speaker="Sacha" data-start="47.102000" data-stop="48.765000">in Sacha and Prot Talk Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="49.527000" data-stop="51.811000">This time, we're going to focus more on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="51.951000" data-stop="53.815000">*users* who are getting started with...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="53.795000" data-stop="57.461000">They've decided this is going to be their</span> <span class="audio-time caption" data-speaker="Sacha" data-start="57.541000" data-stop="58.282000">everyday tool.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="58.622000" data-stop="60.806000">They want to learn more about keyboard shortcuts</span> <span class="audio-time caption" data-speaker="Sacha" data-start="60.926000" data-stop="62.768000">and finding their way around, building the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="62.829000" data-stop="65.012000">habits, finding their preferred resources.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="65.773000" data-stop="68.137000">*Power users*, maybe, who are starting to look at</span> <span class="audio-time caption" data-speaker="Sacha" data-start="68.177000" data-stop="70.680000">different packages, these are maybe the people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="70.740000" data-stop="74.526000">who are saying, okay, maybe let's try this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="74.586000" data-stop="77.290000">package for working with Org Mode in addition to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="77.310000" data-stop="82.418000">the basic stuff, or let's try doing email in Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="83.005000" data-stop="85.487000">*Customizers*, who are beginning to get into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="85.567000" data-stop="87.189000">Emacs Lisp to write functions.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="88.270000" data-stop="91.272000">This is where you start to customize it a lot</span> <span class="audio-time caption" data-speaker="Sacha" data-start="91.312000" data-stop="93.194000">more to your tastes and your workflows.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="93.655000" data-stop="96.637000">*Contributors*, people who are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="96.697000" data-stop="99.079000">sharing their source code, maybe even turning it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="99.140000" data-stop="102.042000">into packages, participating mailing lists and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="102.082000" data-stop="102.723000">discussions.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="103.123000" data-stop="106.586000">So this whole range of people all working on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="106.646000" data-stop="108.628000">different skills at different levels.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="108.648000" data-stop="110.630000">What I think we're going to do with this is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="110.670000" data-stop="111.951000">we're just going to braindump a whole bunch of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="112.011000" data-stop="113.012000">recommendations.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="112.992000" data-stop="118.419000">You're welcome to ask questions, and I'll ask you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="118.459000" data-stop="119.240000">questions as well.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="119.781000" data-stop="122.024000">We'll just untangle everything and organize</span> <span class="audio-time caption" data-speaker="Sacha" data-start="122.104000" data-stop="124.126000">everything afterwards.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="124.547000" data-stop="125.148000"><strong class="speaker-name">Prot:</strong>  That's great.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="126.389000" data-stop="127.070000"><strong class="speaker-name">Sacha:</strong>  There we go.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="128.051000" data-stop="131.456000">In this list of skills that people can develop,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="131.496000" data-stop="135.701000">are you thinking of other skills that aren't on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="135.741000" data-stop="138.125000">this list yet that do make a big difference to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="138.205000" data-stop="140.788000">how people use and learn Emacs?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="141.022000" data-stop="143.833000"><strong class="speaker-name">Prot:</strong>  I need to enlarge my screen a little bit.</span> <span class="audio-time caption" data-speaker="Prot" data-start="143.834000" data-stop="147.700000">I think what you have there is good.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="147.000000">2:27</span> <strong>Tip: Less is more. Start small.</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="147.701000" data-stop="152.533000"><strong class="speaker-name">Prot:</strong> What I had in mind also is more of a meta-point,</span> <span class="audio-time caption" data-speaker="Prot" data-start="152.534000" data-stop="156.700000">or more general thing, like an approach style,</span> <span class="audio-time caption" data-speaker="Prot" data-start="156.701000" data-stop="161.133000">which is "less is more," if I were to condense it.</span> <span class="audio-time caption" data-speaker="Prot" data-start="161.134000" data-stop="166.119000">Start small. Make sure you make it work when it's small.</span> <span class="audio-time caption" data-speaker="Prot" data-start="166.280000" data-stop="167.345000">Extend it from there.</span> <span class="audio-time caption" data-speaker="Prot" data-start="167.405000" data-stop="170.078000">Don't start big and try to simplify it, because</span> <span class="audio-time caption" data-speaker="Prot" data-start="170.158000" data-stop="171.163000">that doesn't work.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="171.532000" data-stop="173.635000"><strong class="speaker-name">Sacha:</strong>  I grouped that idea</span> <span class="audio-time caption" data-speaker="Sacha" data-start="173.876000" data-stop="176.620000">under managing time, notes, and attention and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="176.700000" data-stop="179.204000">also breaking things down, because the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="179.484000" data-stop="181.628000">overwhelming nature of things is something a lot</span> <span class="audio-time caption" data-speaker="Sacha" data-start="181.668000" data-stop="183.911000">of people struggle with, both Emacs and elsewhere.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="184.592000" data-stop="187.337000">Even just that meta-skill of saying, "Okay,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="187.357000" data-stop="189.901000">this is a small chunk that I'm going to focus on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="189.961000" data-stop="192.024000">because I know that's what my brain can handle"</span> <span class="audio-time caption" data-speaker="Sacha" data-start="192.705000" data-stop="195.069000">versus "let's architect this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="195.129000" data-stop="197.372000">entire thing" and you're six hours down the line</span> <span class="audio-time caption" data-speaker="Sacha" data-start="197.473000" data-stop="199.135000">and you're nowhere near the thing that you want</span> <span class="audio-time caption" data-speaker="Sacha" data-start="199.155000" data-stop="199.716000">it to do.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="200.675000" data-stop="202.821000"><strong class="speaker-name">Prot:</strong>  And of course Emacs invites you for that</span> <span class="audio-time caption" data-speaker="Prot" data-start="202.901000" data-stop="205.327000">because it's like, here are like a hundred</span> <span class="audio-time caption" data-speaker="Prot" data-start="205.448000" data-stop="208.395000">powerful tools for you to combine in ways that</span> <span class="audio-time caption" data-speaker="Prot" data-start="208.455000" data-stop="210.802000">nobody else has thought of before, right?</span> <span class="audio-time caption" data-speaker="Prot" data-start="210.822000" data-stop="213.669000">So it's like asking you to do that, but it's a trap.</span> <span class="audio-time caption" data-speaker="Prot" data-start="213.709000" data-stop="215.173000">You don't want to go down that route.</span> <span class="audio-time caption" data-speaker="Prot" data-start="215.727000" data-stop="218.432000">Or at least don't go there too early.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="218.452000" data-stop="220.295000"><strong class="speaker-name">Sacha:</strong>  Managing the rabbit hole.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="220.776000" data-stop="222.398000">Yes, there are going to be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="222.478000" data-stop="224.582000">a lot of temptations and some of those</span> <span class="audio-time caption" data-speaker="Sacha" data-start="224.602000" data-stop="226.485000">temptations are quite legitimate.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="226.686000" data-stop="228.629000">Yeah, you do have to figure this part out in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="228.669000" data-stop="231.434000">order to get this other thing that you wanted working.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="231.454000" data-stop="234.799000">But sometimes it's just a trap.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="234.819000" data-stop="235.761000"><strong class="speaker-name">Prot:</strong>  Yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="237.091000" data-stop="238.192000"><strong class="speaker-name">Sacha:</strong>  So that's managing.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="238.272000" data-stop="241.595000">What other meta-skills here should we talk</span> <span class="audio-time caption" data-speaker="Sacha" data-start="241.635000" data-stop="244.217000">about as a framework so that when we dive into</span> <span class="audio-time caption" data-speaker="Sacha" data-start="244.237000" data-stop="246.119000">the specifics, we know we're covering a lot of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="246.159000" data-stop="247.780000">the ground people need?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="247.000000">4:07</span> <strong>Tip: Start with what is built in</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="247.800000" data-stop="249.862000"><strong class="speaker-name">Prot:</strong>  Not so much a meta skill, but consistent</span> <span class="audio-time caption" data-speaker="Prot" data-start="249.922000" data-stop="252.785000">with this line of reasoning is as a good</span> <span class="audio-time caption" data-speaker="Prot" data-start="252.845000" data-stop="256.447000">heuristic, start with what is built in and extend</span> <span class="audio-time caption" data-speaker="Prot" data-start="256.488000" data-stop="256.947000">from there,</span> <span class="audio-time caption" data-speaker="Prot" data-start="257.789000" data-stop="260.492000">because usually what is built in will give you</span> <span class="audio-time caption" data-speaker="Prot" data-start="260.552000" data-stop="262.693000">a baseline of functionality.</span> <span class="audio-time caption" data-speaker="Prot" data-start="263.494000" data-stop="266.777000">It works with a "less is more" approach.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="267.000000">4:27</span> <strong>Skill: Figuring out the words to look for</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="267.280000" data-stop="269.744000"><strong class="speaker-name">Sacha:</strong>  I feel that sometimes</span> <span class="audio-time caption" data-speaker="Sacha" data-start="269.804000" data-stop="272.609000">figuring out the words to look for, finding</span> <span class="audio-time caption" data-speaker="Sacha" data-start="272.669000" data-stop="277.017000">out what it might be called in Emacs source or in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="277.097000" data-stop="278.720000">the built-in packages...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="278.740000" data-stop="281.545000">That's something that's hard to develop</span> <span class="audio-time caption" data-speaker="Sacha" data-start="281.625000" data-stop="284.770000">unless you're reading manuals and reading other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="284.810000" data-stop="287.996000">people's posts because the terminology can be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="288.036000" data-stop="289.238000">quite arcane.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="289.927000" data-stop="290.950000"><strong class="speaker-name">Prot:</strong>  Oh yeah, for sure.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="292.454000" data-stop="294.119000"><strong class="speaker-name">Sacha:</strong>  Getting a sense of what might be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="294.159000" data-stop="296.846000">built in and what it might be called and where to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="296.906000" data-stop="300.055000">look for it, I think, is definitely a skill.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="300.710000" data-stop="307.316000"><strong class="speaker-name">Prot:</strong>  One good way to think of this is,</span> <span class="audio-time caption" data-speaker="Prot" data-start="307.317000" data-stop="310.039000">what do I want to do?</span> <span class="audio-time caption" data-speaker="Prot" data-start="310.479000" data-stop="313.202000">In the most simple form, if you forget</span> <span class="audio-time caption" data-speaker="Prot" data-start="313.262000" data-stop="315.764000">about Emacs for a second, and</span> <span class="audio-time caption" data-speaker="Prot" data-start="315.804000" data-stop="318.366000">you're like, what am I trying to do?</span> <span class="audio-time caption" data-speaker="Prot" data-start="318.386000" data-stop="321.689000">I'm trying to write a blog, or I'm trying to deal</span> <span class="audio-time caption" data-speaker="Prot" data-start="321.729000" data-stop="323.591000">with email correspondence, or I'm trying to</span> <span class="audio-time caption" data-speaker="Prot" data-start="323.651000" data-stop="324.592000">manage my TODOs.</span> <span class="audio-time caption" data-speaker="Prot" data-start="325.113000" data-stop="327.895000">In its most simplest form, how can I solve</span> <span class="audio-time caption" data-speaker="Prot" data-start="327.995000" data-stop="329.957000">this problem?</span> <span class="audio-time caption" data-speaker="Prot" data-start="330.562000" data-stop="333.065000">That can already help you formulate the</span> <span class="audio-time caption" data-speaker="Prot" data-start="333.125000" data-stop="333.586000">questions.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="334.407000" data-stop="336.069000"><strong class="speaker-name">Sacha:</strong>  Formulating the questions is actually</span> <span class="audio-time caption" data-speaker="Sacha" data-start="336.250000" data-stop="339.975000">really hard. Sometimes people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="340.275000" data-stop="342.638000">don't even notice that there's a question that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="342.698000" data-stop="346.123000">they can ask, and they don't know what kinds of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="346.183000" data-stop="349.448000">solutions might address that problem actually.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="349.468000" data-stop="352.251000">They get distracted by A, but</span> <span class="audio-time caption" data-speaker="Sacha" data-start="352.291000" data-stop="354.915000">actually it's B that will solve the problem.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="355.655000" data-stop="358.780000">Considering the different kinds of solutions that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="358.820000" data-stop="361.584000">can address the same problem, developing a sense</span> <span class="audio-time caption" data-speaker="Sacha" data-start="361.664000" data-stop="364.489000">of which ways are easier to do the Emacs way</span> <span class="audio-time caption" data-speaker="Sacha" data-start="365.110000" data-stop="366.291000">versus harder to do.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="367.173000" data-stop="369.216000">Why make something really complicated when a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="369.276000" data-stop="371.159000">built-in package or whatever can solve that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="371.199000" data-stop="372.581000">problem in a more elegant way?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="373.523000" data-stop="376.087000">All of these things require the development of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="376.127000" data-stop="376.988000">intuition.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="378.065000" data-stop="380.308000"><strong class="speaker-name">Prot:</strong>  Yes, yes, and with some experience, of</span> <span class="audio-time caption" data-speaker="Prot" data-start="380.348000" data-stop="382.731000">course, that helps, for sure. But then it's the</span> <span class="audio-time caption" data-speaker="Prot" data-start="382.831000" data-stop="385.054000">other, which you can also consider as a meta skill.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="385.000000">6:25</span> <strong>Tip: Be okay with starting over</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="385.094000" data-stop="387.838000"><strong class="speaker-name">Prot:</strong> I believe there was also a point of this,</span> <span class="audio-time caption" data-speaker="Prot" data-start="387.858000" data-stop="391.483000">be okay with declaring bankruptcy in Emacs.</span> <span class="audio-time caption" data-speaker="Prot" data-start="391.543000" data-stop="394.607000">Bankruptcy, I think... the essence of that</span> <span class="audio-time caption" data-speaker="Prot" data-start="394.667000" data-stop="397.571000">is not really much bankruptcy, but be okay with</span> <span class="audio-time caption" data-speaker="Prot" data-start="397.631000" data-stop="401.516000">trying something, which is an experiment, and</span> <span class="audio-time caption" data-speaker="Prot" data-start="401.576000" data-stop="403.899000">then learning something from it, distilling the</span> <span class="audio-time caption" data-speaker="Prot" data-start="403.979000" data-stop="406.823000">essence of that, and then trying something else.</span> <span class="audio-time caption" data-speaker="Prot" data-start="406.803000" data-stop="410.788000">I think a sense of experimentation will help</span> <span class="audio-time caption" data-speaker="Prot" data-start="410.828000" data-stop="413.751000">you build that skill of, okay, now I can</span> <span class="audio-time caption" data-speaker="Prot" data-start="413.892000" data-stop="416.174000">intuitively figure out what works and what</span> <span class="audio-time caption" data-speaker="Prot" data-start="416.214000" data-stop="417.336000">doesn't work.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="417.356000" data-stop="418.617000"><strong class="speaker-name">Sacha:</strong>  I think that's a really</span> <span class="audio-time caption" data-speaker="Sacha" data-start="418.637000" data-stop="420.440000">interesting point because sometimes you get very</span> <span class="audio-time caption" data-speaker="Sacha" data-start="420.500000" data-stop="422.943000">attached to "there's this thing that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="422.983000" data-stop="425.165000">I've started to build" and then you start bolting</span> <span class="audio-time caption" data-speaker="Sacha" data-start="425.225000" data-stop="426.487000">more and more things onto it,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="426.887000" data-stop="429.270000">when really, sometimes the prototype is your way</span> <span class="audio-time caption" data-speaker="Sacha" data-start="429.310000" data-stop="430.752000">of understanding the problem.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="431.052000" data-stop="432.955000">Then you take it all out and you say,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="432.975000" data-stop="435.198000">okay, now that I understand a little bit more,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="435.779000" data-stop="437.341000">what can I make?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="437.942000" data-stop="440.005000">How do I change my workflow with that new</span> <span class="audio-time caption" data-speaker="Sacha" data-start="440.065000" data-stop="440.766000">understanding?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="441.246000" data-stop="445.152000">Sometimes it's as extensive as declaring</span> <span class="audio-time caption" data-speaker="Sacha" data-start="445.232000" data-stop="447.635000">Emacs bankruptcy and starting again from scratch.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="448.056000" data-stop="450.039000">Sometimes it's just maybe "The</span> <span class="audio-time caption" data-speaker="Sacha" data-start="450.059000" data-stop="452.422000">approach that I'm taking is not a fruitful one.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="452.923000" data-stop="454.545000">I should go try something else."</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="456.230000" data-stop="458.353000"><strong class="speaker-name">Prot:</strong>  Yeah, exactly.</span> <span class="audio-time caption" data-speaker="Prot" data-start="458.593000" data-stop="462.719000">You can only have that feedback loop if you try,</span> <span class="audio-time caption" data-speaker="Prot" data-start="462.759000" data-stop="465.182000">so trial and error is the way to go.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="467.525000" data-stop="470.069000"><strong class="speaker-name">Sacha:</strong>  @gcentauri has a question or a comment</span> <span class="audio-time caption" data-speaker="Sacha" data-start="470.089000" data-stop="471.370000">about discoverability,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="471.791000" data-stop="474.274000">figuring out how to navigate Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="474.355000" data-stop="476.898000">in order to discover things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="477.599000" data-stop="479.421000">Where would we put that in this skill?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="480.002000" data-stop="482.325000">This is figuring out the words as</span> <span class="audio-time caption" data-speaker="Sacha" data-start="482.385000" data-stop="482.946000">well, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="483.006000" data-stop="483.587000">Isn't it?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="484.175000" data-stop="486.941000"><strong class="speaker-name">Prot:</strong>  Yeah, by the way, I'm in the chat here.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="486.961000" data-stop="490.229000"><strong class="speaker-name">Sacha:</strong>  Where did you read that?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="490.389000" data-stop="492.835000"><strong class="speaker-name">Prot:</strong>  I see it here.</span> <span class="audio-time caption" data-speaker="Prot" data-start="493.036000" data-stop="494.379000">It was off my screen.</span> <span class="audio-time caption" data-speaker="Prot" data-start="494.419000" data-stop="496.243000">I see it now.</span> <span class="audio-time caption" data-speaker="Prot" data-start="496.392000" data-stop="501.200000">And of course Christian... I'm reading the</span> <span class="audio-time caption" data-speaker="Prot" data-start="501.201000" data-stop="502.367000">temperatures in Western Europe.</span> <span class="audio-time caption" data-speaker="Prot" data-start="502.368000" data-stop="503.967000">They are terrible. Yes, I know.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="503.968000" data-stop="506.100000"><strong class="speaker-name">Sacha:</strong>  Yeah, big heat wave.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="506.000000">8:26</span> <strong>Skill: Learning to discover</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="506.101000" data-stop="512.067000"><strong class="speaker-name">Sacha:</strong> So, figuring out discoverability, learning how to navigate Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="512.068000" data-stop="515.333000">Emacs is lovely. It's self-documented,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="515.334000" data-stop="516.567000">everything at your fingertips,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="516.568000" data-stop="519.733000">but you've got to know how to get those fingers on them.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="522.000000">8:42</span> <strong>Tip: Read manuals for fun</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="522.532000" data-stop="527.060000"><strong class="speaker-name">Prot:</strong>  The manual helps. It will present some of that.</span> <span class="audio-time caption" data-speaker="Prot" data-start="527.080000" data-stop="528.582000">But of course, you have to read the manual.</span> <span class="audio-time caption" data-speaker="Prot" data-start="528.603000" data-stop="530.506000">So you are in a situation where you have</span> <span class="audio-time caption" data-speaker="Prot" data-start="530.566000" data-stop="533.130000">to have the skill of reading the manuals in order</span> <span class="audio-time caption" data-speaker="Prot" data-start="533.210000" data-stop="535.034000">to discover, but to discover...</span> <span class="audio-time caption" data-speaker="Prot" data-start="535.715000" data-stop="537.318000">So yeah, it's a tricky thing.</span> <span class="audio-time caption" data-speaker="Prot" data-start="537.939000" data-stop="539.882000">You have to know where the manuals are.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="539.862000" data-stop="542.305000"><strong class="speaker-name">Sacha:</strong>  Yeah, and you have to be unintimidated</span> <span class="audio-time caption" data-speaker="Sacha" data-start="542.345000" data-stop="543.386000">by them, I think.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="543.807000" data-stop="546.250000">I got into it easy because I've always been used</span> <span class="audio-time caption" data-speaker="Sacha" data-start="546.290000" data-stop="548.032000">to reading books above my level.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="548.472000" data-stop="550.194000">Even as a kid, I was reading my</span> <span class="audio-time caption" data-speaker="Sacha" data-start="550.275000" data-stop="552.577000">sister's data structures and algorithms books.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="552.597000" data-stop="555.481000">I didn't understand anything the first time</span> <span class="audio-time caption" data-speaker="Sacha" data-start="555.521000" data-stop="555.821000">around.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="555.841000" data-stop="557.644000">But after nine times through,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="557.684000" data-stop="559.766000">you start to understand some of the concepts and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="559.806000" data-stop="560.647000">how they go together.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="560.667000" data-stop="562.730000">The more you read something, the more of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="562.750000" data-stop="564.512000">those concepts start to make sense to you.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="564.652000" data-stop="566.915000">You read it, you read other things around it or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="566.975000" data-stop="567.996000">related to it,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="567.976000" data-stop="571.181000">and then the jargon becomes less impenetrable.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="571.201000" data-stop="572.603000">You begin to understand it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="573.143000" data-stop="576.148000">So one of my recommendations is I recommend</span> <span class="audio-time caption" data-speaker="Sacha" data-start="576.268000" data-stop="579.172000">reading the Emacs manual, the Org manual, all</span> <span class="audio-time caption" data-speaker="Sacha" data-start="579.232000" data-stop="581.455000">these book-shaped things for fun.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="582.016000" data-stop="583.398000">Even if you don't think you're going to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="583.578000" data-stop="586.362000">immediately use 90% of the things,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="586.502000" data-stop="588.445000">every time you read it, you're going to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="588.485000" data-stop="589.106000">learn something.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="590.328000" data-stop="590.548000"><strong class="speaker-name">Prot:</strong>  Yeah.</span> <span class="audio-time caption" data-speaker="Prot" data-start="590.568000" data-stop="592.992000">Plus, of course, you will know you are an Emacs</span> <span class="audio-time caption" data-speaker="Prot" data-start="593.092000" data-stop="595.435000">user if you are reading manuals for fun.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="598.351000" data-stop="599.596000"><strong class="speaker-name">Sacha:</strong>  How else are you going to find out</span> <span class="audio-time caption" data-speaker="Sacha" data-start="599.656000" data-stop="602.327000">about Org spreadsheets and whatnot, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="602.568000" data-stop="604.898000">It's just too big to fit in your brain.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="606.063000" data-stop="608.091000"><strong class="speaker-name">Prot:</strong>  Correct.</span> <span class="audio-time caption" data-speaker="Prot" data-start="609.472000" data-stop="611.094000">Yeah, that's really good.</span> <span class="audio-time caption" data-speaker="Prot" data-start="611.174000" data-stop="614.399000">You could even make it a habit of, okay, this day</span> <span class="audio-time caption" data-speaker="Prot" data-start="614.459000" data-stop="616.723000">I will read one chapter from the manual.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="616.000000">10:16</span> <strong>Tip: Use Emacs bookmarks to save your place in the manual</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="616.743000" data-stop="619.887000"><strong class="speaker-name">Prot:</strong> Actually, to say something on this, if you learn</span> <span class="audio-time caption" data-speaker="Prot" data-start="619.947000" data-stop="622.511000">about the bookmark mechanism of Emacs, you can</span> <span class="audio-time caption" data-speaker="Prot" data-start="622.651000" data-stop="624.474000">bookmark info manuals.</span> <span class="audio-time caption" data-speaker="Prot" data-start="624.654000" data-stop="626.938000">So if you are reading the manual from inside of</span> <span class="audio-time caption" data-speaker="Prot" data-start="627.078000" data-stop="630.122000">Emacs, you can use the bookmark facility to be</span> <span class="audio-time caption" data-speaker="Prot" data-start="630.182000" data-stop="633.587000">like, last point in the Emacs manual.</span> <span class="audio-time caption" data-speaker="Prot" data-start="633.627000" data-stop="635.530000">You could have a bookmark that is a rolling</span> <span class="audio-time caption" data-speaker="Prot" data-start="635.610000" data-stop="636.812000">bookmark, right?</span> <span class="audio-time caption" data-speaker="Prot" data-start="636.792000" data-stop="638.955000">So you could be updating it whenever you go to</span> <span class="audio-time caption" data-speaker="Prot" data-start="638.975000" data-stop="640.998000">the next chapter. This way, little by little,</span> <span class="audio-time caption" data-speaker="Prot" data-start="641.018000" data-stop="643.000000">you can read the manual.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="643.000000">10:43</span> <strong>Tip: Generally, investing time into navigation and note-taking workflows pays off</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="643.020000" data-stop="644.763000"><strong class="speaker-name">Sacha:</strong>  In general, figuring out</span> <span class="audio-time caption" data-speaker="Sacha" data-start="644.823000" data-stop="648.247000">your navigation and note-taking workflows so that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="648.267000" data-stop="650.330000">they're super convenient for you, whether that's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="650.430000" data-stop="653.074000">Denote or Org Mode Capture or whatever else that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="653.094000" data-stop="653.755000">you're using...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="654.296000" data-stop="656.438000">As you read, taking notes on the things that you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="656.479000" data-stop="658.461000">find interesting in a way that makes it easy to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="658.521000" data-stop="661.666000">jump back to more information is definitely worth</span> <span class="audio-time caption" data-speaker="Sacha" data-start="661.706000" data-stop="663.508000">the upfront investment of learning.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="665.294000" data-stop="666.595000"><strong class="speaker-name">Prot:</strong>  Yeah, 100%.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="667.396000" data-stop="668.657000"><strong class="speaker-name">Sacha:</strong>  @gcentauri confirms</span> <span class="audio-time caption" data-speaker="Sacha" data-start="669.418000" data-stop="671.040000">they are actually a true</span> <span class="audio-time caption" data-speaker="Sacha" data-start="671.140000" data-stop="673.342000">blue Emacs geek. "Was reading the manual right before bed and came</span> <span class="audio-time caption" data-speaker="Sacha" data-start="674.403000" data-stop="675.604000">across the forms library.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="677.746000" data-stop="678.928000">No idea it existed."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="679.628000" data-stop="682.531000">Read stuff, make it easier for you to jump</span> <span class="audio-time caption" data-speaker="Sacha" data-start="682.611000" data-stop="685.934000">back to the place that you left off or the parts</span> <span class="audio-time caption" data-speaker="Sacha" data-start="685.954000" data-stop="686.975000">that you found interesting.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="687.096000" data-stop="688.577000">That's a great recommendation.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="688.597000" data-stop="690.559000"><strong class="speaker-name">Prot:</strong>  Just to add another metaskill related to this.</span> <span class="audio-time caption" data-speaker="Prot" data-start="690.539000" data-stop="693.083000">Don't read it before going to bed because if you</span> <span class="audio-time caption" data-speaker="Prot" data-start="693.103000" data-stop="696.288000">discover something useful, you are not going to sleep.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="696.308000" data-stop="698.332000"><strong class="speaker-name">Sacha:</strong>  I think the idea there is get really</span> <span class="audio-time caption" data-speaker="Sacha" data-start="698.372000" data-stop="700.575000">good at telling your brain, yes, that's really</span> <span class="audio-time caption" data-speaker="Sacha" data-start="700.615000" data-stop="703.159000">cool, but if you stay up until 1, you are going</span> <span class="audio-time caption" data-speaker="Sacha" data-start="703.199000" data-stop="703.900000">to regret it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="703.981000" data-stop="708.199000">So just add a TODO and let it go.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="708.200000" data-stop="710.351000"><strong class="speaker-name">Prot:</strong>  Exactly.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="710.371000" data-stop="712.414000"><strong class="speaker-name">Sacha:</strong>  This may have happened to me a number of times.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="714.097000" data-stop="716.040000"><strong class="speaker-name">Prot:</strong>  Yeah, yeah, same.</span> <span class="audio-time caption" data-speaker="Prot" data-start="717.657000" data-stop="720.402000">So, only read the manual in the morning or</span> <span class="audio-time caption" data-speaker="Prot" data-start="720.783000" data-stop="722.666000">when you wake up.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="722.746000" data-stop="724.169000"><strong class="speaker-name">Sacha:</strong>  Are there other metaskills that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="724.209000" data-stop="725.811000">are not yet captured in this or do we start</span> <span class="audio-time caption" data-speaker="Sacha" data-start="725.872000" data-stop="727.274000">digging into each of these skills?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="728.396000" data-stop="730.019000"><strong class="speaker-name">Prot:</strong>  I say we dig in and if we think of</span> <span class="audio-time caption" data-speaker="Prot" data-start="730.059000" data-stop="731.742000">something we can always add it later.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="731.982000" data-stop="732.283000"><strong class="speaker-name">Sacha:</strong>  All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="732.363000" data-stop="733.685000">What strikes your attention here?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="733.766000" data-stop="734.727000">Which of these things?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="734.807000" data-stop="735.128000"><strong class="speaker-name">Prot:</strong>  No, no.</span> <span class="audio-time caption" data-speaker="Prot" data-start="735.168000" data-stop="736.250000">You can go wherever.</span> <span class="audio-time caption" data-speaker="Prot" data-start="736.310000" data-stop="737.232000">I don't mind.</span> <span class="audio-time caption" data-speaker="Prot" data-start="737.312000" data-stop="739.075000">Anything will do well.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="739.000000">12:19</span> <strong>Skill: Keyboard macros</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="739.223000" data-stop="742.510000"><strong class="speaker-name">Sacha:</strong>  There's a whole lot of stuff here in the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="742.570000" data-stop="748.283000">customizer, packager thing around</span> <span class="audio-time caption" data-speaker="Sacha" data-start="748.563000" data-stop="751.510000">modifying or gluing together code that is not</span> <span class="audio-time caption" data-speaker="Sacha" data-start="751.570000" data-stop="753.554000">something easy for people to pick up because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="753.574000" data-stop="756.140000">they're just not used to it in other programming</span> <span class="audio-time caption" data-speaker="Sacha" data-start="756.180000" data-stop="758.565000">languages or platforms or whatever.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="758.545000" data-stop="761.008000">Things like: you could use</span> <span class="audio-time caption" data-speaker="Sacha" data-start="761.088000" data-stop="764.152000">keyboard macros to cobble together a quick workflow.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="764.172000" data-stop="765.974000">You don't even have to write a big function.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="766.314000" data-stop="768.937000">Just developing the intuition that, oh, this is a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="769.098000" data-stop="771.881000">set of repeatable functions or repeatable</span> <span class="audio-time caption" data-speaker="Sacha" data-start="771.941000" data-stop="773.683000">commands is one thing,</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="773.000000">12:53</span> <strong>Skill: Modifying the behavior of code via hooks and advice</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="773.703000" data-stop="776.326000"><strong class="speaker-name">Sacha:</strong> all the way to "this is how I use hooks and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="776.386000" data-stop="779.870000">advice to either modify the behavior of something</span> <span class="audio-time caption" data-speaker="Sacha" data-start="779.910000" data-stop="783.174000">where the person who coded it has anticipated</span> <span class="audio-time caption" data-speaker="Sacha" data-start="783.295000" data-stop="785.397000">that a hook will be needed here,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="785.377000" data-stop="787.839000">or advice in case they didn't plan for it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="787.879000" data-stop="789.461000">at all." You're just going to override things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="789.501000" data-stop="792.224000">yourself. How do people develop this sense of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="792.264000" data-stop="795.133000">what's possible and how to do things?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="795.000000">13:15</span> <strong>Tip: Learn to think in terms of buffers and windows</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="795.134000" data-stop="798.109000"><strong class="speaker-name">Prot:</strong>  Yeah, it's a difficult skill but it's something you</span> <span class="audio-time caption" data-speaker="Prot" data-start="798.149000" data-stop="801.452000">develop by experience. The point to</span> <span class="audio-time caption" data-speaker="Prot" data-start="801.652000" data-stop="806.057000">remember is that in Emacs, at its core, you have</span> <span class="audio-time caption" data-speaker="Prot" data-start="806.457000" data-stop="810.000000">buffers and everything is a buffer and buffers</span> <span class="audio-time caption" data-speaker="Prot" data-start="810.080000" data-stop="811.722000">are displayed in windows</span> <span class="audio-time caption" data-speaker="Prot" data-start="811.803000" data-stop="814.508000">If you think in terms of that abstraction,</span> <span class="audio-time caption" data-speaker="Prot" data-start="814.588000" data-stop="818.436000">something like a keyboard macro becomes a tool</span> <span class="audio-time caption" data-speaker="Prot" data-start="818.516000" data-stop="821.382000">that will jump between buffers, will switch</span> <span class="audio-time caption" data-speaker="Prot" data-start="821.462000" data-stop="822.003000">windows.</span> <span class="audio-time caption" data-speaker="Prot" data-start="822.244000" data-stop="823.867000">It has no problem doing any of that.</span> <span class="audio-time caption" data-speaker="Prot" data-start="824.268000" data-stop="827.093000">You are not limited in your thought to, okay,</span> <span class="audio-time caption" data-speaker="Prot" data-start="827.133000" data-stop="829.558000">I have to work exactly where I am right now.</span> <span class="audio-time caption" data-speaker="Prot" data-start="830.163000" data-stop="832.748000">I think that's a general approach that goes</span> <span class="audio-time caption" data-speaker="Prot" data-start="833.009000" data-stop="834.231000">very far with what you do.</span> <span class="audio-time caption" data-speaker="Prot" data-start="834.251000" data-stop="836.315000">Of course, when you are thinking of the advice</span> <span class="audio-time caption" data-speaker="Prot" data-start="836.395000" data-stop="838.740000">and the hook, that I think is a little bit more</span> <span class="audio-time caption" data-speaker="Prot" data-start="838.840000" data-stop="841.486000">advanced because you need to also have the skills</span> <span class="audio-time caption" data-speaker="Prot" data-start="841.526000" data-stop="842.948000">to write advice.</span> <span class="audio-time caption" data-speaker="Prot" data-start="842.968000" data-stop="843.950000">With hooks, maybe not.</span> <span class="audio-time caption" data-speaker="Prot" data-start="844.051000" data-stop="846.055000">But for advice, you will need to understand</span> <span class="audio-time caption" data-speaker="Prot" data-start="846.155000" data-stop="847.277000">exactly what is happening.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="847.000000">14:07</span> <strong>Skill: Reading the source code; Tip: Just jump in</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="847.645000" data-stop="850.209000"><strong class="speaker-name">Sacha:</strong>  I have definitely jumped ahead here</span> <span class="audio-time caption" data-speaker="Sacha" data-start="850.289000" data-stop="852.932000">because this also requires the skill of reading</span> <span class="audio-time caption" data-speaker="Sacha" data-start="852.972000" data-stop="856.217000">people's code in order to find out there is a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="856.297000" data-stop="858.220000">hook or there is some advice that you can do, or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="858.260000" data-stop="860.703000">there's a variable and this is how you can let</span> <span class="audio-time caption" data-speaker="Sacha" data-start="860.783000" data-stop="864.909000">bind it to temporarily change its value during</span> <span class="audio-time caption" data-speaker="Sacha" data-start="864.969000" data-stop="866.872000">this part of the code.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="867.893000" data-stop="869.916000">Let's talk about reading source.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="869.936000" data-stop="872.460000">What sorts of things help people develop that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="872.560000" data-stop="874.142000">skill of reading the source code?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="875.270000" data-stop="878.395000"><strong class="speaker-name">Prot:</strong>  You have to just jump in at some point.</span> <span class="audio-time caption" data-speaker="Prot" data-start="878.535000" data-stop="881.039000">Like, you might do it by accident when you are in</span> <span class="audio-time caption" data-speaker="Prot" data-start="881.099000" data-stop="885.886000">a help buffer and either you misclick S, which</span> <span class="audio-time caption" data-speaker="Prot" data-start="885.946000" data-stop="888.890000">goes to the source, or you follow the link from</span> <span class="audio-time caption" data-speaker="Prot" data-start="888.950000" data-stop="889.271000">above.</span> <span class="audio-time caption" data-speaker="Prot" data-start="889.671000" data-stop="892.015000">But anyway, the point is it's a good skill to</span> <span class="audio-time caption" data-speaker="Prot" data-start="892.095000" data-stop="895.500000">just, a good habit rather, just jump in and try</span> <span class="audio-time caption" data-speaker="Prot" data-start="895.580000" data-stop="898.384000">to read it even if you don't know any programming.</span> <span class="audio-time caption" data-speaker="Prot" data-start="898.424000" data-stop="900.768000">Try to read it as if it's English and try to see</span> <span class="audio-time caption" data-speaker="Prot" data-start="900.808000" data-stop="902.290000">what you can understand.</span> <span class="audio-time caption" data-speaker="Prot" data-start="902.573000" data-stop="905.000000">And of course, some functions will be extremely</span> <span class="audio-time caption" data-speaker="Prot" data-start="905.060000" data-stop="905.501000">difficult.</span> <span class="audio-time caption" data-speaker="Prot" data-start="905.622000" data-stop="907.828000">Others will be more straightforward.</span> <span class="audio-time caption" data-speaker="Prot" data-start="907.848000" data-stop="910.395000">So I think eventually by exposure through</span> <span class="audio-time caption" data-speaker="Prot" data-start="910.516000" data-stop="912.862000">osmosis, as it were, you will already learn</span> <span class="audio-time caption" data-speaker="Prot" data-start="912.963000" data-stop="913.444000">something.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="913.998000" data-stop="917.765000"><strong class="speaker-name">Sacha:</strong>  I love the fact that our functions in</span> <span class="audio-time caption" data-speaker="Sacha" data-start="917.805000" data-stop="920.931000">variable names are often very long and it makes</span> <span class="audio-time caption" data-speaker="Sacha" data-start="920.992000" data-stop="922.935000">sense in English because we're not trying to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="922.995000" data-stop="926.081000">squeeze into some very concise, very terse</span> <span class="audio-time caption" data-speaker="Sacha" data-start="926.462000" data-stop="927.484000">convention.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="927.504000" data-stop="929.508000">Just put a full sentence in there.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="929.528000" data-stop="929.889000">It's fine.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="930.550000" data-stop="932.594000">We just use completion anyway.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="932.614000" data-stop="933.576000">It's all good.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="933.000000">15:33</span> <strong>Tip: edebug is great for exploring code</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="933.708000" data-stop="936.654000"><strong class="speaker-name">Sacha:</strong> One of the tips that I'll put in here because</span> <span class="audio-time caption" data-speaker="Sacha" data-start="936.894000" data-stop="939.379000">people sometimes miss it is the power of Edebug.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="940.141000" data-stop="942.225000">If people haven't come across Edebug yet, it's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="942.265000" data-stop="944.229000">great because you can interactively step through</span> <span class="audio-time caption" data-speaker="Sacha" data-start="944.410000" data-stop="946.554000">what the code is actually doing and you can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="946.634000" data-stop="949.921000">evaluate what the value is of this variable at</span> <span class="audio-time caption" data-speaker="Sacha" data-start="949.961000" data-stop="950.502000">this point.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="950.836000" data-stop="953.501000">And every so often I had to go into the Edebug</span> <span class="audio-time caption" data-speaker="Sacha" data-start="953.881000" data-stop="956.065000">menu bar and remind myself, okay, you can set</span> <span class="audio-time caption" data-speaker="Sacha" data-start="956.146000" data-stop="957.889000">conditional breakpoints and all these other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="957.949000" data-stop="960.073000">things that I have to remember that exist and can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="960.113000" data-stop="961.114000">be used.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="961.135000" data-stop="963.359000">But Edebug, if you're going to learn Emacs Lisp,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="963.980000" data-stop="964.761000">learn Edebug.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="965.602000" data-stop="967.666000"><strong class="speaker-name">Prot:</strong>  Edebug is really powerful for sure and</span> <span class="audio-time caption" data-speaker="Prot" data-start="967.746000" data-stop="970.673000">it's especially useful when you have functions</span> <span class="audio-time caption" data-speaker="Prot" data-start="970.793000" data-stop="973.198000">that are relatively long.</span> <span class="audio-time caption" data-speaker="Prot" data-start="973.338000" data-stop="975.362000">I mean what they are doing like they have a lot</span> <span class="audio-time caption" data-speaker="Prot" data-start="975.423000" data-stop="978.509000">of steps and you have to understand the flow.</span> <span class="audio-time caption" data-speaker="Prot" data-start="978.529000" data-stop="980.253000">Like if it's a very short function maybe you</span> <span class="audio-time caption" data-speaker="Prot" data-start="980.313000" data-stop="982.958000">don't benefit all that much from eDebug but in</span> <span class="audio-time caption" data-speaker="Prot" data-start="983.019000" data-stop="984.081000">practice you will need it.</span> <span class="audio-time caption" data-speaker="Prot" data-start="984.141000" data-stop="985.163000">It's very powerful.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="986.000000">16:26</span> <strong>Tip: Reading tests can help you understand code, too.</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="986.020000" data-stop="987.343000"><strong class="speaker-name">Sacha:</strong>  And the other thing I want to point out</span> <span class="audio-time caption" data-speaker="Sacha" data-start="987.423000" data-stop="990.790000">is that sometimes packages have tests and reading</span> <span class="audio-time caption" data-speaker="Sacha" data-start="990.830000" data-stop="993.416000">the tests can give you even more of an idea of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="993.576000" data-stop="995.640000">how this function is supposed to behave.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="996.041000" data-stop="998.446000">It's not always the case, but when there are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="998.466000" data-stop="999.088000">tests, they're great.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="999.769000" data-stop="1001.854000"><strong class="speaker-name">Prot:</strong>  In an ideal world, we will update our</span> <span class="audio-time caption" data-speaker="Prot" data-start="1001.874000" data-stop="1003.978000">tests.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1003.958000" data-stop="1006.804000"><strong class="speaker-name">Sacha:</strong>  Alright, so that's reading source code.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1008.387000" data-stop="1011.935000">There's so much that's really interesting to read.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1012.296000" data-stop="1015.964000">Sometimes you come across interesting idioms for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1016.024000" data-stop="1017.948000">Emacs Lisp and you're like, oh yeah, that's a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1018.008000" data-stop="1020.493000">great way to iterate through all the buffers and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1020.533000" data-stop="1022.237000">match a certain thing, whatever.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1022.000000">17:02</span> <strong>Skill: Idiomatic Elisp</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1022.217000" data-stop="1025.624000"><strong class="speaker-name">Sacha:</strong> And so if you're in this customizer phase of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1025.684000" data-stop="1029.451000">things and you want to move to the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1029.491000" data-stop="1034.140000">contributor level, learning idiomatic Elisp is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1034.361000" data-stop="1036.505000">definitely like, okay, it makes things a lot</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1036.585000" data-stop="1037.286000">easier.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1037.000000">17:17</span> <strong>Tip: Write tests.</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1037.306000" data-stop="1039.871000"><strong class="speaker-name">Sacha:</strong> Charlie says, "Edebug and ERT tests change the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1039.891000" data-stop="1040.893000">way I develop Elisp.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1040.993000" data-stop="1042.757000">No longer flying blind."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1044.104000" data-stop="1044.625000">Yeah, great.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1045.105000" data-stop="1048.310000">In particular, I tend to break things whenever I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1048.371000" data-stop="1049.112000">make changes,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1049.132000" data-stop="1050.775000">so it's really nice to be able to say, okay, I'm</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1050.815000" data-stop="1052.873000">going to nail down this behavior,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1052.874000" data-stop="1053.821000">at least for now.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1055.143000" data-stop="1056.886000">With a little bit of thinking, sometimes you can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1056.946000" data-stop="1058.910000">write tests for things that you would do</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1059.070000" data-stop="1060.512000">interactively.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1060.532000" data-stop="1063.958000">So you can test a whole lot more because you have</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1064.059000" data-stop="1067.525000">buffers and windows than you might in other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1067.585000" data-stop="1068.306000">languages.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1069.079000" data-stop="1070.280000"><strong class="speaker-name">Prot:</strong>  Yeah, correct, correct.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1070.361000" data-stop="1071.642000">And you get to see it live.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1072.000000">17:52</span> <strong>Tip: When writing Emacs Lisp that expects a list, use plurals</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="1072.563000" data-stop="1075.687000"><strong class="speaker-name">Prot:</strong>  Just to say on this point of when you are</span> <span class="audio-time caption" data-speaker="Prot" data-start="1075.947000" data-stop="1079.451000">going through the tests and through everything,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1079.471000" data-stop="1083.056000">one basic thing which is in idiomatic Emacs Lisp</span> <span class="audio-time caption" data-speaker="Prot" data-start="1083.176000" data-stop="1086.179000">is when you are writing the parameters of a</span> <span class="audio-time caption" data-speaker="Prot" data-start="1086.259000" data-stop="1089.443000">function, if you are expecting a list, you use</span> <span class="audio-time caption" data-speaker="Prot" data-start="1089.483000" data-stop="1090.024000">plural.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1090.404000" data-stop="1092.347000">For example, you have a function that goes</span> <span class="audio-time caption" data-speaker="Prot" data-start="1092.367000" data-stop="1094.409000">through buffers.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1094.429000" data-stop="1096.892000">Your parameter is just called buffers.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1097.834000" data-stop="1100.701000">That alone should tell you that it's a list</span> <span class="audio-time caption" data-speaker="Prot" data-start="1100.782000" data-stop="1102.366000">of stuff.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1102.386000" data-stop="1105.474000">You don't say "list of buffers," right?</span> <span class="audio-time caption" data-speaker="Prot" data-start="1105.614000" data-stop="1106.376000">That's superfluous.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1106.396000" data-stop="1108.181000">You just say buffers. This automatically means</span> <span class="audio-time caption" data-speaker="Prot" data-start="1108.241000" data-stop="1108.702000">it's a list.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1109.685000" data-stop="1110.707000">So that's very common.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1110.727000" data-stop="1111.810000">You will see this a lot.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1112.161000" data-stop="1113.122000"><strong class="speaker-name">Sacha:</strong>  Here I am,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1113.162000" data-stop="1117.228000">I've been calling my variables buffer-list.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1117.788000" data-stop="1125.678000">Sometimes figuring out what I should call a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1128.001000" data-stop="1130.905000">function or call an argument is a bit</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1130.945000" data-stop="1133.468000">challenging, but I figure I'll just name it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1133.508000" data-stop="1136.212000">whatever comes to mind and then I can defalias it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1136.532000" data-stop="1138.675000">or do a search and replace afterwards.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1139.000000">18:59</span> <strong>Tip: When naming, be verbose rather than terse</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="1139.768000" data-stop="1142.493000"><strong class="speaker-name">Prot:</strong>  When in doubt, of course, be</span> <span class="audio-time caption" data-speaker="Prot" data-start="1142.513000" data-stop="1144.117000">verbose rather than terse.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1144.497000" data-stop="1145.439000"><strong class="speaker-name">Sacha:</strong>  Oh, yes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1145.459000" data-stop="1148.685000">When you find yourself still using the wrong</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1148.726000" data-stop="1150.649000">words to try to find it again, just add more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1150.770000" data-stop="1152.914000">aliases and you'll find it eventually.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1153.495000" data-stop="1154.397000"><strong class="speaker-name">Prot:</strong>  More verbose.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1154.417000" data-stop="1154.918000">More words.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1156.240000" data-stop="1157.423000">All the words.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1157.443000" data-stop="1158.044000"><strong class="speaker-name">Sacha:</strong>  All the words.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1158.966000" data-stop="1159.667000">All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1159.647000" data-stop="1162.431000">What are the things here do we want to dig into?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1162.751000" data-stop="1165.195000">Adopting is always an interesting challenge and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1165.255000" data-stop="1167.839000">it's a challenge at all levels here, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1167.899000" data-stop="1171.043000">From the user trying to figure out</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1171.104000" data-stop="1173.567000">"How do I remember to use this keyboard</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1173.607000" data-stop="1176.471000">shortcut?" to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1176.531000" data-stop="1178.034000">"I've written this new function,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1178.114000" data-stop="1180.457000">it's great, but I have to remember to use it."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1182.108000" data-stop="1185.095000">Do you have any recommendations around changing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1185.115000" data-stop="1185.376000">the workflow?</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1186.000000">19:46</span> <strong>Tip: Iterate on your workflow in small steps</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="1186.338000" data-stop="1188.403000"><strong class="speaker-name">Prot:</strong>  In accordance with what I said in the</span> <span class="audio-time caption" data-speaker="Prot" data-start="1188.463000" data-stop="1191.369000">beginning, iteratively.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1192.151000" data-stop="1193.394000">Try to memorize one.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1193.414000" data-stop="1195.760000">You have this new function that, let's say,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1195.780000" data-stop="1198.506000">streamlines how you list files in a directory,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1198.526000" data-stop="1199.408000">whatever, I don't know.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1199.388000" data-stop="1203.294000">Use it. Don't have all 10 functions and</span> <span class="audio-time caption" data-speaker="Prot" data-start="1203.334000" data-stop="1206.539000">try to remember them. Just use one. After two weeks,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1206.680000" data-stop="1209.764000">use the next one. After four weeks, use the third</span> <span class="audio-time caption" data-speaker="Prot" data-start="1209.905000" data-stop="1212.669000">one, and so on. Little by little,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1212.970000" data-stop="1215.313000">make it something that you just do automatically,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1215.333000" data-stop="1218.599000">you don't think about it, with the recognition</span> <span class="audio-time caption" data-speaker="Prot" data-start="1218.679000" data-stop="1220.181000">that you want to remember them all.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1220.000000">20:20</span> <strong>Tip: Make things more automatic, and use context-sensitive clues</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1220.701000" data-stop="1222.323000"><strong class="speaker-name">Sacha:</strong>  In fact, going on that point of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1222.343000" data-stop="1225.506000">automaticity, I also like making sure this stuff</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1225.586000" data-stop="1227.889000">happens without me having to think about it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1228.349000" data-stop="1230.772000">If there's a hook that I can take advantage of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1230.832000" data-stop="1233.875000">to just have it automatically turned on, or if</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1233.955000" data-stop="1238.600000">there's a context menu I can add it to so that I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1238.660000" data-stop="1240.782000">know, okay, if I do this, then I'll see it in a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1240.862000" data-stop="1244.066000">shorter list. I can get to it more easily</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1244.106000" data-stop="1246.708000">instead of having to remember how to find it and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1246.748000" data-stop="1248.210000">all these details.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1248.190000" data-stop="1250.237000">All these little ways to make it easier for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1250.297000" data-stop="1254.031000">myself to automatically enjoy the improvements, or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1254.332000" data-stop="1256.158000">at least have a chance of finding it again.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1257.303000" data-stop="1257.804000"><strong class="speaker-name">Prot:</strong>  Yeah, yeah.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1257.824000" data-stop="1261.648000">This is in the spirit of prefix keys, with the</span> <span class="audio-time caption" data-speaker="Prot" data-start="1261.708000" data-stop="1264.672000">help of the which-key package, for example, or</span> <span class="audio-time caption" data-speaker="Prot" data-start="1264.792000" data-stop="1266.655000">what Embark is doing.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1268.797000" data-stop="1270.399000">Of course, there are different approaches.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1270.419000" data-stop="1273.243000">Maybe you want to set up a transient and in the</span> <span class="audio-time caption" data-speaker="Prot" data-start="1273.283000" data-stop="1275.986000">given mode, you just type question mark, for</span> <span class="audio-time caption" data-speaker="Prot" data-start="1276.026000" data-stop="1278.029000">example, and it breaks up your transient with</span> <span class="audio-time caption" data-speaker="Prot" data-start="1278.069000" data-stop="1279.290000">what you want to do.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1279.310000" data-stop="1281.853000">There are various strategies you can go about</span> <span class="audio-time caption" data-speaker="Prot" data-start="1281.994000" data-stop="1283.175000">to do something like that.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1286.092000" data-stop="1287.694000">I lost your audio, just to say.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1294.663000" data-stop="1295.344000">Yeah, no problem.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1295.444000" data-stop="1296.125000">Let's see.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1296.145000" data-stop="1298.248000">Of course I can sing in the meantime, but I don't</span> <span class="audio-time caption" data-speaker="Prot" data-start="1298.288000" data-stop="1307.260000">think the audience will like it.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1307.280000" data-stop="1313.027000">Let's see.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1321.189000" data-stop="1333.705000">Yeah, no problem.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1333.766000" data-stop="1334.386000">No stress.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1334.446000" data-stop="1336.669000">Of course we could do this.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1336.709000" data-stop="1338.792000">Don't forget that there was a time in history</span> <span class="audio-time caption" data-speaker="Prot" data-start="1338.832000" data-stop="1340.875000">where cinema thrived with technology like this.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1340.915000" data-stop="1341.175000">So it will work.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1345.475000" data-stop="1348.544000">Okay, I can read a little bit from the chat.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1348.564000" data-stop="1351.654000">So something I love doing is after I've learned</span> <span class="audio-time caption" data-speaker="Prot" data-start="1351.754000" data-stop="1355.265000">that one function at the late...</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1429.343000" data-stop="1433.448000"><strong class="speaker-name">Sacha:</strong>  Can you hear me now?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1433.809000" data-stop="1433.929000">No.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1434.550000" data-stop="1434.830000">Test.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1437.654000" data-stop="1438.355000">Okay, okay, okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1438.435000" data-stop="1438.935000">Woohoo!</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1439.055000" data-stop="1439.917000">Successful panicking.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1442.360000" data-stop="1442.680000">Alright.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1446.145000" data-stop="1446.785000">Great.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1446.906000" data-stop="1448.387000">Great.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1448.588000" data-stop="1448.968000">Magic?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1449.509000" data-stop="1450.250000">Something is happening?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1450.330000" data-stop="1451.732000">I don't know what is happening.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1452.853000" data-stop="1454.095000">My video is less important.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1454.195000" data-stop="1454.595000">It's fine.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1455.036000" data-stop="1455.857000">You may continue.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1486.685000" data-stop="1487.587000">Oh yeah, for sure.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1488.000000">24:48</span> <strong>Skill: Thinking in terms of elements</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1488.550000" data-stop="1492.019000"><strong class="speaker-name">Sacha:</strong> Even just thinking, okay, here are the elements</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1492.140000" data-stop="1494.446000">that it can work on and here are the actions that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1494.486000" data-stop="1497.133000">I want to associate with those elements.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1497.454000" data-stop="1501.164000">I guess it starts with the intuition of what are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1501.224000" data-stop="1502.989000">the things that I can address.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1503.948000" data-stop="1506.111000">And what I do is I just look at the embark source</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1506.131000" data-stop="1507.893000">code and I'm like, oh yeah, okay,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1507.933000" data-stop="1509.735000">Org headings, that makes sense, and variables and all</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1509.775000" data-stop="1510.456000">that stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1510.476000" data-stop="1514.561000">I always like looking at people's setups.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1514.581000" data-stop="1517.985000">Okay, this one says you are now too quiet.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1518.005000" data-stop="1523.872000">Can you say something?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1524.513000" data-stop="1526.856000">Okay, okay, this is definitely a me problem.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1527.056000" data-stop="1527.737000">Hang on a second.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1528.798000" data-stop="1530.580000">Oh, okay, okay, okay, I think...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1531.285000" data-stop="1533.309000">Ah, technology.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1533.369000" data-stop="1535.193000">Why is it so fun?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1536.416000" data-stop="1538.060000">Test.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1538.080000" data-stop="1538.761000">Test.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1538.781000" data-stop="1540.124000">No, this is not right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1540.425000" data-stop="1541.086000">No, no, no.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1541.447000" data-stop="1543.371000"><strong class="speaker-name">Prot:</strong>  Let me know if you can hear me now.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1547.502000" data-stop="1552.026000">And of course, in the meantime, I can comment on</span> <span class="audio-time caption" data-speaker="Prot" data-start="1552.046000" data-stop="1552.526000">the weather.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1552.586000" data-stop="1553.968000">I don't know if I can be heard.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1554.608000" data-stop="1557.591000">But in Western Europe, the temperatures are</span> <span class="audio-time caption" data-speaker="Prot" data-start="1557.711000" data-stop="1558.652000">record high.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1559.212000" data-stop="1561.794000">And here in the mountain of Cyprus, it's like 20</span> <span class="audio-time caption" data-speaker="Prot" data-start="1561.834000" data-stop="1563.195000">degrees Celsius max.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1564.296000" data-stop="1565.137000"><strong class="speaker-name">Sacha:</strong>  Okay.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1565.978000" data-stop="1568.880000">So did you hear any of the stream?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1569.501000" data-stop="1570.782000">Is Prot's audio okay now?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1571.903000" data-stop="1573.344000">You've got to keep talking, I guess.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1573.364000" data-stop="1573.985000"><strong class="speaker-name">Prot:</strong>  Yeah.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1574.205000" data-stop="1574.725000"><strong class="speaker-name">Sacha:</strong>  Oh, my goodness.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1575.046000" data-stop="1576.600000"><strong class="speaker-name">Prot:</strong>  It's completely different.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1576.000000">26:16</span> <strong>Skill: Reading other people's configuration and adapting ideas to yours</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="1576.601000" data-stop="1584.200000"><strong class="speaker-name">Prot:</strong>  "We can hear him loud and clear." Wonderful.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1584.201000" data-stop="1587.533000"><strong class="speaker-name">Sacha:</strong>  Back to braindumping.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1587.534000" data-stop="1592.167000">Very good. So we talked about Embark and other things</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1592.168000" data-stop="1594.300000">and practices and workflows.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1594.301000" data-stop="1596.600000">I learned by reading other people's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1596.601000" data-stop="1600.140000">configurations, but it does take a fair bit of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1600.200000" data-stop="1603.002000">intuition in the first place to realize this part</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1603.022000" data-stop="1604.644000">of the configuration means</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1604.624000" data-stop="1607.388000">this, and how to adapt that into my</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1607.468000" data-stop="1608.529000">own workflow.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1608.549000" data-stop="1610.352000">Is there a way for people to develop that aside</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1610.372000" data-stop="1612.996000">from just reading tons and tons of configs?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1614.718000" data-stop="1616.961000"><strong class="speaker-name">Prot:</strong>  At some point you just have to try.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1617.081000" data-stop="1618.924000">You just have to be like, "Okay, this</span> <span class="audio-time caption" data-speaker="Prot" data-start="1618.984000" data-stop="1622.249000">package everybody raves about, they must be</span> <span class="audio-time caption" data-speaker="Prot" data-start="1622.289000" data-stop="1623.250000">doing something good.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1623.651000" data-stop="1625.894000">I don't know what that is, so I have to try it and</span> <span class="audio-time caption" data-speaker="Prot" data-start="1625.954000" data-stop="1626.835000">see for myself."</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1627.000000">27:07</span> <strong>Tip: Start with focusing on just one thing</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="1627.540000" data-stop="1631.486000"><strong class="speaker-name">Prot:</strong> Then for something like Embark...</span> <span class="audio-time caption" data-speaker="Prot" data-start="1631.566000" data-stop="1633.509000">We are just using it as an example, but I think</span> <span class="audio-time caption" data-speaker="Prot" data-start="1633.549000" data-stop="1635.372000">it's a good example for other things.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1635.392000" data-stop="1637.616000">Something like Embark can do a million</span> <span class="audio-time caption" data-speaker="Prot" data-start="1637.696000" data-stop="1640.761000">things, but you can also use it for just one</span> <span class="audio-time caption" data-speaker="Prot" data-start="1640.821000" data-stop="1641.742000">thing, right?</span> <span class="audio-time caption" data-speaker="Prot" data-start="1642.203000" data-stop="1645.228000">Find the one thing that you can use it for,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1645.248000" data-stop="1647.532000">use it for that, then figure out what is the</span> <span class="audio-time caption" data-speaker="Prot" data-start="1647.592000" data-stop="1649.334000">second thing and take it from there.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1649.675000" data-stop="1652.139000">The same can be said for Org and all sorts of</span> <span class="audio-time caption" data-speaker="Prot" data-start="1652.279000" data-stop="1652.940000">packages.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1653.000000">27:33</span> <strong>Blog posts and videos are useful</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1653.612000" data-stop="1657.077000"><strong class="speaker-name">Sacha:</strong>  I find that sometimes videos are useful</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1657.137000" data-stop="1660.241000">for it in terms of seeing it in context, but on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1660.261000" data-stop="1661.643000">the other hand, sometimes I don't have the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1661.723000" data-stop="1663.586000">patience to watch a whole video.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1665.869000" data-stop="1669.834000">I particularly enjoy the posts that are both blog</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1669.875000" data-stop="1672.558000">posts plus videos, so I can just skim the blog</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1672.598000" data-stop="1674.841000">post, copy the code without having to pause and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1674.881000" data-stop="1678.106000">type things in manually, but also see how it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1678.186000" data-stop="1681.511000">works by somebody showing me how they use</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1681.551000" data-stop="1682.472000">something.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1682.452000" data-stop="1685.327000"><strong class="speaker-name">Prot:</strong>  Yes.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1685.347000" data-stop="1687.197000">That's the idea.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1689.000000">28:09</span> <strong>Tip: Take notes as you learn, and ideally, share them too.</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1689.472000" data-stop="1691.354000"><strong class="speaker-name">Sacha:</strong>  I do want to sneak in this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1691.414000" data-stop="1692.795000">recommendation to share.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1692.815000" data-stop="1693.776000">I keep beating this drum.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1694.137000" data-stop="1698.321000">But whenever I write about something that I've</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1698.381000" data-stop="1700.483000">learned, I always end up getting these comments</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1700.523000" data-stop="1702.205000">from people who point out other things that I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1702.285000" data-stop="1703.466000">should check out too.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1704.147000" data-stop="1706.509000">So I highly recommend, whether you're a beginner</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1706.589000" data-stop="1709.392000">or whether you're a power user of Emacs, try</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1709.512000" data-stop="1710.033000">blogging.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1710.753000" data-stop="1713.176000">I am happy to add people's blogs to Planet Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1713.236000" data-stop="1715.378000">Life so people can read your stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1715.358000" data-stop="1719.087000">All the notes are great for both crystallizing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1719.107000" data-stop="1721.853000">what you know as well as possibly inviting other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1721.914000" data-stop="1726.124000">people to share other tips and comments that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1726.164000" data-stop="1727.627000">point out that what you just worked on is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1727.687000" data-stop="1729.953000">actually a built-in package and all you have to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1729.973000" data-stop="1731.597000">do is configure this.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1732.499000" data-stop="1733.822000">Happens to me often.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1734.000000">28:54</span> <strong>Tip: Accept being a beginner.</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="1734.595000" data-stop="1736.558000"><strong class="speaker-name">Prot:</strong>  And what can help with blogging,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1736.578000" data-stop="1739.242000">especially once you are blogging about something</span> <span class="audio-time caption" data-speaker="Prot" data-start="1739.302000" data-stop="1743.648000">that you know has a very high skill level, is</span> <span class="audio-time caption" data-speaker="Prot" data-start="1743.728000" data-stop="1747.293000">to approach it in a diary-like way, where it's</span> <span class="audio-time caption" data-speaker="Prot" data-start="1747.333000" data-stop="1750.297000">like, today I learned about such and such.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1750.718000" data-stop="1753.201000">I am not an expert, I am learning, and this is</span> <span class="audio-time caption" data-speaker="Prot" data-start="1753.261000" data-stop="1753.542000">fun.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1754.283000" data-stop="1755.865000">That's your blog post.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1755.905000" data-stop="1757.988000">You don't have to present yourself as the</span> <span class="audio-time caption" data-speaker="Prot" data-start="1758.108000" data-stop="1760.952000">foremost expert on the matter, because then of</span> <span class="audio-time caption" data-speaker="Prot" data-start="1761.012000" data-stop="1763.576000">course you will have to wait many years to write</span> <span class="audio-time caption" data-speaker="Prot" data-start="1763.616000" data-stop="1764.417000">that blog post.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1764.835000" data-stop="1769.982000"><strong class="speaker-name">Sacha:</strong>  I think that goes under this separate</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1771.304000" data-stop="1774.508000">intuition thing for mindset and accepting the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1774.568000" data-stop="1777.532000">fact that no matter how many years of Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1777.612000" data-stop="1779.395000">experience you have, you're going to be a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1779.455000" data-stop="1783.600000">beginner in 90% of the things that Emacs can do.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1784.101000" data-stop="1786.765000">So we can totally just accept the beginner's mind.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1787.065000" data-stop="1789.048000">There's no need to worry about imposter syndrome</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1789.088000" data-stop="1790.710000">because we're all like this.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1791.271000" data-stop="1793.053000">We're all figuring things out.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1793.033000" data-stop="1796.536000">If you want, you can put in a disclaimer.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1796.596000" data-stop="1798.238000">You can say, "I'm totally a beginner.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1798.598000" data-stop="1801.661000">Read this for the idea and not the Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1801.721000" data-stop="1802.522000">Lisp style,"</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1803.263000" data-stop="1805.745000">if you're embarrassed, you're</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1805.765000" data-stop="1807.427000">self-conscious about sharing your code.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1808.768000" data-stop="1814.013000">But yeah, we're all just starting out, essentially.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1814.714000" data-stop="1818.197000">I like the fact that people in the community</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1818.237000" data-stop="1819.378000">are so accessible.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1819.595000" data-stop="1822.159000">There's no one really saying, oh, I'm an expert.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1822.179000" data-stop="1822.820000">You should do it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1822.840000" data-stop="1824.783000">You should do it this way and only this way,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1825.304000" data-stop="1828.088000">because we're all aware that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1829.090000" data-stop="1831.513000">again, we've done it this way, but there are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1831.674000" data-stop="1834.097000">probably five or six other implementations that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1834.137000" data-stop="1836.060000">could be even better that are really out there.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1837.463000" data-stop="1838.284000"><strong class="speaker-name">Prot:</strong>  Yeah, exactly.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1838.304000" data-stop="1839.105000">Exactly.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1840.165000" data-stop="1842.007000"><strong class="speaker-name">Sacha:</strong>  Charlie says, "The leverage of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1842.047000" data-stop="1844.050000">blogging is unique in the Emacs community.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1844.090000" data-stop="1846.393000">Incredibly supportive, knowledgeable, and social</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1846.453000" data-stop="1847.154000">group of people."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1847.355000" data-stop="1850.499000">That's another encouragement to go try it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1851.140000" data-stop="1852.101000">That is all good.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1852.682000" data-stop="1854.584000">In fact, there are a few days left in this May</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1854.624000" data-stop="1857.668000">carnival for "May I Recommend."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1857.708000" data-stop="1859.631000">If other people have recommendations, I'd love to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1859.671000" data-stop="1860.352000">hear about them too.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1861.153000" data-stop="1866.660000">Okay, so let's talk about... Actually, what do</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1866.680000" data-stop="1867.281000">you want to talk about?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1867.621000" data-stop="1868.923000">What do you want to talk about?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="1869.494000" data-stop="1872.261000"><strong class="speaker-name">Prot:</strong>  Let's go and do something with the power</span> <span class="audio-time caption" data-speaker="Prot" data-start="1872.382000" data-stop="1873.063000">users.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1876.000000">31:16</span> <strong>Group: Power users</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="1876.753000" data-stop="1880.583000"><strong class="speaker-name">Prot:</strong> With the power users, of course, you have a group</span> <span class="audio-time caption" data-speaker="Prot" data-start="1880.743000" data-stop="1885.275000">that is, I would think, in some ways more diverse.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1885.255000" data-stop="1888.758000">Because of course there are different ways to</span> <span class="audio-time caption" data-speaker="Prot" data-start="1888.878000" data-stop="1892.762000">become a power user. One, for example, is using</span> <span class="audio-time caption" data-speaker="Prot" data-start="1893.062000" data-stop="1896.025000">Org more; another is using it as an IDE.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1896.145000" data-stop="1900.289000">So the common thread I would say</span> <span class="audio-time caption" data-speaker="Prot" data-start="1900.529000" data-stop="1904.433000">here is that you are the kind of person who is</span> <span class="audio-time caption" data-speaker="Prot" data-start="1904.693000" data-stop="1907.275000">digging deep. That's what you are as a</span> <span class="audio-time caption" data-speaker="Prot" data-start="1907.335000" data-stop="1909.838000">power user. So if you want to become a power user,</span> <span class="audio-time caption" data-speaker="Prot" data-start="1910.438000" data-stop="1913.200000">you have embedded as skills</span> <span class="audio-time caption" data-speaker="Prot" data-start="1913.201000" data-stop="1917.467000">reading manuals and checking the source code, that sort of thing.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1917.468000" data-stop="1922.235000"><strong class="speaker-name">Sacha:</strong>  At this point, you're like, "Emacs is going to be my tool.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1922.275000" data-stop="1924.559000">There's a lot of depth to it."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1924.699000" data-stop="1927.243000">And this is where you start reading, okay, "How do</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1927.304000" data-stop="1928.065000">I use Org Mode?"</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1928.085000" data-stop="1931.651000">Or "How do I set up my IDE so that it's just the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1931.691000" data-stop="1933.133000">way that I want it?"</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1933.000000">32:13</span> <strong>Tip: Browse through package lists</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1933.113000" data-stop="1936.858000"><strong class="speaker-name">Sacha:</strong> For fun, I will sometimes look through the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1936.918000" data-stop="1940.041000">package lists just to see what's out there that I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1940.081000" data-stop="1941.303000">can easily reuse.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1941.703000" data-stop="1943.866000">But often, it isn't even a matter of adding</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1943.906000" data-stop="1945.768000">additional packages to your configuration.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1945.000000">32:25</span> <strong>Tip: Dive deeply into the packages you have: customization options, code, etc.</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1945.848000" data-stop="1947.931000"><strong class="speaker-name">Sacha:</strong> It could just be diving deeply into the ones that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1947.971000" data-stop="1951.135000">you do already have, looking for options, looking</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1951.235000" data-stop="1954.819000">for little things that you can toggle on and off,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1955.420000" data-stop="1958.624000">or considering how the different functions can be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1958.684000" data-stop="1960.386000">integrated into your workflow.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="1961.000000">32:41</span> <strong>Tip: find-library gets you to the source code, occur can help you browse it</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="1961.716000" data-stop="1963.882000"><strong class="speaker-name">Prot:</strong>  And to this end, I will add something</span> <span class="audio-time caption" data-speaker="Prot" data-start="1963.942000" data-stop="1966.189000">that I do frequently because it combines the</span> <span class="audio-time caption" data-speaker="Prot" data-start="1966.249000" data-stop="1968.515000">elements of what we have already covered, which</span> <span class="audio-time caption" data-speaker="Prot" data-start="1968.676000" data-stop="1970.762000">is M-x find-library.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1971.444000" data-stop="1973.249000">You select the package you are interested in.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1973.690000" data-stop="1977.160000">You go there, then you do M-x occur.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1977.140000" data-stop="1980.264000">And you search for defcustom with a parenthesis</span> <span class="audio-time caption" data-speaker="Prot" data-start="1980.324000" data-stop="1980.645000">in front.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1980.745000" data-stop="1982.227000">"(defcustom".</span> <span class="audio-time caption" data-speaker="Prot" data-start="1982.968000" data-stop="1985.050000">This will produce an occur buffer with all</span> <span class="audio-time caption" data-speaker="Prot" data-start="1985.070000" data-stop="1986.192000">the user options.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1986.212000" data-stop="1987.494000">So you do two things now.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1987.514000" data-stop="1989.917000">You learn about the user options, and you are</span> <span class="audio-time caption" data-speaker="Prot" data-start="1990.117000" data-stop="1992.180000">looking at some source code.</span> <span class="audio-time caption" data-speaker="Prot" data-start="1992.200000" data-stop="1995.704000">That's one way I</span> <span class="audio-time caption" data-speaker="Prot" data-start="1995.765000" data-stop="1997.166000">can start reading source code.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="1997.927000" data-stop="1999.830000"><strong class="speaker-name">Sacha:</strong>  This goes back to why we don't just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="1999.870000" data-stop="2002.073000">tell people... You don't like Customize,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2002.093000" data-stop="2004.676000">so the M-x customize + regular expression is off</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2004.716000" data-stop="2005.257000">your list.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2006.587000" data-stop="2007.589000">Just look at the source code.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2008.029000" data-stop="2008.790000"><strong class="speaker-name">Prot:</strong>  You'll be happier.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2008.811000" data-stop="2009.291000">Yeah, exactly.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2009.000000">33:29</span> <strong>Tip: You can also browse through Customize</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2009.952000" data-stop="2011.775000"><strong class="speaker-name">Sacha:</strong>  Browsing through Customize is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2011.875000" data-stop="2013.959000">also an option because it'll tell you about the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2014.019000" data-stop="2014.359000">things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2014.379000" data-stop="2016.583000">You don't have to use the Customize interface to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2017.765000" data-stop="2020.429000">set it, but I have come across very interesting</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2020.509000" data-stop="2022.452000">options that way, just clicking around.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2023.327000" data-stop="2025.950000"><strong class="speaker-name">Prot:</strong>  Yeah, for sure.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2025.970000" data-stop="2027.712000"><strong class="speaker-name">Sacha:</strong>  @gcentauri's like, yeah, I'm bored,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2027.812000" data-stop="2028.653000">M-x list-packages.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2028.000000">33:48</span> <strong>Tip: Have fun with randomness and serendipity</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2028.934000" data-stop="2030.556000"><strong class="speaker-name">Sacha:</strong> Sometimes I randomize these things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2030.596000" data-stop="2033.139000">I think for EmacsConf, either last year or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2033.179000" data-stop="2035.682000">the year before, we had random packages being</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2035.722000" data-stop="2037.564000">displayed as a screensaver.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2038.145000" data-stop="2039.686000">I know people have sometimes on their</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2039.746000" data-stop="2042.350000">dashboards, they'll display</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2042.370000" data-stop="2043.951000">random inspirational quotes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2044.132000" data-stop="2045.734000">It could be a random Emacs package.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2046.094000" data-stop="2048.857000">I think at one point I had it display random</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2049.217000" data-stop="2051.139000">interactive functions,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2051.120000" data-stop="2054.505000">just so I could stumble across</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2054.545000" data-stop="2055.428000">more commands.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2055.447000" data-stop="2058.433000">Taking advantage of serendipity can be a fun</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2058.473000" data-stop="2061.217000">way to squeeze in a little bit of learning.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2062.699000" data-stop="2066.065000"><strong class="speaker-name">Prot:</strong>  Nice, nice, yes.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2066.547000" data-stop="2067.188000">That's good.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2067.320000" data-stop="2069.181000"><strong class="speaker-name">Sacha:</strong>  All right, so Jason Torres says, "I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2069.202000" data-stop="2072.585000">use custom just to explore."</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2072.000000">34:32</span> <strong>Tip: Check out people's workflow descriptions and stories</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2072.766000" data-stop="2074.849000"><strong class="speaker-name">Sacha:</strong> Another recommendation I'd like to put in here is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2075.029000" data-stop="2077.172000">reading other people's workflow descriptions.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2077.232000" data-stop="2080.255000">Again, going back to blogs and videos and all of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2080.295000" data-stop="2080.514000">that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2080.936000" data-stop="2083.659000">It's because a lot of these things are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2083.719000" data-stop="2086.462000">not obvious from looking at the source code,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2086.822000" data-stop="2090.206000">but when somebody tells you a story about what</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2090.327000" data-stop="2093.190000">problem they had and how they combined pieces of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2093.250000" data-stop="2095.453000">different packages to solve a problem,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2095.719000" data-stop="2098.204000">then it becomes a lot more real.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2099.786000" data-stop="2101.629000"><strong class="speaker-name">Prot:</strong>  Yes.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2101.669000" data-stop="2105.235000">Plus, it puts you in the spirit of Emacs, which</span> <span class="audio-time caption" data-speaker="Prot" data-start="2105.455000" data-stop="2108.279000">is you can be creative and piece together</span> <span class="audio-time caption" data-speaker="Prot" data-start="2108.360000" data-stop="2111.024000">different elements of functionality and have a</span> <span class="audio-time caption" data-speaker="Prot" data-start="2111.064000" data-stop="2112.145000">workflow that works for you.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2115.851000" data-stop="2117.454000"><strong class="speaker-name">Sacha:</strong>  Let's try plugging in, re-plugging in my</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2117.494000" data-stop="2117.974000">webcam.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2117.994000" data-stop="2118.996000">Let's see what happens.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2119.737000" data-stop="2120.518000"><strong class="speaker-name">Prot:</strong>  Let's see, let's see.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2120.578000" data-stop="2121.660000">The moment of truth.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2122.214000" data-stop="2131.215000"><strong class="speaker-name">Sacha:</strong>  Everyone will just have to imagine my</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2131.415000" data-stop="2133.540000">eyebrows of agreement.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2136.355000" data-stop="2139.118000">Okay, so that's the power user.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2139.298000" data-stop="2141.701000">This is how you get even better at it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2142.000000">35:42</span> <strong>Resources: manuals, Mastering Emacs, Emacs Lisp Elements</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2142.301000" data-stop="2146.185000"><strong class="speaker-name">Sacha:</strong> I think Mastering Emacs would probably be like a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2146.225000" data-stop="2148.207000">book recommendation in this area.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2148.848000" data-stop="2151.591000">And for customizing Emacs and actually writing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2151.611000" data-stop="2154.173000">Emacs Lisp, there's your Emacs Lisp Elements book.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2154.914000" data-stop="2156.856000">What other things would you recommend aside from,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2157.036000" data-stop="2159.439000">yeah, read the intro to Emacs Lisp and the Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2159.459000" data-stop="2160.540000">Lisp Memo for fun?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2161.297000" data-stop="2163.761000"><strong class="speaker-name">Prot:</strong>  Of course, what you have listed there are</span> <span class="audio-time caption" data-speaker="Prot" data-start="2163.921000" data-stop="2164.642000">all useful.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2165.023000" data-stop="2166.985000">The other one would be in the spirit of what we</span> <span class="audio-time caption" data-speaker="Prot" data-start="2167.025000" data-stop="2168.748000">said earlier of trial and error.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2170.130000" data-stop="2173.635000">Learn how to, or rather get in the habit of</span> <span class="audio-time caption" data-speaker="Prot" data-start="2173.755000" data-stop="2175.318000">writing little snippets of code.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2175.778000" data-stop="2178.242000">They don't have to be the best code of your life.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2178.222000" data-stop="2181.227000">Just something that gets the job done. Of</span> <span class="audio-time caption" data-speaker="Prot" data-start="2181.267000" data-stop="2184.734000">course you can improve it later, but by getting in</span> <span class="audio-time caption" data-speaker="Prot" data-start="2184.774000" data-stop="2187.538000">the flow of writing your own code, eventually what</span> <span class="audio-time caption" data-speaker="Prot" data-start="2187.599000" data-stop="2190.444000">happens is you write better Emacs Lisp.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2190.504000" data-stop="2194.130000">You develop intuitions of what could go where, and</span> <span class="audio-time caption" data-speaker="Prot" data-start="2194.591000" data-stop="2197.075000">eventually, before you know it, you are better at</span> <span class="audio-time caption" data-speaker="Prot" data-start="2197.216000" data-stop="2199.420000">Emacs just because you were doing this little</span> <span class="audio-time caption" data-speaker="Prot" data-start="2199.460000" data-stop="2200.281000">routine.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2201.392000" data-stop="2210.824000"><strong class="speaker-name">Sacha:</strong>  Noticing the questions.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2210.904000" data-stop="2212.606000">This is also a skill.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2212.967000" data-stop="2214.969000">This is also something that you develop.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2215.730000" data-stop="2218.434000">A lot of times people do not even know what's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2218.534000" data-stop="2221.217000">possible because they're so used to just taking</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2221.257000" data-stop="2223.200000">for granted that this is a limitation of the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2223.280000" data-stop="2224.041000">system.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2224.612000" data-stop="2227.778000">So sometimes we have to see somebody else, you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2227.798000" data-stop="2230.483000">know, fly through the code without worrying about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2230.544000" data-stop="2232.507000">like, okay, I have to go do this and do that and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2232.547000" data-stop="2232.888000">whatever.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2233.690000" data-stop="2237.457000">Oh, somebody says it's OBS, thank you.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2237.808000" data-stop="2241.573000">@ashraz has pointed out that OBS has my webcam,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2241.593000" data-stop="2243.916000">which is why the browser couldn't find it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2244.437000" data-stop="2247.621000">So I will think with that some more, but in any</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2247.661000" data-stop="2248.522000">case, we will continue.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2249.000000">37:29</span> <strong>Skill: Figuring out what's possible and making a habit of writing tiny functions</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2249.323000" data-stop="2253.669000"><strong class="speaker-name">Sacha:</strong> Yes, so figuring out what is possible and then</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2253.989000" data-stop="2255.992000">writing a tiny function for it and developing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2256.032000" data-stop="2260.077000">that habit of not tolerating these little bits of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2260.138000" data-stop="2262.441000">friction, I think is a skill.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2262.681000" data-stop="2265.064000">It's a thing you can develop.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2265.000000">37:45</span> <strong>Skill: Being mindful of what you do over and over again</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="2265.685000" data-stop="2268.048000"><strong class="speaker-name">Prot:</strong>  Yeah, and another skill which is along</span> <span class="audio-time caption" data-speaker="Prot" data-start="2268.068000" data-stop="2270.371000">the lines of writing your own code but maybe also</span> <span class="audio-time caption" data-speaker="Prot" data-start="2270.431000" data-stop="2276.459000">a meta-skill is: be mindful of what you do</span> <span class="audio-time caption" data-speaker="Prot" data-start="2277.540000" data-stop="2278.581000">over and over again.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2279.042000" data-stop="2281.645000">For example, let's imagine now you have a command</span> <span class="audio-time caption" data-speaker="Prot" data-start="2281.685000" data-stop="2284.829000">that switches to the other window and then blinks</span> <span class="audio-time caption" data-speaker="Prot" data-start="2284.869000" data-stop="2286.271000">the cursor or whatever, right?</span> <span class="audio-time caption" data-speaker="Prot" data-start="2286.772000" data-stop="2288.614000">And these are two commands and you do them all</span> <span class="audio-time caption" data-speaker="Prot" data-start="2288.654000" data-stop="2288.975000">the time.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2288.995000" data-stop="2290.917000">You do the one, you do the other, okay?</span> <span class="audio-time caption" data-speaker="Prot" data-start="2290.897000" data-stop="2294.164000">Now you can write one command, which is a wrapper</span> <span class="audio-time caption" data-speaker="Prot" data-start="2294.224000" data-stop="2297.090000">of those two, and all it does is call</span> <span class="audio-time caption" data-speaker="Prot" data-start="2297.151000" data-stop="2299.736000">interactively the first, call interactively the</span> <span class="audio-time caption" data-speaker="Prot" data-start="2299.776000" data-stop="2302.783000">second. Just by piecing those together you</span> <span class="audio-time caption" data-speaker="Prot" data-start="2302.843000" data-stop="2306.070000">already have your own little command.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2306.000000">38:26</span> <strong>Tip: Keyboard macros can help you jumpstart custom functions</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2306.658000" data-stop="2309.502000"><strong class="speaker-name">Sacha:</strong>  Oh, I definitely want to point out here</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2309.522000" data-stop="2312.546000">that you can use keyboard macros to generate the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2312.687000" data-stop="2313.768000">Emacs Lisp for it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2313.808000" data-stop="2317.113000">So even if you're not that comfortable with Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2317.173000" data-stop="2319.156000">Lisp, or you don't remember what the keyboard</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2319.196000" data-stop="2322.921000">shortcuts do, you can record a keyboard macro.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2322.941000" data-stop="2324.724000">So you've definitely learned how to do that.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2325.104000" data-stop="2328.910000">And then you can get it to print out the Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2329.010000" data-stop="2332.615000">Lisp that the set of keyboard actions ran.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2332.595000" data-stop="2335.803000">Or at least the Emacs Lisp to repeat the same</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2335.883000" data-stop="2337.727000">keyboard shortcuts and then it will all figure it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2337.787000" data-stop="2338.509000">out.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2338.689000" data-stop="2339.471000">Anyway, so that's there.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2340.935000" data-stop="2345.024000">You can save that sequence of commands as a Lisp</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2345.084000" data-stop="2346.287000">function in your config.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2346.648000" data-stop="2348.472000">So that's one thing, using keyboard macros to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2348.512000" data-stop="2350.958000">jumpstart your Emacs Lisp.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2351.000000">39:11</span> <strong>Tip: Use C-h k (describe-key) to describe shortcuts or menu items</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2351.140000" data-stop="2354.344000"><strong class="speaker-name">Sacha:</strong> And the second thing is using C-h-K or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2354.404000" data-stop="2357.848000">Describe Key to see what a given keyboard</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2357.889000" data-stop="2360.972000">shortcut or menu item will actually run.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2361.653000" data-stop="2365.038000">So that's all very useful stuff for figuring out</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2365.058000" data-stop="2366.940000">the Emacs list to do something you're doing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2367.020000" data-stop="2367.661000">interactively.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2368.842000" data-stop="2371.706000"><strong class="speaker-name">Prot:</strong>  I think that's the most used help command</span> <span class="audio-time caption" data-speaker="Prot" data-start="2371.726000" data-stop="2372.507000">I do.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2372.791000" data-stop="2374.433000">C-h k.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2374.713000" data-stop="2376.355000">It's super useful all the time.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2376.415000" data-stop="2377.716000">It's very, very helpful.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2378.497000" data-stop="2382.000000">And not only you learn what command it calls, but</span> <span class="audio-time caption" data-speaker="Prot" data-start="2382.100000" data-stop="2384.903000">also in which key map it is bound.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2384.923000" data-stop="2388.647000">So for example, C-c C-c in an Org</span> <span class="audio-time caption" data-speaker="Prot" data-start="2388.707000" data-stop="2391.409000">buffer, it is telling you what the command is,</span> <span class="audio-time caption" data-speaker="Prot" data-start="2391.810000" data-stop="2393.672000">and it is telling you this command is bound in</span> <span class="audio-time caption" data-speaker="Prot" data-start="2393.712000" data-stop="2395.433000">the Org mode map.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2395.453000" data-stop="2397.455000">So if you want to change something, you know that</span> <span class="audio-time caption" data-speaker="Prot" data-start="2397.635000" data-stop="2399.978000">you also have to be mindful of the key map.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2400.058000" data-stop="2401.279000">So there is your key map.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2404.000000">40:04</span> <strong>Tip: You can set up M-x to show keyboard shortcuts too (Marginalia?)</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2404.432000" data-stop="2407.655000"><strong class="speaker-name">Sacha:</strong>  Yes, it tells you other shortcuts.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2408.636000" data-stop="2411.098000">Oh, and along those lines, one of the M-x</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2411.198000" data-stop="2416.483000">variants shows key bindings as well, which I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2416.523000" data-stop="2417.004000">recommend.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2417.244000" data-stop="2419.366000">If you're a power user, you'd like to become more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2419.386000" data-stop="2421.508000">of a power user, even a regular user, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2421.528000" data-stop="2423.990000">You want to start moving to using keyboard</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2424.030000" data-stop="2426.993000">shortcuts for your more common commands and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2427.253000" data-stop="2430.016000">setting up your M-x command completion so that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2430.136000" data-stop="2431.637000">it hints</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2431.617000" data-stop="2435.343000">at the keyboard shortcuts. Emacs by</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2435.363000" data-stop="2437.747000">default also tells you about it after you run a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2437.807000" data-stop="2440.652000">command that had a shortcut. But at least that way,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2440.692000" data-stop="2442.334000">when you're looking through the command list you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2442.374000" data-stop="2444.498000">can see, "Oh yeah, this has a shortcut!" And then you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2444.518000" data-stop="2447.222000">can maybe even cancel out of your M-x and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2447.362000" data-stop="2450.928000">practice using that shortcut right away.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2450.968000" data-stop="2452.090000"><strong class="speaker-name">Prot:</strong>  Exactly.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2452.323000" data-stop="2454.767000"><strong class="speaker-name">Sacha:</strong>  And along those lines, I like using Marginalia</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2454.988000" data-stop="2457.051000">and Consult because then I can see the command</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2457.091000" data-stop="2460.618000">descriptions alongside the command name.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2460.638000" data-stop="2462.140000">So there's a little bit more detail there.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2463.142000" data-stop="2464.785000"><strong class="speaker-name">Prot:</strong>  Yeah, I think you meant</span> <span class="audio-time caption" data-speaker="Prot" data-start="2464.805000" data-stop="2466.568000">Vertico and Marginalia.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2466.818000" data-stop="2467.619000"><strong class="speaker-name">Sacha:</strong>  Oh, yes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2467.739000" data-stop="2469.701000">It's one of those things, yes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2470.422000" data-stop="2471.463000">It just works with everything.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2472.525000" data-stop="2475.848000">So yes, Vertico for completions that show you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2476.009000" data-stop="2478.732000">a lot of detail, and then Marginalia to actually</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2478.812000" data-stop="2483.177000">show the thing on the side, which is helpful.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2483.237000" data-stop="2485.139000"><strong class="speaker-name">Prot:</strong>  Consult is wonderful as</span> <span class="audio-time caption" data-speaker="Prot" data-start="2485.179000" data-stop="2486.020000">well, of course.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2486.040000" data-stop="2486.260000"><strong class="speaker-name">Sacha:</strong>  Yes.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2486.000000">41:26</span> <strong>Resource: Emacs from Scratch series by System Crafters</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2486.521000" data-stop="2488.944000"><strong class="speaker-name">Sacha:</strong> @ashraz would like to recommend the Emacs from</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2489.004000" data-stop="2491.567000">Scratch series by System Crafters.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2491.607000" data-stop="2493.909000">They say it's a bit dated from 2020, but still</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2493.969000" data-stop="2495.391000">mostly relevant in general.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2495.877000" data-stop="2498.521000">There are a lot of video resources out there.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2502.226000" data-stop="2503.087000"><strong class="speaker-name">Prot:</strong>  That's good.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2503.848000" data-stop="2507.653000">2020, oh my goodness.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2507.893000" data-stop="2509.535000">It's been so long, I can't believe it.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2510.000000">41:50</span> <strong>Tip: Old tutorials can still be useful, although don't treat them as the sole source of truth (things may have changed since then)</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2510.076000" data-stop="2512.059000"><strong class="speaker-name">Sacha:</strong>  It's really interesting because I've</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2512.079000" data-stop="2515.443000">been trying to organize the tutorial resources</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2515.483000" data-stop="2518.187000">that people who are new to Emacs will come across.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2518.868000" data-stop="2522.753000">And a lot of times, some of the Org videos are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2523.074000" data-stop="2525.597000">from 10, 20 years ago.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2525.915000" data-stop="2526.876000">But they're still valid,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2527.377000" data-stop="2529.700000">so we have to make sure people don't immediately</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2529.740000" data-stop="2532.885000">get turned off by the date in the video.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2533.466000" data-stop="2535.308000">But at the same time, they can start to tell the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2535.349000" data-stop="2535.669000">difference.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2535.749000" data-stop="2539.835000">Okay, this stuff is still applicable.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2540.236000" data-stop="2543.620000">But this stuff over here, it needs to be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2543.660000" data-stop="2546.725000">translated into how you do it in modern times.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2546.985000" data-stop="2549.329000">It's a little challenging for people to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2549.389000" data-stop="2550.370000">navigate this.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2551.312000" data-stop="2553.937000"><strong class="speaker-name">Prot:</strong>  Which of course points to another meta</span> <span class="audio-time caption" data-speaker="Prot" data-start="2553.957000" data-stop="2557.543000">skill which is generally information related to</span> <span class="audio-time caption" data-speaker="Prot" data-start="2557.643000" data-stop="2560.829000">Emacs is useful and it will work long into the</span> <span class="audio-time caption" data-speaker="Prot" data-start="2560.889000" data-stop="2561.410000">future.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2562.432000" data-stop="2565.798000">But don't take a tutorial or a video as</span> <span class="audio-time caption" data-speaker="Prot" data-start="2565.818000" data-stop="2566.880000">the source of truth.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2566.900000" data-stop="2569.344000">Always use it as a proxy.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2569.364000" data-stop="2571.148000">Okay, I get the idea.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2571.188000" data-stop="2574.113000">Now I will have to check the documentation and so on.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2575.000000">42:55</span> <strong>Skill: Finding preferred resources</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2575.848000" data-stop="2580.594000"><strong class="speaker-name">Sacha:</strong>  I think that part of the learning</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2580.634000" data-stop="2583.618000">journey as a user is also finding your preferred</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2583.658000" data-stop="2584.619000">resources.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2584.639000" data-stop="2586.101000">A lot of times, you're not going to learn</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2586.201000" data-stop="2588.103000">everything the first time around.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2588.384000" data-stop="2590.506000">Everyone thinks in different ways.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2590.526000" data-stop="2593.810000">You do need to spend some time looking for the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2593.890000" data-stop="2596.854000">kinds of resources that jive with the way that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2596.914000" data-stop="2600.178000">you think, with the task that you want to do or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2600.198000" data-stop="2601.720000">the workflow you want to have.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2601.700000" data-stop="2604.383000">It's using the language at the right level</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2604.443000" data-stop="2605.624000">for you, et cetera, et cetera.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2606.225000" data-stop="2609.508000">Even knowing, going in, that you're not going</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2609.549000" data-stop="2612.832000">to find one-size-fits-all tutorial because Emacs</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2613.032000" data-stop="2616.516000">has so many different workflow possibilities...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2616.536000" data-stop="2619.659000">Spending some time to figure out what you like as</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2619.780000" data-stop="2622.723000">a tutorial or as a reference, and then going back</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2622.783000" data-stop="2626.967000">to that again and again as your understanding</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2627.027000" data-stop="2631.252000">develops, I think is a thing worth doing.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2632.430000" data-stop="2635.455000"><strong class="speaker-name">Prot:</strong>  Yes, exactly.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2635.496000" data-stop="2638.541000">That's the whole point of Emacs more broadly: that</span> <span class="audio-time caption" data-speaker="Prot" data-start="2639.643000" data-stop="2641.827000">it accommodates the different kinds of people</span> <span class="audio-time caption" data-speaker="Prot" data-start="2641.927000" data-stop="2645.594000">because it's so customizable. If something</span> <span class="audio-time caption" data-speaker="Prot" data-start="2645.674000" data-stop="2648.579000">doesn't work for you, don't try to force yourself</span> <span class="audio-time caption" data-speaker="Prot" data-start="2648.639000" data-stop="2652.306000">to work the way it is. Rather, change Emacs to work</span> <span class="audio-time caption" data-speaker="Prot" data-start="2652.366000" data-stop="2652.500000">the way you think.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2652.000000">44:12</span> <strong>Tip: If you find your tribe, look for ways to keep in touch with them</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2652.501000" data-stop="2656.834000"><strong class="speaker-name">Sacha:</strong>  On a meta note,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2657.236000" data-stop="2660.082000">finding people who think the kind of way</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2660.122000" data-stop="2664.711000">you do is super helpful, like the tribe within</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2664.751000" data-stop="2665.232000">the tribe.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2667.717000" data-stop="2669.781000">For example, you've got this cluster of people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2669.861000" data-stop="2672.426000">who like using Denote because their brain works</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2672.466000" data-stop="2674.650000">the same way that yours does when it comes to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2674.730000" data-stop="2677.135000">filing their notes.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2677.115000" data-stop="2682.163000">Once you find that connection, finding ways to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2682.203000" data-stop="2684.386000">keep up with what those people are doing, and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2684.486000" data-stop="2687.911000">often this is RSS because that's a great way to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2688.252000" data-stop="2690.916000">get the updates without getting buried in email.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2691.937000" data-stop="2694.761000">That can be a great way to keep stumbling across</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2695.262000" data-stop="2697.165000">things that might help you.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2698.394000" data-stop="2700.512000"><strong class="speaker-name">Prot:</strong>  Yes, that's a very good point.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2700.000000">45:00</span> <strong>Tip: Manage unequal RSS frequencies with folders or tags</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="2700.513000" data-stop="2704.103000"><strong class="speaker-name">Prot:</strong> On the topic of RSS, just to say something that I learned</span> <span class="audio-time caption" data-speaker="Prot" data-start="2704.323000" data-stop="2708.610000">many years ago the hard way: RSS works</span> <span class="audio-time caption" data-speaker="Prot" data-start="2708.751000" data-stop="2711.976000">best if you subscribe to resources that don't</span> <span class="audio-time caption" data-speaker="Prot" data-start="2712.096000" data-stop="2716.222000">post 30 or 50 or 100 articles a day.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2716.523000" data-stop="2718.907000">If you subscribe to the BBC or whatever,</span> <span class="audio-time caption" data-speaker="Prot" data-start="2719.227000" data-stop="2722.532000">that will not work because it will crowd out the</span> <span class="audio-time caption" data-speaker="Prot" data-start="2722.593000" data-stop="2724.756000">blog that posts once every month.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2725.192000" data-stop="2727.575000"><strong class="speaker-name">Sacha:</strong>  What I do with that is I have different folders.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2727.696000" data-stop="2729.999000"><strong class="speaker-name">Prot:</strong>  Folders, filters, etc.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2730.480000" data-stop="2732.002000"><strong class="speaker-name">Sacha:</strong>  Yeah, folders or tags or whatever.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2732.082000" data-stop="2735.888000">So all the microblogs or all the very prolific</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2735.928000" data-stop="2738.832000">things go into one folder, which I generally</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2738.932000" data-stop="2742.097000">ignore because it's hard to go through.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2742.117000" data-stop="2742.898000"><strong class="speaker-name">Prot:</strong>  Fair enough.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2743.098000" data-stop="2743.759000">Subscribe.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2744.240000" data-stop="2746.123000"><strong class="speaker-name">Sacha:</strong>  Yeah, the people who post once a day or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2746.343000" data-stop="2749.007000">once a week or once a month or once every blue</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2749.047000" data-stop="2751.610000">moon, then it's easier to keep up with them</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2751.651000" data-stop="2754.034000">because it's not buried in all of that stuff.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2755.448000" data-stop="2763.402000">You can look into your RSS readers to support for</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2764.444000" data-stop="2767.229000">keywords maybe in order to do some more filtering</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2767.490000" data-stop="2768.411000">and prioritization.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2768.672000" data-stop="2770.635000">This is one of the things that I've always</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2770.675000" data-stop="2775.043000">envied about people who use Gnus for reading RSS.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2775.023000" data-stop="2779.267000">Because there's nnrss. Then you can use Gnus</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2779.268000" data-stop="2784.133000">scoring to prioritize the RSS items automatically for you.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2784.134000" data-stop="2787.933000">But that's definitely a power user thing, because it's Gnus.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2787.934000" data-stop="2791.000000"><strong class="speaker-name">Prot:</strong>  I think that's a power user among power users.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2791.001000" data-stop="2792.948000">That's really an exception.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2793.000000">46:33</span> <strong>Tip: Doing more things in Emacs has compounding benefits</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2793.198000" data-stop="2795.482000"><strong class="speaker-name">Sacha:</strong>  Actually, that touches on an interesting thing</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2795.522000" data-stop="2799.830000">about becoming more of a power user of Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2799.890000" data-stop="2803.837000">If you let Emacs assimilate more of your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2803.877000" data-stop="2807.002000">life, if you start to use Emacs for more and more</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2807.103000" data-stop="2809.948000">things, you get not just linear improvements but</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2810.008000" data-stop="2812.973000">compounding ones as the things that you have can</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2813.033000" data-stop="2814.175000">interact with other things.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2814.616000" data-stop="2818.142000">Even just for the base case of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2818.122000" data-stop="2820.805000">if your to-do list is in Emacs and your coding is</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2820.865000" data-stop="2822.908000">in Emacs, then you can create to-do items that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2822.948000" data-stop="2825.771000">link to your code, all the way to if</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2825.791000" data-stop="2828.094000">your email is in Emacs, then you can make your</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2828.114000" data-stop="2830.717000">to-do refer to your email and stuff like that.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2832.259000" data-stop="2839.287000"><strong class="speaker-name">Prot:</strong>  Exactly. That's where it gets really powerful.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2839.327000" data-stop="2841.730000"><strong class="speaker-name">Sacha:</strong>  If you want to get even deeper into the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2841.770000" data-stop="2846.796000">power of Emacs, try to push more of your life into it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2846.978000" data-stop="2849.743000">I love seeing the things that people do with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2850.023000" data-stop="2853.249000">browsing the web in Emacs.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2855.192000" data-stop="2857.316000">What kinds of things do you do in Emacs that make</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2857.356000" data-stop="2859.499000">you go like, this is where the power</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2859.640000" data-stop="2862.304000">of having everything together works out really well.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2863.060000" data-stop="2865.943000"><strong class="speaker-name">Prot:</strong>  You already mentioned them, like email in</span> <span class="audio-time caption" data-speaker="Prot" data-start="2865.963000" data-stop="2869.587000">Emacs together with your agenda, but also Dired,</span> <span class="audio-time caption" data-speaker="Prot" data-start="2869.688000" data-stop="2873.612000">because you can mark files and attach them to the</span> <span class="audio-time caption" data-speaker="Prot" data-start="2873.672000" data-stop="2874.994000">message composition buffer.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2876.335000" data-stop="2881.641000">You can run a M-x shell and your three marked</span> <span class="audio-time caption" data-speaker="Prot" data-start="2881.701000" data-stop="2885.546000">files in Dired, you type w or 0 w and you get</span> <span class="audio-time caption" data-speaker="Prot" data-start="2885.586000" data-stop="2887.908000">their path and then you can do something with</span> <span class="audio-time caption" data-speaker="Prot" data-start="2887.968000" data-stop="2891.953000">them from a shell, if you cannot do it directly from</span> <span class="audio-time caption" data-speaker="Prot" data-start="2891.933000" data-stop="2893.857000">calling a shell command from Dired.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2894.217000" data-stop="2895.861000">There are many ways like that.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2895.961000" data-stop="2898.786000">The keyboard macros where you can jump</span> <span class="audio-time caption" data-speaker="Prot" data-start="2898.806000" data-stop="2901.191000">from a Dired buffer to a shell buffer, or</span> <span class="audio-time caption" data-speaker="Prot" data-start="2901.953000" data-stop="2904.458000">from one buffer to another.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2904.478000" data-stop="2906.441000">All these little things.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2907.123000" data-stop="2909.447000">For me, it's very powerful.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2909.788000" data-stop="2911.832000">You use it all the time.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2911.000000">48:31</span> <strong>Tip: Learn to think of it as just text</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="2911.812000" data-stop="2913.615000"><strong class="speaker-name">Prot:</strong> At some point, you don't even think about it.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2913.635000" data-stop="2917.122000">It's just text laid out in</span> <span class="audio-time caption" data-speaker="Prot" data-start="2917.262000" data-stop="2919.627000">windows, each of which shows a buffer.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2919.647000" data-stop="2922.512000">So at some point, it doesn't matter if it's email</span> <span class="audio-time caption" data-speaker="Prot" data-start="2922.772000" data-stop="2924.556000">or programming or prose.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2924.636000" data-stop="2926.399000">At some point, they are all the same.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2926.419000" data-stop="2927.982000">So it doesn't matter at all.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2928.738000" data-stop="2932.163000"><strong class="speaker-name">Sacha:</strong>  Developing that mindset of "it's just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2932.223000" data-stop="2935.529000">text" and the facility for working with text, such</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2935.729000" data-stop="2938.834000">as keyboard macros, or being able to jump around,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2938.894000" data-stop="2940.997000">or writing your own functions to manipulate it, or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2941.097000" data-stop="2944.563000">even just using isearch to go through it or using</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2944.723000" data-stop="2946.346000">undo in different contexts.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2946.867000" data-stop="2949.471000">I think that's definitely something that people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2949.551000" data-stop="2953.056000">develop and when they develop that intuition, it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2953.357000" data-stop="2954.138000">really helps.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="2955.333000" data-stop="2958.377000"><strong class="speaker-name">Prot:</strong>  Yes, exactly. In the</span> <span class="audio-time caption" data-speaker="Prot" data-start="2958.417000" data-stop="2961.301000">beginning you won't think about those linkages.</span> <span class="audio-time caption" data-speaker="Prot" data-start="2961.341000" data-stop="2965.026000">They won't be obvious to you. But just be mindful</span> <span class="audio-time caption" data-speaker="Prot" data-start="2965.046000" data-stop="2968.510000">that they are there. They are possible. As you</span> <span class="audio-time caption" data-speaker="Prot" data-start="2968.650000" data-stop="2972.275000">use Emacs, at some point you just feel naturally</span> <span class="audio-time caption" data-speaker="Prot" data-start="2972.335000" data-stop="2974.398000">about them, and they happen. You're like, oh</span> <span class="audio-time caption" data-speaker="Prot" data-start="2974.418000" data-stop="2980.806000">yeah, of course that was always possible. Of</span> <span class="audio-time caption" data-speaker="Prot" data-start="2980.826000" data-stop="2982.909000">course, with the benefit of hindsight... In the</span> <span class="audio-time caption" data-speaker="Prot" data-start="2982.949000" data-stop="2985.272000">beginning, you will be like, "Wow, I can do that!"</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="2986.000000">49:46</span> <strong>Tip: Take notes along the way</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="2986.012000" data-stop="2988.115000"><strong class="speaker-name">Sacha:</strong>  That's the other reason why I want</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2988.135000" data-stop="2990.358000">to encourage people to take notes along the way,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2990.378000" data-stop="2992.020000">ideally sharing them, of course, but even just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2992.040000" data-stop="2994.463000">for yourself, because a lot of times you will get</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2994.483000" data-stop="2996.405000">to the point where this is just the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2996.425000" data-stop="2997.246000">way you've always done it.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="2998.027000" data-stop="3000.450000">On the other hand, if you had those notes as</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3000.490000" data-stop="3003.254000">you're figuring out how to do it, and you share</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3003.294000" data-stop="3004.656000">those notes, then you're leaving these</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3004.756000" data-stop="3007.359000">breadcrumbs for other people who are</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3007.579000" data-stop="3009.522000">traveling down the same or similar path.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3010.163000" data-stop="3012.165000">That's something that would</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3012.185000" data-stop="3013.487000">be very helpful for people.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3014.750000" data-stop="3016.192000"><strong class="speaker-name">Prot:</strong>  Yeah, exactly.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3016.000000">50:16</span> <strong>Tip: Explore different ways to navigate and act on things</strong></div><p></p><span class="audio-time caption" data-speaker="Prot" data-start="3016.312000" data-stop="3019.656000"><strong class="speaker-name">Prot:</strong> Even if you don't have external packages... For</span> <span class="audio-time caption" data-speaker="Prot" data-start="3019.717000" data-stop="3023.642000">example, a workflow that for me was so powerful</span> <span class="audio-time caption" data-speaker="Prot" data-start="3023.682000" data-stop="3025.304000">that I was like "Yeah, this is the way to go"</span> <span class="audio-time caption" data-speaker="Prot" data-start="3026.465000" data-stop="3030.230000">involved the grep and then editing the grep</span> <span class="audio-time caption" data-speaker="Prot" data-start="3030.291000" data-stop="3030.671000">results.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3031.032000" data-stop="3034.456000">But even if you don't use a bespoke package for</span> <span class="audio-time caption" data-speaker="Prot" data-start="3034.496000" data-stop="3036.919000">that, which of course is also built into Emacs</span> <span class="audio-time caption" data-speaker="Prot" data-start="3036.939000" data-stop="3039.363000">now, the functionality, you can use the grep</span> <span class="audio-time caption" data-speaker="Prot" data-start="3039.403000" data-stop="3042.646000">results just as a way to jump to the result.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3042.706000" data-stop="3044.868000">If you hit RET, it takes you to the buffer</span> <span class="audio-time caption" data-speaker="Prot" data-start="3045.449000" data-stop="3047.290000">at the point where the result is.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3047.310000" data-stop="3049.352000">You can have a keyboard macro that jumps to</span> <span class="audio-time caption" data-speaker="Prot" data-start="3049.392000" data-stop="3051.955000">the result, makes some edit, goes back, jumps to</span> <span class="audio-time caption" data-speaker="Prot" data-start="3051.975000" data-stop="3053.736000">the next result and repeat, right?</span> <span class="audio-time caption" data-speaker="Prot" data-start="3054.657000" data-stop="3056.959000">You can do that even without the package.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3057.179000" data-stop="3061.183000">The point is that you can collect results and</span> <span class="audio-time caption" data-speaker="Prot" data-start="3061.363000" data-stop="3064.947000">edit them in like a second or a minute, whereas</span> <span class="audio-time caption" data-speaker="Prot" data-start="3065.007000" data-stop="3067.429000">you would need literal hours to do that</span> <span class="audio-time caption" data-speaker="Prot" data-start="3067.449000" data-stop="3068.770000">and it would be error-prone.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3069.000000">51:09</span> <strong>Tip: Learn to combine different building blocks</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3069.475000" data-stop="3072.279000"><strong class="speaker-name">Sacha:</strong>  Yeah, and this points to the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3072.319000" data-stop="3074.642000">skill of being able to see and work with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3074.702000" data-stop="3075.864000">different building blocks.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3076.365000" data-stop="3079.088000">You have a block for, this is how to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3079.189000" data-stop="3079.749000">navigate.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3080.330000" data-stop="3081.652000">There are different ways to navigate.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3081.692000" data-stop="3084.115000">You could navigate to something based on some</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3084.156000" data-stop="3086.158000">matching text, or you can navigate to something</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3086.198000" data-stop="3087.720000">based on a line.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3087.761000" data-stop="3090.905000">You can set up your windows</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3090.965000" data-stop="3093.348000">so that you can switch between windows or</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3093.388000" data-stop="3093.829000">whatever.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3094.113000" data-stop="3096.016000">Then if you can combine that with, okay,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3096.076000" data-stop="3097.819000">these are some building blocks for acting on</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3097.879000" data-stop="3100.784000">something, or this is how I can use the kill ring</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3100.844000" data-stop="3102.967000">to take it to... or this is how I can use</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3102.987000" data-stop="3106.072000">registers so that I can save some text or save a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3106.092000" data-stop="3107.755000">position or whatever else.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3107.775000" data-stop="3109.278000">The more of these building blocks that you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3109.298000" data-stop="3112.423000">can develop slowly, because being able to</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3112.503000" data-stop="3115.548000">internalize the concept takes time, then all</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3115.588000" data-stop="3117.491000">these different ways that you combine it to solve</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3117.551000" data-stop="3119.935000">a problem makes Emacs very powerful.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3121.433000" data-stop="3122.485000"><strong class="speaker-name">Prot:</strong>  Yeah, exactly.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3122.505000" data-stop="3124.225000">That's a good way to think of it, as building</span> <span class="audio-time caption" data-speaker="Prot" data-start="3124.286000" data-stop="3124.812000">blocks.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3126.817000" data-stop="3128.279000"><strong class="speaker-name">Sacha:</strong>  I don't know how people will do that</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3128.400000" data-stop="3131.424000">either, aside from read the manual for fun and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3131.485000" data-stop="3134.630000">watch Emacs videos and read other people's posts.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3137.194000" data-stop="3139.377000">Often I think, what if we make a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3139.438000" data-stop="3140.299000">skill tree, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3140.319000" data-stop="3141.861000">Because people like gamification...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3141.922000" data-stop="3143.845000">But then this is going to be a</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3143.925000" data-stop="3146.930000">really ridiculous, large skill tree with arrows</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3146.990000" data-stop="3148.092000">going all over the place.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3148.352000" data-stop="3150.195000"><strong class="speaker-name">Prot:</strong>  No, no, you don't want to do that.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3150.295000" data-stop="3152.038000">It will be the RPG that never ends.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3152.058000" data-stop="3153.280000">There is no final boss.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3154.407000" data-stop="3156.951000"><strong class="speaker-name">Sacha:</strong>  @yogi583 asks what is a built-in function's</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3157.011000" data-stop="3159.415000">name to edit grep result in Emacs?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3159.435000" data-stop="3160.937000"><strong class="speaker-name">Prot:</strong>  I don't know but what I usually do is...</span> <span class="audio-time caption" data-speaker="Prot" data-start="3160.957000" data-stop="3163.461000">Grep edit mode I think.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3163.481000" data-stop="3164.222000">It's new, right?</span> <span class="audio-time caption" data-speaker="Prot" data-start="3164.262000" data-stop="3164.723000">It's new.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3164.843000" data-stop="3167.267000">It's built into Emacs 31 I believe.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3167.000000">52:47</span> <strong>Tip: Get the hang of keybinding conventions</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3167.648000" data-stop="3174.038000"><strong class="speaker-name">Sacha:</strong>  What I think of it is I go to the grep</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3174.058000" data-stop="3176.541000">buffer and I press C-x C-q because that's the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3176.582000" data-stop="3178.845000">general "toggle read only"...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3178.825000" data-stop="3183.912000">That's another mental concept</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3183.952000" data-stop="3184.493000">there, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3184.673000" data-stop="3187.717000">Getting a sense of the key binding conventions</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3188.358000" data-stop="3192.464000">that might be translated into different actions</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3192.544000" data-stop="3193.525000">in different places.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3195.267000" data-stop="3196.769000"><strong class="speaker-name">Prot:</strong>  Yes.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3196.890000" data-stop="3201.836000">There is an annex to the Emacs Lisp manual, the</span> <span class="audio-time caption" data-speaker="Prot" data-start="3201.856000" data-stop="3203.899000">Emacs Lisp reference manual, which talks about</span> <span class="audio-time caption" data-speaker="Prot" data-start="3203.979000" data-stop="3206.823000">the key binding conventions, which is very useful</span> <span class="audio-time caption" data-speaker="Prot" data-start="3206.883000" data-stop="3208.225000">for people to read.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3208.205000" data-stop="3211.751000">Even after you read that, it's a little bit</span> <span class="audio-time caption" data-speaker="Prot" data-start="3211.811000" data-stop="3214.035000">hard to reason about the key bindings if you are</span> <span class="audio-time caption" data-speaker="Prot" data-start="3214.095000" data-stop="3216.439000">getting started, but trust the process.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3216.499000" data-stop="3219.083000">You will see the patterns as you go.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3219.103000" data-stop="3222.529000">Generally, you can expect C-x to be global key</span> <span class="audio-time caption" data-speaker="Prot" data-start="3222.569000" data-stop="3226.936000">bindings, and C-c followed by control something to</span> <span class="audio-time caption" data-speaker="Prot" data-start="3226.976000" data-stop="3229.200000">be major-mode-specific key bindings.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3229.619000" data-stop="3232.223000"><strong class="speaker-name">Sacha:</strong>  One of the things I like about reading</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3232.243000" data-stop="3234.286000">other people's configs is that they'll rebind</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3234.326000" data-stop="3237.290000">something and I'll be like, yeah, I can totally</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3237.350000" data-stop="3239.153000">take advantage of that keybind because I'm not</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3239.253000" data-stop="3240.655000">using the standard one as much.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3242.017000" data-stop="3244.120000"><strong class="speaker-name">Prot:</strong>  Let me tell you about one I used.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3244.160000" data-stop="3246.323000">Of course, there are many, but by default, you</span> <span class="audio-time caption" data-speaker="Prot" data-start="3246.363000" data-stop="3248.724000">close Emacs with C-x C-c.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3248.725000" data-stop="3250.269000"><strong class="speaker-name">Sacha:</strong>  Who closes Emacs?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3251.751000" data-stop="3255.477000"><strong class="speaker-name">Prot:</strong>  Yeah, people who make mistakes in life, such as</span> <span class="audio-time caption" data-speaker="Prot" data-start="3255.517000" data-stop="3256.318000">myself.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3257.193000" data-stop="3260.261000">So because I would fat finger that the whole</span> <span class="audio-time caption" data-speaker="Prot" data-start="3260.321000" data-stop="3264.632000">time, you want to unbind C-x C-c and then do C-x</span> <span class="audio-time caption" data-speaker="Prot" data-start="3264.732000" data-stop="3269.203000">C-c C-c then you can exit.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3270.847000" data-stop="3272.732000">I would do it by mistake the whole time and I</span> <span class="audio-time caption" data-speaker="Prot" data-start="3272.772000" data-stop="3274.476000">would destroy whatever I was working.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3274.962000" data-stop="3278.590000"><strong class="speaker-name">Sacha:</strong>  Yeah, key binding design is this</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3278.630000" data-stop="3280.794000">whole other thing that I haven't really mastered</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3280.854000" data-stop="3281.716000">myself either.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3282.338000" data-stop="3286.005000">We've talked before about making the key bindings</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3286.045000" data-stop="3286.526000">make sense.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3286.547000" data-stop="3288.350000">When they're mnemonic, they're easier for people</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3288.410000" data-stop="3289.252000">to remember, right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3290.154000" data-stop="3292.920000">But this is definitely something that I struggle with.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3293.744000" data-stop="3295.286000"><strong class="speaker-name">Prot:</strong>  So think of it this way, of course</span> <span class="audio-time caption" data-speaker="Prot" data-start="3295.326000" data-stop="3299.012000">assuming there is a space for it or you unbind</span> <span class="audio-time caption" data-speaker="Prot" data-start="3299.092000" data-stop="3299.833000">something.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3299.853000" data-stop="3304.480000">C-x something is a global key potentially with a</span> <span class="audio-time caption" data-speaker="Prot" data-start="3304.540000" data-stop="3306.042000">prefix, as a prefix.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3306.062000" data-stop="3311.070000">C-x r is a prefix, C-x p is a prefix and they</span> <span class="audio-time caption" data-speaker="Prot" data-start="3311.110000" data-stop="3313.153000">have global scope, right?</span> <span class="audio-time caption" data-speaker="Prot" data-start="3313.133000" data-stop="3315.377000">If you are doing something that is global in</span> <span class="audio-time caption" data-speaker="Prot" data-start="3315.457000" data-stop="3316.859000">nature, it should work everywhere.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3316.940000" data-stop="3319.123000">You may want to do the same if you are okay with</span> <span class="audio-time caption" data-speaker="Prot" data-start="3319.203000" data-stop="3321.287000">overriding default key bindings, right?</span> <span class="audio-time caption" data-speaker="Prot" data-start="3322.169000" data-stop="3324.653000">Otherwise, you want to do something that is</span> <span class="audio-time caption" data-speaker="Prot" data-start="3324.713000" data-stop="3325.635000">more specific.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3325.655000" data-stop="3328.960000">C-c C-something for a mode.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3328.980000" data-stop="3333.488000">Again, optionally overriding what a major mode is doing.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3333.856000" data-stop="3337.103000">Then you have to work with that.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3337.123000" data-stop="3338.145000">Use mnemonics.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3338.265000" data-stop="3339.728000">Use words that make sense.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3339.768000" data-stop="3342.434000">For example, C-s is the default key for</span> <span class="audio-time caption" data-speaker="Prot" data-start="3342.514000" data-stop="3342.995000">searching.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3343.917000" data-stop="3347.364000">M-s is the prefix for alternative search.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3347.464000" data-stop="3347.905000">Think of it.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3348.085000" data-stop="3349.247000">Alt-S, right?</span> <span class="audio-time caption" data-speaker="Prot" data-start="3349.267000" data-stop="3352.494000">All the alternative kind of searches, such as</span> <span class="audio-time caption" data-speaker="Prot" data-start="3352.875000" data-stop="3354.919000">M-s o, right?</span> <span class="audio-time caption" data-speaker="Prot" data-start="3354.899000" data-stop="3358.425000">So you can now think of M-s and then g would</span> <span class="audio-time caption" data-speaker="Prot" data-start="3358.465000" data-stop="3359.166000">be my grep.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3359.327000" data-stop="3362.312000">M-s and f would be my find and so on.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3362.372000" data-stop="3366.238000">You can think in concepts like that.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3366.000000">56:06</span> <strong>Tip: Use which-key for keybinding help</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3366.258000" data-stop="3368.362000"><strong class="speaker-name">Sacha:</strong>  When in doubt, keep which-key enabled</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3368.422000" data-stop="3370.766000">so then it will remind you at least of what else</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3370.806000" data-stop="3374.392000">you've had configured for that prefix.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3374.412000" data-stop="3376.175000">That's the other recommendation.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3376.275000" data-stop="3377.798000">which-key mode, it's built in now.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3377.818000" data-stop="3379.000000">Just go use it.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3380.650000" data-stop="3382.934000"><strong class="speaker-name">Prot:</strong>  Yeah, which-key mode is very useful.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3382.974000" data-stop="3386.159000">If you are using the Embark package, it has a key</span> <span class="audio-time caption" data-speaker="Prot" data-start="3386.260000" data-stop="3390.226000">that will take over C-h. So actually that works</span> <span class="audio-time caption" data-speaker="Prot" data-start="3390.287000" data-stop="3391.048000">even with default.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3391.068000" data-stop="3394.434000">If you type an incomplete key sequence, C-h will</span> <span class="audio-time caption" data-speaker="Prot" data-start="3394.774000" data-stop="3397.960000">produce a listing with all the keys that complete</span> <span class="audio-time caption" data-speaker="Prot" data-start="3398.020000" data-stop="3398.681000">that sequence.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3398.781000" data-stop="3400.664000">So it will be a help buffer that will tell</span> <span class="audio-time caption" data-speaker="Prot" data-start="3400.704000" data-stop="3403.990000">you, okay, C-x, C-h, for example, will list</span> <span class="audio-time caption" data-speaker="Prot" data-start="3404.150000" data-stop="3405.212000">everything that follows C-x.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3405.292000" data-stop="3408.708000">And it will name the command and all that.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3408.768000" data-stop="3411.213000">So that's also something to consider.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3411.233000" data-stop="3414.460000">I think if Embark were to add the</span> <span class="audio-time caption" data-speaker="Prot" data-start="3414.500000" data-stop="3417.847000">which-key functionality where it's like C-h on</span> <span class="audio-time caption" data-speaker="Prot" data-start="3417.887000" data-stop="3421.215000">a timer, I think then Embark would be a straight</span> <span class="audio-time caption" data-speaker="Prot" data-start="3421.335000" data-stop="3422.858000">upgrade over which-key.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3423.209000" data-stop="3424.491000">In that regard.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3425.252000" data-stop="3426.914000">So Omar, if you are listening...</span> <span class="audio-time caption" data-speaker="Prot" data-start="3427.094000" data-stop="3433.282000">Asking for a friend.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3439.370000" data-stop="3441.153000"><strong class="speaker-name">Sacha:</strong>  @gcentauri says, "I recommend learning</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3441.193000" data-stop="3443.776000">how to define a key map and put it under a leader key.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3443.916000" data-stop="3446.860000">I have M-m as my personal key map and then the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3446.920000" data-stop="3449.824000">things I find very useful I add to my key map."</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3449.804000" data-stop="3452.488000">For this one, I've been experimenting with</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3452.568000" data-stop="3454.952000">bind-key, which makes all of this stuff much</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3455.073000" data-stop="3457.697000">easier in terms of defining prefix key</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3457.797000" data-stop="3460.001000">and adding a docstring and all those other</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3460.081000" data-stop="3460.742000">lovely things.</span> <p></p><div class="transcript-heading"><span class="audio-time" data-start="3461.000000">57:41</span> <strong>Tip: Figure out your ergonomics</strong></div><p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3461.503000" data-stop="3463.887000"><strong class="speaker-name">Sacha:</strong> I like your other meta tip about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3464.348000" data-stop="3466.912000">experimenting with how your keyboard is set up.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3466.932000" data-stop="3469.023000">So for example, even on my laptop...</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3469.024000" data-stop="3470.137000">I have a ThinkPad.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3470.798000" data-stop="3473.362000">So even on my laptop keyboard, there's no QMK,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3473.422000" data-stop="3475.526000">but I can use Kanata, which you've also</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3475.586000" data-stop="3476.908000">recommended elsewhere.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3476.888000" data-stop="3479.912000">to try experimenting with one-shot modifiers and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3479.972000" data-stop="3481.694000">home row mods or other things like that that I</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3481.734000" data-stop="3482.074000">want to,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3482.735000" data-stop="3486.580000">making it easier to press key</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3486.620000" data-stop="3489.303000">bindings that have different modifiers.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3489.763000" data-stop="3492.006000">I don't want to have to press ctrl and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3492.066000" data-stop="3496.011000">shift and super all at the same time.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3496.952000" data-stop="3500.176000">If I set up one-shot modifiers, I can just</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3500.216000" data-stop="3503.520000">tap tap tap and it becomes easier to press.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3504.648000" data-stop="3507.732000"><strong class="speaker-name">Prot:</strong>  Yes, exactly. That opens up</span> <span class="audio-time caption" data-speaker="Prot" data-start="3507.792000" data-stop="3511.617000">a lot of possibilities in terms of mnemonics, but</span> <span class="audio-time caption" data-speaker="Prot" data-start="3511.677000" data-stop="3514.521000">also in terms of prefix combinations and all that.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3514.561000" data-stop="3516.867000">You can go a very long way.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3516.868000" data-stop="3519.147000"><strong class="speaker-name">Sacha:</strong>  And I think</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3519.167000" data-stop="3521.410000">there's a meta thing here</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3521.550000" data-stop="3525.475000">also about getting a sense of</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3526.838000" data-stop="3529.285000">what would make it easier for you to be</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3529.385000" data-stop="3531.712000">able to continue enjoying this long term?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3531.732000" data-stop="3534.460000">Because RSI is not conducive to enjoying</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3534.601000" data-stop="3535.383000">Emacs long term.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3536.266000" data-stop="3538.131000"><strong class="speaker-name">Prot:</strong>  No.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3538.685000" data-stop="3541.748000">For sure. Something that I think</span> <span class="audio-time caption" data-speaker="Prot" data-start="3541.849000" data-stop="3544.512000">I learned the hard</span> <span class="audio-time caption" data-speaker="Prot" data-start="3544.552000" data-stop="3548.296000">way through pain is that you want to consider</span> <span class="audio-time caption" data-speaker="Prot" data-start="3548.496000" data-stop="3552.561000">your desk, how you sit at the desk - you</span> <span class="audio-time caption" data-speaker="Prot" data-start="3552.601000" data-stop="3554.483000">want to consider everything, not just the keyboard.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3554.983000" data-stop="3557.106000">For example, I have</span> <span class="audio-time caption" data-speaker="Prot" data-start="3557.126000" data-stop="3561.171000">adopted a standing desk since forever. I</span> <span class="audio-time caption" data-speaker="Prot" data-start="3561.231000" data-stop="3563.393000">do that all the time. I never sit,</span> <span class="audio-time caption" data-speaker="Prot" data-start="3563.373000" data-stop="3565.636000">because it works better for me. I have the</span> <span class="audio-time caption" data-speaker="Prot" data-start="3565.676000" data-stop="3567.819000">keyboard set up the way that makes sense to me.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3567.919000" data-stop="3570.743000">I can write all day. It's</span> <span class="audio-time caption" data-speaker="Prot" data-start="3570.783000" data-stop="3572.966000">what I do. I don't have any pain. Whereas</span> <span class="audio-time caption" data-speaker="Prot" data-start="3573.026000" data-stop="3576.871000">before I would sit on an awkward chair, the</span> <span class="audio-time caption" data-speaker="Prot" data-start="3576.931000" data-stop="3580.035000">desk was not optimized, the keyboard was</span> <span class="audio-time caption" data-speaker="Prot" data-start="3580.055000" data-stop="3582.999000">definitely not something I had thought of, and I</span> <span class="audio-time caption" data-speaker="Prot" data-start="3583.079000" data-stop="3585.803000">had pain. It was really difficult, and I</span> <span class="audio-time caption" data-speaker="Prot" data-start="3585.843000" data-stop="3587.525000">reached the point where I couldn't write.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3588.206000" data-stop="3589.988000">I was like, okay, I have to quit.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3590.643000" data-stop="3595.327000"><strong class="speaker-name">Sacha:</strong>  If Emacs is something that pays off</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3595.387000" data-stop="3598.170000">better in the long term, it's good to have a long</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3598.190000" data-stop="3598.470000">term.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3602.975000" data-stop="3603.495000"><strong class="speaker-name">Prot:</strong>  Exactly.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3605.337000" data-stop="3607.098000"><strong class="speaker-name">Sacha:</strong>  Speaking of my very short term, in about</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3607.139000" data-stop="3610.362000">one minute, I'm going to go off and help with the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3610.382000" data-stop="3611.222000">kiddos' lunch break.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3611.823000" data-stop="3614.425000">I very much appreciated this brain dump.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3614.445000" data-stop="3615.066000">This is great.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3615.146000" data-stop="3618.049000">I'm going to do all the usual transcription and</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3618.149000" data-stop="3619.350000">things like that,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3619.330000" data-stop="3621.133000">start pulling out some of these ideas.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3621.573000" data-stop="3623.516000">Chat, if you found anything super interesting</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3623.536000" data-stop="3625.499000">that you would like fleshed out into a blog post,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3626.180000" data-stop="3626.601000">say it so</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3629.084000" data-stop="3631.568000">we know what to focus on for priorities,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3631.588000" data-stop="3631.788000">right?</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3632.469000" data-stop="3633.952000">This was a lot of fun.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3634.052000" data-stop="3637.457000">Are there any key recommendations you</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3637.497000" data-stop="3640.962000">want people to make sure they check out or is it</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3641.122000" data-stop="3642.604000">just generally like, everyone...?</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3642.624000" data-stop="3644.247000"><strong class="speaker-name">Prot:</strong>  No, I think what you have here is good</span> <span class="audio-time caption" data-speaker="Prot" data-start="3644.287000" data-stop="3647.211000">because, of course, you can always say more.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3647.191000" data-stop="3649.233000">So I will conclude with what I started.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3649.374000" data-stop="3652.057000">Less is more, seriously.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3652.077000" data-stop="3653.318000">For life, not just for email.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3654.039000" data-stop="3655.761000"><strong class="speaker-name">Sacha:</strong>  Your brain is surprisingly small.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3655.781000" data-stop="3659.085000">If you break what you learn down into tiny steps,</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3659.125000" data-stop="3661.968000">you have a higher chance of it actually sticking.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3661.988000" data-stop="3664.131000">Once you get something in, then it makes</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3664.812000" data-stop="3666.013000">things a little bit easier.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3666.093000" data-stop="3667.795000">You have a little bit more space to learn the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3667.875000" data-stop="3670.559000">next thing, and so on and so forth.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3670.579000" data-stop="3673.502000">Otherwise, if you bite off too much, you get</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3673.562000" data-stop="3674.363000">overwhelmed.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3675.153000" data-stop="3676.235000"><strong class="speaker-name">Prot:</strong>  Very nice, very nice.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3676.315000" data-stop="3680.123000">And that ties into the lunch break.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3680.143000" data-stop="3680.664000">Yes.</span> <p></p><span class="audio-time caption" data-speaker="Sacha" data-start="3680.684000" data-stop="3681.065000"><strong class="speaker-name">Sacha:</strong>  All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3681.566000" data-stop="3682.428000">Thank you so much.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3682.829000" data-stop="3686.196000">I will skedaddle and yeah, I will do all the</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3686.236000" data-stop="3686.998000">things afterwards.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3687.018000" data-stop="3689.743000">Thanks everyone also for dropping by and hanging</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3689.884000" data-stop="3690.024000">out.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3690.244000" data-stop="3690.605000">All right.</span> <span class="audio-time caption" data-speaker="Sacha" data-start="3690.725000" data-stop="3691.307000">See you around.</span> <p></p><span class="audio-time caption" data-speaker="Prot" data-start="3692.088000" data-stop="3692.469000"><strong class="speaker-name">Prot:</strong>  Take care.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3692.489000" data-stop="3692.870000">Take care.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3692.910000" data-stop="3693.210000">Goodbye.</span> <span class="audio-time caption" data-speaker="Prot" data-start="3693.231000" data-stop="3693.972000">Goodbye.</span></div>
<p></p>


<a name="end-yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend-transcript"></a></details>
</div>
</div>
<div id="outline-container-yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend-chat" class="outline-3">
<h3 id="yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend-chat"><a href="https://sachachua.com/blog/feed/atom/index.xml#yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend-chat">Chat</a></h3>
<div class="outline-text-3" id="text-yay-emacs-32-sacha-and-prot-talk-emacs-may-i-recommend-chat">
<div class="chat" id="org822cf6f">
<ul class="org-ul">
<li><span class="nick">ChristianTietze:</span> ​🥁</li>
<li><span class="nick">protesilaos:</span> ​Hello world!</li>
<li><span class="nick">MichaelVash7886:</span> ​hello Prot</li>
<li><span class="nick">ChristianTietze:</span> ​In (comparatively) ice cold Germany we had ~30ºC this week and there's Prot with 3 layers of clothes 🙂</li>
<li><span class="nick">chelmikador:</span> ​​Hello!!</li>
<li><span class="nick">gcentauri:</span> ​Hello!</li>
<li><span class="nick">gcentauri:</span> ​totally</li>
<li><span class="nick">gcentauri:</span> ​nerd sniping minefield</li>
<li><span class="nick">gcentauri:</span> ​Emacs gives us Discoverability, and learning which tools enhance it for you is really important. Consult for example, and Helpful</li>
<li><span class="nick">sachactube:</span> ​​<a href="https://pad.emacsconf.org/yay-emacs">https://pad.emacsconf.org/yay-emacs</a></li>
<li><span class="nick">gcentauri:</span> ​i was literally doing that last night before bed</li>
<li><span class="nick">gcentauri:</span> ​i came across the Forms library I had no idea existed</li>
<li><span class="nick">CharlieBaker707:</span> ​​edebug + ert tests changed the way I develop elisp! No longer flying blind 🤣</li>
<li><span class="nick">ChristianTietze:</span> ​end-to-end tmux snapshots &ndash; you can assert on the modeline contents and other 'ui' of Emacs too, at least in terminal rendition of course</li>
<li><span class="nick">gcentauri:</span> ​because in Lisp its lists all the way down :)</li>
<li><span class="nick">CharlieBaker707:</span> ​​something I love doing is, after I've learned that 1 function, at a later point I'll meta-x for that package's namespace, then embark-collect into a buffer and explore what other user-facing exist.</li>
<li><span class="nick">sachactube:</span> ​​ugh hang on</li>
<li><span class="nick">CharlieBaker707:</span> ​Stole that trick from Prot ;-)</li>
<li><span class="nick">ChristianTietze:</span> ​🎶</li>
<li><span class="nick">sachactube:</span> ​​hahaha, you can just keep braindumping tips while I panic</li>
<li><span class="nick">sachactube:</span> ​​I will continue to panic</li>
<li><span class="nick">blaiseutube:</span> ​​don't panic</li>
<li><span class="nick">CharlieBaker707:</span> ​we can hear you!</li>
<li><span class="nick">CharlieBaker707:</span> ​but not Prot :-D</li>
<li><span class="nick">blaiseutube:</span> ​​oooh much better!</li>
<li><span class="nick">yogi583:</span> ​​we cant hear prot</li>
<li><span class="nick">blaiseutube:</span> ​prot is too quiet</li>
<li><span class="nick">gcentauri:</span> ​@sachactube - prots audio is very low</li>
<li><span class="nick">renaudbussieres:</span> ​​Is Prot only in your headphones?</li>
<li><span class="nick">sachactube:</span> ​​I will look into that</li>
<li><span class="nick">blaiseutube:</span> ​his audio is completely different</li>
<li><span class="nick">chelmikador:</span> ​​now!</li>
<li><span class="nick">yogi583:</span> ​​we can hear him</li>
<li><span class="nick">blaiseutube:</span> ​yes!!!</li>
<li><span class="nick">CharlieBaker707:</span> ​​loud and clear Prot!</li>
<li><span class="nick">MichaelVash7886:</span> ​​all set now</li>
<li><span class="nick">gcentauri:</span> ​Yes!</li>
<li><span class="nick">gcentauri:</span> ​good!</li>
<li><span class="nick">blaiseutube:</span> ​perfect!</li>
<li><span class="nick">blaiseutube:</span> ​ooooh, Cyprus is nice</li>
<li><span class="nick">blaiseutube:</span> ​Massachusetts is also 20C</li>
<li><span class="nick">ashraz:</span> ​​Is prot's sound only clipping for me a bit or also for others?</li>
<li><span class="nick">MichaelVash7886:</span> ​​maybe a little but it's not bad on my end</li>
<li><span class="nick">sachactube:</span> ​​That was me because I panicked about audio, returned to normal levels now</li>
<li><span class="nick">CharlieBaker707:</span> ​​The leverage of blogging is unique in the Emacs community. Incredibly supportive, knowledgable, and social group of people.</li>
<li><span class="nick">gcentauri:</span> ​We always need beginners to show us where things actually DONT make sense! A beginners mind see's all possibilities</li>
<li><span class="nick">gcentauri:</span> ​yep. "i'm bored, M-x list-packages"</li>
<li><span class="nick">gcentauri:</span> ​yeah i use Custom just to explore</li>
<li><span class="nick">gcentauri:</span> ​Discoverability!</li>
<li><span class="nick">gcentauri:</span> ​(btw this is shoshin from elsewhere)</li>
<li><span class="nick">renaudbussieres:</span> ​​"M-x apropos-user-options" is another way to browser customizable options :)</li>
<li><span class="nick">gcentauri:</span> ​@sachactube we can see you in the lower right, you've somehow gone to having your video floating</li>
<li><span class="nick">ashraz:</span> ​​@sachactube Your webcam is shown as an overlay over the chat, which may be the reason why it cannot be shown a second time on Firefox</li>
<li><span class="nick">ashraz:</span> ​​*Chrome</li>
<li><span class="nick">blaiseutube:</span> ​​BRB</li>
<li><span class="nick">sachactube:</span> ​​thanks!</li>
<li><span class="nick">blaiseutube:</span> ​​&hellip;. seems like a "config profiler" would be handy, to produce a human readable summary of settings.</li>
<li><span class="nick">ashraz:</span> ​​I also liked the Emacs From Scratch series by System Crafters. It's a bit dated (from 2020), but still mostly relevant in general, IIRC.</li>
<li><span class="nick">ashraz:</span> ​​@blaiseutube Profiler as in loading time, or in "what is actually in that profile"?</li>
<li><span class="nick">gcentauri:</span> ​is that Marginalia?</li>
<li><span class="nick">ashraz:</span> ​​@gcentauri Aye, marginalia shows the shortcuts.</li>
<li><span class="nick">gcentauri:</span> ​not Marginalia</li>
<li><span class="nick">gcentauri:</span> ​i think maybe Vertico</li>
<li><span class="nick">ashraz:</span> ​​2020 predates the minad-stack (vertico, marginalia, orderless, consult, corfu), it used ivy, swiper and company.</li>
<li><span class="nick">ashraz:</span> ​​But the mindset is still in that series 🙂</li>
<li><span class="nick">valentinoslavkin6116:</span> ​​Yeah, emacs from scratch is pretty good. Maybe it could explain a bit more the language or the use-package macro, but it works regardless</li>
<li><span class="nick">MichaelVash7886:</span> ​yeah I haven't watched the series as so much changed since then</li>
<li><span class="nick">sachactube:</span> ​​blaiseutube config profiler sounds interesting, what did you have in mind?</li>
<li><span class="nick">yogi583:</span> ​​whats the builtin function's name to edit grep result in emacs?</li>
<li><span class="nick">gcentauri:</span> ​Need multiple skill trees</li>
<li><span class="nick">gcentauri:</span> ​different character classes</li>
<li><span class="nick">ashraz:</span> ​​@gcentauri Also different positions on the alignment chart.</li>
<li><span class="nick">bledley99:</span> ​​Lovely people, been watching/reading you two for years. Thanks for all you do. 🙌</li>
<li><span class="nick">gcentauri:</span> ​I recommend learning how to define a keymap and put it under a leader key. I have M-m as my "personal-keymap" and then the things i find very useful i add to my keymap</li>
<li><span class="nick">gcentauri:</span> ​and +1 which-key</li>
<li><span class="nick">ashraz:</span> ​​See `D.2 Key Binding Conventions` in the manual for the conventions (for package maintainers)</li>
<li><span class="nick">ashraz:</span> ​​*in the elisp manual, not the emacs one.</li>
<li><span class="nick">renaudbussieres:</span> ​​I find "leader key" strategies better too, for example the C-x keymap, displayed with which-key, is too crowded and diverse to make sense</li>
<li><span class="nick">gcentauri:</span> ​yes - i had to switch to xah-fly-keys because of RSI</li>
<li><span class="nick">gcentauri:</span> ​but Emacs can change and adapt to YOU! which is important</li>
<li><span class="nick">MichaelVash7886:</span> ​I want to look at Meow at some point for a leader key and modal editing</li>
<li><span class="nick">valentinoslavkin6116:</span> ​​Meow is really great</li>
</ul>

</div>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/05/may-28-sacha-and-prot-talk-emacs-may-i-recommend/index.org">View Org source for this post</a></div><p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F05%2Fmay-28-sacha-and-prot-talk-emacs-may-i-recommend%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></content>
		</entry><entry>
		<title type="html">2026-05-25 Emacs news</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/05/2026-05-25-emacs-news/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-05-25T16:45:39Z</updated>
    <published>2026-05-25T16:45:39Z</published>
    <category term="emacs" />
<category term="emacs-news" />
		<id>https://sachachua.com/blog/2026/05/2026-05-25-emacs-news/</id>
		<content type="html"><![CDATA[<p>
I liked the before/after snippets in <a href="https://skybert.net/llm/looking-closer-at-claude-generated-lisp-code/">Looking closer at Claude Generated Lisp Code</a>. (Spoiler: people write nicer code.)
</p>

<ul class="org-ul">
<li>Help wanted:
<ul class="org-ul">
<li><a href="https://pkal.sdf.org/gnu-elpa/">Demo site for a proposed re-design of the GNU ELPA</a> (<a href="https://yhetil.org/emacs-devel/87tss6z4c9.fsf@posteo.net/">emacs-devel</a>, <a href="https://www.reddit.com/r/emacs/comments/1tlnu7z/demo_site_for_a_proposed_redesign_of_the_gnu_elpa/">Reddit</a>) - feedback wanted</li>
</ul></li>
<li>Upcoming events (<a href="https://emacslife.com/calendar/emacs-calendar.ics">iCal file</a>, <a href="https://emacslife.com/calendar/">Org</a>):
<ul class="org-ul">
<li>Emacs Berlin: Emacs-Berlin Hybrid Meetup <a href="https://emacs-berlin.org/">https://emacs-berlin.org/</a> Wed May 27 1000 America/Vancouver - 1200 America/Chicago - 1300 America/Toronto - 1700 Etc/GMT - 1900 Europe/Berlin - 2230 Asia/Kolkata &ndash; Thu May 28 0100 Asia/Singapore</li>
<li>EmacsSF (in person): coffee.el in SF <a href="https://www.meetup.com/emacs-sf/events/314950692/">https://www.meetup.com/emacs-sf/events/314950692/</a> Sat May 30 1100 America/Los_Angeles</li>
<li>Emacs.si (in person): Emacs.si meetup #6 2026 (v #živo) <a href="https://dogodki.kompot.si/events/67d716c3-6c04-4530-9c1a-f67aa44d31bc">https://dogodki.kompot.si/events/67d716c3-6c04-4530-9c1a-f67aa44d31bc</a> Mon Jun 1 1900 CET</li>
<li>EmacsATX: Emacs Social <a href="https://www.meetup.com/emacsatx/events/314809959/">https://www.meetup.com/emacsatx/events/314809959/</a> Thu Jun 4 1600 America/Vancouver - 1800 America/Chicago - 1900 America/Toronto - 2300 Etc/GMT &ndash; Fri Jun 5 0100 Europe/Berlin - 0430 Asia/Kolkata - 0700 Asia/Singapore</li>
<li>M-x Research: TBA <a href="https://m-x-research.github.io/">https://m-x-research.github.io/</a> Fri Jun 5 0800 America/Vancouver - 1000 America/Chicago - 1100 America/Toronto - 1500 Etc/GMT - 1700 Europe/Berlin - 2030 Asia/Kolkata - 2300 Asia/Singapore</li>
</ul></li>
<li>Emacs configuration:
<ul class="org-ul">
<li><a href="https://rahuljuliato.com/posts/emacs-cache-paths">Rahul Juliato: Taming Emacs Cache and Temporary Files</a> (<a href="https://www.reddit.com/r/emacs/comments/1tkpeme/taming_emacs_cache_and_temporary_files/">Reddit</a>)</li>
<li><a href="https://codeberg.org/jamesendreshowell/emacs-config">jamesendreshowell/emacs-config: My public Emacs configuration files - Codeberg.org</a> (<a href="https://fediscience.org/@jameshowell/116632191942015853">@jameshowell@fediscience.org</a>)</li>
</ul></li>
<li>Emacs Lisp:
<ul class="org-ul">
<li><a href="https://hyperpolyglot.org/lisp">Lisp: Common Lisp, Racket, Clojure, Emacs Lisp - Hyperpolyglot</a> (<a href="https://news.ycombinator.com/item?id=48184322">HN</a>, <a href="https://lobste.rs/s/dg2sx7/hyperpolyglot_lisp_common_lisp_racket">lobste.rs</a>)</li>
</ul></li>
<li>Appearance:
<ul class="org-ul">
<li><a href="https://jamesendreshowell.com/2026-05-23-match-emacs-and-gnome-light-dark-theme.html">James Endres Howell: Match Emacs and GNOME light/dark theme</a></li>
<li><a href="https://protesilaos.com/codelog/2026-05-21-emacs-ef-arcadia-ef-atlantis-themes/">Protesilaos: Emacs: ef-arcadia and ef-atlantis are part of the ef-themes</a></li>
</ul></li>
<li>Navigation:
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1tig5pq/til_setting_line_number_type_to_visual_fixes/">TIL: setting line number type to "visual" fixes relative jumping on wrapped lines</a></li>
</ul></li>
<li>TRAMP:
<ul class="org-ul">
<li><a href="https://mastodon.uno/@cidra/116634501697266694">Using TRAMP to compile in toolbox (@cidra@mastodon.uno)</a></li>
</ul></li>
<li>Dired:
<ul class="org-ul">
<li><a href="https://mbork.pl/2026-05-18_Marking_today%e2%80%99s_files_in_Dired">Marcin Borkowski: Marking today’s files in Dired</a> (<a href="https://irreal.org/blog/?p=13818">Irreal</a>)</li>
</ul></li>
<li>Writing:
<ul class="org-ul">
<li><a href="https://taonaw.com/2026/05/24/i-wrote-about-harper-before.html">TAONAW: Checking grammar with Harper</a></li>
</ul></li>
<li>Denote:
<ul class="org-ul">
<li><a href="https://protesilaos.com/codelog/2026-05-20-emacs-denote-4-2-0/">Protesilaos: Emacs: Denote version 4.2.0</a></li>
</ul></li>
<li>Org Mode:
<ul class="org-ul">
<li><a href="https://list.orgmode.org/CH3PR84MB3424DDF3E642AB403B70D177C50F2@CH3PR84MB3424.NAMPRD84.PROD.OUTLOOK.COM">Org Mode requests: [RFC] org-agenda log-mode is very confusing</a></li>
<li><a href="https://list.orgmode.org/CAL1eYuL+WKh3ST3tP8AT-QVnn41Mi_OsPUwOGa4S=BzvAbB03A@mail.gmail.com">Org Mode requests: [FR] support footnote inline displaying &amp; navigation</a></li>
<li><a href="https://whhone.com/posts/refining-org-mode-deadlines/">Wai Hon: Refining Org-mode Deadlines</a></li>
<li><a href="https://www.youtube.com/watch?v=fpnIzpWVJaQ">You can do what with org agenda?</a> (08:54)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1tjypp3/how_i_finally_his_stars_in_front_of_org_headings/">How I finally hid stars in front of org headings while also using org-indent</a></li>
<li><a href="https://www.naiquev.in/tagref-can-now-be-used-with-org-mode-files.html">Vineet Naik: tagref can now be used with org-mode files</a></li>
<li><a href="https://kumakichi.github.io/org-github-pages.html">build blog with orgmode and github pages</a> (<a href="https://hachyderm.io/@lobocode/116625037395300845">@lobocode@hachyderm.io</a>)</li>
<li><a href="https://www.chiply.dev/post-annotate-in-place">Annotate-in-Place Notes with Emacs and org-remark</a> (<a href="https://www.youtube.com/watch?v=ilZsWEka8JM">YouTube</a> 18:15, <a href="https://www.reddit.com/r/orgmode/comments/1tkh2d2/annotateinplace_notes_with_emacs_and_orgremark/">r/orgmode</a>, <a href="https://www.reddit.com/r/emacs/comments/1tikch6/annotateinplace_notes_with_emacs_and_orgremark/">r/emacs</a>, <a href="https://news.ycombinator.com/item?id=48208982">HN</a>, <a href="https://irreal.org/blog/?p=13822">Irreal</a>)</li>
<li><a href="https://github.com/ganten7/navi">Navi - Personal Org-Roam Graph Window - Reads DB directly - Feedback?</a> (<a href="https://www.reddit.com/r/emacs/comments/1tgckvz/navi_obsidianstyle_orgroam_graph_viewer_native/">Reddit</a>)</li>
<li><a href="https://www.reddit.com/r/orgmode/comments/1tml0wz/orgroamgt_faster_node_search_and_richer_capture/">org-roam-gt: faster node search and richer capture targets for org-roam</a> (<a href="https://www.reddit.com/r/emacs/comments/1tml16p/orgroamgt_faster_node_search_and_richer_capture/">Reddit</a>)</li>
<li><a href="https://github.com/elij/grove-extra">grove-extra.el &ndash; some extras on top of grove.el (fa2 graph, md etc.)</a> (<a href="https://www.reddit.com/r/emacs/comments/1tj9ul1/groveextrael_some_extras_on_top_of_groveel_fa2/">Reddit</a>) - grove is a note-taking mode</li>
</ul></li>
<li>Completion:
<ul class="org-ul">
<li><a href="https://codeberg.org/Hyudoro/dl-completion.git">dl-completion: Custom completion-style</a> (<a href="https://www.reddit.com/r/emacs/comments/1tlnwkn/dlcompletion_custom_completionstyle/">Reddit</a>)</li>
<li><a href="https://github.com/kn66/vertico-carousel">vertico-carousel: keep the selected Vertico candidate on the first visible row</a> (<a href="https://www.reddit.com/r/emacs/comments/1tl20wj/verticocarousel_keep_the_selected_vertico/">Reddit</a>)</li>
</ul></li>
<li>Coding:
<ul class="org-ul">
<li><a href="https://ianyepan.github.io/posts/git-blame-emacs/">A small write-up of git blaming in Emacs</a> (<a href="https://www.reddit.com/r/emacs/comments/1tk5lzj/a_small_writeup_of_git_blaming_in_emacs/">Reddit</a>)</li>
<li><a href="https://blog.davep.org/2026/05/19/next-gh-pr-el-v1-0-0.html">Dave Pearson: next-gh-pr.el v1.0.0</a></li>
<li><a href="https://batsov.com/articles/2026/05/20/neat-a-language-agnostic-nrepl-client-for-emacs/">Bozhidar Batsov: neat: a language-agnostic nREPL client for Emacs</a></li>
<li><a href="https://www.reddit.com/r/emacs/comments/1thaonr/sdkmanel_perproject_sdkman_environments_in_emacs/">sdkman.el — per-project SDKMAN environments in Emacs</a></li>
<li><a href="https://www.cyan.sh/blog/posts/new-job-jira-integration.html">Jakub Nowak: New Job: Jira Integration</a></li>
</ul></li>
<li>Math:
<ul class="org-ul">
<li><a href="https://github.com/gongshangzheng/ratex.el">ratex.el: A live preview latex math package.</a> (<a href="https://www.reddit.com/r/emacs/comments/1tjl1yt/a_live_preview_latex_math_package/">Reddit</a>)</li>
</ul></li>
<li>Mail, news, and chat:
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=b7a0SsL1JV0">Doom Emacs Mail Sending and Python Way</a> (03:15)</li>
</ul></li>
<li>AI:
<ul class="org-ul">
<li><a href="https://skybert.net/llm/looking-closer-at-claude-generated-lisp-code/">Looking closer at Claude Generated Lisp Code | skybert.net</a> (<a href="https://hachyderm.io/@skybert/116619828225240155">@skybert@hachyderm.io</a>)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1tkn8sw/emacsclient_landed_in_gemini_cli_and_why_i_wont/">Emacsclient landed in Gemini CLI, and why I won't contribute to non-FOSS projects again</a></li>
<li><a href="https://codeberg.org/martenlienen/emcp">martenlienen/emcp: An MCP server for Emacs - Codeberg.org</a> (<a href="https://hachyderm.io/@martenlienen/116623077218961635">@martenlienen@hachyderm.io</a>)</li>
<li><a href="https://github.com/xenodium/agent-shell/pull/597">An experimental Markdown renderer by xenodium · Pull Request #597 · xenodium/agent-shell · GitHub</a> (<a href="https://bsky.app/profile/xenodium.bsky.social/post/3mmh4vexqsc2n">@xenodium.bsky.social</a>)</li>
</ul></li>
<li>Community:
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1tha5v9/fortnightly_tips_tricks_and_questions_20260519/">Fortnightly Tips, Tricks, and Questions — 2026-05-19 / week 20</a></li>
<li><a href="https://omidmash.de/blog#concerning-emacs">Concerning Emacs (and Jazz)</a></li>
<li><a href="https://martinsos.com/posts/may-recommend-emacs-home-base">"May I recommend thinking of Emacs as your Fortress of Solitude"</a> (<a href="https://www.reddit.com/r/emacs/comments/1tmc6vw/my_first_time_participating_in_emacs_carnival_may/">Reddit</a>)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1tihpn9/brazilians_in_the_community/">Brazilians in the community 🇧🇷</a> - organizing get-togethers or a communications channel?</li>
<li><a href="https://sachachua.com/blog/2026/05/emacs-chat-with-raymond-zeitler/">Sacha Chua: Emacs Chat 23: Emacs Chat with Raymond Zeitler</a> (<a href="https://www.youtube.com/watch?v=ro6BZI0Z64I">YouTube</a>, 58:44)</li>
<li><a href="https://toobnix.org/w/752ix2RNx5BijosuYtSGCv">#Emacs #Embark with Omar Antolin, Ramin Honary and Kent Pitman #lisp and more #interview #lispyGopherClimate - toobnix</a>  (1:12:40, <a href="https://www.reddit.com/r/emacs/comments/1th84qh/omar_antol%C3%ADn_camarenas_podcast_appearance_is/">Reddit</a>)</li>
<li><a href="https://vivekhaldar.com/articles/from-emacs-to-agents/">From Emacs to Agents</a> - Vivek Haldar shifting away from Emacs for now</li>
<li><a href="https://www.youtube.com/watch?v=sZpV5IIKHvs">Apropos with Bozhidar Batsov - YouTube</a> (<a href="https://hachyderm.io/@bbatsov/116605231009691248">@bbatsov@hachyderm.io</a>)</li>
<li><a href="https://kelar.org/~bandali/life/thinking-with-prot.html">Amin Bandali: Thinking about life - chat with Protesilaos</a> (<a href="https://protesilaos.com/commentary/2026-05-23-life-issues-and-philosophy-amin-bandali/">Prot</a>)</li>
</ul></li>
<li>Emacs development:
<ul class="org-ul">
<li><a href="https://yhetil.org/emacs-devel/8633zgu8e3.fsf@gnu.org/">Re: emacs-31 142b1e0d4c3: Fix Lisp injection via X-Draft-From in Gnus - Eli Zaretskii</a></li>
<li><a href="https://yhetil.org/emacs-devel/2b72377e-23b9-48ce-904e-4e6ff6a88eca@cs.ucla.edu/">Why braces instead of casts (Re: master 56ae704e5b2 1/7: Fix (ash -1 1) undefined behavior - Paul Eggert)</a></li>
</ul></li>
<li>Other:
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=4pvjwgvOtgA">Faça o Emacs olhar para o dinheiro usando o Embark</a> (15:44)</li>
<li><a href="https://meanwhiling.com/blog/2026-05-21-may-i-recommend-using-your-thumbs">May I recommend using your thumbs</a> (<a href="https://irreal.org/blog/?p=13827">Irreal</a>)</li>
<li><a href="https://khz.ac/software/i3-integration.html">my i3-emacs integration</a> (<a href="https://news.ycombinator.com/item?id=48252535">HN</a>) i3 is a window manager</li>
<li><a href="https://github.com/lucasec/emacs-caffeinate">caffeinate-mode: Prevent your system from sleeping using the native power assertion API in Emacs 31+</a> (<a href="https://www.reddit.com/r/emacs/comments/1tlqay6/caffeinatemode_prevent_your_system_from_sleeping/">Reddit</a>)</li>
<li><a href="https://juanjose.garciaripoll.com/blog/emacs-security-model/">Emacs Security Profiles: A Proposal</a> (<a href="https://www.reddit.com/r/emacs/comments/1tmlrk9/a_possible_security_layer_for_emacs/">Reddit</a>)</li>
</ul></li>
<li>New packages:
<ul class="org-ul">
<li><a target="_blank" href="https://melpa.org/#/clutch">clutch</a>: Interactive database client (MELPA)</li>
<li><a target="_blank" href="https://elpa.gnu.org/packages/ffs.html">ffs</a>: Form feed-separated plain text presentations (GNU ELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/fzf-native">fzf-native</a>: Fuzzy completion style (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/meshtastic">meshtastic</a>: Chat client for Meshtastic LoRa devices via serial (MELPA)</li>
<li><a target="_blank" href="https://melpa.org/#/use-package-x">use-package-x</a>: Additional keywords for use-package (MELPA,  <a href="https://www.reddit.com/r/emacs/comments/1tmlsg0/usepackagex_previously_usepackageextras_now/">Reddit</a>)</li>
</ul></li>
</ul>

<p>
Links from <a href="https://www.reddit.com/r/emacs">reddit.com/r/emacs</a>, <a href="https://www.reddit.com/r/orgmode">r/orgmode</a>, <a href="https://www.reddit.com/r/spacemacs">r/spacemacs</a>, <a href="https://mastodon.social/tags/emacs">Mastodon #emacs</a>, <a href="https://bsky.app/hashtag/emacs">Bluesky #emacs</a>, <a href="https://hn.algolia.com/?query=emacs&amp;sort=byDate&amp;prefix&amp;page=0&amp;dateRange=all&amp;type=story">Hacker News</a>, <a href="https://lobste.rs/search?q=emacs&amp;what=stories&amp;order=newest">lobste.rs</a>, <a href="https://programming.dev/c/emacs?dataType=Post&amp;page=1&amp;sort=New">programming.dev</a>, <a href="https://lemmy.world/c/emacs">lemmy.world</a>, <a href="https://lemmy.ml/c/emacs?dataType=Post&amp;page=1&amp;sort=New">lemmy.ml</a>, <a href="https://planet.emacslife.com">planet.emacslife.com</a>, <a href="https://www.youtube.com/playlist?list=PL4th0AZixyREOtvxDpdxC9oMuX7Ar7Sdt">YouTube</a>, <a href="http://git.savannah.gnu.org/cgit/emacs.git/log/etc/NEWS">the Emacs NEWS file</a>, <a href="https://emacslife.com/calendar/">Emacs Calendar</a>, and <a href="https://lists.gnu.org/archive/html/emacs-devel/2026-05">emacs-devel</a>. Thanks to Andrés Ramírez for emacs-devel links. Do you have an Emacs-related link or announcement? Please e-mail me at <a href="mailto:sacha@sachachua.com">sacha@sachachua.com</a>. Thank you!
</p>
<div><a href="https://sachachua.com/blog/2026/05/2026-05-25-emacs-news/index.org">View Org source for this post</a></div><p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F05%2F2026-05-25-emacs-news%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>]]></content>
		</entry>
</feed>