<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Dgplug on Janusworx</title><link>https://janusworx.com/tags/dgplug/</link><description>Recent content in Dgplug on Janusworx</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>feedback@janusworx.com (Mario Jason Braganza)</managingEditor><webMaster>feedback@janusworx.com (Mario Jason Braganza)</webMaster><copyright>© 2026, Mario Jason Braganza</copyright><lastBuildDate>Fri, 24 Jul 2026 08:30:00 +0530</lastBuildDate><atom:link href="https://janusworx.com/tags/dgplug/index.xml" rel="self" type="application/rss+xml"/><item><title>Moved From Papermod to Blowfish</title><link>https://janusworx.com/work/moved-from-papermod-to-blowfish/</link><pubDate>Fri, 24 Jul 2026 08:30:00 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/moved-from-papermod-to-blowfish/</guid><description>&lt;br&gt;

&lt;div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="info"&gt;
 &lt;div class="flex items-center gap-2 font-semibold text-inherit"&gt;
 &lt;div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"&gt;&lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/&gt;&lt;/svg&gt;
&lt;/span&gt;&lt;/div&gt;
 &lt;div class="grow"&gt;
 Intended Audience
 &lt;/div&gt;
 &lt;/div&gt;&lt;div class="admonition-content mt-3 text-base leading-relaxed text-inherit"&gt;&lt;p&gt;Me.&lt;br&gt;
This is a sorta-kinda living document, a record of my idiosyncratic decisions to first move to, and then bend the Blowfish theme to my needs.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;Update (2026-07-24) :&lt;/strong&gt;&lt;/em&gt; &lt;a href="https://janusworx.com/work/moved-from-papermod-to-blowfish/#rss" &gt;RSS updates&lt;/a&gt;, &lt;a href="https://janusworx.com/work/moved-from-papermod-to-blowfish/#miscellanea" &gt;Miscellanea&lt;/a&gt;, some editing.&lt;/p&gt;

&lt;figure class="mjb-img-center"&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2026/moved-from-papermod-to-blowfish_logo.png" alt="Blowfish Hugo theme logo, a pufferfish in blue and white" /&gt;
 
 &lt;figcaption&gt;Blowfish theme logo&lt;/figcaption&gt;
 &lt;/figure&gt;
&lt;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;'/&gt;

&lt;p&gt;I changed my blog theme from &lt;a href="https://adityatelange.github.io/hugo-PaperMod/" target="_blank" rel="noreferrer"&gt;Papermod&lt;/a&gt; to &lt;a href="https://blowfish.page" target="_blank" rel="noreferrer"&gt;Blowfish&lt;/a&gt;.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Why move to &lt;a href="https://blowfish.page" target="_blank" rel="noreferrer"&gt;Blowfish&lt;/a&gt;?
 &lt;div id="why-move-to-blowfish" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#why-move-to-blowfish" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://adityatelange.github.io/hugo-PaperMod/" target="_blank" rel="noreferrer"&gt;Papermod&lt;/a&gt;, to my mind, is perfection. And I outgrew it. That’s all there is to the why.&lt;br&gt;
Papermod caters to the needs of a blog, and I think my blog is slowly turning into a multi section website.&lt;br&gt;
I want menus, and possibly submenus and Papermod does not do them.&lt;br&gt;
The finished outcome, while not as pretty and uniform as the old Papermod site, makes writing and managing it all, much simpler.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h2 class="relative group"&gt;Blowfish specific things for future Jason to note.
 &lt;div id="blowfish-specific-things-for-future-jason-to-note" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#blowfish-specific-things-for-future-jason-to-note" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;

&lt;h3 class="relative group"&gt;Big Picture things
 &lt;div id="big-picture-things" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#big-picture-things" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;The theme does a lot. Most of which I don’t think I need.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;The aim is to match what my site looked with Papermod, as closely as possible.&lt;/li&gt;
&lt;li&gt;Everything CSS is in &lt;code&gt;assets/css/custom.css&lt;/code&gt;, rather than multiple CSS files as it was with Papermod.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://janusworx.com/work/you-can-now-search-this-blog/" &gt;Pagefind&lt;/a&gt; powers search on the site. The inbuilt search is disabled in &lt;code&gt;main.toml&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Footnotes use &lt;a href="https://janusworx.com/work/note-to-self-footnotes-using-littlefoot.js/" &gt;Littlefoot&lt;/a&gt;; so they appear as popups, and the need to scroll up and down the page is reduced.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 class="relative group"&gt;Configuration
 &lt;div id="configuration" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#configuration" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Blowfish separates everything out in its config. Lots of &lt;code&gt;toml&lt;/code&gt; files in there.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Base config is in &lt;code&gt;hugo.toml&lt;/code&gt;, theme parameters are in &lt;code&gt;params.toml&lt;/code&gt;, menus in &lt;code&gt;menus.XX.toml&lt;/code&gt; and language + translation related stuff is in &lt;code&gt;languages.XX.toml&lt;/code&gt; &lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;main.toml&lt;/code&gt; sets the theme, the &lt;code&gt;baseURL&lt;/code&gt; and I’ve added a section to limit RSS entries to only the last 50 items.&lt;/li&gt;
&lt;li&gt;The author parameters along with the social link set, as well as the logo, are in &lt;code&gt;languages.XX.toml&lt;/code&gt;. I have duplicated them. One for &lt;code&gt;EN&lt;/code&gt; and one for &lt;code&gt;FR&lt;/code&gt;. The logo that it requires, is in the &lt;code&gt;assets/logo&lt;/code&gt; directory.&lt;/li&gt;
&lt;li&gt;Menus and submenus in &lt;code&gt;menus.XX.toml&lt;/code&gt;. Duplicated. The English menus have English names and the French, French ones.&lt;/li&gt;
&lt;li&gt;Parameters; the header is set to basic. Every other option creates a sticky header of some sort. Lots of other changes. Most are self explanatory. Turned off “Hero” options everywhere, to stick to a plain, basic layout as much as possible.&lt;/li&gt;
&lt;li&gt;My split of the various configuration files for environments (base, development &amp;amp; production) have stayed the same with no changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 class="relative group"&gt;Content Structure
 &lt;div id="content-structure" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#content-structure" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Directories and subdirectories for each section.&lt;/li&gt;
&lt;li&gt;Make sure each section has a corresponding &lt;code&gt;index.XX.md&lt;/code&gt; for static pages or &lt;code&gt;_index.XX.md&lt;/code&gt; for list pages. This, I think (but am not sure) has fixed my old, nagging issue of page navigation overflowing. I would keep going next, in the Talks section for example, and when I reached the end, it would show me another entry from some other section. Now the front/back buttons stay restricted to the section they are in.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 class="relative group"&gt;Archetypes
 &lt;div id="archetypes" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#archetypes" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;All the archetypes have been slightly tweaked. They now also include a template line for an image. It uses the theme’s &lt;code&gt;figure&lt;/code&gt; shortcode for images.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 class="relative group"&gt;i18n (Internationalisation)
 &lt;div id="i18n-internationalisation" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#i18n-internationalisation" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;The internationalisation options are easier here. Just defining a term somewhere and then referring to it here just works.&lt;br&gt;
For e.g., I use &lt;code&gt;search_placeholder&lt;/code&gt; as a term in the &lt;code&gt;search&lt;/code&gt; layout and then in &lt;code&gt;i18n/en.yaml&lt;/code&gt; I have, &lt;code&gt;search_placeholder: &amp;quot;Search for something …&amp;quot;&lt;/code&gt; while &lt;code&gt;i18n/fr.yaml&lt;/code&gt; gives the same term a different spin, &lt;code&gt;search_placeholder: &amp;quot;Rechercher des articles …&amp;quot;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 class="relative group"&gt;Layout Overrides
 &lt;div id="layout-overrides" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#layout-overrides" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;

&lt;h4 class="relative group"&gt;RSS
 &lt;div id="rss" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#rss" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Have tweaked the RSS layout a teensy bit. My version is in &lt;code&gt;layouts/_default/rss.xml&lt;/code&gt;, which includes the full text of the post, instead of just a summary.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go-html-template" data-lang="go-html-template"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;lt;!-- &amp;lt;description&amp;gt;&lt;/span&gt;&lt;span class="cm"&gt;{{/* .Summary | transform.XMLEscape | safeHTML */}}&lt;/span&gt;&lt;span class="c"&gt;&amp;lt;/description&amp;gt; --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;description&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;.Content&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;transform&lt;/span&gt;&lt;span class="na"&gt;.XMLEscape&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;safeHTML&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;description&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Have restricted RSS feed generation for posts in the &lt;a href="https://janusworx.com/nm/" &gt;Notes and Miscellanea&lt;/a&gt; section. They won’t appear in the RSS feed unless I want them to. Most of them are just streams of consciousness, to help me get on with my day. Only a few are exceptions, that I want published.&lt;br&gt;
I even disable sitemap generation for those “important to me, but useless for thee” posts with this bit of metadata in each post&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;sitemap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;disable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;So I have then taken advantage of this fact, to exclude these posts from having entries in the RSS feed, by telling Hugo to only look at posts where such a key does not exist; which basically, is everything else.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go-html-template" data-lang="go-html-template"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;&amp;lt;!-- &lt;/span&gt;&lt;span class="cm"&gt;{{/* range $pages */}}&lt;/span&gt;&lt;span class="c"&gt; --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;range&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;where&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;$pages&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Sitemap.Disable&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;ne&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h4 class="relative group"&gt;Search
 &lt;div id="search" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#search" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;This pulls in the script and the styles for &lt;a href="https://janusworx.com/work/you-can-now-search-this-blog/" &gt;Pagefind&lt;/a&gt;, which I use for searching the blog. Layout is in &lt;code&gt;layouts/_default/search.html&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Also note, then when working on search locally, first create an index with pagefind and move it to the static folder because our normal way of working is to render it all in memory.
&lt;ul&gt;
&lt;li&gt;do a &lt;code&gt;hugo build&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;then do &lt;code&gt;pagefind_extended --site public&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;then &lt;code&gt;mv public/pagefind static/pagefind&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;then &lt;code&gt;rm -rf public&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;and then start the hugo server like we normally do&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 class="relative group"&gt;Littlefoot
 &lt;div id="littlefoot" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#littlefoot" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Footnotes are powered by &lt;a href="https://janusworx.com/work/note-to-self-footnotes-using-littlefoot.js/" &gt;Littlefoot&lt;/a&gt;. Have used &lt;code&gt;layouts/partials/extend-footer.html&lt;/code&gt; to pull in the Littlefoot script and &lt;code&gt;layouts/partials/extend-footer.html&lt;/code&gt; to grab the CSS.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 class="relative group"&gt;Redirect
 &lt;div id="redirect" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#redirect" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;An old redirect template to redirect from one section to the other is still in place in the &lt;code&gt;layouts/redirect&lt;/code&gt; directory&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 class="relative group"&gt;Shortcodes
 &lt;div id="shortcodes" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#shortcodes" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Most of the old shortcodes made it over. Retired my image and caption shortcodes in favour of using Blowfish’s version. Also created an &lt;code&gt;hsgallery&lt;/code&gt; shortcode, so that I could continue using my old &lt;a href="https://github.com/mfg92/hugo-shortcode-gallery" target="_blank" rel="noreferrer"&gt;Hugo Shortcode Gallery&lt;/a&gt; to create image galleries. The &lt;code&gt;gallery&lt;/code&gt; shortcode conflicts with Blowfish’s own, which I don’t like and so won’t use.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 class="relative group"&gt;Static + Tools
 &lt;div id="static--tools" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#static--tools" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fonts and Littlefoot reside in the &lt;code&gt;static&lt;/code&gt; directory, along with all my images.&lt;/li&gt;
&lt;li&gt;There’s also a &lt;code&gt;tools&lt;/code&gt; directory which contains the Pagefind binary. This does not get published obviously. But the Forgejo action uses this to generate an index for the site and then sends the whole thing off to the VM.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 class="relative group"&gt;Themes
 &lt;div id="themes" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#themes" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Contains &lt;a href="https://blowfish.page" target="_blank" rel="noreferrer"&gt;Blowfish&lt;/a&gt; and &lt;a href="https://github.com/mfg92/hugo-shortcode-gallery" target="_blank" rel="noreferrer"&gt;Hugo Shortcode Gallery&lt;/a&gt;, added as &lt;code&gt;git&lt;/code&gt; submodules. I dropped Hugo Admonitions, because Blowfish has them already.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 class="relative group"&gt;CSS
 &lt;div id="css" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#css" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;All in &lt;code&gt;assets/css/custom.css&lt;/code&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Import fonts: Valkyrie for the site and Source Code Pro for code.&lt;/li&gt;
&lt;li&gt;Tweaked the Janusworx up left on my site, and changed all the nav bar items to use Valkyrie Caps.&lt;/li&gt;
&lt;li&gt;Dark mode links were not contrasty enough. So changed the colour and added an underline on hover.&lt;/li&gt;
&lt;li&gt;Added a class to the figure tag, so I could center the pics I use.&lt;/li&gt;
&lt;li&gt;Added an indent to the numbered list items on the Annual Book List pages, so that the numbers stay &lt;em&gt;under&lt;/em&gt; each month.&lt;/li&gt;
&lt;li&gt;Style littlefoot footnotes, so that the button is slightly smaller and higher, and the notes use Valkyrie, along with a couple of other tiny tweaks.&lt;/li&gt;
&lt;li&gt;Style the Blowfish box, and the results, on the search page&lt;/li&gt;
&lt;li&gt;Main thing to note. Use &lt;code&gt;!important;&lt;/code&gt; liberally. Changes don’t always cascade down correctly.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 class="relative group"&gt;Miscellanea
 &lt;div id="miscellanea" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#miscellanea" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;

&lt;h4 class="relative group"&gt;Go Templates:
 &lt;div id="go-templates" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#go-templates" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;```go-html-template&lt;/code&gt; as the language hint to the code fence to display Go template code correctly. (like I needed to in this post for e.g.)&lt;/li&gt;
