<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Janusworx</title><link>https://janusworx.com/</link><description>Recent content 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/index.xml" rel="self" type="application/rss+xml"/><item><title>Fantastic KEPs and Where to Find Them: A Guide to Kubernetes Enhancements!</title><link>https://janusworx.com/talks/kubecon-in-2024-fantastic-keps/</link><pubDate>Tue, 17 Dec 2024 05:30:00 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/talks/kubecon-in-2024-fantastic-keps/</guid><description>&lt;p&gt;&lt;br&gt;

Venue: &lt;em&gt;&lt;a href="https://kccncind2024.sched.com/event/1mVS3/fantastic-keps-and-where-to-find-them-a-guide-to-kubernetes-enhancements-priyanka-saggu-suse-mario-jason-braganza-janusworx" target="_blank" rel="noreferrer"&gt;KubeCon + CloudNativeCon India 2024&lt;/a&gt;&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;iframe width="720" height="405" src="https://www.youtube-nocookie.com/embed/O7G8Y5O15Ag?si=usQdNQ06mlRa3OtD" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen&gt;&lt;/iframe&gt;
&lt;br&gt;

&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;&lt;a href="https://janusworx.com/docs/KUIN-enhancements-2024-handout-slides.pdf" &gt;Slides&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;
</description></item><item><title>Peribolos: GitHub Management Amidst Growth in Kubernetes Project!</title><link>https://janusworx.com/talks/kubecon-eu-2024-peribolos/</link><pubDate>Fri, 05 Apr 2024 05:30:00 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/talks/kubecon-eu-2024-peribolos/</guid><description>&lt;p&gt;&lt;br&gt;

Venue: &lt;em&gt;&lt;a href="https://kcseu2024.sched.com/event/1aOpr" target="_blank" rel="noreferrer"&gt;KubeCon + CloudNativeCon Europe 2024&lt;/a&gt;&lt;/em&gt;,&lt;br&gt;
&lt;em&gt;(Kubernetes Contributor Summit Europe 2024)&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;iframe width="720" height="405" src="https://www.youtube-nocookie.com/embed/NQHwWEB5XzE?si=iQK60qNFiGmBFyuK" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen&gt;&lt;/iframe&gt;
&lt;br&gt;

&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;&lt;a href="https://static.sched.com/hosted_files/kcseu2024/04/KCSEU24-PS-MJB-Peribolos.pdf" target="_blank" rel="noreferrer"&gt;Slides&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;
</description></item><item><title>Prow Jobs: Day 2 Aspects and How to Navigate, Read &amp; Write Them</title><link>https://janusworx.com/talks/kubecon-eu-2023-prow-jobs/</link><pubDate>Wed, 19 Apr 2023 16:25:00 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/talks/kubecon-eu-2023-prow-jobs/</guid><description>&lt;p&gt;&lt;br&gt;

Venue: &lt;em&gt;&lt;a href="https://kccnceu2023.sched.com/event/1HyYE" target="_blank" rel="noreferrer"&gt;KubeCon + CloudNativeCon Europe 2023&lt;/a&gt;&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;iframe width="720" height="405" src="https://www.youtube-nocookie.com/embed/gKKfXTZd7VU?si=sASnk39QYnaZz1R1" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen&gt;&lt;/iframe&gt;
&lt;br&gt;

&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;&lt;a href="https://static.sched.com/hosted_files/kccnceu2023/6d/kube-eu-prow-jobs-day2-sched-pdf.pdf" target="_blank" rel="noreferrer"&gt;Slides&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;
</description></item><item><title>Efficient Kubernetes E2E Testing: Unleash the Power of Prow</title><link>https://janusworx.com/talks/kubecon-in-2023-e2e/</link><pubDate>Fri, 08 Dec 2023 14:40:00 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/talks/kubecon-in-2023-e2e/</guid><description>&lt;p&gt;&lt;br&gt;

Venue: &lt;em&gt;&lt;a href="https://kubedayindia2023.sched.com/event/1T743" target="_blank" rel="noreferrer"&gt;KubeDay India 2023&lt;/a&gt;&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;iframe width="720" height="405" src="https://www.youtube-nocookie.com/embed/NsJGwtj6PcQ?si=TO0doLbFldPeIHX1" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen&gt;&lt;/iframe&gt;
&lt;br&gt;

&lt;figcaption style="font-style: italic; text-align: center; font-size: 85%; color: var(--secondary)"&gt;
&lt;p&gt;&lt;a href="https://static.sched.com/hosted_files/kubedayindia2023/4e/kd-blr-final.pdf" target="_blank" rel="noreferrer"&gt;Slides&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;
</description></item><item><title>Lindy Books</title><link>https://janusworx.com/lindy-books/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/lindy-books/</guid><description>&lt;br/&gt; 

