<?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>NoteToself on Janusworx</title>
    <link>https://janusworx.com/tags/notetoself/</link>
    <description>Recent content in NoteToself 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.160.1</generator>
    <language>en</language>
    <lastBuildDate>Thu, 06 Nov 2025 08:34:36 +0530</lastBuildDate>
    <atom:link href="https://janusworx.com/tags/notetoself/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Hugo Redirect From Post in One Section to Another</title>
      <link>https://janusworx.com/work/hugo-redirect-from-post-in-one-section-to-another/</link>
      <pubDate>Thu, 06 Nov 2025 08:34:36 +0530</pubDate>
      <guid>https://janusworx.com/work/hugo-redirect-from-post-in-one-section-to-another/</guid>
      <description>&lt;h2 id=&#34;problem&#34;&gt;Problem&lt;/h2&gt;
&lt;p&gt;I have a post in one section of my site, say &lt;a href=&#34;https://janusworx.com/nm/2025-11-06/&#34;&gt;notes and miscellanea&lt;/a&gt;&lt;br&gt;
That is my canonical post.&lt;br&gt;
But I also need it to show up in the work section of my site, possibly with a another name.&lt;br&gt;
A Hugo &lt;code&gt;alias&lt;/code&gt; in the &lt;code&gt;yaml&lt;/code&gt; front matter does not work, since both sections exist and Hugo gets confused.&lt;/p&gt;
&lt;h2 id=&#34;solution&#34;&gt;Solution&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Make sure &lt;code&gt;layouts/redirect/single.html&lt;/code&gt; exists within your Hugo folder structure and it contains just this line …&lt;/li&gt;
&lt;/ol&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-golang&#34; data-lang=&#34;golang&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{{&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;template&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;alias.html&amp;#34;&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;dict&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Permalink&amp;#34;&lt;/span&gt; .&lt;span style=&#34;color:#a6e22e&#34;&gt;Params&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;target&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Create your &lt;a href=&#34;https://janusworx.com/nm/2025-11-06/&#34;&gt;orginal post&lt;/a&gt; as usual&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Then&lt;/em&gt; go create a post in your &lt;em&gt;other&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; section with the following metadata:&lt;/li&gt;
&lt;/ol&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-yaml&#34; data-lang=&#34;yaml&#34;&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;&lt;span style=&#34;color:#f92672&#34;&gt;title&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;&amp;lt;Your title here&amp;gt;&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:#75715e&#34;&gt;#date autogenerated by my archetype. if missing, add date&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:#f92672&#34;&gt;date&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;2025-11-06T08:30:54&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;+05&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;30&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:#f92672&#34;&gt;type&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;redirect&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:#f92672&#34;&gt;target&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;&amp;lt;url-to-redirect-to&amp;gt;&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:#f92672&#34;&gt;summary&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;&amp;lt;Optional text, that will appear in the sectiones listing page&amp;gt;&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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;The &lt;code&gt;date&lt;/code&gt; field is critical. The post might not appear where you expect it, if it’s absent.&lt;br&gt;
If not date, then you might need to use &lt;code&gt;weight&lt;/code&gt;. One of the two is needed.&lt;/li&gt;
&lt;li&gt;In my case, the metadata looked like this:&lt;/li&gt;
&lt;/ol&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-yaml&#34; data-lang=&#34;yaml&#34;&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;&lt;span style=&#34;color:#f92672&#34;&gt;title&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;The Plan for My New Hetzner VM&amp;#34;&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:#f92672&#34;&gt;date&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;2025-11-06T08:30:54&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;+05&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;30&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:#f92672&#34;&gt;type&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;redirect&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:#f92672&#34;&gt;target&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;/nm/2025-11-06/&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:#f92672&#34;&gt;summary&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Alone and helpless, like you&amp;#39;ve lost your fight &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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;6&#34;&gt;
&lt;li&gt;Done! You can see an entry for “The Plan for My New Hetzner VM” in my work section as you see in the pic below. &lt;a href=&#34;https://janusworx.com/work/the-plan-for-my-new-hetzner-vm/&#34;&gt;Clicking that&lt;/a&gt; will redirect to the actual post in my &lt;a href=&#34;https://janusworx.com/nm/2025-11-06/&#34;&gt;Notes and Miscellanea&lt;/a&gt; section!&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://janusworx.com/images/2025/hugo-redirect-from-post-in-one-section-to-another.png#center&#34;
         alt=&#34;Hugo Section with Post entries&#34;/&gt; 
&lt;/figure&gt;

&lt;ol start=&#34;7&#34;&gt;
&lt;li&gt;Tada 🎉&lt;/li&gt;
&lt;/ol&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;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href=&#34;mailto:feedback@janusworx.com?subject=%22Feedback on post: Hugo Redirect From Post in One Section to Another
%22&#34;&gt;feedback at this domain&lt;/a&gt; or &lt;a href=&#34;https://dc.janusworx.com/t/hugo-redirect-from-post-in-one-section-to-another
&#34;&gt;continue the discourse here&lt;/a&gt;.
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href=&#34;https://janusworx.com/subscribe/&#34;&gt;mailing list!&lt;/a&gt;&lt;br&gt;
Forward these posts and letters to your friends and get them to subscribe!&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="problem">Problem</h2>
<p>I have a post in one section of my site, say <a href="/nm/2025-11-06/">notes and miscellanea</a><br>
That is my canonical post.<br>
But I also need it to show up in the work section of my site, possibly with a another name.<br>
A Hugo <code>alias</code> in the <code>yaml</code> front matter does not work, since both sections exist and Hugo gets confused.</p>
<h2 id="solution">Solution</h2>
<ol>
<li>Make sure <code>layouts/redirect/single.html</code> exists within your Hugo folder structure and it contains just this line …</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-golang" data-lang="golang"><span style="display:flex;"><span>{{<span style="color:#f92672">-</span> <span style="color:#a6e22e">template</span> <span style="color:#e6db74">&#34;alias.html&#34;</span> (<span style="color:#a6e22e">dict</span> <span style="color:#e6db74">&#34;Permalink&#34;</span> .<span style="color:#a6e22e">Params</span>.<span style="color:#a6e22e">target</span>) <span style="color:#f92672">-</span>}}
</span></span></code></pre></div><ol start="2">
<li>Create your <a href="/nm/2025-11-06/">orginal post</a> as usual</li>
<li><em>Then</em> go create a post in your <em>other</em><sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> section with the following metadata:</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-yaml" data-lang="yaml"><span style="display:flex;"><span>---
</span></span><span style="display:flex;"><span><span style="color:#f92672">title</span>: <span style="color:#ae81ff">&lt;Your title here&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">#date autogenerated by my archetype. if missing, add date</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">date</span>: <span style="color:#e6db74">2025-11-06T08:30:54</span><span style="color:#ae81ff">+05</span>:<span style="color:#ae81ff">30</span> 
</span></span><span style="display:flex;"><span><span style="color:#f92672">type</span>: <span style="color:#ae81ff">redirect</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">target</span>: <span style="color:#ae81ff">&lt;url-to-redirect-to&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">summary</span>: <span style="color:#ae81ff">&lt;Optional text, that will appear in the sectiones listing page&gt;</span>
</span></span><span style="display:flex;"><span>---
</span></span></code></pre></div><ol start="4">
<li>The <code>date</code> field is critical. The post might not appear where you expect it, if it’s absent.<br>
If not date, then you might need to use <code>weight</code>. One of the two is needed.</li>
<li>In my case, the metadata looked like this:</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-yaml" data-lang="yaml"><span style="display:flex;"><span>---
</span></span><span style="display:flex;"><span><span style="color:#f92672">title</span>: <span style="color:#e6db74">&#34;The Plan for My New Hetzner VM&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">date</span>: <span style="color:#e6db74">2025-11-06T08:30:54</span><span style="color:#ae81ff">+05</span>:<span style="color:#ae81ff">30</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">type</span>: <span style="color:#ae81ff">redirect</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">target</span>: <span style="color:#ae81ff">/nm/2025-11-06/</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">summary</span>: <span style="color:#ae81ff">Alone and helpless, like you&#39;ve lost your fight </span>
</span></span><span style="display:flex;"><span>---
</span></span></code></pre></div><ol start="6">
<li>Done! You can see an entry for “The Plan for My New Hetzner VM” in my work section as you see in the pic below. <a href="/work/the-plan-for-my-new-hetzner-vm/">Clicking that</a> will redirect to the actual post in my <a href="/nm/2025-11-06/">Notes and Miscellanea</a> section!</li>
</ol>
<figure class="align-center ">
    <img loading="lazy" src="/images/2025/hugo-redirect-from-post-in-one-section-to-another.png#center"
         alt="Hugo Section with Post entries"/> 
</figure>