&lt;li&gt;If it is pure Go Template stuff with little to no html, another alternative is &lt;code&gt;```go-text-template &lt;/code&gt;&lt;/li&gt;
&lt;li&gt;I could not just comment out Go template code with HTML comment markers &lt;code&gt;&amp;lt;!-- --&amp;gt;&lt;/code&gt;. The Hugo live server kept crashing on me with weird EOF errors, until I figured this out. The Go template block needs a comment marker &lt;em&gt;inside&lt;/em&gt; the the &lt;code&gt;{{ … }}&lt;/code&gt; section like so, &lt;code&gt;{{/* … */}}&lt;/code&gt;.&lt;br&gt;
E.g. &lt;code&gt;{{/* range $pages */}}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Moved From Papermod to Blowfish
%22" &gt;feedback at this domain&lt;/a&gt;.&lt;br&gt;
P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;famous last words!&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;XX is the language code. I have EN for English and FR for French. So &lt;code&gt;menus.fr.toml&lt;/code&gt; for e.g.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;I have modified the notes archetype, so this is always pre filled and set.&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Happy Birthday Abbygail</title><link>https://janusworx.com/personal/happy-birthday-abbygail-4/</link><pubDate>Mon, 06 Jul 2026 00:00:00 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/personal/happy-birthday-abbygail-4/</guid><description>
&lt;figure class="mjb-img-center"&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2026/happy-birthday-abbygail-4.jpg" alt="Picture of a beautiful woman standing under cherry blossoms in Paris, with the Eiffel tower in the background" /&gt;
 
 &lt;figcaption&gt;Abby, at her second favourite place in the world.&lt;/figcaption&gt;
 &lt;/figure&gt;
&lt;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;'/&gt;

&lt;p&gt;Love knows no difference between life and death.&lt;br&gt;
The one who gives you a reason to live is also the one who takes your breath away.&lt;/p&gt;
&lt;p&gt;جینے مرنے میں کچھ فرق نہیں فرق نہیں&lt;br&gt;
اُسی کو دیکھ کر جیتے ہیں جس کافر پہ دم نکلے&lt;/p&gt;
&lt;p&gt;(jeene marne mein kuchh farq nahi farq nahi&lt;br&gt;
usi ko dekh kar jeete hain jis kafir pe dam nikle)&lt;/p&gt;
&lt;p&gt;— &lt;a href="https://www.hindustantimes.com/lifestyle/art-culture/mirza-ghalib-224th-birth-anniversary-10-love-couplets-by-legendary-urdu-poet-101640589255326.html" target="_blank" rel="noreferrer"&gt;Ghalib&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Happy Birthday Abbygail
%22" &gt;feedback at this domain&lt;/a&gt;.&lt;br&gt;
P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;/p&gt;</description></item><item><title>No More Stars</title><link>https://janusworx.com/reading/no-more-stars/</link><pubDate>Fri, 03 Jul 2026 12:35:20 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/no-more-stars/</guid><description>
&lt;figure class="mjb-img-center"&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2026/no-more-stars.jpg" alt="Dark Sky with just a crescent moon and no stars" /&gt;
 
 &lt;figcaption&gt;Photo by &lt;a href="https://unsplash.com/@withluke?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" target="_blank" rel="noreferrer"&gt;Luke Stackpoole&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/closeup-photography-of-crescent-moon-TRXSkmJb40c?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" target="_blank" rel="noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/figcaption&gt;
 &lt;/figure&gt;
&lt;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;'/&gt;

&lt;p&gt;&lt;a href="https://janusworx.com/reading/2021/" &gt;The&lt;/a&gt; &lt;a href="https://janusworx.com/reading/2022/" &gt;old&lt;/a&gt; &lt;a href="https://janusworx.com/reading/2023/" &gt;annual&lt;/a&gt; &lt;a href="https://janusworx.com/reading/2024/" &gt;book&lt;/a&gt; &lt;a href="https://janusworx.com/reading/2025/" &gt;lists&lt;/a&gt; have used stars to mark the books I liked/loved.&lt;/p&gt;
&lt;p&gt;But this year, I have been mostly only listing things that I love, because I’ve gotten into the habit of putting down the things that don’t hold my attention and moving on to something else. There’s a certain joy to throwing a book across the room with a “Nooooooooo! Not reading this one any more … Life’s too short! So there!”&lt;/p&gt;
&lt;p&gt;Now, a title only goes on the list if I’ve finished the book &lt;em&gt;and&lt;/em&gt; I love/like it.&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: No More Stars
%22" &gt;feedback at this domain&lt;/a&gt;.&lt;br&gt;
P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Books I Read in June, 2026</title><link>https://janusworx.com/reading/books-i-read-in-june-2026/</link><pubDate>Thu, 02 Jul 2026 09:33:57 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/books-i-read-in-june-2026/</guid><description>
&lt;figure class="mjb-img-center"&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2026/what-i-read-in-june-2026-art-of-reading.jpg" alt="pile of old english classic books with a flower on top" /&gt;
 
 &lt;figcaption&gt;Photo by &lt;a href="https://unsplash.com/@_imd?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" target="_blank" rel="noreferrer"&gt;Zoe&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/a-gold-box-with-blue-flowers-qo6OCDyLR1U?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" target="_blank" rel="noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/figcaption&gt;
 &lt;/figure&gt;
&lt;p&gt;Got quite a bit of reading done this month, because there was little else to do with the root canal and other things that kept popping up. Reading kept me sane.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;&lt;a href="https://podcasts.apple.com/in/podcast/empire/id1639561921" target="_blank" rel="noreferrer"&gt;Empire Podcast&lt;/a&gt;: Spice Wars, The Battle of the East India Companies, Episodes 358-360
 &lt;div id="empire-podcast-spice-wars-the-battle-of-the-east-india-companies-episodes-358-360" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#empire-podcast-spice-wars-the-battle-of-the-east-india-companies-episodes-358-360" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;While India had the &lt;a href="https://en.wikipedia.org/wiki/East_India_Company" target="_blank" rel="noreferrer"&gt;EIC&lt;/a&gt; later, Indonesia and its surroundings were ground earlier under the boot of the &lt;a href="https://en.wikipedia.org/wiki/Dutch_East_India_Company" target="_blank" rel="noreferrer"&gt;VOC&lt;/a&gt;. According to &lt;a href="https://en.wikipedia.org/wiki/Dutch_East_India_Company#:~:text=Statistically," target="_blank" rel="noreferrer"&gt;Wikipedia&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Statistically, the VOC eclipsed all of its rivals in the Asian trade. Between 1602 and 1796, the VOC sent nearly a million Europeans to work in the Asia trade on 4,785 ships, and netted for their efforts more than 2.5 million tonnes of Asian trade goods and slaves. By contrast, the rest of Europe combined sent 882,412 people from 1500 to 1795. The fleet of the English, later British East India Company, the VOC&amp;rsquo;s nearest competitor, was a distant second to its total traffic, with 2,690 ships and one-fifth the tonnage of goods carried by the VOC. The VOC enjoyed huge profits from its spice monopoly through most of the 17th century.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;The series details the history of the two early corporate raiders and plunderers, and the carnage they wrought in South East Asia and the Indian subcontinent.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;&lt;a href="https://therestishistory.com/episodes/" target="_blank" rel="noreferrer"&gt;The Rest is History&lt;/a&gt;, The Fall of the Incas, Episodes 644-649
 &lt;div id="the-rest-is-history-the-fall-of-the-incas-episodes-644-649" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-rest-is-history-the-fall-of-the-incas-episodes-644-649" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;I don’t know why but I always assumed South America was colonised east to west. This series along with the &lt;a href="https://janusworx.com/reading/books-i-read-in-may-2026/#empire-podcast-simon-bolivar-the-liberator-episodes-354-357" &gt;Simon Bolivar series last month&lt;/a&gt; gives me the idea, that it went from the Caribbean to Mexico and then downwards towards the top of South America and down the west coast. I should read more history about the continent.&lt;br&gt;
This series, somehow, felt even more heart breaking than the Aztecs. The greed and the avarice and the deception and the desperate, brutish, violence of it all, should leave you shaking with rage.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;The Secret Pilgrim, John le Carré
 &lt;div id="the-secret-pilgrim-john-le-carré" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-secret-pilgrim-john-le-carr%c3%a9" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;The probably will be my last le Carré for a while. Too much bleakness, while real life is in a tumult is not good. A collection of stories big and small, with Smiley playing the framing device. This is more about Ned and his adventures in the service. I loved it.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;Platform Decay, Martha Wells
 &lt;div id="platform-decay-martha-wells" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#platform-decay-martha-wells" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Yay! New Murderbot episode! Bought and read in a day flat. Not as good as the older Murderbots, but even a middling Murderbot book is much better than most other books. Loved it to bits. Plot is the same as every other Murderbot. Murderbot rescues someone. What else is new? Murberbot now has regular “check-ins” with its feelings.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;Control, Andy Diggle, Angela Cruickshank, Andrea Mutti &amp;amp; Vladimir Popov
 &lt;div id="control-andy-diggle-angela-cruickshank-andrea-mutti--vladimir-popov" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#control-andy-diggle-angela-cruickshank-andrea-mutti--vladimir-popov" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;A modern hardboiled comic … err graphic novel. Cleaned out a lot of my comics. Most of the old ones have not aged well. And most of the new ones are just out there to shock you. Alan Moore really raised the bar. Nothing really comes close. His are the only ones I’ve held on to. V for Vendetta is the only one of two hardback I have. The other is my lovely Sandman series (written by the asshole who shall not be named, and illustrated by Keith, Dringenberg et al.)&lt;br&gt;
Back to Control. This plays like an old potboiler. Detective is framed. Detective has to break the law to get justice and show her innocence. Pretty decent writing. But lovely art.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;&lt;a href="https://www.youtube.com/watch?v=vPX6smnb4ro" target="_blank" rel="noreferrer"&gt;Chung Ju-yung &amp;amp; Hyundai&lt;/a&gt;, Farnam Street Podcast
 &lt;div id="chung-ju-yung--hyundai-farnam-street-podcast" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#chung-ju-yung--hyundai-farnam-street-podcast" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;This is Shane Parrish trying to pull an Acquired like episode. Really, really, really good.&lt;br&gt;
The (hagiographic) story of Chung Ju-Yung’s life and how he built Hyundai and was a major driving force behind South Korea turning into one of the largest economies in the world.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;Steve Jobs in Exile, Geoffrey Cain
 &lt;div id="steve-jobs-in-exile-geoffrey-cain" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#steve-jobs-in-exile-geoffrey-cain" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;If Becoming Steve Jobs, tracked Jobs and his personal growth through his Next years, this one fleshes out nearly everything Schlender talked about in his book. If you are interested in biographies or Steve Jobs, this is definitely worth a read. I bought it because this is the only era of Jobs’ life and career that I’m interested in. The turnaround of Apple was something started just as I entered the workforce and was something I lived through. The early Apple, I already know lots about. So I’ve always wanted to know what happened in the “lost decade.” Becoming Steve Jobs and Steve Jobs in Exile are a good duology to know everything about that era.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;Apple: The First 50 Years, David Pogue
 &lt;div id="apple-the-first-50-years-david-pogue" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#apple-the-first-50-years-david-pogue" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;If you want an grand overview of Apple’s history, look no further. Pogue probably leveraged damn near every connection he must have had to write this. It’s a lovely history of the company. Gets a little sloggy in parts, but a good book nonetheless.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;&lt;a href="https://books.pharo.org/" target="_blank" rel="noreferrer"&gt;Learning Object-Oriented Programming, Design and TDD with Pharo&lt;/a&gt;, Stéphane Ducasse &amp;amp; Damien Pollet
 &lt;div id="learning-object-oriented-programming-design-and-tdd-with-pharo-stéphane-ducasse--damien-pollet" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#learning-object-oriented-programming-design-and-tdd-with-pharo-st%c3%a9phane-ducasse--damien-pollet" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;I just &lt;em&gt;had&lt;/em&gt; to understand what message passing meant, and what Objects were, in the way the original authors intended it. Pharo is a spiritual descendant of Smalltalk, and like Lisp, works in a self contained environment where darn near everything is an object and can be reconfigured. This book gave me a really good base on which to build my further programming knowledge when it comes to Object Oriented Programming. This book—along with others—is freely available on the Pharo website.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;Data Structures the Fun Way, Jeremy Kubica
 &lt;div id="data-structures-the-fun-way-jeremy-kubica" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#data-structures-the-fun-way-jeremy-kubica" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Reading a No Starch book is always fun. And I read this to get a handle of just what the big picture was on Data Structures. This is a really good book that does that. Examples are clear. Ideas are well explained. And nothing gets too dreary. The coffee analogies are just … barista’s kiss!&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;The Art of Reading, Timothy Spurgin (The Great Courses)
 &lt;div id="the-art-of-reading-timothy-spurgin-the-great-courses" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-art-of-reading-timothy-spurgin-the-great-courses" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;This is the companion to Adler’s, How to Read a Book. Adler is about the craft, while Spurgin is about the art. They both complement each other. Adler comes from how to use your mind to tackle the rectangular piece of dead tree in front of you, in a methodical manner. And once you have that, Spurgin then takes you on a journey of just how large the world of reading is. How to think about narration. And the basics of storytelling. Of plots and plotting. The rise of metafiction. What it means to read closely and carefully. And how even small details all contribute the the work as a whole. It truly has made me want to be, what Spurgin calls, &lt;em&gt;“an artful reader.”&lt;/em&gt;&lt;br&gt;
This series of lectures was something I bought on a whim when I was trying to learn Mathematics via the Great Courses during Covid.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; And it just sat on the shelf, until I realised, I could just convert the videos to audio and then listen to them as I potter about the kitchen in the mornings. Halfway through the book, I also found that the Great Courses were available as audiobooks on Audible as well. So my wishlist is damn near full for the next two years now. 😂 So hopefully there will always be one of these courses I do every month. These are really lovely.&lt;br&gt;
Going through this course, also &lt;em&gt;finally&lt;/em&gt; helped me clarify to myself, just what it is that I consider a really good book. It has to be beautifully written. And the writing has to match the world and the genre. It also makes me realise books like these are few and far between, so now it also makes me a more patient book buyer :)&lt;br&gt;
Some examples: Richard Powers in The Overstory, Ursula K Leguin and Tamsyn Muir with all their works of fantasy, and Peter Watts too with his hard edged, dark, science fiction. And then there’s always the classics, which I am now slowly discovering and enjoying. Wish me luck!&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Books I Read in June, 2026
%22" &gt;feedback at this domain&lt;/a&gt;.&lt;br&gt;
P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;don’t ask why.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>2026</title><link>https://janusworx.com/reading/2026/</link><pubDate>Wed, 01 Jul 2026 05:30:00 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/2026/</guid><description>&lt;div style="font-size: 85%; "&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;What do all the stars and daggers after the book titles mean?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;¶ for &lt;a href="https://janusworx.com/lindy-books/" target="_blank" rel="noopener noreferrer"&gt;Lindy books&lt;/a&gt; &lt;br&gt;
† for most non fiction&lt;br&gt;
‡ for tech / work / study / reference stuff &lt;br&gt;
# for alternate media (like audio or video)&lt;br&gt;
numbers are footnotes&lt;br&gt;
Some book titles might be repeated (in addition to the annual Lindy reads :)&lt;br&gt;
After all, &lt;a href="https://janusworx.com/lindy-books/" target="_blank" rel="noopener noreferrer"&gt;we are what we re-read&lt;/a&gt; :)&lt;/p&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h3 class="relative group"&gt;January
 &lt;div id="january" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#january" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;div class="book-list"&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://therestishistory.com/episodes/" target="_blank" rel="noreferrer"&gt;The Rest is History&lt;/a&gt;, The Nazis at War, Parts I-IV&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/gb/podcast/sherlock-co/id1710121792" target="_blank" rel="noreferrer"&gt;The Second Stain&lt;/a&gt;, Sherlock &amp;amp; Co. Podcast, Season 37&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/gb/podcast/sherlock-co/id1710121792" target="_blank" rel="noreferrer"&gt;The Man with the Twisted Lip&lt;/a&gt;, Sherlock &amp;amp; Co. Podcast, Season 38&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.dancarlin.com/product/hardcore-history-73-mania-for-subjugation-iii/" target="_blank" rel="noreferrer"&gt;Mania for Subjugation III&lt;/a&gt;, Hardcore History, Episode 73&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;The Thin Man, Dashiell Hammett&lt;/li&gt;
&lt;li&gt;Sister, Maiden, Monster, Lucy A. Snyder&lt;/li&gt;
&lt;li&gt;Shattered Lands, Sam Dalrymple&lt;sup&gt;†&lt;/sup&gt;, &lt;a href="https://janusworx.com/reading/shattered-lands/" &gt;Related Post&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The Psychology of Money, Morgan Housel&lt;sup&gt;†&lt;/sup&gt;, &lt;a href="https://janusworx.com/reading/the-psychology-of-money/" &gt;Related Post&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;History of the Alphabet, Kevin Stroud&lt;sup&gt;†&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;A Play of Isaac, Margaret Frazer&lt;/li&gt;
&lt;li&gt;&lt;a href="https://therestishistory.com/episodes/" target="_blank" rel="noreferrer"&gt;The Rest is History&lt;/a&gt;, Jack the Ripper, Parts I-IV&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/gb/podcast/sherlock-co/id1710121792" target="_blank" rel="noreferrer"&gt;The Muskgrave Ritual&lt;/a&gt;, Sherlock &amp;amp; Co. Podcast, Season 39&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;

&lt;h3 class="relative group"&gt;February
 &lt;div id="february" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#february" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;div class="book-list"&gt;
&lt;ol start="13"&gt;
&lt;li&gt;The Spy Who Came in from the Cold, John le Carré&lt;/li&gt;
&lt;li&gt;The Novice’s Tale, Margaret Frazer&lt;/li&gt;
&lt;li&gt;Beyond the Rift, Peter Watts&lt;/li&gt;
&lt;li&gt;The Servant’s Tale, Margaret Frazer&lt;/li&gt;
&lt;li&gt;Call for the Dead, John le Carré&lt;/li&gt;
&lt;li&gt;A Murder of Quality, John le Carré&lt;/li&gt;
&lt;li&gt;The Outlaw’s Tale, Margaret Frazer&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 381-390&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;The Girl with the Dragon Tattoo, Stieg Larsson&lt;/li&gt;
&lt;li&gt;Falco, The Official Companion, Lindsey Davis&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;

&lt;h3 class="relative group"&gt;March
 &lt;div id="march" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#march" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;div class="book-list"&gt;
&lt;ol start="23"&gt;
&lt;li&gt;The Girl Who Played With Fire, Stieg Larsson&lt;/li&gt;
&lt;li&gt;The Girl Who Kicked the Hornet’s Nest, Stieg Larsson&lt;/li&gt;
&lt;li&gt;The Looking Glass War, John le Carré&lt;/li&gt;
&lt;li&gt;Tinker, Tailor, Soldier, Spy, John le Carré&lt;/li&gt;
&lt;li&gt;The Honourable Schoolboy, John le Carré&lt;/li&gt;
&lt;li&gt;The Bear and the Nightingale, Katherine Arden&lt;/li&gt;
&lt;li&gt;The Girl in the Tower, Katherine Arden&lt;/li&gt;
&lt;li&gt;The Winter of the Witch, Katherine Arden&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;

&lt;h3 class="relative group"&gt;April
 &lt;div id="april" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#april" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;div class="book-list"&gt;
&lt;ol start="31"&gt;
&lt;li&gt;50 Literature Ideas, You Really Need to Know, John Sutherland&lt;sup&gt;†&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 391-400&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Lincoln the Unknown, Dale Carnegie&lt;sup&gt;†&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/in/podcast/empire/id1639561921" target="_blank" rel="noreferrer"&gt;Empire Podcast&lt;/a&gt;, The Bronze Age Apocalypse, Episodes 332-337&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/in/podcast/empire/id1639561921" target="_blank" rel="noreferrer"&gt;Empire Podcast&lt;/a&gt;, Indian Uprising 1857, Episodes 322-329&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/gb/podcast/sherlock-co/id1710121792" target="_blank" rel="noreferrer"&gt;The Beryl Coronet&lt;/a&gt;, Sherlock &amp;amp; Co. Podcast, Season 40&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/gb/podcast/sherlock-co/id1710121792" target="_blank" rel="noreferrer"&gt;The Stockbroker’s Clerk&lt;/a&gt;, Sherlock &amp;amp; Co. Podcast, Season 41&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/gb/podcast/sherlock-co/id1710121792" target="_blank" rel="noreferrer"&gt;The Six Napoleons&lt;/a&gt;, Sherlock &amp;amp; Co. Podcast, Season 42&lt;/li&gt;
&lt;li&gt;Songteller, My Life in Lyrics, Dolly Parton&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/in/podcast/empire/id1639561921" target="_blank" rel="noreferrer"&gt;Empire Podcast&lt;/a&gt;, The Middle East: From the Arab Cold War to the Israeli Invasion of Lebanon, Episodes 346-353&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;

&lt;h3 class="relative group"&gt;May
 &lt;div id="may" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#may" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;div class="book-list"&gt;
&lt;ol start="41"&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/gb/podcast/sherlock-co/id1710121792" target="_blank" rel="noreferrer"&gt;The Three Garridebs&lt;/a&gt;, Sherlock &amp;amp; Co. Podcast, Season 43&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/gb/podcast/sherlock-co/id1710121792" target="_blank" rel="noreferrer"&gt;The Empty House&lt;/a&gt;, Sherlock &amp;amp; Co. Podcast, Season 44&lt;/li&gt;
&lt;li&gt;Smiley’s People, John le Carré&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/in/podcast/empire/id1639561921" target="_blank" rel="noreferrer"&gt;Empire Podcast&lt;/a&gt;, Simon Bolivar: the Liberator, Episodes 354-357&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.acquired.fm/episodes/vanguard" target="_blank" rel="noreferrer"&gt;Vanguard&lt;/a&gt;, Spring 2026, Episode 3, Acquired Podcast&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;

&lt;h3 class="relative group"&gt;June
 &lt;div id="june" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#june" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;div class="book-list"&gt;
&lt;ol start="46"&gt;
&lt;li&gt;&lt;a href="https://therestishistory.com/episodes/" target="_blank" rel="noreferrer"&gt;The Rest is History&lt;/a&gt;, The Fall of the Incas, Episodes 644-649&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/in/podcast/empire/id1639561921" target="_blank" rel="noreferrer"&gt;Empire Podcast&lt;/a&gt;, Spice Wars: The Battle of the East India Companies, Episodes 358-360&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Learning Object-Oriented Programming, Design and TDD with Pharo, Stéphane Ducasse &amp;amp; Damien Pollet&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;The Secret Pilgrim, John le Carré&lt;/li&gt;
&lt;li&gt;Control, Andy Diggle, Angela Cruickshank, Andrea Mutti &amp;amp; Vladimir Popov&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fs.blog/knowledge-project-podcast/outliers-chung-ju-yung/" target="_blank" rel="noreferrer"&gt;Chung Ju-yung &amp;amp; Hyundai&lt;/a&gt;, Farnam Street Podcast&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;The Art of Reading, Timothy Spurgin (The Great Courses)&lt;sup&gt;‡&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Steve Jobs in Exile, Geoffrey Cain&lt;sup&gt;†&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Data Structures the Fun Way, Jeremy Kubica&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Platform Decay, Martha Wells&lt;/li&gt;
&lt;li&gt;Apple: The First 50 Years, David Pogue&lt;sup&gt;†&lt;/sup&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;

&lt;h3 class="relative group"&gt;July
 &lt;div id="july" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#july" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;div class="book-list"&gt;
&lt;ol start="57"&gt;
&lt;li&gt;Analysis and Critique, Dorsey Armstrong (The Great Courses)&lt;sup&gt;‡&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;D’Aulaires’ Book of Greek Myths, Ingri &amp;amp; Edgar Parin d’Aulaire&lt;/li&gt;
&lt;li&gt;A World is Born, Leigh Bracket&lt;/li&gt;
&lt;li&gt;Becoming a Great Essayist, Jennifer Cognard-Black (The Great Courses)&lt;sup&gt;‡&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Writing Down the Bones, Natalie Goldberg&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=EAe6hdB4uDM" target="_blank" rel="noreferrer"&gt;How to Read a Book&lt;/a&gt;: The Art of Reading &amp;amp; Dialogues about Books, Mortimer Adler &amp;amp; Charles Van Doren&lt;sup&gt;‡&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/gb/podcast/sherlock-co/id1710121792" target="_blank" rel="noreferrer"&gt;The Greek Interpreter&lt;/a&gt;, Sherlock &amp;amp; Co. Podcast, Season 45&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/gb/podcast/sherlock-co/id1710121792" target="_blank" rel="noreferrer"&gt;The Engineer’s Thumb&lt;/a&gt;, Sherlock &amp;amp; Co. Podcast, Season 46&lt;/li&gt;
&lt;li&gt;Pirates of Venus, Edgar Rice Burroughs&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;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;'/&gt;
</description></item><item><title>You Can Now Search this Blog</title><link>https://janusworx.com/work/you-can-now-search-this-blog/</link><pubDate>Tue, 23 Jun 2026 14:24:24 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/you-can-now-search-this-blog/</guid><description>&lt;br&gt;

&lt;div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="info"&gt;
 &lt;div class="flex items-center gap-2 font-semibold text-inherit"&gt;
 &lt;div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"&gt;&lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/&gt;&lt;/svg&gt;
&lt;/span&gt;&lt;/div&gt;
 &lt;div class="grow"&gt;
 Intended Audience
 &lt;/div&gt;
 &lt;/div&gt;&lt;div class="admonition-content mt-3 text-base leading-relaxed text-inherit"&gt;&lt;p&gt;Me. In case I want to retrace the big idea tomorrow&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2026/you-can-now-search-this-blog-pagefind.png" alt="Pagefind PNG logo" /&gt;
 
 
 &lt;/figure&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;tldr: &lt;a href="https://janusworx.com/search" target="_blank" rel="noreferrer"&gt;https://janusworx.com/search&lt;/a&gt;
 &lt;div id="tldr" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#tldr" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Being the lazyass that I am, I used to depend on search engine indexes to find something on my own blog. (First google, then DuckDuckGo.)&lt;br&gt;
Kushal, having &lt;a href="https://search.kushaldas.in/" target="_blank" rel="noreferrer"&gt;https://search.kushaldas.in/&lt;/a&gt; has always made me jealous though.&lt;br&gt;
And now, the days of finding something relevant on my blog, on the first search are long gone. Search engines today are a pale shadow of what they used to be. The current load of crap actually makes me long for the days of &lt;a href="https://en.wikipedia.org/wiki/AltaVista" target="_blank" rel="noreferrer"&gt;Altavista&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;So, I decided to get off my butt, and go do something about it, because everytime I want something, my blog is one of the first places I search.&lt;br&gt;
For e.g. when writing this post, I needed to look up how to add line numbers to my code blocks. &lt;a href="https://janusworx.com/work/line-numbers-in-hugo-codeblocks/" &gt;Search helped me find it&lt;/a&gt; :)&lt;/p&gt;
&lt;p&gt;I went to the &lt;a href="https://gohugo.io/tools/search/" target="_blank" rel="noreferrer"&gt;Hugo website&lt;/a&gt; and decided to implement the first search tool&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; they suggested: &lt;em&gt;&lt;strong&gt;&lt;a href="https://pagefind.app" target="_blank" rel="noreferrer"&gt;Pagefind&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;.&lt;br&gt;
Well, I did that since Pagefind took care of the only thing I’m anal about. It keeps everything local and under my control. If not, I’d have kept looking for something else.&lt;br&gt;
What it (Pagefind) does, is parse the site, Hugo builds for me, and create a search index along with some more goodies (an api for search as well as UI components) in a bundle. The rendered html and the bundle together are now the artifact that my site is made up of.&lt;/p&gt;

&lt;h2 class="relative group"&gt;The Plan
 &lt;div id="the-plan" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-plan" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Get Pagefind and install it into a tools subdirectory in my blog’s directory, so I always have it handy (and the Forgejo action can get its grubby paws on it when it wants to run the publishing workflow)&lt;/li&gt;
&lt;li&gt;Create an entry in my menu, so I can go clicky to a search page.&lt;/li&gt;
&lt;li&gt;Create said search page.&lt;/li&gt;
&lt;li&gt;Make search work.&lt;/li&gt;
&lt;li&gt;Make the page resemble the rest of the blog as much as possible.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 class="relative group"&gt;Installing it and wiring it all up
 &lt;div id="installing-it-and-wiring-it-all-up" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#installing-it-and-wiring-it-all-up" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;

&lt;h3 class="relative group"&gt;1. Installation
 &lt;div id="1-installation" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1-installation" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;This is the easy part. Pagefind is a single binary, which I shoved into the &lt;code&gt;tools&lt;/code&gt; subdirectory.&lt;/p&gt;

&lt;h3 class="relative group"&gt;2. Creating an entry for search in the navigation menu
 &lt;div id="2-creating-an-entry-for-search-in-the-navigation-menu" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2-creating-an-entry-for-search-in-the-navigation-menu" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;I edited my Hugo config (mine is called &lt;code&gt;hugo.yaml&lt;/code&gt;), and added &lt;code&gt;search&lt;/code&gt; as a menu item.&lt;br&gt;
More shifted downwards, as did its weight.&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;menus&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;main&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# elided config&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;identifier&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;search&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;search&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;/search&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;60&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;identifier&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;more&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;more …&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;/more/&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;70&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 class="relative group"&gt;3. Creating the search page.
 &lt;div id="3-creating-the-search-page" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#3-creating-the-search-page" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;This was a two step process.&lt;/p&gt;

&lt;h4 class="relative group"&gt;a. I needed a placeholder page that I could render some layout (a template) into.
 &lt;div id="a-i-needed-a-placeholder-page-that-i-could-render-some-layout-a-template-into" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#a-i-needed-a-placeholder-page-that-i-could-render-some-layout-a-template-into" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h4&gt;
&lt;p&gt;This was &lt;code&gt;search.md&lt;/code&gt; which lives in my &lt;code&gt;content&lt;/code&gt; directory.
This is all it contains …&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Search&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;layout&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;search&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;/search/&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;See the key that says &lt;code&gt;layout&lt;/code&gt; on line 3? This is looking for a layout called &lt;code&gt;search&lt;/code&gt; which is what we now create …&lt;/p&gt;

&lt;h4 class="relative group"&gt;b. Creating the search layout.
 &lt;div id="b-creating-the-search-layout" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#b-creating-the-search-layout" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h4&gt;
&lt;p&gt;Papermod already ships with a layout called &lt;code&gt;search&lt;/code&gt;. Which I did not want, because it is meant for use with another local search engine called &lt;a href="https://lunrjs.com/" target="_blank" rel="noreferrer"&gt;lunr.js&lt;/a&gt;.&lt;br&gt;
Hugo can override whatever file your theme provides, by letting you create your own versions of said file in the &lt;code&gt;layouts&lt;/code&gt; directory. Hugo will then look at &lt;em&gt;that&lt;/em&gt; instead of the theme’s file.&lt;br&gt;
Over the years I’ve gotten dangerous enough by using &lt;a href="https://discourse.gohugo.io/t/how-to-override-a-themes-partials/47227" target="_blank" rel="noreferrer"&gt;Hugo’s lovely channel for discourse&lt;/a&gt;. Between that, and &lt;a href="https://gohugo.io/documentation/" target="_blank" rel="noreferrer"&gt;Hugo’s documentation&lt;/a&gt; as well as &lt;a href="https://pagefind.app/" target="_blank" rel="noreferrer"&gt;Pagefind’s own help page&lt;/a&gt;, I rustled up a layout file called &lt;code&gt;search.html&lt;/code&gt; which lives in my &lt;code&gt;layouts/_default&lt;/code&gt; directory. This is what it contains …&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go-html-template" data-lang="go-html-template"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;define&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;main&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;link&lt;/span&gt; &lt;span class="na"&gt;rel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;stylesheet&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;/pagefind/pagefind-component-ui.css&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;module&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;/pagefind/pagefind-component-ui.js&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;main&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;article&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;post-single&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;header&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;post-header&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;post-title&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;.Title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;header&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;post-content search-content&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;pagefind-searchbox&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;searchbox&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;			 &lt;span class="na"&gt;autofocus&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;true&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;			 &lt;span class="na"&gt;shortcut&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;			 &lt;span class="na"&gt;placeholder&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;&lt;/span&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;i18n&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;search_placeholder&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;pagefind-searchbox&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;article&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// we’re waiting for the pagefind-searchbox component to be registered 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;customElements&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;whenDefined&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;pagefind-searchbox&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;box&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;pagefind-searchbox&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// shadowRoot input, or a delegatesFocus component may expose it differently
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;tryFocus&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;input&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;box&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;shadowRoot&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;input&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;box&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;input&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="c1"&gt;// search for input boxes in two different ways above
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="c1"&gt;// and if it finds one focus it below
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;focus&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// component rendered but input not yet in DOM — wait one more frame
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	 &lt;span class="c1"&gt;// wait for the shado
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;requestAnimationFrame&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;tryFocus&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// try one more time
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;requestAnimationFrame&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;tryFocus&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This creates the box on the search page, ready to take input and show results.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Update (2026-06-24):&lt;/strong&gt;&lt;/em&gt; The eagle eyed amongst you, have figured out this code has changed between yesterday and today. I used Pagefind’s documentation to simplify what I had yesterday even more and then got one of the llms to write a script that focuses the input box when the page loads, so that we can just start typing in whatever we need to search.&lt;/p&gt;

&lt;h3 class="relative group"&gt;4. Make the page resemble the rest of the blog as much as possible.
 &lt;div id="4-make-the-page-resemble-the-rest-of-the-blog-as-much-as-possible" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#4-make-the-page-resemble-the-rest-of-the-blog-as-much-as-possible" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Doing things a bit out of order and finishing up with the page first.&lt;br&gt;
Leaned on Pagefind’s docs as well as Chatgpt, Claude and Gemini for this part to create a CSS file, that looks pretty native to my blog. I’ve called it &lt;code&gt;include-pagefind.css&lt;/code&gt; and it lives in the &lt;code&gt;assets/css/extended&lt;/code&gt; subdirectory.&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;span class="lnt"&gt;37
&lt;/span&gt;&lt;span class="lnt"&gt;38
&lt;/span&gt;&lt;span class="lnt"&gt;39
&lt;/span&gt;&lt;span class="lnt"&gt;40
&lt;/span&gt;&lt;span class="lnt"&gt;41
&lt;/span&gt;&lt;span class="lnt"&gt;42
&lt;/span&gt;&lt;span class="lnt"&gt;43
&lt;/span&gt;&lt;span class="lnt"&gt;44
&lt;/span&gt;&lt;span class="lnt"&gt;45
&lt;/span&gt;&lt;span class="lnt"&gt;46
&lt;/span&gt;&lt;span class="lnt"&gt;47
&lt;/span&gt;&lt;span class="lnt"&gt;48
&lt;/span&gt;&lt;span class="lnt"&gt;49
&lt;/span&gt;&lt;span class="lnt"&gt;50
&lt;/span&gt;&lt;span class="lnt"&gt;51
&lt;/span&gt;&lt;span class="lnt"&gt;52
&lt;/span&gt;&lt;span class="lnt"&gt;53
&lt;/span&gt;&lt;span class="lnt"&gt;54
&lt;/span&gt;&lt;span class="lnt"&gt;55
&lt;/span&gt;&lt;span class="lnt"&gt;56
&lt;/span&gt;&lt;span class="lnt"&gt;57
&lt;/span&gt;&lt;span class="lnt"&gt;58
&lt;/span&gt;&lt;span class="lnt"&gt;59
&lt;/span&gt;&lt;span class="lnt"&gt;60
&lt;/span&gt;&lt;span class="lnt"&gt;61
&lt;/span&gt;&lt;span class="lnt"&gt;62
&lt;/span&gt;&lt;span class="lnt"&gt;63
&lt;/span&gt;&lt;span class="lnt"&gt;64
&lt;/span&gt;&lt;span class="lnt"&gt;65
&lt;/span&gt;&lt;span class="lnt"&gt;66
&lt;/span&gt;&lt;span class="lnt"&gt;67
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nd"&gt;root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="c"&gt;/* you don’t really need to use `pf-font`, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;	if you don’t have a custom font.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;	for some reason, it wouldn’t render the font I specified here, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;	so I forced it with `!important` */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;--pf-font&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;your-font-name-here&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;--pf-text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;primary&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;--pf-text-secondary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;secondary&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;--pf-text-muted&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;secondary&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;--pf-background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;--pf-border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;border&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;--pf-border-focus&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;primary&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;--pf-hover&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;tertiary&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;--pf-mark&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;primary&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;--pf-border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="kt"&gt;px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;--pf-input-height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;48&lt;/span&gt;&lt;span class="kt"&gt;px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;--pf-input-font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="kt"&gt;rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;--pf-result-title-font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="kt"&gt;rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;--pf-result-excerpt-font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.90&lt;/span&gt;&lt;span class="kt"&gt;rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;--pf-shadow-sm&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;--pf-shadow-md&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nv"&gt;--pf-shadow-lg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;search-content&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;margin-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="kt"&gt;rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;pagefind-input&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;1.5&lt;/span&gt;&lt;span class="kt"&gt;rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;pagefind-summary&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="kt"&gt;rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;pagefind-results&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;margin-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="kt"&gt;rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;pagefind-results&lt;/span&gt; &lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;text-decoration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;pagefind-results&lt;/span&gt; &lt;span class="nt"&gt;article&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="kt"&gt;px&lt;/span&gt; &lt;span class="kc"&gt;solid&lt;/span&gt; &lt;span class="nf"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;border&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="kt"&gt;px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="kt"&gt;rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;pagefind-results&lt;/span&gt; &lt;span class="nt"&gt;article&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nd"&gt;hover&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;tertiary&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;h3 class="relative group"&gt;5. Make Search Work.
 &lt;div id="5-make-search-work" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#5-make-search-work" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;This is a 3 step process&lt;/p&gt;

&lt;h4 class="relative group"&gt;a. Build the blog.
 &lt;div id="a-build-the-blog" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#a-build-the-blog" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h4&gt;
&lt;p&gt;Easy peasy. &lt;code&gt;hugo build&lt;/code&gt; and we have our blog rendered in the &lt;code&gt;public&lt;/code&gt; subdirectory.&lt;/p&gt;

&lt;h4 class="relative group"&gt;b. Get Pagefind to create its index in the build directory.
 &lt;div id="b-get-pagefind-to-create-its-index-in-the-build-directory" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#b-get-pagefind-to-create-its-index-in-the-build-directory" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h4&gt;
&lt;p&gt;This is easy as well.&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;./tools/pagefind --site public&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;and Pagefind creates a &lt;code&gt;pagefind&lt;/code&gt; subdirectory in our &lt;code&gt;public&lt;/code&gt; directory where it creates its search index after reading all the html.&lt;br&gt;
All I need to do now, is just …&lt;/p&gt;

&lt;h4 class="relative group"&gt;c. Publish!
 &lt;div id="c-publish" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#c-publish" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h4&gt;
&lt;p&gt;Ok, I lied a teensy bit. I don’t have to do &lt;em&gt;steps a.&lt;/em&gt; and &lt;em&gt;b.&lt;/em&gt; because they are part of &lt;em&gt;step c.&lt;/em&gt;&lt;br&gt;
The Forgejo action checks out my committed files, pulls in Hugo from a private package repo, builds the site, then runs Pagefind to generate the index&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; and finally uses rysnc to sync it with the VM. Here’s the relevant section of the action.&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# lots of stuff elided …&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;jobs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;build-and-deploy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;runs-on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;my-big-box&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;HUGO_VERSION&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${{ vars.HUGO_VERSION }}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;steps&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# lots of snipped stuff …&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Checkout the website repo&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;uses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;actions/checkout@v4&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;with&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;submodules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;recursive&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;fetch-depth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Build website with Hugo&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;HUGO_ENVIRONMENT&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;production&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="sd"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; hugo \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; --gc \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; --minify&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Build the Pagefind search index&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="sd"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; tools/pagefind \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; --site public&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;br&gt;

&lt;p&gt;I thought the indexing would take a lot of time and was hesitant to use it as part of a regularly run Forgejo action workflow, but several runs show that the index generation only increases the time by at a couple of seconds at most. This is amazing!&lt;/p&gt;
&lt;p&gt;Now I can search my own words, on my own blog, to my hearts content!&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: You Can Now Search this Blog
%22" &gt;feedback at this domain&lt;/a&gt;.
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;as on 2026-06-23&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;this is why i chucked it into the tools subdirectory and committed it.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Books I Read in May, 2026</title><link>https://janusworx.com/reading/books-i-read-in-may-2026/</link><pubDate>Tue, 09 Jun 2026 15:17:30 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/books-i-read-in-may-2026/</guid><description>&lt;br&gt;


&lt;figure class="mjb-img-center"&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2026/what-i-read-in-may-2026-simon-bolivar.jpg" alt="" /&gt;
 
 &lt;figcaption&gt;courtesy, Encyclopædia Britannica&lt;/figcaption&gt;
 &lt;/figure&gt;
&lt;p&gt;&lt;br&gt;

Didn’t read as much as I wanted to. Too much, as they say, of life happened! Been reading in the small snatches of time that I get.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;&lt;a href="https://podcasts.apple.com/gb/podcast/sherlock-co/id1710121792" target="_blank" rel="noreferrer"&gt;Sherlock &amp;amp; Co. Podcast&lt;/a&gt;
 &lt;div id="sherlock--co-podcast" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#sherlock--co-podcast" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;The Three Garridebs, Season 43&lt;/strong&gt;&lt;br&gt;
Mariana (Mrs. Hudson) Ametxazurra (the amazing &lt;a href="https://www.martadasilva.com/" target="_blank" rel="noreferrer"&gt;Marta da Silva&lt;/a&gt;), helms this one.&lt;br&gt;
Because John is, uhm, out of the picture somehow.&lt;br&gt;
This one is not filler (even though I love their fluffy episodes very much, as well) and is a bit dark.&lt;br&gt;
Addictive listening as usual.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Empty House, Season 44&lt;/strong&gt;&lt;br&gt;
The House across No. 22B Baker Street is empty!&lt;br&gt;
Is the spider still around?&lt;br&gt;
Once again Mariana untangles the pieces. Also Sherlock creates a pillow fort!&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;&lt;a href="https://www.acquired.fm/episodes/vanguard" target="_blank" rel="noreferrer"&gt;Vanguard&lt;/a&gt;, Spring 2026, Episode 3, Acquired Podcast
 &lt;div id="vanguard-spring-2026-episode-3-acquired-podcast" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#vanguard-spring-2026-episode-3-acquired-podcast" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;St. Jack, needs no introduction to you folks if you invest in the markets (specially if you are a die hard Boglehead).&lt;br&gt;
Jack Bogle took a very blue collar, common sense, attitude to investing.&lt;br&gt;
And then, he brought it to the masses.&lt;br&gt;
And &lt;em&gt;then,&lt;/em&gt; he spent the rest of his life, preaching it.&lt;br&gt;
If you think index funds are the bees knees, you have Jack to thank!&lt;br&gt;
The podcast goes through his life and reveals just &lt;em&gt;why&lt;/em&gt; Jack had to do things, the way he did them.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;Smiley’s People, John le Carré
 &lt;div id="smileys-people-john-le-carré" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#smileys-people-john-le-carr%c3%a9" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;George spends &lt;em&gt;twenty years&lt;/em&gt; obsessing over a lighter and then when he actually gets it back, does not want it.&lt;br&gt;
Well, that’s one way of spoiling the novel 😂&lt;br&gt;
To me, it sort of put an end to one era of le Carré’s novels.&lt;br&gt;
We end at another border crossing in Berlin and Smiley gets some form of closure.&lt;br&gt;
If you enjoy bleak, nihilistic, yet well crafted novels, le Carré’s your man.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;&lt;a href="https://podcasts.apple.com/in/podcast/empire/id1639561921" target="_blank" rel="noreferrer"&gt;Empire Podcast&lt;/a&gt;: Simon Bolivar: the Liberator, Episodes 354-357
 &lt;div id="empire-podcast-simon-bolivar-the-liberator-episodes-354-357" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#empire-podcast-simon-bolivar-the-liberator-episodes-354-357" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;blockquote&gt;&lt;p&gt;“Freedom is often the first casualty of war.”&lt;br&gt;
— Gabriel García Márquez, The General in His Labyrinth&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;A rapid run, through the complex life of the man who led &lt;em&gt;&lt;strong&gt;six&lt;/strong&gt;&lt;/em&gt; countries to freedom! (ergo, El Libertador)&lt;br&gt;
He wanted freedom, but mostly for his class, not for the underclass.&lt;br&gt;
And yet to gain that freedom, he ranged so wide and rode thousands of miles on horseback, leading folks to call him Iron Ass!&lt;br&gt;
He fought Spain and he fought the jungle and he fought tuberculosis.&lt;br&gt;
He jailed and killed his own supporters out of paranoia.&lt;br&gt;
He finally had to be stripped of power and yet remains one of South America’s biggest heroes.&lt;br&gt;
Well worth a listen.&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Books I Read in May, 2026
%22" &gt;feedback at this domain&lt;/a&gt;.
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;</description></item><item><title>Matthias Endler Built His Own Newsletter Setup</title><link>https://janusworx.com/work/matthias-endler-built-his-own-newsletter-setup/</link><pubDate>Fri, 22 May 2026 16:13:29 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/matthias-endler-built-his-own-newsletter-setup/</guid><description>&lt;div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="info"&gt;
 &lt;div class="flex items-center gap-2 font-semibold text-inherit"&gt;
 &lt;div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"&gt;&lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/&gt;&lt;/svg&gt;
&lt;/span&gt;&lt;/div&gt;
 &lt;div class="grow"&gt;
 Intended Audience
 &lt;/div&gt;
 &lt;/div&gt;&lt;div class="admonition-content mt-3 text-base leading-relaxed text-inherit"&gt;&lt;p&gt;Mostly me (confirmation bias. slight gloating 😂)&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2026/matthias-endler-newsletter-setup-rust-in-production.jpg" alt="Rust in Production podcast logo" /&gt;
 
 
 &lt;/figure&gt;
&lt;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;'/&gt;

&lt;p&gt;I’m writing this post today, because I monkeyed with my &lt;a href="https://janusworx.com/work/found-mjml/" &gt;newsletter template&lt;/a&gt;. &lt;em&gt;&lt;strong&gt;Again!&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
So this post is just to make sure there are no more hiccoughs :)&lt;/p&gt;
&lt;p&gt;Matthias Endler, he of the fantastic &lt;a href="https://corrode.dev/podcast/s06e04-rust4linux/" target="_blank" rel="noreferrer"&gt;Rust in Production podcast&lt;/a&gt; (and the Corrode rust consultancy) just published &lt;a href="https://endler.dev/2026/newsletter-setup/" target="_blank" rel="noreferrer"&gt;a post on his newsletter setup&lt;/a&gt; and how he went about building it.&lt;/p&gt;
&lt;p&gt;His reasons (and his story) are really similar to mine.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;br&gt;
Tinyletter =&amp;gt; Mailchimp =&amp;gt;&lt;br&gt;
Wanting to have a semblance of control after being burnt =&amp;gt; Self hosting!&lt;/p&gt;
&lt;p&gt;He settled on &lt;a href="https://www.useplunk.com/" target="_blank" rel="noreferrer"&gt;Plunk&lt;/a&gt;, while I use my &lt;a href="https://sendy.co" target="_blank" rel="noreferrer"&gt;Sendy&lt;/a&gt; + Amazon SES combo. (they look pretty similar to me)&lt;br&gt;
Newsletters live in a git controlled repo. Same.&lt;br&gt;
Write in my favourite editor. Ditto.&lt;br&gt;
One markdown file per letter. Same pinch!&lt;/p&gt;
&lt;p&gt;The only difference, is his workflow is controlled by a fancy cli, while I depend on ye old copy &amp;amp; paste.&lt;/p&gt;
&lt;p&gt;Having someone with a visible presence do this, hopefully serves as an inspiration to others.&lt;br&gt;
I just wish more of my nerd kinfolk do this!&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Matthias Endler Built His Own Newsletter Setup
%22" &gt;feedback at this domain&lt;/a&gt;.
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;except for his audience ofcourse! Which is orders of magnitude larger than my dinky little circle of friends&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Change!</title><link>https://janusworx.com/personal/change-sara-bareilles/</link><pubDate>Fri, 22 May 2026 11:28:30 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/personal/change-sara-bareilles/</guid><description>&lt;br&gt;


&lt;figure class="mjb-img-center"&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2026/change-sara-bareilles-DSCF2217.jpg" alt="Close up of cherry blossoms on a tree in Paris" /&gt;
 
 
 &lt;/figure&gt;
&lt;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;'/&gt;

&lt;p&gt;&lt;em&gt;Distill a whole year down into a day&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Act like we all start over with a pristine slate&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;To get yourself a new life you&amp;rsquo;ve got to give the other one away&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;And I&amp;rsquo;m starting to believe, in the power of a name&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Cause it can&amp;rsquo;t be a mistake,&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;if I just call it change!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;— &lt;a href="https://www.youtube.com/watch?v=Gv972gdiu58" target="_blank" rel="noreferrer"&gt;Sara Bareilles, December&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Change!
%22" &gt;feedback at this domain&lt;/a&gt;.
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Found MJML</title><link>https://janusworx.com/work/found-mjml/</link><pubDate>Thu, 21 May 2026 10:51:49 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/found-mjml/</guid><description>&lt;br&gt;

&lt;div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="info"&gt;
 &lt;div class="flex items-center gap-2 font-semibold text-inherit"&gt;
 &lt;div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"&gt;&lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/&gt;&lt;/svg&gt;
&lt;/span&gt;&lt;/div&gt;
 &lt;div class="grow"&gt;
 Intended Audience
 &lt;/div&gt;
 &lt;/div&gt;&lt;div class="admonition-content mt-3 text-base leading-relaxed text-inherit"&gt;&lt;p&gt;Mostly me.&lt;br&gt;
Also hopefully, other folks struggling with, or looking for a way to create email newsletters.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2026/mjml-logo.svg" alt="MJML SVG logo" /&gt;
 
 
 &lt;/figure&gt;
&lt;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;'/&gt;

&lt;p&gt;I recently upgraded &lt;a href="https://sendy.co/" target="_blank" rel="noreferrer"&gt;Sendy&lt;/a&gt;, the software, I’m using to create and send my newsletters.&lt;br&gt;
(I don’t need the new shiny, or the extra features, but also those folks have been pretty good as far as pricing and functionality go, and I want them to stick around for a long time.)&lt;/p&gt;
&lt;p&gt;The new release, in addition to a refreshed interface, now features a block WYSIWYG editor. And my old template (based on the venerable &lt;a href="https://github.com/internations/antwort" target="_blank" rel="noreferrer"&gt;Antwort&lt;/a&gt;) that I used to compose my emails broke. What used to be a predictable way of writing emails, now turned into something filled with papercuts. Everything would look alright, but everything was ever so subtly out of place.&lt;/p&gt;
&lt;p&gt;So I went looking for something that I could live with long term once again.&lt;br&gt;
Since all of this is a personal hobby and I only use all of this to send mail to a handful of my friends, most of the paid options go right out of the window, because. And because I am a control freak, hosted options aren’t a thing for me either.&lt;/p&gt;
&lt;p&gt;Enter &lt;a href="https://mjml.io/" target="_blank" rel="noreferrer"&gt;MJML&lt;/a&gt;.&lt;br&gt;
From their website:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;MJML was created in early 2015 by a team of Mailjet developers while they were working on Passport, Mailjet’s drag-and-drop interface for creating responsive emails. Having been knee deep in email for five years, the Mailjet team saw two things: a) email HTML is antiquated and not developer friendly b) a growing trend of email being viewed on mobile and tablet and the number of screens is only increasing. This means that finding a way to code responsive email easily and quickly is pretty important. The team started by creating a new markup language that would abstract the complexity of responsive HTML and automatically generate it. And that’s how MJML was born.&lt;/p&gt;
&lt;p&gt;After learning so much from our users, we wanted to give back to the community by sharing this open-source framework to make responsive email easier and redefine the coding experience once and for all.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;It works in the same vein as &lt;a href="https://revealjs.com/" target="_blank" rel="noreferrer"&gt;revealjs&lt;/a&gt;.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;br&gt;
You install the tool and use their semantic markup to write a document.&lt;br&gt;
The MJML cli tool, in this case, then renders it to email worthy HTML.&lt;br&gt;
The &lt;a href="https://documentation.mjml.io/#mjml-guide" target="_blank" rel="noreferrer"&gt;markup&lt;/a&gt; is simple and well thought out. Writing it is a breeze.&lt;br&gt;
I used Timo Reymann’s &lt;a href="https://plugins.jetbrains.com/plugin/16418-mjml-support" target="_blank" rel="noreferrer"&gt;MJML plugin&lt;/a&gt; for Jetbrains editors to help me write, which makes things even easier, since it let’s me preview my work live.&lt;/p&gt;
&lt;p&gt;I took one of their pretty templates, &lt;a href="https://mjml.io/try-it-live/templates/recast" target="_blank" rel="noreferrer"&gt;Recast&lt;/a&gt; and then stripped it down to meet my needs and match it as closely as I could to my old customised Antwort template.&lt;/p&gt;
&lt;p&gt;Now all I do, is write, copy the HTML into the sendy editor and send. Life is good!&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Found MJML
%22" &gt;feedback at this domain&lt;/a&gt;.
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Or does revealjs work in the same vein as mjml?&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Books I Read in April, 2026</title><link>https://janusworx.com/reading/books-i-read-in-april-2026/</link><pubDate>Sat, 16 May 2026 05:30:00 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/books-i-read-in-april-2026/</guid><description>&lt;br&gt;


&lt;figure class="mjb-img-center"&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2026/dolly-parton-songteller.jpg" alt="" /&gt;
 
 
 &lt;/figure&gt;
&lt;br&gt;

&lt;p&gt;April was as busy as March, with hardly any time, between returning from Kubecon, catching up with everything and then once again getting ready to visit a client in early May. Did get quite a bit reading done though.&lt;br&gt;
As you can see above, I was enchanted by the magic of Dolly Parton all this month!&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 391-400
 &lt;div id="deep-questions-cal-newport-episodes-391-400" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#deep-questions-cal-newport-episodes-391-400" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;I’m going to stop counting these episodes as books now.&lt;br&gt;
Cal’s getting more prolific and repetitive.&lt;br&gt;
Neither of which are bad things at all.&lt;br&gt;
But this means that I now listen to him, like I listen to my old songs or Ziglar tapes.&lt;br&gt;
Just so that I can hear their voices and remember their principles.&lt;br&gt;
400 seems to be a lovely place to stop counting.&lt;br&gt;
His advice and work on the intersection of life and craft, is invaluable to me, and you can be sure, I’ll be listening as long as he is sharing his thoughts.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;Lincoln the Unknown, Dale Carnegie
 &lt;div id="lincoln-the-unknown-dale-carnegie" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#lincoln-the-unknown-dale-carnegie" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;This is a book I read when I was a child and when I came across it in a flea market, I picked it up out of sheer delight and nostalgia.&lt;br&gt;
It presents Lincoln as a moral guide with plenty of stories of his life, his family and his work. No critical or academic study here. It has quite a few facts and a great deal of hagiographic admiration as well.&lt;br&gt;
I absolutely loved it!&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;&lt;a href="https://podcasts.apple.com/in/podcast/empire/id1639561921" target="_blank" rel="noreferrer"&gt;Empire Podcast&lt;/a&gt;
 &lt;div id="empire-podcast" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#empire-podcast" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Indian Uprising 1857, Episodes 322-329&lt;/strong&gt;&lt;br&gt;
The First War of Independence, the Indian Uprising of 1857, the Great Sepoy Mutiny, it goes by so many names.&lt;br&gt;
This series goes into quite a bit of depth on the events upto and during the war for independence and presents many, many points of view.&lt;br&gt;
This was a wonderful listen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Bronze Age Apocalypse, Episodes 332-337&lt;/strong&gt;&lt;br&gt;
A small series on a old civilisation extant in the Levant and its relationships with other places in the Mediterranean.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Middle East: From the Arab Cold War to the Israeli Invasion of Lebanon, Episodes 346-353&lt;/strong&gt;&lt;br&gt;
If you want to know all the context for what’s happening in Iran now, go listen to this series. Very insightful.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;The Beryl Coronet, The Stockbroker’s Clerk, The Six Napoleons, &lt;a href="https://podcasts.apple.com/gb/podcast/sherlock-co/id1710121792" target="_blank" rel="noreferrer"&gt;Sherlock &amp;amp; Co. Podcast&lt;/a&gt;, Season 40, 41 &amp;amp; 42
 &lt;div id="the-beryl-coronet-the-stockbrokers-clerk-the-six-napoleons-sherlock--co-podcast-season-40-41--42" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-beryl-coronet-the-stockbrokers-clerk-the-six-napoleons-sherlock--co-podcast-season-40-41--42" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;A series of tiny adventures stringing along a much larger arc. Who is the Spider? Is it Moriarty lurking in the shadows? It’s getting thrillier and thrillier!&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;Literature Ideas, You Really Need to Know, John Sutherland
 &lt;div id="literature-ideas-you-really-need-to-know-john-sutherland" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#literature-ideas-you-really-need-to-know-john-sutherland" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Lots of concepts very simply explained and thought through. Everything I found here, will help me be more introspective about all future (good) books I read. I learned quite a lot. Here’s a bit about classics …&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;‘Classic’ – a debased term?&lt;/strong&gt;&lt;/em&gt; Eliot’s question (what is a classic?) remains tantalizing; and the abuses of the term he joked about are still everywhere. ‘Classic comedy’ is more likely to mean Carry On Up the Khyber than Aristophanes. Football matches, rock-and-roll and tea cakes are all given honorific ‘classic’ status (cigars are also labelled ‘Hamlet’ – but that, like nags called Dante, is something else).&lt;/p&gt;
&lt;p&gt;Overused and abused as the term is, literature still needs it. Properly applied, the idea of ‘classic’ points towards something that we hold to be centrally important – although defining that something is tricky.&lt;/p&gt;
&lt;p&gt;Eliot saw classics as fruit of the society in which they happened. ‘A classic,’ he told his Virgilian audience, ‘can only occur when a civilization is mature; when a language and a literature are mature. And it must be the work of a mature mind.’ He doubtless made this lofty statement in an auditorium where the blackout blinds were pulled down, as part of the protective measures against German bombers aiming to blast the assembled classicists to pieces. Whatever epithet one chose in 1944&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; for the civilization that had produced Virgil (currently under the heel of Mussolini), ‘mature’ would not be it.&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;The classic and empire:&lt;/strong&gt;&lt;/em&gt; [Frank] Kermode was sharper in his sociology than Eliot. It was not a civilization but an empire – with all the temporal (and, if necessary, brutal) cultural power imperialism implies – that supplied the foundation for the classic. If a language is, as linguists like to joke, a dialect with an army behind it, then classic literature is writing with an imperium behind it. This is easily enough tested with reference to the European Union, which currently has some 27 member countries.
Which of those countries can be said to have classic literatures, as opposed to some impressive works of literature? The answer would be those which – before the twentieth-century winds of change blew – had great empires (Britain, France, Spain, Italy, Portugal, Germany, Holland, Austria, Belgium). Does Luxembourg have its classics? Or Moldova? Where are their Shakespeares, Racines or Cervantes?&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;In a brilliant critical move Kermode argues that it is the very pliability of the classic that is its essence. It ‘accommodates’ – makes itself at home – wherever and whenever it finds itself. It is the classic’s ability to be both antique, yet modern, its infinite – but never anarchic – plurality that defines it. A work like King Lear, Kermode argues, ‘subsists in change, by being patient of interpretation’. Every generation will read, or understand, King Lear differently insofar as every generation is different from its predecessors. No final version, or interpretation, of the play can be achieved. But every generation will find its own satisfactory interpretation. And the classic is tolerant of each and every different explanation of itself.&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;The condensed idea&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
The classic is the gold standard of literature – but all that glistens is not classic&lt;/p&gt;
&lt;/blockquote&gt;&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;Songteller: My Life in Lyrics, Dolly Parton
 &lt;div id="songteller-my-life-in-lyrics-dolly-parton" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#songteller-my-life-in-lyrics-dolly-parton" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;I listened to this on audio first, because I wanted to hear Dolly sing, just as I wanted to hear Sara Bareilles tell of her songs in her book and Judi Dench speak of her perfomances in hers. And then I went and bought it as an ebook as well, because I wanted to see all the pictures as well :)&lt;br&gt;
My childhood was Dolly Parton (and Kenny Rogers and Willie Nelson and other country artists). And I probably listened to her as she hit her stride as an extremely successful solo artist. Because I had no idea of her variety show on television and all her work with Porter Wagoner for close to two decades before her solo work, seventies onwards.&lt;br&gt;
I loved hearing her voice, humming along and laughing along and telling stories of her dad and her husband and all her big family and the struggles she faced and the way she handled fame, showcased in short, rapid vignettes. If you love her music, this is a must listen. Dolly’s amazing!&lt;/p&gt;
&lt;p&gt;Dolly, talking about her song, “The Sacrifice” as well as reminiscing on her journey.&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;This is a song that I wrote that just came out of my heart and soul, my gut. Sometimes you wonder if you’ve made all the wise choices. Would you do things differently if you could?&lt;/p&gt;
&lt;p&gt;People say, “How come all of this success happened to you?” I say, “Because I sacrificed whatever I had to in order to get it.” You can’t veer off into this and that. You can’t lose your momentum if you’ve got a dream and a focus. I always felt like God was directing me. So I’m not going to let up until He says, “Stop.” I just keep going, like a horse with blinders on.&lt;/p&gt;
&lt;p&gt;I wrote “The Sacrifice” because somebody asked me that question. Well, the answer is, I gave up time with family and friends. I gave up vacations for work. I “carried my pail.” Like the song says, “You don’t drink the water, if you don’t drill the well.” One of my favorite lines I ever wrote is, “I was gonna be rich, no matter how much it cost / And I was going to win, no matter how much I lost.”&lt;/p&gt;
&lt;p&gt;It’s only in the wee hours, when you’re fading off to sleep, that you ask, “Is it worth the sacrifice?” I think I probably wouldn’t have done anything different, because I believe that this is what I was supposed to do. Who am I not to sacrifice to make things better for the people here that I am responsible for?&lt;/p&gt;
&lt;p&gt;Yes, I would do it all again. No doubt about it.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Books I Read in April, 2026
%22" &gt;feedback at this domain&lt;/a&gt;.
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Eliot was addressing the Virgil Society on the subject of classics in 1944&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;This text closes the audiobook. But I’ve chosen the paraphrased text from the ebook though. Dolly’s actual ramble while lovely to listen to, meanders somewhat before it gets to her very emphatic No doubt about it :)&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Kubernetes &amp; CNCF Awards</title><link>https://janusworx.com/work/kubernetes-cncf-awards/</link><pubDate>Mon, 20 Apr 2026 11:15:00 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/kubernetes-cncf-awards/</guid><description>&lt;div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="info"&gt;
 &lt;div class="flex items-center gap-2 font-semibold text-inherit"&gt;
 &lt;div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"&gt;&lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/&gt;&lt;/svg&gt;
&lt;/span&gt;&lt;/div&gt;
 &lt;div class="grow"&gt;
 Intended Audience
 &lt;/div&gt;
 &lt;/div&gt;&lt;div class="admonition-content mt-3 text-base leading-relaxed text-inherit"&gt;&lt;p&gt;Mostly me.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;

&lt;figure&gt;
&lt;a href="https://janusworx.com/images/2026/cncf-k8s-awards.jpg"&gt;&lt;img style="display:flex;justify-content:center;" src="https://janusworx.com/images/2026/cncf-k8s-awards-s.jpg" alt="Diptych of two award photos"&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;Click the image to embiggen!&lt;/p&gt;
&lt;/figcaption&gt;
&lt;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;'/&gt;

&lt;p&gt;This is a note of gratitude.&lt;br&gt;
A tad late. But better late than never :)&lt;/p&gt;
&lt;p&gt;I decided to get involved with the Kubernetes community on a lark about four years ago.&lt;br&gt;
I wanted to learn about containers and orchestration, and I thought learning via joining the upstream community was it.&lt;/p&gt;
&lt;p&gt;I was wrong 😂&lt;br&gt;
Life got in the way and I only finally got around to learning it all last December.&lt;/p&gt;
&lt;p&gt;But the community was interesting and helpful.&lt;br&gt;
I got to learn the terms of art, by osmosis.&lt;br&gt;
I got to see how a large community functions, how a large software project was run.&lt;/p&gt;
&lt;p&gt;And in time, I got to pitch in and help a bit as well.&lt;br&gt;
I pitched in with the Release Team for v1.25 to gain a sense of how a release comes about.&lt;br&gt;
And a couple of years ago, I saw my good friend (and frequent collaborator) Priyanka buckling a bit under the weight of the work, in the &lt;a href="https://psaggu.com/about.html" target="_blank" rel="noreferrer"&gt;various roles&lt;/a&gt; she had assumed to help out in the community. I asked her if there was anyway I could help her, that did &lt;em&gt;not&lt;/em&gt; involve meetings or talking to people 😂&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;
And she asked me if I could pitch in and help with helping folks gain membership into various Kubernetes orgs on Github.&lt;/p&gt;
&lt;p&gt;I ayed.&lt;/p&gt;
&lt;p&gt;She taught me the ropes. And I became a &lt;a href="https://github.com/kubernetes/community/tree/main/github-management#new-membership-coordinator" target="_blank" rel="noreferrer"&gt;Github New Membership Coordinator&lt;/a&gt; for the Kubernetes project.&lt;/p&gt;
&lt;p&gt;And all of this history to say, I’m grateful to Priyanka for this serendipitous opportunity.&lt;br&gt;
I fell in love with the work.&lt;br&gt;
For someone who has had to face a lot of cynicism in his real world day job, it’s been a lot of joy, welcoming folks into the project. It’s one of the happier parts of my day, when I sit at the desk to process the requests that come in.&lt;/p&gt;
&lt;p&gt;I’m also grateful to the Kubernetes as well as the overarching CNCF communities for recognising what I do, for two successive years.&lt;br&gt;
I was the recipient of the &lt;a href="https://www.kubernetes.dev/community/awards/2024/#:~:text=Jason%20Braganza" target="_blank" rel="noreferrer"&gt;Kubernetes Contributor award in 2024&lt;/a&gt; and the &lt;a href="https://www.cncf.io/announcements/2025/11/12/cncf-honors-innovators-and-defenders-with-2025-community-awards-at-kubecon-cloudnativecon-north-america/#:~:text=Mario%20Jason%20Braganza" target="_blank" rel="noreferrer"&gt;CNCF’s, Chop Wood Carry Water award in 2025&lt;/a&gt;.&lt;br&gt;
I’m both, honoured and humbled.&lt;br&gt;
I hope to contribute to this community, a while longer :)&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Kubernetes &amp;amp; CNCF Awards
%22" &gt;feedback at this domain&lt;/a&gt;.
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;I was well and truly burned out then&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Trying a Different Tack to Writing Work Posts</title><link>https://janusworx.com/work/trying-a-different-tack-to-writing-work-posts/</link><pubDate>Mon, 20 Apr 2026 11:00:00 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/trying-a-different-tack-to-writing-work-posts/</guid><description>&lt;div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="info"&gt;
 &lt;div class="flex items-center gap-2 font-semibold text-inherit"&gt;
 &lt;div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"&gt;&lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/&gt;&lt;/svg&gt;
&lt;/span&gt;&lt;/div&gt;
 &lt;div class="grow"&gt;
 Intended Audience
 &lt;/div&gt;
 &lt;/div&gt;&lt;div class="admonition-content mt-3 text-base leading-relaxed text-inherit"&gt;&lt;p&gt;My tiny audience, who reads these posts via email or rss&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;

&lt;p&gt;My last post in this section / category was in &lt;a href="https://janusworx.com/work/the-big-plan-change-my-vm-to-be-gitops-driven/" &gt;December&lt;/a&gt;.&lt;br&gt;
There ought to be more, because I learn so much every week.&lt;br&gt;
Even in December, the massive move I did, needs documenting. (at least for me, if not for your reading)&lt;/p&gt;
&lt;p&gt;So the new plan is to cut the &lt;em&gt;doing&lt;/em&gt; and the learning in half (or by a third). And use that time to write about what I learned.&lt;br&gt;
I know this about myself. I write real good … sometimes. But to even get to that point, I have to write a &lt;em&gt;lot of drivel.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;So, in essence, welcome to the drivel :)&lt;br&gt;
The posts will get more frequent, so if that bothers you or I write about things that aren’t what you came to read me for, I won’t hold it against you if you choose to unsubscribe. I need to be able to write for me. And this is the only place where I can.&lt;/p&gt;
&lt;p&gt;If you do decide to stay and read, as always, I’m grateful. I truly am.&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Trying a Different Tack to Writing Work Posts
%22" &gt;feedback at this domain&lt;/a&gt;.
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Books I Read in March, 2026</title><link>https://janusworx.com/reading/books-i-read-in-march-2026/</link><pubDate>Thu, 16 Apr 2026 12:10:41 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/books-i-read-in-march-2026/</guid><description>&lt;br&gt;

&lt;figure style="display:flex;justify-content:center;"&gt;
 &lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://janusworx.com/images/2026/the-bear-and-the-nightingale.jpg"
 &gt;&lt;/figure&gt;
&lt;/figure&gt;
&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;courtesy, &lt;a href="https://www.penguinrandomhouse.com/books/251789/the-bear-and-the-nightingale-by-katherine-arden/" target="_blank" rel="noreferrer"&gt;Penguin Random House&lt;/a&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;br&gt;

&lt;p&gt;Between getting ready for Kubecon EU, 2026 (&lt;a href="https://janusworx.com/images/2026/KCEU2026-Fantastic-KEPS-Poster-PS-MJB.jpg" &gt;creating my poster&lt;/a&gt;) and getting ready for Kubecon EU, 2026 (dealing with all the travel sutff), March was a busy month.&lt;br&gt;
Did get quite a bit of reading done. Did not have enough time to listen to my favourite history podcasts though :)&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;The Girl Who Played With Fire and The Girl Who Kicked the Hornet’s Nest, Stieg Larsson
 &lt;div id="the-girl-who-played-with-fire-and-the-girl-who-kicked-the-hornets-nest-stieg-larsson" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-girl-who-played-with-fire-and-the-girl-who-kicked-the-hornets-nest-stieg-larsson" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;This is a pattern that I now see everywhere when I now read a trilogy (or series).&lt;br&gt;
The first book sets up the world, the rest of them then just tell a very good story set in that world. Millennium (this series) is a very good example of this trope. The Girl with the Dragon Tattoo (which I read last month) sets up the bleak, colourless, cold, misogynistic world. And now Fire and Hornet’s Nest tell a single long story in that world. These should have been one book.&lt;/p&gt;
&lt;p&gt;This time the focus is on Salander and her life. Something’s happened in the past, which leaves her broken. In the meanwhile, there are old men dying in hospitals, gang members getting beat up and stuff happening at the highest levels of government. How do all of these events tie together?&lt;br&gt;
It’s immersive and wonderfully told. Lisbeth Salander is fire, like the title suggests!&lt;br&gt;
I hope some other similar heroine catches my attention soon!&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;The Looking Glass War, Tinker, Tailor, Soldier, Spy and The Honourable Schoolboy, John le Carré
 &lt;div id="the-looking-glass-war-tinker-tailor-soldier-spy-and-the-honourable-schoolboy-john-le-carré" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-looking-glass-war-tinker-tailor-soldier-spy-and-the-honourable-schoolboy-john-le-carr%c3%a9" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;More greedy old men trying to hang on to power.&lt;br&gt;
MI6 is compromised, by the wily and smart, anti-Smiley, Karla. Who is the mole leaking British secrets to Russia?&lt;br&gt;
An empathetic gangster, and an honourable schoolboy have a standoff at an island outside Hong Kong.&lt;/p&gt;
&lt;p&gt;Le Carré was the one who saw and taught me how British influence waned on the world stage when all the while, the system still hung on to dreams of their “glory” days. He also taught me how to see in shades of grey.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;The Bear and the Nightingale, The Girl in the Tower and The Winter of the Witch (Winternight trilogy), Katherine Arden
 &lt;div id="the-bear-and-the-nightingale-the-girl-in-the-tower-and-the-winter-of-the-witch-winternight-trilogy-katherine-arden" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-bear-and-the-nightingale-the-girl-in-the-tower-and-the-winter-of-the-witch-winternight-trilogy-katherine-arden" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;blockquote&gt;&lt;p&gt;I do not know what you should choose. Every time you take one path, you must live with the memory of the other: of a life left unchosen.&lt;br&gt;
Decide as seems best, one course or the other; each way will have its bitter with its sweet.”&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;Here is a clearing on the border between winter and spring. Once Vasya would have said that the cusp of spring was a moment.&lt;br&gt;
But now she knew that it was also a place, at the edge of the lands of winter.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;I read these in two weeks in the bracing cold of Europe.&lt;br&gt;
And once again, this felt like a duology rather than a set of three. The Bear and the Nightingale sets up the world while the Girl in the Tower and the Winter of the Witch feel like a long and beautiful story set in that world.&lt;br&gt;
I had read a big book of Russian folk tales as a child, and they still linger in my heart and soul to this day. I don’t remember what it was called or who wrote it, save for the fact that it was a big grey hardback with a wolf head embossed on the cover. But I read about phoenixes and big grey wolves and Tsars and Baba Yaga and Vasilisa and so many wonderful characters and stories then.&lt;br&gt;
Arden takes all of them (and more that I did not read about) and weaves a beautiful story through fable and history and time. She’s a lovely storyteller. The prose is lovely too! Nature comes alive. Old faith and tradtitons tangle with the new. All against the backdrop of cold wintry nights. I absolutely loved reading Vasilisa’s coming of age and finding her path through life, all the time being framed in events that were true yet beautifully enhanced by the fantastic. I hope these books entrance young folk, while also make them read and fall in love with the old tales as well.&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Books I Read in March, 2026
%22" &gt;feedback at this domain&lt;/a&gt;.
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;</description></item><item><title>Books I Read in February, 2026</title><link>https://janusworx.com/reading/books-i-read-in-february-2026/</link><pubDate>Wed, 11 Mar 2026 11:30:00 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/books-i-read-in-february-2026/</guid><description>&lt;br&gt;

&lt;figure style="display:flex;justify-content:center;"&gt;
 &lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://janusworx.com/images/2026/the-spy-who-came-in-from-the-cold.jpg"
 &gt;&lt;/figure&gt;
&lt;/figure&gt;
&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;from &lt;a href="https://picclick.it/Pan-THE-SPY-WHO-CAME-IN-FROM-THE-296332075807.html" target="_blank" rel="noreferrer"&gt;https://picclick.it/Pan-THE-SPY-WHO-CAME-IN-FROM-THE-296332075807.html&lt;/a&gt;, via DuckDuckGo&lt;/p&gt;
&lt;/figcaption&gt;
&lt;p&gt;&lt;br&gt;

Better late than never, so let’s begin!&lt;br&gt;
This month I moved from history to historical fiction.&lt;br&gt;
From modern spy novels to medieval detective fiction, I had centuries worth of fun!&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 381-390
 &lt;div id="deep-questions-cal-newport-episodes-381-390" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#deep-questions-cal-newport-episodes-381-390" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Some non fiction first.&lt;/p&gt;
&lt;p&gt;I finished catching up with all the episodes of the podcast and now I’ll keep listing them as soon as I finish a batch of ten (around 8+ hours of listening to something counts as book length to me. Unless it’s a four hour Dan Carlin episode. &lt;em&gt;Those&lt;/em&gt; are dense 😂)&lt;br&gt;
The new episodes hew toward philosopical discussions about how to live in a world that is slowly being infected with AI. What is true? What is art? Is AI really taking over the world? Is AI really an apt term for what we are seeing? Pretty interesting listen.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;Beyond the Rift, Peter Watts
 &lt;div id="beyond-the-rift-peter-watts" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#beyond-the-rift-peter-watts" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;blockquote&gt;&lt;p&gt;Whenever I find my will to live becoming too strong, I read Peter Watts.&lt;br&gt;
— &lt;a href="https://rifters.com/real/author.htm" target="_blank" rel="noreferrer"&gt;James Nicoll&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;Watts is one of my favourite authors. I often wonder why he did not get popular.&lt;br&gt;
The Rifters trilogy is my favourite science fiction series. Nothing has come close yet. Power is now taken from geothermal vents in the oceans. The only folks who can adapt to this environment are folks with psychological disorders. They’re given iron gills and other alterations to withstand deep sea pressure. Murder and mayhem ensue. Between the crazy beasts in the dark of the ocean and the crazies themselves.&lt;br&gt;
Techno lingo mixed with poetry, crazy doomsday scenarios and lots of potty mouthedness! Nobody writes quite like him. Nobody writes what he does either. Hard biological sci-fi.&lt;br&gt;
If you’d read the adventures of Lenie Clarke, then nothing about today’s creeping AI world and its dumb “intelligence” would surprise you. And that is precisely why I want to go read Starfish, Maelstrom and Behemoth once more. To see if the books still engage.&lt;br&gt;
&lt;a href="https://www.rifters.com/real/shorts.htm" target="_blank" rel="noreferrer"&gt;You can too!&lt;/a&gt; The novels are available as ebooks in various formats for free on his website.&lt;br&gt;
&lt;em&gt;(If you are going to print them, then caveat printor! These are chonky beasts.)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;But all this is besides the point. Beyond the rift, is a lot of short stories in the world of the Rifters. It clears up, follows through or talks about other things in that setting. I loved it.&lt;/p&gt;
&lt;p&gt;Pspsps, some short stories are available on the link I shared above as well!&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;The Spy Who Came in from the Cold, John le Carré
 &lt;div id="the-spy-who-came-in-from-the-cold-john-le-carré" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-spy-who-came-in-from-the-cold-john-le-carr%c3%a9" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Daddy gave me a even more battered copy of the book, than the pic above.&lt;br&gt;
I don’t know what possesed him to do that. I don’t know what his fascination with Le Carré (&amp;amp; Forsyth) was. For a man who would normally be pretty optimistic and generaly full of hope, to be suggesting I read a book with such a cold, inhospitable view of the world was quite out of character. But I loved reading all about Smiley and the circus. And I spent most of my boyhood, learning about WWII and the cold war world via Smiley and gang.&lt;/p&gt;
&lt;p&gt;The book is a modern classic, though I don’t know why. Probably just a luck of the draw? I’m not complaining though. It’s a wonderful piece of spy drama.&lt;br&gt;
On teensy flimsy actions, on such tiny wings does the world turn. What if Liz and Leamas didn’t get together? Would Smiley’s plan have worked then? A cynical yet bemused Le Carré would say yes and invent some other small thing that would have things just as bleak as they turned out to be.&lt;/p&gt;

&lt;h3 class="relative group"&gt;Call for the Dead and A Murder of Quality
 &lt;div id="call-for-the-dead-and-a-murder-of-quality" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#call-for-the-dead-and-a-murder-of-quality" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;These came before &lt;em&gt;Spy&lt;/em&gt; did, and read more like dark Christie novels. More detective than spy. Good fun!&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;Falco, The Official Companion, Lindsey Davis
 &lt;div id="falco-the-official-companion-lindsey-davis" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#falco-the-official-companion-lindsey-davis" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Medieval detective fiction is no longer enough. I’m now going to ancient Rome for some crime!&lt;br&gt;
I found Lindsey Davis’ Falco who is a soldier turned detective in ancient Rome. (with some Britain thrown in.)&lt;br&gt;
This book is a non fiction companion to the series and the world ala GRRM’s, &lt;em&gt;A World of Ice and Fire&lt;/em&gt;. These are Davis’ thoughts and recollections on how she created Falco, the history (actual and imagined) of the world at the time, the impetus behind why he behaves the he does and all sorts of other bits and bobs. She shares her day, her writing process and lots of intersting tidbits from here there and everywhere. This was tonnes of fun. I’m going into the series, really pumped!&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;The Novice’s Tale, The Servant’s Tale, and The Outlaw’s Tale, Margaret Frazer
 &lt;div id="the-novices-tale-the-servants-tale-and-the-outlaws-tale-margaret-frazer" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-novices-tale-the-servants-tale-and-the-outlaws-tale-margaret-frazer" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;I turned away from Frazer’s group of players in her Joliffe series (which I began last month) and went a few decades earlier to meet Dame Frevisse.&lt;br&gt;
She is a hosteller when I meet her in the Novice’s tale, which solves the problem of how a nun in a convent, is able to meet and talk to people. She’s also Chaucer’s niece which gives her a wee bit of influence.&lt;br&gt;
She reads like a more wonderfully written Sexton Blake. The way they solve crimes is not a coming together of what you may have observed, but something that is happens or is shown at the very end. I hope it gets better with the solution and the foreshadowing as I go deeper into the series. What makes me want to read though is the journey, Frazer takes us on and the conversations these people have and the expositon of the lives they lead. All &lt;em&gt;that&lt;/em&gt; is wonderfully done!&lt;/p&gt;
&lt;p&gt;In &lt;em&gt;Novice&lt;/em&gt;, a crazy rich woman, comes to get her niece back from the convent where Frevisse is and then gets murdered.&lt;br&gt;
&lt;em&gt;Servant&lt;/em&gt;, brings in Joliffe who I read last month into this world when his band of players come to the convent, bearing the dead body of a villager who they claim they found on the way. One of the players is blamed, and accusations fly across the three engaged parties. Who killed that loathsome villager?&lt;br&gt;
&lt;em&gt;Outlaw&lt;/em&gt;, seems like an episode of a serious K drama, where the main cast takes off to Jeju island for a holiday and something happens there. Dame Frevisse is accompanying her fellow nun to her home for a baptism, when they are kidnapped! The kidnapper is Frevisse’s cousin! And then he’s murdered!&lt;/p&gt;
&lt;p&gt;Frazer writes good page turners!&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;The Girl with the Dragon Tattoo, Stieg Larsson
 &lt;div id="the-girl-with-the-dragon-tattoo-stieg-larsson" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-girl-with-the-dragon-tattoo-stieg-larsson" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Modern detective fiction! A journalist plays detective in this one.&lt;br&gt;
Take a girl on the autistic spectrum, give her a really bad childhood, and have still be as normal as possible.&lt;br&gt;
An old man, keeps getting flowers on his dead grand-daughter’s birthday for close to thirty years after she dies.&lt;br&gt;
A self absorbed yet talented journalist who loses darn near everything and now has such a stain on his integrity that no one will believe him.&lt;br&gt;
Bring them all together, add in a pile of dead bodies in the freezing countryside of Sweden and you have a thriller!&lt;br&gt;
I read it when it was first published and I turned to it again. It still holds up. It’s a fun read.&lt;br&gt;
Larsson supports women and is a feminist, yet does not quite know how to write women. He still makes the book work though.&lt;/p&gt;
&lt;p&gt;Lisbeth Salander is a woman who hates men who hate women. And she really is badass!&lt;/p&gt;
&lt;p&gt;More next month! À bientôt!&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Books I Read in February, 2026
%22" &gt;feedback at this domain&lt;/a&gt;.
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;</description></item><item><title>Books I Read in January, 2026</title><link>https://janusworx.com/reading/books-i-read-in-january-2026/</link><pubDate>Sun, 01 Feb 2026 12:15:39 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/books-i-read-in-january-2026/</guid><description>&lt;br&gt;

&lt;figure style="display:flex;justify-content:center;"&gt;
 &lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt=""
 src="https://janusworx.com/images/2026/shattered-lands-s.jpg"
 &gt;&lt;/figure&gt;
&lt;/figure&gt;
&lt;p&gt;This was a good reading month. I think I have become a history geek, thanks to podcasts and books and those are going to be what I read heavily for quite a while now.
Some books intentionally read, some comfort reads.&lt;br&gt;
All recommended.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;The Thin Man, Dashiell Hammett
 &lt;div id="the-thin-man-dashiell-hammett" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-thin-man-dashiell-hammett" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;A mystery whodunit. I am finally in my Noir phase. And enjoying it.&lt;br&gt;
Drunk retired detective, socialite wife, multiple red herrings, 30s America, what’s not to like?!&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;&lt;a href="https://therestishistory.com/episodes/" target="_blank" rel="noreferrer"&gt;The Rest is History&lt;/a&gt;, The Nazis at War, Hitler Strikes West, Parts I-IV
 &lt;div id="the-rest-is-history-the-nazis-at-war-hitler-strikes-west-parts-i-iv" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-rest-is-history-the-nazis-at-war-hitler-strikes-west-parts-i-iv" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Every year, the company of Holland and Sandbrook, walk through the events (slowly) of World Wars One and Two, in order to make up for the travesty of the coverage that they started the show with! Then entire French Revolution in 20 minutes if I remember correctly. 😂
This time, they covered the events of Nazi Germany’s march on and upto the fallo of France. The duo are lovely when they are in flow and these episodes are worth a listen.&lt;/p&gt;

&lt;h3 class="relative group"&gt;&lt;a href="https://therestishistory.com/episodes/" target="_blank" rel="noreferrer"&gt;The Rest is History&lt;/a&gt;, Jack the Ripper, Parts I-IV
 &lt;div id="the-rest-is-history-jack-the-ripper-parts-i-iv" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-rest-is-history-jack-the-ripper-parts-i-iv" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;More from the podcast, this time covering the ghastly killings of the Whitechapel Murderer. Between reading about the events with morbid fascination as a child and then growing up and reading different versions of the events (I liked Alan Moore’s, From Hell if you are a comics person or the ITV miniseries featuring Michael Caine), I thought I had heard all and seen all. The duo surprised me by telling the story from distinct and different perspectives. One was how the media influenced the events, drawing parallels to today, and the other, more importantly, was the lives of the victims, and the events from their perspective leading to their sad demise. The series leaned heavily on a Hallie Rubenhold book, &lt;a href="https://en.wikipedia.org/wiki/The_Five:_The_Untold_Lives_of_the_Women_Killed_by_Jack_the_Ripper" target="_blank" rel="noreferrer"&gt;The Five&lt;/a&gt; to do that. I bought it and it is now on the pile. This probably is the least I felt I could to to erase young Jason’s fevered fascination with killers.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;The Second Stain, The Man with The Twisted Lip, and The Muskgrave Ritual, &lt;a href="https://podcasts.apple.com/gb/podcast/sherlock-co/id1710121792" target="_blank" rel="noreferrer"&gt;Sherlock &amp;amp; Co. Podcast&lt;/a&gt;, Seasons 37, 38 &amp;amp; 39
 &lt;div id="the-second-stain-the-man-with-the-twisted-lip-and-the-muskgrave-ritual-sherlock--co-podcast-seasons-37-38--39" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-second-stain-the-man-with-the-twisted-lip-and-the-muskgrave-ritual-sherlock--co-podcast-seasons-37-38--39" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;This is the other boyhood fascination that still remains. Sleuths and detectives and whodunits.&lt;br&gt;
This series has several lovely takes on the original Doyle stories and are worth your time, if you want to be entertained! When they began, I felt their voices were too akin to the modern BBC series featuring Cumberbatch &amp;amp; Freeman, but now they’ve grown on me and the reverse feels true. Some stories are fun and relaxed and some taut all through. All of them are lovely.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;Mania for Subjugation III, &lt;a href="https://www.dancarlin.com/hardcore-history-series/" target="_blank" rel="noreferrer"&gt;Hardcore History&lt;/a&gt;, Episode 73
 &lt;div id="mania-for-subjugation-iii-hardcore-history-episode-73" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#mania-for-subjugation-iii-hardcore-history-episode-73" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;This is Alexander as never told before. In true Carlin style, you wait eight months to a year between episodes, but when they come, oh boy, do they deliver. We are at the third episode in the series and Alexander has just about started his journey to conquering the world as he knew it. If you want deeply researched history, Dan Carlin’s your man. The amount of books and time and work that goes into each episode is incredible. My only nitpick, is if he could be &lt;em&gt;more&lt;/em&gt; humane. The man comes from the other end, a wargamer who loves what-if scenarios (like young Jason with his fascination for murderers and sociopaths). He’s come a long way from his earlier episodes, but I wish for &lt;em&gt;just&lt;/em&gt; a little more humanity. The stories have enough pathos though and he always does them justice.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;Sister, Maiden, Monster, Lucy A. Snyder
 &lt;div id="sister-maiden-monster-lucy-a-snyder" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#sister-maiden-monster-lucy-a-snyder" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;I thoroughly disliked this one. This feels like someone read the Book of Revelations&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; when high and then based a sci-fi novella on it. &lt;a href="https://www.grimdarkmagazine.com/review-sister-maiden-monster-by-lucy-a-snyder/" target="_blank" rel="noreferrer"&gt;Deliciously unhinged&lt;/a&gt;, reads a review. It’s unhinged, alright.&lt;/p&gt;
&lt;p&gt;I normally don’t mention or list books that I hate or do not finish or do not agree with. This is not that. This is a prime example of a “this is not for me” book. And this probably is the first book I read, that I felt this about. The writing is competent, but it did nothing for me. So no. Not for me. A pandemic rages through the world, and people get affected differently, in different manners. All gruesome.&lt;/p&gt;
&lt;p&gt;I think only one person does horror, the way I want and love. And I remain grateful to the stories and work of Guillermo del Toro.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;The Psychology of Money, Morgan Housel
 &lt;div id="the-psychology-of-money-morgan-housel" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-psychology-of-money-morgan-housel" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;I loved the old timey self help folks. Carnegie, Ziglar et al. Simple truths told with lovely stories.&lt;br&gt;
Housel is the modern form of that persona. Observations on how you think about money, what is wrong with it and suggestions on how one ought to actually think. All interspersed between engaging stories. I wrote &lt;a href="https://janusworx.com/reading/the-psychology-of-money/" &gt;a post about the book&lt;/a&gt;, if you want to know more.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;Shattered Lands, Sam Dalrymple
 &lt;div id="shattered-lands-sam-dalrymple" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#shattered-lands-sam-dalrymple" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;This soothed an itch, that’s been there since my childhood. Raised as I was, in the last remnants of empire and with a father and grandfather—who sometimes were sad about what was lost—I was always fascinated with British India. To learn about the length and breadth of the British Indian Empire, was both novel and yet unsurprising. &lt;a href="https://janusworx.com/reading/shattered-lands/" &gt;More thoughts in a post I wrote&lt;/a&gt; when I finished the book. If you love reading Indian History, this is a must get, must read book.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;History of the Alphabet, Kevin Stroud
 &lt;div id="history-of-the-alphabet-kevin-stroud" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#history-of-the-alphabet-kevin-stroud" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;This one felt like I already had so many disparate pieces of some whole and Stroud made them all fit, to form a beautiful tapestry.&lt;br&gt;
I’m following his &lt;a href="https://historyofenglishpodcast.com/" target="_blank" rel="noreferrer"&gt;History of English podcast&lt;/a&gt;&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;, and I bought the History of the Alphabet to try and support him, not expecting much, but I was pleasantly surprised. Weaving through times and peoples, from Egypt to the Levant to Greece to Italy with the Eruscans and later the Romans, to France and beyond. It’s a lovely tale!&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;A Play of Isaac, Margaret Frazer
 &lt;div id="a-play-of-isaac-margaret-frazer" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#a-play-of-isaac-margaret-frazer" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;This is a lovely piece of historical detective fiction. Set in Oxford in the middle 15th century, it follows a company of players who are staging &lt;a href="https://en.wikipedia.org/wiki/The_Brome_play_of_Abraham_and_Isaac" target="_blank" rel="noreferrer"&gt;Abraham and Isaac&lt;/a&gt; for a local lord and someone dies at their doorstep.&lt;/p&gt;
&lt;p&gt;More than this specific book itself, I want to write a bit about this class of author, whose writings I have really come to enjoy. I have no name for the kind of writing they do. But I love the prose to bits. Gail Lynn Brown (writing as Margaret Frazer), is the latest. The other two I found so far were Edith Pargeter (writing as Ellis Peters) and Rosemary Kirstein.&lt;br&gt;
I found Edith first, with her monumental Cadfael series of books. By the time I was in book two, I was amazed by this man who could do nuance so perfectly (Of course, it turned out to be a woman 😂). But yes, it is the nuance, the way they do turns of phrase, the way they write their characters … I don’t know what binds them togther, what the likeness is. It can’t be genre, because while Pargeter and Brown write historical detective fiction, Kirstein does not.(She seems to have created a unique genre/niche of her own.)&lt;br&gt;
So like I said, while I don’t know what unites them, I will continue to ravenously read everything they write. The writing is letter perfect to my mind and heart. I &lt;em&gt;enjoy&lt;/em&gt; them, with emphasis on &lt;em&gt;joy&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;These are all for now. I hope you found something in the list above that tickled your fancy.&lt;br&gt;
À demain!&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Books I Read in January, 2026
%22" &gt;feedback at this domain&lt;/a&gt;.
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Which is already kooky in the first place&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;The language. Not the English people. There are a lot of peoples in this story :)&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>The Psychology of Money</title><link>https://janusworx.com/reading/the-psychology-of-money/</link><pubDate>Sat, 24 Jan 2026 15:36:56 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/the-psychology-of-money/</guid><description>&lt;figure style="display:flex;justify-content:center;"&gt;
 &lt;figure&gt;&lt;img
 class="my-0 rounded-md"
 loading="lazy"
 decoding="async"
 fetchpriority="low"
 alt="Cover of the Psychology of Money"
 src="https://janusworx.com/images/2026/the-psychology-of-money.jpg"
 &gt;&lt;/figure&gt;
&lt;/figure&gt;
&lt;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;'/&gt;

&lt;p&gt;I heard Morgan Housel on the latest episode of the &lt;a href="https://www.youtube.com/watch?v=NWZZEa9BURw" target="_blank" rel="noreferrer"&gt;Shane Parrish&lt;/a&gt; podcast recently as well as a while ago on &lt;a href="https://www.youtube.com/watch?v=MgOxvGxDqB4" target="_blank" rel="noreferrer"&gt;Vishal Khandelwal&lt;/a&gt;’s podcast, and most of what he said resonated with what I learned and found out on my own independently over the years.&lt;br&gt;
So I went and got his book.&lt;/p&gt;
&lt;p&gt;Take the best of Taleb, Danny Kahneman, and your grandma, put them into story form with an earnest tone, and you get this book. It’s lovely.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Realise that you’re unique. You have your scars. Realise that colours everything that you see and do.&lt;/li&gt;
&lt;li&gt;Stop idolising individuals. The patterns lie in large numbers. Not in a single individual’s story, no matter how inspiring you think it is. You have no clue of which butterfly flapped its wings to create Bill Gates’ wealth.&lt;/li&gt;
&lt;li&gt;The aim ought to be &lt;em&gt;&lt;strong&gt;enough.&lt;/strong&gt;&lt;/em&gt; Which you get to decide. But there has to be a point where you say enough.&lt;/li&gt;
&lt;li&gt;The gains from compounding &lt;em&gt;occur at the end.&lt;/em&gt; The only reason Buffett has the money he has now (~90 billion dollars), is because he started investing at 10. Had he started at 30, he’d only be worth ~20 million. Like Housel says,&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;&lt;p&gt;Effectively all of Warren Buffett’s financial success can be tied to the financial base he built in his pubescent years and the longevity he maintained in his geriatric years.&lt;/p&gt;
&lt;p&gt;His skill is investing, but his secret is time.
That’s how compounding works.&lt;/p&gt;
&lt;/blockquote&gt;&lt;ol start="5"&gt;
&lt;li&gt;Making money is one thing. It’s the keeping of the money that’s harder. How does one do this? Stay in the margins. Survive. And use &lt;a href="https://janusworx.com/reading/longform/antifragile/what-i-learnt-from-antifragile-ii/#the-barbell-heuristic-to-taking-risks" &gt;Taleb’s Barbell&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://janusworx.com/reading/longform/antifragile/what-i-learnt-from-antifragile-i/#optionality" &gt;Have options&lt;/a&gt;. You never know which one might pan out. Also realise that options are another way of saying that one of your individual bets could die for the sake of your bigger aim, and &lt;a href="https://janusworx.com/reading/longform/antifragile/what-i-learnt-from-antifragile-iii/#what-does-not-kill-me---antifragility-for-the-collective" &gt;you’ll still be ok&lt;/a&gt;. An individual stock might not work, but the index has always inched upwards for decades.&lt;/li&gt;
&lt;li&gt;The best freedom, to paraphrase Taleb, is the ability to say, “Fuck this!” to things you don’t want to do. Or to actually quote him …&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;&lt;p&gt;This kind of sum I’ve called in my vernacular “fuck you money” —a sum large enough to get most, if not all, of the advantages of wealth (the most important one being independence and the ability to only occupy your mind with matters that interest you) but not its side effects, such as having to attend a black-tie charity event and being forced to listen to a polite exposition of the details of a marble-rich house renovation. […] Beyond a certain level of opulence and independence, gents tend to be less and less personable and their conversation less and less interesting.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;Housel puts it much more eloquently …&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The highest form of wealth is the ability to wake up every morning and say, “I can do whatever I want today.”&lt;/p&gt;
&lt;p&gt;People want to become wealthier to make them happier. Happiness is a complicated subject because everyone’s different. But if there’s a common denominator in happiness—a universal fuel of joy—it’s that people want to control their lives.&lt;/p&gt;
&lt;p&gt;The ability to do what you want, when you want, with who you want, for as long as you want, is priceless. It is the highest dividend money pays.&lt;/p&gt;
&lt;/blockquote&gt;&lt;ol start="8"&gt;
&lt;li&gt;Stop playing the Keeping up with the Kumars&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/li&gt;
&lt;li&gt;Save money.&lt;/li&gt;
&lt;li&gt;Being reasonable is greater than being rational.&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;&lt;p&gt;You’re not a spreadsheet. You’re a person.
Do not aim to be coldly rational when making financial decisions. Aim to just be pretty reasonable. Reasonable is more realistic and you have a better chance of sticking with it for the long run, which is what matters most when managing money.&lt;/p&gt;
&lt;/blockquote&gt;&lt;ol start="11"&gt;
&lt;li&gt;You cannot spend your time and energy watching the world and waiting for the “best” time to make a investment. Save money. Invest it. Let it compound.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://janusworx.com/personal/on-margin/" &gt;Margin of Safety&lt;/a&gt;. That ought to be one of the main weapons in your mental arsenal. Always have room for error. Always have slack.&lt;/li&gt;
&lt;li&gt;You will change over time. Learn to be kind to your future self. Make sure you’re not wedded to past decisions. Make your circumstances adapt to you.&lt;/li&gt;
&lt;li&gt;Nothing’s free. What are you willing to pay to get what you want?&lt;/li&gt;
&lt;li&gt;Note to self: Learn Statistics. Learn probabilities. They’ll teach you more than stories that folks weave. And yet paradoxically, when you want to convince folks? Use stories. They are always more powerful!&lt;/li&gt;
&lt;li&gt;Manage and invest your money in a way that helps you sleep at night.&lt;/li&gt;
&lt;li&gt;The best “shortcut” to do better with your investments? Increase your time horizon and let compounding work for you.&lt;/li&gt;
&lt;li&gt;What works for others will not work for you. They are not you. Make your own mistakes. And your own decisions. There is no single right answer; just the answer that works for you.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: The Psychology of Money
%22" &gt;feedback at this domain&lt;/a&gt;.
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Deep cut silly joke, if you loved the Kumars and Goodness Gracious me.&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=hjWd9a8Ck8U" target="_blank" rel="noreferrer"&gt;The Jones at No. 42 were Indian&lt;/a&gt;.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Shattered Lands</title><link>https://janusworx.com/reading/shattered-lands/</link><pubDate>Mon, 19 Jan 2026 17:31:37 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/shattered-lands/</guid><description>&lt;br&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2026/shattered-lands.jpg" alt="Picture of the book, Shattered Lands" /&gt;
 
 
 &lt;/figure&gt;
&lt;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;'/&gt;

&lt;p&gt;I came across this little paradox of history when I read, “The Race for Paradise” &lt;a href="https://janusworx.com/reading/the-race-for-paradise/" &gt;in 2018&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Bashir saw the strange spectacle of the Frankish&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; lord of Antioch marching alongside Muslim troops from the lord of Aleppo, arrayed in battle against the Sultan’s representative, the Muslim lord of Mosul, who marched with his own Frankish&lt;sup id="fnref1:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; allies from Edessa.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;Close to eight hundred years later, history rhymed. From Sam Dalrymple’s, Shattered Lands …&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Communities divided between India and Burma like the Mizos and Chakma thus found themselves pulled into the war over Pakistan. Later India would send a battalion of Tibetan refugees against them, so that on the eastern front the battle over the future of the Islamic Republic of Pakistan ironically involved two rival Buddhist militias – neither of them Bengali.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;That’s always the zeitgeist apparently.&lt;br&gt;
People are dorks.&lt;br&gt;
Showing grace to folks “not like us” is hard.&lt;/p&gt;
&lt;p&gt;Let me get the one nitpick out of the way first. It’s a bit rich for Sam to play doomsayer for modern Asia or roleplay a stern parent by expecting us to behave “propah”. He thinks its an irony that&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;in the twenty-first century it is easier for Indians, Pakistanis and Bangladeshis to meet in England, their former colonial power, than to meet in the subcontinent itself.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;The fact remains that Britain abandoned its Empire. They just upped sticks and left. With nothing left for us.&lt;br&gt;
Yes it is sad that there are divisions. But leave the healing to us.&lt;br&gt;
I don’t want the man&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; who stabbed me in the back, in the dark, and looted and raped everything of mine, to come and preach to me of forgiveness or how division is bad for us..&lt;/p&gt;
&lt;p&gt;Sam says,&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The last decade has witnessed the decline of globalisation, the strengthening of borders and the resurgence of nationalism across the world. India’s Partitions are a dire warning for what such a future might hold.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;I sincerely hope this is a message to the nations of the “first world” to stop ravaging our lands and not for folks in Africa and Asia. Be really hypocritical if it wasn’t.&lt;/p&gt;
&lt;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;'/&gt;

&lt;p&gt;And now to the rest of the book.&lt;br&gt;
It’s a real tour de force of history.&lt;br&gt;
Beginning in the late 1920s and ending in the mid 70s, the book traces the breakup of the British Indian Empire.&lt;br&gt;
So many pieces of jumbled childhood memories, now make sense. The reason why so many Goans and Mangaloreans rushed to do labour in the erstwhile Trucial States in the mid 80s (modern UAE and other neighbouring countries). I have seen old Indian currency used in Aden (my relatives), as well as Indian currency that could be used in Saudi Arabia when folks went on the Haj (via friends). Why when I went to work in the Eastern part of my state (Maharashtra) in my younger years, the dialect and culture felt different (Because Dakhani. Because erstwhile Hyderabad). Why there used to be so many &lt;a href="https://en.wikipedia.org/wiki/State_Bank_of_India#Former_associate_banks" target="_blank" rel="noreferrer"&gt;State Banks&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;While I was fairly well informed about how Pakistan and Bangladesh came about, I wanted to learn more about of the Easternmost (Burma) and Westermost (Arabian States) flanks of the British Indian Empire. The book delivered in spades.&lt;br&gt;
It’s extremely well researched, and Sam has the blood of his &lt;a href="https://williamdalrymple.com/" target="_blank" rel="noreferrer"&gt;ranconteur papa&lt;/a&gt; when relating this (hi)story.&lt;br&gt;
The history I loved and related to the most, was Angami Zapu Phizo’s lifelong struggle (and failure) to build a Naga nation. Phizo keeps appearing in nearly every Partition story, trying his hardest. The Nagas were the best part of the book.&lt;/p&gt;
&lt;p&gt;I have friends, who still reel from the partitions, who have left family on the other side, who have lost lands and property and freedom.&lt;br&gt;
My father (born in 1942) as well as several other older friends (born in the 1930s) used to lament of all that was lost, without being able to articulate what and how.&lt;br&gt;
This book made me realise how and just how much.&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Shattered Lands
%22" &gt;feedback at this domain&lt;/a&gt;.
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Christian&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&amp;#160;&lt;a href="#fnref1:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;England&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>2025</title><link>https://janusworx.com/reading/2025/</link><pubDate>Wed, 31 Dec 2025 11:59:00 -1200</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/2025/</guid><description>&lt;div style="font-size: 85%; "&gt;
&lt;p&gt;&lt;em&gt;&lt;a href="https://janusworx.com/reading/" &gt;What do all the stars and daggers after the book titles mean?&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;br&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note to self, for this year: Read less, write more notes. Abandon more books.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3 class="relative group"&gt;January
 &lt;div id="january" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#january" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;div class="book-list"&gt;
&lt;ol&gt;
&lt;li&gt;Murder at the Vicarage, Agatha Christie&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;The Body in the Library, Agatha Christie&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;The Moving Finger, Agatha Christie&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Sleeping Murder, Agatha Christie&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;A Murder Is Announced, Agatha Christie&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;They Do It with Mirrors, Agatha Christie&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;My Horrible Career, John Arundel&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;The Veiled Lodger, &lt;a href="https://www.goalhangerpodcasts.com/sherlock" target="_blank" rel="noreferrer"&gt;Sherlock &amp;amp; Co. Podcast&lt;/a&gt;&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Hardcore History, &lt;a href="https://www.dancarlin.com/product/hardcore-history-72-mania-for-subjugation-ii/" target="_blank" rel="noreferrer"&gt;Mania for Subjugation II&lt;/a&gt;, Episode 72&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;A Pocket Full of Rye, Agatha Christie&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;4.50 from Paddington, Agatha Christie&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;The Mirror Crack’d From Side to Side, Agatha Christie&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;As You Wish: Inconceivable Tales from the Making of The Princess Bride, Cary Elwes &amp;amp; Joe Layden&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;A Caribbean Mystery, Agatha Christie&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;At Bertram’s Hotel, Agatha Christie&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Nemesis, Agatha Christie&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Miss Marple’s Final Cases, Agatha Christie&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;

&lt;h3 class="relative group"&gt;February
 &lt;div id="february" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#february" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;div class="book-list"&gt;
&lt;ol start="18"&gt;
&lt;li&gt;A Shadow in Summer, Daniel Abraham&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/gb/podcast/sherlock-co/id1710121792" target="_blank" rel="noreferrer"&gt;Black Peter&lt;/a&gt;, Sherlock &amp;amp; Co. Podcast, Season 25&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://feeds.buzzsprout.com/2447316.rss" target="_blank" rel="noreferrer"&gt;On Writing with Brandon Sanderson&lt;/a&gt;, Episodes 1-4, Brandon Sanderson&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;A Betrayal in Winter, Daniel Abraham&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;I Will Judge You by Your Bookshelf, Grant Snider&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;The Art of Living, Grant Snider&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;The Shape of Ideas, Grant Snider&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;For the Love of Go, John Arundel&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Powerful Command-Line Applications in Go, Ricardo Gerardi&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Learning Go, Jon Bodner&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;An Autumn War, Daniel Abraham&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;The Price of Spring, Daniel Abraham&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Math for English Majors, Ben Orlin (&lt;a href="https://janusworx.com/reading/math-for-english-majors-ben-orlin/" &gt;Notes&lt;/a&gt;)&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/in/podcast/empire/id1639561921" target="_blank" rel="noreferrer"&gt;Empire Podcast&lt;/a&gt;, The Three Kings, Episodes 212–214&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;

&lt;h3 class="relative group"&gt;March
 &lt;div id="march" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#march" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;div class="book-list"&gt;
&lt;ol start="32"&gt;
&lt;li&gt;Companion to the Count, Melissa Kendall&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/gb/podcast/sherlock-co/id1710121792" target="_blank" rel="noreferrer"&gt;Wisteria Lodge&lt;/a&gt;, Sherlock &amp;amp; Co. Podcast, Season 26&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;A Story of Love, Minerva Spencer&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;The Etiquette of Love, Minerva Spencer&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;A Very Bellamy Christmas, Minerva Spencer&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/in/podcast/empire/id1639561921" target="_blank" rel="noreferrer"&gt;Empire Podcast&lt;/a&gt;, The Rise and Fall of the Mughal Empire, Episodes 205–211, 215-222&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/in/podcast/empire/id1639561921" target="_blank" rel="noreferrer"&gt;Empire Podcast&lt;/a&gt;, Britain’s Last Colony, Episodes 229-230&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Head First Java (3&lt;sup&gt;rd&lt;/sup&gt; edition), Kathy Sierra, Bert Bates &amp;amp; Trisha Gee&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Head First Go, Jay McGavren&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://therestishistory.com/episodes/" target="_blank" rel="noreferrer"&gt;The Rest is History&lt;/a&gt;, The French Revolution (Part II), Episodes 503–507&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://therestishistory.com/episodes/" target="_blank" rel="noreferrer"&gt;The Rest is History&lt;/a&gt;, The French Revolution (Part III), Episodes 544-547&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.acquired.fm/episodes/tsmc-founder-morris-chang" target="_blank" rel="noreferrer"&gt;Morris Chang &amp;amp; TSMC&lt;/a&gt;, Spring 2025, Episode 1, Acquired Podcast&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.acquired.fm/episodes/rolex" target="_blank" rel="noreferrer"&gt;Rolex&lt;/a&gt;, Spring 2025, Episode 2, Acquired Podcast&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Head First C, Dawn Griffiths &amp;amp; David Griffiths&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;

&lt;h3 class="relative group"&gt;April
 &lt;div id="april" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#april" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;div class="book-list"&gt;
&lt;ol start="46"&gt;
&lt;li&gt;Head First Learn to Code, Eric Freeman&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://feeds.buzzsprout.com/2447316.rss" target="_blank" rel="noreferrer"&gt;On Writing with Brandon Sanderson&lt;/a&gt;, Episodes 4.5-8, Brandon Sanderson&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Spellfire Thief, Sarah Hawke&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Thinking About Thinking, Grant Snider&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/gb/podcast/sherlock-co/id1710121792" target="_blank" rel="noreferrer"&gt;The Disappearance of Lady Frances Carfax&lt;/a&gt;, Sherlock &amp;amp; Co. Podcast, Season 28&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 01-10&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 11-20&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Unlovable, Darren Hayes&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;

&lt;h3 class="relative group"&gt;May
 &lt;div id="may" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#may" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;div class="book-list"&gt;
&lt;ol start="54"&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 21-30&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Dick Barton and the Secret Weapon, Edward J Mason&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Dick Barton and the Paris Adventure, Edward J Mason&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Dick Barton and the Cabatolin Diamonds, Edward J Mason&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Kill the Pharaoh, Victor Pemberton&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://feeds.buzzsprout.com/2447316.rss" target="_blank" rel="noreferrer"&gt;On Writing with Brandon Sanderson&lt;/a&gt;, Episodes 8-12, Brandon Sanderson&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 31-40&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Trial &amp;amp; Error (The Hardy Boys), Franklin W. Dixon&lt;/li&gt;
&lt;li&gt;Understanding APIs and RESTful APIs Crash Course, Kalob Taulien (Udemy)&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;System Collapse, Martha Wells&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 31-40&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;A Sham Engagement, Fil Reid&lt;/li&gt;
&lt;li&gt;A Hint of Scandar, Fil Reid&lt;/li&gt;
&lt;li&gt;Gideon the Ninth, Tamsyn Muir&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 41-50&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 51-60&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Harrow the Ninth, Tamsyn Muir&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;

&lt;h3 class="relative group"&gt;June
 &lt;div id="june" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#june" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;div class="book-list"&gt;
&lt;ol start="71"&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 61-70&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 71-80&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Apple in China, Patrick McGee&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Dreaming of Elisabeth, Camilla Lackberg&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;An Elegant Death, Camilla Lackberg&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.acquired.fm/episodes/the-steve-ballmer-interview" target="_blank" rel="noreferrer"&gt;Steve Ballmer&lt;/a&gt;, Summer 2025, Episode 1, Acquired Podcast&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 81-90&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://therestishistory.com/episodes/" target="_blank" rel="noreferrer"&gt;The Rest is History&lt;/a&gt;, Warlords of the West, The Rise and Fall of the Franks, Episodes 520-525&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://therestishistory.com/episodes/" target="_blank" rel="noreferrer"&gt;The Rest is History&lt;/a&gt;, Heart of Darkness, Horror in the Congo, Episodes 538-541&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Antifragile, Nassim Nicholas Taleb&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;A Man and a Woman, Robin Schone&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 91-100&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/gb/podcast/sherlock-co/id1710121792" target="_blank" rel="noreferrer"&gt;A Scandal in Bohemia&lt;/a&gt;, Sherlock &amp;amp; Co. Podcast, Season 30&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;How to Read a Book, Mortimer J. Adler&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;The Secret Rules of the Terminal, Julia Evans&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;The Lover, Robin Schone&lt;/li&gt;
&lt;li&gt;Slide:ology, Nancy Duarte&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;

&lt;h3 class="relative group"&gt;July
 &lt;div id="july" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#july" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;div class="book-list"&gt;
&lt;ol start="88"&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 101-110&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 111-120&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://therestishistory.com/episodes/" target="_blank" rel="noreferrer"&gt;The Rest is History&lt;/a&gt;, 1066: The Norman Conquest of England, Episodes 548-557&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Emacs Writing Studio, Peter Prevos&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 121-130&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/in/podcast/empire/id1639561921" target="_blank" rel="noreferrer"&gt;Empire Podcast&lt;/a&gt;, The History of Ireland, Episodes 231-246&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/gb/podcast/sherlock-co/id1710121792" target="_blank" rel="noreferrer"&gt;The Priory School&lt;/a&gt;, Sherlock &amp;amp; Co. Podcast, Season 32&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;The Adventures of Johnny Bunko: The Last Career Guide You&amp;rsquo;ll Ever Need, Daniel H. Pink&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;The Sketchnote Handbook, Mike Rohde&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Business Etiquette, Ann Marie Sabath&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Dare to Tempt an Earl This Spring, Sara Adrien &amp;amp; Tanya Wilde&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;How to Lose Prince This Summer, Sara Adrien &amp;amp; Tanya Wilde&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/in/podcast/empire/id1639561921" target="_blank" rel="noreferrer"&gt;Empire Podcast&lt;/a&gt;, Victorian Narcos (The Opium Wars), Episodes 248-255&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 131-140&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Lost Islamic History, Firas Alkhateeb&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/in/podcast/empire/id1639561921" target="_blank" rel="noreferrer"&gt;Empire Podcast&lt;/a&gt;, Canada, Episodes 267-272&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 141-150&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;100 Tricks to Appear Smart in Meetings, Sarah Cooper&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;

&lt;h3 class="relative group"&gt;August
 &lt;div id="august" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#august" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;div class="book-list"&gt;
&lt;ol start="106"&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/in/podcast/empire/id1639561921" target="_blank" rel="noreferrer"&gt;Empire Podcast&lt;/a&gt;, The Panama Canal, Episodes 273-277&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 151-160&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Dick Barton and the Smash and Grab Raiders, Edward J Mason&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 161-170&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 171-180&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/in/podcast/empire/id1639561921" target="_blank" rel="noreferrer"&gt;Empire Podcast&lt;/a&gt;, Partitions (The Breakup of the Britisth &lt;em&gt;&lt;strong&gt;Indian&lt;/strong&gt;&lt;/em&gt; Empire), Episodes 278-283&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;I Do Everything I’m Told, Megan Fernandes&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 181-190&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;

&lt;h3 class="relative group"&gt;September
 &lt;div id="september" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#september" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;div class="book-list"&gt;
&lt;ol start="114"&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 191-200&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 201-210&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 211-220&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;300, Frank Miller&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;V for Vendetta, Alan Moore&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;The Killing Joke, Frank Miller&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Watchmen, Alan Moore&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Nona the Ninth, Tamsyn Muir&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 221-240&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/in/podcast/empire/id1639561921" target="_blank" rel="noreferrer"&gt;Empire Podcast&lt;/a&gt;, The Suez Crisis, Episodes 284-288&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/in/podcast/empire/id1639561921" target="_blank" rel="noreferrer"&gt;Empire Podcast&lt;/a&gt;, The Cholas, Episodes 289-290&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Vivian Maier: Street Photographer, John Maloof&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Vivian Maier: Out of the Shawdows, Richard Cahn &amp;amp; Michael Williams&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/course/mastering-fujfilm-camera-menus/" target="_blank" rel="noreferrer"&gt;Mastering Fujifilm Camera Menus&lt;/a&gt;, Joshua Chard&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/course/manual-mode-photography-for-beginers/" target="_blank" rel="noreferrer"&gt;Learn Manual Mode Photography in Under 1 Hour!&lt;/a&gt;, David Eastwell&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/course/street-photography-masterclass/" target="_blank" rel="noreferrer"&gt;Street Photography Masterclass&lt;/a&gt;, Adam Tan&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;

&lt;h3 class="relative group"&gt;October
 &lt;div id="october" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#october" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;div class="book-list"&gt;
&lt;ol start="130"&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 241-250&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://therestishistory.com/episodes/" target="_blank" rel="noreferrer"&gt;The Rest is History&lt;/a&gt;, The First World War (1914–15), Episodes 594-599&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Picture Perfect Posing, Roberto Valenzuela&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Picture Perfect Practice, Roberto Valenzuela&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Alien Overlords Series, Theodora Taylor &amp;amp; Eve Vaughn&lt;/li&gt;
&lt;li&gt;&lt;a href="https://therestishistory.com/episodes/" target="_blank" rel="noreferrer"&gt;The Rest is History&lt;/a&gt;, Greek Myths, Episodes 602-605&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 251-270&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 271-290&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/gb/podcast/sherlock-co/id1710121792" target="_blank" rel="noreferrer"&gt;Abbey Grange&lt;/a&gt;, Sherlock &amp;amp; Co. Podcast, Season 33&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/gb/podcast/sherlock-co/id1710121792" target="_blank" rel="noreferrer"&gt;The Mazarin Stone&lt;/a&gt;, Sherlock &amp;amp; Co. Podcast, Season 34&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/gb/podcast/sherlock-co/id1710121792" target="_blank" rel="noreferrer"&gt;The Missing Three-Quarter&lt;/a&gt;, Sherlock &amp;amp; Co. Podcast, Season 35&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://therestishistory.com/episodes/" target="_blank" rel="noreferrer"&gt;The Rest is History&lt;/a&gt;, Greek Myths, Episodes 602-605&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Talk Python in Production, Michael Kennedy &lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 291-310&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Classics of British Literature, John Sutherland (The Great Courses) Lectures 1-10&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Bootstrapping Microservices, Ashley Davis&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;The Book of Kubernetes, Alan Hohn&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.acquired.fm/episodes/" target="_blank" rel="noreferrer"&gt;Google&lt;/a&gt;, Summer 2025, Episodes 2 &amp;amp; 4 and Fall 2025, Episode 1, Acquired Podcast&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 311-330&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/in/podcast/empire/id1639561921" target="_blank" rel="noreferrer"&gt;Empire Podcast&lt;/a&gt;, Gaza! The History, Episodes 291-301&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;The Count of Monte Cristo, Alexandre Dumas&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;

&lt;h3 class="relative group"&gt;November
 &lt;div id="november" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#november" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;div class="book-list"&gt;
&lt;ol start="151"&gt;
&lt;li&gt;Kathryn, Minerva Spencer&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 331-350&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Classics of British Literature, John Sutherland (The Great Courses) Lectures 11-31&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.acquired.fm/episodes/trader-joes" target="_blank" rel="noreferrer"&gt;Trader Joe’s&lt;/a&gt;, Fall 2025, Episode 2, Acquired Podcast&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;GitOps, Florian Beetz, Anja Kammer &amp;amp; Simon Harrer&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;GitOps Cookbook, Natale Vinto &amp;amp; Alex Soto Bueno&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;GitOps and Kubernetes, Yuen, Matyshentsev, Ekenstam &amp;amp; Suen&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Argo CD: Up &amp;amp; Running, Andrew Block &amp;amp; Christian Hernandez&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Leveraging Kustomize for Kubernetes Manifests, Brent Laster&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 331-350&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Classics of British Literature, John Sutherland (The Great Courses) Lectures 32-49&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Learning Helm, Butcher, Farina &amp;amp; Dolitsky&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Kubernetes Up and Running, Burns, Beda &amp;amp; Hightower&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Kubernetes Cookbook, Naik, Goasguen &amp;amp; Michaux&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 351-370&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Wisdom Takes Work, Ryan Holiday&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Right Thing, Right Now, Ryan Holiday&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Soul Harvest (Dread Knight #2), Sarah Hawke&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Dark Covenant (Dread Knight #3), Sarah Hawke&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Rebirth (Dread Knight #4), Sarah Hawke&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Talk of the Town, Jerry Pinto &amp;amp; Rahul Srivastava&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;The Penguin Classics Book, Henry Eliot&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Flux CD for Absolute Beginners, Yogesh Raheja&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Wide Angle Photography, Chris Marquardt&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;A Wanton Adventure, Ramona Elmes&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;A Translation of Desire, Ramona Elmes&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;The Psychology of Human Misjudgment, Charles T. Munger&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Laird’s Curse, Katy Baker&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Redemption of a Rakehell, April Moran&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;The Complete Yes Minister, Jonathan Lynn &amp;amp; Antony Jay&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;

&lt;h3 class="relative group"&gt;December
 &lt;div id="december" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#december" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;div class="book-list"&gt;
&lt;ol start="181"&gt;
&lt;li&gt;The Complete Yes Prime Minister, Jonathan Lynn &amp;amp; Antony Jay&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thedeeplife.com/listen/" target="_blank" rel="noreferrer"&gt;Deep Questions&lt;/a&gt;, Cal Newport, Episodes 371-380&lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Confessions of a Rakehell, April Moran&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Traefik API Gateway for Microservices: With Java and Python Microservices Deployed in Kubernetes, Rahul Sharma &amp;amp; Akshay Mathur &lt;sup&gt;*&lt;/sup&gt;&lt;sup&gt;‡&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/gb/podcast/sherlock-co/id1710121792" target="_blank" rel="noreferrer"&gt;The Hound of the Baskervilles&lt;/a&gt;, Sherlock &amp;amp; Co. Podcast, Season 36&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.acquired.fm/episodes/coca-cola" target="_blank" rel="noreferrer"&gt;Coca Cola&lt;/a&gt;, Fall 2025, Episode 3, Acquired Podcast&lt;sup&gt;†&lt;/sup&gt;&lt;sup&gt;#&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;The Way of Kings, Brandon Sanderson&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Words of Radiance, Brandon Sanderson&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Edgedancer, Brandon Sanderson&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Altered Carbon, Richard Morgan&lt;sup&gt;*&lt;/sup&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;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;'/&gt;
</description></item><item><title>The Big Plan: Change My VM to Be Gitops Driven</title><link>https://janusworx.com/work/the-big-plan-change-my-vm-to-be-gitops-driven/</link><pubDate>Fri, 19 Dec 2025 18:00:00 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/the-big-plan-change-my-vm-to-be-gitops-driven/</guid><description>&lt;div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="info"&gt;
 &lt;div class="flex items-center gap-2 font-semibold text-inherit"&gt;
 &lt;div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"&gt;&lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/&gt;&lt;/svg&gt;
&lt;/span&gt;&lt;/div&gt;
 &lt;div class="grow"&gt;
 Intended Audience
 &lt;/div&gt;
 &lt;/div&gt;&lt;div class="admonition-content mt-3 text-base leading-relaxed text-inherit"&gt;&lt;p&gt;Me!&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;Update 2025-12-19: All done!&lt;/em&gt;&lt;/p&gt;
&lt;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;'/&gt;

&lt;p&gt;I just finished a move from one Hetzner VM to another.&lt;br&gt;
The type of VMs are the same, in fact.&lt;br&gt;
It’s just that the new VM and all the software on it are entirely software driven. I kept logging my progress in my &lt;a href="https://janusworx.com/nm/" &gt;notes&lt;/a&gt;, copy pasting the plan from day to day and ticking things off.&lt;br&gt;
Now that it’s done and I &lt;em&gt;still&lt;/em&gt; want to &lt;a href="https://janusworx.com/nm/2025-12-12/" &gt;refer to it regularly&lt;/a&gt;, as the rest of the services come over, I wanted a place to keep it. And so this post, it is.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h2 class="relative group"&gt;List of services that absolutely need to come over. Miscellaneous stuff later.
 &lt;div id="list-of-services-that-absolutely-need-to-come-over-miscellaneous-stuff-later" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#list-of-services-that-absolutely-need-to-come-over-miscellaneous-stuff-later" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; the main domain&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; french version of the website&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; the mastodon archive&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; the email distribution list&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; miniflux for rss feeds&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; joplin&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; baikal&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; &lt;del&gt;discourse&lt;/del&gt; (no more discourse!)&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; markdown editor (hedgedoc)&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; anki&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; huginn&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; syncthing&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; IRC: theLounge + znc (see if we can make do with a single service now &lt;em&gt;(2025-12-15: we could!)&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; kanboard&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Certs, Move them over, or figure out a way to generate and renew them via Ansible&lt;/li&gt;
&lt;/ul&gt;
&lt;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;'/&gt;


&lt;h2 class="relative group"&gt;The Big Point of The Big Plan
 &lt;div id="the-big-point-of-the-big-plan" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-big-point-of-the-big-plan" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Save time and energy. Managing all the disparate services I use is taking more and more of my time. I need to claim that back, while being able to use said services.&lt;/li&gt;
&lt;li&gt;Be gitops driven. Managing stuff gets easier. Tearing down things and rebuilding them gets easier&lt;/li&gt;
&lt;li&gt;Have most everything I use, be in a Kubernetes cluster.&lt;/li&gt;
&lt;li&gt;Be pragmatic enough to know that everything cannot be in a Kubernetes cluster and will have to live in the root VM&lt;/li&gt;
&lt;li&gt;Have Flux CD manage everything in the cluster&lt;/li&gt;
&lt;li&gt;Have Ansible Pull manage everything in the VM, acting as my single node. The point of doing this is not idempotency, rather to have everything in code; something that I can comment and uncomment and manipulate at will, something I can update at will and something that is documented. Never again will Future Jason have to scratch his head about, just how to go about doing something. &lt;em&gt;(Long term note to self: Have the discipline to write tasks and drive everything with Ansible, despite the ease of “just doing it at the command line”)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class="relative group"&gt;The Big Plan (&lt;em&gt;Done!&lt;/em&gt; 🎉🎉🎉)
 &lt;div id="the-big-plan-done-" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-big-plan-done-" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The plan is to redo the cluster again and do my own instance of
&lt;ul&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; K3s&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Sealed Secrets&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Flux CD&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; &lt;del&gt;Certmanager&lt;/del&gt; (Not using it)&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; &lt;del&gt;Letsencrypt&lt;/del&gt; (using pre existing Letsencrypt certs)&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Get Traefik Ingress to work&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Figure out a way to get certs automatically into the cluster&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;And once &lt;em&gt;that&lt;/em&gt; is done, figure out an app to move (Miniflux or Hedgedoc?); 2025-12-03: Kanboard it is!&lt;/li&gt;
&lt;li&gt;Begin by moving (lifting and shifting in popular parlance) Kanboard to the cluster
&lt;ul&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Cert will probably be needed (Wildcard cert works now, just like it does without the cluster)&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Convert a docker-compose to kubernetes manifests&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Learn how to configure an app with code&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Learn how to store data and back it up&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Figure out secrets, if there are any (for now sealed secrets ok, figure out vault and vault injection later)&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Learn how to tunnel through and reverse proxy&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Make Kubernetes manifests work with flux&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Figure out how to automate deployment of manual manifests&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Figure out how to migrate there if there is any in an old app&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Figue out how to automate updation of images in manual manifests&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Get another app (Miniflux) deployed&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Figure out what needs to happen as part of the lifecycle. What you want in the cluster, what stays out, do they intersect, how do updates of cluster happen? VM (node) updates as well?&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Then begin to think along the lines of Live Deploys. Prototype locally and once it works, migrate to production immediately&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Convert Kubernetes manifests to Helm Charts (optional, based on energy)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Go live! Git is source of truth. Two repos.
&lt;ul&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; One for the Main node and its update
&lt;ul&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Terraform will provision node and install package, setup firewall&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Figure out how to get Terraform to get the node talking to the git forge&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Structure repo, copy every thing node related there, and make sure stuff gets updated periodically and if possible, idempotantly, via ansible pull and a systemd timer&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; The other one for k3s and flux
&lt;ul&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Convert everything I have done locally to run on prod. Add more steps as you do them below&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class="relative group"&gt;Unrelated. Long term. Optional. Just here so that I remember
 &lt;div id="unrelated-long-term-optional-just-here-so-that-i-remember" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#unrelated-long-term-optional-just-here-so-that-i-remember" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Get Moi publish script running&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Redo Huginn Scenarios&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feedback@janusworx.com?subject=%22Feedback on post: The Big Plan: Change My VM to Be Gitops Driven
%22" &gt;feedback at this domain&lt;/a&gt;.
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&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></item><item><title>Moved From Reeder to Readkit</title><link>https://janusworx.com/work/moved-from-reeder-to-readkit/</link><pubDate>Mon, 17 Nov 2025 08:59:16 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/moved-from-reeder-to-readkit/</guid><description>&lt;p&gt;&lt;br&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/moved-from-reeder-to-readkit-00.jpg" alt=" " /&gt;
 
 
 &lt;/figure&gt;
&lt;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;'/&gt;

I used &lt;a href="https://reederapp.com/" target="_blank" rel="noreferrer"&gt;Reeder&lt;/a&gt; for reading all my &lt;a href="https://en.wikipedia.org/wiki/RSS" target="_blank" rel="noreferrer"&gt;RSS feeds&lt;/a&gt; ever since the app launched over fifteen years ago. RSS is how I keep up with everything in the world outside and having a pleasant reading experience is very important to me.&lt;/p&gt;
&lt;p&gt;It no longer serves that need for me.&lt;br&gt;
For a long time, the way the app worked aligned with the way I want to read. Earlier this year though, the developer decided to take the app in a different direction, with a different reading experience. The older app is still available as Reeder Classic, but only a few months of use have shown me that the app is basically abandoned. The attention to detail is obviously now being applied to the new app.&lt;/p&gt;
&lt;p&gt;Enter &lt;a href="https://readkit.app/" target="_blank" rel="noreferrer"&gt;ReadKit&lt;/a&gt;.&lt;br&gt;
I had used it briefly during the &lt;a href="https://en.wikipedia.org/wiki/Google_Reader#Discontinuation" target="_blank" rel="noreferrer"&gt;Google Reader apocalypse&lt;/a&gt; when every feed reader was scrambling to find new backends to sync to. Reeder similarly had switched to local only mode and was taking a while before it supported other services.&lt;br&gt;
ReadKit in the meanwhile already had support for Feedwrangler, and so I switched to it until Reeder came back to speed.&lt;/p&gt;
&lt;p&gt;And I’ve switched to it for the foreseeable future.&lt;br&gt;
It looks beautiful!&lt;br&gt;
It does everything I want, shows everything the way and want and behaves just the way I want it to. The only knock I have against it, is that it does not feel as &lt;em&gt;fluid&lt;/em&gt; as Reeder does. But that’s nothing compared to the constant launch and relauch dance, I have to do with Reeder nowadays. Consistency and stability matter a lot to me.&lt;br&gt;
Even better, it syncs natively with &lt;a href="https://miniflux.app/" target="_blank" rel="noreferrer"&gt;Miniflux&lt;/a&gt;, the service I use to actually fetch and read RSS feeds on my Linux desktop. No more Google Reader API!&lt;/p&gt;
&lt;p&gt;This is a list of all my categories (with one of them expanded, click for a larger view)&lt;/p&gt;
&lt;p&gt;&lt;a href="https://janusworx.com/images/2025/moved-from-reader-to-readkit-01-categories.jpg" &gt;
&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/moved-from-reader-to-readkit-01-categories.jpg" alt="Readkit App Screenshot" /&gt;
 
 
 &lt;/figure&gt;&lt;/a&gt;&lt;/p&gt;
&lt;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;'/&gt;

&lt;p&gt;and this is a list of unread articles in a feed, alongside one that is open (once again, click to enlarge if you want to see details)&lt;/p&gt;
&lt;p&gt;&lt;a href="https://janusworx.com/images/2025/moved-from-reader-to-readkit-02-feeds.jpg" &gt;
&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/moved-from-reader-to-readkit-02-feeds.jpg" alt="Readkit App Screenshot" /&gt;
 
 
 &lt;/figure&gt;&lt;/a&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;That gnawing feeling has now gone away from the back of my brain.&lt;br&gt;
The experience of reading and catching up with the world is once again a &lt;em&gt;glorious&lt;/em&gt; experience thanks to ReadKit.&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Moved From Reeder to Readkit
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][2].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&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></item><item><title>Focus on How Long You Read, Not How Much, aka The Best Advice I Could Give You About Reading Lots of Books</title><link>https://janusworx.com/reading/focus-on-how-long-you-read-not-how-much/</link><pubDate>Fri, 14 Nov 2025 05:45:00 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/focus-on-how-long-you-read-not-how-much/</guid><description>&lt;div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="note"&gt;
 &lt;div class="flex items-center gap-2 font-semibold text-inherit"&gt;
 &lt;div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"&gt;&lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/&gt;&lt;/svg&gt;
&lt;/span&gt;&lt;/div&gt;
 &lt;div class="grow"&gt;
 Old Post
 &lt;/div&gt;
 &lt;/div&gt;&lt;div class="admonition-content mt-3 text-base leading-relaxed text-inherit"&gt;&lt;p&gt;This is just an old post, about reading, that has moved from the personal section to here.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;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;'/&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/reading/my-library.jpg" alt="" /&gt;
 
 
 &lt;/figure&gt;&lt;/p&gt;
&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;via a Tom Gauld Book&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;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;'/&gt;

&lt;p&gt;Ever so often, after one of my reading updates on &lt;a href="https://twitter.com/janusworx/status/1556169549640519682" target="_blank" rel="noreferrer"&gt;social media&lt;/a&gt;, some of my young friends ask me how I get so much &lt;a href="https://janusworx.com/reading/#2022" target="_blank" rel="noreferrer"&gt;reading&lt;/a&gt; done.&lt;/p&gt;
&lt;p&gt;So, I decided to answer it here for posterity and then just point folk here.&lt;/p&gt;
&lt;div class="book-list"&gt;
&lt;ol&gt;
&lt;li&gt;You are not me.&lt;br&gt;
a. I am a book worm.&lt;br&gt;
b. I am much older than you, with lots more practice.&lt;/li&gt;
&lt;li&gt;You most probably want to rush through a hard, technical book.&lt;br&gt;
a. I find them as hard as you.&lt;br&gt;
b. I read them at, as slow a pace as you.&lt;br&gt;
c. I interleave the hard stuff, with a lot of easy, “I-Love-This” fiction&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/the-mission/speed-reading-is-bullshit-f5acbee7f59e" target="_blank" rel="noreferrer"&gt;Speed Reading is Bullshit!&lt;/a&gt;&lt;br&gt;
Once you read a lot of books, you can pattern match and speed up or slow down, through whole blocks and paras and chapters and pages.&lt;/li&gt;
&lt;li&gt;Reading for studying’s sake is &lt;em&gt;work&lt;/em&gt; and unavoidable and not quite related to reading for reading’s sake.&lt;br&gt;
a. These I pucker up and do anyway, just like taking bad medicine.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;The only things that matter, when it comes to reading are …&lt;/p&gt;
&lt;div class="book-list"&gt;
&lt;ol&gt;
&lt;li&gt;Be consistent. &lt;a href="https://fs.blog/twenty-five-pages-a-day/" target="_blank" rel="noreferrer"&gt;Read a little bit, daily.&lt;/a&gt;&lt;br&gt;
The trick to reading a lot, is to read a little every day.&lt;/li&gt;
&lt;li&gt;And the trick to reading a little every day is to, &lt;a href="https://janusworx.com/blog/atomic-habits/" target="_blank" rel="noreferrer"&gt;make it a habit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Be curious. Read whatever you want. Read whenever you want. Read wherever you want.&lt;/li&gt;
&lt;li&gt;Quit Books.&lt;br&gt;
You don’t &lt;em&gt;have&lt;/em&gt; to finish it. You don’t &lt;em&gt;have&lt;/em&gt; to &lt;a href="https://fs.blog/shouldnt-slog-books/" target="_blank" rel="noreferrer"&gt;slog through it.&lt;/a&gt;&lt;br&gt;
Set it down. Come back to it, tomorrow … or in a few decades.&lt;br&gt;
Or just throw it out and forget all about it.&lt;/li&gt;
&lt;li&gt;And if reading really becomes a sort of calling for you, &lt;a href="https://fs.blog/how-to-read-a-book/" target="_blank" rel="noreferrer"&gt;then learn how to do it properly.&lt;/a&gt;&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;That’s about it for now. If I remember something more, I’ll come back and tack it on here.&lt;/p&gt;
&lt;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;'/&gt;

&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;I forget which one!&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;totally optional. I learnt this really late in life and while it has enriched my reading experience, it had nothing to do with my love of reading.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Kubernetes, Note to Self: Need Load Balancer Installed on Bare Metal</title><link>https://janusworx.com/work/kubernetes-note-to-self-need-load-balancer-installed-on-bare-metal/</link><pubDate>Tue, 11 Nov 2025 07:37:54 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/kubernetes-note-to-self-need-load-balancer-installed-on-bare-metal/</guid><description>&lt;br&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/kubernetes.svg" alt="" /&gt;
 
 
 &lt;/figure&gt;
&lt;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;'/&gt;

&lt;div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="info"&gt;
 &lt;div class="flex items-center gap-2 font-semibold text-inherit"&gt;
 &lt;div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"&gt;&lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/&gt;&lt;/svg&gt;
&lt;/span&gt;&lt;/div&gt;
 &lt;div class="grow"&gt;
 Intended Audience
 &lt;/div&gt;
 &lt;/div&gt;&lt;div class="admonition-content mt-3 text-base leading-relaxed text-inherit"&gt;&lt;p&gt;Mostly me. Also other grizzly sysadmins who are learning devops like me.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;One thing that bit me when I was trying to expose my apps to the world when working on the home cluster, is that Kubernetes on bare metal—I was using Kind at the time—expects to talk to a load balancer service, which then talk to an actual load balancer. Which if you are using bare metal, you won’t usually have.&lt;br&gt;
I had to then go expose a “NodePort” to gain access from outside.&lt;/p&gt;
&lt;p&gt;So to expose my stuff in as “&lt;a href="https://www.scotthyoung.com/blog/2020/05/04/do-the-real-thing/" target="_blank" rel="noreferrer"&gt;real world&lt;/a&gt;” a way as possible, we need to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Either install a load balancer implementation like &lt;a href="https://metallb.io/" target="_blank" rel="noreferrer"&gt;MetalLB&lt;/a&gt;. OR&lt;/li&gt;
&lt;li&gt;Use a Kubernetes distribution that has a load balancer implementation built-in, like &lt;a href="https://k3s.io" target="_blank" rel="noreferrer"&gt;K3s&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I chose option 2 and used K3s, because I am, as they say in popular parlance, using Kubernetes at the edge.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;br&gt;
In which case, I prefer to have as many batteries built-in as possible.&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feedback@janusworx.com?subject=%22Feedback on post: Kubernetes, Note to Self: Need Load Balancer Installed on Bare Metal
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][2].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&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;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Although, from the articles I’ve read, if you’re doing a multiple node cluster, then you’re better off using MetalLB.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>K3s: Move Data Folder</title><link>https://janusworx.com/work/k3s-move-data-folder/</link><pubDate>Mon, 10 Nov 2025 16:50:45 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/k3s-move-data-folder/</guid><description>&lt;br&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/k3s.svg" alt="" /&gt;
 
 
 &lt;/figure&gt;
&lt;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;'/&gt;

&lt;div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="info"&gt;
 &lt;div class="flex items-center gap-2 font-semibold text-inherit"&gt;
 &lt;div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"&gt;&lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"&gt;&lt;path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/&gt;&lt;/svg&gt;
&lt;/span&gt;&lt;/div&gt;
 &lt;div class="grow"&gt;
 Intended Audience
 &lt;/div&gt;
 &lt;/div&gt;&lt;div class="admonition-content mt-3 text-base leading-relaxed text-inherit"&gt;&lt;p&gt;Mostly me. Also other grizzly sysadmins who are learning devops like me.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 class="relative group"&gt;Problem
 &lt;div id="problem" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#problem" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;My main SSD is too small to hold all my kubernetes and K3s shenanigans. (It’s only about 512gb)
So I need a way to move my K3s data folder out to my big HDD.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Solution
 &lt;div id="solution" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#solution" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="caution"&gt;
 &lt;div class="flex items-center gap-2 font-semibold text-inherit"&gt;
 &lt;div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"&gt;&lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"&gt;
&lt;path fill="currentColor" d="M159.3 5.4c7.8-7.3 19.9-7.2 27.7 .1c27.6 25.9 53.5 53.8 77.7 84c11-14.4 23.5-30.1 37-42.9c7.9-7.4 20.1-7.4 28 .1c34.6 33 63.9 76.6 84.5 118c20.3 40.8 33.8 82.5 33.8 111.9C448 404.2 348.2 512 224 512C98.4 512 0 404.1 0 276.5c0-38.4 17.8-85.3 45.4-131.7C73.3 97.7 112.7 48.6 159.3 5.4zM225.7 416c25.3 0 47.7-7 68.8-21c42.1-29.4 53.4-88.2 28.1-134.4c-2.8-5.6-5.6-11.2-9.8-16.8l-50.6 58.8s-81.4-103.6-87.1-110.6C133.1 243.8 112 273.2 112 306.8C112 375.4 162.6 416 225.7 416z"/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/div&gt;
 &lt;div class="grow"&gt;
 Caution
 &lt;/div&gt;
 &lt;/div&gt;&lt;div class="admonition-content mt-3 text-base leading-relaxed text-inherit"&gt;&lt;p&gt;Before you do any of the following, make sure to stop the cluster with:&lt;br&gt;
&lt;code&gt;sudo systemctl stop k3s&lt;/code&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;K3s supports having a&lt;a href="https://docs.k3s.io/cli/server#data" target="_blank" rel="noreferrer"&gt; custom data directory&lt;/a&gt;, by letting me specify a &lt;code&gt;data-dir&lt;/code&gt;.&lt;br&gt;
I decided to specify it in the &lt;a href="https://docs.k3s.io/installation/configuration#configuration-file" target="_blank" rel="noreferrer"&gt;K3s &lt;code&gt;config&lt;/code&gt; file&lt;/a&gt; at &lt;code&gt;/etc/rancher/k3s/config&lt;/code&gt;.&lt;br&gt;
If it isn’t there (as it wasn’t in my case), just create one. You’ll need to do this as the &lt;code&gt;root&lt;/code&gt; user.&lt;br&gt;
This is what I now have in there.&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;data-dir: /BIGHDD/rancher/k3s&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;And then, I …&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Created a &lt;code&gt;rancher&lt;/code&gt; directory in my big hard disk. (&lt;code&gt;root&lt;/code&gt; owns it)&lt;/li&gt;
&lt;li&gt;Ran rsync as the &lt;code&gt;root&lt;/code&gt; user: &lt;code&gt;rsync -a /var/lib/rancher/k3s/ /BIGHDD/rancher/k3s/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Started up my cluster again with a &lt;code&gt;sudo systemctl start k3s&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feedback@janusworx.com?subject=%22Feedback on post: K3s: Move Data Folder
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][2].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&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></item><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><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/hugo-redirect-from-post-in-one-section-to-another/</guid><description>
&lt;h2 class="relative group"&gt;Problem
 &lt;div id="problem" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#problem" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;I have a post in one section of my site, say &lt;a href="https://janusworx.com/nm/2025-11-06/" &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 class="relative group"&gt;Solution
 &lt;div id="solution" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#solution" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&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="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-golang" data-lang="golang"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;template&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;alias.html&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;dict&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Permalink&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Create your &lt;a href="https://janusworx.com/nm/2025-11-06/" &gt;original 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="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; section with the following metadata:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;&amp;lt;Your title here&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#date autogenerated by my archetype. if missing, add date&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ld"&gt;2025-11-06T08:30:54&lt;/span&gt;&lt;span class="m"&gt;+05&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;redirect&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;target&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;&amp;lt;url-to-redirect-to&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;summary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;&amp;lt;Optional text, that will appear in the sectiones listing page&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="4"&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="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;The Plan for My New Hetzner VM&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ld"&gt;2025-11-06T08:30:54&lt;/span&gt;&lt;span class="m"&gt;+05&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;redirect&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;target&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;/nm/2025-11-06/&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;summary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Alone and helpless, like you&amp;#39;ve lost your fight &lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start="6"&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="https://janusworx.com/work/the-plan-for-my-new-hetzner-vm/" &gt;Clicking that&lt;/a&gt; will redirect to the actual post in my &lt;a href="https://janusworx.com/nm/2025-11-06/" &gt;Notes and Miscellanea&lt;/a&gt; section!&lt;/li&gt;
&lt;/ol&gt;

&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/hugo-redirect-from-post-in-one-section-to-another.png" alt="Hugo Section with Post entries" /&gt;
 
 
 &lt;/figure&gt;
&lt;ol start="7"&gt;
&lt;li&gt;Tada 🎉&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feedback@janusworx.com?subject=%22Feedback on post: Hugo Redirect From Post in One Section to Another
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][2].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&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;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;in my case, &lt;a href="https://janusworx.com/work/" &gt;work&lt;/a&gt;&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>The Plan for My New Hetzner VM</title><link>https://janusworx.com/work/the-plan-for-my-new-hetzner-vm/</link><pubDate>Thu, 06 Nov 2025 08:30:54 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/the-plan-for-my-new-hetzner-vm/</guid><description>
&lt;h2 class="relative group"&gt;Update: &lt;a href="https://janusworx.com/nm/2025-12-11/" &gt;2025-12-11&lt;/a&gt;
 &lt;div id="update-2025-12-11" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#update-2025-12-11" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;I got it done!&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class="relative group"&gt;Preamble
 &lt;div id="preamble" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#preamble" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;If this post is weird and stream of consciousness like, that’s by design.&lt;br&gt;
You are seeing a &lt;a href="https://janusworx.com/" &gt;notes and miscellanea&lt;/a&gt; post, in the work category.&lt;br&gt;
I want to be able to think through what I am doing. Mostly to clarify, document and explicitly state &lt;em&gt;&lt;strong&gt;what&lt;/strong&gt;&lt;/em&gt; I want. To avoid shifting goalposts (or rather to shift them intentionally, if need be.)&lt;br&gt;
I’ll be updating and revising this post as I think and learn and experience things&lt;/p&gt;

&lt;h2 class="relative group"&gt;Goals
 &lt;div id="goals" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#goals" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Think about and write what I want to get done with my hetzner&lt;/li&gt;
&lt;li&gt;For now, the how does not matter&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 class="relative group"&gt;What I want
 &lt;div id="what-i-want" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-i-want" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;A VM running K3s, that I can deploy my Hugo website to, as well all the apps that I choose to run on Janusworx&lt;/li&gt;
&lt;li&gt;My main need with a cluster is the GitOps aspect. Not the scaling or redundancy.
I want infrastructure as code and automated updates, as much as possible.&lt;/li&gt;
&lt;li&gt;Everything goes through my Forgejo instance at home&lt;/li&gt;
&lt;li&gt;I write a post and it should deploy to the website somehow&lt;/li&gt;
&lt;li&gt;Apps that I put in there, either just my config files of already published images/deployments, or my own custom things, ought to be pushed to or pulled by the cluster and deployed. Upgrades should be a matter of manipulating code&lt;/li&gt;
&lt;li&gt;Secrets should be self hosted, via environment variables or some self hosted solution. Never at a third party service&lt;/li&gt;
&lt;/ul&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;2025-11-06 09:35
 &lt;div id="2025-11-06-0935" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2025-11-06-0935" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Got tangled with Hugo in the morning.&lt;/li&gt;
&lt;li&gt;I think I got the basics down, the VM comes up. K3s in installed, but in what order do I move my apps over?&lt;/li&gt;
&lt;li&gt;Think I’ll the root domail last. And try beginning with the “simpler” apps first&lt;/li&gt;
&lt;li&gt;Begin with familiarising myself with Helm&lt;/li&gt;
&lt;li&gt;&lt;em&gt;2025-11-06 10:06:&lt;/em&gt; Tea break&lt;/li&gt;
&lt;li&gt;&lt;em&gt;2025-11-06 13:06:&lt;/em&gt; Lunch break&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 class="relative group"&gt;2025-11-06 16:00
 &lt;div id="2025-11-06-1600" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2025-11-06-1600" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Back. Trying to port my dev terraform setup to production. It should &lt;em&gt;just&lt;/em&gt; work. But it does not.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;2025-11-06 16:59:&lt;/em&gt; Solved. I had somehow borked my Terraform state. Nuked it. And then things started working again&lt;/li&gt;
&lt;li&gt;Show stopper now. My GPG key has expired. Need to figure out how to sign my git commits with SSH now&lt;/li&gt;
&lt;li&gt;&lt;em&gt;2025-11-06 18:26:&lt;/em&gt; I &lt;em&gt;think&lt;/em&gt; I’ve licked it. Both Github and Forgejo don’t seem to be complaining. Let’s see what else I’ve broken over the coming days&lt;/li&gt;
&lt;li&gt;&lt;em&gt;2025-11-06 20:00:&lt;/em&gt; Done! My production cluster is up! &lt;em&gt;&lt;strong&gt;And&lt;/strong&gt;&lt;/em&gt; I can tear it down and build it up consistently. Now to work with it tomorrow.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feedback@janusworx.com?subject=%22Feedback on post: The Plan for My New Hetzner VM
%22" &gt;feedback at this domain&lt;/a&gt;.
&lt;br&gt;
&lt;/p&gt;</description></item><item><title>Make a Ruckus: 001, Done! Or Are We? Thank you, Dave!</title><link>https://janusworx.com/work/make-a-ruckus-001/</link><pubDate>Sat, 20 Sep 2025 13:39:01 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/make-a-ruckus-001/</guid><description>&lt;br&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/ruckus-mabel.jpg" alt="" /&gt;
 
 
 &lt;/figure&gt;
&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;Cute wolf Mabel, who caused quite a Ruckus, courtesy David Beazley&lt;/p&gt;
&lt;/figcaption&gt;
&lt;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;'/&gt;

&lt;p&gt;I had &lt;a href="https://janusworx.com/work/make-a-ruckus-000/" &gt;started this series&lt;/a&gt;, to catalogue my journey learning Rust whilst doing David Beazley’s, &lt;a href="https://dabeaz.com/ruckus.html" target="_blank" rel="noreferrer"&gt;Ruckus&lt;/a&gt; course.&lt;br&gt;
And just like that, it’s over! 😂 The course is done, and I am already missing Dave and my fellow journey folk, Rodica, Yadu, Marko, Upul, Gabriela, and Eugene!&lt;br&gt;
I never thought the end would be so bittersweet.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Worth it financially?
 &lt;div id="worth-it-financially" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#worth-it-financially" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Yes! Oh, dear God, yes!&lt;br&gt;
To begin with, I never thought that Dave’s courses were expensive. Yes, they cost money, but he’s given so much away for free, that I was willing to save up and put my money where my mouth was.&lt;br&gt;
I also think, I’ve figured out Dave’s schtick with the idea of what he teaches.&lt;br&gt;
Take something, something hard, (Write a &lt;a href="https://dabeaz.com/compiler.html" target="_blank" rel="noreferrer"&gt;compiler&lt;/a&gt;? Figure out &lt;a href="https://dabeaz.com/raft.html" target="_blank" rel="noreferrer"&gt;distributed consensus&lt;/a&gt; in networked systems? &lt;a href="https://dabeaz.com/sicp.html" target="_blank" rel="noreferrer"&gt;The big ideas and paradigms&lt;/a&gt; in computing?); something that would take an average Joe, 4-6 months (or a college semester) to learn, and then compress it down to anything from a couple of days to a work week. Compress the time that is … not the knowledge.&lt;br&gt;
Having &lt;em&gt;that&lt;/em&gt; much knowledge &lt;a href="https://www.youtube.com/watch?v=w_8NsPQBdV0" target="_blank" rel="noreferrer"&gt;dowloaded into your head&lt;/a&gt; in that short a time frame, is what (to use a Dave-ism) makes your brain explode.&lt;br&gt;
And now having actually done it, I’m now swinging around to the price is just right or “He actually undercharges a bit” camp.&lt;br&gt;
This is bloody addicting. I’m just going to save up and &lt;a href="https://dabeaz.com/courses.html" target="_blank" rel="noreferrer"&gt;do them all&lt;/a&gt; as and when I can over time. Like Neo answering Tank’s, “How about some more?”, with a &lt;em&gt;&lt;strong&gt;&lt;a href="https://youtu.be/w_8NsPQBdV0?t=41" target="_blank" rel="noreferrer"&gt;Hell yes!&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;br&gt;


&lt;h2 class="relative group"&gt;Worth it for the knowledge I gained?
 &lt;div id="worth-it-for-the-knowledge-i-gained" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#worth-it-for-the-knowledge-i-gained" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Have I already said, Oh, dear God, Yes?! Doubly so, here!&lt;br&gt;
Learning it myself, I realised that Rust had paradigms, teasing me at the edge of my vision, which I couldn’t quite see, frustrating my attempts to learn the language.&lt;br&gt;
Python (C/OOP) is my &lt;a href="https://madhadron.com/programming/seven_ur_languages.html" target="_blank" rel="noreferrer"&gt;ur-language&lt;/a&gt;. Having that, made it easy to learn Go. Rust turned out to be a different beast altogether. Having the big ideas of Rust laid bare and then explained thoroughly was therefore, such an eye opening experience. And I learned it while doing something else, that is inherently hard. Dave makes it easy though, like I describe below.&lt;/p&gt;
&lt;p&gt;I just wanted to learn Rust. I didn’t really want to write a small programming language.&lt;br&gt;
But doing that, made me learn Rust without even realising it. He’s that good. The pedagogical method is that good.&lt;br&gt;
Most big ideas were in there. Ownership and borrowing, check. Compare and contrast how things are done in other languages, double check. Macro magic, check and triple check.&lt;br&gt;
The course was more focussed on the why of Rust, more than the more easily discoverable, how.&lt;br&gt;
A fascinating mental model was looking at Rust like Earth. An inner strict core, surrounded by a more relaxed, friendlier outer shell.&lt;/p&gt;
&lt;p&gt;Daily work was tremendously, mentally taxing. In a &lt;em&gt;&lt;strong&gt;good&lt;/strong&gt;&lt;/em&gt; way.&lt;br&gt;
Dave keeps saying that minds explode due to the material. But no good Sir, that is not true!&lt;br&gt;
To Dave I say, &lt;em&gt;“’Tis thou, Dave, who dost cause the explosions of brains!”&lt;/em&gt;&lt;br&gt;
He starts with an innocent problem, something seemingly innocuous, and then lays his trap.&lt;br&gt;
Simple solutions are shown not to work, teensy yet ghastly exceptions show up to trip you, dreadful scenarios that you’d never imagine, lie beneath the surface. And your mind gets wound up so tight, that when Dave finally has had his fun, takes pity on us and shows us the solution, it naturally goes, &lt;em&gt;&lt;strong&gt;Boom!&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I cannot wait, to have my brains exploded once again :)&lt;/p&gt;

&lt;h2 class="relative group"&gt;Am I done with this series?
 &lt;div id="am-i-done-with-this-series" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#am-i-done-with-this-series" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;No.&lt;br&gt;
I jumped into the deep end of the pool, by attempting to learn Rust with a hard project at the same time.&lt;br&gt;
So while I’ve learned a lot, there’s plenty of work to do.&lt;br&gt;
While the others could do their programming exercises quickly, I have seriously lagged behind.&lt;br&gt;
With the notes I’ve made and the resources that I have access to, I will attempt to redo this week myself over the coming months and write about it, and ponder, struggle, work through it here.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Dave as teacher and all round good egg
 &lt;div id="dave-as-teacher-and-all-round-good-egg" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#dave-as-teacher-and-all-round-good-egg" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;The man puts in tremendous amounts of work.&lt;br&gt;
Every bit of the course, is planned and structured meticulously and then he just riffs off of the ideas.&lt;br&gt;
There was a collaborative Github repo ready and waiting, there were video recordings ready as soon as the day was done.&lt;br&gt;
Dave never pretends to have all the answers. 99% of the time, he does and hides it well, so we do the thinking, but the few times he didn’t, he let us know and then came back to us with answers and thoughts either in the next session or the next day.&lt;br&gt;
Unfailingly polite, kind and generous to a fault, he fostered an extremely collaborative environment, in which, even when there were other folks much more learned and experienced than I; I never felt like a dunce. I never felt spoken down to.&lt;br&gt;
All my kooky ideas were evaluated, and then Dave would point out why doing something like what I suggested wouldn’t quite work or why stuff would crash and burn or why what I suggested doing eeny, meeny, miny, moe was in fact, pretty good.&lt;br&gt;
I learned not just &lt;em&gt;what&lt;/em&gt;, not just &lt;em&gt;how&lt;/em&gt;, but also &lt;em&gt;why&lt;/em&gt;.&lt;br&gt;
And I learned it all in a place that was nice, and friendly, and warm, and kind.&lt;/p&gt;
&lt;p&gt;Dave, thank you for all you do! I’m very grateful!&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Make a Ruckus: 001, Done! Or Are We? Thank you, Dave!
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][2].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&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></item><item><title>Make a Ruckus: 000, The Motivation</title><link>https://janusworx.com/work/make-a-ruckus-000/</link><pubDate>Thu, 11 Sep 2025 13:47:52 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/make-a-ruckus-000/</guid><description>&lt;br&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/ruckus-wolf-howl.svg" alt="" /&gt;
 
 
 &lt;/figure&gt;
&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;&lt;a href="https://commons.wikimedia.org/wiki/File:Wolf_howl_icon.svg" target="_blank" rel="noreferrer"&gt;Wolf howl, by Lorc&lt;/a&gt;, &lt;a href="https://creativecommons.org/licenses/by/3.0" target="_blank" rel="noreferrer"&gt;CC BY 3.0&lt;/a&gt;, via Wikimedia Commons&lt;/p&gt;
&lt;/figcaption&gt;
&lt;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;'/&gt;

&lt;p&gt;I signed up for the latest cohort of &lt;a href="https://dabeaz.com/about.html" target="_blank" rel="noreferrer"&gt;David Beazley’s&lt;/a&gt;, &lt;a href="https://dabeaz.com/ruckus.html" target="_blank" rel="noreferrer"&gt;Ruckus&lt;/a&gt;.&lt;br&gt;
The basic idea, behind Ruckus is to write a small interpreter in Rust!&lt;/p&gt;

&lt;h3 class="relative group"&gt;Why?
 &lt;div id="why" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#why" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;From the &lt;a href="https://dabeaz.com/ruckus.html" target="_blank" rel="noreferrer"&gt;Ruckus&lt;/a&gt; page:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;This course tackles Rust by stepping back and thinking about it from the standpoint of a &amp;ldquo;programming languages&amp;rdquo; project. If Rust is really so different, how would you go about finding out how? Suffice to say, building a programming language will cut right to the heart of the matter.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;This is exactly how I learned Python. Only it took me an inordinately long time. And I didn’t even realise that I was doing it that way. While most of my friends were happy just using Python, I could not quite do it right, because I had no fundamentals&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;, and since my background has been tech support, hardware and people management, I needed to unlearn a ton of stuff.&lt;/p&gt;
&lt;p&gt;I’m cautiously hoping Ruckus will help me do the same with Rust, only in a turbo charged manner.&lt;/p&gt;
&lt;p&gt;Rust fascinates me. And I quite like my journey to its doorstep.&lt;br&gt;
I learned writing for myself with Python. But when it came time to sharing my tiny projects with friends and family, I was a bit stumped.&lt;br&gt;
I learned Go, just so I could give them a binary and then instruct them with a “just run this.”&lt;br&gt;
And while that solved my distribution problem, Go’s type system made me realise, just how well suited a typed language is for collaboration.&lt;br&gt;
Which brings me to Rust. Long term, this is the language&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;, I would love to write for performant code, because Rust’s big picture features (safe, performant, easy to distribute) are exactly what I want for all my tiny bits and bobs.&lt;/p&gt;
&lt;p&gt;Which in turn brings me back to Ruckus.&lt;br&gt;
Getting a teensy peek at how everything works underneath, while at the same time, getting a firm handle on the language seems like a fun challenge.&lt;br&gt;
I also wanted to try what Cal Newport, calls a grand gesture in &lt;a href="https://calnewport.com/deep-work-rules-for-focused-success-in-a-distracted-world/" target="_blank" rel="noreferrer"&gt;Deep Work&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The concept is simple: By leveraging a radical change to your normal environment, coupled perhaps with a significant investment of effort or money, all dedicated toward supporting a deep work task, you increase the perceived importance of the task. This boost in importance reduces your mind’s instinct to procrastinate and delivers an injection of motivation and energy.&lt;br&gt;
[…] The dominant force is the psychology of committing so seriously to the task at hand. To put yourself in an exotic location to focus on a writing project, or to take a week off from work just to think, or to lock yourself in a hotel room until you complete an important invention: These gestures push your deep goal to a level of mental priority that helps unlock the needed mental resources. Sometimes to go deep, you must first go big.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;Make no mistake, my current state is that of an enthusiastic, ignorant newbie. How hard can it be? I’m woefully unprepared for what might come. The only thing I know, is that I &lt;em&gt;don’t&lt;/em&gt; know. I fully expect to be like the wolf above, losing my mind, howling at the moon and generally creating a ruckus.&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Make a Ruckus: 000, The Motivation
%22" &gt;feedback at this domain&lt;/a&gt; or &lt;a href="https://dc.janusworx.com/t/make-a-ruckus-000-the-motivation/159" target="_blank" rel="noreferrer"&gt;continue the discourse here&lt;/a&gt;.
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&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;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;I have &lt;em&gt;some&lt;/em&gt; now&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;I thought I could be pragmatic about the giant that stewards Go, but I realise that it’s something that’ll always stick in my craw. I have no issues using it with other folks or in a collaborative project. I just don’t want to use it for myself and my projects.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>14 (All is Possible!)</title><link>https://janusworx.com/personal/14/</link><pubDate>Wed, 10 Sep 2025 00:00:00 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/personal/14/</guid><description>&lt;br&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/happy-anniversary-14.jpg" alt="" /&gt;
 
 
 &lt;/figure&gt;
&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;How it started &lt;em&gt;&amp;amp;&lt;/em&gt; How it’s going!&lt;/p&gt;
&lt;p&gt;Picture credits, Walter Pinto &lt;em&gt;&amp;amp;&lt;/em&gt; &lt;a href="https://psaggu.com/" target="_blank" rel="noreferrer"&gt;Priyanka Saggu&lt;/a&gt;&lt;br&gt;
Click the pic, to make big!&lt;/p&gt;
&lt;/figcaption&gt;
&lt;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;'/&gt;

&lt;center&gt;In love, as in dreams,&lt;br&gt; 
all is possible!&lt;br&gt;&lt;/center&gt; 
&lt;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;'/&gt;

&lt;p&gt;I love you for completing me, in every possible way. I cannot imagine life without you! 😘&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: 14 (All is Possible!)
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][2].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&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></item><item><title>How to Read a Book: 009, Elementary Reading, The First Level</title><link>https://janusworx.com/reading/how-to-read-a-book-009/</link><pubDate>Wed, 20 Aug 2025 18:16:23 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/how-to-read-a-book-009/</guid><description>&lt;p&gt;&lt;br&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/how-to-read-a-book.jpg" alt="" /&gt;
 
 
 &lt;/figure&gt;&lt;/p&gt;
&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;image courtesy, &lt;a href="https://www.simonandschuster.com/books/How-to-Read-a-Book/Mortimer-J-Adler/9781476790152" target="_blank" rel="noreferrer"&gt;Simon &amp;amp; Schuster&lt;/a&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;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;'/&gt;

&lt;p&gt;The book now dives into &lt;a href="https://janusworx.com/reading/how-to-read-a-book-004/" &gt;the Four Levels of Reading&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We tackle notes from the First Level of Reading, &lt;a href="https://janusworx.com/reading/how-to-read-a-book-004/#level-1-elementary-reading" &gt;Elementary Reading&lt;/a&gt;, today&lt;/p&gt;

&lt;h3 class="relative group"&gt;Stages of Learning to Read
 &lt;div id="stages-of-learning-to-read" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#stages-of-learning-to-read" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;1. First Stage of Learning to read (Reading Readiness)&lt;/strong&gt;&lt;br&gt;
This begins, at birth, and continues normally until the age of about six or seven.
Reading readiness includes several different kinds of preparation for learning to read.&lt;br&gt;
Physical readiness involves good vision and hearing. Intellectual readiness involves a minimum level of visual perception such that the child can take in and remember an entire word and the letters that combine to form it.&lt;br&gt;
Language readiness involves the ability to speak clearly and to use several sentences in correct order.&lt;br&gt;
Personal readiness involves the ability to work with other children, to sustain attention, to follow directions, and the like.&lt;br&gt;
General reading readiness is assessed by tests and is also estimated by teachers who are often skillful at discerning just when a pupil is ready to learn to read.&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;2. Second Stage: Simple Material Reading&lt;/strong&gt;
Children learn to read very simple materials.&lt;br&gt;
They usually begin, by learning a few sight words, and typically manage to master perhaps three hundred to four hundred words by the end of the first year. Basic skills are introduced at this time, such as the use of context or meaning clues and the beginning sounds of words.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Miracle of Reading&lt;/strong&gt;&lt;br&gt;
It is incidentally worth observing that something quite mysterious, almost magical, occurs during this stage.&lt;br&gt;
At one moment in the course of her development the child, when faced with a series of symbols on a page, finds them quite meaningless. Not much later—perhaps only two or three weeks later—she has discovered meaning in them; she knows that they say “The cat sat on the hat.”&lt;br&gt;
How this happens no one really knows, despite the efforts of philosophers and psychologists over two and a half millennia to study the phenomenon. Where does meaning come from? How is it that a French child would find the same meaning in the symbols “Le chat s’asseyait sur le chapeau”?&lt;br&gt;
Indeed, this discovery of meaning in symbols may be the most astounding intellectual feat that any human being ever performs—and most humans perform it before they are seven years old!&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;3.Third Stage: Vocabulary Acquisition&lt;/strong&gt;&lt;br&gt;
The third stage is characterized by rapid progress in vocabulary building and by increasing skill in “unlocking” the meaning of unfamiliar words through context clues.&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;4. Fourth Stage: Assimilation&lt;/strong&gt;&lt;br&gt;
Finally, the fourth stage is characterized by the refinement and enhancement of the skills previously acquired. Above all, the student begins to be able to assimilate his reading experiences—that is, to carry over concepts from one piece of writing to another, and to compare the views of different writers on the same subject. This, the mature stage of reading, should be reached by young persons in their early teens. Ideally, they should continue to build on it for the rest of their lives.&lt;/p&gt;
&lt;/blockquote&gt;&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;Stages and Levels
 &lt;div id="stages-and-levels" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#stages-and-levels" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;blockquote&gt;&lt;p&gt;It is of paramount importance to recognize that the four stages outlined here are all stages of the first level of reading&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;The first stage of elementary reading—&lt;em&gt;&lt;strong&gt;reading readiness&lt;/strong&gt;&lt;/em&gt;—corresponds to pre-school and kindergarten experiences.&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;The second stage—&lt;em&gt;&lt;strong&gt;word mastery&lt;/strong&gt;&lt;/em&gt;—corresponds to the first grade experience of the typical child (although many quite normal children are not “typical” in this sense), with the result that the child attains what we can call second-stage reading skills, or first grade ability in reading or first grade literacy.&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;The third stage of elementary reading—&lt;em&gt;&lt;strong&gt;vocabulary growth and the utilization of context&lt;/strong&gt;&lt;/em&gt;—is typically (but not universally, even for normal children) acquired at about the end of the fourth grade of elementary school and results in what is variously called fourth grade, or functional, literacy—the ability, according to one common definition, to read traffic signs or picture captions fairly easily, to fill out the simpler government forms, and the like.&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;The fourth and final stage of elementary reading is attained at about the time the pupil leaves or graduates from elementary school or junior high school. It is sometimes called eighth grade, ninth grade, or tenth grade literacy. The child is a “mature” reader in the sense that he is now capable of reading almost anything, but still in a relatively unsophisticated manner. In the simplest terms, he is mature enough to do high school work.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subjectFeedback on post: How to Read a Book: 009, Elementary Reading, The First Level
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][2].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&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;
&lt;p&gt;[2]:&lt;/p&gt;</description></item><item><title>How to Read a Book: 008, More On the Activity and the Art of Reading</title><link>https://janusworx.com/reading/how-to-read-a-book-008/</link><pubDate>Tue, 19 Aug 2025 14:40:20 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/how-to-read-a-book-008/</guid><description>&lt;p&gt;&lt;br&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/how-to-read-a-book.jpg" alt="" /&gt;
 
 
 &lt;/figure&gt;&lt;/p&gt;
&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;image courtesy, &lt;a href="https://www.simonandschuster.com/books/How-to-Read-a-Book/Mortimer-J-Adler/9781476790152" target="_blank" rel="noreferrer"&gt;Simon &amp;amp; Schuster&lt;/a&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;Enlightenment or Sophmore(istry)? Reading serves both. It’s the reader who is the difference
 &lt;div id="enlightenment-or-sophmoreistry-reading-serves-both-its-the-reader-who-is-the-difference" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#enlightenment-or-sophmoreistry-reading-serves-both-its-the-reader-who-is-the-difference" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;blockquote&gt;&lt;p&gt;To be informed is to know simply that something is the case.&lt;br&gt;
To be enlightened is to know, in addition, what it is all about: why it is the case, what its connections are with other facts, in what respects it is the same, in what respects it is different, and so forth.&lt;br&gt;
This distinction is familiar in terms of the differences between being able to remember something and being able to explain it.&lt;br&gt;
[…] you have gained nothing but information if you have exercised only your memory. You have not been enlightened. Enlightenment is achieved only when, in addition to knowing what an author says, you know what he means and why he says it.&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;It is true, of course, that you should be able to remember what the author said as well as know what he meant. Being informed is prerequisite to being enlightened. The point, however, is not to stop at being informed.&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;Montaigne speaks of “an abecedarian ignorance that precedes knowledge, and a doctoral ignorance that comes after it.”&lt;br&gt;
The first is the ignorance of those who, not knowing their ABC’s, cannot read at all.&lt;br&gt;
The second is the ignorance of those who have misread many books.&lt;br&gt;
They are, as Alexander Pope rightly calls them, bookful blockheads, ignorantly read. There have always been literate ignoramuses who have read too widely and not well. The Greeks had a name for such a mixture of learning and folly which might be applied to the bookish but poorly read of all ages. They are all sophomores.&lt;/p&gt;
&lt;/blockquote&gt;&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;Art of Reading
 &lt;div id="art-of-reading" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#art-of-reading" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;blockquote&gt;&lt;p&gt;The process whereby a mind, with nothing to operate on but the symbols of the readable matter, and with no help from outside, elevates itself by the power of its own operations. The mind passes from understanding less to understanding more. The skilled operations that cause this to happen are the various acts that constitute the art of reading.&lt;/p&gt;
&lt;/blockquote&gt;&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;What is Reading? A couple of meanings …
 &lt;div id="what-is-reading-a-couple-of-meanings-" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-is-reading-a-couple-of-meanings-" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;1. When you already know things&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The first sense is the one in which we speak of ourselves as reading newspapers, magazines, or anything else that, according to our skill and talents, is at once thoroughly intelligible to us.&lt;br&gt;
Such things may increase our store of information, but they cannot improve our understanding, for our understanding was equal to them before we started. Otherwise, we would have felt the shock of puzzlement and perplexity that comes from getting in over our depth—that is, if we were both alert and honest&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;2. When you understand new things&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The second sense is the one in which a person tries to read something that at first he does not completely understand.&lt;br&gt;
Here the thing to be read is initially better or higher than the reader. The writer is communicating something that can increase the reader’s understanding. Such communication between unequals must be possible, or else one person could never learn from another, either through speech or writing. Here by “learning” is meant understanding more, not remembering more information that has the same degree of intelligibility as other information you already possess.&lt;/p&gt;
&lt;/blockquote&gt;&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;On Reading as Discovery
 &lt;div id="on-reading-as-discovery" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#on-reading-as-discovery" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;blockquote&gt;&lt;p&gt;The distinction between being informed vs being enlightened is familiar in terms of the differences between being able to remember something and being able to explain it.&lt;br&gt;
Enlightenment is achieved only when, in addition to knowing what an author says, you know what he means and why he says it.&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;To avoid error of assuming that to be widely read and to be well-read are the same thing—we must consider a certain distinction in types of learning.&lt;/p&gt;
&lt;p&gt;In the history of education, people have often distinguished between learning by instruction and learning by discovery. Instruction occurs when one person teaches another through speech or writing. We can, however, gain knowledge without being taught. If this were not the case, and every teacher had to be taught what he in turn teaches others, there would be no beginning in the acquisition of knowledge. Hence, there must be discovery—the process of learning something by research, by investigation, or by reflection, without being taught.&lt;/p&gt;
&lt;p&gt;Discovery stands to instruction as learning without a teacher stands to learning through the help of one. In both cases, the activity of learning goes on in the one who learns. It would be a mistake to suppose that discovery is active learning and instruction passive. There is no inactive learning, just as there is no inactive reading.&lt;br&gt;
This is so true, in fact, that a better way to make the distinction clear is to call instruction “aided discovery.”&lt;/p&gt;
&lt;p&gt;The difference between learning by instruction and learning by discovery—or, as we would prefer to say, between aided and unaided discovery—is primarily a difference in the materials on which the learner works. When he is being instructed—discovering with the help of a teacher—the learner acts on something communicated to her. She performs operations on discourse, written or oral. She learns by acts of reading or listening.&lt;br&gt;
When, however, the learner proceeds without the help of any sort of teacher, the operations of learning are performed on nature or the world rather than on discourse. The rules of such learning constitute the art of unaided discovery. If we use the word “reading” loosely, we can say that discovery—strictly, unaided discovery—is the art of reading nature or the world, as instruction (being taught, or aided discovery) is the art of reading books or, to include listening, of learning from discourse.&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;Thinking is only one part of the activity of learning. One must also use one’s senses and imagination. One must observe, and remember, and construct imaginatively what cannot be observed. There is, again, a tendency to stress the role of these activities in the process of unaided discovery and to forget or minimize their place in the process of being taught through reading or listening. For example, many people assume that though a poet must use his imagination in writing a poem, they do not have to use their imagination in reading it.&lt;/p&gt;
&lt;p&gt;The art of reading, in short, includes all of the same skills that are involved in the art of unaided discovery: keenness of observation, readily available memory, range of imagination, and, of course, an intellect trained in analysis and reflection. The reason for this is that reading in this sense is discovery, too—although with help instead of without it.&lt;/p&gt;
&lt;/blockquote&gt;&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;On Present and Absent Teachers (Or as Munger would have put it, the eminent dead)
 &lt;div id="on-present-and-absent-teachers-or-as-munger-would-have-put-it-the-eminent-dead" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#on-present-and-absent-teachers-or-as-munger-would-have-put-it-the-eminent-dead" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;blockquote&gt;&lt;p&gt;We have been proceeding as if reading and listening could both be treated as learning from teachers. To some extent that is true. Both are ways of being instructed, and for both one must be skilled in the art of being taught. Listening to a course of lectures, for example, is in many respects like reading a book; and listening to a poem is like reading it.&lt;br&gt;
Yet there is good reason to place primary emphasis on reading, and let listening become a secondary concern. The reason is that listening is learning from a teacher who is present—a living teacher—while reading is learning from one who is absent.&lt;/p&gt;
&lt;p&gt;If you ask a living teacher a question, she will probably answer you. If you are puzzled by what she says, you can save yourself the trouble of thinking by asking her what he means.&lt;br&gt;
If, however, you ask a book a question, you must answer it yourself. In this respect a book is like nature or the world. When you question it, it answers you only to the extent that you do the work of thinking and analysis yourself.&lt;/p&gt;
&lt;p&gt;This does not mean, of course, that if the living teacher answers your question, you have no further work. That is so only if the question is simply one of fact. But if you are seeking an explanation, you have to understand it or nothing has been explained to you. Nevertheless, with the living teacher available to you, you are given a lift in the direction of understanding her, as you are not when the teacher’s words in a book are all you have to go by.&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;[…] (for us readers though) our continuing education depends mainly on books alone, read without a teacher’s help. Therefore if we are disposed to go on learning and discovering, we must know how to make books teach us well. Reading, like unaided discovery, is learning from an absent teacher.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subjectFeedback on post: How to Read a Book: 008, More On the Activity and the Art of Reading
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][2].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&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;
&lt;p&gt;[2]:&lt;/p&gt;</description></item><item><title>How to Read a Book: 007, Highlights from the Activity and the Art of Reading</title><link>https://janusworx.com/reading/how-to-read-a-book-007/</link><pubDate>Mon, 18 Aug 2025 18:55:42 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/how-to-read-a-book-007/</guid><description>&lt;p&gt;&lt;br&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/how-to-read-a-book.jpg" alt="" /&gt;
 
 
 &lt;/figure&gt;&lt;/p&gt;
&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;image courtesy, &lt;a href="https://www.simonandschuster.com/books/How-to-Read-a-Book/Mortimer-J-Adler/9781476790152" target="_blank" rel="noreferrer"&gt;Simon &amp;amp; Schuster&lt;/a&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;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;'/&gt;

&lt;p&gt;Paraphrased and excerpted as usual …&lt;/p&gt;

&lt;h3 class="relative group"&gt;Thinking is vitally important, but the modern world does not let us …
 &lt;div id="thinking-is-vitally-important-but-the-modern-world-does-not-let-us-" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#thinking-is-vitally-important-but-the-modern-world-does-not-let-us-" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;blockquote&gt;&lt;p&gt;One of the reasons for this situation is that the very media we have mentioned are so designed as to make thinking seem unnecessary (though this is only an appearance).&lt;br&gt;
The packaging of intellectual positions and views is one of the most active enterprises of some of the best minds of our day. The viewer of television, the listener to radio, the reader of magazines, &lt;em&gt;&lt;strong&gt;(the “consumer” of modern internet streams —mjb)&lt;/strong&gt;&lt;/em&gt; is presented with a whole complex of elements—all the way from ingenious rhetoric to carefully selected data and statistics—to make it easy for one to “make up one’s own mind” with the minimum of difficulty and effort.&lt;br&gt;
But the packaging is often done so effectively that the viewer, listener, or reader does not make up their own mind at all. Instead, they inserts a packaged opinion into their mind, somewhat like inserting a cassette into a cassette player. They then push a button and “play back” the opinion whenever it seems appropriate to do so. They have performed acceptably without having had to think.&lt;/p&gt;
&lt;/blockquote&gt;&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;On the ability to read &lt;em&gt;actively&lt;/em&gt; &amp;amp; the need to make an effort to match the author’s
 &lt;div id="on-the-ability-to-read-actively--the-need-to-make-an-effort-to-match-the-authors" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#on-the-ability-to-read-actively--the-need-to-make-an-effort-to-match-the-authors" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;blockquote&gt;&lt;p&gt;Since reading of any sort is an activity, all reading must to some degree be active. Completely passive reading is impossible; we cannot read with our eyes immobilized and our minds asleep. Hence when we contrast active with passive reading, our purpose is, first, to call attention to the fact that reading can be more or less active, and second, to point out that &lt;em&gt;&lt;strong&gt;the more active the reading the better.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;Reading and listening are commonly thought of as receiving communication from someone who is actively engaged in giving or sending it. The mistake here is to suppose that receiving communication is like receiving a blow or a legacy or a judgment from the court.&lt;br&gt;
On the contrary, the reader or listener is much more like the catcher in a game of baseball.&lt;br&gt;
Catching the ball is just as much an activity as pitching or hitting it. The pitcher or batter is the sender in the sense that his activity initiates the motion of the ball. The catcher or fielder is the receiver in the sense that his activity terminates it. Both are active, though the activities are different.&lt;br&gt;
If anything is passive, it is the ball. It is the inert thing that is put in motion or stopped, whereas the players are active, moving to pitch, hit, or catch. The analogy with writing and reading is almost perfect. The thing that is written and read, like the ball, is the passive object common to the two activities that begin and terminate the process.&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;We can take this analogy a step further. The art of catching is the skill of catching every kind of pitch—fast balls and curves, changeups and knucklers.&lt;br&gt;
Similarly, the art of reading is the skill of catching every sort of communication as well as possible.&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;It is noteworthy that the pitcher and catcher &lt;em&gt;&lt;strong&gt;are successful only to the extent that they cooperate.&lt;/strong&gt;&lt;/em&gt; The relation of writer and reader is similar. Successful communication occurs in any case where what the writer wanted to have received finds its way into the reader’s possession. The writer’s skill and the reader’s skill converge upon a common end.&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;There is one respect in which the analogy breaks down. The ball is a simple unit. It is either completely caught or not.&lt;br&gt;
A piece of writing, however, is a complex object. It can be received more or less completely, all the way from very little of what the writer intended to the whole of it. The amount the reader “catches” will usually depend on the amount of activity he puts into the process, as well as upon the skill with which he executes the different mental acts involved.&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;What does active reading entail?&lt;br&gt;
Given the same thing to read, one person reads it better than another, first, by reading it more actively, and second, by performing each of the acts involved more skillfully. These two things are related.&lt;br&gt;
&lt;em&gt;&lt;strong&gt;Reading is a complex activity, just as writing is.&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
It consists of a large number of separate acts, all of which must be performed in a good reading. The person who can perform more of them is better able to read.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subjectFeedback on post: How to Read a Book: 007, Highlights from the Activity and the Art of Reading
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][2].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&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></item><item><title>How to Read a Book: 006, Own Your Book</title><link>https://janusworx.com/reading/how-to-read-a-book-006/</link><pubDate>Wed, 13 Aug 2025 19:02:52 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/how-to-read-a-book-006/</guid><description>&lt;p&gt;&lt;br&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/how-to-read-a-book.jpg" alt="" /&gt;
 
 
 &lt;/figure&gt;&lt;/p&gt;
&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;image courtesy, &lt;a href="https://www.simonandschuster.com/books/How-to-Read-a-Book/Mortimer-J-Adler/9781476790152" target="_blank" rel="noreferrer"&gt;Simon &amp;amp; Schuster&lt;/a&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;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;'/&gt;

&lt;p&gt;I’ve always been precious about the physical books, I have.&lt;br&gt;
Partly because the books I read when I was a child, didn’t belong to me.&lt;br&gt;
And so, I wrote notes. Gentle pencil marks as I read (to be erased, before I returned them), and then writing them all out into a notebook (and later typed in to a computer when I could afford one.)&lt;/p&gt;
&lt;p&gt;I’ve &lt;em&gt;longed&lt;/em&gt; to write in the damned books themselves, but old habits die hard. Until I read Adler, that is.&lt;/p&gt;
&lt;p&gt;And then the clouds parted.&lt;/p&gt;
&lt;p&gt;Marking a book, making it your own, highlighting it, questioning it, raging at it, whispering to it, completing the conversation, the author wishes to have with you … all of it, is such a sheer, physical, visceral experience.&lt;br&gt;
I wonder why I didn’t do it sooner. Better late than never though. I’ve been marking every physical book and highlighting and annotating every electronic book, ever since I got back into reading, &lt;a href="https://janusworx.com/reading/2017-and-older/" &gt;ten years ago&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here’s Adler on &lt;em&gt;why&lt;/em&gt; one needs to physically manhandle a book.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Merely asking questions [of a book] is not enough. You have to try to answer them. And although that could be done, theoretically, in your mind only, it is much easier to do it with a pencil in your hand. The pencil then becomes the sign of your alertness while you read.&lt;/p&gt;
&lt;p&gt;It is an old saying that you have to “read between the lines” to get the most out of anything. The rules of reading are a formal way of saying this. But we want to persuade you to “write between the lines,” too. Unless you do, you are not likely to do the most efficient kind of reading.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;When you buy a book, you establish a property right in it&lt;/strong&gt;&lt;/em&gt;&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;br&gt;
But the act of purchase is actually only the prelude to possession in the case of a book. Full ownership of a book only comes when you have made it a part of yourself, and the best way to make yourself a part of it—which comes to the same thing—is by writing in it.&lt;/p&gt;
&lt;p&gt;Why is marking a book indispensable to reading it?&lt;br&gt;
First, it keeps you awake—not merely conscious, but wide awake.&lt;br&gt;
Second, reading, if it is active, is thinking, and thinking tends to express itself in words, spoken or written. The person who says they knows what they think but cannot express it usually does not know what they think.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;The Art of Reading, according to Adler, is that we take part in a great conversation.&lt;br&gt;
I am talking to the author, but they have learnt from other masters elsewhere and are passing on their thoughts and knowledge, thus taking part in a single great conversation of humankind through the ages.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Reading a book should be a conversation between you and the author.&lt;br&gt;
Presumably she knows more about the subject than you do; if not, you probably should not be bothering with her book.&lt;br&gt;
But understanding is a two-way operation; the learner has to question themselves and question the teacher. They even has to be willing to argue with the teacher, once they understand what the teacher is saying.&lt;br&gt;
Marking a book is literally an expression of your differences or your agreements with the author. It is the highest respect you can pay them&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 class="relative group"&gt;Mortimer Adler’s methods of marking up a book and making it your own
 &lt;div id="mortimer-adlers-methods-of-marking-up-a-book-and-making-it-your-own" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#mortimer-adlers-methods-of-marking-up-a-book-and-making-it-your-own" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;I’m not particularly religious about using them all, because I’ve already been using something similar (a subset) all my life&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;There are all kinds of devices for marking a book intelligently and fruitfully. Here are some devices that can be used:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;UNDERLINING—of major points; of important or forceful statements.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;VERTICAL LINES AT THE MARGIN—to emphasize a statement already underlined or to point to a passage too long to be underlined.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;STAR, ASTERISK, OR OTHER DOODAD AT THE MARGIN—to be used sparingly, to emphasize the ten or dozen most important statements or passages in the book. You may want to fold a corner of each page on which you make such marks or place a slip of paper between the pages. In either case, you will be able to take the book off the shelf at any time and, by opening it to the indicated page, refresh your recollection.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;NUMBERS IN THE MARGIN—to indicate a sequence of points made by the author in developing an argument.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;NUMBERS OF OTHER PAGES IN THE MARGIN—to indicate where else in the book the author makes the same points, or points relevant to or in contradiction of those here marked; to tie up the ideas in a book, which, though they may be separated by many pages, belong together. Many readers use the symbol “Cf ” to indicate the other page numbers; it means “compare” or “refer to.”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;CIRCLING OF KEY WORDS OR PHRASES—This serves much the same function as underlining.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;WRITING IN THE MARGIN, OR AT THE TOP OR BOTTOM OF THE PAGE—to record questions (and perhaps answers) which a passage raises in your mind; to reduce a complicated discussion to a simple statement; to record the sequence of major points right through the book. The endpapers at the back of the book can be used to make a personal index of the author’s points in the order of their appearance.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To inveterate book-markers, the front endpapers are often the most important. Some people reserve them for a fancy bookplate. But that expresses only their financial ownership of the book. The front endpapers are better reserved for a record of your thinking. After finishing the book and making your personal index on the back endpapers, turn to the front and try to outline the book, not page by page or point by point (you have already done that at the back), but as an integrated structure, with a basic outline and an order of parts. That outline will be the measure of your understanding of the work; unlike a bookplate, it will express your intellectual ownership of the book.&lt;/p&gt;
&lt;br&gt;

&lt;p&gt;&lt;a href="https://janusworx.com/images/2025/htrab-own-your-book-outline-big.jpg" &gt;
&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/htrab-own-your-book-outline.jpg" alt="" /&gt;
 
 
 &lt;/figure&gt;&lt;/a&gt;&lt;/p&gt;
&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;“That outline will express your intellectual ownership of the book”&lt;br&gt;
Click to embiggen&lt;/p&gt;
&lt;/figcaption&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;But, wait! There’s more!
 &lt;div id="but-wait-theres-more" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#but-wait-theres-more" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Marking up a book is all fine and dandy, but what about recording your thoughts? And questions?&lt;/p&gt;
&lt;p&gt;Adler to the rescue again with The Three Kinds of Note-making.&lt;br&gt;
Which kind you make depends upon the level at which you are reading.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Notes during Inspectional Reading&lt;/strong&gt;&lt;br&gt;
The questions answered by inspectional reading are: first, what kind of book is it? second, what is it about as a whole? and third, what is the structural order of the work whereby the author develops his conception or understanding of that general subject matter?&lt;br&gt;
You should make notes concerning your answers to these questions, especially if you know that it may be days or months before you will be able to return to the book to give it an analytical reading. &lt;em&gt;(These kind of notes have served me really well, since I tend to keep the book down and then come back to it after a while)&lt;/em&gt;&lt;br&gt;
Notes at this stage, primarily concern the structure of the book, and not its substance—at least not in detail.&lt;br&gt;
The best place to make such notes is on the contents page, or perhaps on the title page, which are otherwise unused in the scheme we have outlined above.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Notes during Analytical Reading&lt;/strong&gt;&lt;br&gt;
In the course of an inspectional reading, especially of a long and difficult book, you may attain some insights into the author’s ideas about his subject matter. Often, however, you will not; and certainly you should put off making any judgment of the accuracy or truth of the statements until you have read the book more carefully.&lt;br&gt;
Then, during an analytical reading, you will need to give answers to questions about the truth and significance of the book. The notes you make at this level of reading are, therefore, not structural but conceptual. They concern the author’s concepts, and also your own, as they have been deepened or broadened by your reading of the book.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Notes during Syntopical Reading&lt;/strong&gt;&lt;br&gt;
There is a step beyond even that, however, and a truly expert reader can take it when he is reading several books syntopically. That is to make notes about the shape of the discussion—the discussion that is engaged in by all of the authors, even if unbeknownst to them. We prefer to call such notes dialectical.&lt;br&gt;
Since they are made concerning several books, not just one, they often have to be made on a separate sheet (or sheets) of paper. Here, a structure of concepts is implied—an order of statements and questions about a single subject matter.&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subjectFeedback on post: How to Read a Book: 006, Own Your Book
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][3].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;br&gt;
Forward these posts and letters to your friends and get them to subscribe!&lt;br&gt;
P.P.S. Feed my &lt;a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_l_share" target="_blank" rel="noreferrer"&gt;insatiable reading habit.&lt;/a&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;edited and paraphrased&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;emphasis, mine&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Observations as I Learn to Read, 2</title><link>https://janusworx.com/reading/observations-as-i-learn-to-read-2/</link><pubDate>Tue, 08 Jul 2025 17:55:31 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/observations-as-i-learn-to-read-2/</guid><description>&lt;p&gt;I &lt;em&gt;finally&lt;/em&gt; got done transferring all my highlights and thoughts and notes from &lt;a href="https://janusworx.com/tags/how-to-read-a-book/" &gt;Adler&lt;/a&gt; into a notes file on the computer.
This was my first, really large notes file, filled with heirarchies of headlines and tags and Org Mode handled it like a champ!&lt;/p&gt;
&lt;p&gt;It took me &lt;em&gt;five times as long&lt;/em&gt; to transfer and organise the file, as it took me to read the book.
This was very painful!&lt;br&gt;
I am writing this down, so that my future self remembers!&lt;br&gt;
Very, &lt;em&gt;&lt;strong&gt;very,&lt;/strong&gt;&lt;/em&gt; painful!&lt;/p&gt;
&lt;p&gt;So I need to be intentional about books that I need to analytically read and change my reading habits.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Have a one to one ratio for notes vs reading.&lt;br&gt;
This means for every ten minutes I want to read, I need to allocate at least the same amount of time for bringing my notes in.&lt;/li&gt;
&lt;li&gt;All of the above, has to be a single session.&lt;br&gt;
So reading, followed by a bit of reflection, followed by transferring my notes and annotations out to &lt;a href="https://www.orgroam.com/" target="_blank" rel="noreferrer"&gt;Org Roam&lt;/a&gt;. So my old hour of reading is now 30m of reading, followed by 30m of thinking and jotting my thoughts down.&lt;/li&gt;
&lt;li&gt;Cross my fingers, and hope that it’ll all work out. Hope that something sane, something intelligible emerges in the end.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Observations as I Learn to Read, 2
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][3].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;br&gt;
Forward these posts and letters to your friends and get them to subscribe!&lt;br&gt;
P.P.S. Feed my &lt;a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share" target="_blank" rel="noreferrer"&gt;insatiable reading habit.&lt;/a&gt;&lt;/p&gt;</description></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><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/emacs-package-updation-checklist/</guid><description>
&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2024/emacs-logo.svg" alt="" /&gt;
 
 
 &lt;/figure&gt;
&lt;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;'/&gt;

&lt;p&gt;I’ve never updated my Emacs packages until recently, because Emacs is where &lt;em&gt;all&lt;/em&gt; my writing happens, and so I’m justifiably paranoid.&lt;br&gt;
But then some packages stopped working, due to various circumstances&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; and an update solved it.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;As far as package management goes, I want to keep things simple.&lt;br&gt;
In fact, I still haven’t graduated to &lt;a href="https://www.gnu.org/software/emacs/manual/html_mono/use-package.html" target="_blank" rel="noreferrer"&gt;&lt;code&gt;use-package&lt;/code&gt;&lt;/a&gt; or &lt;a href="https://github.com/radian-software/straight.el" target="_blank" rel="noreferrer"&gt;&lt;code&gt;straight.el&lt;/code&gt;&lt;/a&gt; because my package needs are few and conservative&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;. And so, while there are &lt;a href="https://github.com/rranelli/auto-package-update.el" target="_blank" rel="noreferrer"&gt;automatic update options&lt;/a&gt; out there, I’ll just stick to updating them manually, every quarter.&lt;/p&gt;
&lt;p&gt;Ergo, this is the checklist I’ll use next time onwards …&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Stop emacs user service, &lt;code&gt;systemctl --user stop emacs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Backup emacs folder in &lt;code&gt;~/.config&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Start emacs manually (not the service).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;M-x package-refresh-contents&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;M-x package-upgrade-all&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Problems? Quit emacs. Revert backup folder.&lt;/li&gt;
&lt;li&gt;In the end, start emacs user sevice, &lt;code&gt;systemctl --user start emacs&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;There’s an Org mode task, scheduled quarterly, so that I won’t forget.&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Emacs Package Updation Checklist
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][3].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;br&gt;
Forward these posts and letters to your friends and get them to subscribe!&lt;br&gt;
P.P.S. Feed my &lt;a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share" target="_blank" rel="noreferrer"&gt;insatiable reading habit.&lt;/a&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;While I don’t want updated packages, I do want updated Emacs and that broke stuff 😂&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;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&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>How to Read a Book: 005, On Reading Speed</title><link>https://janusworx.com/reading/how-to-read-a-book-005/</link><pubDate>Sat, 05 Jul 2025 05:00:00 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/how-to-read-a-book-005/</guid><description>&lt;p&gt;&lt;br&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/how-to-read-a-book.jpg" alt="" /&gt;
 
 
 &lt;/figure&gt;&lt;/p&gt;
&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;image courtesy, &lt;a href="https://www.simonandschuster.com/books/How-to-Read-a-Book/Mortimer-J-Adler/9781476790152" target="_blank" rel="noreferrer"&gt;Simon &amp;amp; Schuster&lt;/a&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;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;'/&gt;

&lt;p&gt;This has never been a bugbear for me. A lifetime of reading has led me to read at a fairly fast clip. But Adler puts into specific words, what it is that I &lt;em&gt;actually, subconsciously&lt;/em&gt; do. This will help me advise my younger friends, when I used to struggle earlier, with a “Just keep at it”&lt;/p&gt;
&lt;p&gt;Below followeth Adler’s advice …&lt;/p&gt;
&lt;blockquote&gt;&lt;ol&gt;
&lt;li&gt;Great speed in reading is a dubious achievement; it is of value only if what you have to read is not really worth reading. A better formula is this:&lt;br&gt;
&lt;em&gt;&lt;strong&gt;Every book should be read no more slowly than it deserves, and no more quickly than you can read it with satisfaction and comprehension. In any event, the speed at which they read, be it fast or slow, is but a fractional part of most people’s problem with reading&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;The ideal is not merely to be able to read faster, but to be able to &lt;em&gt;&lt;strong&gt;read at different speeds&lt;/strong&gt;&lt;/em&gt; — and to know when the different speeds are appropriate.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;&lt;p&gt;So if that is the ideal, how do we go about increasing our speed if we are slow / irregular? Adles has an observation and a suggestion, that’ll take us most of the way there.&lt;/p&gt;
&lt;blockquote&gt;&lt;ol&gt;
&lt;li&gt;The eyes of young or untrained readers “fixate” as many as five or six times in the course of each line that is read. (The eye is blind while it moves; it can only see when it stops.) Thus single words or at the most two-word or three-word phrases are being read at a time, in jumps across the line. Even worse than that, the eyes of incompetent readers regress as often as once every two or three lines—that is, they return to phrases or sentences previously read.&lt;/li&gt;
&lt;li&gt;Place your thumb and first two fingers together. Sweep this “pointer” across a line of type, a little faster than it is comfortable for your eyes to move. Force yourself to keep up with your hand. You will very soon be able to read the words as you follow your hand. Keep practicing this, and keep increasing the speed at which your hand moves, and before you know it you will have doubled or trebled your reading speed.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;&lt;p&gt;With a caveat however …&lt;/p&gt;
&lt;blockquote&gt;&lt;ul&gt;
&lt;li&gt;What exactly have you gained if you increase your reading speed significantly? It is true that you have saved time—but what about comprehension? Has that also increased, or has it suffered in the process?&lt;br&gt;
It is worth emphasizing, therefore, that it is precisely comprehension in reading that this book seeks to improve. You cannot comprehend a book without reading it analytically; &lt;a href="https://janusworx.com/reading/how-to-read-a-book-004/#level-3-analytical-reading" &gt;analytical reading&lt;/a&gt;, as we have noted, is undertaken primarily for the sake of comprehension (or understanding).&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subjectFeedback on post: How to Read a Book: 005, On Reading Speed
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][3].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;br&gt;
Forward these posts and letters to your friends and get them to subscribe!&lt;br&gt;
P.P.S. Feed my &lt;a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_l_share" target="_blank" rel="noreferrer"&gt;insatiable reading habit.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Joseph Conrad Forsees Aaron Swartz and the AI Bandits</title><link>https://janusworx.com/reading/joseph-conrad-forsees-aaron-swartz-and-ai-bandits/</link><pubDate>Fri, 04 Jul 2025 08:17:20 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/joseph-conrad-forsees-aaron-swartz-and-ai-bandits/</guid><description>&lt;br&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/joseph-conrad-heart-of-darkness.jpg" alt="" /&gt;
 
 
 &lt;/figure&gt;
&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;via &lt;a href="https://www.penguin.co.nz/books/heart-of-darkness-9781407090757" target="_blank" rel="noreferrer"&gt;PRH NZ&lt;/a&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;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;'/&gt;

&lt;p&gt;Been listening to Joseph Conrad’s, &lt;em&gt;Heart of Darkness&lt;/em&gt; in the little cracks of time in the day&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; and as always being led to the sad and inevitable conclusion that we always fail to learn from what came before.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;It was as unreal as everything else—as the philanthropic pretence of the whole concern, as their talk, as their government, as their show of work. The only real feeling was a desire to get appointed to a trading-post where ivory was to be had, so that they could earn percentages. They intrigued and slandered and hated each other only on that account—but as to effectually lifting a little finger—oh, no.&lt;/p&gt;
&lt;p&gt;By heavens! there is something after all in the world allowing one man to steal a horse while another must not look at a halter. Steal a horse straight out. Very well. He has done it. Perhaps he can ride. But there is a way of looking at a halter that would provoke the most charitable of saints into a kick.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;a href="https://lessig.tumblr.com/post/40347463044/prosecutor-as-bully" target="_blank" rel="noreferrer"&gt;Aaron Swartz&lt;/a&gt; had to give his life for his beliefs, yet &lt;a href="https://arstechnica.com/information-technology/2023/07/book-authors-sue-openai-and-meta-over-text-used-to-train-ai/" target="_blank" rel="noreferrer"&gt;when the robber barons thieve&lt;/a&gt; everything is suddenly alright.&lt;br&gt;
Greed, like love, &lt;a href="https://upload.wikimedia.org/wikipedia/en/a/a0/Bram_Stoker%27s_Dracula_%281992_film%29.jpg" target="_blank" rel="noreferrer"&gt;never dies&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Joseph Conrad Forsees Aaron Swartz and the AI Bandits
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][3].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;br&gt;
Forward these posts and letters to your friends and get them to subscribe!&lt;br&gt;
P.P.S. Feed my &lt;a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share" target="_blank" rel="noreferrer"&gt;insatiable reading habit.&lt;/a&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;after hearing it being heavily referred to, in &lt;a href="https://therestishistory.com/episodes/" target="_blank" rel="noreferrer"&gt;The Rest is History&lt;/a&gt;’s episodes on the rape, pillage and exploitation of the Congo (Episodes 538-541)&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Observations as I Learn to Read, 1</title><link>https://janusworx.com/reading/observations-as-i-learn-to-read-1/</link><pubDate>Thu, 03 Jul 2025 18:33:37 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/observations-as-i-learn-to-read-1/</guid><description>&lt;p&gt;This is a smol log as I try to reason out what is bothering me about getting the most out of the books I want to, uh, get the most out of.&lt;br&gt;
Something is rankling me, but I don’t know what.&lt;/p&gt;
&lt;p&gt;As I go through &lt;a href="https://janusworx.com/tags/how-to-read-a-book/" &gt;How to Read a Book&lt;/a&gt;, I’ve realised that I need to digest a book in a manner of speaking, specially on my subsequent reads.&lt;/p&gt;
&lt;p&gt;My ideal is to pick up a book, and read through it at the speed it ought to take; highlighting, annotating and writing down my thoughts as I go.&lt;br&gt;
And while I do that, also write things down here on the blog, as I’ve been attempting to do with Adler.&lt;/p&gt;
&lt;p&gt;Rather, I &lt;em&gt;thought&lt;/em&gt; I would do that with Adler.&lt;br&gt;
But through force of habit, I’ve gone and done the same thing I’ve always done.&lt;br&gt;
Read through the entire book, highlighting as I go.&lt;br&gt;
So now I have a book full of notes, and a few thoughts, but all the “brilliant”&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; insights that struck me as I read the book have vanished from my mind, as has any tentative mental model of the structure of the book.&lt;br&gt;
And I’m frustrated with this state of affairs.&lt;br&gt;
What happens then, is me having &lt;a href="https://janusworx.com/reading/ultralearning/" &gt;just a page full of notes&lt;/a&gt; without any of &lt;em&gt;my&lt;/em&gt; thoughts in there, or trying to recapture lighting in a bottle &lt;a href="https://janusworx.com/reading/longform/antifragile/" &gt;over months of agonising effort&lt;/a&gt;.&lt;br&gt;
Neither appeals to me.&lt;/p&gt;
&lt;p&gt;The only things I can think of doing right now are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Keep a notebook beside me and &lt;em&gt;write&lt;/em&gt; my thoughts down. The flyleaves are barely enough for me to keep track of running highlights across pages.&lt;/li&gt;
&lt;li&gt;Intentionally slow down, even more. I don’t know what this will do to my flow.&lt;/li&gt;
&lt;li&gt;Read in chunks. And then stop and write about them. I’ll probably miss the big picture. But I’ll arrive at it slowly, eventually. And the writing will reflect that. Is that good or bad? I don’t really know.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So I think I’m going to buckle down and finish getting my notes from Adler into posts in the coming weeks and try the above on my next book.&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Observations as I Learn to Read, 1
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][3].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;br&gt;
Forward these posts and letters to your friends and get them to subscribe!&lt;br&gt;
P.P.S. Feed my &lt;a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share" target="_blank" rel="noreferrer"&gt;insatiable reading habit.&lt;/a&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;very debatable 😂&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>How to Read a Book: 004, The Four Levels of Reading</title><link>https://janusworx.com/reading/how-to-read-a-book-004/</link><pubDate>Wed, 02 Jul 2025 05:00:00 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/how-to-read-a-book-004/</guid><description>&lt;p&gt;&lt;br&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/how-to-read-a-book.jpg" alt="" /&gt;
 
 
 &lt;/figure&gt;&lt;/p&gt;
&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;image courtesy, &lt;a href="https://www.simonandschuster.com/books/How-to-Read-a-Book/Mortimer-J-Adler/9781476790152" target="_blank" rel="noreferrer"&gt;Simon &amp;amp; Schuster&lt;/a&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;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;'/&gt;

&lt;p&gt;This is another post, that is near verbatim&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; from the book.&lt;br&gt;
Because, once again, this is reference material, that I need to come back to over and over.&lt;/p&gt;
&lt;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;'/&gt;


&lt;h2 class="relative group"&gt;The Four Levels of Reading
 &lt;div id="the-four-levels-of-reading" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-four-levels-of-reading" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;blockquote&gt;&lt;p&gt;They are called so, because they are cumulative.&lt;br&gt;
The first level is not lost in the second, the second in the third, the third in the fourth. In fact, the fourth and highest level of reading includes all the others. It simply goes beyond them.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 class="relative group"&gt;Level 1: Elementary Reading
 &lt;div id="level-1-elementary-reading" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#level-1-elementary-reading" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Everyboy can read at this level!&lt;br&gt;
This is the most common level there is.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The first level of reading we will call Elementary Reading.
In mastering this level, one learns the rudiments of the art of reading, receives basic training in reading, and acquires initial reading skills. We prefer the name elementary reading, because this level of reading is ordinarily learned in elementary school.&lt;/p&gt;
&lt;p&gt;The child’s first encounter with reading is at this level. His problem then (and ours when we began to read) is to recognize the individual words on the page. He is merely concerned with language as it is employed by the writer.
At this level of reading, the question asked of the reader is “What does the sentence say?” That could be conceived as a complex and difficult question, of course. We mean it here, however, in its simplest sense.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 class="relative group"&gt;Level 2: Inspectional Reading
 &lt;div id="level-2-inspectional-reading" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#level-2-inspectional-reading" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;This level I do very well, because of the &lt;a href="https://en.wikipedia.org/wiki/Antilibrary" target="_blank" rel="noreferrer"&gt;anti-library&lt;/a&gt;.&lt;br&gt;
Figuring out whether the book is worth reading or not, is a critical skill for me.&lt;br&gt;
Too many books, far too little time, after all :)&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The second level of reading we will call Inspectional Reading.&lt;/p&gt;
&lt;p&gt;One way to describe this level of reading is to say that its aim is to get the most out of a book within a given time—usually a relatively short time, and always (by definition) too short a time to get out of the book everything that can be gotten.&lt;/p&gt;
&lt;p&gt;Still another name for this level might be skimming or pre-reading. However, we do not mean the kind of skimming that is characterized by casual or random browsing through a book. Inspectional reading is the art of &lt;strong&gt;skimming systematically.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When reading at this level, your aim is to examine the surface of the book, to learn everything that the surface alone can teach you. That is often a good deal.&lt;/p&gt;
&lt;p&gt;Whereas the question that is asked at the first level is “What does the sentence say?” the question typically asked at this level is “What is the book about?” That is a surface question; others of a similar nature are “What is the structure of the book?” or “What are its parts?”
Upon completing an inspectional reading of a book, no matter how short the time you had to do it in, you should also be able to answer the question, “What kind of book is it—a novel, a history, a scientific treatise?”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 class="relative group"&gt;Level 3: Analytical Reading
 &lt;div id="level-3-analytical-reading" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#level-3-analytical-reading" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;This is the level at what I want to read regularly.&lt;br&gt;
What I want to do, everytime I pick up a book to learn from and understand deeply.&lt;br&gt;
This is what I have set out to learn from this book.&lt;br&gt;
Francis Bacon once remarked that &lt;em&gt;&lt;strong&gt;“some books are to be tasted, others to be swallowed, and some few to be chewed and digested.”&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
I want to be able to digest the books I read!&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The third level of reading we will call Analytical Reading.&lt;/p&gt;
&lt;p&gt;Analytical reading is thorough reading, complete reading, or good reading—the best reading you can do. If inspectional reading is the best and most complete reading that is possible given a limited time, then analytical reading is the best and most complete reading that is possible given unlimited time.&lt;/p&gt;
&lt;p&gt;The analytical reader must ask many, and organized, questions of what he is reading.
[…] &lt;strong&gt;analytical reading is always intensely active.&lt;/strong&gt; On this level of reading, the reader grasps a book—the metaphor is apt—and works at it until the book becomes his own.&lt;/p&gt;
&lt;p&gt;We also want to stress that analytical reading is hardly ever necessary if your goal in reading is simply information or entertainment. &lt;strong&gt;Analytical reading is preeminently for the sake of understanding.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 class="relative group"&gt;Level 4: Syntopical Reading
 &lt;div id="level-4-syntopical-reading" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#level-4-syntopical-reading" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;This level is one, I really doubt I’ll ever do outside of work or research or learning.&lt;br&gt;
That is where I use it the most. And this level of learning is something I figured out on my own, while consulting. Tackling a specific problem in a niche domain, meant that I needed to figure out all the angles beforehand. Figuring what that world was like, and how did what I want fit into that world. Syntopical Reading is very very similar. And like Adler notes, &lt;em&gt;&lt;strong&gt;very demanding.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The fourth and highest level of reading we will call Syntopical Reading.&lt;/p&gt;
&lt;p&gt;Another name for this level might be comparative reading. When reading syntopically, the reader reads many books, not just one, and places them in relation to one another and to a subject about which they all revolve. But mere comparison of texts is not enough. Syntopical reading involves more. With the help of the books read, the syntopical reader is able to construct an analysis of the subject that &lt;strong&gt;may not be in any of the books.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It is the most complex and systematic type of reading of all. It makes very heavy demands on the reader, even if the materials he is reading are themselves relatively easy and unsophisticated.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subjectFeedback on post: How to Read a Book: 004, The Four Levels of Reading
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][3].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;br&gt;
Forward these posts and letters to your friends and get them to subscribe!&lt;br&gt;
P.P.S. Feed my &lt;a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_l_share" target="_blank" rel="noreferrer"&gt;insatiable reading habit.&lt;/a&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Ok, I say verbatim, but now everything is excerpted and heavily paraphrased and put in slightly out of order. You could even say, this is a Syntopical post!&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>I Need Two Copies of a Book Now</title><link>https://janusworx.com/reading/i-need-two-copies-of-a-book-now/</link><pubDate>Sun, 29 Jun 2025 10:37:50 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/i-need-two-copies-of-a-book-now/</guid><description>&lt;br&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/i-need-two-copies-of-a-book-moar-smol.jpg" alt="" /&gt;
 
 
 &lt;/figure&gt;
&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;via &lt;a href="https://knowyourmeme.com/photos/135226-moar" target="_blank" rel="noreferrer"&gt;Know Your Meme&lt;/a&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;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;'/&gt;

&lt;p&gt;My primary reading device is &lt;a href="https://janusworx.com/work/a-new-hole-hawg-the-kobo-elipsa-2e/" &gt;my Kobo&lt;/a&gt;.&lt;br&gt;
For the simple reason, that I will need to buy a whole new home, for my books otherwise. The &lt;a href="https://en.wikipedia.org/wiki/Antilibrary" target="_blank" rel="noreferrer"&gt;anti-library&lt;/a&gt; is just too large.&lt;/p&gt;
&lt;p&gt;But as I was reading, &lt;a href="https://janusworx.com/tags/how-to-read-a-book/" &gt;How to Read a Book&lt;/a&gt;, I realise I’ll probably need a copy on the Kobo as well as a physical copy in hand, for any book that I want to read in depth.&lt;br&gt;
If reading is effort, as the book suggests, then I might as well have the right tools for the right kind of effort.&lt;br&gt;
Rapidly scanning through, marking things up, jotting thoughts down, and all other assorted marginalia is very easy with a physical book. Looking words up in a dictionary, copying notes in and out, and searching are very easy with the Kobo.&lt;br&gt;
When it comes to writing my thoughts elsewhere or doing research, it is easy to scan through a physical book, find the relevant page, and then I am back in that mental space I was, that triggered the thought. This realisation; that books are spatial memory, is new to me (I might have been using it subconsciously all along). An e-reader cannot give me that.&lt;/p&gt;
&lt;p&gt;So I’m going to make the best of both worlds and use both!&lt;/p&gt;
&lt;br&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/how-to-read-a-book-mjb-copy.jpg" alt="" /&gt;
 
 
 &lt;/figure&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subjectFeedback on post: I Need Two Copies of a Book Now
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][3].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;br&gt;
Forward these posts and letters to your friends and get them to subscribe!&lt;br&gt;
P.P.S. Feed my &lt;a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_l_share" target="_blank" rel="noreferrer"&gt;insatiable reading habit.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>How to Read a Book: 003, The Four Basic Questions (A Reader Asks)</title><link>https://janusworx.com/reading/how-to-read-a-book-003/</link><pubDate>Sat, 28 Jun 2025 19:13:01 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/how-to-read-a-book-003/</guid><description>&lt;p&gt;&lt;br&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/how-to-read-a-book.jpg" alt="" /&gt;
 
 
 &lt;/figure&gt;&lt;/p&gt;
&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;image courtesy, &lt;a href="https://www.simonandschuster.com/books/How-to-Read-a-Book/Mortimer-J-Adler/9781476790152" target="_blank" rel="noreferrer"&gt;Simon &amp;amp; Schuster&lt;/a&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;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;'/&gt;


&lt;h2 class="relative group"&gt;The Four Basic Questions:
 &lt;div id="the-four-basic-questions" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-four-basic-questions" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;This is the basic idea, that permeates the entire book down to its bones and colours every piece of advice Adler offers.&lt;/p&gt;
&lt;p&gt;I’m quoting this verbatim, without any paraphrasing, because these questions are what I will be returning to time and again, in the coming days (and weeks and months and years.)&lt;/p&gt;
&lt;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;'/&gt;

&lt;p&gt;The one simple prescription for active reading.&lt;br&gt;
It is: &lt;em&gt;Ask questions while you read—questions that you yourself must try to answer in the course of reading.&lt;/em&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;What is the book about as a whole?&lt;/strong&gt;&lt;br&gt;
You must try to discover the leading theme of the book, and how the author develops this theme in an orderly way by subdividing it into its essential subordinate themes or topics.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;What is being said in detail, and how?&lt;/strong&gt;&lt;br&gt;
You must try to discover the main ideas, assertions, and arguments that constitute the author’s particular message.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Is the book true, in whole or part?&lt;/strong&gt;&lt;br&gt;
You cannot answer this question until you have answered the first two. You have to know what is being said before you can decide whether it is true or not. When you understand a book, however, you are obligated, if you are reading seriously, to make up your own mind. Knowing the author’s mind is not enough.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;What of it?&lt;/strong&gt;&lt;br&gt;
If the book has given you information, you must ask about its significance. Why does the author think it is important to know these things? Is it important to you to know them? And if the book has not only informed you, but also enlightened you, it is necessary to seek further enlightenment by asking what else follows, what is further implied or suggested.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subjectFeedback on post: How to Read a Book: 003, The Four Basic Questions (A Reader Asks)
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][3].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;br&gt;
Forward these posts and letters to your friends and get them to subscribe!&lt;br&gt;
P.P.S. Feed my &lt;a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_l_share" target="_blank" rel="noreferrer"&gt;insatiable reading habit.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>How to Read a Book: 002, A Few Thoughts on Books</title><link>https://janusworx.com/reading/how-to-read-a-book-002/</link><pubDate>Fri, 27 Jun 2025 20:22:08 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/how-to-read-a-book-002/</guid><description>&lt;p&gt;&lt;br&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/how-to-read-a-book.jpg" alt="" /&gt;
 
 
 &lt;/figure&gt;&lt;/p&gt;
&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;image courtesy, &lt;a href="https://www.simonandschuster.com/books/How-to-Read-a-Book/Mortimer-J-Adler/9781476790152" target="_blank" rel="noreferrer"&gt;Simon &amp;amp; Schuster&lt;/a&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;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;'/&gt;

&lt;p&gt;A few thoughts on books and how long it takes me to read them, as they relate to what I learned reading this book&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Reading for joy, is just that. Reading for joy! Nothing needs to come in the way of that.&lt;/li&gt;
&lt;li&gt;Books can take as long as they need to be read. &lt;em&gt;Comprehension&lt;/em&gt; is key. Not how many I finish.&lt;/li&gt;
&lt;li&gt;I was wondering how so many folks read so many books “better” faster than me. The book assures me that reading books analytically, reading ideas syntopically across a swathe of books is inherently slow. I cannot read everything that way. Nor should I want to obviously. The book needs to be worthy of that kind of time and attention. To quote Adler …&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;&lt;p&gt;A good book can teach you about the world and about yourself.&lt;br&gt;
You learn more than how to read better; you also learn more about life.&lt;br&gt;
You become wiser. Not just more knowledgeable—books that provide nothing but information can produce that result. But wiser, in the sense that you are more deeply aware of the great and enduring truths of human life.&lt;/p&gt;
&lt;/blockquote&gt;&lt;ol start="4"&gt;
&lt;li&gt;And I always worried about how I would go about reading all the great books there were, when there were so many? How would I get to them all? Adler assures me that such books are few and far between. And Having read thousands of books by now, I agree. A good book, a good &lt;a href="https://janusworx.com/lindy-books/" &gt;Lindy book&lt;/a&gt; is really hard to find. The last great expository / philosophical / non fiction book I read was &lt;a href="https://janusworx.com/reading/longform/antifragile/" &gt;Antifragile&lt;/a&gt; close to twelve years ago. The last great fiction book, luckily was Harrow in 2020. Great books don’t come by often.&lt;br&gt;
Here’s Adler again …&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;&lt;p&gt;… if the book belongs to the highest class—the very small number of inexhaustible books—you discover on returning that &lt;strong&gt;the book seems to have grown with you.&lt;/strong&gt; You see new things in it—whole sets of new things—that you did not see before. Your previous understanding of the book is not invalidated (assuming that you read it well the first time); it is just as true as it ever was, and in the same ways that it was true before. But now it is true in still other ways, too.&lt;/p&gt;
&lt;p&gt;How can a book grow as you grow? […] what you only now begin to realize is that the book was so far above you to begin with that it has remained above you, and probably always will remain so. Since it is a really good book—a great book, as we might say—it is accessible at different levels. Your impression of increased understanding on your previous reading was not false. The book truly lifted you then. But now, even though you have become wiser and more knowledgeable, it can lift you again. And it will go on doing this until you die.&lt;/p&gt;
&lt;p&gt;There are obviously not many books that can do this for any of us. Our estimate was that the number is considerably less than a hundred. But the number is &lt;strong&gt;even less than that for any given reader.&lt;/strong&gt; Human beings differ in many ways other than in the power of their minds. They have different tastes; different things appeal more to one person than to another. You may never feel about Newton the way you feel about Shakespeare, either because you may be able to read Newton so well that you do not have to read him again, or because mathematical systems of the world just do not have all that appeal to you. Or, if they do then Newton may be one of the handful of books that are great for you, and not Shakespeare.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You should seek out the few books that can have this value for you.&lt;/strong&gt; They are the books that will teach you the most, both about reading and about life. They are the books to which you will want to return over and over. They are the books that will help you to grow.&lt;/p&gt;
&lt;/blockquote&gt;&lt;ol start="5"&gt;
&lt;li&gt;And suddenly it isn’t so hard any more. The path I have now before me, is to go find &lt;em&gt;&lt;strong&gt;my small set of great books&lt;/strong&gt;&lt;/em&gt;. The books I can learn from and grow old with. Oh joy!&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To quote &lt;a href="https://www.youtube.com/watch?v=S8DE3zK0zws&amp;amp;t=170s" target="_blank" rel="noreferrer"&gt;Nux&lt;/a&gt;, &lt;em&gt;&lt;strong&gt;Oh, what a day! What a lovely day!&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subjectFeedback on post: How to Read a Book: 002, A Few Thoughts on Books
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][3].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;br&gt;
Forward these posts and letters to your friends and get them to subscribe!&lt;br&gt;
P.P.S. Feed my &lt;a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_l_share" target="_blank" rel="noreferrer"&gt;insatiable reading habit.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>How to Read a Book: 001, Begin!</title><link>https://janusworx.com/reading/how-to-read-a-book-001/</link><pubDate>Thu, 26 Jun 2025 19:25:58 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/how-to-read-a-book-001/</guid><description>&lt;p&gt;&lt;br&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/how-to-read-a-book.jpg" alt="" /&gt;
 
 
 &lt;/figure&gt;&lt;/p&gt;
&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;image courtesy, &lt;a href="https://www.simonandschuster.com/books/How-to-Read-a-Book/Mortimer-J-Adler/9781476790152" target="_blank" rel="noreferrer"&gt;Simon &amp;amp; Schuster&lt;/a&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;Why do I need to learn how to read? What has brought me to this?
 &lt;div id="why-do-i-need-to-learn-how-to-read-what-has-brought-me-to-this" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#why-do-i-need-to-learn-how-to-read-what-has-brought-me-to-this" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Some thoughts …&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I feel like, for all my reading, whenever I come across a great book, I don’t quite get as much out of it, as I ought to. (Anthony D’Mello, Tamsyn Muir and Nassim Taleb are a few who come to mind.)&lt;/li&gt;
&lt;li&gt;Most of my note taking has been intuitive. And then I struggle to draw insights. To add insult to injury, the struggle is &lt;em&gt;unique&lt;/em&gt; for each book. I need a framework, to get atleast 80% of the way there, predictably, every time.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 class="relative group"&gt;Why this book?
 &lt;div id="why-this-book" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#why-this-book" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Because I like it.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;br&gt;
I love the old-timey feel of the book. Yes, it is a product of its time and I really, desperately wish, they update it to become &lt;em&gt;a whole lot more inclusive&lt;/em&gt; when it comes to a great many things. Not the least being gender. Also faith.&lt;br&gt;
But for the actual lessons that it does try to teach; I resonate with the author’s voice.&lt;/p&gt;

&lt;h3 class="relative group"&gt;What’s the plan now? What do I hope will happen?
 &lt;div id="whats-the-plan-now-what-do-i-hope-will-happen" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#whats-the-plan-now-what-do-i-hope-will-happen" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Read it.&lt;br&gt;
Make notes.&lt;br&gt;
Write about it in tiny bits.&lt;br&gt;
Write down, thoughts, insight, stuff that strikes me, paragraphs from the book, quotes, and everything in between&lt;/p&gt;
&lt;p&gt;Let it take as long as it does.&lt;/p&gt;
&lt;p&gt;The biggest lesson, I took away from the book last time I read it, was that the intentional reading of a good book, takes time. I want to be able to do this with the books I like, so I’m getting the ball rolling with this one itself.&lt;/p&gt;
&lt;p&gt;The note I wrote to myself at the &lt;a href="https://janusworx.com/reading/2025/" &gt;beginning of the year&lt;/a&gt; was …&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Read less, write more notes. Abandon more books.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;By reading less, I meant I wanted to read good books slower and longer, which is what I hope I will do, once I get done reading &lt;em&gt;this&lt;/em&gt; book.&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subjectFeedback on post: How to Read a Book: 001, Begin!
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][3].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;br&gt;
Forward these posts and letters to your friends and get them to subscribe!&lt;br&gt;
P.P.S. Feed my &lt;a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_l_share" target="_blank" rel="noreferrer"&gt;insatiable reading habit.&lt;/a&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;“a rare phenomenon, a &lt;strong&gt;living&lt;/strong&gt; classic …” is how the &lt;a href="https://www.simonandschuster.com/books/How-to-Read-a-Book/Mortimer-J-Adler/9781476790152" target="_blank" rel="noreferrer"&gt;publisher&lt;/a&gt; refers to it&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Forgejo Workflow Action to Publish Hugo Blog</title><link>https://janusworx.com/work/forgejo-workflow-action-to-publish-hugo-blog/</link><pubDate>Mon, 09 Jun 2025 15:09:16 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/forgejo-workflow-action-to-publish-hugo-blog/</guid><description>
&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/common/forgejo-logo.svg" alt="" /&gt;
 
 
 &lt;/figure&gt;
&lt;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;'/&gt;

&lt;p&gt;I’d gotten this working earlier and wanted to post it up.&lt;br&gt;
And then promptly forgot about it.&lt;br&gt;
Until today that is, when I wanted to make changes to it.&lt;/p&gt;
&lt;p&gt;Here it is for posterity.&lt;br&gt;
The newest change is that the action now runs every six hours.&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;span class="lnt"&gt;37
&lt;/span&gt;&lt;span class="lnt"&gt;38
&lt;/span&gt;&lt;span class="lnt"&gt;39
&lt;/span&gt;&lt;span class="lnt"&gt;40
&lt;/span&gt;&lt;span class="lnt"&gt;41
&lt;/span&gt;&lt;span class="lnt"&gt;42
&lt;/span&gt;&lt;span class="lnt"&gt;43
&lt;/span&gt;&lt;span class="lnt"&gt;44
&lt;/span&gt;&lt;span class="lnt"&gt;45
&lt;/span&gt;&lt;span class="lnt"&gt;46
&lt;/span&gt;&lt;span class="lnt"&gt;47
&lt;/span&gt;&lt;span class="lnt"&gt;48
&lt;/span&gt;&lt;span class="lnt"&gt;49
&lt;/span&gt;&lt;span class="lnt"&gt;50
&lt;/span&gt;&lt;span class="lnt"&gt;51
&lt;/span&gt;&lt;span class="lnt"&gt;52
&lt;/span&gt;&lt;span class="lnt"&gt;53
&lt;/span&gt;&lt;span class="lnt"&gt;54
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Build and Deploy Janusworx website&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;schedule&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;cron&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;0 */6 * * *&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;workflow_dispatch&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;push&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;branches&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;main&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;jobs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;build-and-deploy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;runs-on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;intel&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# make sure there are runners tagged &amp;#34;intel&amp;#34; on your network or replace this with something of your own&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;HUGO_VERSION&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${{ vars.HUGO_VERSION }}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;steps&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Install wget &amp;amp; rsync&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;apt-get update &amp;amp;&amp;amp; apt-get install wget rsync -y&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Install Hugo&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="sd"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; &amp;amp;&amp;amp; dpkg -i ${{ runner.temp }}/hugo.deb&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Checkout the website repo&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;uses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;actions/checkout@v4&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;with&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;submodules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;recursive&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;fetch-depth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Build website with Hugo&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;HUGO_ENVIRONMENT&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;production&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;TZ&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Asia/Kolkata&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="sd"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; hugo \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; --gc \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; --minify
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; &lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Install SSH key&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="sd"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; mkdir -p ~/.ssh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; echo &amp;#34;${{ secrets.SSH_PRIVATE_KEY }}&amp;#34; &amp;gt; ~/.ssh/id_ed25519
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; chmod 600 ~/.ssh/id_ed25519
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; echo &amp;#34;${{ secrets.SSH_KNOWN_HOSTS }}&amp;#34; &amp;gt; ~/.ssh/known_hosts
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; chmod 644 ~/.ssh/known_hosts&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Deploy website with rsync&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;REMOTE_HOST&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${{ vars.REMOTE_HOST }}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;REMOTE_USER&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${{ vars.REMOTE_USER }}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;REMOTE_PATH&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${{ vars.REMOTE_PATH }}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="sd"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; rsync -avz --delete public/ $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Notes:&lt;br&gt;
It needs a few variables set, in the repo (repo-&amp;gt;Settings-&amp;gt;Actions-&amp;gt;Variables), which are the details I need (Hugo version, Remote Host IP, Remote path to copy the built output to, and the Remote user to use for SSH) to push via rsync to the host.&lt;br&gt;
Hugo version is in there, because Hugo breaks things all the time, so I upgrade cautiously.&lt;/p&gt;
&lt;p&gt;It also needs a couple of secrets, set in the repo (repo-&amp;gt;Settings-&amp;gt;Actions-&amp;gt;Secrets) to enable rsync to copy. (SSH_KNOWN_HOSTS and SSH_PRIVATE_KEY). Also best if this is a dedicated private key just for copying.
Running &lt;code&gt;ssh-keyscan &amp;quot;your-host-name-or-ip&amp;quot; &amp;gt; known_host_data.txt&lt;/code&gt; should dump the data you’d need for SSH_KNOWN_HOSTS&lt;/p&gt;
&lt;p&gt;With the changes I made today, the workflow can publish&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;on demand&lt;/li&gt;
&lt;li&gt;every 6 hours&lt;/li&gt;
&lt;li&gt;every time I commit to the repo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I added time based publishing, so that I could publish future dated posts as and when the time rolls around.&lt;br&gt;
With this, I think I’m done tinkering with my blog, with the exception of moving it out of my home network and out on to my VM, so that I can truly publish from anywhere. That is a big heft for me currently and a job for future Jason.&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subjectFeedback on post: Forgejo Workflow Action to Publish Hugo Blog
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][3].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;br&gt;
Forward these posts and letters to your friends and get them to subscribe!&lt;br&gt;
P.P.S. Feed my &lt;a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_l_share" target="_blank" rel="noreferrer"&gt;insatiable reading habit.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Math for English Majors, Ben Orlin</title><link>https://janusworx.com/reading/math-for-english-majors-ben-orlin/</link><pubDate>Tue, 25 Feb 2025 09:21:57 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/math-for-english-majors-ben-orlin/</guid><description>&lt;br&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/mfembo-cover.jpg" alt="cover of the book. purple/lavender background, with cartoon stick figure Shakespeare in the front proclaming the book is a human take on the universal language" /&gt;
 
 
 &lt;/figure&gt;
&lt;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;'/&gt;

&lt;p&gt;Ben Orlin, the modern Maths apologist, brings to us what I’d call his Magnum Opus, the modern &lt;a href="https://janusworx.com/reading/a-mathematicians-lament/" &gt;Mathematician’s Lament.&lt;/a&gt;&lt;br&gt;
Everytime, I read an &lt;a href="https://janusworx.com/tags/ben-orlin/" &gt;Orlin book&lt;/a&gt;, I always wish, I had teachers like him when I was young, so that I would not have had such crippling math-phobia for so much of my life.&lt;br&gt;
It should actually be called, &lt;em&gt;&lt;strong&gt;Maths for the Rest of Us.&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
It’s great! So great!&lt;/p&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;My highlights, from the book
 &lt;div id="my-highlights-from-the-book" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#my-highlights-from-the-book" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;blockquote&gt;&lt;p&gt;A mathematician is hardly a reasonable person. More like a feral philosopher or a logician gone rogue.&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;It’s a bit peculiar to say that I add 4 and 3 to create 7; 4 and 3 simply &lt;strong&gt;are&lt;/strong&gt; 7, irrespective of my efforts. When I multiply or divide or take a logarithm, the result equals whatever it equals, regardless of my labors. I do not, in a strict sense, change the numbers, but merely discover or reveal them. Operations act not upon the quantities themselves, but only upon our understandings of them.&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;In my childhood, back when money was made of metal and paper instead of software and lies, I learned that two quarters add up to 50 cents: 25 + 25 = 50. I loved knowing this&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;… the beauty of mathematical language lies in its unreality. Math lets us escape this world of crumbs and mud for a realm of rigorous abstractions. The purer the logic—that is, the further from physical reality—the deeper the truth. “As far as laws of mathematics refer to reality, they are not certain,” said Einstein, “and as far as they are certain, they do not refer to reality.”&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;I sometimes envision mathematics as a tower. It leads from the earthy crust of everyday experience (piles of cookies; buckets of water; half-dollar coins) up to the thin atmosphere of abstract concepts (Lie groups, whatever those are). There’s pleasure and power in climbing to the upper floors. But there’s an equal pleasure—and a different kind of power—in descending to the bottom. Down there, you can touch the foundations, poke at the joints where math attaches to the world, and fill your half-gallon bucket with a new kind of insight&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;Consider 2 + 3. If + is a verb, then who is the subject carrying out the addition? Neither 2 nor 3 performs any action; those nouns just sit there being nouns. &lt;strong&gt;You’re&lt;/strong&gt; the one who adds, but you’re not a part of mathematical speech&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;Such confusion is not limited to the youth. Adult textbook authors have been known to include gratuitous fighter jets and non sequitur cheetahs, as if the secret to math is picturing something, anything. But the hard part of math isn’t remembering what cats look like. It’s making sense of abstract ideas.&lt;/p&gt;
&lt;p&gt;The challenge of algebra is to visualize the invisible&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;“The point of doing algebra,” writes math teacher Paul Lockhart, “is… to move back and forth between several equivalent representations,depending on the situation at hand and depending on our taste. In this sense, all algebraic manipulation is psychological.”&lt;/p&gt;
&lt;p&gt;Old information, new formation&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;I like this rule because it’s rarely even taught. Mathematicians apply it automatically, the way fluent English speakers always say “a big ugly bath toy” and not “a bath ugly big toy.” In fact, as Mark Forsyth points out in The Elements of Eloquence, English adjectives are typically placed in a certain order: opinion, size, age, shape, color, origin, material, purpose. Hence, “a lovely little old rectangular green French silver whittling knife.&lt;/p&gt;
&lt;p&gt;Likewise, in math, numbers are typically multiplied in a certain order: numeral, radical, constant, variable. Hence, we write 3πxy&lt;sup&gt;2&lt;/sup&gt;z, and never (unless we’re trying to provoke someone) zy&lt;sup&gt;2&lt;/sup&gt;πx3&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;Toward the end of a sixth-grade lesson, a chipper young fellow named Kieran raised his hand. “I don’t really understand anything you’re saying,” he informed me. “But I can still get the right answer.” He beamed a patient smile.&lt;/p&gt;
&lt;p&gt;I stifled a sigh. “Which part can I help you with?”&lt;/p&gt;
&lt;p&gt;“Oh, I don’t need help,” he said. “It’s just that you were talking about this extra stuff. Like, the ideas behind it. I don’t, you know, do that.”&lt;/p&gt;
&lt;p&gt;I blinked. He blinked. A great silence passed between us.&lt;/p&gt;
&lt;p&gt;“Is that okay?” he concluded. “I mean, as long as I can get the right answer?”&lt;/p&gt;
&lt;p&gt;There it was, out in the open: the subtext of almost every lesson I had taught that year. Day after day, I tried to illuminate the logic behind the symbols. Day after day, my students politely ignored my prattle to focus on the symbols themselves. What made that afternoon stand out was that Kieran broke the fourth wall. He uttered the title of the film we were acting in.&lt;/p&gt;
&lt;p&gt;To do math, must you think about the ideas, or can you just focus on the symbols?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/mfembo-symbols-ideas.jpg" alt="" /&gt;
 
 
 &lt;/figure&gt;
&lt;blockquote&gt;&lt;p&gt;As David Hilbert quipped, “Mathematics is a game played according to certain simple rules with meaningless marks on paper.” That’s symbol pushing in a nutshell. Language divorced from meaning&lt;/p&gt;
&lt;p&gt;But a few weeks after Kieran’s query, I learned that not all mathematicians share my dim view of symbol pushing. I mentioned to my dad (a mathematician himself) that I had started writing an essay titled ”How to Avoid Thinking in Math Class.” Before I could say any more, he gave the project his stamp of approval. “Great,” he said. “I’ve always said that the point of math education is to help you not to think.”&lt;/p&gt;
&lt;p&gt;I was taken aback. No, I explained, the title was ironic. On the question of “Should we think?” I was firmly in favor.&lt;/p&gt;
&lt;p&gt;“Oh, yes, thinking is good,” he generously conceded. “But it’s too hard to do all the time.”&lt;/p&gt;
&lt;p&gt;He (and, indeed, Kieran) had a point. For example, it is an algebraic truth that (x + 1)(x − 1) is the same as x2 − 1. This fact boils down to a repeated application of the distributive property; as such, you can explain it entirely in terms of pile rearrangement. But trying to do so is like ascending a sheer cliff face.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/mfembo-si-climb-1.jpg" alt="" /&gt;
 
 
 &lt;/figure&gt;
&lt;blockquote&gt;&lt;p&gt;Quite a climb! Invigorating as an occasional workout, but unthinkable as a morning commute. This was exactly my dad’s point: Thinking is good. But it’s too hard to do all the time.&lt;/p&gt;
&lt;p&gt;“Operations of thought,” wrote the mathematician Alfred North Whitehead, “are like cavalry charges in battle—they are strictly limited in number, they require fresh horses, and must only be made in decisive moments.”&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;In this case, there is no need to send in the cavalry. The symbol pusher, thinking only about letters and parentheses, reaches the same summit in a few effortless strides&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/mfembo-si-climb-2.jpg" alt="" /&gt;
 
 
 &lt;/figure&gt;
&lt;blockquote&gt;&lt;p&gt;Can you imagine if English worked this way? An object’s name would indicate its physical size, so that a chihuahua (nine letters) would be three times the size of a cow (three letters). A food’s name would encode its recipe, so that a pizza would be a “DoughSauceCheeseBake.” Chemistry would be a tediously safe area of study, because we could run experiments simply by smushing together the names of various chemicals and seeing which ones spell “explosion.”&lt;/p&gt;
&lt;p&gt;Symbol pushing boils the laws of logic down to laws of grammar. The language becomes a scale model of reality. We can wrangle ideas simply by wrangling ink.&lt;/p&gt;
&lt;p&gt;So who was right, me or Kieran? The answer, of course, is both. To speak mathematics is to slip back and forth between two worlds, to inhabit two distinct frames of mind: the hard joy of thinking and the mindless trance of symbol pushing. Without the ink, the ideas are befuddling; but without the ideas, the ink means nothing. Learn the logic, learn it well, and then turn off your brain and let the symbols on the page dance to the silent music of the mind.&lt;/p&gt;
&lt;/blockquote&gt;&lt;br&gt;

&lt;blockquote&gt;&lt;p&gt;… notations often gain popularity precisely because they lend themselves to simple mechanical rules. You could say we choose the symbols for the express purpose of pushing them around. We can then generate right answers with no insight, no inspiration, no input other than elbow grease. Just turn the crank, and new knowledge pops out&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;When someone is too focused on details, we say they’re missing the forest for the trees. Mathematicians, if anything, are guilty of the opposite: missing the trees for the forest. Their habit is to inspect not objects themselves, but the objects’ properties. (Not the trees, but the number of them.) Then, having distilled these properties, they look at the properties’ properties. (Not the number, but its evenness or oddness.) And so on: the properties of the properties of the properties of the things. “Matter does not engage their attention,” Henri Poincaré once said of mathematicians. “They are interested in form alone.”&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Math for English Majors, Ben Orlin
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][3].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;br&gt;
Forward these posts and letters to your friends and get them to subscribe!&lt;br&gt;
P.P.S. Feed my &lt;a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share" target="_blank" rel="noreferrer"&gt;insatiable reading habit.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Here’s What is Stopping Us From Using Free Software</title><link>https://janusworx.com/work/heres-what-is-stopping-us-from-using-free-software/</link><pubDate>Tue, 18 Feb 2025 12:13:45 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/heres-what-is-stopping-us-from-using-free-software/</guid><description>&lt;p&gt;A couple of thoughts on &lt;a href="https://blog.schubisu.de/blog/2023/1/" target="_blank" rel="noreferrer"&gt;Robin’s post&lt;/a&gt;.&lt;br&gt;
Because I’ve spent a lifetime using both FOSS and proprietary software &lt;em&gt;&lt;strong&gt;and&lt;/strong&gt;&lt;/em&gt; more than two decades, advising and supporting people and businesses who do the same.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;To paraphrase Robin’s own point. Most people don’t care.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;a href="https://blog.schubisu.de/blog/2023/1/#:~:text=If%20it,fine" target="_blank" rel="noreferrer"&gt;If it runs Minetest, then it’s fine.&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;aka “If it does the thing, I want it to do, without too much cognitive overhead, I’ll use it.”&lt;br&gt;
Learning the skill, so I can do this task, is definitely not what the world at large wants to do. Nor do I imagine, do most folk have the time and the bandwidth.
iTunes (and Netflix) when they launched&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;, were the prime examples of this. Convenience and ease of use trumps Free. Also by that same token, VLC is probably one of the most installed and used video players in the world, not because they are FOSS, but because they make it easy to install and use.&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;
&lt;p&gt;Some people feel strongly about having control over what they do, over their data. Those folks were those I found easiest to move to Free software, because it aligned with what they wanted.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support costs are about the same.&lt;br&gt;
If a small business chooses to use free software, the cost of supporting it, if stuff breaks, (specially if it’s business critical&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;) probably is about the same as paying for the proprietary version. The fact that paying and getting it fixed benefits the world at large is lost on most. Or maybe it’s something, we Free Software evangelists could learn to to better. Robin promises his team, first-level support, but what happens when he goes on to better opportunities and is no longer around?&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So I agree with most of what Robin says, with just one caveat.&lt;/p&gt;
&lt;p&gt;People aren’t afraid of change. Atleast not the kind of change, Free Software poses.&lt;br&gt;
People just don’t have the time and the energy to deal with change, with everything else happening in their lives.&lt;br&gt;
Free software is just not as important to them, as it is to us. That is all.&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Here’s What is Stopping Us From Using Free Software
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][3].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;br&gt;
Forward these posts and letters to your friends and get them to subscribe!&lt;br&gt;
P.P.S. Feed my &lt;a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share" target="_blank" rel="noreferrer"&gt;insatiable reading habit.&lt;/a&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;And I’d venture to say, that’s perfectly ok.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;before they went to pot&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;rpm updates, bork my expensive garment printing machine, anyone?&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:4"&gt;
&lt;p&gt;And once again, that’s perfectly ok too.&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Blog Questions Challenge 2025</title><link>https://janusworx.com/work/blog-questions-challenge-2025/</link><pubDate>Tue, 04 Feb 2025 12:10:17 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/blog-questions-challenge-2025/</guid><description>&lt;p&gt;&lt;a href="https://blog.avas.space/bear-blog-challenge/" target="_blank" rel="noreferrer"&gt;Ava&lt;/a&gt; started this, &lt;a href="https://kevquirk.com/blog/blog-questions-challenge" target="_blank" rel="noreferrer"&gt;Kev&lt;/a&gt; modified this, and &lt;a href="https://saptaks.website/" target="_blank" rel="noreferrer"&gt;Saptak&lt;/a&gt; egged me on to write this. So here goes …&lt;br&gt;
&lt;br&gt;


&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/meta-homepage.png" alt="screenshot of my homepage" /&gt;
 
 
 &lt;/figure&gt;&lt;/p&gt;
&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;What the home page looks like in 2025&lt;/p&gt;
&lt;/figcaption&gt;
&lt;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;'/&gt;


&lt;h3 class="relative group"&gt;1. Why did you make the blog in the first place?
 &lt;div id="1-why-did-you-make-the-blog-in-the-first-place" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1-why-did-you-make-the-blog-in-the-first-place" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;I write for me mostly. Because writing &lt;a href="https://janusworx.com/personal/why-i-write/" &gt;helps me think&lt;/a&gt;. My thoughts are too scattered otherwise. I can’t not write. I’ve always written. Privately, publicly, there’s always been some place where I’ve jotted things down.&lt;/p&gt;

&lt;h3 class="relative group"&gt;2. What platform are you using to manage your blog and why did you choose it?
 &lt;div id="2-what-platform-are-you-using-to-manage-your-blog-and-why-did-you-choose-it" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2-what-platform-are-you-using-to-manage-your-blog-and-why-did-you-choose-it" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;I use &lt;a href="https://gohugo.io/" target="_blank" rel="noreferrer"&gt;Hugo&lt;/a&gt; to generate the site, which I host on my own Hetzner VM. I use it because I &lt;a href="https://janusworx.com/work/all-about-the-move-to-hugo/" &gt;outgrew&lt;/a&gt; my previous tool, &lt;a href="https://getnikola.com/blog/" target="_blank" rel="noreferrer"&gt;Nikola&lt;/a&gt;, which still holds a dear place in my heart. While Hugo is enormously complex, it is also deceptively simple enough to get started with. And it’s &lt;em&gt;fast&lt;/em&gt;. That’s what I love about it. It lets me write. It does not get in my way. It lets me preview what I’m doing with its live server. And it’s &lt;em&gt;unbelievably fast.&lt;/em&gt;&lt;/p&gt;

&lt;h3 class="relative group"&gt;3. Have you blogged on other platforms before?
 &lt;div id="3-have-you-blogged-on-other-platforms-before" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#3-have-you-blogged-on-other-platforms-before" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;I’ve been writing in some form or other since the late 90s. So … yea :)&lt;br&gt;
Livejournal, Blogger, self hosted Wordpress, wordpress.com, Posterous, Tumblr, self hosted Wordpress, self hosted Ghost, Nikola and now Hugo. It’s been quite a ride!&lt;/p&gt;

&lt;h3 class="relative group"&gt;4. How do you write your posts?
 &lt;div id="4-how-do-you-write-your-posts" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#4-how-do-you-write-your-posts" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;I write them in Emacs (in Markdown, using Markdown Mode) on my desktop, with &lt;a href="https://gohugo.io/commands/hugo_server/" target="_blank" rel="noreferrer"&gt;Hugo Server&lt;/a&gt; running alongside giving me a preview of what things will look like. Once I commit it to my self hosted Forgejo instance, an action publishes the site automatically&lt;/p&gt;

&lt;h3 class="relative group"&gt;5. When do you feel most inspired to write?
 &lt;div id="5-when-do-you-feel-most-inspired-to-write" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#5-when-do-you-feel-most-inspired-to-write" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;I never do. I write because it helps me function. And yet, it always feels like a chore.&lt;/p&gt;

&lt;h3 class="relative group"&gt;6. Do you publish immediately after writing or do you let it simmer a bit as a draft?
 &lt;div id="6-do-you-publish-immediately-after-writing-or-do-you-let-it-simmer-a-bit-as-a-draft" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#6-do-you-publish-immediately-after-writing-or-do-you-let-it-simmer-a-bit-as-a-draft" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;I always publish it immediately. I almost never write something that is deeply thought out, that needs to stand the test of time. It’s the &lt;em&gt;process&lt;/em&gt;, the &lt;em&gt;writing&lt;/em&gt;, the putting words out of my mind, through my fingers down to paper, that leads to the result, the thought, the opinion, the aha, the insight. So I’m never quite done. Which means if I ever wait for &lt;em&gt;finished&lt;/em&gt;, the post will never get published. The &lt;em&gt;moment&lt;/em&gt; I publish something, is invariably the moment something needs changing. So I just go back and edit it. I never notify folks about updating things on the first day. If I ever edit something much later than a day or two, then I do.&lt;/p&gt;

&lt;h3 class="relative group"&gt;7. Your favorite post on your blog?
 &lt;div id="7-your-favorite-post-on-your-blog" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#7-your-favorite-post-on-your-blog" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;None. All. They’re my thoughts, so depending on my mood, they’re either worthless or priceless gems!&lt;/p&gt;

&lt;h3 class="relative group"&gt;8. Any future plans for your blog? Maybe a redesign, changing the tag system, etc.?
 &lt;div id="8-any-future-plans-for-your-blog-maybe-a-redesign-changing-the-tag-system-etc" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#8-any-future-plans-for-your-blog-maybe-a-redesign-changing-the-tag-system-etc" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Not really. For all my wandering, I’ve only ever moved when my tools outgrew me&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;, or I outgrew my tools. For now, Hugo does all I ask of it, without getting in the way. The day that changes, will be the day I move.&lt;/p&gt;
&lt;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;'/&gt;

&lt;p&gt;I’ll ask &lt;a href="https://psaggu.com/" target="_blank" rel="noreferrer"&gt;Priyanka&lt;/a&gt;, &lt;a href="https://sreeram.xyz/" target="_blank" rel="noreferrer"&gt;Sreeram&lt;/a&gt;, &lt;a href="https://blogs.dgplug.org/sandeepk/" target="_blank" rel="noreferrer"&gt;Sandeep&lt;/a&gt;, &lt;a href="https://pradhvanbisht.in/" target="_blank" rel="noreferrer"&gt;Pradhvan&lt;/a&gt;, &lt;a href="https://rj722.com/" target="_blank" rel="noreferrer"&gt;Rahul&lt;/a&gt;, &lt;a href="https://geeksocket.in/" target="_blank" rel="noreferrer"&gt;Bhavin&lt;/a&gt;, &lt;a href="https://blog.lazkani.io/posts/what-2025-blog-question-challenge/" target="_blank" rel="noreferrer"&gt;Elia&lt;/a&gt;, &lt;a href="https://microblog.desipenguin.com/" target="_blank" rel="noreferrer"&gt;Mandar&lt;/a&gt;, &lt;a href="https://saptaks.website/" target="_blank" rel="noreferrer"&gt;Saptak&lt;/a&gt;, &lt;a href="https://farhaan.me/" target="_blank" rel="noreferrer"&gt;Farhaan&lt;/a&gt;, &lt;a href="https://blog.schubisu.de/blog/2025/1/" target="_blank" rel="noreferrer"&gt;Robin&lt;/a&gt; and &lt;a href="https://kushaldas.in/" target="_blank" rel="noreferrer"&gt;Kushal&lt;/a&gt; to share more, if they have the time, energy and the inclination.&lt;/p&gt;
&lt;p&gt;Folks, who’ve answered my call to arms! Go read their answers too!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.schubisu.de/blog/2025/1/" target="_blank" rel="noreferrer"&gt;Robin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.lazkani.io/posts/what-2025-blog-question-challenge/" target="_blank" rel="noreferrer"&gt;Elia&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Blog Questions Challenge 2025
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][3].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;br&gt;
Forward these posts and letters to your friends and get them to subscribe!&lt;br&gt;
P.P.S. Feed my &lt;a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share" target="_blank" rel="noreferrer"&gt;insatiable reading habit.&lt;/a&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Wordpress.com too restrictive, Ghost stopped serving my specific needs etc.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>On Neil Gaiman</title><link>https://janusworx.com/reading/on-gaiman/</link><pubDate>Mon, 03 Feb 2025 13:48:39 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/reading/on-gaiman/</guid><description>&lt;p&gt;Considering how much I’ve quoted Neil Gaiman (&lt;a href="https://janusworx.com/personal/i-wish-you-warmth/" &gt;here&lt;/a&gt;, &lt;a href="https://janusworx.com/personal/the-mushroom-hunters/" &gt;here&lt;/a&gt;, &lt;a href="https://janusworx.com/personal/write-with-respect-and-interest/" &gt;here&lt;/a&gt;, &lt;a href="https://janusworx.com/personal/on-being-neil-gaiman/" &gt;here&lt;/a&gt;, &lt;a href="https://janusworx.com/personal/gaiman-on-writing/" &gt;here&lt;/a&gt; and many other places on the blog) and how much his stories have influenced me, I feel a bit obligated to put this personal statement out.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;a href="https://www.vulture.com/article/neil-gaiman-allegations-controversy-amanda-palmer-sandman-madoc.html" target="_blank" rel="noreferrer"&gt;What he did was really, really wrong! Horrifyingly wrong!&lt;/a&gt;&lt;br&gt;
The girls, the women, were wronged. Grossly so. Often violently so.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Never meet your heroes and idols with feet of clay and all that.&lt;/p&gt;
&lt;p&gt;So I’ve given away (or deleted) all my Gaiman books, save two. My collected editions of Sandman. And my signed copy of What you Need to Be Warm.&lt;br&gt;
While it is true that Gaiman shot to stardom with Sandman, that was not the reason I bought this collected edition. I bought it for the young boy, who would scramble the lanes of Matunga and Fort, looking for more erudite comics after reading Moore’s V for Vendetta and Watchmen. Sandman was something I discovered on my own and enjoyed so much.&lt;br&gt;
Besides it was never about the writing at that stage. It was the stories. From all over the world and across cultures. That he’d reimagine for Sandman. (Ramadan, A Midsummer Night’s Dream, Thermidor, The Dream Hunters … ) And even more importantly it was the pictures, the drawings, the gorgeous art. (Yoshitaka Amano, Dave McKean, Todd Klein, and all the others) So Sandman stays. And with What You Need to Be Warm, the money went to a smol shop and to a good cause both. So I don’t feel bad owning it.&lt;/p&gt;
&lt;p&gt;“Man’s not dead while his name is still spoken” — &lt;em&gt;Terry Pratchett&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;And so this is the last, I speak your name. You’re dead to me.&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: On Neil Gaiman
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][3].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;br&gt;
Forward these posts and letters to your friends and get them to subscribe!&lt;br&gt;
P.P.S. Feed my &lt;a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share" target="_blank" rel="noreferrer"&gt;insatiable reading habit.&lt;/a&gt;&lt;/p&gt;</description></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><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/hack-hugo-post-metadata-with-python/</guid><description>&lt;p&gt;&lt;a href="https://janusworx.com/work/some-site-housekeeping-new-sections-and-rss-feeds/" &gt;A while back&lt;/a&gt;, I rejigged the sections on my site to better reflect how I think and write.&lt;br&gt;
Which meant, all the urls, on all my posts changed, since they now used the new category as a slug, instead of ye old &lt;code&gt;/blog&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For e.g. &lt;a href="https://janusworx.com/blog/using-hugo-variables-to-help-with-mailto-links-in-hugo/" target="_blank" rel="noreferrer"&gt;https://janusworx.com/blog/using-hugo-variables-to-help-with-mailto-links-in-hugo/&lt;/a&gt; …&lt;br&gt;
was now at, &lt;a href="https://janusworx.com/work/using-hugo-variables-to-help-with-mailto-links-in-hugo/" target="_blank" rel="noreferrer"&gt;https://janusworx.com/work/using-hugo-variables-to-help-with-mailto-links-in-hugo/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After searching a bit, I found that Hugo supported &lt;a href="https://gohugo.io/content-management/urls/#aliases" target="_blank" rel="noreferrer"&gt;aliases&lt;/a&gt;. For me, it would redirect the original &lt;code&gt;/blog&lt;/code&gt; path url to its new location&lt;br&gt;
Ass I had to do, was add an &lt;code&gt;aliases: [&amp;quot;/blog/old-post-slug&amp;quot;]&lt;/code&gt; line to each post’s metadata.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;br&gt;
Line 4 in the snippet below shows, what I added to fix the post above.&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Using Hugo Variables to Help With Mailto Links in Hugo&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ld"&gt;2024-05-30T18:17:35&lt;/span&gt;&lt;span class="m"&gt;+05&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;aliases&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;/blog/using-hugo-variables-to-help-with-mailto-links-in-hugo&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;categories&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;work&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;tags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="l"&gt;100WordHabit, Dgplug, Hugo]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;summary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Shortcodes! Hugo Variables in Shortcodes!&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;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;'/&gt;

&lt;p&gt;I did &lt;em&gt;&lt;strong&gt;not&lt;/strong&gt;&lt;/em&gt; want to do this by hand for 800+ posts.&lt;br&gt;
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 &lt;code&gt;/blog&lt;/code&gt; to &lt;code&gt;/work&lt;/code&gt; or from &lt;code&gt;/blog&lt;/code&gt; to &lt;code&gt;/personal&lt;/code&gt;), 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.&lt;br&gt;
So I did.&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;pathlib&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Path&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;INPUT_FOLDER&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;old-posts-folder&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;OUTPUT_FOLDER&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;modified-posts-folder&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;each_file&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;INPUT_FOLDER&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iterdir&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;each_file&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;r&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;file_to_read&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;alias_derived_from_file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;each_file&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stem&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;contents_as_list&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;file_to_read&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;readlines&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;contents_as_list&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;insert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;aliases: [&lt;/span&gt;&lt;span class="se"&gt;\&amp;#34;&lt;/span&gt;&lt;span class="s2"&gt;/blog/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;alias_derived_from_file&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\&amp;#34;&lt;/span&gt;&lt;span class="s2"&gt;]&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;OUTPUT_FOLDER&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;each_file&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;w+&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;file_to_write&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;file_to_write&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;writelines&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;contents_as_list&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;br&gt;

It takes all the posts from my old folder, inserts the alias line and puts them into a new folder.&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; 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.&lt;/p&gt;
&lt;p&gt;I ran it, published the site and then went to check on the old urls with bated breath.&lt;br&gt;
Hurrah, it all worked :)&lt;/p&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Hack Hugo Post Metadata With Python
%22" &gt;feedback at this domain&lt;/a&gt; or [continue the discourse here][3].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;br&gt;
Forward these posts and letters to your friends and get them to subscribe!&lt;br&gt;
P.P.S. Feed my &lt;a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share" target="_blank" rel="noreferrer"&gt;insatiable reading habit.&lt;/a&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;it’s a list, so I can add more aliases if I want to&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;no sense in botching up my originals :)&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></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><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/work/tmux-start-session-maximized-with-three-panes/</guid><description>&lt;p&gt;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.&lt;br&gt;
And it still irks me that I have to …&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Launch Terminal&lt;/li&gt;
&lt;li&gt;Launch Tmux&lt;/li&gt;
&lt;li&gt;Split it into three windows err … panes.&lt;/li&gt;
&lt;li&gt;Go to the top left pane and launch Hugo server&lt;/li&gt;
&lt;li&gt;Switch to the right pane and then launch Emacs with whatever new post I want to write today.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So &lt;em&gt;of course&lt;/em&gt;, a &lt;a href="https://en.wikipedia.org/wiki/Rube_Goldberg" target="_blank" rel="noreferrer"&gt;Rube Goldberg-esque&lt;/a&gt;, tiny bash-pipey monster took form.
It now resides, chained to an alias, &lt;code&gt;hssx&lt;/code&gt;&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; in my &lt;code&gt;.bash_aliases&lt;/code&gt; file&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;alias&lt;/span&gt; &lt;span class="nv"&gt;hssx&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;cd /path/to/my/hugo/folder &amp;amp;&amp;amp; \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;xdotool windowsize $(xdotool getactivewindow) 100% 100% &amp;amp;&amp;amp; \
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;tmux new-session \; split-window -h \; select-pane -l \; split-window -v \; select-pane -U \; send-keys &amp;#34;hugo serve&amp;#34; C-m \; select-pane -R&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;The first line switches to my hugo folder&lt;/li&gt;
&lt;li&gt;The second calls &lt;code&gt;xdotool&lt;/code&gt; and maximises the terminal window&lt;/li&gt;
&lt;li&gt;And the last line is a series of instructions to the tmux command. I’ve split it below for readability.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tmux new-session \; #Tmux start a new session
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;split-window -h \; # Split the window into two vertical panes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;select-pane -l \; # Switch to the left pane
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;split-window -v \; # Split that into two horizontal panes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;select-pane -U \; # Select the upper pane
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;send-keys &amp;#34;hugo serve&amp;#34; C-m \; # Type in `hugo serve` followed by Enter
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;select-pane -R # Select the right pane&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;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;'/&gt;

&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;And boom!&lt;/p&gt;
&lt;/figcaption&gt;
&lt;p&gt;&lt;a href="https://janusworx.com/images/2025/tmux-layout.png" &gt;
&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/2025/tmux-layout.png" alt="bash terminal showing a tmux window split into three panes" /&gt;
 
 
 &lt;/figure&gt;&lt;/a&gt;&lt;/p&gt;
&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;Click pic for a larger version&lt;/p&gt;
&lt;/figcaption&gt;
&lt;p&gt;&lt;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;'/&gt;

Feedback on this post?&lt;br&gt;
Mail me at &lt;a href="mailto:feebdback@janusworx.com?subject=%22Feedback on post: Tmux Start Session Maximized With Three Panes
%22" &gt;feedback at this domain&lt;/a&gt; &lt;em&gt;or&lt;/em&gt; [continue the discourse here][3].
&lt;br&gt;

&lt;br&gt;

P.S. Subscribe to my &lt;a href="https://janusworx.com/subscribe/" target="_blank" rel="noreferrer"&gt;mailing list!&lt;/a&gt;&lt;br&gt;
Forward these posts and letters to your friends and get them to subscribe!&lt;br&gt;
P.P.S. Feed my &lt;a href="https://www.amazon.in/hz/wishlist/ls/2QAUKHHAMOOVS?ref_=wl_share" target="_blank" rel="noreferrer"&gt;insatiable reading habit.&lt;/a&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;&lt;code&gt;hugo start session&lt;/code&gt; and x just because all my aliases have ended with x for years and years&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item></channel></rss>