<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Emacs on Janusworx</title>
    <link>https://janusworx.com/tags/emacs/</link>
    <description>Recent content in Emacs on Janusworx</description>
    <image>
      <title>Janusworx</title>
      <url>https://janusworx.com/images/jw-logo.png</url>
      <link>https://janusworx.com/images/jw-logo.png</link>
    </image>
    <generator>Hugo -- 0.157.0</generator>
    <language>en</language>
    <lastBuildDate>Sun, 06 Jul 2025 08:36:44 +0530</lastBuildDate>
    <atom:link href="https://janusworx.com/tags/emacs/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Emacs Package Updation Checklist</title>
      <link>https://janusworx.com/work/emacs-package-updation-checklist/</link>
      <pubDate>Sun, 06 Jul 2025 08:36:44 +0530</pubDate>
      <guid>https://janusworx.com/work/emacs-package-updation-checklist/</guid>
      <description>Checklist for future, lost, Jason</description>
      <content:encoded><![CDATA[<figure class="align-center ">
    <img loading="lazy" src="/images/2024/emacs-logo.svg#center" width="500px"/> 
</figure>

<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<p>I’ve never updated my Emacs packages until recently, because Emacs is where <em>all</em> my writing happens, and so I’m justifiably paranoid.<br>
But then some packages stopped working, due to various circumstances<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> and an update solved it.</p>
<p>So I’ve decided to update my packages once a quarter, so that I don’t lose days yak shaving when something goes wrong and I handle breakage on my terms and not the machine’s.</p>
<p>As far as package management goes, I want to keep things simple.<br>
In fact, I still haven’t graduated to <a href="https://www.gnu.org/software/emacs/manual/html_mono/use-package.html"><code>use-package</code></a> or <a href="https://github.com/radian-software/straight.el"><code>straight.el</code></a> because my package needs are few and conservative<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>. And so, while there are <a href="https://github.com/rranelli/auto-package-update.el">automatic update options</a> out there, I’ll just stick to updating them manually, every quarter.</p>
<p>Ergo, this is the checklist I’ll use next time onwards …</p>
<ol>
<li>Stop emacs user service, <code>systemctl --user stop emacs</code></li>
<li>Backup emacs folder in <code>~/.config</code></li>
<li>Start emacs manually (not the service).</li>
<li><code>M-x package-refresh-contents</code></li>
<li><code>M-x package-upgrade-all</code></li>
<li>Problems? Quit emacs. Revert backup folder.</li>
<li>In the end, start emacs user sevice, <code>systemctl --user start emacs</code></li>
</ol>
<p>There’s an Org mode task, scheduled quarterly, so that I won’t forget.</p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

Feedback on this post?<br>
Mail me at <a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Emacs Package Updation Checklist
%22">feedback at this domain</a> or <a href="https://dc.janusworx.com/t/emacs-package-updation-checklist
">continue the discourse here</a>.
<br>

<br>

P.S. Subscribe to my <a href="https://janusworx.com/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<hr>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>While I don’t want updated packages, I do want updated Emacs and that broke stuff 😂&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>The biggest change I forsee, is if Jetbrains ever turn evil and I have to move off their editors and subsequently need to use Emacs as an IDE&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>View Only the Day, With Org Agenda</title>
      <link>https://janusworx.com/work/view-only-day-with-org-agenda/</link>
      <pubDate>Mon, 20 Jan 2025 08:50:40 +0530</pubDate>
      <guid>https://janusworx.com/work/view-only-day-with-org-agenda/</guid>
      <description>Live in Day Tight Compartments; only worry about what’s happening today; that’s all you can control — Dale Carnegie</description>
      <content:encoded><![CDATA[<p>Org Mode, by default, shows me the whole week, when I pull up my agenda. That’s not how I work though. I normally look at the week on Monday mornings (or Sunday evenings) to plan out the week and then work everyday by just looking at what I ought to get done that particular day.</p>
<p>Like Dale Carnegie says,</p>
<blockquote>
<p>Shut off the past! Let the dead past bury its dead. Shut out the yesterdays which have lighted fools the way to dusty death.</p>
<p>The load of tomorrow, added to that of yesterday, carried today, makes the strongest falter. Shut off the future as tightly as the past.</p>
<p>The future is today. There is no tomorrow. The day of man&rsquo;s salvation is now.</p>
<p>Waste of energy, mental distress, nervous worries dog the steps of a man who is anxious about the future. Shut close, then the great fore and aft bulkheads, and prepare to cultivate the habit of life of day-tight compartments.</p>
</blockquote>
<p>So I want then, my Org Mode to do show me, only the things, I have on my plate today.</p>
<p>And Org is nothing if not adaptable. <code>org-agenda-span</code> is the variable that controls what the Agends shows me. According to the docs,</p>
<blockquote>
<p>This variable can be set to any number of days you want to see by default in the agenda, or to a span name, such a <code>day</code>, <code>week</code>, <code>month</code> or <code>year</code>.</p>
</blockquote>
<p>So that’s what I did. This little snippet went into my <code>init</code> file</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-elisp" data-lang="elisp"><span style="display:flex;"><span><span style="color:#75715e">;; Set Agenda to show a day as the default timespan, instead of a week</span>
</span></span><span style="display:flex;"><span>(setq org-agenda-span <span style="color:#e6db74">&#39;day</span>)
</span></span></code></pre></div><p><br>

Et voilà!</p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

Feedback on this post?<br>
Mail me at <a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: View Only the Day, With Org Agenda
%22">feedback at this domain</a> <em>or</em> <a href="https://dc.janusworx.com/t/view-only-day-with-org-agenda
">continue the discourse here</a>.
<br>

<br>

P.S. Subscribe to my <a href="https://janusworx.com/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<hr>
]]></content:encoded>
    </item>
    <item>
      <title>More Espanso &amp; Emacs Shenanigans</title>
      <link>https://janusworx.com/work/more-espanso-emacs-shenanigans/</link>
      <pubDate>Sun, 19 Jan 2025 12:45:09 +0530</pubDate>
      <guid>https://janusworx.com/work/more-espanso-emacs-shenanigans/</guid>
      <description>Fixing my blog post, CTA snippet …</description>
      <content:encoded><![CDATA[<p><br>

<figure class="align-center ">
    <img loading="lazy" src="/images/2024/espanso.png#center"
         alt="Espanso Logo"/> 
</figure>
</p>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<p>Now that I use my local machine to draft all my posts, desktop Emacs makes everything easier … with one exception. It swallows up a lot of my Espanso expansions.</p>
<p>My current bugbear is that it will not render a <code>=</code> when expanding.<br>
I know this is entirely something that I brought on myself, and neither Emacs or Espanso in isolation will have issues.</p>
<p>My workaround after rummaging through Espanso’s documentation was to set the backend to use <code>xdotool</code>, in my config. (<code>~/.config/espanso/config/default.yml</code>)</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#f92672">x11_use_xdotool_backend</span>: <span style="color:#66d9ef">true</span>
</span></span></code></pre></div><p>One downside now is that it no longer <a href="https://espanso.org/docs/matches/basics/#cursor-hints">jumps back to a predefined location</a> in the snippets where I’ve defined such a thing. No matter. I use them rarely and I’ll figure something out later. (Alongside why desktop emacs won’t render markdown expansions sometimes as well)</p>
<p>For now, most of my expansions work. Hurrah!</p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

Feedback on this post?<br>
Mail me at <a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: More Espanso &amp; Emacs Shenanigans
%22">feedback at this domain</a> <em>or</em> <a href="https://dc.janusworx.com/t/more-espanso-emacs-shenanigans
">continue the discourse here</a>.
<br>

<br>

P.S. Subscribe to my <a href="https://janusworx.com/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<hr>
]]></content:encoded>
    </item>
    <item>
      <title>Need Day of Month Reminders in Org Mode? Emacs Sexp Diary Entries to the Rescue</title>
      <link>https://janusworx.com/personal/org-mode-emacs-diary-sexps/</link>
      <pubDate>Mon, 17 Jun 2024 15:08:40 +0530</pubDate>
      <guid>https://janusworx.com/personal/org-mode-emacs-diary-sexps/</guid>
      <description>It’s a floating celestial, no a diary float!</description>
      <content:encoded><![CDATA[<p><br>

<figure class="align-center ">
    <img loading="lazy" src="/images/2024/org-mode-diary-floats.jpg#center"/> 
</figure>
</p>
<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>This is how I imagine diary float entries in Emacs.<br>
Photo courtesy, <a href="https://unsplash.com/@noaheleazar?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash">noah eleazar</a> on <a href="https://unsplash.com/photos/books-on-white-wooden-shelf-9p6R1IDCXNg?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash">Unsplash</a></p>
</figcaption>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<p>I finally went ahead and read about what <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Sexp-Diary-Entries.html">Emacs Diary S-expressions</a> were.</p>
<p>Going back, a bit.<br>
I make heavy use of Org Mode’s <a href="https://orgmode.org/manual/Deadlines-and-Scheduling.html">deadline and scheduling</a> features.<br>
I put schedules and deadlines in lots of tasks across my ten or so org files, so that I can look at them every week, to decide what I’ll be doing this week as well as to review at the beginning of every month.<br>
To wit, there are plenty of tasks that repeat on a weekly and monthly cadence, and Org’s <a href="https://orgmode.org/manual/Repeated-tasks.html">repeaters</a>.</p>
<p>But<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>, there’s one kind of event I have, that Org doesn’t support quite well.<br>
If I want something on, let’s say the second Friday of every month, there’s no easy way to describe / do that with Org.<br>
Org defers to Emacs’ native <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Diary.html">Diary Mode</a> to do something like this.. Ok, not defers, but it supports Diary expression entries with a few caveats.<br>
Now those were scary when I first saw them, which is why I kicked the can down the road, and decided to just live with manually making entries for the second Friday of every month.<br>
A year of doing this, and I’ve finally had enough. So I finally went ahead and read about what <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Sexp-Diary-Entries.html">Emacs Diary S-expressions</a> were.</p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<a href="/images/2024/org-mode-emacs-diary-floats.jpg"><figure class="align-center ">
    <img loading="lazy" src="/images/2024/org-mode-emacs-diary-floats-s.jpg#center"/> 
</figure>
</a></p>
<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>Click the pic to see a larger version of the chicken scratch</p>
</figcaption>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<p>Only to realise, that they were not as scary as I feared, after close to a year of messing around with my Emacs config files. They look<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup> just like Emacs functions with arguments.</p>
<p>I scribbled one out the way, Org needs them written, by referring to the <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Sexp-Diary-Entries.html">Emacs help</a>.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-orgmode" data-lang="orgmode"><span style="display:flex;"><span>&lt;<span style="color:#e6db74">%%(diary-float t 5 2)</span>&gt;
</span></span></code></pre></div><p>I marked the sections out in the scrawly figure above.</p>
<ul>
<li><code>diary-float</code> seems to be the function that does all the magic and then I have three arguments</li>
<li>The first one, refers to the month by number. <code>8</code> will mean August. <code>t</code> will make things repeat every month.</li>
<li>The second argument is day of week. <code>0</code> being Sunday, and <code>6</code>, Saturday.</li>
<li>The third one refers to which week of the month. <code>2</code> in my case, means the second week of the month.</li>
</ul>
<p>So …</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-orgmode" data-lang="orgmode"><span style="display:flex;"><span>*<span style="font-weight:bold"> My super important task</span>
</span></span><span style="display:flex;"><span>  DEADLINE:  &lt;<span style="color:#e6db74">%%(diary-float t 3 2)</span>&gt;
</span></span></code></pre></div><p>shows up in my agenda as a task for the second Wednesday of every month!</p>
<figure class="align-center ">
    <img loading="lazy" src="/images/2024/org-mode-diary-floats-agenda.png#center"/> 
</figure>

<p>There are a couple of caveats to this approach.</p>
<ul>
<li>This is not as task, even though I write it as one. It behaves more like a calendar entry. It more or less, just shows up in the agenda and I have to look at it.</li>
<li>I can’t mark it as done and expect it to repeat, like a normal Org repeater. If I do that, the task is, uh <em>done</em> and then that’s that.</li>
</ul>
<p>Neither of these things bother me, because of the idiosyncratic way I drive my day.<br>
I normally review my daily agenda, and create a day plan for myself.<br>
Which means that I <em>copy</em> the repeater task into my daily agenda as a single task and mark the repeater as done. So with the weird way I work, writing it out as a diary sexp, actually saves me a step ❤️<br>
And my cranky brain can now heave a sigh of relief.<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup></p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

Feedback on this post? Mail me at <a href="mailto:feedback@janusworx.com?subject=%22Feedback on post: Need Day of Month Reminders in Org Mode? Emacs Sexp Diary Entries to the Rescue
%22">feedback at this domain</a>
<br>

<br>

P.S. Subscribe to my <a href="https://janusworx.com/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<hr>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>old folks know by now, there’s always a “but” or “however” coming&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>and probably are&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p><a href="https://youtu.be/_mXyXXYXwlQ">until next time</a>&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Note to Self, Linking to a Headline in an Org File</title>
      <link>https://janusworx.com/work/note-to-self-linking-to-a-headline-in-an-org-file/</link>
      <pubDate>Thu, 06 Jun 2024 17:31:37 +0530</pubDate>
      <guid>https://janusworx.com/work/note-to-self-linking-to-a-headline-in-an-org-file/</guid>
      <description>It ain’t that hard.</description>
      <content:encoded><![CDATA[<p>I did one of those periodic, empty your mind sessions today.<br>
Everything is now in a brain dump org file.<br>
And now, like a every good productivity system preaches, I want to review the dump periodically.<br>
There is a task for my miscellenea for e.g. Could I convert it to a link and have it open the file at that precise location?<br>
Turns out Org Mode links let me do just that.<br>
All I need to do, is first <em>“<a href="https://orgmode.org/manual/Handling-Links.html#Handling-Links-1">store a link</a>”</em> in Org parlance. I do that by going to my target file that has the dump (the bottom file in the screenshot), go to the section that I need linking to (in my case, Misc Brain Dump), and hit <code>C-c l</code></p>
<figure class="align-center ">
    <img loading="lazy" src="/images/2024/org-links-1.png#center"/> 
</figure>

<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<p>After which I go to the file which needs to contain my link, and select my text that I’ll want converted into a link (<em>“<a href="https://orgmode.org/manual/Handling-Links.html#index-C_002dc-C_002dl">inserting a link</a>”</em> in org speak. In my case, the top file in the screenshot below).<br>
I select the Misc Brain Dump part of the “Look at the Misc Brain Dump” task and hit<br>
<code>C-c C-l</code><br>
It then switches me to a buffer that shows the links that Org currently has stored, with the minibuffer prompting me to choose one</p>
<figure class="align-center ">
    <img loading="lazy" src="/images/2024/org-links-2.png#center"/> 
</figure>

<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<p>I use the arrow keys to choose the one I want, hit return and it creates the link for me.</p>
<figure class="align-center ">
    <img loading="lazy" src="/images/2024/org-links-3.png#center"/> 
</figure>

<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<p>Here, I’ve switched away from my brain dump. (I’ve closed the file in fact)</p>
<figure class="align-center ">
    <img loading="lazy" src="/images/2024/org-links-4.png#center"/> 
</figure>

<p>I click the link in my tasks file and …</p>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<p>It opens right up, at the exact location I want. Woohoo!</p>
<figure class="align-center ">
    <img loading="lazy" src="/images/2024/org-links-5.png#center"/> 
</figure>

<p>And just like everything else with Org, it’s plain, simple, elegant, text functionality.<br>
I examined the link and it was a borg standard Org link, with the link having the header tacked on the end, like so …<br>
<code>file:brain-dump.org::*Misc Brain Dump</code><sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

Feedback on this post? Mail me at <a href="mailto:feedback@janusworx.com?subject=%22Feedback on post: Note to Self, Linking to a Headline in an Org File
%22">feedback at this domain</a>
<br>

<br>

P.S. Subscribe to my <a href="https://janusworx.com/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<hr>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>which should have been evident when I chose the link to insert, but I only saw it and went Aha! much later 😂&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Ignoring Syncthing Conflict Files in the Org Agenda Folder</title>
      <link>https://janusworx.com/work/ignoring-syncthing-conflict-files-in-org-agenda-folder/</link>
      <pubDate>Sun, 26 May 2024 16:03:01 +0530</pubDate>
      <guid>https://janusworx.com/work/ignoring-syncthing-conflict-files-in-org-agenda-folder/</guid>
      <description>TLDR; I “wrote” a function to loop over a list, find certain files, then negate them.</description>
      <content:encoded><![CDATA[<p>Now that I have <a href="/blog/org-mode-clocking-in-and-out-of-tasks-on-task-state-changes/">the power of large language models</a>, in the palm of my hand …<br>
<br>

<figure class="align-center ">
    <img loading="lazy" src="/images/2024/he-man-i-have-the-power.gif#center"/> 
</figure>
</p>
<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>You just had to be there, to really appreciate this 😂<br>
Image, courtesy user <a href="https://makeagif.com/i/Mz4AjF">straiven on makeagif</a></p>
</figcaption>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

I decided to see, if it could help me solve one of my real pain points with Org Mode.<br>
I had asked for help <a href="https://toots.dgplug.org/@jason/112483224007964606">over on the fediverse</a>, after months of trial and error, on just how to fix this.<br>
The issue being, I needed a way to tell my Org Agenda, to ignore files with a certain pattern.</p>
<p>I have a folder (called <code>syncbox</code>) full of files, that Org Mode looks at to generate the agenda for me.<br>
Now these files are also synced via <a href="https://syncthing.net/">Syncthing</a> over to my phone, where another program called <a href="https://www.beorgapp.com/">Beorg</a> looks at them too and shows them as entries in my calendar, so that I don’t miss the really important things I need to do.</p>
<p>Functionally, all is well with this setup, except for one teensy thing.<br>
Every once in a while, when certain files are in use on both, my desktop and my phone, Syncthing will create conflicting copies of said files in use.<br>
This happens most often, with my <code>tasks.org</code> file.<br>
Once it conflicts, my <code>syncbox</code> gets full with files like,<br>
<code>tasks.sync-conflict-20240408-041556-2TQWENY.org</code> and<br>
<code>tasks.sync-conflict-20240516-101335-2TQWENY.org</code> and<br>
<code>tasks.sync-conflict-20240520-053451-2TQWENY.org</code></p>
<p>What happens <em>then,</em> is that Org Agenda happily reads those files too, and I end up with lots of duplicated tasks.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p>
<p>As usual, tackling it by writing lisp, was an idea fraught with terror for me. I tried quite a bit and failed.<br>
My next plan of attack was that Org Agenda had a regex<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>, that it would process. My regex is better than my lisp, but even that was to no avail.<br>
Emacs regex does not support lookaheads / lookbehinds and I did not want to have some complicated pattern, that even I would not recognise, a few months down the line.<br>
In the meanwhile, Ihor told me to stop faffing about and <a href="https://emacs.ch/@yantar92/112484511603174787">just write</a> a function<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup></p>
<p>So I asked Claude to go do the work for me and I ended up with …</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(defun mjb/set-org-agenda-files-from-syncbox-directory ()
</span></span><span style="display:flex;"><span>  <span style="color:#e6db74">&#34;Set </span><span style="color:#e6db74">`org-agenda-files&#39;</span><span style="color:#e6db74"> to all Org files in the &#39;syncbox&#39; directory, excluding files with &#39;.sync-conflict&#39; in the name.&#34;</span>
</span></span><span style="display:flex;"><span>  (let ((syncbox-dir (<span style="color:#a6e22e">expand-file-name</span> <span style="color:#e6db74">&#34;syncbox&#34;</span> my-org-directory)))
</span></span><span style="display:flex;"><span>    (when (<span style="color:#a6e22e">file-directory-p</span> syncbox-dir)
</span></span><span style="display:flex;"><span>      (setq org-agenda-files
</span></span><span style="display:flex;"><span>            (<span style="color:#a6e22e">mapcar</span>
</span></span><span style="display:flex;"><span>             (lambda (file) (<span style="color:#a6e22e">expand-file-name</span> file syncbox-dir))
</span></span><span style="display:flex;"><span>             (seq-filter
</span></span><span style="display:flex;"><span>              (lambda (file) (not (string-match-p <span style="color:#e6db74">&#34;\\.sync-conflict&#34;</span> file)))
</span></span><span style="display:flex;"><span>              (<span style="color:#a6e22e">directory-files</span> syncbox-dir <span style="color:#66d9ef">t</span> <span style="color:#e6db74">&#34;\.org$&#34;</span>)))))))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>(mjb/set-org-agenda-files-from-syncbox-directory)
</span></span></code></pre></div><p>which I dutifully dumped into my <code>init</code> file.<br>
And that did the trick!</p>
<p>What did strike me, is that now that I am using this approach, my chicken and egg struggle is finally at an end. I don’t have to struggle to learn lisp to hack emacs which needs me to learn lisp.<br>
I realise it takes only a short time of dedicated effort. But right now, it is time I don’t have, and don’t know when I’ll get.<br>
So the new fangled LLM AIs can help me sort my Emacs pain points and I can learn Lisp at leisure.<br>
And I’ll use, <a href="https://framapiaf.org/@vindarel">friend on the fediverse</a>, Vincent Dardel’s <a href="https://www.udemy.com/course/common-lisp-programming/?couponCode=NVDPRODIN35">excellent course to do just that</a>.</p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

Feedback on this post? Mail me at <a href="mailto:feedback@janusworx.com">feedback at this domain</a>
<br>

<br>

P.S. Subscribe to my <a href="https://janusworx.com/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<hr>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>It drove me nuts in the beginning, when I did not know what was happening. I was like, I /just/ finished this task. And it’s popping up again?! Is my computer haunted?&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>defined in <code>org-agenda-file-regexp</code> with a default value of <code>&quot;\\`[^.].*\\.org\\'&quot;</code>&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>He did not quite put it that way. He was much kinder, obviously :)&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Search for Something! Kill the Line! In Emacs</title>
      <link>https://janusworx.com/personal/search-for-something-kill-the-line-in-emacs/</link>
      <pubDate>Sat, 25 May 2024 10:19:21 +0530</pubDate>
      <guid>https://janusworx.com/personal/search-for-something-kill-the-line-in-emacs/</guid>
      <description>Faster, Pussycat! Kill! Kill!</description>
      <content:encoded><![CDATA[<p>So I bought myself comics. And I was naively trying to count how many I got.<br>
And I went aha! I’ll paste the lines into Emacs and the lines numbers will tell me :)
So I just selected stuff off the web and put it in and …</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>Sheena: Queen of the Jungle, Vol. 2
</span></span><span style="display:flex;"><span>Dynamite Entertainment
</span></span><span style="display:flex;"><span>CBZ
</span></span><span style="display:flex;"><span>185.4 MB
</span></span><span style="display:flex;"><span>EPUB
</span></span><span style="display:flex;"><span>105.4 MB
</span></span><span style="display:flex;"><span>PDF
</span></span><span style="display:flex;"><span>439.9 MB
</span></span><span style="display:flex;"><span>Queen Sonja - Issue. #2
</span></span><span style="display:flex;"><span>Dynamite Entertainment
</span></span><span style="display:flex;"><span>CBZ
</span></span><span style="display:flex;"><span>17.7 MB
</span></span><span style="display:flex;"><span>EPUB
</span></span><span style="display:flex;"><span>16.6 MB
</span></span><span style="display:flex;"><span>PDF
</span></span><span style="display:flex;"><span>137.2 MB
</span></span><span style="display:flex;"><span>Vampirella: Throne of Skulls Vol 03
</span></span><span style="display:flex;"><span>Dynamite Entertainment
</span></span><span style="display:flex;"><span>CBZ
</span></span><span style="display:flex;"><span>229.3 MB
</span></span><span style="display:flex;"><span>EPUB
</span></span><span style="display:flex;"><span>135.9 MB
</span></span><span style="display:flex;"><span>PDF
</span></span><span style="display:flex;"><span>438.6 MB
</span></span><span style="display:flex;"><span>Red Sonja and the Ballad of the Red Goddess
</span></span><span style="display:flex;"><span>Dynamite Entertainment
</span></span><span style="display:flex;"><span>CBZ
</span></span><span style="display:flex;"><span>132.9 MB
</span></span><span style="display:flex;"><span>EPUB
</span></span><span style="display:flex;"><span>50.2 MB
</span></span><span style="display:flex;"><span>PDF
</span></span><span style="display:flex;"><span>376.8 MB
</span></span><span style="display:flex;"><span>Vampirella Strikes Vol 01
</span></span><span style="display:flex;"><span>Dynamite Entertainment
</span></span><span style="display:flex;"><span>CBZ
</span></span><span style="display:flex;"><span>106.4 MB
</span></span><span style="display:flex;"><span>EPUB
</span></span><span style="display:flex;"><span>118.7 MB
</span></span><span style="display:flex;"><span>PDF
</span></span><span style="display:flex;"><span>351.7 MB
</span></span><span style="display:flex;"><span>… really long list elided
</span></span></code></pre></div><p>And I go, Ugh! It’s Saturday! I’m too lazy to go selecting and deleting that cruft between my titles. Isn’t there something in Emacs that can help?<br>
Spoiler Alert: Of course there is! Meet <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Other-Repeating-Search.html#index-flush_002dlines"><code>flush-lines</code></a></p>
<p><code>M-x flush-lines</code> asks me for a regex pattern.<br>
I gave it <code>\ MB</code><sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> et voilà! Every line that had a space followed by <code>MB</code> disappeared!</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>Sheena: Queen of the Jungle, Vol. 2
</span></span><span style="display:flex;"><span>Dynamite Entertainment
</span></span><span style="display:flex;"><span>CBZ
</span></span><span style="display:flex;"><span>EPUB
</span></span><span style="display:flex;"><span>PDF
</span></span><span style="display:flex;"><span>Queen Sonja - Issue. #2
</span></span><span style="display:flex;"><span>Dynamite Entertainment
</span></span><span style="display:flex;"><span>CBZ
</span></span><span style="display:flex;"><span>EPUB
</span></span><span style="display:flex;"><span>PDF
</span></span><span style="display:flex;"><span>Vampirella: Throne of Skulls Vol 03
</span></span><span style="display:flex;"><span>Dynamite Entertainment
</span></span><span style="display:flex;"><span>CBZ
</span></span><span style="display:flex;"><span>EPUB
</span></span><span style="display:flex;"><span>PDF
</span></span><span style="display:flex;"><span>Red Sonja and the Ballad of the Red Goddess
</span></span><span style="display:flex;"><span>Dynamite Entertainment
</span></span><span style="display:flex;"><span>CBZ
</span></span><span style="display:flex;"><span>EPUB
</span></span><span style="display:flex;"><span>PDF
</span></span><span style="display:flex;"><span>Vampirella Strikes Vol 01
</span></span><span style="display:flex;"><span>Dynamite Entertainment
</span></span><span style="display:flex;"><span>CBZ
</span></span><span style="display:flex;"><span>EPUB
</span></span><span style="display:flex;"><span>PDF
</span></span><span style="display:flex;"><span>… long list elided
</span></span></code></pre></div><p>And so a few, rapid commands to excise lines with <code>Dynamite Entertainment</code>, <code>CBZ</code>, <code>EPUB</code> and <code>PDF</code> later …</p>
<pre tabindex="0"><code>Sheena: Queen of the Jungle, Vol. 2
Queen Sonja - Issue. #2
Vampirella: Throne of Skulls Vol 03
Red Sonja and the Ballad of the Red Goddess
Vampirella Strikes Vol 01

… still a long list, but exactly what I wanted :)
</code></pre><p>I love you, Emacs!</p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

Feedback on this post? Mail me at <a href="mailto:feedback@janusworx.com">feedback at this domain</a>
<br>

<br>

P.S. Subscribe to my <a href="https://janusworx.com/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<hr>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>the <code>\</code> followed by a space is just to demonstrate here that I put in a space. I just naively typed a space followed by MB, actually&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Org Mode Clocking in and Out of Tasks on Task State Changes</title>
      <link>https://janusworx.com/work/org-mode-clocking-in-and-out-of-tasks-on-task-state-changes/</link>
      <pubDate>Thu, 23 May 2024 19:03:13 +0530</pubDate>
      <guid>https://janusworx.com/work/org-mode-clocking-in-and-out-of-tasks-on-task-state-changes/</guid>
      <description>I finally turned to the dark side and used Claude to help me do my work</description>
      <content:encoded><![CDATA[<figure class="align-center ">
    <img loading="lazy" src="/images/2024/org-mode-unicorn.svg#center" width="500px"/> 
</figure>

<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>Logo courtesy, the <a href="https://orgmode.org/">Org Mode Website</a></p>
</figcaption>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<p>Lisp is on the list of things to learn someday.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup><br>
And in the meanwhile, I need to be able to hack Emacs to do the stuff I want.<br>
But also, there are a ton of other things, that are currently much, much higher on my list of priorities.<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup><br>
And while the community is <em><strong>extremely</strong></em> kind and generous, the expectation is that you need to put in the time and the work.<br>
Which I currently don’t have and can’t do.</p>
<p>And so, it finally happened.<br>
I signed up for a Claude account and told it to write me some lisp.</p>
<p>I am heavily Org Mode task driven, these days and I have a manual workflow that I need a teensy bit of help with.</p>
<ol>
<li>I start work on a task</li>
<li>I mark it as WORKING (and clock in manually)</li>
<li>I want to switch to another task</li>
<li>I mark my original task as WAITING (and clock out manually)</li>
<li>I then mark my new task as WORKING (and clock in manually)</li>
<li>After a while I switch to the original task, and clock in manually (after marking the current task as WAITING and clocking out there manually)</li>
</ol>
<p>What bugs me, is the clocking in and out, because …</p>
<ol>
<li>I tend to forget it, messing up all my clock times and …</li>
<li>because it is now becoming painful on my middle aged fingers<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup>,</li>
</ol>
<p>So, like I said, I prompted Claude to give me code that would clock me in automatically, whenever I changed state to WORKING and clock me out when I switched to WAITING<sup id="fnref:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup><br>
It spat out some code.<br>
I tried to reasonably guess and verify what it did.<br>
It looked ok.<br>
I tried it.<br>
It worked!<br>
And that’s that.<br>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>
</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 1
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 2
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 3
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 4
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 5
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 6
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 7
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 8
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f"> 9
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">10
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">11
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">12
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">13
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">14
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">15
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">16
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">17
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-elisp" data-lang="elisp"><span style="display:flex;"><span>(defun mjb/org-clock-in-when-task-state-changes-to-working ()
</span></span><span style="display:flex;"><span>  <span style="color:#e6db74">&#34;Clock in an Org mode task when the status is changed to &#39;WORKING&#39;.&#34;</span>
</span></span><span style="display:flex;"><span>  (when (and (<span style="color:#a6e22e">eq</span> major-mode <span style="color:#e6db74">&#39;org-mode</span>)
</span></span><span style="display:flex;"><span>             (<span style="color:#a6e22e">member</span> (<span style="color:#a6e22e">downcase</span> (or (org-get-todo-state) <span style="color:#e6db74">&#34;&#34;</span>)) <span style="color:#f92672">&#39;</span>(<span style="color:#e6db74">&#34;working&#34;</span>)))
</span></span><span style="display:flex;"><span>    (org-clock-in)))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>(defun mjb/org-clock-out-when-task-state-changes-to-waiting ()
</span></span><span style="display:flex;"><span>  <span style="color:#e6db74">&#34;Clock out an Org mode task when the status is changed to &#39;WAITING&#39;.&#34;</span>
</span></span><span style="display:flex;"><span>  (when (and (<span style="color:#a6e22e">eq</span> major-mode <span style="color:#e6db74">&#39;org-mode</span>)
</span></span><span style="display:flex;"><span>             (<span style="color:#a6e22e">member</span> (<span style="color:#a6e22e">downcase</span> (or (org-get-todo-state) <span style="color:#e6db74">&#34;&#34;</span>)) <span style="color:#f92672">&#39;</span>(<span style="color:#e6db74">&#34;waiting&#34;</span>)))
</span></span><span style="display:flex;"><span>    (org-clock-out)))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">;; These lines make the functions above, hook to Org’s state change mechanism.</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">;; So that everytime a task’s state changes, these functions are called</span>
</span></span><span style="display:flex;"><span>(add-hook <span style="color:#e6db74">&#39;org-after-todo-state-change-hook</span> <span style="color:#a6e22e">#&#39;</span>mjb/org-clock-in-when-task-state-changes-to-working)
</span></span><span style="display:flex;"><span>(add-hook <span style="color:#e6db74">&#39;org-after-todo-state-change-hook</span> <span style="color:#a6e22e">#&#39;</span>mjb/org-clock-out-when-task-state-changes-to-waiting)
</span></span></code></pre></td></tr></table>
</div>
</div><p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

Reminds me of the old adages about humans and bicycles being the fastest and humans and chess programs<sup id="fnref:5"><a href="#fn:5" class="footnote-ref" role="doc-noteref">5</a></sup>, being the best players.<sup id="fnref:6"><a href="#fn:6" class="footnote-ref" role="doc-noteref">6</a></sup><br>
All of it is good, if it aids me, and hopefully does not get in my way.</p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

Feedback on this post? Mail me at <a href="mailto:feedback@janusworx.com">feedback at this domain</a>
<br>

<br>

P.S. Subscribe to my <a href="https://janusworx.com/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<hr>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>soon&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>getting up to speed with the current devops/cloud landscape, for instance&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>Yes, I could reassign them to easier keys, but just having it done automatically is better&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:4">
<p>the task state switches are second nature and don’t bother me much&#160;<a href="#fnref:4" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:5">
<p>Centaurs, I think, the combination is called&#160;<a href="#fnref:5" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:6">
<p>and of course, the pilots and giant mechas in Pacific Rim&#160;<a href="#fnref:6" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Org Mode Narrowing and Widening Buffers</title>
      <link>https://janusworx.com/work/org-mode-narrowing-and-widening-buffers/</link>
      <pubDate>Mon, 26 Feb 2024 09:40:17 +0530</pubDate>
      <guid>https://janusworx.com/work/org-mode-narrowing-and-widening-buffers/</guid>
      <description>Narrow to focus, widen to review and plan. tldr: “C-x n s” to narrow and “C-x n w” to widen</description>
      <content:encoded><![CDATA[<p>tldr: <code>C-x n s</code> to narrow, <code>C-x n w</code> to widen</p>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<p>Now that life’s getting busier and busier, with lots more things on my plate, ye olde system of writing the day’s tasks down on paper does not work any more. Specially since, I’ve begun logging clock times<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>. Writing them down by hand is a giant pain.<br>
This is what the plan’s begun to look like.</p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<a href="/images/2024/om-orgmode-narrow-widen-1.png"><figure class="align-center ">
    <img loading="lazy" src="/images/2024/om-orgmode-narrow-widen-1.png#center"
         alt="a plan of tasks for a mediumish range of time"/> 
</figure>
</a></p>
<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>An unwieldy plan.<br>
Click this image or any below, for larger versions</p>
</figcaption>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<p>I wanted to see, if Org would let me replicate what I did my hand, natively.<br>
Which in a nutshell was to look at the day sheet (on paper) for the nitty gritty and my organiser (currently my tasks.org file) for the big picture view.<br>
I bounce between the two often. And discrete focus is something I wanted to keep.</p>
<p>The focus from wide …
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<a href="/images/2024/om-narrow-wide-2.jpg"><figure class="align-center ">
    <img loading="lazy" src="/images/2024/om-narrow-wide-2-s.jpg#center"
         alt="wide shot of Himalayan range. a valley with a tree line with the mountains in the back and the wide blue sky overheard"/> 
</figure>
</a>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>
</p>
<p>to narrow. And back …
<a href="/images/2024/om-narrow-wide-1.jpg"><figure class="align-center ">
    <img loading="lazy" src="/images/2024/om-narrow-wide-1-s.jpg#center"
         alt="a yellow Moss Rose"/> 
</figure>
</a>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>
</p>
<p><a href="https://orgmode.org/worg/orgcard.html">A bit of searching</a> and this is the result! Woohoo!</p>
<p><a href="/images/2024/om-orgmode-narrow-widen-2.png"><figure class="align-center ">
    <img loading="lazy" src="/images/2024/om-orgmode-narrow-widen-2.png#center"
         alt="the plan is now scoped to just today"/> 
</figure>
</a>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>
</p>
<p>Like I mentioned above, I hit <code>C-x n s</code> next to my day’s headline to narrow the scope to just today. And a <code>C-x n w</code> gets me back to the thirty thousand foot view.<br>
I think of them as, <em>s</em> for slim and <em>w</em> for wide, to keep them straight in my head.<br>
I’m intuiting this is Org’s <a href="https://orgmode.org/manual/Sparse-Trees.html">Sparse Tree</a> Magic at play here. But learning that wizardry is a thing for another day.</p>
<p>The important bit for me, is that I can focus when I working, without getting distracted.<br>
And then when I need to, zoom out to review what progress looks like and make changes, if I need to.</p>
<p>I feel a bit sad though. I’ve given up <a href="/blog/the-kobo-elipsa-2e-six-months-later/">book notes</a> on paper. I’m giving up planning my day on paper. It feels like I’m losing something tangible. I miss paper.</p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

Feedback on this post? Mail me at <a href="mailto:feedback@janusworx.com">feedback at this domain</a>
<br>

<br>

P.S. Subscribe to my <a href="https://janusworx.com/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>I hope to use these, to objectively measure where my time is <em><strong>really</strong></em> going&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Note to Self, Emacs Help Stuff</title>
      <link>https://janusworx.com/work/note-to-self-emacs-help-stuff/</link>
      <pubDate>Thu, 15 Feb 2024 08:03:24 +0530</pubDate>
      <guid>https://janusworx.com/work/note-to-self-emacs-help-stuff/</guid>
      <description>Various things, when rooting around for help in Emacs</description>
      <content:encoded><![CDATA[<figure class="align-center ">
    <img loading="lazy" src="/images/2024/emacs-logo.svg#center" width="500px"/> 
</figure>

<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<p>Collection of various little things I find handy when I am lost in Emacs</p>
<ul>
<li>Truly lost and need help <em>about</em> help itself? <code>C-h C-h</code> or <code>C-h ?</code></li>
<li><code>C-h m</code> should bring up a list of all the shortcuts available to that mode.</li>
<li>Want to find out what the docs mean when they refer to something? <code>C-h o</code> and then type in that name.<br>
For e.g. when the Org Mode docs refer to <code>org-hide-leading-stars</code>, a <code>C-h o</code> =&gt; <code>Return</code> =&gt; <code>org-hide-leading-stars</code> will give me details about what it is. (According to the docs: <code>org-hide-leading-stars</code> <em>is a variable defined in ‘org.el’. Its value is nil.</em>) Alternatively if you know the <em>type</em> of object, you’re looking at, <code>C-h f</code> will give you help on a function and <code>C-h v</code> will do the same with a variable.</li>
<li>If you want to know what function is behind this crazy shortcut you’re typing, a <code>C-h k</code> followed by giving it the shortcut your typing will lead you to the <del>culprit</del> command that powers it.<br>
For e.g. I blanked out on how to toggle multiple checkboxes in Org Mode today and I was hitting <code>C-c C-x b</code> to on avail. Running <code>C-h k</code> told me that it was bound to <code>org-tree-to-indirect-buffer</code>. So I was madly mashing the wrong keys. A little digging (with <code>C-h m</code>) revealed that what I needed was <code>C-c C-x C-b</code> which ran <code>org-toggle-checkbox</code> which indeed did what I wanted! :)</li>
</ul>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

Feedback on this post? Mail me at <a href="mailto:feedback@janusworx.com">feedback at this domain</a>
<br>

<br>

P.S. Subscribe to my <a href="https://janusworx.com/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<hr>
]]></content:encoded>
    </item>
    <item>
      <title>I Found Rainbows in Emacs!</title>
      <link>https://janusworx.com/work/i-found-rainbows-in-emacs/</link>
      <pubDate>Sat, 20 Jan 2024 07:41:00 +0530</pubDate>
      <guid>https://janusworx.com/work/i-found-rainbows-in-emacs/</guid>
      <description>&lt;p&gt;I must admit to stealing … quite a lot … from a bot at that!&lt;br&gt;
&lt;a href=&#34;https://zoetrope.fyi/&#34;&gt;Zoetrope’s&lt;/a&gt;, “&lt;a href=&#34;https://botsin.space/@randomColorContrasts&#34;&gt;random color contrasts&lt;/a&gt;” gets colours from Adam Morse and John Otander’s &lt;a href=&#34;https://randoma11y.com/&#34;&gt;Randoma11ly&lt;/a&gt; and posts them a few times a day.&lt;br&gt;
I’ve been writing down the ones I love and find interesting, in an Org note, in the hopes I’ll use them someday.&lt;br&gt;
(I know I’m just hoarding colours 😂. But hey, I used &lt;em&gt;one&lt;/em&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; out of the thirty-odd colours, I’ve jotted down so far)&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>I must admit to stealing … quite a lot … from a bot at that!<br>
<a href="https://zoetrope.fyi/">Zoetrope’s</a>, “<a href="https://botsin.space/@randomColorContrasts">random color contrasts</a>” gets colours from Adam Morse and John Otander’s <a href="https://randoma11y.com/">Randoma11ly</a> and posts them a few times a day.<br>
I’ve been writing down the ones I love and find interesting, in an Org note, in the hopes I’ll use them someday.<br>
(I know I’m just hoarding colours 😂. But hey, I used <em>one</em><sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> out of the thirty-odd colours, I’ve jotted down so far)</p>
<p>The bot page has a nice preview of what the colours look like (<a href="https://botsin.space/@randomColorContrasts/111738205465092376">like this</a>), while my little note just had bland hex RGB values.<br>
So I was wondering if I could somehow see what they looked like. Preview the values themselves in the colours they represent.<br>
I didn’t have to dig too deep. Ofcourse Emacs does this. With <a href="https://jblevins.org/log/rainbow-mode">Rainbow Mode</a>.</p>
<p>All I had to do was <a href="https://elpa.gnu.org/packages/rainbow-mode.html">install it</a>. Activate it in the buffer. And tada! Look! How Pretty!</p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<a href="/images/2024/emacs-rainbow-mode.png"><figure class="align-center ">
    <img loading="lazy" src="/images/2024/emacs-rainbow-mode.png#center"
         alt="a list of colours with their hex values. hex values are show in the colour they represent"/> 
</figure>
</a></p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

Feedback on this post? Mail me at <a href="mailto:feedback@janusworx.com">feedback@janusworx.com</a>
<br>

<br>

P.S. Subscribe to my <a href="https://janusworx.com/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>background and foreground for one of my Org Mode workflow states 😛&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Updated to Emacs 29.2</title>
      <link>https://janusworx.com/work/updated-to-emacs-29.2/</link>
      <pubDate>Fri, 19 Jan 2024 07:52:20 +0530</pubDate>
      <guid>https://janusworx.com/work/updated-to-emacs-29.2/</guid>
      <description>&lt;p&gt;Updated to &lt;a href=&#34;https://www.gnu.org/software/emacs/news/NEWS.29.2&#34;&gt;Emacs 29.2&lt;/a&gt;, just now.&lt;br&gt;
Took me and my four core workhorse about fifteen minutes tops, from start to finish.&lt;/p&gt;
&lt;p&gt;Emacs 29.0 was the first version I compiled from source, because I wanted the latest release as soon as it was out and I no longer had the patience for the kindly distribution folk (or third party packagers) to give me a binary.&lt;br&gt;
The first time was a nightmare.&lt;br&gt;
I didn’t have various bits and bobs that were needed. Stuff that the guides say should work a certain way wouldn’t.&lt;br&gt;
But it did happen eventually and I learnt a lot along the way about what &lt;em&gt;I&lt;/em&gt; wanted compiled in, in my Emacs.&lt;br&gt;
I also appreciated just how much easier it is now to compile stuff and recover from errors. I tried this last in the late 90s&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; and it scared me off.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Updated to <a href="https://www.gnu.org/software/emacs/news/NEWS.29.2">Emacs 29.2</a>, just now.<br>
Took me and my four core workhorse about fifteen minutes tops, from start to finish.</p>
<p>Emacs 29.0 was the first version I compiled from source, because I wanted the latest release as soon as it was out and I no longer had the patience for the kindly distribution folk (or third party packagers) to give me a binary.<br>
The first time was a nightmare.<br>
I didn’t have various bits and bobs that were needed. Stuff that the guides say should work a certain way wouldn’t.<br>
But it did happen eventually and I learnt a lot along the way about what <em>I</em> wanted compiled in, in my Emacs.<br>
I also appreciated just how much easier it is now to compile stuff and recover from errors. I tried this last in the late 90s<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> and it scared me off.</p>
<p>But like I was saying … now that I have it all set up, 29.1 and 29.2 have been a breeze.<br>
I’d never have guessed, updating software, by compiling from source, would be so painless.<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup></p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

Feedback on this post? Mail me at <a href="mailto:feedback@janusworx.com">feedback@janusworx.com</a>
<br>

<br>

P.S. Subscribe to my <a href="https://janusworx.com/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>I compiled the linux kernel. Bold first step. I know 😂&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>I know, there will be hiccoughs. But even so, this is so much better than what I imagined in my head.&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Emacs, Three and a Half Years On</title>
      <link>https://janusworx.com/work/emacs-three-and-a-half-years-on/</link>
      <pubDate>Sat, 30 Dec 2023 10:16:07 +0530</pubDate>
      <guid>https://janusworx.com/work/emacs-three-and-a-half-years-on/</guid>
      <description>&lt;p&gt;If someone had told me &lt;a href=&#34;https://janusworx.com/blog/emacs-day-01&#34;&gt;three and a half years ago&lt;/a&gt;, that I would:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Use &lt;a href=&#34;https://en.wikipedia.org/wiki/Emacs&#34;&gt;Emacs&lt;/a&gt; as my primary editor nearly everywhere.&lt;/li&gt;
&lt;li&gt;Not just as an editor. In fact, I would stop thinking of it as an editor and come to see it for what it really is. A whole computer with an editor bolted on.&lt;/li&gt;
&lt;li&gt;Use Emacs not just for writing, but also have it serve as the cornerstone for two other extremely important activities in my life, organising my life (with &lt;a href=&#34;https://orgmode.org/&#34;&gt;Org Mode&lt;/a&gt;) and tending to my commonplace book (with &lt;a href=&#34;https://www.orgroam.com/&#34;&gt;Org Roam&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Come so far as to scrape a web page, set it up as a connected node in my &lt;a href=&#34;https://janusworx.com/tags/zettelkasten/&#34;&gt;Zettelkasten&lt;/a&gt;, strip close to fifty superfluous lines, edit the rest to my liking, change the title to title case, and then file it way within minutes, and learn do all this by osmosis and research over the years, just by using it daily and being curious&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Have a kind community support all my &lt;a href=&#34;https://janusworx.com/blog/having-my-emacs-tasks-and-notes-ready/#update-2023-11-17&#34;&gt;crazy attempts&lt;/a&gt; to bend Emacs to my will&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I would have told you, you were off your rocker.&lt;br&gt;
But I do, do these things (which, I’m ridiculously pleased with) and have this wonderful community (which, I am earnestly grateful for).&lt;br&gt;
Here’s to three and a half decades!&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>If someone had told me <a href="/blog/emacs-day-01">three and a half years ago</a>, that I would:</p>
<ol>
<li>Use <a href="https://en.wikipedia.org/wiki/Emacs">Emacs</a> as my primary editor nearly everywhere.</li>
<li>Not just as an editor. In fact, I would stop thinking of it as an editor and come to see it for what it really is. A whole computer with an editor bolted on.</li>
<li>Use Emacs not just for writing, but also have it serve as the cornerstone for two other extremely important activities in my life, organising my life (with <a href="https://orgmode.org/">Org Mode</a>) and tending to my commonplace book (with <a href="https://www.orgroam.com/">Org Roam</a>)</li>
<li>Come so far as to scrape a web page, set it up as a connected node in my <a href="/tags/zettelkasten/">Zettelkasten</a>, strip close to fifty superfluous lines, edit the rest to my liking, change the title to title case, and then file it way within minutes, and learn do all this by osmosis and research over the years, just by using it daily and being curious<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></li>
<li>Have a kind community support all my <a href="https://janusworx.com/blog/having-my-emacs-tasks-and-notes-ready/#update-2023-11-17">crazy attempts</a> to bend Emacs to my will</li>
</ol>
<p>I would have told you, you were off your rocker.<br>
But I do, do these things (which, I’m ridiculously pleased with) and have this wonderful community (which, I am earnestly grateful for).<br>
Here’s to three and a half decades!</p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

Feedback on this post? Mail me at <a href="mailto:feedback@janusworx.com">feedback@janusworx.com</a>
<br>

<br>

P.S. Subscribe to my <a href="https://janusworx.com/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>and being a bit stubborn and refusing to accept the status quo&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Weirdly Placed Emacs Org Branches Are Only Cosmetic</title>
      <link>https://janusworx.com/work/weirdly-placed-emacs-org-branches-are-only-cosmetic/</link>
      <pubDate>Mon, 27 Nov 2023 08:26:19 +0530</pubDate>
      <guid>https://janusworx.com/work/weirdly-placed-emacs-org-branches-are-only-cosmetic/</guid>
      <description>&lt;p&gt;Every evening, after my &lt;a href=&#34;https://www.youtube.com/watch?v=-pdmry5gU7g&#34;&gt;shutdown ritual&lt;/a&gt;, I move my current day’s branch to the bottom of my &lt;a href=&#34;https://orgmode.org/&#34;&gt;Org Mode&lt;/a&gt; file, so I begin the next day at &lt;a href=&#34;https://janusworx.com/blog/having-my-emacs-tasks-and-notes-ready/&#34;&gt;the same fixed place, at line 36.&lt;/a&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;&lt;hr style=&#39;margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;&#39;/&gt;

&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://janusworx.com/images/2023/emacs-orgmove-branch-1.png#center&#34;/&gt; 
&lt;/figure&gt;
&lt;/p&gt;
&lt;figcaption style=&#34;font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)&#34;&gt;
&lt;p&gt;The day is done; moving it to the bottom of the pile&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Every evening, after my <a href="https://www.youtube.com/watch?v=-pdmry5gU7g">shutdown ritual</a>, I move my current day’s branch to the bottom of my <a href="https://orgmode.org/">Org Mode</a> file, so I begin the next day at <a href="/blog/having-my-emacs-tasks-and-notes-ready/">the same fixed place, at line 36.</a><sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<figure class="align-center ">
    <img loading="lazy" src="/images/2023/emacs-orgmove-branch-1.png#center"/> 
</figure>
</p>
<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>The day is done; moving it to the bottom of the pile</p>
</figcaption>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<p>Every time I move though, it goes there and sits, right <em>next</em> to the last branch, instead of <em>under</em> it. So I would grumble a bit, and then go hit the <code>return</code> key as required, to get it all right and proper. And I’m tired, so at least one time out of three, I mess the older day too, and then I grumble even more and fix that too.</p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<figure class="align-center ">
    <img loading="lazy" src="/images/2023/emacs-orgmove-branch-2.png#center"/> 
</figure>
</p>
<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>Where it sits awkwardly</p>
</figcaption>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<p>Until today morning, when I realised I had <em>not</em> done my fix the day dance, yesterday…<br>
And the day was correctly positioned at the bottom!<br>
So, was this was just a purely cosmetic issue?!<br>
I tried it with a couple of test days.<br>
I saved, closed, and opened up my file. Fixed!<br>
Then I tried some more tests days and I expanded all my tasks <code>Shift-Tab</code> and and closed them. Fixed! 🙂</p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<figure class="align-center ">
    <img loading="lazy" src="/images/2023/emacs-orgmove-branch-3.png#center"/> 
</figure>
</p>
<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>Yay! The Org Mode elves fixed it!</p>
</figcaption>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<p>I guess, I have to go find something else to be grumpy about now 😂</p>
<h3 id="update-2023-11-27"><em>Update: 2023-11-27</em></h3>
<p>A friend on the fediverse, encouraged me to try filing a bug report with the Org folk.<br>
To which I retort, this is more a PEBKAC problem, than an Org Mode problem.<br>
Most likely I am doing something dumb or I have something misconfigured, or some of my Org helper packages (Org-contrib, Org-ql, Org-Web-Tools, Org Superstar) are trampling over one another.</p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

Feedback on this post? Mail me at <a href="mailto:feedback@janusworx.com">feedback@janusworx.com</a>
<br>

<br>

P.S. Subscribe to my <a href="https://janusworx.com/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>As I grow older, habits, routines and static places are growing ever more important, so I can function well.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Getting Emacs Windows to Not Be Shy</title>
      <link>https://janusworx.com/work/getting-emacs-windows-to-not-be-shy/</link>
      <pubDate>Sat, 18 Nov 2023 09:37:35 +0530</pubDate>
      <guid>https://janusworx.com/work/getting-emacs-windows-to-not-be-shy/</guid>
      <description>&lt;p&gt;Figuring out my webapps problem yesterday made me ask myself if I could somehow repurpose that little &lt;code&gt;xdotool&lt;/code&gt; script to solve another niche itch that I had.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Spoiler alert: It did.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I run &lt;a href=&#34;https://www.emacswiki.org/emacs/EmacsAsDaemon&#34;&gt;Emacs as a daemon&lt;/a&gt;, and use EmacsClient to connect to the Emacs process.&lt;br&gt;
Makes it really ease to launch, work on, sling around and close lots of Emacs windows.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Which brings me to the hiccough. I launch EmacsClient and a window (frame) does indeed launch, but it just … stays there in the background.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Figuring out my webapps problem yesterday made me ask myself if I could somehow repurpose that little <code>xdotool</code> script to solve another niche itch that I had.</p>
<p><em>Spoiler alert: It did.</em></p>
<p>I run <a href="https://www.emacswiki.org/emacs/EmacsAsDaemon">Emacs as a daemon</a>, and use EmacsClient to connect to the Emacs process.<br>
Makes it really ease to launch, work on, sling around and close lots of Emacs windows.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p>
<p>Which brings me to the hiccough. I launch EmacsClient and a window (frame) does indeed launch, but it just … stays there in the background.</p>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<figure class="align-center ">
    <img loading="lazy" src="/images/2023/ec-err-1.png#center"/> 
</figure>

<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<p>Repeated attempts to launch EmacsClient are to no avail.<br>
The pesky little windows just pile up in their corner.</p>
<figure class="align-center ">
    <img loading="lazy" src="/images/2023/ec-err-2.png#center"/> 
</figure>

<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<p>Ergo, this little bit of Bash/xdotool shenanigans …</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env bash 
</span></span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>export EMACSWINID<span style="color:#f92672">=</span><span style="color:#66d9ef">$(</span>xdotool search <span style="color:#e6db74">&#34;\*scratch\*&#34;</span> | tail -n1<span style="color:#66d9ef">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> <span style="color:#f92672">[</span> $EMACSWINID <span style="color:#f92672">]</span>; <span style="color:#66d9ef">then</span>
</span></span><span style="display:flex;"><span>    xdotool windowactivate $EMACSWINID
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">else</span>
</span></span><span style="display:flex;"><span>    sh -c <span style="color:#e6db74">&#39;emacsclient --create-frame --no-wait --alternate-editor=&#34;&#34; &amp;&amp; export EMACSWINID=$(xdotool search &#34;\*scratch\*&#34; | tail -n1) &amp;&amp; xdotool windowactivate $EMACSWINID&#39;</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">fi</span>
</span></span></code></pre></div><ul>
<li>Check to see if an Emacs scratch buffer is open. If it is, switch to it.</li>
<li>Otherwise, just launch EmacsClient, get the id of the scratch buffer window (frame) and raise it, so that I can work on it. In peace.</li>
</ul>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<figure class="align-center ">
    <img loading="lazy" src="/images/2023/ec-err-3.png#center"
         alt="An Emacs frame in the foreground"/> 
</figure>

<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p><em>Cue: sounds of relief, in the background</em></p>
</figcaption>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

Feedback on this post? Mail me at <a href="mailto:feedback@janusworx.com">feedback@janusworx.com</a>
<br>

<br>

P.S. Subscribe to my <a href="https://janusworx.com/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Frames, in Emacs parlance&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>On How Emacs Adapts</title>
      <link>https://janusworx.com/work/on-how-emacs-adapts/</link>
      <pubDate>Sat, 18 Nov 2023 06:30:27 +0530</pubDate>
      <guid>https://janusworx.com/work/on-how-emacs-adapts/</guid>
      <description>&lt;p&gt;I love it whenever the Roger Ebert of the Emacs world aka Jon Snader aka irreal, gets his hands on &lt;a href=&#34;https://janusworx.com/blog/having-my-emacs-tasks-and-notes-ready/&#34;&gt;one of my posts&lt;/a&gt; and uses it for his insightful annotations.&lt;br&gt;
His conclusion is something I totally relate to, because that is exactly what has kept me using Emacs ever since I began using it. It bends to my will. Or as Jon puts it …&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It’s yet another way that Emacs adapts itself to its users rather than insisting those users adapt themselves to Emacs.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>I love it whenever the Roger Ebert of the Emacs world aka Jon Snader aka irreal, gets his hands on <a href="/blog/having-my-emacs-tasks-and-notes-ready/">one of my posts</a> and uses it for his insightful annotations.<br>
His conclusion is something I totally relate to, because that is exactly what has kept me using Emacs ever since I began using it. It bends to my will. Or as Jon puts it …</p>
<blockquote>
<p>It’s yet another way that Emacs adapts itself to its users rather than insisting those users adapt themselves to Emacs.</p>
</blockquote>
<p><a href="https://irreal.org/blog/?p=11778">Read irreal’s entire post here.</a></p>
<p>P.S. I also managed to power my workflow with elisp, like Jon’s first impulse told him to. And that was because of Emacs’ second (or rather biggest) strength.<br>
The kindness and warmth of the Emacs community at large.<br>
<a href="https://mastodon.social/@laotang">@laotang</a> from the fediverse, reached out and gave me the <a href="/blog/having-my-emacs-tasks-and-notes-ready/#update-2023-11-17">gift of an elisp function, that did what I needed</a> :)</p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

Feedback on this post? Mail me at <a href="mailto:feedback@janusworx.com">feedback@janusworx.com</a>
<br>

<br>

P.P.S. Subscribe to my <a href="https://janusworx.com/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<hr>
]]></content:encoded>
    </item>
    <item>
      <title>Having My Emacs Tasks and Notes Ready</title>
      <link>https://janusworx.com/work/having-my-emacs-tasks-and-notes-ready/</link>
      <pubDate>Thu, 16 Nov 2023 18:56:38 +0530</pubDate>
      <guid>https://janusworx.com/work/having-my-emacs-tasks-and-notes-ready/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;#update-2023-11-17&#34;&gt;&lt;em&gt;Updated: 2023-11-17. Read more below&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Nearly everything I write is in Emacs.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;br&gt;
It’s been slightly more than two years, since I made the move to using it as my everyday text editor.&lt;br&gt;
I have a spartan Emacs config, with only a few customisations, that I found by watching David Wilson aka System Crafters’ &lt;a href=&#34;https://www.youtube.com/live/74zOY-vgkyw&#34;&gt;Emacs From Scratch #1&lt;/a&gt; video and the rest by searching on the web and asking around on the fediverse.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="#update-2023-11-17"><em>Updated: 2023-11-17. Read more below</em></a></p>
<p>Nearly everything I write is in Emacs.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup><br>
It’s been slightly more than two years, since I made the move to using it as my everyday text editor.<br>
I have a spartan Emacs config, with only a few customisations, that I found by watching David Wilson aka System Crafters’ <a href="https://www.youtube.com/live/74zOY-vgkyw">Emacs From Scratch #1</a> video and the rest by searching on the web and asking around on the fediverse.</p>
<p>I’ve touched my config only about three times; basically every time I’ve found a new use for emacs.</p>
<ol>
<li>When I started editing text</li>
<li>When I start using it as my Organiser (<a href="https://orgmode.org/features.html">Org Mode</a>) and</li>
<li>When I began using it as my Zettelkasten (<a href="https://www.orgroam.com/">Org Roam</a>)</li>
</ol>
<p>Which is to say, I know only the bare bones of how Emacs configuration and Elisp work.</p>
<p>And yet … and yet …<br>
I have this itch that rankles.<br>
You see, every morning I sit at the computer with my cup of coffee, and pull up my tasks and notes and the agenda for the day.<br>
Now I don’t use the agenda much, but the tasks and notes are a must.<br>
So I open the tasks file and maximize my window and then I split my frame and I open the notes file, and then I go back to my tasks and I have it all ready just the way I like it.<br>
Thing is, I’m grumpy in the morning and doing all that grates on me.</p>
<p><a href="https://youtu.be/RMgaDqgv5u4?t=20">There’s gotta be a better way!</a></p>
<p>So I tried looking around, and came to the conclusion that creating a function, that did all this for me, would be the best thing.<br>
But I know no Elisp.<br>
And right now, I have no time to put into learning it. I did spend close to a day looking at what I could whip up, to no avail.<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup></p>
<p>So the next best idea I came up with, was recording my actions, doing the file opening, window arranging dance, as a macro and then assigning a keyboard shortcut to it.<br>
That turned out to be iffy.<br>
It’d work fine when I created it, but when I restarted my Emacs daemon (or my system) and then call it again, Emacs would freeze.</p>
<p>My intuition told me that it could be the fact, that a recorded macro<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup> could not handle opening files and switching buffers.<sup id="fnref:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup><br>
Then I realised that I could outsource <em>that</em> part to the command line or my application launcher<sup id="fnref:5"><a href="#fn:5" class="footnote-ref" role="doc-noteref">5</a></sup> and leave the rest of it to the macro.</p>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<p>So I did just that. I created a Ulauncher shortcut.<br>
It binds the keyword <code>etn</code> to the command:<br>
<code>emacsclient -c --no-wait  ~/path/to/tasks.org  ~/path/to/my/notes.org</code><br>
so that Emacs opens both my tasks and notes files as it fires up.</p>
<figure class="align-center ">
    <img loading="lazy" src="/images/2023/etn-ulauncher.png#center"/> 
</figure>

<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>A Ulauncher window, with name, keyword and the actual command to launch emacs</p>
</figcaption>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<p>And in Emacs I bound a keyboard macro, to the rest of the recorded macro code that would</p>
<ol>
<li>Maximise the frame</li>
<li>Split the frame into two windows, with my tasks on top and the notes in the bottom</li>
<li>Have the cursor be ready at the place I needed it to be.</li>
</ol>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-elisp" data-lang="elisp"><span style="display:flex;"><span>(defalias <span style="color:#e6db74">&#39;mjbtn</span>
</span></span><span style="display:flex;"><span>   (kmacro <span style="color:#e6db74">&#34;M-x t o g g l e - f r a m e - m a x i m i z e d &lt;return&gt; 
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">   C-x 2 C-x o C-x b n o t e s . o r g &lt;return&gt; C-x o M-g g 3 6 &lt;return&gt;&#34;</span>))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">;; Assign a keyboard shortcut to the macro above: C-c z</span>
</span></span><span style="display:flex;"><span>(global-set-key (kbd <span style="color:#e6db74">&#34;C-c z&#34;</span>) <span style="color:#e6db74">&#39;mjbtn</span>)
</span></span></code></pre></div><p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>
<br>
Et voilà! I have everything, just the way I want it.<br>
And while it might not be fancy, it works without a fuss!<br>
<br>

<figure class="align-center ">
    <img loading="lazy" src="/images/2023/etn-emacs.png#center"/> 
</figure>
</p>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<h3 id="update-2023-11-17">Update: 2023-11-17</h3>
<p>One advantage of writing about what you do and putting it out there, is that really kind souls come along and teach you new things!<br>
One of them is <a href="https://mastodon.social/@laotang">@laotang</a>, over on the Fediverse.<br>
Remember when I said, the best solution would be to write an Emacs function that would do what I wanted?<br>
Well, laotang loved my tinkering and then went on to <a href="https://mastodon.social/@laotang/111424355930361393">give me just that</a>!<br>
I raise my cup of coffee to you, Sir! You made my day! Thank you, so much!</p>
<p>Here’s the code he suggested.Worked like a charm!</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-elisp" data-lang="elisp"><span style="display:flex;"><span>(defun getting-ready ()
</span></span><span style="display:flex;"><span>  <span style="color:#e6db74">&#34;Getting ready for work.&#34;</span>
</span></span><span style="display:flex;"><span>  (interactive)
</span></span><span style="display:flex;"><span>  (toggle-frame-maximized)
</span></span><span style="display:flex;"><span>  (split-window-below)
</span></span><span style="display:flex;"><span>  (find-file <span style="color:#e6db74">&#34;~/path/to/notes/notes.org&#34;</span>)
</span></span><span style="display:flex;"><span>  (find-file-other-window <span style="color:#e6db74">&#34;~/path/to/tasks/tasks.org&#34;</span>))
</span></span><span style="display:flex;"><span>(global-set-key (kbd <span style="color:#e6db74">&#34;C-c r&#34;</span>) <span style="color:#e6db74">&#39;getting-ready</span>)
</span></span></code></pre></div><p>Oh, and if you liked how Org-Roam worked in the past? When it was all just text files?<br>
Well, if you want something like that, check out laotang’s feature-complete<sup id="fnref:6"><a href="#fn:6" class="footnote-ref" role="doc-noteref">6</a></sup> replica, <a href="https://github.com/rtrppl/orgrr">ORGRR</a>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

Feedback on this post? Mail me at <a href="mailto:feedback@janusworx.com">feedback@janusworx.com</a>
<br>

<br>

P.S. Subscribe to my <a href="https://janusworx.com/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>with the exception of code.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>Not much. there are lots of primitives and I cannot separate the language from Emacs specific stuff yet&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>rather, <em><strong>my</strong></em> recorded macro&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:4">
<p>Don’t know if this is true or not. This is just me scratching my head. I’m assuming a function that can call buffers and handle switching between them is the ticket.&#160;<a href="#fnref:4" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:5">
<p><a href="https://ulauncher.io/">Ulauncher</a>&#160;<a href="#fnref:5" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:6">
<p>almost&#160;<a href="#fnref:6" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Emacs Can Transparently Encrypt and Decrypt File With Gpg</title>
      <link>https://janusworx.com/work/emacs-can-transparently-encrypt-and-decrypt-file-with-gpg/</link>
      <pubDate>Tue, 28 Feb 2023 12:43:56 +0530</pubDate>
      <guid>https://janusworx.com/work/emacs-can-transparently-encrypt-and-decrypt-file-with-gpg/</guid>
      <description>&lt;p&gt;I’ve been struggling to get &lt;strong&gt;&lt;a href=&#34;https://github.com/dengste/org-caldav/&#34;&gt;org-caldav&lt;/a&gt;&lt;/strong&gt; working on the desktop.&lt;br&gt;
Nothing to do with the program itself. It’s excellent, fairly intuitive and really well documented. There just seems to be some gremlin in the works, that does not let the darned calendar see my org files.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; Will keep at it.&lt;/p&gt;
&lt;p&gt;What this note is for however, was the pleasant realisation that Emacs can transparently work with gpg encrypted files.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;br&gt;
I wanted to keep my calendar user/password credentials in a file, because the to and fro between my Baikal caldav server was generating too many requests for my password.&lt;br&gt;
The &lt;a href=&#34;https://github.com/dengste/org-caldav/&#34;&gt;org-caldav&lt;/a&gt; &lt;em&gt;&lt;a href=&#34;https://github.com/dengste/org-caldav/#storing-authentication-information-in-authinfonetrc&#34;&gt;README&lt;/a&gt;&lt;/em&gt; suggested that I save it all in an &lt;code&gt;.authinfo&lt;/code&gt; file, like so.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>I’ve been struggling to get <strong><a href="https://github.com/dengste/org-caldav/">org-caldav</a></strong> working on the desktop.<br>
Nothing to do with the program itself. It’s excellent, fairly intuitive and really well documented. There just seems to be some gremlin in the works, that does not let the darned calendar see my org files.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> Will keep at it.</p>
<p>What this note is for however, was the pleasant realisation that Emacs can transparently work with gpg encrypted files.<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup><br>
I wanted to keep my calendar user/password credentials in a file, because the to and fro between my Baikal caldav server was generating too many requests for my password.<br>
The <a href="https://github.com/dengste/org-caldav/">org-caldav</a> <em><a href="https://github.com/dengste/org-caldav/#storing-authentication-information-in-authinfonetrc">README</a></em> suggested that I save it all in an <code>.authinfo</code> file, like so.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-emacs" data-lang="emacs"><span style="display:flex;"><span>machine www.google.com:443 port https login username password secret
</span></span></code></pre></div><p>which for me translated as</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-emacs" data-lang="emacs"><span style="display:flex;"><span>machine my-caldav-server:443 port https login &lt;my-username&gt; password &lt;my-password&gt;
</span></span></code></pre></div><p>And the connection worked! Without me putting my password in every two seconds.</p>
<p>I was still a bit leery about putting my password into a plaintext file, so I <a href="https://www.emacswiki.org/emacs/GnusAuthinfo">looked it up</a> and it told me to specifically use an <code>authinfo.gpg</code> not the plaintext version.
The magic still didn’t strike me, until I tried to save the file. Emacs called up my gpg agent, which popped up a box asking me to unlock my key, and then Emacs went ahead and encrypted my file. Just like that! I tried opening it and the same thing happened in reverse. No mussing around with the command line.</p>
<p>If I save a file with a <code>.gpg</code> extension, Emacs will automatically encrypt it!<br>
If you want to learn more, the great Mickey Petersen <a href="https://www.masteringemacs.org/article/keeping-secrets-in-emacs-gnupg-auth-sources">knows all</a>!<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup></p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

Feedback on this post? Mail me at <a href="mailto:feedback@janusworx.com">feedback@janusworx.com</a>
<br>

<br>

P.S. Subscribe to my <a href="https://janusworx.com/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<hr>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Probably because I’m running <a href="https://sabre.io/baikal/">Baikal</a>&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>via the <a href="https://www.emacswiki.org/emacs/EasyPG">EasyPG</a> package&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>And ofcourse, I had to find this lovely article, <em><strong>after</strong></em> all my stumbling about!&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Org Mode Subtree Expansion With the Mouse</title>
      <link>https://janusworx.com/work/org-mode-subtree-expansion-with-the-mouse/</link>
      <pubDate>Wed, 22 Feb 2023 08:04:19 +0530</pubDate>
      <guid>https://janusworx.com/work/org-mode-subtree-expansion-with-the-mouse/</guid>
      <description>&lt;p&gt;When I wrote about, &lt;a href=&#34;https://janusworx.com/blog/ticking-off-checkboxes-with-the-mouse-in-org-mode/&#34;&gt;ticking off checkboxes in Org Mode&lt;/a&gt;, I’d linked to &lt;a href=&#34;http://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/org/org-mouse.el#n101&#34;&gt;line 101&lt;/a&gt; of &lt;code&gt;org-mouse.el&lt;/code&gt;. While I’d read the main summary, I somehow missed &lt;a href=&#34;http://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/org/org-mouse.el#n30&#34;&gt;line 30&lt;/a&gt; …&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;;; * subtree expansion/collapse (org-cycle) with the left mouse button
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Which I accidentally triggered today …&lt;/p&gt;
&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://janusworx.com/images/2023/org-mouse-cycle-1.png#center&#34;/&gt; 
&lt;/figure&gt;

&lt;p&gt;After an (accidental) click opens up to …
&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://janusworx.com/images/2023/org-mouse-cycle-2.png#center&#34;/&gt; 
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr style=&#39;margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;&#39;/&gt;

&lt;p&gt;Org Mode continues to delight! Hurrah!&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>When I wrote about, <a href="/blog/ticking-off-checkboxes-with-the-mouse-in-org-mode/">ticking off checkboxes in Org Mode</a>, I’d linked to <a href="http://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/org/org-mouse.el#n101">line 101</a> of <code>org-mouse.el</code>. While I’d read the main summary, I somehow missed <a href="http://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/org/org-mouse.el#n30">line 30</a> …</p>
<pre tabindex="0"><code>;; * subtree expansion/collapse (org-cycle) with the left mouse button
</code></pre><p>Which I accidentally triggered today …</p>
<figure class="align-center ">
    <img loading="lazy" src="/images/2023/org-mouse-cycle-1.png#center"/> 
</figure>

<p>After an (accidental) click opens up to …
<figure class="align-center ">
    <img loading="lazy" src="/images/2023/org-mouse-cycle-2.png#center"/> 
</figure>
</p>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<p>Org Mode continues to delight! Hurrah!</p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

Feedback on this post? Mail me at <a href="mailto:feedback@janusworx.com">feedback@janusworx.com</a>
<br>

<br>

P.S. Subscribe to my <a href="https://janusworx.com/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<hr>
]]></content:encoded>
    </item>
    <item>
      <title>What I Learned Today (13th of February, 2023)</title>
      <link>https://janusworx.com/work/what-i-learned-today-2023-02-13/</link>
      <pubDate>Mon, 13 Feb 2023 19:24:35 +0530</pubDate>
      <guid>https://janusworx.com/work/what-i-learned-today-2023-02-13/</guid>
      <description>&lt;p&gt;Nothing. Nothing. Absolutely nothing!&lt;br&gt;
I didn’t feel well today. So I went to bed.&lt;/p&gt;
&lt;p&gt;Did log my usual weekly, &lt;a href=&#34;https://toots.dgplug.org/@jason/109858074351850009&#34;&gt;books&lt;/a&gt; and &lt;a href=&#34;https://toots.dgplug.org/@jason/109858058553120015&#34;&gt;fitness&lt;/a&gt; entries though.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;hr style=&#39;margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;&#39;/&gt;

&lt;h3 id=&#34;urdu&#34;&gt;Urdu&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Did the “ain” / “gain” group.&lt;br&gt;
Had fun, trying to pronounce the fricative gh (&lt;a href=&#34;https://upload.wikimedia.org/wikipedia/commons/4/47/Voiced_velar_fricative.ogg&#34;&gt;/ɣ/&lt;/a&gt;) sound.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;emacs&#34;&gt;Emacs&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Just a little note of gratitude to the community over at &lt;a href=&#34;https://planet.emacslife.com/&#34;&gt;Emacslife&lt;/a&gt;
Me, thinking out aloud in the last part of this &lt;a href=&#34;https://janusworx.com/blog/what-i-learned-today-2023-02-10/#emacs&#34;&gt;section&lt;/a&gt;, led to several folks emailing me with kind and encouraging words.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Nothing. Nothing. Absolutely nothing!<br>
I didn’t feel well today. So I went to bed.</p>
<p>Did log my usual weekly, <a href="https://toots.dgplug.org/@jason/109858074351850009">books</a> and <a href="https://toots.dgplug.org/@jason/109858058553120015">fitness</a> entries though.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<h3 id="urdu">Urdu</h3>
<ul>
<li>Did the “ain” / “gain” group.<br>
Had fun, trying to pronounce the fricative gh (<a href="https://upload.wikimedia.org/wikipedia/commons/4/47/Voiced_velar_fricative.ogg">/ɣ/</a>) sound.</li>
</ul>
<h3 id="emacs">Emacs</h3>
<ul>
<li>
<p>Just a little note of gratitude to the community over at <a href="https://planet.emacslife.com/">Emacslife</a>
Me, thinking out aloud in the last part of this <a href="/blog/what-i-learned-today-2023-02-10/#emacs">section</a>, led to several folks emailing me with kind and encouraging words.</p>
<ul>
<li>Jon Snader mentioning yours truly on <a href="https://irreal.org/blog/?p=11142">Irreal</a><br>
It gives me a slight thrill everytime, he boosts one of my posts (as I’m sure all the others do too!)</li>
<li>M— generously shared a link to the Bernt Hansen’s awesome <a href="http://doc.norang.ca/org-mode.html">Orgmode post</a> as well as reassuring me, they did the same thing as I :)</li>
<li>D— had this to say, Lean in on it and be comfortable “borrowing code”. Many of us do it. As long as you understand it, it should be fine. […] The gains obtained
from not having to cold-start from zero are worth considering.</li>
</ul>
</li>
<li>
<p>Thank you all very much. Makes me happy when I realise, I’m not shouting into the void and that I’m a part of a warm, welcoming group of kinfolk.</p>
</li>
</ul>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

Feedback on this post? Mail me at <a href="mailto:feedback@janusworx.com">feedback@janusworx.com</a>
<br>

<br>

P.S. Subscribe to my <a href="https://janusworx.com/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<hr>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>What? You don’t follow me on the fediverse? <a href="https://toots.dgplug.org/@jason">You totally should!</a>&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>What I Learned Today (11th of February, 2023)</title>
      <link>https://janusworx.com/work/what-i-learned-today-2023-02-11/</link>
      <pubDate>Sat, 11 Feb 2023 14:42:56 +0530</pubDate>
      <guid>https://janusworx.com/work/what-i-learned-today-2023-02-11/</guid>
      <description>&lt;p&gt;Rest day! Not doing much!
&lt;hr style=&#39;margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;&#39;/&gt;
&lt;/p&gt;
&lt;h3 id=&#34;emacs&#34;&gt;Emacs&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;It works! &lt;a href=&#34;https://janusworx.com/blog/what-i-learned-today-2023-02-10#emacs&#34;&gt;Yesterday’s little hack&lt;/a&gt;, to clock in and out when I change state works well! It doesn’t seem to have broken anything.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Also I added a &lt;code&gt;WORKING&lt;/code&gt; state, and tagged my function to that. The clock in and out happen when I switch in an out of the &lt;code&gt;WORKING&lt;/code&gt; state. Because I want my parent task to show &lt;code&gt;IN_PROGRESS&lt;/code&gt; and the current subtask to be what I am working on. Like so …&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Rest day! Not doing much!
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>
</p>
<h3 id="emacs">Emacs</h3>
<ul>
<li>
<p>It works! <a href="/blog/what-i-learned-today-2023-02-10#emacs">Yesterday’s little hack</a>, to clock in and out when I change state works well! It doesn’t seem to have broken anything.</p>
</li>
<li>
<p>Also I added a <code>WORKING</code> state, and tagged my function to that. The clock in and out happen when I switch in an out of the <code>WORKING</code> state. Because I want my parent task to show <code>IN_PROGRESS</code> and the current subtask to be what I am working on. Like so …</p>
</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-org" data-lang="org"><span style="display:flex;"><span><span style="color:#75715e">**</span> IN_PROGRESS Emacs
</span></span><span style="display:flex;"><span><span style="color:#75715e">***</span> WORKING Learn about Org
</span></span><span style="display:flex;"><span><span style="color:#75715e">***</span><span style="color:#960050;background-color:#1e0010"> TODO</span> Write about what you learnt
</span></span></code></pre></div><br>

<ul>
<li>Here’s an image of an actual task …</li>
</ul>
<figure>
    <img loading="lazy" src="/images/2023/org-tasks.png"/> 
</figure>

<ul>
<li>Except for one more thing.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup><br>
When I switch another task to <code>WORKING</code>, it <em>does</em> clock me out of the old task, but it leaves the TODO state at <code>WORKING</code>. I want the old task to switch to <code>WAITING</code>. I’ll look at doing this as soon as I get some breathing time.</li>
</ul>
<h3 id="devops">Devops</h3>
<ul>
<li>Spoke to a friend about some how and what and why for close to an hour<br>
Helped me clear my mind lots!</li>
</ul>
<h3 id="urdu">Urdu</h3>
<ul>
<li>
<p>Did “toey” and “zoey”</p>
</li>
<li>
<p>Did I mention three letters for the same S sound <a href="/blog/what-i-learned-today-2023-02-10#urdu">yesterday</a>?<br>
Ha! Z has <em><strong>four!</strong></em> Zaal, Ze, Zuaad &amp; Zoey</p>
</li>
<li>
<p>Also tutor’s note:</p>
</li>
</ul>
<blockquote>
<p>the word “zan” (ज़न) when written with ‘zoey’ means “presumption” whereas, the same word, when written with a ‘ze’ instead, means “woman”.</p>
</blockquote>
<ul>
<li>Which means? Lots of practice and reading ahead :)<br>
Also coming from <a href="https://youtube.com/shorts/BgqDRTQ7lJs">the madness that is English</a>, I keep telling myself, this is not so bad 😂<br>
Like Lizzo doing <a href="https://youtu.be/hRJzez4UDm8">crack</a>.</li>
</ul>
<h3 id="physical-fitness">Physical Fitness</h3>
<p>Rest day!</p>
<h3 id="thoughts">Thoughts</h3>
<ul>
<li>The meta need / theme of learning and working, as I am doing now, is that I need to work to a time budget
<ul>
<li>Here’s the problem, try and solve it in an hour (or whatever time I budget)</li>
</ul>
</li>
<li>I need to have no shame if I cannot get it done</li>
<li>I need to ask for help / look up solutions faster</li>
<li>I also need to budget the time to understand the solutions.
<ul>
<li>If I cannot fix it one day and the solution is taking time to “get”, be ok with spending time the next day</li>
</ul>
</li>
<li>It’s just me. There is no one else. There is no need to pressure myself more than necessary.</li>
<li>Work to the spec. Generalising (at least for now) is taboo. Now, I understand what my friends tell me about me perfectionism. I keep spending way too long about what if this? and what if that? I need to get something working first. Refine / expand / refactor it later</li>
<li>Get better at logging times</li>
<li>Get better at taking breaks between tasks</li>
<li>Writing these logs has helped gain insight and understanding. I need to keep at it. It’ll help with the “what now? what next?” questions</li>
</ul>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

Feedback on this post? Mail me at <a href="mailto:feedback@janusworx.com">feedback@janusworx.com</a>
<br>

<br>

P.S. Subscribe to my <a href="https://janusworx.com/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<hr>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Getting greedy, aren’t I? :)&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>What I Learned Today (10th of February, 2023)</title>
      <link>https://janusworx.com/work/what-i-learned-today-2023-02-10/</link>
      <pubDate>Fri, 10 Feb 2023 19:53:47 +0530</pubDate>
      <guid>https://janusworx.com/work/what-i-learned-today-2023-02-10/</guid>
      <description>&lt;p&gt;Decided to play hooky today, because I got up &lt;em&gt;reallly&lt;/em&gt; late and then I got stuff at home to do.&lt;br&gt;
&lt;hr style=&#39;margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;&#39;/&gt;
&lt;/p&gt;
&lt;h3 id=&#34;emacs&#34;&gt;Emacs&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Since I was playing hooky with my time and attention anyway, I decided to see, if I could tackle this little thing, I wanted to happen with my Org Mode.&lt;/li&gt;
&lt;li&gt;Everytime I move my &lt;code&gt;TODO&lt;/code&gt; status for a task to &lt;code&gt;IN_PROGRESS&lt;/code&gt;, I want Org to automatically clock in for me. And everytime I move out of the &lt;code&gt;IN_PROGRESS&lt;/code&gt; state, I wanted it to clock out. This is because I want a one step process. I don’t want to change state and &lt;em&gt;then&lt;/em&gt; clock in too. And I want it this way, because changing states and telling my program, that I’m going to work on this, here, task now is more natural to me, than clocking in and out.&lt;/li&gt;
&lt;li&gt;A whole day of reading and searching later, I stumbled across &lt;a href=&#34;https://emacs.stackexchange.com/a/71195&#34;&gt;this gem on the Emacs StackExchange&lt;/a&gt; site which did &lt;em&gt;exactly&lt;/em&gt; what I was looking to do.&lt;/li&gt;
&lt;li&gt;I stole it, twiddled a bit with the variable and function names and added it to the file that &lt;a href=&#34;https://janusworx.com/blog/splitting-an-unwieldy-emacs-init.el-file/&#34;&gt;handles my Org config&lt;/a&gt;.
This is it, in its entirety&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-lisp&#34; data-lang=&#34;lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(add-hook &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;org-after-todo-state-change-hook&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;mjb/org-clock-todo-change&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(defun mjb/org-clock-todo-change ()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;string=&lt;/span&gt; org-state &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;IN_PROGRESS&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      (org-clock-in)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      (org-clock-out-if-current)))
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;And this works! For now. If something comes up, I’ll figure it out.&lt;/li&gt;
&lt;li&gt;Which brings me to the figuring out part. Doing this today has left me conflicted. In the old life, this is exactly how I’d do it. But ever since I’ve been learning to write code, I feel like this is something I should be able to do. But there’s only so much life and so much I want. I want the results today, and learning and writing Lisp is not going to happen in a jiffy. Right now my priorities are Devops related tasks. So I’ve just taken the pragmatic way out for now, and used code I found.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;urdu&#34;&gt;Urdu&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Learnt about the “suaad” group.&lt;br&gt;
And also learnt that Urdu is just as crazy as English.&lt;br&gt;
There are &lt;em&gt;three, count ’em, three&lt;/em&gt; ways of making the S sound and no particular rhyme or reason to them, save history :)&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Decided to play hooky today, because I got up <em>reallly</em> late and then I got stuff at home to do.<br>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>
</p>
<h3 id="emacs">Emacs</h3>
<ul>
<li>Since I was playing hooky with my time and attention anyway, I decided to see, if I could tackle this little thing, I wanted to happen with my Org Mode.</li>
<li>Everytime I move my <code>TODO</code> status for a task to <code>IN_PROGRESS</code>, I want Org to automatically clock in for me. And everytime I move out of the <code>IN_PROGRESS</code> state, I wanted it to clock out. This is because I want a one step process. I don’t want to change state and <em>then</em> clock in too. And I want it this way, because changing states and telling my program, that I’m going to work on this, here, task now is more natural to me, than clocking in and out.</li>
<li>A whole day of reading and searching later, I stumbled across <a href="https://emacs.stackexchange.com/a/71195">this gem on the Emacs StackExchange</a> site which did <em>exactly</em> what I was looking to do.</li>
<li>I stole it, twiddled a bit with the variable and function names and added it to the file that <a href="/blog/splitting-an-unwieldy-emacs-init.el-file/">handles my Org config</a>.
This is it, in its entirety</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-lisp" data-lang="lisp"><span style="display:flex;"><span>(add-hook <span style="color:#e6db74">&#39;org-after-todo-state-change-hook</span>
</span></span><span style="display:flex;"><span>          <span style="color:#e6db74">&#39;mjb/org-clock-todo-change</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>(defun mjb/org-clock-todo-change ()
</span></span><span style="display:flex;"><span>  (<span style="color:#66d9ef">if</span> (<span style="color:#a6e22e">string=</span> org-state <span style="color:#e6db74">&#34;IN_PROGRESS&#34;</span>)
</span></span><span style="display:flex;"><span>      (org-clock-in)
</span></span><span style="display:flex;"><span>      (org-clock-out-if-current)))
</span></span></code></pre></div><ul>
<li>And this works! For now. If something comes up, I’ll figure it out.</li>
<li>Which brings me to the figuring out part. Doing this today has left me conflicted. In the old life, this is exactly how I’d do it. But ever since I’ve been learning to write code, I feel like this is something I should be able to do. But there’s only so much life and so much I want. I want the results today, and learning and writing Lisp is not going to happen in a jiffy. Right now my priorities are Devops related tasks. So I’ve just taken the pragmatic way out for now, and used code I found.</li>
</ul>
<h3 id="urdu">Urdu</h3>
<ul>
<li>
<p>Learnt about the “suaad” group.<br>
And also learnt that Urdu is just as crazy as English.<br>
There are <em>three, count ’em, three</em> ways of making the S sound and no particular rhyme or reason to them, save history :)</p>
</li>
<li>
<p>“Proficiency in using the correct letter in a word can only come with practice”, according to the site 😂<br>
It’s still much better than English, I think :)</p>
</li>
</ul>
<h3 id="physical-fitness">Physical Fitness</h3>
<ul>
<li>Had a sit down with my trainer and explained what I wanted.</li>
<li>He got it. I also understood his approach and we worked out a happy medium<br>
Today’s session was much better.</li>
<li>I can now say, after these days, that I’ve gotten over those early gym aches.<br>
It still hurts, but I no longer drag my feet, and crawl home like a zombie.</li>
</ul>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

Feedback on this post? Mail me at <a href="mailto:feedback@janusworx.com">feedback@janusworx.com</a>
<br>

<br>

P.S. Subscribe to my <a href="https://janusworx.com/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<hr>
]]></content:encoded>
    </item>
    <item>
      <title>Ticking Off Checkboxes With the Mouse in Org Mode</title>
      <link>https://janusworx.com/personal/ticking-off-checkboxes-with-the-mouse-in-org-mode/</link>
      <pubDate>Fri, 07 Oct 2022 19:48:29 +0530</pubDate>
      <guid>https://janusworx.com/personal/ticking-off-checkboxes-with-the-mouse-in-org-mode/</guid>
      <description>&lt;p&gt;While I mostly use the keyboard when doing everything Org related, there are a &lt;em&gt;few&lt;/em&gt; times in the day, when I cannot. These are mostly mornings and evenings when I bustle about home, doing this thing and that. Things that are part of my routine. Things that are checkboxes in my &lt;code&gt;routine.org&lt;/code&gt; file.&lt;br&gt;
It helps me get through the day without thinking of whether, I gave the better half her meds or whether I remembered to call my mum or if I drank enough water by the end of the day or whether my stretches for the day are done or if the plan for the next day is made.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>While I mostly use the keyboard when doing everything Org related, there are a <em>few</em> times in the day, when I cannot. These are mostly mornings and evenings when I bustle about home, doing this thing and that. Things that are part of my routine. Things that are checkboxes in my <code>routine.org</code> file.<br>
It helps me get through the day without thinking of whether, I gave the better half her meds or whether I remembered to call my mum or if I drank enough water by the end of the day or whether my stretches for the day are done or if the plan for the next day is made.</p>
<p>Little things. Everyday things. Important things.</p>
<p>And at those times, the keyboard gets in the way.<br>
I don’t want to arrow to get to some task and <code>C-c C-c</code> to tick it off.<br>
Besides my hands are nearly always messy with something or the other and I don’t want to get gunk into my keyboard.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup><br>
Easier to just mosey the cursor to said task and click to done!<br>
But click to done, would not done! What?! Org Mode would not let me click to complete my checkboxes?</p>
<p>So, off to the <a href="https://orgmode.org/org.html">documentation</a> I went and did a search for <code>mouse</code>, and stumbled across this line.</p>
<blockquote>
<p>Piotr Zielinski wrote <code>org-mouse.el,</code> proposed agenda blocks and contributed various ideas and code snippets.</p>
</blockquote>
<p>Well, Piotr understands my pain!<br>
Some more spelunking led me to <a href="http://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/org/org-mouse.el#n46"><code>org-mouse.el</code></a>, which seems to be really well documented. Its commentary begins with …</p>
<pre tabindex="0"><code>;; Org-mouse provides mouse support for org-mode.
;;
;; http://orgmode.org
;;
;; Org-mouse implements the following features:
;; * following links with the left mouse button (in Emacs 22)
;; * subtree expansion/collapse (org-cycle) with the left mouse button
;; * several context menus on the right mouse button:
;;    + general text
;;    + headlines
;;    + timestamps
;;    + priorities
;;    + links
;;    + tags
;; * promoting/demoting/moving subtrees with mouse-3
;;    + if the drag starts and ends in the same line then promote/demote
;;    + otherwise move the subtree
</code></pre><p><a href="http://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/org/org-mouse.el#n101">Line 101</a>, was what put a smile on my face though.</p>
<pre tabindex="0"><code>;; Version 0.17
;; + toggle checkboxes with a single click
</code></pre><p><br>

<a href="http://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/org/org-mouse.el#n46">All it took</a>, to get it working was to put <code>(require 'org-mouse)</code> into my <code>init.el</code> et voilà. I can clicky-clicky-to-done to my heart’s content.</p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<figure class="align-center ">
    <img loading="lazy" src="/images/2022/org-mouse.png#center"/> 
</figure>

<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>
</p>
<p>P.S. Subscribe to my <a href="/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>well, more gunk than is necessary.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Noah’s in Emacs!</title>
      <link>https://janusworx.com/personal/noahs-in-emacs/</link>
      <pubDate>Thu, 06 Oct 2022 18:41:31 +0530</pubDate>
      <guid>https://janusworx.com/personal/noahs-in-emacs/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://janusworx.com/blog/thank-god-for-noah/&#34;&gt;I wrote the other day&lt;/a&gt;, about switching to Noah Webster’s dictionary everywhere, I possibly could. Now I did that after reading this lovely &lt;a href=&#34;https://jsomers.net/blog/dictionary&#34;&gt;James Somers&lt;/a&gt; post. And that post seems to be resounding through the web, with folks integrating it into their workflows in different ways.&lt;/p&gt;
&lt;p&gt;So I was really happy when I read &lt;a href=&#34;https://irreal.org/blog/?p=10824&#34;&gt;Jon Snader’s&lt;/a&gt; post telling me I could have my beloved Webster’s dictionary in Emacs! This sounded too good to be true! I didn’t believe it!&lt;br&gt;
Because why would I believe some old, wise wizard who’s only been writing about Emacs on a near daily basis for close to &lt;em&gt;&lt;a href=&#34;http://irreal.org/blog/&#34;&gt;fourteen years?!&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
I had to try this out myself!
&lt;hr style=&#39;margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;&#39;/&gt;

So I whip out ye, old, trusty scratch buffer, type crap into it and select it.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;br&gt;
&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://janusworx.com/images/2022/nde1.png#center&#34;/&gt; 
&lt;/figure&gt;

&lt;hr style=&#39;margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;&#39;/&gt;

And then I fire up &lt;code&gt;M-x dictionary-search&lt;/code&gt;, like Snader tells me to
&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://janusworx.com/images/2022/nde2.png#center&#34;/&gt; 
&lt;/figure&gt;

&lt;hr style=&#39;margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;&#39;/&gt;

This is the moment of poop … err truth! I hit return and …
&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://janusworx.com/images/2022/nde3.png#center&#34;/&gt; 
&lt;/figure&gt;

&lt;hr style=&#39;margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;&#39;/&gt;

How now brown cow?! It actually works!
&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://janusworx.com/images/2022/nde4.png#center&#34;/&gt; 
&lt;/figure&gt;
&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><a href="/blog/thank-god-for-noah/">I wrote the other day</a>, about switching to Noah Webster’s dictionary everywhere, I possibly could. Now I did that after reading this lovely <a href="https://jsomers.net/blog/dictionary">James Somers</a> post. And that post seems to be resounding through the web, with folks integrating it into their workflows in different ways.</p>
<p>So I was really happy when I read <a href="https://irreal.org/blog/?p=10824">Jon Snader’s</a> post telling me I could have my beloved Webster’s dictionary in Emacs! This sounded too good to be true! I didn’t believe it!<br>
Because why would I believe some old, wise wizard who’s only been writing about Emacs on a near daily basis for close to <em><a href="http://irreal.org/blog/">fourteen years?!</a></em><br>
I had to try this out myself!
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

So I whip out ye, old, trusty scratch buffer, type crap into it and select it.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup><br>
<figure class="align-center ">
    <img loading="lazy" src="/images/2022/nde1.png#center"/> 
</figure>

<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

And then I fire up <code>M-x dictionary-search</code>, like Snader tells me to
<figure class="align-center ">
    <img loading="lazy" src="/images/2022/nde2.png#center"/> 
</figure>

<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

This is the moment of poop … err truth! I hit return and …
<figure class="align-center ">
    <img loading="lazy" src="/images/2022/nde3.png#center"/> 
</figure>

<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

How now brown cow?! It actually works!
<figure class="align-center ">
    <img loading="lazy" src="/images/2022/nde4.png#center"/> 
</figure>
</p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

P.S. Subscribe to my <a href="/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>the most beautiful dictionary in the world and my mind wants to look up crap. Of course.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Restart Emacs on System Startup</title>
      <link>https://janusworx.com/work/restart-emacs-on-system-startup/</link>
      <pubDate>Wed, 28 Sep 2022 11:00:00 +0530</pubDate>
      <guid>https://janusworx.com/work/restart-emacs-on-system-startup/</guid>
      <description>&lt;p&gt;&lt;em&gt;This post was originaly published on 2022-09-27.&lt;br&gt;
&lt;a href=&#34;#update-2022-09-28&#34;&gt;Updated 2022-09-28&lt;/a&gt;, to include the improved script.&lt;/em&gt;&lt;br&gt;
&lt;hr style=&#39;margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;&#39;/&gt;

It’s been a year, since I figured out &lt;a href=&#34;https://janusworx.com/blog/emacsclient-does-not-recognise-compose-key-sequences/&#34;&gt;the hack&lt;/a&gt; that finally let me use my &lt;a href=&#34;https://en.wikipedia.org/wiki/Compose_key&#34;&gt;Compose key&lt;/a&gt; in Emacs.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;br&gt;
Without it, I am unable to type any kind of quotation marks or umlauts in emacs.&lt;br&gt;
A year in, and I’m tired of restarting the service everytime the machine comes on.&lt;br&gt;
&lt;a href=&#34;https://janusworx.com/tags/automation/&#34;&gt;The computer can do that for me.&lt;/a&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><em>This post was originaly published on 2022-09-27.<br>
<a href="#update-2022-09-28">Updated 2022-09-28</a>, to include the improved script.</em><br>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

It’s been a year, since I figured out <a href="/blog/emacsclient-does-not-recognise-compose-key-sequences/">the hack</a> that finally let me use my <a href="https://en.wikipedia.org/wiki/Compose_key">Compose key</a> in Emacs.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup><br>
Without it, I am unable to type any kind of quotation marks or umlauts in emacs.<br>
A year in, and I’m tired of restarting the service everytime the machine comes on.<br>
<a href="/tags/automation/">The computer can do that for me.</a></p>
<p>So I whipped up this tiny bash script</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env bash
</span></span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> <span style="color:#f92672">[[</span> <span style="color:#66d9ef">$((</span> <span style="color:#66d9ef">$(</span>pidof -s emacs<span style="color:#66d9ef">)</span> <span style="color:#66d9ef">))</span> -le <span style="color:#ae81ff">10000</span>  <span style="color:#f92672">]]</span>; <span style="color:#66d9ef">then</span>
</span></span><span style="display:flex;"><span>	systemctl --user restart emacs; 
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">else</span>
</span></span><span style="display:flex;"><span>	:;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">fi</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>It just arbitrarily checks for the Emacs service’s <code>PID</code> and then if it’s lesser than or equal to 10000, it goes ahead and restarts the service.<br>
This is just some superstitious thing I did, because when I was troubleshooting all those months ago, I assumed that if Emacs started at an <code>ID</code> in the low thousands, it must not have been loading something and restarting it to get a higher process <code>ID</code> meant what ever it needed must have loaded.</p>
<p>I learnt a couple of things doing it this way too.</p>
<ol>
<li>The output of a bash command is a string.</li>
<li>I use <code>$(( some_numerical_string  ))</code> to convert said string into an integer</li>
<li><code>:</code> means <code>pass</code> in bash-speak</li>
</ol>
<p>What I <em>ought</em> to do is to check for the <em>existence</em> of a <code>PID</code> and if there is one, to then go ahead and restart emacs. I’ll do that some other time. Because right now, I put this script into my system startup and it <em>just works.</em></p>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<h3 id="update-2022-09-28">Update 2022-09-28</h3>
<p>I obviously am incapable, of leaving well enough alone.<br>
As I was in the bath this morning, it struck me that I was restarting the service using <code>systemctl restart …</code><br>
So I could just check for the exit status of a <code>systemctl status</code> command, and then depending on what I got, do something. If it was running, I could just restart it.<br>
I checked on the command line and sure enough, if a service is running, the exit status is <code>0</code> and if it isn’t, the status is <code>3</code> .<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup><br>
So … then I monkeyed with the script to this</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">5
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">6
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">7
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e">#!/usr/bin/env bash
</span></span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> systemctl --user status emacs &gt; /dev/null; <span style="color:#66d9ef">then</span>
</span></span><span style="display:flex;"><span>    systemctl --user restart emacs;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">else</span>
</span></span><span style="display:flex;"><span>    :;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">fi</span>;
</span></span></code></pre></td></tr></table>
</div>
</div><p>If the emacs service is running, restart it, else do nothing.<br>
This ought to quiet the monkey brain for a while.<br>
I hope 🙂<br>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>
</p>
<p>P.S. Subscribe to my <a href="/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>all i have to do is restart my Emacs service as soon as the system boots up&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>I don’t know if it is always 3. It could probably vary. But it suffices in my case that it isn’t 0.&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Blocks in Org Mode</title>
      <link>https://janusworx.com/work/blocks-in-org-mode/</link>
      <pubDate>Tue, 27 Sep 2022 14:07:32 +0530</pubDate>
      <guid>https://janusworx.com/work/blocks-in-org-mode/</guid>
      <description>&lt;p&gt;I remember, when I first learned it, the Org Manual &lt;a href=&#34;https://orgmode.org/orgguide.html#Paragraphs&#34;&gt;mentioning&lt;/a&gt; I could have code, quotes, poetry and sundry self structured blocks of text, where the text in that block would flow like I wanted it to. I could have indentation or line breaks as I pleased.&lt;br&gt;
And then I promptly forgot about it.&lt;/p&gt;
&lt;p&gt;The only thing I did remember were code blocks.&lt;br&gt;
And that I needed to do a &lt;code&gt;#+begin_src&lt;/code&gt; and then a &lt;code&gt;#+end_src&lt;/code&gt; and put my code in the middle. And all this while, I would keep typing it in, by hand.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>I remember, when I first learned it, the Org Manual <a href="https://orgmode.org/orgguide.html#Paragraphs">mentioning</a> I could have code, quotes, poetry and sundry self structured blocks of text, where the text in that block would flow like I wanted it to. I could have indentation or line breaks as I pleased.<br>
And then I promptly forgot about it.</p>
<p>The only thing I did remember were code blocks.<br>
And that I needed to do a <code>#+begin_src</code> and then a <code>#+end_src</code> and put my code in the middle. And all this while, I would keep typing it in, by hand.</p>
<p>Until I tired of keeping on doing that shit, because there are more and more notes that are now going into my <a href="/tags/zettelkasten">zettelkasten</a> and decided well, <a href="/tags/automation/">the computer can do that for me.</a><br>
So, I went back to the Org Mode documentation and discovered <a href="https://orgmode.org/manual/Structure-Templates.html">Structure Templates.</a><br>
And now, I am at peace!</p>
<p>Turns out, all I needed was <code>(org-insert-structure-template)</code> aka <code>C-c C-,</code><br>
Here’s some code I’ve selected in a document</p>
<figure class="align-center ">
    <img loading="lazy" src="/images/2022/org-blocks-1.png#center"/> 
</figure>

<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<p>Now I hit <code>C-c C-,</code>, which brings up a whole host of options, with a prompt!<br>
Do I want this block of text to be a quote? Or some verse?<br>
Well, this is just boring code, so I choose source with the <code>s</code> key</p>
<figure class="align-center ">
    <img loading="lazy" src="/images/2022/org-blocks-2.png#center"/> 
</figure>

<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<p>And tada! The block is surrounded by the begin and end tags, and is now a source block! I could add the programming language after <code>#+begin_src</code> to get highlighting as well, but that’s a story for another day.</p>
<figure class="align-center ">
    <img loading="lazy" src="/images/2022/org-blocks-3.png#center"/> 
</figure>

<p>I’m practicing this, so that I get <code>C-c C-,</code> into my muscle memory, because be it verse, quote, code, example or exports, I know I will be making heavy use of Structure Templates.</p>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<p>P.S. Subscribe to my <a href="/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
]]></content:encoded>
    </item>
    <item>
      <title>Rename a File as You Work on It in Emacs</title>
      <link>https://janusworx.com/work/rename-a-file-as-you-work-on-it-in-emacs/</link>
      <pubDate>Fri, 16 Sep 2022 19:23:18 +0530</pubDate>
      <guid>https://janusworx.com/work/rename-a-file-as-you-work-on-it-in-emacs/</guid>
      <description>&lt;p&gt;I often fat fingered the file name / buffer name / Org Roam link name when launching something new.&lt;br&gt;
And then when I am busy and knee deep in work, I glance up to see the error glaring at me.&lt;/p&gt;
&lt;p&gt;I &lt;del&gt;figured out&lt;/del&gt;, &lt;a href=&#34;https://stackoverflow.com/a/17830120&#34;&gt;looked up&lt;/a&gt; how to fix it&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Hit &lt;code&gt;C-x d&lt;/code&gt; to flip into a dired buffer&lt;/li&gt;
&lt;li&gt;Find my filename in the list. (&lt;code&gt;C-s&lt;/code&gt; can help search and narrow stuff)&lt;/li&gt;
&lt;li&gt;Then &lt;code&gt;C-x C-q&lt;/code&gt; to go into &lt;a href=&#34;https://www.gnu.org/software/emacs/manual/html_node/emacs/Wdired.html&#34;&gt;Wdired mode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Change the file name to whatever I want it to&lt;/li&gt;
&lt;li&gt;&lt;code&gt;C-c C-c&lt;/code&gt; to be done with it.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Et voilà!&lt;br&gt;
(If you are editing an Org Roam node, &lt;code&gt;M-x org-roam-db-sync&lt;/code&gt; to keep everything shipshape)&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>I often fat fingered the file name / buffer name / Org Roam link name when launching something new.<br>
And then when I am busy and knee deep in work, I glance up to see the error glaring at me.</p>
<p>I <del>figured out</del>, <a href="https://stackoverflow.com/a/17830120">looked up</a> how to fix it</p>
<ol>
<li>Hit <code>C-x d</code> to flip into a dired buffer</li>
<li>Find my filename in the list. (<code>C-s</code> can help search and narrow stuff)</li>
<li>Then <code>C-x C-q</code> to go into <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Wdired.html">Wdired mode</a></li>
<li>Change the file name to whatever I want it to</li>
<li><code>C-c C-c</code> to be done with it.</li>
</ol>
<p>Et voilà!<br>
(If you are editing an Org Roam node, <code>M-x org-roam-db-sync</code> to keep everything shipshape)<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<p>Update, 2022-09-17: <a href="https://www.linkedin.com/feed/update/urn:li:activity:6976545929109626880?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A6976545929109626880%2C6976586196365783040%29">Antón responded to my post</a> on Linkedin to suggest that step 3 could also be done alternatively by just hitting <code>R</code> at the filename, which would let me rename the file (using <code>dired-do-rename</code>)</p>
<p>P.S. Subscribe to my <a href="/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>I know, I know, the db eventually catches up. But if you’ve been reading me long enough, you know I’m enough of a control freak to be doing this 😂&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Moving Tasks Between Org Files in Emacs</title>
      <link>https://janusworx.com/work/moving-tasks-between-org-files-in-emacs/</link>
      <pubDate>Tue, 23 Aug 2022 16:13:08 +0530</pubDate>
      <guid>https://janusworx.com/work/moving-tasks-between-org-files-in-emacs/</guid>
      <description>&lt;p&gt;More diving into Org Mode and Emacs.&lt;/p&gt;
&lt;p&gt;I have a &lt;code&gt;stuff-to-do.org&lt;/code&gt; file, that serves as an inbox for most long term tasks that I want to tackle. Stuff that needs doing, books that I want to buy, books that I want to read, courses that I want to learn, movies or tv shows that I want to watch, stuff on the web that I want to catchup on, etc. etc. etc.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>More diving into Org Mode and Emacs.</p>
<p>I have a <code>stuff-to-do.org</code> file, that serves as an inbox for most long term tasks that I want to tackle. Stuff that needs doing, books that I want to buy, books that I want to read, courses that I want to learn, movies or tv shows that I want to watch, stuff on the web that I want to catchup on, etc. etc. etc.</p>
<p>And all this while, I have been moving tasks into my <code>daily-tasks.org</code> as and when I tackle them. This meant I needed to open both files, and then cut said task out of one and paste it into the other. And as usual, I am now doing this often enough, that it’s become bothersome. Because there are a couple more files as well, that serve as inboxes.</p>
<p>And the same question arises, as usual. Can Emacs help with this?<br>
The answer as it almost always is, is a big, resounding, <em><strong>Yes!</strong></em></p>
<p>I know it had to do something with what Org calls a refile, since I keep using <code>C-c C-w</code> to move items between different headings in my daily tasks file.<br>
So after a bit of <a href="https://orgmode.org/manual/Refile-and-Copy.html">reading the manual</a>, <a href="https://www.johnborwick.com/2019/02/23/org-todo-setup.html#org47b732f">reading blog posts</a>, spelunking through the <a href="https://emacs.stackexchange.com/questions/55014/how-do-i-move-a-subtree-to-another-file">emacs stackexchange</a>, stalking the <a href="https://www.reddit.com/r/orgmode/comments/g5006o/comment/fo0k8gy/">Org Mode reddit</a> and an hour of head scratching, I roughed up something that does what I want :)</p>
<p>In a nutshell, what I am doing is what Org calls, a <a href="https://orgmode.org/manual/Refile-and-Copy.html">Refile and Copy.</a> The manual page let me know that I could do this <em>across files too</em>. This was exactly what I wanted. It also told me that I needed to configure <code>org-refile-targets</code> variable to tell Org a list of locations, that it would then let me refile my tasks to.</p>
<p>Having <a href="/blog/splitting-an-unwieldy-emacs-init.el-file/">split my emacs init.el file</a> into a set of logical files, I opened up the file that held my org settings (very imaginatively called <code>emacs-org-mode-settings.el</code>) and then thought a bit about what files I would want Org to pop up when I wanted to file tasks to.<br>
Would just my daily tasks file do? What if I wanted to file something <em>out</em> of my daily tasks file? Or what if I wanted crisscross transfers between all my task inboxes and daily task file?</p>
<p>I then realised that I was already telling Org Agenda to scan my tasks folder (which holds all my productivity system files) for tasks and dates and schedules and deadlines. I decided to use the same set of files as my targets for refiling. And this turned out to be easier to do than expected. I just had to tell Org to use <code>org-agenda-files</code> as the value for <code>org-refile-targets</code></p>
<p>It looks a little bit like this.</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-lisp" data-lang="lisp"><span style="display:flex;"><span>(<span style="color:#66d9ef">setq</span> org-refile-targets
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#39;</span>((<span style="color:#66d9ef">nil</span> <span style="color:#e6db74">:maxlevel</span> <span style="color:#f92672">.</span> <span style="color:#ae81ff">1</span>)
</span></span><span style="display:flex;"><span>	   (org-agenda-files <span style="color:#e6db74">:maxlevel</span> <span style="color:#f92672">.</span> <span style="color:#ae81ff">1</span>)))
</span></span></code></pre></td></tr></table>
</div>
</div><p><br>

I’m telling <code>org-refile-targets</code> on line 1, to look for targets in two locations.<br>
Line 3, is what we were talking about above. Org will look to the same location that <code>org-agenda-files</code> points to, for its refile targets.<br>
Line 2, is where I tell Org to include my current file, the one I am working on, as a target. It helps me move stuff in my daily tasks file from one day to another.<br>
The <code>maxlevel</code> bit is to tell Org the level of headlines to show as targets. Org has headlines and sub-headlines and sub-sub-headlines.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> I just need the first level, which is why it’s set to 1.<br>
It seemed to work, until I ran into a small stumbling block. Org would not let me refile my task at level 0, i.e. the root of the file as a level 1 headline. It could only nest under an existing headline. So, line 4 below, fixes that for me.</p>
<div class="highlight"><div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;">
<table style="border-spacing:0;padding:0;margin:0;border:0;"><tr><td style="vertical-align:top;padding:0;margin:0;border:0;">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3
</span><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">4
</span></code></pre></td>
<td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
<pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-lisp" data-lang="lisp"><span style="display:flex;"><span>(<span style="color:#66d9ef">setq</span> org-refile-targets
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#39;</span>((<span style="color:#66d9ef">nil</span> <span style="color:#e6db74">:maxlevel</span> <span style="color:#f92672">.</span> <span style="color:#ae81ff">1</span>)
</span></span><span style="display:flex;"><span>	   (org-agenda-files <span style="color:#e6db74">:maxlevel</span> <span style="color:#f92672">.</span> <span style="color:#ae81ff">1</span>)))
</span></span><span style="display:flex;"><span>(<span style="color:#66d9ef">setq</span> org-refile-use-outline-path <span style="color:#e6db74">&#39;file</span>)
</span></span></code></pre></td></tr></table>
</div>
</div><br>

<p>And tada! It works! You can see it in action below.<br>
Click any of the images below to view them, larger.</p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

The waiting task on the right (writing this post), needs to come in to my daily tasks file on the left
<a href="/images/2022/org-mode-move-task-1.png"><figure class="align-center ">
    <img loading="lazy" src="/images/2022/org-mode-move-task-1.png#center"/> 
</figure>
</a></p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

So I hit <code>C-c C-w</code> and Org Mode helpfully pops up what target it thinks I want to move my task to.<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup><br>
I can hit the tab key to get a list of other files and targets.<br>
<a href="/images/2022/org-mode-move-task-2.png"><figure class="align-center ">
    <img loading="lazy" src="/images/2022/org-mode-move-task-2.png#center"/> 
</figure>
</a></p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

Once I do that, the task hops over to the right place!<br>
<a href="/images/2022/org-mode-move-task-3.png"><figure class="align-center ">
    <img loading="lazy" src="/images/2022/org-mode-move-task-3.png#center"/> 
</figure>
</a></p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

P.S. Subscribe to my <a href="/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>It’s an outliner after all :)&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>The daily tasks file, under today’s date&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Splitting an Unwieldy Emacs `init.el`</title>
      <link>https://janusworx.com/personal/splitting-an-unwieldy-emacs-init.el-file/</link>
      <pubDate>Sat, 13 Aug 2022 14:43:45 +0530</pubDate>
      <guid>https://janusworx.com/personal/splitting-an-unwieldy-emacs-init.el-file/</guid>
      <description>&lt;p&gt;I started with a very simple &lt;a href=&#34;https://www.gnu.org/software/emacs/manual/html_node/emacs/Init-File.html&#34;&gt;&lt;code&gt;init.el&lt;/code&gt;&lt;/a&gt; when I started using Emacs.&lt;br&gt;
Rather than learning it in a structured manner, I just decided to jump in at whatever end of the pool and figure it out as I go.&lt;/p&gt;
&lt;p&gt;I may not know Emacs, but I do know what I want out of a general purpose text editor.&lt;br&gt;
And bending Emacs to do my will, to do what I want it to do or behave in the manner I want it to behave. And Emacs to my eternal gratitude, is flexible to do all I want, thanks to the last &lt;a href=&#34;https://www.jwz.org/doc/emacs-timeline.html&#34;&gt;forty six years&lt;/a&gt; worth of hard work and ideas of people from all over.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>I started with a very simple <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Init-File.html"><code>init.el</code></a> when I started using Emacs.<br>
Rather than learning it in a structured manner, I just decided to jump in at whatever end of the pool and figure it out as I go.</p>
<p>I may not know Emacs, but I do know what I want out of a general purpose text editor.<br>
And bending Emacs to do my will, to do what I want it to do or behave in the manner I want it to behave. And Emacs to my eternal gratitude, is flexible to do all I want, thanks to the last <a href="https://www.jwz.org/doc/emacs-timeline.html">forty six years</a> worth of hard work and ideas of people from all over.</p>
<p>Want your screen to be a certain width, because you miss <a href="https://en.wikipedia.org/wiki/Color_Graphics_Adapter">CGA</a> screens? <a href="https://www.emacswiki.org/emacs/FillParagraph#h5o-2">Emacs can do that.</a><br>
Want your font to be monospaced, because it helps you write? <a href="https://www.emacswiki.org/emacs/SetFonts">Emacs can do that.</a><br>
Want to tweak the space between your lines, because your font looks better that way? <a href="https://www.emacswiki.org/emacs/LineSpacing">Emacs can do that.</a><br>
Want to save your place in the file, so you can come back to where you were? <a href="https://www.emacswiki.org/emacs/SavePlace">Emacs can do that.</a><br>
Themes? Want your editor to look a certain way? <a href="https://github.com/vutran1710/Ayu-Theme-Emacs">Emacs can do that.</a><br>
Love Markdown? <a href="https://jblevins.org/projects/markdown-mode/">Emacs does that.</a></p>
<p>That’s just the core editor and that’s just me setting up my writing environment.<br>
That’s just me scratching the surface.<br>
I haven’t scratched the universe that is setting it up as <a href="https://realpython.com/emacs-the-best-python-editor/">an IDE</a>, or using it as a <a href="https://magit.vc/">Git frontend</a>, or to read <a href="https://www.emacswiki.org/emacs/CategoryMail">mail</a>, or be an <a href="https://www.emacswiki.org/emacs/InternetRelayChat">IRC client</a> or <a href="https://www.masteringemacs.org/article/fun-games-in-emacs">play games</a> or the <a href="https://sachachua.com/blog/category/emacs/">million</a> other things it can do.</p>
<p>As, for me, I have slowly branched out my use of Emacs too.<br>
In addition to its use as a daily general purpose text editor, I use Emacs in three specific domains.</p>
<ol>
<li>As an editor for all my blog posts, and prose writing. I use <a href="https://jblevins.org/projects/markdown-mode/">Markdown Mode</a> to accomplish this.</li>
<li>As a second brain. To write down notes and references and ideas and to link them all together. A <a href="https://fs.blog/how-to-read-a-book/#syntopical_reading">syntopical</a> sort of linking. A <a href="https://kadavy.net/blog/posts/how-to-take-smart-notes-summary/">Zettelkasten</a>, in fact. <a href="https://www.orgroam.com/">Org Roam</a> is the tool I am using to build this edifice.</li>
<li>And as a tool to manage my productivity, my day and my <em><strong>sanity</strong></em> using the awesome <a href="https://orgmode.org/">Org Mode.</a><sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></li>
</ol>
<p>Which brings me to my current conundrum.<br>
All those tweaks I mentioned above?<br>
They are all in a file called the <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Init-File.html"><code>init.el</code></a>, which Emacs reads everytime it starts up.<br>
And given my propensity to be a control freak, while at the same time verbosely documenting every change I make, my file had already grown to 300 lines and counting.<br>
Going back to read stuff and change existing things meant scrolling up and down or searching across 300 odd lines.<br>
And I quickly tired of that.</p>
<p>Which is when I learnt Emacs let me organise my <code>init</code> files too!<br>
Between learning to <a href="https://www.emacswiki.org/emacs/LoadingLispFiles">load lisp files</a> and how to <a href="http://xahlee.info/emacs/emacs/organize_your_dot_emacs.html">organize my init files</a>, I quickly divided my main file into a total of four files.</p>
<ol>
<li>The base <code>init.el</code> file, containing things I thought were absolutely needed<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup></li>
<li>A miscellaneous file, that would hold everything else Emacs.<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup></li>
<li>A file to hold my Org Roam Zettelkasten settings.</li>
<li>A file to hold my Org Mode settings.</li>
</ol>
<p>And then, within my base file, I called the other three, like so … <sup id="fnref:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-elisp" data-lang="elisp"><span style="display:flex;"><span>(<span style="color:#a6e22e">load</span> <span style="color:#e6db74">&#34;~/.config/emacs/emacs-misc-settings.el&#34;</span>)
</span></span><span style="display:flex;"><span>(<span style="color:#a6e22e">load</span> <span style="color:#e6db74">&#34;~/.config/emacs/emacs-org-mode-settings.el&#34;</span>)
</span></span><span style="display:flex;"><span>(<span style="color:#a6e22e">load</span> <span style="color:#e6db74">&#34;~/.config/emacs/emacs-org-roam-settings.el&#34;</span>)
</span></span></code></pre></div><p>And that gave me space to breathe :)<br>
Everything is now properly organised.<br>
I can just go look in the appropriate file (or add one) for the appropriate setting.<br>
And life is peachy again.</p>
<p>Of course, once again, I am barely scratching the surface, compared to other folks’ <a href="https://www.emacswiki.org/emacs/DotEmacsStructuring#h5o-5">vastly elaborate setups.</a><br>
But this works for me, and I’m really happy!</p>
<p><hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

P.S. Subscribe to my <a href="/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>The principles, of course are <a href="https://www.calnewport.com/">Cal Newportian</a>.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>font, package installs, theme, backup folder&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>nearly everything else, I mentiond above, page column width, line height, recent file, save place, etc&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:4">
<p>I’m sure there are better ways of writing this, but I didn’t want to go bikeshedding&#160;<a href="#fnref:4" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Tomorrow is Another Date</title>
      <link>https://janusworx.com/work/tomorrow-is-another-date/</link>
      <pubDate>Sun, 31 Jul 2022 15:17:11 +0530</pubDate>
      <guid>https://janusworx.com/work/tomorrow-is-another-date/</guid>
      <description>&lt;p&gt;&lt;br&gt;

&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://janusworx.com/images/2022/org-daily-tasks.png#center&#34;/&gt; 
&lt;/figure&gt;

&lt;hr style=&#39;margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;&#39;/&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://orgmode.org/&#34;&gt;Org mode&lt;/a&gt; is &lt;del&gt;slowly spreading its tentacles&lt;/del&gt; increasingly becoming something, I cannot live without, to manage my day.&lt;br&gt;
And I’m getting pretty consistent with it too!&lt;/p&gt;
&lt;p&gt;Like you see above, I use dates as my headlines, below which I list the various tasks for the day.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;br&gt;
And that’s where I run into my current itch to scratch.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><br>

<figure class="align-center ">
    <img loading="lazy" src="/images/2022/org-daily-tasks.png#center"/> 
</figure>

<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>
</p>
<p><a href="https://orgmode.org/">Org mode</a> is <del>slowly spreading its tentacles</del> increasingly becoming something, I cannot live without, to manage my day.<br>
And I’m getting pretty consistent with it too!</p>
<p>Like you see above, I use dates as my headlines, below which I list the various tasks for the day.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup><br>
And that’s where I run into my current itch to scratch.</p>
<p>I don’t want to keep typing out the date daily.<br>
The computer can do that for me.<br>
But how? Of the millions of ways possible, what do I want to do?<br>
My first thought was to figure out some way to <a href="https://www.emacswiki.org/emacs/InsertingTodaysDate">insert a date into Emacs.</a><br>
And then I thought, why only emacs? I want it <em>systemwide,</em> across all my programs.<br>
So I checked if <a href="https://espanso.org/">Espanso</a>, my friendly text expansion program, would do that for me.<br>
<a href="https://espanso.org/docs/matches/basics/#dynamic-matches">Turns out, Espanso does!</a><br>
I could just type <code>:dtx</code> wherever I wanted and Espanso would happily insert the date in there. And so I did that for a few days.<br>
Problem solved? Well, that’s when the itch got stronger.<br>
<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>

<figure class="align-center ">
    <img loading="lazy" src="/images/2022/org-shutdown-routine.png#center"/> 
</figure>

<hr style='margin-left: auto; margin-right: auto; margin-bottom: 40px; margin-top: 50px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238);  height: 1px;'/>
</p>
<p>See my evening tasks above?<br>
I use Cal Newport’s idea of a <a href="https://www.calnewport.com/blog/2009/06/08/drastically-reduce-stress-with-a-work-shutdown-ritual/">shutdown ritual</a>, to empty my mind and plan the next day, every evening.<br>
Which, for the past couple of weeks meant using my little expansion snippet to put in today’s date for the next day’s headline, as I began planning it. And I’d just manually change the date part to the next day’s date.<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup></p>
<p>Until today.</p>
<p>I typed in <code>:dtx</code> and I got 2022-07-31.<br>
And then the lazy bum inside me groaned. What? I need to the change the <em>month</em> too?<br>
The computer can do that for me!</p>
<p>So I went back to Espanso to see if it did support date expansions for tomorrow.<br>
<a href="https://espanso.org/docs/matches/extensions/#future-and-past-dates">Turns out it does!</a><br>
Only for some reason, it just wouldn’t play ball with the way I want my dates expressed, <em>(YYYY-MM-DD)</em>. It would throw weird <code>yaml</code> errors.<br>
And then I recalled Emacs <a href="https://www.emacswiki.org/emacs/InsertingTodaysDate">just called the shell to do it.</a><br>
So I went looking to see, if Espanso could call the operating system shell<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup> to do expansions ala Emacs.<br>
<a href="https://espanso.org/docs/matches/extensions/#shell-extension">Turns out, it can!</a></p>
<p>Finally, I looked up how the <code>date</code> command worked with past and future dates, and jigged up a small expansion snippet and put that into Espanso’s <code>match/base.yaml</code></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span>  - <span style="color:#f92672">trigger</span>: <span style="color:#e6db74">&#34;:dttx&#34;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">replace</span>: <span style="color:#e6db74">&#34;{{output}}&#34;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">vars</span>:
</span></span><span style="display:flex;"><span>      - <span style="color:#f92672">name</span>: <span style="color:#ae81ff">output</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">type</span>: <span style="color:#ae81ff">shell</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">params</span>:
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">cmd</span>: <span style="color:#e6db74">&#34;date  --date=&#39;tomorrow&#39; +&#39;%Y-%m-%d&#39;&#34;</span>
</span></span></code></pre></div><p><br>

Et voilà!<br>
No more backspacing and struggling with Espanso undos and date calculations.<br>
<code>:dttx</code> turns into tomorrow’s date:<code>2022-08-01</code>!<br>
And the monkey brain is happy again :)</p>
<p>P.S. Subscribe to my <a href="/subscribe/">mailing list!</a><br>
Forward these posts and letters to your friends and get them to subscribe!<br>
P.P.S. Feed my <a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share">insatiable reading habit.</a></p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Subtasks not shown.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>like yesterday evening, I typed in <code>:dtx</code> to get <code>2022-07-30</code> for e.g. and then changed the <code>30</code> to a <code>31</code>.&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>in my case, <code>bash</code>&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
  </channel>
</rss>