<ol start="7">
<li>Tada 🎉</li>
</ol>
<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:feedback@janusworx.com?subject=%22Feedback on post: Hugo Redirect From Post in One Section to Another
%22">feedback at this domain</a> or <a href="https://dc.janusworx.com/t/hugo-redirect-from-post-in-one-section-to-another
">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!</p>
<hr>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>in my case, <a href="/work">work</a>&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <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>Hack Hugo Post Metadata With Python</title>
      <link>https://janusworx.com/work/hack-hugo-post-metadata-with-python/</link>
      <pubDate>Mon, 03 Feb 2025 09:33:37 +0530</pubDate>
      <guid>https://janusworx.com/work/hack-hugo-post-metadata-with-python/</guid>
      <description>Adding alias urls to my blog posts</description>
      <content:encoded><![CDATA[<p><a href="/work/some-site-housekeeping-new-sections-and-rss-feeds/">A while back</a>, I rejigged the sections on my site to better reflect how I think and write.<br>
Which meant, all the urls, on all my posts changed, since they now used the new category as a slug, instead of ye old <code>/blog</code>.</p>
<p>For e.g. <a href="https://janusworx.com/blog/using-hugo-variables-to-help-with-mailto-links-in-hugo/">https://janusworx.com/blog/using-hugo-variables-to-help-with-mailto-links-in-hugo/</a> …<br>
was now at,  <a href="https://janusworx.com/work/using-hugo-variables-to-help-with-mailto-links-in-hugo/">https://janusworx.com/work/using-hugo-variables-to-help-with-mailto-links-in-hugo/</a></p>
<p>After searching a bit, I found that Hugo supported <a href="https://gohugo.io/content-management/urls/#aliases">aliases</a>. For me, it would redirect the original <code>/blog</code> path url to its new location<br>
Ass I had to do, was add an <code>aliases: [&quot;/blog/old-post-slug&quot;]</code> line to each post’s metadata.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup><br>
Line 4 in the snippet below shows, what I added to fix the post above.</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></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-yaml" data-lang="yaml"><span style="display:flex;"><span>---
</span></span><span style="display:flex;"><span><span style="color:#f92672">title</span>: <span style="color:#e6db74">&#34;Using Hugo Variables to Help With Mailto Links in Hugo&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">date</span>: <span style="color:#e6db74">2024-05-30T18:17:35</span><span style="color:#ae81ff">+05</span>:<span style="color:#ae81ff">30</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">aliases</span>: [<span style="color:#e6db74">&#34;/blog/using-hugo-variables-to-help-with-mailto-links-in-hugo&#34;</span>]
</span></span><span style="display:flex;"><span><span style="color:#f92672">categories</span>: [<span style="color:#e6db74">&#34;work&#34;</span>]
</span></span><span style="display:flex;"><span><span style="color:#f92672">tags</span>: [<span style="color:#ae81ff">100WordHabit, Dgplug, Hugo]</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">summary</span>: <span style="color:#ae81ff">Shortcodes! Hugo Variables in Shortcodes!</span>
</span></span><span style="display:flex;"><span>---
</span></span></code></pre></td></tr></table>
</div>
</div><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 did <em><strong>not</strong></em> want to do this by hand for 800+ posts.<br>
One stroke of luck for me, was that I let Hugo use its default behaviour of generating url slugs from the file names. So even if the category slugs had changed (from <code>/blog</code> to <code>/work</code> or from <code>/blog</code> to <code>/personal</code>), the url slugs would stay the same. Which meant, I could whip up a script to run through all my markdown posts and add the alias line.<br>
So I did.</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></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-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">from</span> pathlib <span style="color:#f92672">import</span> Path
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>INPUT_FOLDER <span style="color:#f92672">=</span> Path(<span style="color:#e6db74">&#34;old-posts-folder&#34;</span>)
</span></span><span style="display:flex;"><span>OUTPUT_FOLDER <span style="color:#f92672">=</span> Path(<span style="color:#e6db74">&#34;modified-posts-folder&#34;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> each_file <span style="color:#f92672">in</span> INPUT_FOLDER<span style="color:#f92672">.</span>iterdir():
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">with</span> open(each_file, <span style="color:#e6db74">&#39;r&#39;</span>) <span style="color:#66d9ef">as</span> file_to_read:
</span></span><span style="display:flex;"><span>        alias_derived_from_file <span style="color:#f92672">=</span> each_file<span style="color:#f92672">.</span>stem
</span></span><span style="display:flex;"><span>        contents_as_list <span style="color:#f92672">=</span> file_to_read<span style="color:#f92672">.</span>readlines()
</span></span><span style="display:flex;"><span>        contents_as_list<span style="color:#f92672">.</span>insert(<span style="color:#ae81ff">3</span>, <span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;aliases: [</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">/blog/</span><span style="color:#e6db74">{</span>alias_derived_from_file<span style="color:#e6db74">}</span><span style="color:#ae81ff">\&#34;</span><span style="color:#e6db74">]</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#34;</span>)
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">with</span> open(Path(OUTPUT_FOLDER, each_file<span style="color:#f92672">.</span>name), <span style="color:#e6db74">&#39;w+&#39;</span>) <span style="color:#66d9ef">as</span> file_to_write:
</span></span><span style="display:flex;"><span>            file_to_write<span style="color:#f92672">.</span>writelines(contents_as_list)
</span></span></code></pre></td></tr></table>
</div>
</div><p><br>

It takes all the posts from my old folder, inserts the alias line and puts them into a new folder.<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup> In essence, take each file, figure out the url slug from the file name, read in the contents as a list, insert my alias at position 3 (fourth actually. zero based indexing) of the list (below the title and date) and then write it all out to a new file.</p>
<p>I ran it, published the site and then went to check on the old urls with bated breath.<br>
Hurrah, it all worked :)</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: Hack Hugo Post Metadata With Python
%22">feedback at this domain</a> or <a href="https://dc.janusworx.com/t/hack-hugo-post-metadata-with-python
">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>it’s a list, so I can add more aliases if I want to&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>no sense in botching up my originals :)&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Tmux Start Session Maximized With Three Panes</title>
      <link>https://janusworx.com/work/tmux-start-session-maximized-with-three-panes/</link>
      <pubDate>Sat, 01 Feb 2025 09:27:25 +0530</pubDate>
      <guid>https://janusworx.com/work/tmux-start-session-maximized-with-three-panes/</guid>
      <description>New short ritual to get my writing sessions going</description>
      <content:encoded><![CDATA[<p>So I got tired of starting up a dedicated tmux session to manage all the work related to my writing sessions. Over the past few months, I’ve boiled it down to three.<br>
And it still irks me that I have to …</p>
<ol>
<li>Launch Terminal</li>
<li>Launch Tmux</li>
<li>Split it into three windows err … panes.</li>
<li>Go to the top left pane and launch Hugo server</li>
<li>Switch to the right pane and then launch Emacs with whatever new post I want to write today.</li>
</ol>
<p>So <em>of course</em>, a <a href="https://en.wikipedia.org/wiki/Rube_Goldberg">Rube Goldberg-esque</a>, tiny bash-pipey monster took form.
It now resides, chained to an alias, <code>hssx</code><sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> in my <code>.bash_aliases</code> file</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-bash" data-lang="bash"><span style="display:flex;"><span>alias hssx<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;cd /path/to/my/hugo/folder &amp;&amp; \
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">xdotool windowsize $(xdotool getactivewindow) 100% 100% &amp;&amp; \
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">tmux new-session \; split-window -h \; select-pane -l \; split-window -v \; select-pane -U \; send-keys &#34;hugo serve&#34; C-m \; select-pane -R&#39;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><ol>
<li>The first line switches to my hugo folder</li>
<li>The second calls <code>xdotool</code> and maximises the terminal window</li>
<li>And the last line is a series of instructions to the tmux command. I’ve split it below for readability.</li>
</ol>
<pre tabindex="0"><code>tmux new-session \; #Tmux start a new session
split-window -h \; # Split the window into two vertical panes
select-pane -l \; # Switch to the left pane
split-window -v \; # Split that into two horizontal panes
select-pane -U \; # Select the upper pane
send-keys &#34;hugo serve&#34; C-m \; # Type in `hugo serve` followed by Enter
select-pane -R # Select the right pane
</code></pre><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;'/>

<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>And boom!</p>
</figcaption>
<p><a href="/images/2025/tmux-layout.png"><figure class="align-center ">
    <img loading="lazy" src="/images/2025/tmux-layout.png#center"
         alt="bash terminal showing a tmux window split into three panes"/> 
</figure>
</a></p>
<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>Click pic for a larger version</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?<br>
Mail me at <a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Tmux Start Session Maximized With Three Panes
%22">feedback at this domain</a> <em>or</em> <a href="https://dc.janusworx.com/t/tmux-start-session-maximized-with-three-panes
">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><code>hugo start session</code> and x just because all my aliases have ended with x for years and years&#160;<a href="#fnref:1" 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>Fixing Espanso Expansions</title>
      <link>https://janusworx.com/work/fixing-espanso-expansions/</link>
      <pubDate>Sun, 29 Sep 2024 17:05:19 +0530</pubDate>
      <guid>https://janusworx.com/work/fixing-espanso-expansions/</guid>
      <description>Text used to not g</description>
      <content:encoded><![CDATA[<p><br>

<figure class="align-center ">
    <img loading="lazy" src="/images/2024/espanso.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>I never had the time to deal with my <a href="https://espanso.org/">Espanso</a><sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> hijinks until today.<br>
While it worked perfectly, when I installed it all those years ago, when I migrated over from the Mac, Espanso itself has changed and evolved over the years.<br>
It took over my old configuration like a champ and <em>mostly</em> worked, with the exception of a few shortcuts; ones that I <em>frequently</em> used 😂</p>
<p>Emacs was one application of mine that never quite worked right with Espanso.<br>
I’d frequently get <code>timed out waiting for reply from selection owner</code> whenever I tried expansions in there. Typing :joy to get 😂 would work in every other program, but no joy with Emacs, in additon to plenty of other expansions err … not expanding.</p>
<p>All my browser url expansions would not expand properly either, with mangled expansions most of the time.</p>
<p>So today I <a href="https://espanso.org/docs/">dove in to the docs</a>, and realised two things.<br>
1. My emacs needed a longer time out<br>
2. Espanso now tries to identify the <em>kind</em> of text, and maybe those were causing my issues?</p>
<br>

<h3 id="emacs">Emacs</h3>
<p>I realised I needed a longer clipboard threshold, only for Emacs.<br>
So I created an <a href="https://espanso.org/docs/configuration/app-specific-configurations/">App specific configuration</a>, just for Emacs to use and gave it said option. Here’s what the contents of my <code>espanso/config/emacs.yml</code> look like</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">filter_class</span>: <span style="color:#e6db74">&#39;Emacs&#39;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">clipboard_threshold</span>: <span style="color:#ae81ff">10000</span>
</span></span></code></pre></div><br>

<h3 id="rich-text-expansions">Rich Text Expansions</h3>
<p>That helped with a lot of expansions in Emacs, but not with my joy expansion.<br>
And not with stuff that were links and oh … links! and html! and markdown! Could those be the culprits?<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup><br>
The docs mention that Espanso now has <a href="https://espanso.org/docs/matches/basics/#rich-text">rich text support</a><br>
What that means, is that the trigger nows supports two new keywords <code>html</code> and <code>markdown</code> in addition ye ole <code>replace</code>
So I changed most of my affected shortcuts to either of those two keywords; <code>markdown</code> for most everything and <code>html</code> for linky stuff. Here’s what my beloved joy looks like now …</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">matches</span>:
</span></span><span style="display:flex;"><span>  - <span style="color:#f92672">trigger</span>: <span style="color:#e6db74">&#34;:joy&#34;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">markdown</span>: <span style="color:#ae81ff">😂</span>
</span></span></code></pre></div><p><br>

And those two things did it! Every shortcut expands everwhere! What joy 😂</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?subjectFeedback on post: Fixing Espanso Expansions
%22">feedback at this domain</a> <em>or</em> <a href="https://dc.janusworx.com/t/fixing-espanso-expansions
">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_l_share">insatiable reading habit.</a></p>
<hr>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Espanso lets you assign short snippets of text to longer streams of text, that you’d frequently use. I use <code>:adhx</code> for example, and it expands out to type my whole address. Pretty handy!&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>dun! dun! dun! they were!&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Smol Note to Self, on Deploying Stuff</title>
      <link>https://janusworx.com/work/smol-note-to-self-on-deploying-stuff/</link>
      <pubDate>Sat, 28 Sep 2024 14:34:47 +0530</pubDate>
      <guid>https://janusworx.com/work/smol-note-to-self-on-deploying-stuff/</guid>
      <description>This goes here, that goes there</description>
      <content:encoded><![CDATA[<ol>
<li>Anything I want folks to see and/or interact with, goes on the public VM</li>
<li>Anything I want to host for myself, goes on the Pi.</li>
</ol>
<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: Smol Note to Self, on Deploying Stuff
%22">feedback at this domain</a> <em>or</em> <a href="https://dc.janusworx.com/t/smol-note-to-self-on-deploying-stuff
">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>anki-push-u, Creating a Tiny Pushover Addon for Anki</title>
      <link>https://janusworx.com/anki-push-u/</link>
      <pubDate>Sat, 21 Sep 2024 11:31:39 +0530</pubDate>
      <guid>https://janusworx.com/anki-push-u/</guid>
      <description>Notifications! Notifications! Notifications! Notifications!</description>
      <content:encoded><![CDATA[<br>

<p>I want to slowly increase my French vocabulary, so I got this comprehensive frequency word deck from <a href="https://ankiweb.net/shared/info/893324022">Shared Decks section of the Anki website</a>.</p>
<p>I keep forgetting to look it up during the day, after my morning session and the only way I can get those stubborn words<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> to stick in my mind, is if I keep doing the deck 4–5 times a day.</p>
<p>I know! With all my newfound devops/python skills, could I figure out a way to remind myself to do it? Turns out I can! :)</p>
<p>I already use <a href="https://pushover.net">Pushover</a>, to get notified of darn near anything.<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup><br>
And I read enough of <a href="https://addon-docs.ankiweb.net/a-basic-addon.html">Anki’s add-on documentation</a> to know I could whip something up.<br>
So a bit of searching on the net, a bit of jiggery pokery with <a href="https://claude.ai/">Claude</a>, and some spelunking through Anki’s source code and <a href="https://forums.ankiweb.net/t/how-to-get-the-number-of-cards-due-to-today/10658">forums</a> later, I present to you … <em><strong><a href="https://github.com/jasonbraganza/anki-push-u">anki-push-u</a>!</strong></em><sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup></p>
<p>As long as your Anki’s running, this little add-on will find cards due, at the interval you tell it to, and then notify you wherever you have Pushover running!<br>
No more forgetting due cards!</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/2024/anki-pushover-notifications.png#center"
         alt="A screenshot of Pushover notifications on two devices"/> 
</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><a href="https://github.com/jasonbraganza/anki-push-u">Find the add-on and instructions over at Github.</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?subject=%22Feedback on post: anki-push-u, Creating a Tiny Pushover Addon for Anki
%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>I’m looking at you, ailleurs&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>Hugo updates on three machines, calibre updates on two machines, podcast downloads and quite a bit else&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>It pushes you to do your due cards! Tada!&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Notes to Self, Compiling Qbittorrent on a Raspberry Pi 5</title>
      <link>https://janusworx.com/work/notes-to-self-on-compiling-qbittorrent-on-a-raspberry-pi-5/</link>
      <pubDate>Mon, 19 Aug 2024 14:13:31 +0530</pubDate>
      <guid>https://janusworx.com/work/notes-to-self-on-compiling-qbittorrent-on-a-raspberry-pi-5/</guid>
      <description>Testing … Mr. Watson, come here, I want you. It works!</description>
      <content:encoded><![CDATA[<div style="font-size: 85%; ">
<p><em>Update, 2024-08-20:<br>
Added a missing step, to install the qBittorrent files to their relevant places<br>
Also, it had to happen. No releases for close to three months and then just as I learn to compile, a new version has to release the very next day 😂<br>
It gave me a chance to test my notes. It hardly took me a few minutes to get the new release in place. So all is good!</em></p>
</div>
<br>

<figure class="align-center ">
    <img loading="lazy" src="/images/2024/compilation-of-letters.jpg#center"/> 
</figure>

<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>A compilation of letters, courtesy <a href="https://www.cosmos.so/e/252611461">Cosmos</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 wanted to always have the lastest stable version of <a href="https://www.qbittorrent.org/">qBittorent</a> on my Pi.<br>
So today, I sat down and followed the project’s <a href="https://github.com/qbittorrent/qBittorrent/wiki/Compilation-Debian,-Ubuntu,-and-derivatives">excellent instructions</a> and got it running.<br>
I did however stray off the beaten path a teensy bit<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>.<br>
I didn’t want a gui and I wanted to be able to control it with <a href="https://systemd.io/">systemd</a>.</p>
<p>So here’s my checklist for next release. I’m currently running <a href="https://en.wikipedia.org/wiki/Debian_version_history#Debian_12_(Bookworm)">Bookworm</a> on my Pi 5</p>
<ol>
<li>
<p>In case you run into problems, compile instructions are here:
<a href="https://github.com/qbittorrent/qBittorrent/wiki/Compilation-Debian,-Ubuntu,-and-derivatives">https://github.com/qbittorrent/qBittorrent/wiki/Compilation-Debian,-Ubuntu,-and-derivatives</a></p>
</li>
<li>
<p>Do all off this after switching to root. (or <code>sudo</code>)</p>
</li>
<li>
<p>Install build tools<br>
<code>sudo apt install build-essential cmake git ninja-build pkg-config libboost-dev libssl-dev zlib1g-dev libgl1-mesa-dev</code></p>
</li>
<li>
<p>Install Qt dependencies (<code>qtbase5-private-dev</code> is not part of the instructions,
but compile will fail if you don&rsquo;t include it)<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup><br>
<code>sudo apt install --no-install-recommends qtbase5-dev qtbase5-private-dev qttools5-dev libqt5svg5-dev</code></p>
</li>
<li>
<p>Qt requires Python at runtime, so: <code>sudo apt install python3</code></p>
</li>
<li>
<p>Install the libtorrent library. I compiled from source. Check <a href="https://github.com/qbittorrent/qBittorrent/wiki/Compilation-Debian,-Ubuntu,-and-derivatives">page</a> for fresh instructions, if stuff here doesn’t work</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>git clone --recurse-submodules https://github.com/arvidn/libtorrent.git
</span></span><span style="display:flex;"><span>cd libtorrent
</span></span><span style="display:flex;"><span>git checkout RC_2_0 <span style="color:#75715e"># or a 2.0.x tag</span>
</span></span><span style="display:flex;"><span>cmake -B build -DCMAKE_BUILD_TYPE<span style="color:#f92672">=</span>RelWithDebInfo -DCMAKE_INSTALL_PREFIX<span style="color:#f92672">=</span>/usr/local
</span></span><span style="display:flex;"><span>cmake --build build -j4 <span style="color:#75715e"># the -j4 is to do on four cores at once. my addition.</span>
</span></span><span style="display:flex;"><span>sudo cmake --install build
</span></span></code></pre></div><p>If you ever want to uninstall libtorrent, then don’t delete this
main folder. The build process would have created a
<code>install_manifest.txt</code> in the build folder. So you can then
uninstall with: <code>sudo xargs rm &lt; install_manifest.txt</code></p>
</li>
<li>
<p>Get qb source: <a href="https://www.qbittorrent.org/download">https://www.qbittorrent.org/download</a>.</p>
</li>
<li>
<p>Unzip: <code>tar xzvf qbittorrent-4.6.5.tar.gz</code> and then
<code>cd qbittorrent-4.6.5/</code></p>
</li>
<li>
<p>Create Build configuration (disabled GUI and enabled systemd. Those aren’t part of the defaults)<br>
<code>cmake -G &quot;Ninja&quot; -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/usr/local -DGUI=OFF -DSYSTEMD=ON</code></p>
</li>
<li>
<p>Build <code>cmake --build build</code></p>
</li>
<li>
<p>Install all the files to their relevant locations <code>cmake --install build</code></p>
</li>
<li>
<p>Install service to run for a specific user.</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>systemctl daemon-reload
</span></span><span style="display:flex;"><span>systemctl enable qbittorrent-nox@&lt;some-user&gt;.service
</span></span><span style="display:flex;"><span>systemctl start qbittorrent-nox@&lt;some-user&gt;.service
</span></span></code></pre></div></li>
<li>
<p>We’re done.</p>
</li>
</ol>
<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: Notes to Self, Compiling Qbittorrent on a Raspberry Pi 5
%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 the project does make provisions for.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p><code>Target &quot;qbt_base&quot; links to: Qt::CorePrivate but the target was not found.</code> or words to that effect&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Note to Self, My New Heuristic for Blogging</title>
      <link>https://janusworx.com/personal/note-to-self-my-new-heuristic-for-blogging/</link>
      <pubDate>Wed, 19 Jun 2024 14:43:28 +0530</pubDate>
      <guid>https://janusworx.com/personal/note-to-self-my-new-heuristic-for-blogging/</guid>
      <description>Write slower</description>
      <content:encoded><![CDATA[<p><br>

<a href="/images/2024/heuristic-for-blogging.jpg"><figure class="align-center ">
    <img loading="lazy" src="/images/2024/heuristic-for-blogging-s.jpg#center"/> 
</figure>
</a></p>
<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>Rain lilies, from Abby’s tiny window garden.<br>
They bloom only around this time of the year, on the onset of the monsoon.<br>
Click the pic, for a bigger image</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 love to write.<br>
Correction, I <em>need</em> to write.<br>
Writing helps me think, to be deliberate about things, to slow down.</p>
<p>At the same time, writing is also a slow, plodding process for me. Every post seems to take forever. So many years of doing it and it does not get any easier.<br>
I agonise over what I want to say, the picture or quotes I want to include, the overall arc of my thoughts, the structure, everything has to be just so.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup><br>
I’ve lowered the bar, to build consistency, with my <a href="/blog/100-word-writing-habit/">#100WordHabit</a> and now I have a new problem. First, I could not get started, and now I cannot stop once I get started.<br>
I just have to finish my thoughts, my post, and that sometimes takes <em>hours</em>.<br>
Which brings me back to me not wanting to start, for the fear that nothing else (that are in fact, more important) will get done.</p>
<p>This in turn, brings me to the brainwave I had a couple of days ago, in the bath.<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup><br>
The pressure comes from wanting to <em>publish</em> what I write, the day I write.<br>
What if, I didn’t?</p>
<p>Nothing has to change. With the exception of a hard stop.<br>
One hour.<br>
One hour to write and publish.<br>
Or one hour to write and then put my pencil down.<br>
And then I can come back to it the next day.<br>
<a href="/blog/org-mode-emacs-diary-sexps/">Yesterday’s post</a> was the result of this approach.<br>
I wrote it over two days, in two one hour sessions.<br>
Very like Abby’s rain lillies up up above. They <em>are</em> prepping through the year, to bloom at this time, every time. Just because I cannot see it, does not mean nothing’s happening</p>
<p>One downside, that I potentially see, is that I will use this as an excuse to slack.<br>
I hope I don’t.<br>
But then on the other hand, without a pressure control valve like this, I can very easily see myself burning out again.</p>
<p>So let’s see how this goes.<br>
I’m betting on me being a rain lily.</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, My New Heuristic for Blogging
%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>The end result might not be any good, but my mind needs to be satisfied, that all is to its liking and that I did the best I could&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>Don’t we all?&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></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>Notes to Self on Renewing Wildcard Letsencrypt Certs Manually With Lego</title>
      <link>https://janusworx.com/work/notes-to-self-on-renewing-wildcard-letsencrypt-certs-manually-with-lego/</link>
      <pubDate>Fri, 31 May 2024 11:12:17 +0530</pubDate>
      <guid>https://janusworx.com/work/notes-to-self-on-renewing-wildcard-letsencrypt-certs-manually-with-lego/</guid>
      <description>Let’s go!</description>
      <content:encoded><![CDATA[<p><br>
<br>
<figure class="align-center ">
    <img loading="lazy" src="/images/2024/lego-logo.svg#center"/> 
</figure>
</p>
<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>image courtesy, the <a href="https://github.com/go-acme/lego">Lego Github page</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 want to someday, automate all my domain certificate renewals.<br>
Namecheap doesn’t support it, ergo my move to <a href="https://porkbun.com/about">Porkbun</a>.<br>
And <code>certbot</code> doesn’t support Porkbun, so I’ve moved to <a href="https://github.com/go-acme/lego">Lego</a>.</p>
<p>I still need to someday figure out how to do this automatically, but for now, since all is in place, this is the new manual process.</p>
<ol>
<li>You’ll need to generate a Porkbun API key along with its associated secret, and store it somewhere safe and secure. (This is a one time thing, the <a href="https://kb.porkbun.com/article/190-getting-started-with-the-porkbun-api">Generating API keys</a> section here describes how)</li>
<li>Another one time step is to <a href="https://go-acme.github.io/lego/installation/">get Lego installed</a> and have it <a href="https://go-acme.github.io/lego/dns/porkbun/">generate your certs</a>,
and then have your applications, point to where they are.</li>
<li>Command to renew: <code>PORKBUN_SECRET_API_KEY=&quot;your-api-*secret*&quot; PORKBUN_API_KEY=&quot;your-porkbun-api-key&quot; ./lego --domains your-domain.tld --domains *.domain.tld --email your-email@domain --dns porkbun renew</code></li>
<li>And the renewal’s done!</li>
<li>Restart yer engines … err your applications<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> et voilà!</li>
<li>If you have multiple machines, figure out a way to securely transfer the certs there too.</li>
</ol>
<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: Notes to Self on Renewing Wildcard Letsencrypt Certs Manually With Lego
%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>in my case Nginx&#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>Why I Write</title>
      <link>https://janusworx.com/personal/why-i-write/</link>
      <pubDate>Fri, 24 May 2024 20:53:48 +0530</pubDate>
      <guid>https://janusworx.com/personal/why-i-write/</guid>
      <description>Why do I indeed?</description>
      <content:encoded><![CDATA[<p><a href="/images/2024/why-i-write-IMG_3778.jpg"><figure class="align-center ">
    <img loading="lazy" src="/images/2024/why-i-write-IMG_3778s.jpg#center"
         alt="page of my illegible scrawl"/> 
</figure>
</a></p>
<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>Click to see a larger version, just as illegible</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>As I struggle to write, sometimes I wonder why I even do it.<br>
And when I don’t, I then get this strange uncontrollable urge to write something, anything.<br>
Damned if you do, damned if you don’t.</p>
<p>And now in addition to that crazy struggle, I’ve caught myself getting upset of late. All because nobody “shares” the posts I put out.<br>
And I worry if anyone even reads my stuff?<br>
And do they like it?<br>
And if they do, why would they not share it?<br>
Not good enough?<br>
Should I be doing more?<br>
Write better?</p>
<p>All of which came to a head today.<br>
And after a bit of laughing at my silliness, I decided to write down what I tell myself every year.</p>
<p>Because I do write.<br>
Whether anyone reads it. Or not.<br>
Which is why I wonder why I get trapped in this weird neurotic spider web every year.<br>
I’m done comparing, in the words of Lamott, my insides to their outsides.</p>
<p>So a few thoughts to myself on why I do it. A non exhaustive list …</p>
<ol>
<li>I love to read.</li>
<li>I love to write.</li>
<li>I write primarily for myself. First and foremost.</li>
<li>I write because I cannot help it.</li>
<li>I write because I cannot not write.</li>
<li>I write to document things and thingamajigs and doodads and small things and big things. Because I forget. And writing helps me remember. And then it helps other people learn. And then they teach me new things. And I learn more. And I write more. And the whole virtuous cycle repeats.</li>
<li>I write because everything in me, has got to come out on the page, so that there is space within me, to then function.</li>
<li>I write because then everything slows down to the pace of my fingers rather than the crazy light speed dizziness within my brain.</li>
<li>I write because I can then think.</li>
<li>I write because it sharpens my focus.</li>
<li>I write because it makes it easy to forget.</li>
<li>I write because I read what I write. Even if no one else does. Even if no one else wants to. Even if no one else can. And I love my past selves, who’ve scribbled their thoughts and feelings to protect me, shield me, guide me and give me comfort, solace and love.</li>
<li>I write because then, my heart then aches a little bit less.</li>
<li>I write because it’s brought me back from the edge of the void. Twice.</li>
<li>I write because it helps me be resilient. Persistent. To quote Taleb, <em><strong>Antifragile.</strong></em> And to quote Angelou, <em><strong>“You may trod me in the very dirt / But still, like dust, I rise.”</strong></em></li>
<li>I write because I have scars. And writing lessens the hurt. To quote Bareilles, <em><strong>it helps me hold on, till there’s something else to hold on to.</strong></em></li>
<li>I write because …</li>
<li>I write because today I realise, that’s who I am.<br>
I am a writer, because that’s what I do. I write.</li>
</ol>
<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>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>Make Bad Things</title>
      <link>https://janusworx.com/personal/make-bad-things/</link>
      <pubDate>Mon, 15 Apr 2024 10:54:10 +0530</pubDate>
      <guid>https://janusworx.com/personal/make-bad-things/</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/2024/make-bad-things.png#center&#34;
         alt=&#34;cartoon illustration of a sad, bent yellow pencil stil trying to scribble on paper &#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;Art by &lt;a href=&#34;https://linktr.ee/amandaswork&#34;&gt;Amanda Domagala&lt;/a&gt;, on &lt;a href=&#34;https://amandaswork.tumblr.com/post/731449232798760961/sadbuddies-pssssst-stickers-available-now&#34;&gt;Tumblr&lt;/a&gt;&lt;/p&gt;
&lt;/figcaption&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;Amanda says,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;“Make bad things, instead of making nothing”&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Something similar that’s been drummed into my head innumerable times over the years, by many mentors:&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><br>

<figure class="align-center ">
    <img loading="lazy" src="/images/2024/make-bad-things.png#center"
         alt="cartoon illustration of a sad, bent yellow pencil stil trying to scribble on paper "/> 
</figure>
</p>
<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>Art by <a href="https://linktr.ee/amandaswork">Amanda Domagala</a>, on <a href="https://amandaswork.tumblr.com/post/731449232798760961/sadbuddies-pssssst-stickers-available-now">Tumblr</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>Amanda says,</p>
<blockquote>
<p><em><strong>“Make bad things, instead of making nothing”</strong></em></p>
</blockquote>
<p>Something similar that’s been drummed into my head innumerable times over the years, by many mentors:</p>
<blockquote>
<p><em><strong>“If you cannot do it well, do it badly.”</strong></em> :)</p>
</blockquote>
<p>If you love doing something, if you want to do something … do it.<br>
Does not matter how poorly or badly its done.<br>
You’re going to love it nonetheless.</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>
]]></content:encoded>
    </item>
    <item>
      <title>No Love Is Wasted</title>
      <link>https://janusworx.com/personal/no-love-is-wasted/</link>
      <pubDate>Sat, 13 Apr 2024 11:51:17 +0530</pubDate>
      <guid>https://janusworx.com/personal/no-love-is-wasted/</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/2024/no-love-is-wasted.jpg#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;via &lt;a href=&#34;https://dduane.tumblr.com/post/747600201532014592/the-bird-place-that-was-is-redeeming-itself-a-bit&#34;&gt;Diane Duane&lt;/a&gt;&lt;/p&gt;
&lt;/figcaption&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;I’m almost 50, and here is the best thing I have learned so far:&lt;br&gt;
every strange thing you’ve ever been into,&lt;br&gt;
every failed hobby or forgotten instrument,&lt;br&gt;
everything you have ever learned will come back to you,&lt;br&gt;
will serve you when you need it.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><br>

<figure class="align-center ">
    <img loading="lazy" src="/images/2024/no-love-is-wasted.jpg#center"/> 
</figure>
</p>
<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>via <a href="https://dduane.tumblr.com/post/747600201532014592/the-bird-place-that-was-is-redeeming-itself-a-bit">Diane Duane</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’m almost 50, and here is the best thing I have learned so far:<br>
every strange thing you’ve ever been into,<br>
every failed hobby or forgotten instrument,<br>
everything you have ever learned will come back to you,<br>
will serve you when you need it.</p>
<p>No love, however brief, is wasted.</p>
<p><em>(I’d add every act of kindness,random or otherwise, to that list.)</em></p>
]]></content:encoded>
    </item>
    <item>
      <title>Notes to Self, How to Learn Vocabulary in Another Language</title>
      <link>https://janusworx.com/personal/notes-to-self-how-to-learn-vocabulary-in-another-language/</link>
      <pubDate>Fri, 05 Apr 2024 12:01:16 +0530</pubDate>
      <guid>https://janusworx.com/personal/notes-to-self-how-to-learn-vocabulary-in-another-language/</guid>
      <description>What I took away from Scott H Young’s article</description>
      <content:encoded><![CDATA[<p><br>

<a href="/images/2024/how-to-learn-vocabulary-in-another-language.jpg"><figure class="align-center ">
    <img loading="lazy" src="/images/2024/how-to-learn-vocabulary-in-another-language-s.jpg#center"/> 
</figure>
</a></p>
<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>“Liberty <em>&amp;</em> equality forever, or Death!”<br>
Written on the <a href="https://en.wikipedia.org/wiki/Luxor_Obelisks">Luxor Obelisk</a> at the Place de la Concorde in Paris, France<br>
(Click for a larger image)</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 recently read Scott H. Young’s article on <a href="https://www.scotthyoung.com/blog/2024/04/02/learn-vocabulary-language/">How to Learn Vocabulary in Another Language</a> and realised it would be a handy guide for me, as I go about increasing my French <em>&amp;</em> Urdu vocabulary.</p>
<p>This is what I took away:</p>
<ul>
<li>The first 2000 words will cover 80-90% of a language’s vocabulary. 3000 will cover 95%. That should be your goal.</li>
<li>Use a frequency dictionary, then according to frequency do 1000/2000/3000 words</li>
<li>10000 will lead to almost being fluent. Hard to do that quickly with French, sitting in India. But, aspirational goals :)</li>
<li>Do:
<ul>
<li>Flash cards, knowing that this will not teach you the nuance and flavour and texture of French</li>
<li>Graded reading, Like the article states</li>
</ul>
<blockquote>
<p>To successfully guess the meaning of a new word from its context, we need to understand between 95% and 98% of the surrounding words. This is difficult to achieve with native-level materials. Graded readers, which deliberately limit vocabulary, can be beneficial here.</p>
</blockquote>
<ul>
<li>If you’re doing the slow and steady way, because you lack the time, then growth <em><strong>will</strong></em> be slow. Assume 400 new word families a year</li>
<li>Use the four pillars of learning. Paraphrasing &amp; Quoting the article:
<ol>
<li><em><strong>Meaning-focused input.</strong></em><br>
Input provides the raw data for learning new words and enriches the contextual associations of words studied deliberately elsewhere.
This includes conversations, books, films, television and other media that you attend to primarily for their meaning.</li>
<li><em><strong>Meaning-focused output.</strong></em> <em>(Note: I am focussed on reading and writing)</em><br>
Speaking and writing are more difficult than simply understanding particular words from input, as using words correctly requires a more precise knowledge of each word and its meaning.</li>
<li><em><strong>Language-focused learning.</strong></em><br>
This is the deliberate act of memorizing words, studying flashcards, or receiving explanations about word meanings. Webb and Nation argue that this should account for ~25% of the time spent learning a language.</li>
<li><em><strong>Fluency development.</strong></em> <em>(I don’t know how I’ll do this. Re read stuff? Watch TV again.)</em><br>
Finally, attention should be paid to activities that speed up the understanding and production of words already known. Familiar materials that enable quick reading or conversations on familiar topics may not be needed to build new vocabulary, but they reinforce what was learned previously.</li>
</ol>
</li>
</ul>
</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>Note to Self, Cal Newport’s Minimal Notes System</title>
      <link>https://janusworx.com/personal/note-to-self-cal-newports-minimal-notes-system/</link>
      <pubDate>Sat, 02 Mar 2024 16:35:56 +0530</pubDate>
      <guid>https://janusworx.com/personal/note-to-self-cal-newports-minimal-notes-system/</guid>
      <description>&lt;p&gt;&lt;br&gt;

&lt;a href=&#34;https://janusworx.com/images/2024/cal-newport-minimalist-note-taking-system.jpg&#34;&gt;&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://janusworx.com/images/2024/cal-newport-minimalist-note-taking-system-s.jpg#center&#34;/&gt; 
&lt;/figure&gt;
&lt;/a&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;My old-style slow notetaking process.&lt;br&gt;
Replaced now with &lt;a href=&#34;https://janusworx.com/blog/the-kobo-elipsa-2e-six-months-later/&#34;&gt;Elipsa Annotations&lt;/a&gt;, which then  move along with my thoughts into &lt;a href=&#34;https://janusworx.com/blog/zettelkasten/&#34;&gt;Org Roam Notes&lt;/a&gt;.&lt;br&gt;
Click to see bigger&lt;/p&gt;
&lt;/figcaption&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;Cal Newport recently did a deep dive on his podcast, on a &lt;a href=&#34;https://www.youtube.com/watch?v=OY6ywiMknvs&amp;amp;t=5s&#34;&gt;minimalist note taking system&lt;/a&gt; for various areas of your life.&lt;br&gt;
Video’s on Youtube, if you want to watch. It’s called &lt;a href=&#34;https://www.youtube.com/watch?v=OY6ywiMknvs&amp;amp;t=5s&#34;&gt;A Productivity System To Remember Everything You Learn&lt;/a&gt;.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><br>

<a href="/images/2024/cal-newport-minimalist-note-taking-system.jpg"><figure class="align-center ">
    <img loading="lazy" src="/images/2024/cal-newport-minimalist-note-taking-system-s.jpg#center"/> 
</figure>
</a></p>
<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>My old-style slow notetaking process.<br>
Replaced now with <a href="/blog/the-kobo-elipsa-2e-six-months-later/">Elipsa Annotations</a>, which then  move along with my thoughts into <a href="/blog/zettelkasten/">Org Roam Notes</a>.<br>
Click to see bigger</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>Cal Newport recently did a deep dive on his podcast, on a <a href="https://www.youtube.com/watch?v=OY6ywiMknvs&amp;t=5s">minimalist note taking system</a> for various areas of your life.<br>
Video’s on Youtube, if you want to watch. It’s called <a href="https://www.youtube.com/watch?v=OY6ywiMknvs&amp;t=5s">A Productivity System To Remember Everything You Learn</a>.</p>
<p>It matches, what I’ve organically been doing all these years.<br>
And I was really happy to see it structured and rendered so well.<br>
So I wrote and paraphrased and jotted it all down below.<br>
Note: These are my mangling of Cal’s words, not what he actually said. The audio/video above should give you exact specifics.</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;'/>

<h2 id="why">Why?</h2>
<h3 id="minimal-friction">Minimal Friction</h3>
<ul>
<li>too much friction with other systems</li>
<li>friction in work that matters is ok, is good, is perfect. <a href="/blog/draft-no-4/">McPhee &amp; Caro!</a> But for most other things, not needed.
<ul>
<li>Cal goes on to verbally list what McPhee does, but <a href="/blog/draft-no-4/">my notes</a> are better.</li>
<li>In a nutshell, friction slows him (McPhee) down in a way that’s beneficial, that lets him do his best work</li>
</ul>
</li>
<li>Notetaking does not need such friction. When information is coming at you, your time to act + energy to think are limited</li>
<li>Friction stops you from taking action. That information could then be lost
<ul>
<li>For e.g. a complicated note taking process when reading a book, might stop you from getting into the book or ever keep you from reading the book altogether.</li>
</ul>
</li>
<li>Your system should therefore reduce friction, so that you can capture as much information as possible quickly, efficiently, painlessly</li>
</ul>
<h3 id="outsource-your-brain-no">Outsource your brain? No!</h3>
<ul>
<li>When it comes to things that matter, stuff should live in your brain. So that stuff percolates into your value systems and mental models and you evolve!</li>
<li>Your brain needs to be part of this curation process. Your brain needs to build hooks. To remember the big things. For accuracy and precision, details can always be looked up.</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;'/>

<h2 id="the-system">The System</h2>
<h3 id="for-books-the-corner-marking-method">For Books (the Corner Marking Method)</h3>
<ul>
<li>If there’s somethng interesting on the page, mark the corner fo the page (dog ear with pen) and then …
<ul>
<li>Mark up the thing that interest you! Simple marks in the margins. Put a box around text. Checkmarks next to a line. Curly braces next to a paragraph to remember</li>
<li>Occasionally write a short note, to help you remember the context, or to tell yourself what it reminds you of, or is there any other place where you’d find this useful?</li>
</ul>
</li>
<li>Barely slows you down. Does not get in your way. Does not prevent you from reading</li>
<li>Then when you go back to your book, and look at your dog marks and then look at stuff you marked on those pages? You will in a few minutes, reconstitute all the ideas from that book.</li>
<li>Bonus: One “shortcoming”? You need to remember! Oh that book? That was the one that had the interesting ideas about such and such
<ul>
<li>That is not a problem. This is the one bit of friction that is useful. It allows you to use the gist of what you learned from the book in the schemas of knowledge that I am constructing and modifying and growing in my head. So that’s not really a bug, rather a feature. In English? It helps me build better Mental Models!</li>
<li>You become a better reader</li>
</ul>
</li>
</ul>
<h3 id="projects-professional-and-personal">Projects (Professional and Personal)</h3>
<ul>
<li>Where do notes relevant to a project go?</li>
<li>Store notes relevant to a project in the location where you will one day work the project.
<ul>
<li>I do this on a personal level too. Everything is where my mind says, I ought to look for them, not where they “ought to be.” Which is why my keys are next to my Minnie mouse plushie and my flash drives live in an old, soup bowl.</li>
</ul>
</li>
<li>So when it comes time to do the work, everything that you’ve gather is all there for you to use.</li>
<li>Duplication is ok. (If there’s too much duplication, which happens rarely, I organically figure something out)</li>
<li>Bonus: Whenever you add something new to the pile, you always encounter your old stuff and it keeps refreshing a mental picture of the project in your mind and helps create new mental grooves</li>
</ul>
<h3 id="ideas-about-life-your-values-your-inspiration-you-want-to-do-something-with-and-in-your-life">Ideas about Life? Your values, your inspiration, you want to do something with and in your life</h3>
<ul>
<li>Keep a fancy, awesome, cool, aspirational notebook!</li>
<li>A fancy pen you like</li>
<li>Basically whatever you used when you started your journey? You wrote notes, you made headlines, you had marginalia in your pages, you did everything by hand. Just use the classiest things you like and can afford, to give it heft and meaning.</li>
<li>Your life has few ideas, important as they are. Easy to keep track of them in a notebook</li>
<li>You want the form to matter.</li>
<li>Digital notebooks? They’re cool too, if you like them.</li>
<li>All you need is semi regular review and process
<ul>
<li>A good lazy way to do it is when the notebook fills up</li>
<li>Review and copy over the summaries of everything good and lasting and important</li>
<li>See what sticks</li>
</ul>
</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>Note to Self Footnotes Using Littlefoot.js</title>
      <link>https://janusworx.com/work/note-to-self-footnotes-using-littlefoot.js/</link>
      <pubDate>Wed, 28 Feb 2024 08:10:36 +0530</pubDate>
      <guid>https://janusworx.com/work/note-to-self-footnotes-using-littlefoot.js/</guid>
      <description>&lt;p&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;

&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://janusworx.com/images/2024/footnotes.png#center&#34;
         alt=&#34;Two feet side by side, with a marker illustration on them. theres  a figure 1 on one foot. a small cartoon lion on the other. and a dashed path drawn across one foot to the other, linking them.&#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;Courtesy &lt;a href=&#34;https://flickr.com/photos/dothegreenthing/7401372664/&#34;&gt;dothegreenthing&lt;/a&gt;, &lt;a href=&#34;https://creativecommons.org/licenses/by-nc/2.0/&#34;&gt;CC BY-NC 2.0&lt;/a&gt;, on Flickr&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><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/2024/footnotes.png#center"
         alt="Two feet side by side, with a marker illustration on them. theres  a figure 1 on one foot. a small cartoon lion on the other. and a dashed path drawn across one foot to the other, linking them."/> 
</figure>
</p>
<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>Courtesy <a href="https://flickr.com/photos/dothegreenthing/7401372664/">dothegreenthing</a>, <a href="https://creativecommons.org/licenses/by-nc/2.0/">CC BY-NC 2.0</a>, on Flickr</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 have this amazing urge never to leave well enough alone.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup><br>
The blog uses an amazing theme, called <a href="https://adityatelange.github.io/hugo-PaperMod/">PaperMod</a>.<br>
And ofcourse, like I said, because I can’t leave well enough alone, I’ve customised it heavily.<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup><br>
The fonts are different, there are various kinds of slight colour changes, I bullied <a href="https://github.com/adityatelange">Aditya</a> into showing me how to <a href="https://github.com/adityatelange/hugo-PaperMod/issues/62#issuecomment-1375160640">build a Menu</a>, there are lots of custom <a href="https://gohugo.io/content-management/shortcodes/">Hugo shortcodes</a> and there were footnotes powered by a nifty little Javascript library called <a href="https://littlefoot.js.org/">littlefoot.js</a>.</p>
<p>Now everything <em>was</em> fine and dandy.<br>
There are folks who <em>do</em> leave well enough alone. Their blogs stay up and running for years on end, held together with nothing more than spit and baling wire.<br>
Those folks aren’t me, sadly. Aditya keeps improving the theme and I really wanted the new shiny. <a href="https://github.com/adityatelange/hugo-PaperMod/releases/tag/v7.0">So I went and got it.</a><br>
And everything broke!<br>
I got weird artifacts. RSS broke. Fonts broke. Footnotes broke.<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup></p>
<p>I’ve managed to put everything back together, over the past week, and I <em>just</em> got footnotes working again yesterday.<br>
So a few notes to myself, on what to do, when I break it again.<sup id="fnref:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup><br>
Footnotes today, and the rest later …</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 here goes,</p>
<ul>
<li>The litlefoot.js repo has <a href="https://github.com/goblindegook/littlefoot#usage">excellent documentation</a>. That’s where you pulled everything from (for when you wonder, just <em>how</em> you figured all the CSS out)</li>
<li>You download a static copy with a <code>npm install --save littlefoot</code> and then stick it into Hugo’s static folder</li>
<li>Copy the <code>extend_head.html</code> from the theme’s <code>layout/partials</code> into your own. You should already have an <code>extend_footer.html</code> since you put in PaperMod’s hamburger stuff in there.</li>
<li>Adapt the <a href="https://github.com/goblindegook/littlefoot#usage-from-a-cdn">Usage from a CDN</a> step to directly access it from <code>/littlefoot/dist/…</code> instead of <a href="https://unpkg.com/">UNPKG</a>. Put the CSS link into your <code>extend_head.html</code> and the JS into <code>extend_footer.html</code></li>
<li>We want the footnotes to be numbers, rather than floating ellipses. So modify the default (blank) script call in <code>extend_footer.html</code>, to the stuff below. This is verbatim from the docs.</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-html" data-lang="html"><span style="display:flex;"><span>&lt;<span style="color:#f92672">script</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;application/javascript&#34;</span>&gt;
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">littlefoot</span>.<span style="color:#a6e22e">littlefoot</span>(
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>            <span style="color:#a6e22e">buttonTemplate</span><span style="color:#f92672">:</span> <span style="color:#e6db74">`
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">            &lt;button
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">            aria-label=&#34;Footnote &lt;% number %&gt;&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">            class=&#34;littlefoot__button&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">            id=&#34;&lt;% reference %&gt;&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">            title=&#34;See Footnote &lt;% number %&gt;&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">            /&gt;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">            &lt;% number %&gt;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">            &lt;/button&gt;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">            `</span>
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>    )
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">script</span>&gt;
</span></span></code></pre></div><ul>
<li>We want to style it a teensy bit, so those styles go into <code>extend_head.html</code>. For some reason, it does not pick the footnote styling correctly when you put stuff into your normal <code>assets/css/extended/</code> folder.</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-css" data-lang="css"><span style="display:flex;"><span><span style="color:#f92672">&lt;!</span><span style="color:#f92672">--Custom</span> <span style="color:#f92672">littlefoot</span> <span style="color:#f92672">styles--</span><span style="color:#f92672">&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;</span><span style="color:#f92672">style</span><span style="color:#f92672">&gt;</span>
</span></span><span style="display:flex;"><span>    .<span style="color:#a6e22e">littlefoot</span> {
</span></span><span style="display:flex;"><span>		<span style="color:#75715e">/*the --attributes come from the littlefoot.js docs*/</span>
</span></span><span style="display:flex;"><span>		<span style="color:#75715e">/*Change button background to something that works in both modes*/</span>
</span></span><span style="display:flex;"><span>        --button-background-color: <span style="color:#ae81ff">#666</span>; 
</span></span><span style="display:flex;"><span>		<span style="color:#75715e">/*Change padding to make the button rounder*/</span>
</span></span><span style="display:flex;"><span>        --button-padding: <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">0.35</span><span style="color:#66d9ef">rem</span>;
</span></span><span style="display:flex;"><span>		<span style="color:#75715e">/*The footnote ought to be italicised*/</span>
</span></span><span style="display:flex;"><span>        --popover-font-style: <span style="color:#66d9ef">italic</span>;
</span></span><span style="display:flex;"><span>		<span style="color:#75715e">/*Make the popover work with my theme’s colour scheme*/</span>
</span></span><span style="display:flex;"><span>        --popover-background-color: <span style="color:#a6e22e">var</span>(<span style="color:#f92672">--</span>theme);
</span></span><span style="display:flex;"><span>        --popover-text-color: <span style="color:#a6e22e">var</span>(<span style="color:#f92672">--</span>primary);
</span></span><span style="display:flex;"><span>        <span style="color:#75715e">/*the oldstyle numerals used everywhere else, don’t look good here
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">		Neither do they align properly in the box.
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">		So switch them to normal*/</span>
</span></span><span style="display:flex;"><span>		<span style="color:#66d9ef">font-variant-numeric</span>: <span style="color:#66d9ef">normal</span>;
</span></span><span style="display:flex;"><span>		<span style="color:#75715e">/*Italic numerals for the footnotes*/</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">font-style</span>: <span style="color:#66d9ef">italic</span>;
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    .<span style="color:#a6e22e">littlefoot__button</span> {
</span></span><span style="display:flex;"><span>		<span style="color:#75715e">/*very subjective. 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">		try to get the numerals centred as much as I can.*/</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">line-height</span>: <span style="color:#ae81ff">1</span>;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">vertical-align</span>: <span style="color:#66d9ef">middle</span><span style="color:#75715e">!important</span>;
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span><span style="color:#f92672">&lt;/</span><span style="color:#f92672">style</span><span style="color:#f92672">&gt;</span>
</span></span></code></pre></div><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>Et voilà! Footnotes galore!</p>
<figure class="align-center ">
    <img loading="lazy" src="/images/2024/footnotes-2.png#center"
         alt="screenshot of a blogpost, with footnotes"/> 
</figure>

<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>It looks a little weird, a little  like a billie goat walked across my post, pooping pellets across the page.<sup id="fnref:5"><a href="#fn:5" class="footnote-ref" role="doc-noteref">5</a></sup><br>
But it is my kind of weird now.<br>
And I love it :)</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 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>what we in the Mumbaiyya vulgar, would call, “Gaand mein keeda”.<br>
<em><strong>Please for the love of God, don’t look that up. Very not safe.</strong></em>&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>Heavily, as in heavily for a guy who doesn’t quite know what he’s doing.&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>All my fault obviously, with all the custom stuff. Nothing to do with the theme proper.&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:4">
<p>in the <em><strong>far, far, far,  future</strong></em>; future Jason! Not any time soon, you hear!&#160;<a href="#fnref:4" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:5">
<p>“Pooping pellets on the posted page”, Now there’s a tongue twister 😂&#160;<a href="#fnref:5" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Note to Self, Bookmark Your Work, Coda</title>
      <link>https://janusworx.com/work/bookmark-your-work-coda/</link>
      <pubDate>Sun, 25 Feb 2024 10:24:45 +0530</pubDate>
      <guid>https://janusworx.com/work/bookmark-your-work-coda/</guid>
      <description>Never lose sight of &lt;em&gt;why&lt;/em&gt; you’re doing all of this.</description>
      <content:encoded><![CDATA[<br>

<p><a href="/images/2024/bookmark-coda-important-day-liniers.jpg"><figure class="align-center ">
    <img loading="lazy" src="/images/2024/bookmark-coda-important-day-liniers.jpg#center"/> 
</figure>
</a></p>
<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>courtesy <a href="https://comicskingdom.com/Macanudo/about">Liniers</a>, <a href="https://comicskingdom.com/Macanudo/2024-02-24">Comics Kingdom</a><br>
click to enlarge</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><a href="/blog/bookmark-your-work/">With all the hullabaloo yesterday</a>, on how you’d go about organising your day, and things to let go of, and marking your place, I forgot the overarching <a href="/tags/notetoself/">Note To Self.</a><br>
Please remember. <em>Never lose sight of what’s important.</em><br>
Never forget <em>why</em> you’re doing all of this.</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>
]]></content:encoded>
    </item>
    <item>
      <title>Note to Self, Bookmark Your Work</title>
      <link>https://janusworx.com/work/bookmark-your-work/</link>
      <pubDate>Sat, 24 Feb 2024 08:34:05 +0530</pubDate>
      <guid>https://janusworx.com/work/bookmark-your-work/</guid>
      <description>Mark your place. Log. Summarise. Review.</description>
      <content:encoded><![CDATA[<div style="font-size: 85%; ">
<p><em>This started with a note to self on leaving breadcrumbs, and ended with a stream of consciousness journey on how I reached this conclusion. So what I’m trying to say, in a slightly rambling manner, is that this is a slightly incoherent, rambling post.</em></p>
</div>
<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/2024/bookmark.jpg#center"
         alt="A bookmark with the text on it, jocularly warning the reader, “The next page might be odd”"/> 
</figure>

<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>Courtesy, <a href="https://flic.kr/p/A5WU35">Delgrosso</a>, <a href="https://creativecommons.org/licenses/by-nc-nd/2.0/">CC BY-NC-ND 2.0</a>, on Flickr</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’m running my days now to slow, daily, consistent tiny amounts of progress.<br>
And I am seeing results. When there are so many demands on my time, prioritising them and then doing them slowly yet consistently is yielding fruit.<br>
While I certainly enjoy the deep dive, full of focus, lost in work sessions a lot more, I have too much life happening to allocate that kind of time and attention to everything.<br>
The first thing I did, when I kinda-sorta revamped the way I went about my days<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>, was to <a href="https://www.artofmanliness.com/character/advice/via-negativa-adding-to-your-life-by-subtracting/">drop as many hot potatoes</a> as I could, and then <a href="https://www.linkedin.com/learning/getting-things-done/do-delegate-defer">d-d-d</a>-ed all the small yet important things in my life.<br>
And then came to the sobering realisation that the rest of life just <em>had</em> to be done and dealt with. Even things I don’t like.</p>
<p>A couple of pieces then had to fall into place, before I gained some semblance of sanity and progress.</p>
<ol>
<li>I can’t do it all. Some things, important things even,  will fall through the cracks. Somethings that I <em>really</em> want to do, will get pushed to someday/maybe and some will just never get done. I have to make my peace with it.</li>
<li>Knowing what I am giving up, the things that I <em>am</em> doing? They better be worth it.</li>
<li>Making the time to think this through, and having mental muscle to <em>do</em> the thinking<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup> helped.</li>
<li>Everything does not have to be good and perfect. Good enough, is good enough.</li>
<li>Yes, stuff is hard and unpleasant, but then you have a blessed life.  There are so many people with hard lives. Suck it up. And go do something about it. Deal with it. Leaving stuff unattended in the recesses of your mind, is a sure way to rust and ruin.<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup>. At the same time, while you are hard and focussed on the work, be kind to yourself. Find that balance.</li>
<li>Alright, mentally set. Now how do I go about the  <em>doing?</em></li>
<li>By doing as much or as little as you can, depending on how you prioritise it.</li>
<li>By doing it <em>consistently</em>. Set a schedule. Hit it.</li>
<li>If you think you don’t want to do it, do 10m regardless.<sup id="fnref:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup> And then move on.<sup id="fnref:5"><a href="#fn:5" class="footnote-ref" role="doc-noteref">5</a></sup></li>
<li>If interrupted, deal with the interruption. Come back. And continue.</li>
<li>Dealing with interruptions does not mean giving in to it. It means figuring out just what it is, and figuring out what to do about it. Most stuff can be jotted down and scheduled for later. Make sure the significant folk in your life know what you are up to, so that they know when they can expect you to be present and when you are off doing your own thing.<sup id="fnref:6"><a href="#fn:6" class="footnote-ref" role="doc-noteref">6</a></sup></li>
<li>Doing stuff this way is <em>slow</em>. And that’s ok. If your life permitted focussed deep work, you’d be doing it. But that’s not how it is. So find islands of focus. And do the best you can.</li>
<li>Do the best you can, does not mean going all out. Slow, sure, steady. That is your drumbeat. Slow, sure, steady. Unflustered. Calm. Measured.</li>
</ol>
<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 what happens once you do this? And what hiccoughs did you run into? And what do you do about it?</p>
<ol>
<li>Stuff gets done! It doesn’t look like this ought to work, but it does.</li>
<li>Leaving stuff undone, putting things down for the day, causes lots of mental turmoil.</li>
<li>Also whenever you go back to stuff, there’s a lot of going back before your minds grasps where it was at, and only then does it go forth.</li>
<li>And that brings me to the crux of why I began writing this dastardly note in the first place.</li>
<li><em><strong>Log. Summarise. Review!</strong></em><br>
1. Log how long you take for your tasks. Don’t judge yourself. Just dispassionately do it.<br>
2. Every time you think you’re done with something for the time being and are putting it down? Spend the time to write down what you did and what future you needs to be doing. Create bookmarks. Give directions. Do this no matter how tired you are. No matter how shitty the note.<br>
3. Review. This is the most important bit. Review at regular intervals and at various depths.<sup id="fnref:7"><a href="#fn:7" class="footnote-ref" role="doc-noteref">7</a></sup> And only then make your plans accordingly. Daily time logging &amp; summarising leads to daily review leads to a better sense of what is done, how far you’ve come, what to change, where to swerve, what to do next, and where to go. Review, gosh darn it. Review!</li>
</ol>
<p>It’s been working well the past three months. It’s reduced a lot of friction, and quite a bit of time. It makes it easy to get into the swing of things.<br>
I’ll come back in six months and write about how it went.</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>it was a slow, gradual process.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>Thank you, meditation practice!&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>oft used phrase in the <a href="https://en.wikipedia.org/wiki/Brandon_Sanderson#Cosmere">Cosmere</a>&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:4">
<p>be as foul minded and potty mouthed and grumpy as you want. But <em><strong>do</strong></em> it.&#160;<a href="#fnref:4" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:5">
<p>unless you get into the groove.&#160;<a href="#fnref:5" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:6">
<p>if you are busy doing work all day, then that’s a sign. You need to get your life back into some semblance of balance. It’s ok doing this shit for a measure of time. This cannot be your whole life&#160;<a href="#fnref:6" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:7">
<p>I’m good at the nitty gritty and the big picture (daily / quarterly reviews). I struggle with the medium term (weekly)&#160;<a href="#fnref:7" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Publish! Show Your Work! You Don’t Have Leonardo’s Genius or Luck</title>
      <link>https://janusworx.com/personal/publish-you-dont-have-leonardos-genius-or-luck/</link>
      <pubDate>Wed, 21 Feb 2024 20:12:18 +0530</pubDate>
      <guid>https://janusworx.com/personal/publish-you-dont-have-leonardos-genius-or-luck/</guid>
      <description>Publish your work! Show up and show your work, as consistently as you can!</description>
      <content:encoded><![CDATA[<figure class="align-center ">
    <img loading="lazy" src="/images/2024/publish-leonardo-da-vinci.jpg#center"
         alt="Portrait of an old Leonardo Da Vinci"/> 
</figure>

<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p><a href="https://commons.wikimedia.org/wiki/File:Leonardo_da_Vinci_-_presumed_self-portrait_-_WGA12798.jpg">Leonardo da Vinci</a>, Public domain, via Wikimedia Commons</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>The only reason we know that both, an <a href="https://en.wikipedia.org/wiki/Marcus_Aurelius">emperor</a> as well as a <a href="https://en.wikipedia.org/wiki/Epictetus">slave</a>, both practiced the same <a href="https://en.wikipedia.org/wiki/Stoicism">philosophy</a> that inspires <a href="https://en.wikipedia.org/wiki/James_Stockdale">people</a> even now in this day and age, is because the former’s <a href="https://en.wikipedia.org/wiki/Meditations">personal notes</a> and the latter’s <a href="https://en.wikipedia.org/wiki/Enchiridion_of_Epictetus">words compiled by a student</a>, have come down to us through the ages.</p>
<p>The only reason that Leonardo Da Vinci has such a legacy, is that the few pieces of his work that <em>were</em> created and displayed, have somehow, miraculously lasted the ravages of the past half century. But so much of his work was <a href="https://en.wikipedia.org/wiki/List_of_works_by_Leonardo_da_Vinci#Manuscripts">unpublished, stowed away in private journals, never to be seen for centuries</a>. How much more would we have known, or learnt if only? If only.</p>
<p>Decades of stunning art, never released. No one knew the genius of <a href="https://www.messynessychic.com/2016/02/18/found-at-auction-the-unseen-photographs-of-a-legend-that-never-was/">Vivian Maier</a>, when she was alive.</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/2024/publish-vivian-maier.jpg#center"
         alt="a street photograph, by Vivian Maier"/> 
</figure>
</p>
<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>From John Maloof’s, <a href="https://www.vivianmaier.com/">Vivian Maier, Maloof Collection</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>Like <a href="https://kadavy.activehosted.com/index.php?action=social&amp;chash=8b0d268963dd0cfb808aac48a549829f.2700&amp;s=acf2cd918271b2bef311fff84b6fea81">David Kadavy</a> writes,<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p>
<blockquote>
<p>Finishing what you start is overrated.<br>
[…]<br>
Contrast this with many other things Leonardo never finished. The observations that lie hidden in his notes would have advanced humanity by centuries in the fields of medicine, flight, geology, and more. These sketches and notes weren’t finished – but, most tragically, they weren’t <em><strong>published.</strong></em><br>
<em><strong>You don’t have to finish to have an impact. You do have to publish.</strong></em></p>
</blockquote>
<p>Honoré De Balzac had it right,</p>
<blockquote>
<p><em><strong>“For artists, the great problem to solve is how to get oneself noticed”</strong></em></p>
</blockquote>
<p>On which Austin Kleon expounds<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup></p>
<blockquote>
<p>If you just focus on getting really good, Martin says, people will come to you. I happen to agree: You don’t really find an audience for your work; they find you. But it’s not enough to be good. In order to be found, <em><strong>you have to be findable.</strong></em> I think there’s an easy way of putting your work out there and making it discoverable while you’re focused on getting really good at what you do.</p>
<p>Imagine if your next boss didn’t have to read your résumé because he already reads your blog. Imagine being a student and getting your first gig based on a school project you posted online. Imagine losing your job but having a social network of people familiar with your work and ready to help you find a new one. Imagine turning a side project or a hobby into your profession because you had a following that could support you.</p>
<p>Or imagine something simpler and just as satisfying: spending the majority of your time, energy, and attention practicing a craft, learning a trade, or running a business, while also allowing for the possibility that your work might attract a group of people who share your interests.</p>
<p>All you have to do is, <em><strong>Show Your Work.</strong></em></p>
</blockquote>
<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/2024/publish-austin-kleon.png#center"
         alt="Austin Kleon’s blackout art. The exposed text says,“Crafting something, is  a long uncertain process. A maker should show her work”"/> 
</figure>
</p>
<figcaption style="font-style: italic; text-align: center;  font-size: 85%; color: var(--secondary)">
<p>From Austin Kleon’s book, <a href="https://austinkleon.com/show-your-work/">Show Your Work</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;'/>

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>all emphases mine&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>in his book Show Your Work&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Viewing Hugo Server Output Remotely</title>
      <link>https://janusworx.com/personal/viewing-hugo-server-remotely/</link>
      <pubDate>Sun, 11 Feb 2024 15:18:13 +0530</pubDate>
      <guid>https://janusworx.com/personal/viewing-hugo-server-remotely/</guid>
      <description>&lt;p&gt;I’ve been living a little dangerously when posting stuff on the blog.&lt;br&gt;
While it’s true that I compose my posts locally on my desktop, with a locally installed Hugo, I always catch a ton of things that I miss, &lt;em&gt;after&lt;/em&gt; I publish a post. Nearly every single time.&lt;/p&gt;
&lt;p&gt;So the process then becomes …&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open the post on the server in Emacs (after logging in, via &lt;code&gt;ssh&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Make an edit.&lt;/li&gt;
&lt;li&gt;Build and publish.&lt;/li&gt;
&lt;li&gt;Reload the page and re-read the post.&lt;/li&gt;
&lt;li&gt;Find a typo. Fix it.&lt;/li&gt;
&lt;li&gt;Repeat steps 3 &amp;amp; 4.&lt;/li&gt;
&lt;li&gt;Keep the Emacs pane to keep editing and  open &lt;em&gt;another&lt;/em&gt; terminal pane, just to build and deploy.&lt;/li&gt;
&lt;li&gt;Twenty three edits later … Be ok with what I have. (with a build and deploy, and reload and reread every couple of edits)&lt;/li&gt;
&lt;li&gt;Do a final build and deploy&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Having done this, for God knows how long now, I’m used to this workflow and decided to just lean into it.&lt;br&gt;
But while I loved my edit, build, deploy, reload, reread, workflow, I felt like I was tempting &lt;a href=&#34;https://en.wikipedia.org/wiki/Moirai#/media/File:The_Three_Fates_by_Paul_Thumann.jpg&#34;&gt;the fates&lt;/a&gt;, everytime I did it. Besides I did not like messing with the live website like that.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>I’ve been living a little dangerously when posting stuff on the blog.<br>
While it’s true that I compose my posts locally on my desktop, with a locally installed Hugo, I always catch a ton of things that I miss, <em>after</em> I publish a post. Nearly every single time.</p>
<p>So the process then becomes …</p>
<ol>
<li>Open the post on the server in Emacs (after logging in, via <code>ssh</code>)</li>
<li>Make an edit.</li>
<li>Build and publish.</li>
<li>Reload the page and re-read the post.</li>
<li>Find a typo. Fix it.</li>
<li>Repeat steps 3 &amp; 4.</li>
<li>Keep the Emacs pane to keep editing and  open <em>another</em> terminal pane, just to build and deploy.</li>
<li>Twenty three edits later … Be ok with what I have. (with a build and deploy, and reload and reread every couple of edits)</li>
<li>Do a final build and deploy</li>
</ol>
<p>Having done this, for God knows how long now, I’m used to this workflow and decided to just lean into it.<br>
But while I loved my edit, build, deploy, reload, reread, workflow, I felt like I was tempting <a href="https://en.wikipedia.org/wiki/Moirai#/media/File:The_Three_Fates_by_Paul_Thumann.jpg">the fates</a>, everytime I did it. Besides I did not like messing with the live website like that.</p>
<p>So I wondered, if the way I did it locally, could be kinda sorta done remotely.<br>
When I write posts locally, all I need to do is run <code>hugo server</code> in a terminal and it spins up a local server, with the all the posts, built and rendered in memory for speedy access.<br>
Could I have that? But remote? Could I run <code>hugo server</code> on my server and view the results in my browser from anywhere?<br>
About an hour of exploration later, I did have it up and running!</p>
<p>Here’s what I did, after delving into Hugo’s <a href="https://gohugo.io/commands/hugo_server/"><code>server</code></a> command options</p>
<ol>
<li>Created a subdomain (drpr.janusworx.com) and pointed it to my server. (this is where I’ll see my temporary, work-in-progress, results whenever I run <code>hugo server</code> on my server)</li>
<li>Used Nginx as a proxy to point to it. (Also serves as my SSL termination point, freeing Hugo from the burdens of HTTPS/SSL drama)</li>
<li>Spun up Hugo with <code>hugo serve -D -b https://drpr.janusworx.com  --appendPort=false --liveReloadPort=443</code> where …<br>
a. <code>-D</code> builds posts marked with drafts<br>
b. <code>-b</code> tells Hugo the hostname and path to the root of the blog (in my case, <a href="https://drpr.janusworx.com">https://drpr.janusworx.com</a>)<br>
c. <code>--appendPort</code> is set to false, which stops appending the port number to the url (happens by default, http://localhost:1313)<br>
d. <code>--liveReloadPort</code> is set to my SSL/TLS port, so that I can watch changes live with every edit.</li>
</ol>
<p>And everything worked!<br>
Except for the live reloading. That bit just refused to work.
I could make changes and then go manually reload the web page and it would update. <em><strong>Grr!</strong></em> So near, yet so far!<br>
Some more exploration led to <a href="https://github.com/gohugoio/hugo/issues/2205#issuecomment-498769463">Pothi Kalimuthu’s extremely helpful comment</a> on Github …</p>
<figure class="align-center ">
    <img loading="lazy" src="/images/2024/hugo-livereload-remote.png#center"/> 
</figure>

<p>Where I realised that Hugo’s LiveReload script (that reflects changes) needs a location in my Nginx config.<br>
So a bit of copying and pasting and adapting and <em>tada!</em> 🎉</p>
<p>This blog post was written entirely on the server, with me watching the changes live as they happened …</p>
<figure class="align-center ">
    <img loading="lazy" src="/images/2024/hugo-livereload-remote-2.png#center"/> 
</figure>

<p>And once this was done, I could just do a single, final, build and deploy to publish.</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>
]]></content:encoded>
    </item>
    <item>
      <title>Note to Self, Switch to Manjaro “Unstable”</title>
      <link>https://janusworx.com/work/note-to-self-switch-to-manjaro-unstable/</link>
      <pubDate>Tue, 06 Feb 2024 09:01:31 +0530</pubDate>
      <guid>https://janusworx.com/work/note-to-self-switch-to-manjaro-unstable/</guid>
      <description>&lt;p&gt;I kept wondering why Syncthing releases on one of my Pis would lag behind my other one.&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; The big difference between the two is that one runs Raspbian and the other, Manjaro&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;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;. This wouldn’t happen earlier when they ran Arch and Manjaro.&lt;br&gt;
And today, I head-slappingly remembered, that it &lt;em&gt;did&lt;/em&gt; lag and I had to do stuff to get at the latest software stuff.&lt;/p&gt;
&lt;p&gt;What I had to do, was to switch Manjaro’s software branch to &lt;code&gt;unstable&lt;/code&gt; (as opposed to the default &lt;code&gt;stable&lt;/code&gt;. &lt;a href=&#34;https://wiki.manjaro.org/index.php?title=Switching_Branches&#34;&gt;Read more here&lt;/a&gt;.)&lt;br&gt;
The only reason I use Manjaro, instead of Arch&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;, is that the Arch kernel does not boot on this Pi and I want the latest Arch stuff, which is what the &lt;code&gt;unstable&lt;/code&gt; Manjaro software branch offers.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>I kept wondering why Syncthing releases on one of my Pis would lag behind my other one.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> The big difference between the two is that one runs Raspbian and the other, Manjaro<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup><sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup>. This wouldn’t happen earlier when they ran Arch and Manjaro.<br>
And today, I head-slappingly remembered, that it <em>did</em> lag and I had to do stuff to get at the latest software stuff.</p>
<p>What I had to do, was to switch Manjaro’s software branch to <code>unstable</code> (as opposed to the default <code>stable</code>. <a href="https://wiki.manjaro.org/index.php?title=Switching_Branches">Read more here</a>.)<br>
The only reason I use Manjaro, instead of Arch<sup id="fnref:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup>, is that the Arch kernel does not boot on this Pi and I want the latest Arch stuff, which is what the <code>unstable</code> Manjaro software branch offers.</p>
<p>So 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-bash" data-lang="bash"><span style="display:flex;"><span>sudo pacman-mirrors --api --set-branch unstable
</span></span></code></pre></div><p>switches me to the <code>unstable</code> branch 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-bash" data-lang="bash"><span style="display:flex;"><span>sudo pacman-mirrors --fasttrack <span style="color:#ae81ff">5</span> <span style="color:#f92672">&amp;&amp;</span> sudo pacman -Syu 
</span></span></code></pre></div><p>will resync all the software with what’s available on that branch.</p>
<p>Tada, I have <code>syncthing v1.27.2 &quot;Gold Grasshopper&quot;</code> on all my machines :)</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>as well as other software in general&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>because, reasons. and a long chain of upgrade and experimentation and moves from Pis 3 to 4 to 5&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>It’s the Manjaro Pi that lags. And yes, I know you can already guess why&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:4">
<p>with apologies to Manjaro&#160;<a href="#fnref:4" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
  </channel>
</rss>