&lt;figure&gt;
 &lt;img class="my-0 rounded-md" src="https://janusworx.com/images/reread-liniers.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://twitter.com/linierscartoon/status/1397678865032622082/photo/1" target="_blank" rel="noreferrer"&gt;Ricardo Siri&lt;/a&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;hr style="margin-left: auto; margin-right: auto;margin-bottom: 40px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;" /&gt; 
&lt;p&gt;Yea, Lindy. From the term popularised in Taleb’s &lt;a href="https://janusworx.com/reading/longform/antifragile/what-i-learnt-from-antifragile-iv/" target="_blank" rel="noreferrer"&gt;Antifragile&lt;/a&gt;.&lt;br&gt;
That is how most of the folks I learn from, read.&lt;/p&gt;
&lt;p&gt;Shane Parrish uses it as a &lt;a href="https://fs.blog/2013/08/choose-your-next-book/" target="_blank" rel="noreferrer"&gt;guide to choose a book&lt;/a&gt;.&lt;br&gt;
As do the readers of his blog at &lt;a href="https://fs.blog/2014/10/the-most-page-for-page-wisdom/" target="_blank" rel="noreferrer"&gt;Farnam Street&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Vishal Khandelwal writes about it on &lt;a href="https://www.safalniveshak.com/latticework-mental-models-lindy-effect/" target="_blank" rel="noreferrer"&gt;his awesome blog&lt;/a&gt;.&lt;br&gt;
And also uses it as &lt;a href="https://www.safalniveshak.com/guide-to-reading-for-investors/" target="_blank" rel="noreferrer"&gt;a guide to reading for investors&lt;/a&gt;.&lt;/p&gt;
&lt;hr style="margin-left: auto; margin-right: auto;margin-bottom: 40px; 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/02-reading-spectrum-safal-niveshak.jpg" alt="" /&gt;
 
 
 &lt;/figure&gt;
&lt;hr style="margin-left: auto; margin-right: auto;margin-bottom: 40px; width:100px; border: none; background-color:rgb(238, 238, 238); color: rgb(238, 238, 238); height: 1px;" /&gt;
&lt;p&gt;So these, are &lt;em&gt;my&lt;/em&gt; Lindy books.&lt;br&gt;
The ones I cherish and have read ragged and have gifted and own multiple formats of.&lt;br&gt;
The ones I reread &lt;em&gt;every, single, year&lt;/em&gt;.&lt;/p&gt;
&lt;div class="book-list"&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://janusworx.com/blog/hats-boas-the-little-prince-has-them-all/" target="_blank" rel="noreferrer"&gt;The Little Prince,&lt;/a&gt; Antoine de Saint-Exupéry&lt;/li&gt;
&lt;li&gt;The Song of the Bird, Anthony de Mello&lt;/li&gt;
&lt;li&gt;Meditations, Marcus Aurelius&lt;/li&gt;
&lt;li&gt;The Count of Monte Cristo, Alexandre Dumas&lt;/li&gt;
&lt;li&gt;&lt;a href="https://janusworx.com/reading/longform/antifragile/" target="_blank" rel="noreferrer"&gt;Antifragile: Things That Gain from Disorder, Nassim Nicholas Taleb&lt;/a&gt; (one of the few books that changed my life … and made me fall in love with reading all over again)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://janusworx.com/blog/atomic-habits/" target="_blank" rel="noreferrer"&gt;Atomic Habits,&lt;/a&gt; James Clear&lt;/li&gt;
&lt;li&gt;So Good They Can’t Ignore You, Cal Newport&lt;/li&gt;
&lt;li&gt;Deep Work: Rules for Focused Success in a Distracted World, Cal Newport&lt;/li&gt;
&lt;li&gt;Bird by Bird, Anne Lamott&lt;/li&gt;
&lt;li&gt;&lt;a href="https://janusworx.com/blog/brave-enough/" target="_blank" rel="noreferrer"&gt;Brave Enough&lt;/a&gt;, Cheryl Strayed&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><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>2026-07-23 Notes</title><link>https://janusworx.com/nm/2026-07-23/</link><pubDate>Thu, 23 Jul 2026 17:53:16 +0530</pubDate><author>feedback@janusworx.com (Mario Jason Braganza)</author><guid>https://janusworx.com/nm/2026-07-23/</guid><description>&lt;p&gt;Just a test to see if this appears in the general feed.&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: 2026-07-23 Notes
%22" &gt;feedback at this domain&lt;/a&gt;.&lt;/p&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></channel></rss>