<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:planet="http://planet.intertwingly.net/" xmlns:indexing="urn:atom-extension:indexing" indexing:index="no"><access:restriction xmlns:access="http://www.bloglines.com/about/specs/fac-1.0" relationship="deny"/>
  <title>Planet FSCI</title>
  <updated>2026-09-06T18:31:04Z</updated>
  <generator uri="http://intertwingly.net/code/venus/">Venus</generator>
  <author>
    <name>Free Software Community of India</name>
    <email>admin@fsci.in</email>
  </author>
  <id>https://planet.fsci.in/atom.xml</id>
  <link href="https://planet.fsci.in/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="https://planet.fsci.in/" rel="alternate"/>

  <entry xml:lang="en-US">
    <id>https://thejeshgn.com/?p=39746</id>
    <link href="https://thejeshgn.com/2026/09/05/lloading-indian-maps-garmin-forerunner-965/" rel="alternate" type="text/html"/>
    <title>Loading Indian Maps on a Garmin Forerunner 965</title>
    <summary>The primary reason I bought this watch was the ability to display and navigate using proper offline maps. Garmin doesn’t have maps for India. But the OpenStreetMaps community has maps that can be loaded into Garmin. There are many community-built web services, such as Thukke’s OSM Downloads and Userbeam, that provide Indian maps...</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p class="wp-block-paragraph">The primary reason I bought this watch was the ability to display and navigate using proper offline maps. Garmin doesn’t have maps for India. But the <a href="https://wiki.openstreetmap.org/wiki/OSM_Map_On_Garmin/Download" rel="noreferrer noopener" target="_blank">OpenStreetMaps</a> community has maps that can be loaded into Garmin. There are many community-built web services, such as <a href="https://www.thkukuk.de/osm/" rel="noreferrer noopener" target="_blank">Thukke’s OSM Downloads</a> and <a href="https://www.userbeam.de/osm/maps/asia/india/" rel="noreferrer noopener" target="_blank">Userbeam</a>, that provide Indian maps for use on Garmin devices, including routing. I used one by run by <a href="https://garmin.bbbike.org/" rel="noreferrer noopener" target="_blank">BBBike</a>. It creates a map of the area you choose from <a href="https://wiki.openstreetmap.org/wiki/Planet.osm">PlanetOSM</a>‘s extracts and delivers it in the format you want.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img alt="Offline Maps on Garmin Forerunner 965." class="wp-image-39722" height="768" src="https://thejeshgn.com/wp-content/uploads/2026/08/wp-17881052988843639715114615992310-1024x768.jpg" width="1024"/><figcaption class="wp-element-caption">Offline Maps on Garmin Forerunner 965.</figcaption></figure>
</div>


<h4 class="wp-block-heading">Download</h4>



<ol class="wp-block-list">
<li>Go to <a href="https://garmin.bbbike.org/" rel="noreferrer noopener" target="_blank">BBBikes Garmin Page</a></li>



<li>Choose the format <strong>Garmin OSM (UTF-8)</strong>. All modern Garmin devices can use UTF-8.</li>



<li>Select the area you want (bbox)</li>



<li>Click on Extract</li>



<li>Once it’s ready, you will get an email.</li>



<li>You can also check the <a href="https://download1.bbbike.org/osm/extract/" rel="noreferrer noopener" target="_blank">progress on the status page</a> and download it from there.</li>



<li>Extract the zip file to get <strong>.img</strong> file</li>
</ol>



<h4 class="wp-block-heading">Load</h4>



<ol class="wp-block-list">
<li>Plug into Ubuntu with USB; it should appear as mass storage. </li>



<li>It’s in the Garmin Connect App; On the top right, click on the watch. Go to System &gt; USB Mode; set it to Media Transfer (MTP). Reattach and check.</li>



<li>In my case (Forerunner 965), I had to block the `garmin_gps` kernel module from loading. <a href="https://wiki.openstreetmap.org/wiki/USB_Garmin_on_GNU/Linux" rel="noreferrer noopener" target="_blank">You can try that too</a>.</li>



<li>Once that is done. Once you connect, the watch will ask for your permission to connect as mass storage</li>



<li>Say yes</li>



<li>It should appear as mass storage</li>



<li>Go to /Garmin/</li>



<li>Paste the downloaded <strong>.img</strong> file</li>



<li>Safely unmount the Garmin</li>



<li>Now go to the watch and go to Maps Manager</li>



<li>Your map file should be there</li>



<li>Open it and see</li>
</ol>



<hr class="wp-block-separator has-text-color has-vivid-purple-color has-alpha-channel-opacity has-vivid-purple-background-color has-background is-style-dots"/>



<div class="wp-block-columns has-background is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"/>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p class="wp-block-paragraph"/>



<p class="wp-block-paragraph">You can read this blog using <a href="https://feeds.thejeshgn.com/thejeshgn" rel="noreferrer noopener" target="_blank">RSS Feed</a>. But if you are the person who loves getting emails, then you can join my readers by <a href="https://thejeshgn.com/subscribe/" rel="noreferrer noopener" target="_blank">signing</a> up.</p>


<div class="wp-block-jetpack-subscriptions__supports-newline wp-block-jetpack-subscriptions__show-subs wp-block-jetpack-subscriptions">
		<div>
			<div>
				<div>
					<p style="width: 25%;">
						<a href="https://thejeshgn.com/?post_type=post&amp;p=39746">Subscribe</a>
					</p>
				</div>
			</div>
		</div>
	</div></div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"/>
</div>



<p class="wp-block-paragraph"> </p></div>
    </content>
    <updated>2026-09-05T05:04:17Z</updated>
    <published>2026-09-05T05:04:17Z</published>
    <category term="Technology"/>
    <category term="Travel"/>
    <category term="Free and Open Source"/>
    <category term="Garmin"/>
    <category term="OpenStreetMap"/>
    <category term="Travel Gadgets"/>
    <author>
      <name>Thejesh GN</name>
    </author>
    <source>
      <id>https://thejeshgn.com</id>
      <logo>https://thejeshgn.com/wp-content/uploads/2015/08/cropped-thejeshgn_icon1-150x150.png</logo>
      <link href="https://thejeshgn.com/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://thejeshgn.com" rel="alternate" type="text/html"/>
      <subtitle>A container for all my views with excerpts from technology, travel, films, books, kannada, friends and other interests. I am Thejesh GN, friends call me Thej.</subtitle>
      <title>Thejesh GN</title>
      <updated>2026-09-05T05:07:38Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://thejeshgn.com/?p=39744</id>
    <link href="https://thejeshgn.com/2026/09/04/weekly-notes-36-2026/" rel="alternate" type="text/html"/>
    <title>Weekly Notes 36/2026</title>
    <summary>It’s been a good week and a busy one too. I have started contributing to Pucar as a technologist. I will blog more once I settle down. It’s been a busy week, and it looks like September is going to be a busy month. Hopefully I will continue with my physical activities.</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p class="wp-block-paragraph">It’s been a good week and a busy one too. I have started contributing to <a href="https://pucar.org/" rel="noreferrer noopener" target="_blank">Pucar</a> as a technologist. I will blog more once I settle down. It’s been a busy week, and it looks like September is going to be a busy month. Hopefully I will continue with my physical activities.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img alt="I am so happy that I can see maps on my wrist." class="wp-image-39721" height="768" src="https://thejeshgn.com/wp-content/uploads/2026/08/wp-17881052037338330002204274028893-1024x768.jpg" width="1024"/><figcaption class="wp-element-caption">I am so happy that I can see offline maps on my wrist.</figcaption></figure>
</div>


<ul class="wp-block-list">
<li>I played once this week. I was so involved in the game that I hit my face with the racket while trying to pull the ball, resulting in bloody and swollen lips. So I only did one session of P.T and one run this week.</li>



<li>Uma was also down with a fever this week. It was a bit scary as there were <a href="https://www.thehindu.com/news/national/karnataka/spurt-in-influenza-like-illness-among-children-in-bengaluru-h1n1-cases-reported/article71360971.ece" rel="noreferrer noopener" target="_blank">H1N1 cases in the neighborhood</a>. Thankfully, it was just a normal fever.</li>



<li>India’s GDP figures are out. Forget what the government says; think about the effect it has on your earnings. Has it increased? Has your buying power increased? What about your buying power in dollar terms? We do buy a lot of things directly or indirectly in dollars. For most people, these questions matter far more than the GDP growth rate, and I doubt many are noticing meaningful improvement. I feel it’s gone the other way: inflation is so high that growth doesn’t matter at all.</li>



<li>If you have any school-going kids or know any, point them to the 2nd edition of the <a href="https://www.iiacdfoundation.org/event/reclaimconstitution-quiz-3/register" rel="noreferrer noopener" target="_blank">#ReclaimConstitution Quiz</a>. It’s open now.</li>



<li><a href="https://github.com/cot-intelligence/cot/tree/main" rel="noreferrer noopener" target="_blank">Cot</a> is a Self-hosted observability platform for autonomous systems. It runs in a single Docker container locally and hooks into your agents to log. <a href="https://swarmllm.ai" rel="noreferrer noopener" target="_blank">SwarmLLM</a> is a way to combine all the hardware on the network in a P2P network to run inferences. Nothing to install, and everything runs in the browser. It is quite an interesting experiment. It’s not FOSS. <a href="https://uncloud.run/" rel="noreferrer noopener" target="_blank">Uncloud</a> looks like an easy, no-frills way to deploy applications to a bunch of servers with a single command, without tedious cluster management. It’s also FOSS. I also like that it has a way to <a href="https://github.com/psviderski/unregistry" rel="noreferrer noopener" target="_blank">push the containers to servers without a registry</a>. It seems to work only with Docker and not podman. I have yet to try it out, but I am very impressed with its simplicity.</li>
</ul>



<hr class="wp-block-separator has-text-color has-vivid-purple-color has-alpha-channel-opacity has-vivid-purple-background-color has-background is-style-dots"/>



<div class="wp-block-columns has-background is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"/>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p class="wp-block-paragraph"/>



<p class="wp-block-paragraph">You can read this blog using <a href="https://feeds.thejeshgn.com/thejeshgn" rel="noreferrer noopener" target="_blank">RSS Feed</a>. But if you are the person who loves getting emails, then you can join my readers by <a href="https://thejeshgn.com/subscribe/" rel="noreferrer noopener" target="_blank">signing</a> up.</p>


<div class="wp-block-jetpack-subscriptions__supports-newline wp-block-jetpack-subscriptions__show-subs wp-block-jetpack-subscriptions">
		<div>
			<div>
				<div>
					<p style="width: 25%;">
						<a href="https://thejeshgn.com/?post_type=post&amp;p=39744">Subscribe</a>
					</p>
				</div>
			</div>
		</div>
	</div></div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"/>
</div>



<p class="wp-block-paragraph"> </p></div>
    </content>
    <updated>2026-09-04T18:23:46Z</updated>
    <published>2026-09-04T18:23:46Z</published>
    <category term="Weekly Notes"/>
    <category term="WN-36"/>
    <author>
      <name>Thejesh GN</name>
    </author>
    <source>
      <id>https://thejeshgn.com</id>
      <logo>https://thejeshgn.com/wp-content/uploads/2015/08/cropped-thejeshgn_icon1-150x150.png</logo>
      <link href="https://thejeshgn.com/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://thejeshgn.com" rel="alternate" type="text/html"/>
      <subtitle>A container for all my views with excerpts from technology, travel, films, books, kannada, friends and other interests. I am Thejesh GN, friends call me Thej.</subtitle>
      <title>Thejesh GN</title>
      <updated>2026-09-05T05:07:38Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://thejeshgn.com/?p=39714</id>
    <link href="https://thejeshgn.com/2026/08/28/weekly-notes-35-2026/" rel="alternate" type="text/html"/>
    <title>Weekly Notes 35/2026</title>
    <summary>It’s been a good but busy week. Lots of work got done. Though I think I am still lagging according to my TODO list. On a side note, I have been fairly active, with standard two days of P.T. and two days of pickleball. I have not made any progress on running. I...</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p class="wp-block-paragraph">It’s been a good but busy week. Lots of work got done. Though I think I am still lagging according to my TODO list. On a side note, I have been fairly active, with standard two days of P.T. and two days of pickleball. I have not made any progress on running. I did run a bit on Sunday but nothing throughout the week. Highlight of the week was <a href="https://thejeshgn.com/dna/strength-level-tracking/" rel="noreferrer noopener" target="_blank">reaching personal bests</a> in Lat Pulldowns, Bench Press, and Leg Extensions.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img alt="Onam 2026." class="wp-image-39705" height="1024" src="https://thejeshgn.com/wp-content/uploads/2026/08/wp-17877474496781348143864426033897-993x1024.jpg" width="993"/><figcaption class="wp-element-caption">Onam 2026.</figcaption></figure>
</div>


<ul class="wp-block-list">
<li>Onam as on Wednesday. Happy belated Onam to all of you. We did Pookalam together. Uma was an active participant this time. We also watched <a href="https://en.wikipedia.org/wiki/Bethlehem_Kudumba_Unit">Bethlehem Kudumba Unit</a>. It’s a fun romcom.</li>



<li>I am revising the MAD-1 course structure. This week, I took time to go through the material and see what needs to be updated. I plan to close it by the end of September if everything goes well. Once that is done, I will do the same for the MAD-2 course.</li>



<li><a href="https://thejeshgn.com/2026/08/25/exploring-1-bit-llms/">1-bit models have become practical and production-ready</a>. I have been using one locally, and I have been quite happy.</li>



<li>In the World of Computing course, this week was mostly about tinkering. Tinkering with electronics and computers is what I enjoy doing day to day. This week’s class was fun, at least for me :)</li>



<li>I gifted myself a <em>Garmin Forerunner 965</em>. It’s my biggest fitness-related buy and my first smartwatch with lots of features. I have Pebble and Banglejs. They are good, but are meant for different purposes and also in completely different price brackets. I will write a detailed post about 965 once I use it for a while.</li>



<li>I am not sure what happens to <a href="https://duckdb.org/" rel="noreferrer noopener" target="_blank">DuckDB</a> now that <a href="https://ducklabs.com/news/2026/08/26/ducklabs-to-join-aws" rel="noreferrer noopener" target="_blank">Ducklabs has joined AWS</a>. It’s a brilliant piece of technology and product. Hope it gets more support. Also, I have removed Ollama from my machine; now I mostly use <a href="https://llama.app/" rel="noreferrer noopener" target="_blank">Llama.cpp</a></li>
</ul>



<hr class="wp-block-separator has-text-color has-vivid-purple-color has-alpha-channel-opacity has-vivid-purple-background-color has-background is-style-dots"/>



<div class="wp-block-columns has-background is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"/>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p class="wp-block-paragraph"/>



<p class="wp-block-paragraph">You can read this blog using <a href="https://feeds.thejeshgn.com/thejeshgn" rel="noreferrer noopener" target="_blank">RSS Feed</a>. But if you are the person who loves getting emails, then you can join my readers by <a href="https://thejeshgn.com/subscribe/" rel="noreferrer noopener" target="_blank">signing</a> up.</p>


<div class="wp-block-jetpack-subscriptions__supports-newline wp-block-jetpack-subscriptions__show-subs wp-block-jetpack-subscriptions">
		<div>
			<div>
				<div>
					<p style="width: 25%;">
						<a href="https://thejeshgn.com/?post_type=post&amp;p=39714">Subscribe</a>
					</p>
				</div>
			</div>
		</div>
	</div></div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"/>
</div>



<p class="wp-block-paragraph"> </p></div>
    </content>
    <updated>2026-08-28T17:14:25Z</updated>
    <published>2026-08-28T17:14:25Z</published>
    <category term="Weekly Notes"/>
    <author>
      <name>Thejesh GN</name>
    </author>
    <source>
      <id>https://thejeshgn.com</id>
      <logo>https://thejeshgn.com/wp-content/uploads/2015/08/cropped-thejeshgn_icon1-150x150.png</logo>
      <link href="https://thejeshgn.com/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://thejeshgn.com" rel="alternate" type="text/html"/>
      <subtitle>A container for all my views with excerpts from technology, travel, films, books, kannada, friends and other interests. I am Thejesh GN, friends call me Thej.</subtitle>
      <title>Thejesh GN</title>
      <updated>2026-09-05T05:07:38Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://thejeshgn.com/?p=39680</id>
    <link href="https://thejeshgn.com/2026/08/25/exploring-1-bit-llms/" rel="alternate" type="text/html"/>
    <title>Exploring 1-Bit LLMs</title>
    <summary>My interest in LLMs has increasingly shifted towards smaller models, small in terms of size and their ability to run on modest local machines. For some time now, I have been using models with fewer than 40 B parameters on my machines in some quantized way. Then I came across BitNet, a project...</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p class="wp-block-paragraph">My interest in LLMs has increasingly shifted towards smaller models, small in terms of size and their ability to run on modest local machines. For some time now, I have been using models with fewer than 40 B parameters on my machines in some quantized way. Then I came across BitNet, a project that introduced me to the concept of using just 1 bit per weight.</p>






<h4 class="wp-block-heading">Quantization</h4>



<p class="wp-block-paragraph"><a href="https://hai.stanford.edu/ai-definitions/what-are-weights" rel="noreferrer noopener" target="_blank">Weights are represented</a> by numbers in a model. A normal model might store each weight using 16 bits, i.e<strong> </strong>FP16 (half-precision floating-point). Quantization reduces that dramatically, where weights are represented using INT8 (8-bit integer) or INT4 (4-bit integer). They reduce precision but <a href="https://developer.nvidia.com/blog/int4-for-ai-inference/" rel="noreferrer noopener" target="_blank">increase inference speed</a> and reduce hardware requirements. Most of the time, quantization is performed post-training, which reduces model accuracy. But there is INT4 QAT (4-bit Integer <a href="https://www.ibm.com/think/topics/quantization-aware-training" rel="noreferrer noopener" target="_blank">Quantization-Aware Training</a>), which does this during training, thereby reducing the extreme accuracy drops common with standard 4-bit quantization.</p>



<figure class="wp-block-table is-style-stripes"><table><thead><tr><th>Approach</th><th>Training</th><th>Inference weights</th></tr></thead><tbody><tr><td>FP16 model</td><td>Full precision</td><td>FP16</td></tr><tr><td>INT8 post-training quantization</td><td>Train normally, quantize later</td><td>INT8</td></tr><tr><td>INT4 QAT</td><td>Quantization simulated during training</td><td>INT4</td></tr><tr><td>BitNet</td><td>Designed and trained around extreme low-bit weights</td><td>ternary or binary</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"/>



<h4 class="wp-block-heading">1 bit weight</h4>



<p class="wp-block-paragraph">1-bit goes one step further and asks: what if the weights were just one bit, and if that were done during training? With exactly 1 bit per weight, each weight can have only 2 possible values. 0 or 1. 0 represents -1 and 1 represents +1. i.e., instead of storing numbers like 0.72, -0.13, 1.24, -0.56, we will store +1, -1, +1, -1. That is at least 16 times less storage for weights theoretically.</p>



<h4 class="wp-block-heading">1.58 bit weight</h4>



<p class="wp-block-paragraph">In <a href="https://arxiv.org/abs/2504.12285v2">1.58-bit weights</a> (ternary bit weights), there are three possible values: {-1, 0, +1}. Theoretically, we need log2(3) bits of information to distinguish between 3 possible states : 2<sup>x</sup>=3. i.e. log<sub>2</sub>​(3)≈1.585. Hence the name.</p>



<p class="wp-block-paragraph">For our interpretation and understanding:</p>



<ul class="wp-block-list">
<li>0: the input is effectively ignored for that connection. i.e., no influence at all, which also gives you built-in sparsity.</li>



<li>+1: the input contributes positively to the output. i.e., an increase in the input pushes the weighted sum up. This is “same-direction” influence.</li>



<li>-1: the input contributes negatively. i.e., an increase in the input pushes the weighted sum down. This is “opposite-direction” influence.</li>
</ul>



<h4 class="wp-block-heading">1.125-bit weight</h4>



<p class="wp-block-paragraph">1.125-bit applies different logic for compression and calculation. One can’t literally allocate 1.125 bits per weight. The way this works is that the average bit allocation is used when they are packed. For example, it takes 9 bits to store 8 weights; thus, the average number of bits per weight is 1.125. One important distinction here is that bits per weight doesn’t necessarily tell you how many values each individual weight can take. <strong>1.58 has a clean theoretical connection</strong> to three states, while <strong>1.125 bpw</strong> usually describes the overall encoding/storage scheme. The table below should make a bit clear</p>



<figure class="wp-block-table is-style-stripes"><table class="has-fixed-layout"><thead><tr><th>Format</th><th>Possible basic values</th><th>Approx storage / 1B weights</th></tr></thead><tbody><tr><td>FP16</td><td>~65,536</td><td>2 GB</td></tr><tr><td>INT8</td><td>256</td><td>1 GB</td></tr><tr><td>INT4</td><td>16</td><td>500 MB</td></tr><tr><td>Ternary</td><td>3</td><td>~198 MB at theoretical 1.58 bpw</td></tr><tr><td>1.125-bit</td><td>special packed encoding</td><td>~141 MB</td></tr><tr><td>Binary</td><td>2</td><td>125 MB</td></tr></tbody></table></figure>



<h4 class="wp-block-heading">BitNet b1.58 2B4T</h4>



<p class="wp-block-paragraph">This is the first open-source, native 1-bit Large Language Model (LLM) at the 2-billion parameter scale, developed by Microsoft Research. You can find the <a href="https://huggingface.co/microsoft/bitnet-b1.58-2B-4T">model on the hugging face</a>, it needs a specific inference code called <a href="https://github.com/microsoft/BitNet">bitnet.cpp</a>.</p>



<h4 class="wp-block-heading">Bonsai models</h4>



<p class="wp-block-paragraph"><a href="https://huggingface.co/collections/prism-ml/bonsai" rel="noreferrer noopener" target="_blank">Bonsai 1-bit models</a> are probably the first set of production-ready binary/ternary models. They have <a href="https://huggingface.co/prism-ml/Bonsai-1.7B-gguf" rel="noreferrer noopener" target="_blank">1.7B</a>, <a href="https://huggingface.co/prism-ml/Bonsai-4B-gguf" rel="noreferrer noopener" target="_blank">4B</a>, <a href="https://huggingface.co/prism-ml/Bonsai-8B-gguf" rel="noreferrer noopener" target="_blank">8B</a>, and <a href="https://huggingface.co/prism-ml/Bonsai-27B-gguf" rel="noreferrer noopener" target="_blank">27B</a> parameter models.</p>



<p class="wp-block-paragraph">I have been running the 8B-parameter version locally. My experience with it has been positive. I have explored it for text summaries, code explanations, etc. I will try to install the 27B version and do some coding to see how it goes.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate"># Install llama
curl -LsSf https://llama.app/install.sh | sh
# Serve the model using OpenAI-compatible API and a web ui
llama serve -hf prism-ml/Bonsai-1.7B-gguf:Q1_0
# or 8B parameter version
llama serve -hf prism-ml/Bonsai-8B-gguf:Q1_0
</pre></div>


<p class="wp-block-paragraph">Note: Yes, I have moved away from Ollama and now mostly use <a href="https://llama.app/">llama.cpp</a>. Also I sometimes <a href="https://www.jan.ai/">Jan.ai</a> along with <a href="https://openwebui.com/">OpenWebUI</a></p>



<hr class="wp-block-separator has-text-color has-vivid-purple-color has-alpha-channel-opacity has-vivid-purple-background-color has-background is-style-dots"/>



<div class="wp-block-columns has-background is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"/>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p class="wp-block-paragraph"/>



<p class="wp-block-paragraph">You can read this blog using <a href="https://feeds.thejeshgn.com/thejeshgn" rel="noreferrer noopener" target="_blank">RSS Feed</a>. But if you are the person who loves getting emails, then you can join my readers by <a href="https://thejeshgn.com/subscribe/" rel="noreferrer noopener" target="_blank">signing</a> up.</p>


<div class="wp-block-jetpack-subscriptions__supports-newline wp-block-jetpack-subscriptions__show-subs wp-block-jetpack-subscriptions">
		<div>
			<div>
				<div>
					<p style="width: 25%;">
						<a href="https://thejeshgn.com/?post_type=post&amp;p=39680">Subscribe</a>
					</p>
				</div>
			</div>
		</div>
	</div></div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"/>
</div>



<p class="wp-block-paragraph"> </p></div>
    </content>
    <updated>2026-08-25T09:21:32Z</updated>
    <published>2026-08-25T09:21:32Z</published>
    <category term="Technology"/>
    <category term="AI &#x1F916;"/>
    <category term="Free and Open Source"/>
    <category term="Large Language Model"/>
    <category term="Small Language Model"/>
    <author>
      <name>Thejesh GN</name>
    </author>
    <source>
      <id>https://thejeshgn.com</id>
      <logo>https://thejeshgn.com/wp-content/uploads/2015/08/cropped-thejeshgn_icon1-150x150.png</logo>
      <link href="https://thejeshgn.com/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://thejeshgn.com" rel="alternate" type="text/html"/>
      <subtitle>A container for all my views with excerpts from technology, travel, films, books, kannada, friends and other interests. I am Thejesh GN, friends call me Thej.</subtitle>
      <title>Thejesh GN</title>
      <updated>2026-09-05T05:07:38Z</updated>
    </source>
  </entry>

  <entry>
    <id>https://blog.aktsbot.in/mighty-dunkan.html</id>
    <link href="https://blog.aktsbot.in/mighty-dunkan.html" rel="alternate" type="text/html"/>
    <title>Mighty Dunkan</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><!-- Date: 23 Aug 2026 --> <h1>Mighty Dunkan</h1> <p><small>23 Aug 2026</small></p> <hr/> <p>This post is in rememberance of our dear kitten Dunkan (ടുങ്കൻ). Although our family had quite a few traveller cats who decided to stay a while before they embarked on their journeys, Dunkan would always be remembered as the mightiest.</p> <p>He came to us at 4 weeks old on a very hot summer in May this year. Tiny, full of bounce and a shake that melts mountains, he quickly solidified his place as the newest member of our household.</p> <p><a href="https://blog.aktsbot.in/img/dunkan_the_mighty.jpg"> <img alt="Dunkan the mighty finding his footing" src="https://blog.aktsbot.in/img/dunkan_the_mighty.jpg" style="width: 150px;"/> </a></p> <p>Surviving on formula for the first month, he started exploring the household. Little by little Dunkan found his signature bounce and his iconic voice. He found sardines more to his palette than kitten food. He had a habit of finding pieces of old clothes in our house and used to drag them where ever he decided to lie down. And when our mom scolds him, he would give a soul piercing bubbly eyed look that would make her forget his shenanigans. The cat had figured us all out!</p> <p>Finding places he "fits" was a hobby he found plenty of time for. And there was no place too high or too dark for his search. 3 months have passed in the blink of an eye.</p> <p><a href="https://blog.aktsbot.in/img/dunkan_in_his_habitat.jpg"> <img alt="Dunkan in his search" src="https://blog.aktsbot.in/img/dunkan_in_his_habitat.jpg" style="width: 150px;"/> </a></p> <p>Two weeks prior, our parents found his walks a little wobbly. He would tilt to the side when he scoots. And very recently started taking rests between his walks.</p> <p>I met him in person last week and we took him to a new vet. They gave him a shot of subcutaneous Potassium infusion. That evening, we saw his iconic bounce back and we were in joy. Our boy has returned. The vet was a little cautious of him having worm infections, as there were signs. But Dunkan's progress made everything feel like it was all right again.</p> <p>The next morning he had his usual meals of cleaned up sardines. We saw him losing his balance every now and then, but we thought we needed to give the medication some more time to do its thing. We had to leave the house for a bit that day and when we returned, our boy was resting loafed up near his favorite box.</p> <p>We rushed him to the vet. His breathing became erratic. Every once in a while he would rise his head up to see the street lights and then lie down to rest. By the time we reached the vet, he could no longer stand up. They gave him oxygen every 15 mins and then warmed him up with a dryer. The vets hinted us that his chances of survival are very grim. But seeing our faces, decided to give it another hour for Dunkan to regain his strength.</p> <p>There was little progress and we decided to bring him home. We saw him for one last time on the morning of Aug 19, 2026 01:15 AM.</p> <p>Of all the cats who came to our home, Dunkan stayed the shortest. But he would be remembered as the mightiest. All the worries of the world can wait until he finished playing. He gave us plenty of good memories to cherish and in return made a cat-shaped black-hole in our hearts that some how time would have to heal.</p> <p><em>Safe travels, friend!</em></p></div>
    </summary>
    <updated>2026-08-23T00:00:00Z</updated>
    <author>
      <name>aktsbot</name>
    </author>
    <source>
      <id>https://blog.aktsbot.in</id>
      <link href="https://blog.aktsbot.in" rel="alternate" type="text/html"/>
      <link href="https://blog.aktsbot.in/rss_content.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Blast your rss feed reader with regular updates from a not-so-boring part of the
      internet!</subtitle>
      <title>Nix and webdev news from aktsbot</title>
      <updated>2026-09-06T18:30:54Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://thejeshgn.com/?p=39668</id>
    <link href="https://thejeshgn.com/2026/08/21/weekly-notes-34-2026/" rel="alternate" type="text/html"/>
    <title>Weekly Notes 34/2026</title>
    <summary>With the Peppo team here in Bangalore and other commitments, the week was crazy busy. I met at least half of the Peppo team in person for the first time. We have a great team at Peppo. As Mohammed said in one of our conversations, the Peppo team is not only talented but...</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p class="wp-block-paragraph">With the Peppo team here in Bangalore and other commitments, the week was crazy busy. I met at least half of the Peppo team in person for the first time. We have a great team at Peppo. As Mohammed said in one of our conversations, the Peppo team is not only talented but also filled with good human beings. Weâ€™ve been very lucky as a team. It was so much fun being around everyone, having conversations, and sharing a few meals.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img alt="Hesraghatta grasslands" class="wp-image-39651" height="768" src="https://thejeshgn.com/wp-content/uploads/2026/08/wp-17870557534407655846546192826388-1024x768.jpg" width="1024"/><figcaption class="wp-element-caption">Hesraghatta grasslands</figcaption></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter size-large"><img alt="Bengaluru'47 " class="wp-image-39634" height="768" src="https://thejeshgn.com/wp-content/uploads/2026/08/wp-17868909027284616429762860439282-1024x768.jpg" width="1024"/><figcaption class="wp-element-caption">Bengaluru’47 </figcaption></figure>
</div>


<ul class="wp-block-list">
<li>I played host for them; actually, a few team members did all the work. I was just present, that’s all. That said, that kept me busy during the week. We booked a hotel on Church Street through a popular booking site, but they canceled at the last minute. Then we had to book the same hotel using a different aggregator site. This is the second time for me. So I think from now on, after booking a hotel online, I will call the hotel to confirm. The confirmation from the aggregator means nothing.</li>



<li>We had team lunch at <a href="https://www.brikoven.com/" rel="noreferrer noopener" target="_blank">Brik Oven</a> and team dinner at Ishaara, both on Church Street. We also took some time out together to spend a day at <a href="https://www.ournativevillage.com/" rel="noreferrer noopener" target="_blank">Our Native Village</a> near Hesaraghatta.</li>



<li>I ran a bit on Sunday; my calf muscles were hurting, so I stopped. But I was able to run on Monday and Tuesday at Hesaraghatta grasslands. It’s so different to run in the green surroundings compared to running in the city. I could do only one P.T session and one game.</li>



<li>On Sunday, I went to watch the Bengaluru’47 exhibition at RBNAM School. I loved it.</li>



<li>I wrote a simple <a href="https://thejeshgn.com/2026/08/16/embedding-workouts-using-web-component/" rel="noreferrer noopener" target="_blank">web component called muscle-map</a> to log the workouts here.</li>



<li>I have lots of image albums on my phone which are collections on random subjects. One of them is titled “Unidentified Urban Objects” in Bengaluru. This week I took an opportunity to upload to an Arena channel called <a href="https://www.are.na/thejesh-gn/unidentified-urban-objects" rel="noreferrer noopener" target="_blank">Unidentified Urban Objects</a>. It has lots of random pictures of manholes, electric poles, public sensors, toilets, and gods on the footpath, etc. You can also add to the channel. All Bangalore-focused.</li>



<li>I am probably one of the few paid Grammarly users who still use classic mode to avoid AI rewriting in their new interface. Also, the new interface is not writer-friendly; too many distractions. <a href="https://arxiv.org/abs/2402.17764">1-bit</a>, 1.125-bit, and <a href="https://en.wikipedia.org/wiki/1.58-bit_large_language_model" rel="noreferrer noopener" target="_blank">1.58-bit</a> LLMs are very interesting and are <a href="https://huggingface.co/prism-ml/Bonsai-27B-mlx-1bit" rel="noreferrer noopener" target="_blank">capable</a>. I have started exploring some of them and will probably productize some.</li>
</ul>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><a href="https://thejeshgn.com/wp-content/uploads/2026/08/wp-17870557830007006188146964367065.jpg" rel="lightbox[39668]"><img alt="Running around Hesraghatta grasslands. This fellow followed so clicked a selfie" class="wp-image-39652" height="768" src="https://thejeshgn.com/wp-content/uploads/2026/08/wp-17870557830007006188146964367065-1024x768.jpg" width="1024"/></a><figcaption class="wp-element-caption">Running around Hesraghatta grasslands. This fellow followed so clicked a selfie</figcaption></figure>



<figure class="wp-block-image size-large"><a href="https://thejeshgn.com/wp-content/uploads/2026/08/wp-17870586986178833963600757131682.jpg" rel="lightbox[39668]"><img alt="Hesraghatta" class="wp-image-39654" height="768" src="https://thejeshgn.com/wp-content/uploads/2026/08/wp-17870586986178833963600757131682-1024x768.jpg" width="1024"/></a><figcaption class="wp-element-caption">Hesraghatta</figcaption></figure>



<figure class="wp-block-image size-large"><a href="https://thejeshgn.com/wp-content/uploads/2026/08/wp-17871962017482749163842132943162.jpg" rel="lightbox[39668]"><img alt="This dog at Native Village wanted me not to stop petting. " class="wp-image-39661" height="1024" src="https://thejeshgn.com/wp-content/uploads/2026/08/wp-17871962017482749163842132943162-768x1024.jpg" width="768"/></a><figcaption class="wp-element-caption">This dog at Native Village wanted me not to stop petting. </figcaption></figure>



<figure class="wp-block-image size-large"><a href="https://thejeshgn.com/wp-content/uploads/2026/08/wp-1787333117140893717369032954969.jpg" rel="lightbox[39668]"><img alt="" class="wp-image-39671" height="768" src="https://thejeshgn.com/wp-content/uploads/2026/08/wp-1787333117140893717369032954969-1024x768.jpg" width="1024"/></a></figure>



<figure class="wp-block-image size-large"><a href="https://thejeshgn.com/wp-content/uploads/2026/08/wp-17873330913573537962687852683160.jpg" rel="lightbox[39668]"><img alt="" class="wp-image-39670" height="1024" src="https://thejeshgn.com/wp-content/uploads/2026/08/wp-17873330913573537962687852683160-768x1024.jpg" width="768"/></a></figure>
</figure>



<hr class="wp-block-separator has-text-color has-vivid-purple-color has-alpha-channel-opacity has-vivid-purple-background-color has-background is-style-dots"/>



<div class="wp-block-columns has-background is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"/>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p class="wp-block-paragraph"/>



<p class="wp-block-paragraph">You can read this blog using <a href="https://feeds.thejeshgn.com/thejeshgn" rel="noreferrer noopener" target="_blank">RSS Feed</a>. But if you are the person who loves getting emails, then you can join my readers by <a href="https://thejeshgn.com/subscribe/" rel="noreferrer noopener" target="_blank">signing</a> up.</p>


<div class="wp-block-jetpack-subscriptions__supports-newline wp-block-jetpack-subscriptions__show-subs wp-block-jetpack-subscriptions">
		<div>
			<div>
				<div>
					<p style="width: 25%;">
						<a href="https://thejeshgn.com/?post_type=post&amp;p=39668">Subscribe</a>
					</p>
				</div>
			</div>
		</div>
	</div></div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"/>
</div>



<p class="wp-block-paragraph"> </p></div>
    </content>
    <updated>2026-08-21T17:30:20Z</updated>
    <published>2026-08-21T17:30:20Z</published>
    <category term="Weekly Notes"/>
    <author>
      <name>Thejesh GN</name>
    </author>
    <source>
      <id>https://thejeshgn.com</id>
      <logo>https://thejeshgn.com/wp-content/uploads/2015/08/cropped-thejeshgn_icon1-150x150.png</logo>
      <link href="https://thejeshgn.com/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://thejeshgn.com" rel="alternate" type="text/html"/>
      <subtitle>A container for all my views with excerpts from technology, travel, films, books, kannada, friends and other interests. I am Thejesh GN, friends call me Thej.</subtitle>
      <title>Thejesh GN</title>
      <updated>2026-09-05T05:07:38Z</updated>
    </source>
  </entry>

  <entry>
    <id>https://aryak.me/blog/10-ylac.html</id>
    <link href="https://aryak.me/blog/10-ylac.html" rel="alternate" type="text/html"/>
    <title>My experience at YLAC High School Achievers Program @DEL - 2026</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>When I first signed up for the YLAC High School Achievers Program, I
thought I knew exactly what I wanted to get out of it. I was interested
in learning more about civic responsibility and finding better ways to
advocate for FOSS beyond the usual “it’s free” or “it respects your
freedom” arguments.</p>
<p>By the end of the program, however; I ended up questioning the way I
approached that problem in the first place.</p>
<p>The program’s structure felt somewhat disjointed at first. Each day
seemed to dive right in into a completely different topic, from our
privileges and biases to social movements, NGOs, democracy, governance
and the Indian parliamentary system. I couldn’t quite see how all of
these pieces fit together.</p>
<p>Looking back after completing the program, however, I think that was
the point.</p>
<p>The first few days were less about giving us answers and more about
making us examine the assumptions behind the answers we already had.
Through many of the interactive activities, we were encouraged to think
about and re-imagine our privileges, biases and core beliefs. That made
me realise how correct an opinion may feel to you when you have never
had to question where it came from.</p>
<p>The next few days gave us a way to apply that thinking to something
bigger than ourselves. We looked at movements ranging from women’s
suffrage and the US civil rights movement to the more recent RTI
movement in India, along with the work of different NGOs. The
interesting part wasn’t simply what these movements believed, but how
they managed to convince other people to care.</p>
<p>Even though these movements had very little in common with each
other, there were certain things that kept repeating: clear demands,
non-violent action, and, most importantly, the use of music, art and
storytelling to make sure their message didn’t just get forgotten as
another headline. YLAC made me realise that an argument’s strength and
accuracy isn’t enough to create meaningful change; how that argument is
conveyed can matter just as much or more. This is especially important
in the realm of FOSS advocacy where most of us just use the same
arguments of either philosophy or monetary benefit while promoting its
use.</p>
<p>The program also covered democracy, governance, and the Indian
parliamentary system. While some of the civics content was familiar from
school, hearing it discussed in the context of why institutions evolved
the way they did and how ideas like the Magna Carta, the RTI Act, and
citizen participation fit into a much larger story made it feel much
more relevant. Additionally, through the guest sessions, I was able to
observe public policy as more than just the buzzwords people use online.
People in this field are able to make real difference in government,
adoption of tech and so much more, and it was good to see how it
happens.</p>
<p>Looking back, YLAC wasn’t as much of cramming the basics of History
and Civics into 7 days, but more so cramming the ideas behind what we
are taught in History and Civics in the same 7 days, which is arguably a
bigger feat. More importantly, it changed the way I think about
advocacy: instead of just asking whether an argument is correct, I now
think more carefully about whether it gives someone a reason to
care.</p>
<p>For something like the FOSS ecosystem, that might mean spending less
time explaining why we believe software should be free, and more time
showing people why having control over the software they use matters to
them.</p>
<p>PS: Thanks FOSSUnited for sponsoring my attendance of the program
:D</p></div>
    </summary>
    <updated>2026-08-18T14:48:09Z</updated>
    <published>2026-08-18T14:48:09Z</published>
    <category term="2026/08/18/2"/>
    <author>
      <name>Arya Kiran</name>
      <email>arya@projectsegfau.lt</email>
    </author>
    <source>
      <id>https://aryak.me</id>
      <link href="https://aryak.me" rel="alternate" type="text/html"/>
      <link href="https://aryak.me/rss.xml" rel="self" type="application/rss+xml"/>
      <rights>Copyright (c) 2022-26, Arya Kiran</rights>
      <subtitle>The blog of Arya</subtitle>
      <title>Arya's blog</title>
      <updated>2026-09-06T18:30:58Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://thejeshgn.com/?p=39630</id>
    <link href="https://thejeshgn.com/2026/08/16/embedding-workouts-using-web-component/" rel="alternate" type="text/html"/>
    <title>Embedding Workouts using Web Component</title>
    <summary>I wanted a way to represent workouts by the muscle groups they activate. Most applications where you log do it. I thought it must be easy with SVG images. It wasn’t as easy. First, I had to get an image that is remake-friendly. I used this drawing by OpenStax &amp; Tomáš Kebert &amp;...</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p class="wp-block-paragraph">I wanted a way to represent workouts by the muscle groups they activate. Most applications where you log do it. I thought it must be easy with SVG images. It wasn’t as easy. First, I had to get an image that is remake-friendly. I used this <a href="https://commons.wikimedia.org/w/index.php?curid=94071041" rel="noreferrer noopener" target="_blank">drawing</a> by <em>OpenStax &amp; Tomáš Kebert &amp; umimeto.org</em>, from Wikimedia Commons. Cleaned it up to reduce the complexity. Then tagged each muscle group, including separating left and right muscles, in case you focus on one side.</p>



<p class="wp-block-paragraph">After that, I wanted an easy way to embed it on any web page. I chose to use web components. It converts the given list of exercises into muscle groups, then applies styles to them within the SVG and embeds the SVG. I have verified it to the best of my knowledge and from available sources. It took a lot of battling with Claude to make it the way I want, that is, to make it generic and reusable. I still have to map a bunch of muscle groups, I have listed all the <a href="https://github.com/thejeshgn/muscle-map">short comings in the readme</a>. </p>



<p class="wp-block-paragraph">Finally, I created a WordPress shortcode to queue the JavaScript and embed the component. But that’s not really required. If you have a simple static site, then you can include SVG and a JS file and use the <a href="https://github.com/thejeshgn/muscle-map">muscle-map</a> tag in your HTML</p>






<h4 class="wp-block-heading">Wednesday Workout</h4>






<h4 class="wp-block-heading">Run</h4>






<h4 class="wp-block-heading">Calf raise, Tibialis raise</h4>






<h4 class="wp-block-heading">Calf raise</h4>






<p class="wp-block-paragraph">Happy workout and happy logging.</p>



<hr class="wp-block-separator has-text-color has-vivid-purple-color has-alpha-channel-opacity has-vivid-purple-background-color has-background is-style-dots"/>



<div class="wp-block-columns has-background is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"/>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p class="wp-block-paragraph"/>



<p class="wp-block-paragraph">You can read this blog using <a href="https://feeds.thejeshgn.com/thejeshgn" rel="noreferrer noopener" target="_blank">RSS Feed</a>. But if you are the person who loves getting emails, then you can join my readers by <a href="https://thejeshgn.com/subscribe/" rel="noreferrer noopener" target="_blank">signing</a> up.</p>


<div class="wp-block-jetpack-subscriptions__supports-newline wp-block-jetpack-subscriptions__show-subs wp-block-jetpack-subscriptions">
		<div>
			<div>
				<div>
					<p style="width: 25%;">
						<a href="https://thejeshgn.com/?post_type=post&amp;p=39630">Subscribe</a>
					</p>
				</div>
			</div>
		</div>
	</div></div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"/>
</div>



<p class="wp-block-paragraph"> </p></div>
    </content>
    <updated>2026-08-16T16:15:06Z</updated>
    <published>2026-08-16T16:15:06Z</published>
    <category term="Technology"/>
    <category term="Assisted by AI &#x1F916;"/>
    <category term="Free and Open Source"/>
    <category term="Web Components"/>
    <category term="Workouts"/>
    <author>
      <name>Thejesh GN</name>
    </author>
    <source>
      <id>https://thejeshgn.com</id>
      <logo>https://thejeshgn.com/wp-content/uploads/2015/08/cropped-thejeshgn_icon1-150x150.png</logo>
      <link href="https://thejeshgn.com/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://thejeshgn.com" rel="alternate" type="text/html"/>
      <subtitle>A container for all my views with excerpts from technology, travel, films, books, kannada, friends and other interests. I am Thejesh GN, friends call me Thej.</subtitle>
      <title>Thejesh GN</title>
      <updated>2026-09-05T05:07:38Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-IN">
    <id>https://libperry.codeberg.page/blog/nom-nom/</id>
    <link href="https://libperry.codeberg.page/blog/nom-nom/" rel="alternate" type="text/html"/>
    <title>ഞം ഞം</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>à´�à´‚ à´�à´‚ translates to nom nom in English, which is an alternative form of <a href="https://en.wiktionary.org/wiki/om_nom_nom" title="om nom nom - Wiktionary, the free dictionary">om nom nom</a>.</p>
<p>I have been labelled a picky eater quite a few times, which is possibly true. I don’t eat certain kinds of food, and often had to stay hungry at almost all conferences and events because they don’t serve food I can eat.</p>
<p>People often say I should make a list of food I can eat. So I did.</p>
<h2 id="perrys-yum-and-yuck-&#xE0;&#xB4;&#xFFFD;-&#xE0;&#xB4;&#xFFFD;-list">perry’s yum and yuck à´�à´‚ à´�à´‚ list</h2>
<p><em>last updated August 29</em></p>
<h3 id="5---yum-">5 - yum ğŸ˜‹</h3>
<ul>
<li>al faham</li>
<li>banana</li>
<li>beef pepperoni pizza</li>
<li>chicken fry</li>
<li>chicken nuggets</li>
<li>chocolate mud cake</li>
<li>kinnathappam</li>
<li>red wine</li>
</ul>
<h3 id="4---like-">4 - like ğŸ‘�</h3>
<ul>
<li>apple</li>
<li>banana fritter/à´ªà´´à´‚ à´ªàµŠà´°à´¿/pazham pori</li>
<li>beef fry</li>
<li>beef liver</li>
<li>black coffee</li>
<li>carrot cake</li>
<li>cheera/à´šàµ€à´°</li>
<li>chicken cutlet</li>
<li>chicken liver</li>
<li>chicken pepperoni pizza</li>
<li>chicken puffs</li>
<li>chicken shawarma</li>
<li>chickpeas and wet rice/à´ªà´¯àµ¼ à´•à´�àµ�à´�à´¿</li>
<li>chickpeas/à´•à´Ÿà´²</li>
<li>chocolate cake</li>
<li>cowpeas/à´µàµ»à´ªà´¯àµ¼</li>
<li>egg puffs</li>
<li>kerala beef fry</li>
<li>kerala parotta</li>
<li>kozhukatta/à´•àµŠà´´àµ�à´•àµ�à´•à´Ÿàµ�à´Ÿ</li>
<li>meat roll/chicken roll</li>
<li>mixed fruit jam</li>
<li>omelette</li>
<li>potato fries</li>
<li>raw banana chips</li>
<li>rose matta rice</li>
<li>seer fish fry/à´¨àµ†à´¯àµ�à´®àµ€àµ»/neymeen</li>
<li>sharkara upperi</li>
<li>thiruvananthapuram boli/à´¤à´¿à´°àµ�à´µà´¨à´¨àµ�à´¤à´ªàµ�à´°à´‚ à´¬àµ‹à´³à´¿</li>
<li>wheat bread</li>
</ul>
<h3 id="3---meh-">3 - meh ğŸ˜�</h3>
<ul>
<li>appam</li>
<li>aviyal</li>
<li>beef curry</li>
<li>black tea</li>
<li>bonda</li>
<li>chappathi</li>
<li>chicken burger</li>
<li>chutney</li>
<li>dosa</li>
<li>duck roast</li>
<li>ghee dosa roast</li>
<li>green gram/à´šàµ†à´±àµ�à´ªà´¯àµ¼</li>
<li>kichadi</li>
<li>Kozhikode halwa</li>
<li>mutton stew</li>
<li>neyyappam</li>
<li>pulisseri/à´ªàµ�à´³à´¿à´¶àµ�à´¶àµ‡à´°à´¿</li>
<li>puttu/à´ªàµ�à´Ÿàµ�à´Ÿàµ�â€Œ</li>
<li>tapioca/à´•à´ªàµ�à´ª</li>
<li>undampori</li>
<li>unniyappam</li>
</ul>
<h3 id="2---yuck-">2 - yuck ğŸ¤¢</h3>
<ul>
<li>achappam</li>
<li>almond</li>
<li>beetroot</li>
<li>black mustard seed/à´•à´Ÿàµ�à´•àµ�</li>
<li>bull’s eye/fried egg</li>
<li>cashew</li>
<li>chicken curry</li>
<li>coconut</li>
<li>ela ada</li>
<li>fish curry</li>
<li>fish fry</li>
<li>fish molly</li>
<li>ginger</li>
<li>idiyappam</li>
<li>idli</li>
<li>Indian anchovy/à´¨à´¤àµ�à´¤àµ‹à´²à´¿</li>
<li>jackfruit</li>
<li>kallappam</li>
<li>kuzhalappam</li>
<li>lasagna</li>
<li>lentil/à´ªà´°à´¿à´ªàµ�à´ªàµ�</li>
<li>mandi</li>
<li>orange</li>
<li>papadam</li>
<li>pathiri</li>
<li>payasam/à´ªà´¾à´¯à´¸à´‚</li>
<li>pear</li>
<li>pesaha appam</li>
<li>pickle</li>
<li>pineapple</li>
<li>plum cake</li>
<li>pork</li>
<li>pumpkin</li>
<li>rasam</li>
<li>ripe banana chips</li>
<li>salad</li>
<li>sambar</li>
<li>sukhiyan</li>
<li>theeyal/à´¤àµ€à´¯àµ½</li>
<li>thoran</li>
<li>vattayappam</li>
<li>vegetable burger</li>
<li>vegetable puffs</li>
</ul>
<h3 id="1---dont-even-think-about-it-">1 - don’t even think about it â˜ ï¸�</h3>
<ul>
<li>biriyani</li>
<li>cooked carrot</li>
<li>ice cream</li>
<li>lady’s finger/okra/à´µàµ†à´£àµ�à´Ÿà´¯àµ�à´•àµ�à´•</li>
<li>masala dosa</li>
<li>milk and milk products</li>
<li>onions</li>
<li>peanut</li>
<li>pungent food - anything that contains chilli pepper, pepper, capsicum</li>
<li>tea or coffee (with milk)</li>
<li>tomato</li>
</ul>
<h2 id="boycott-divest-sanctions">boycott divest sanctions</h2>
<p>Like many people I try to avoid eating from food chain businesses, especially those with <a href="https://masjidalaqsa.com/boycott-israeli-products-brands-list" title="BDS: List of Israeli Products with Proofs [Updated] 2026">ties to murderers in Israel and USA</a>. Yes, I’m aware I eat meat and I do not fail to see the irony.</p>
<h2 id="statements-dreamed-up-by-the-utterly-deranged-rant">statements dreamed up by the utterly deranged (rant)</h2>
<p>Sometimes, people ignore my allergies and food preferences and offer me food I can’t eat, such as tea with milk or biriyani. When I point out I can’t eat them, I’m offered friendly advice such as “get over it” or “stop showing off”.</p>
<p>Sometimes people comment on my food preferences.</p>
<blockquote>
<p>do you have ulcer?</p>
</blockquote>
<p>no.</p>
<blockquote>
<p>what’s wrong with you?</p>
</blockquote>
<p>no.</p>
<blockquote>
<p>are you even from kerala?</p>
</blockquote>
<p>yes.</p>
<blockquote>
<p>what kind of indian are you even?</p>
</blockquote>
<p>yes.</p>
<blockquote>
<p>you should up your spice tolerance</p>
</blockquote>
<p>no.</p>
<blockquote>
<p>why you say you no like this food that food. remember children in north india die of hunger every day.</p>
</blockquote>
<p><a href="https://invite.joinjabber.org/#ok@groups.durare.org%3Fjoin">ok.</a></p>
<blockquote>
<p>tell your mom to cook better food</p>
</blockquote>
<p>fuck you.</p></div>
    </summary>
    <updated>2026-08-15T10:00:00Z</updated>
    <published>2026-08-15T10:00:00Z</published>
    <source>
      <id>https://libperry.codeberg.page/</id>
      <author>
        <name>perry</name>
      </author>
      <link href="https://libperry.codeberg.page/" rel="alternate" type="text/html"/>
      <link href="https://libperry.codeberg.page/index.xml" rel="self" type="application/rss+xml"/>
      <rights>Content is licensed under CC BY-SA 4.0</rights>
      <subtitle>Recent content in home on perry's website</subtitle>
      <title>home on perry's website</title>
      <updated>2026-08-15T10:00:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://thejeshgn.com/?p=39615</id>
    <link href="https://thejeshgn.com/2026/08/14/weekly-notes-33-2026/" rel="alternate" type="text/html"/>
    <title>Weekly Notes 33/2026</title>
    <summary>I ended the Netflix subscription. We have not been using it for a long time, and we were just paying; finally, this month I ended it. Sleep has won for me. If required, I can subscribe again. We still have Amazon Prime, mostly because of the free shipping it provides. That said, in...</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p class="wp-block-paragraph">I ended the Netflix subscription. We have not been using it for a long time, and we were just paying; finally, this month I ended it. <a href="https://www.theguardian.com/technology/2017/apr/18/netflix-competitor-sleep-uber-facebook" rel="noreferrer noopener" target="_blank">Sleep has won</a> for me. If required, I can subscribe again. We still have Amazon Prime, mostly because of the free shipping it provides. That said, in general my online shopping has also come down. I need to take a look at all my digital subscriptions.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img alt="At APU" class="wp-image-39616" height="768" src="https://thejeshgn.com/wp-content/uploads/2026/08/wp-1786721792662514202460741843771-1024x768.jpg" width="1024"/><figcaption class="wp-element-caption">At APU</figcaption></figure>
</div>


<ul class="wp-block-list">
<li>I have been using <a href="https://twotimespi.dev/" rel="noreferrer noopener" target="_blank">Tau</a> by HF as the coding agent. It’s very simple but has been very good. It’s just enough. This one is different from <a href="https://tau-agent.dev/" rel="noreferrer noopener" target="_blank">Tau by dpc</a>, which also looks good. I am yet to try it. It’s on my list to try. Work in general has been good, and I am happy about the progress I have been making.</li>



<li>They have started digging everywhere in Bangalore. Almost all the roads around our home have been dug up. I can see the work is getting done, but I don’t know why they had to do it on all roads at once. Now it’s an adventure ride to Uma’s school every day.</li>



<li>These days, every Tuesday is a cupcake Tuesday for Uma. We stop at Cafe Da Costa Bakery on our way back from school.</li>



<li>Saturday has become the rest day. Originally, I wanted to do a longer run on Saturdays, but it has not happened yet. Sunday was also mostly a rest day as it rained when I started running. Bangalore rains are unpredictable. So I immediately stopped and returned home. As usual, I did two P.T sessions during the week. I also started logging the main part of the workout on Strava for later reference and to measure progress. I also have a reliable partner to play now, so we played two games. I couldn’t run today as I was driving back home :( I do recognize that I can dedicate an hour each day to physical activity because I work mostly from home and save my commute time. A couple of months back, I got a <a href="https://thejeshgn.com/sportneer_pull_up_bar/" rel="noreferrer noopener" target="_blank">pull-up bar</a> for a door frame. Until now, it has been used mostly by Uma and me for dead hangs. This week I was able to do two proper pull-ups at home. I have been practicing assisted pull-ups during P.Ts, so it’s not a surprise. That said, I have not yet reached the <a href="https://thejeshgn.com/2026/06/05/weekly-notes-23-2026/" rel="noreferrer noopener" target="_blank">goal (WN 23/2026) of 3 proper pull-ups</a>.</li>



<li>I had an interesting conversation with Abhishek from <a href="https://openconsultancy.xyz/" rel="noreferrer noopener" target="_blank">OpenConsultancy</a> about Frappe and related products. I know about <a href="https://frappe.io/" rel="noreferrer noopener" target="_blank">Frappe</a>; I have used their libraries but not their main product. But it was good to catch up with Abhishek and learn more from a fellow FOSS enthusiast.</li>



<li>Tomorrow is a holiday, so only one class this week. I left at the wrong time today. At 5pm and it took me 3 hours to reach home :( that’s why no run.</li>



<li>Appa was here over the weekend for his dental treatment. My dental treatment is almost done! Maybe two more months :(</li>



<li>I have this book, <a href="https://codersatwork.com/" rel="noreferrer noopener" target="_blank">Coders at Work</a>. I was wondering: with AI and agents, does it still make sense? It makes more sense than ever. Get a copy or borrow from me. I have a hard copy. You would have seen GPX/Map animation videos in my previous blog posts; those are created using a FOSS tool called <a href="https://gpx-animator.app/" rel="noreferrer noopener" target="_blank">GPX Animator</a>. It has lots of features to explore.</li>
</ul>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img alt="Uma at Cafe Da Costa Bakery " class="wp-image-39595" height="1024" src="https://thejeshgn.com/wp-content/uploads/2026/08/wp-17865182535364632753186234882832-768x1024.jpg" width="768"/><figcaption class="wp-element-caption">Uma at Cafe Da Costa Bakery </figcaption></figure>
</div>


<hr class="wp-block-separator has-text-color has-vivid-purple-color has-alpha-channel-opacity has-vivid-purple-background-color has-background is-style-dots"/>



<div class="wp-block-columns has-background is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"/>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p class="wp-block-paragraph"/>



<p class="wp-block-paragraph">You can read this blog using <a href="https://feeds.thejeshgn.com/thejeshgn" rel="noreferrer noopener" target="_blank">RSS Feed</a>. But if you are the person who loves getting emails, then you can join my readers by <a href="https://thejeshgn.com/subscribe/" rel="noreferrer noopener" target="_blank">signing</a> up.</p>


<div class="wp-block-jetpack-subscriptions__supports-newline wp-block-jetpack-subscriptions__show-subs wp-block-jetpack-subscriptions">
		<div>
			<div>
				<div>
					<p style="width: 25%;">
						<a href="https://thejeshgn.com/?post_type=post&amp;p=39615">Subscribe</a>
					</p>
				</div>
			</div>
		</div>
	</div></div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"/>
</div>



<p class="wp-block-paragraph"> </p></div>
    </content>
    <updated>2026-08-14T15:40:54Z</updated>
    <published>2026-08-14T15:40:54Z</published>
    <category term="Weekly Notes"/>
    <category term="WN-33"/>
    <category term="Workouts"/>
    <author>
      <name>Thejesh GN</name>
    </author>
    <source>
      <id>https://thejeshgn.com</id>
      <logo>https://thejeshgn.com/wp-content/uploads/2015/08/cropped-thejeshgn_icon1-150x150.png</logo>
      <link href="https://thejeshgn.com/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://thejeshgn.com" rel="alternate" type="text/html"/>
      <subtitle>A container for all my views with excerpts from technology, travel, films, books, kannada, friends and other interests. I am Thejesh GN, friends call me Thej.</subtitle>
      <title>Thejesh GN</title>
      <updated>2026-09-05T05:07:38Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>https://thejeshgn.com/?p=39577</id>
    <link href="https://thejeshgn.com/2026/08/07/weekly-notes-32-2026/" rel="alternate" type="text/html"/>
    <link href="https://thejeshgn.com/wp-content/uploads/2026/08/day-5-evening-run-walk-apu-2026-08-07.webm" length="342330" rel="enclosure" type="video/webm"/>
    <title>Weekly Notes 32/2026</title>
    <summary>It’s been a hectic but active week. As usual, I continued with my two P.T sessions. I played a game of Pickleball on Thursday. I also ran twice. This week has been my most active week in quite some time. I took some time to write a blog post about return to running....</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p class="wp-block-paragraph">It’s been a hectic but active week. As usual, I continued with my two P.T sessions. I played a game of Pickleball on Thursday. I also ran twice. This week has been my most active week in quite some time. I took some time to write a blog post about <a href="https://thejeshgn.com/2026/08/03/running-again/">return to running</a>. </p>



<p class="wp-block-paragraph">My trail run <a href="https://thejeshgn.com/projects/coffee-trails-11km/">training</a> is progressing okay. It’s not spectacular, but I am on it, which is what I think matters. I am nervously excited about it. I am inspired by <a href="https://signalshore.net/tags/#tag:running" rel="noreferrer noopener" target="_blank">Soham’s posts</a> about his trail runs. Hopefully, I get to run and complete in Coorg.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img alt="We opened a laptop in the classroom to see what was inside." class="wp-image-39573" height="768" src="https://thejeshgn.com/wp-content/uploads/2026/08/wp-17860996359573525046108393076754-1024x768.jpg" width="1024"/><figcaption class="wp-element-caption">We opened a laptop in the classroom to see what was inside.</figcaption></figure>
</div>


<ul class="wp-block-list">
<li>I met a bunch of IITM/Study students at IISc at a students’ gathering on Saturday. It was fun to meet them and have a conversation. It was drizzling a bit, and IISc was so pretty. Nothing can replace the trees. </li>



<li>I am teaching World of Computing this term at APU. The Sem/Term has started. So most Fridays and Saturdays I am working from the <a href="https://thejeshgn.com/location/india/karnataka/bengaluru/apu/">campus</a>. It’s also a beautiful campus to run.</li>



<li>Both Uma and Anju have been down with a cold this week. There is also a lot of road repair (digging) work that’s going on around us. It has become very dusty. It has contributed a lot too.</li>



<li><a href="https://licencetolearn.in/" rel="noreferrer noopener" target="_blank">License to Learn</a> is a project by FOSSUnited on Indian academia’s expenditure on non-free software. Currently, <a href="https://licencetolearn.in/data/" rel="noreferrer noopener" target="_blank">it has data</a> from NITs. Hopefully, in the future it will have data from IITs and other big universities like VTU. This reminds me of my <a href="https://thejeshgn.com/2005/08/29/vtu-floss-campaign-status/" rel="noreferrer noopener" target="_blank">failed</a> effort almost two decades back, <a href="https://thejeshgn.com/wiki/open-letterspetitions/petition-visveswaraiah-technological-university-to-use-free-software/" rel="noreferrer noopener" target="_blank">pushing VTU</a> to use FOSS. FOSSUnited is offering a scholarship for FOSS developers to pursue the <a href="https://school.takshashila.org.in/gcpp-technology-policy" rel="noreferrer noopener" target="_blank">Graduate Certificate in Public Policy (Technology and Policy</a> at Takshashila Institution. Do apply. <a href="https://www.constitutionofindia.net/" rel="noreferrer noopener" target="_blank">ConstitutionOfIndia.net</a> is a good site for educational material on the Constitution of India, including the Constituent Assembly <a href="https://www.constitutionofindia.net/debates/17-oct-1949/#135435" rel="noreferrer noopener" target="_blank">discussions</a>. I like the fact that the whole Constitution is available as <a href="https://www.constitutionofindia.net/read/" rel="noreferrer noopener" target="_blank">an HTML document</a>.</li>



<li>The Geological Survey of India (GSI) has published <a href="https://nwdp.nwic.gov.in/dataset/village-boundary" rel="noreferrer noopener" target="_blank">village boundaries for all the villages in India</a>. They have published them in both KML and GeoJSON formats. I have downloaded it. I am yet to upload it to the archive.</li>
</ul>



<figure class="wp-block-video aligncenter"><video controls="" height="720" loop="loop" src="https://thejeshgn.com/wp-content/uploads/2026/08/day-5-evening-run-walk-apu-2026-08-07.webm" width="1280"/><figcaption class="wp-element-caption">Day 5 – Evening/Run Walk at APU 2026-08-07.</figcaption></figure>



<hr class="wp-block-separator has-text-color has-vivid-purple-color has-alpha-channel-opacity has-vivid-purple-background-color has-background is-style-dots"/>



<div class="wp-block-columns has-background is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"/>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p class="wp-block-paragraph"/>



<p class="wp-block-paragraph">You can read this blog using <a href="https://feeds.thejeshgn.com/thejeshgn" rel="noreferrer noopener" target="_blank">RSS Feed</a>. But if you are the person who loves getting emails, then you can join my readers by <a href="https://thejeshgn.com/subscribe/" rel="noreferrer noopener" target="_blank">signing</a> up.</p>


<div class="wp-block-jetpack-subscriptions__supports-newline wp-block-jetpack-subscriptions__show-subs wp-block-jetpack-subscriptions">
		<div>
			<div>
				<div>
					<p style="width: 25%;">
						<a href="https://thejeshgn.com/?post_type=post&amp;p=39577">Subscribe</a>
					</p>
				</div>
			</div>
		</div>
	</div></div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"/>
</div>



<p class="wp-block-paragraph"> </p></div>
    </content>
    <updated>2026-08-07T15:43:31Z</updated>
    <published>2026-08-07T15:43:31Z</published>
    <category term="Life"/>
    <author>
      <name>Thejesh GN</name>
    </author>
    <source>
      <id>https://thejeshgn.com</id>
      <logo>https://thejeshgn.com/wp-content/uploads/2015/08/cropped-thejeshgn_icon1-150x150.png</logo>
      <link href="https://thejeshgn.com/feed/" rel="self" type="application/rss+xml"/>
      <link href="https://thejeshgn.com" rel="alternate" type="text/html"/>
      <subtitle>A container for all my views with excerpts from technology, travel, films, books, kannada, friends and other interests. I am Thejesh GN, friends call me Thej.</subtitle>
      <title>Thejesh GN</title>
      <updated>2026-09-05T05:07:38Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>https://sirfharu.codeberg.page/post/how-much-more-inter-caste-marriages-do-we-need/</id>
    <link href="https://sirfharu.codeberg.page/post/how-much-more-inter-caste-marriages-do-we-need/" rel="alternate" type="text/html"/>
    <title>How Much More Inter-Caste Marriages do we Need?</title>
    <summary>Looking at the Bihar Caste Census of 2022</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>It’s hard to find the inter-caste marriage rate of Bihar. Most news articles that cite a figure for that say it’s around 4.7%. This figure is usually based on the third round of the National Family Health Survey in 2000s which defined inter-caste marriage as ‘marriage between 2 people of different caste status’. This means that a marriage between two people from different OBC castes with roughly equal status would not be considered an inter-caste marriage. Nor does the data consider non-Hindu couples, though it is very clear that casteism is not just a Hindu phenomenon. Keeping in mind these problems, we can make a very flaky assumption that inter-caste marriage rate in Bihar is 10%. (Yes, I like round numbers.)</p>
<p>We can now calculate the optimal amount of inter-caste marriages that are required in Bihar. “Optimal” since a rate of 100% would likely be counter productive because that would imply a high caste awareness AND an infinite aversion to it. I searched for the data from the Bihar Caste Census of 2022 and found a very deformed PDF in the search results; it was near impossible to apply OCR on it. (The problem was particularly acute because most of the online OCRs do not have support for Devanagari.) After some tussling I had to finally rely on a very sus article published by Hindustan newspaper. Post some cleaning (and manual checking) the result came out to be 95.8%.</p>
<p>Thus we need 95.8% of marriages to be inter-caste, and here we are (probably) at a miserable figure of 10%. I am pretty sure I am never going to see us achieve that target in my lifetime. I feel very miserable.</p>
<p>Anyway, here’s the R script that I created in the process:</p>
<div class="highlight"><pre class="chroma" tabindex="0"><code class="language-r"><span class="line"><span class="cl"><span class="n">url</span> <span class="o">&lt;-</span>
</span></span><span class="line"><span class="cl">  <span class="nf">paste0</span><span class="p">(</span><span class="s">"https://www.livehindustan.com/bihar/story-bihar-caste-survey-count"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">         <span class="s">"ing-census-full-list-population-share-percent-obc-ebc-upper-caste"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">         <span class="s">"-muslim-hindu-sc-st-8792660.html"</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">page_html</span> <span class="o">&lt;-</span> <span class="n">rvest</span><span class="o">::</span><span class="nf">read_html</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">tables</span> <span class="o">&lt;-</span> <span class="n">page_html</span> <span class="o">|&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="n">rvest</span><span class="o">::</span><span class="nf">html_elements</span><span class="p">(</span><span class="s">"table"</span><span class="p">)</span> <span class="o">|&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="n">rvest</span><span class="o">::</span><span class="nf">html_table</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">data</span> <span class="o">&lt;-</span> <span class="nf">rbind</span><span class="p">(</span><span class="n">tables[[1]]</span><span class="p">,</span> <span class="n">tables[[2]]</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">data</span> <span class="o">&lt;-</span> <span class="n">data[</span><span class="m">-1</span><span class="p">,</span><span class="n">]</span>
</span></span><span class="line"><span class="cl"><span class="n">data</span> <span class="o">&lt;-</span> <span class="n">data[</span><span class="m">-3</span><span class="n">]</span>
</span></span><span class="line"><span class="cl"><span class="nf">colnames</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">&lt;-</span> <span class="nf">c</span><span class="p">(</span><span class="s">"caste"</span><span class="p">,</span> <span class="s">"number"</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">data</span> <span class="o">&lt;-</span> <span class="n">data</span> <span class="o">|&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="n">dplyr</span><span class="o">::</span><span class="nf">mutate</span><span class="p">(</span><span class="n">dplyr</span><span class="o">::</span><span class="nf">across
</span></span></span><span class="line"><span class="cl"><span class="nf">                </span><span class="p">(</span><span class="n">caste</span><span class="p">,</span> <span class="o">~</span> <span class="n">stringr</span><span class="o">::</span><span class="nf">str_replace_all</span><span class="p">(</span><span class="n">.x</span><span class="p">,</span> <span class="s">"\\s*-\\s*"</span><span class="p">,</span> <span class="s">" - "</span><span class="p">)))</span> <span class="o">|&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="n">dplyr</span><span class="o">::</span><span class="nf">mutate</span><span class="p">(</span><span class="n">dplyr</span><span class="o">::</span><span class="nf">across</span><span class="p">(</span><span class="n">number</span><span class="p">,</span> <span class="n">readr</span><span class="o">::</span><span class="n">parse_integer</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">data[23</span><span class="p">,</span> <span class="m">2</span><span class="n">]</span> <span class="o">&lt;-</span> <span class="m">1868192</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">dplyr</span><span class="o">::</span><span class="nf">glimpse</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">(</span><span class="m">1</span> <span class="o">-</span> <span class="p">(</span><span class="nf">sum</span><span class="p">(</span><span class="nf">choose</span><span class="p">(</span><span class="n">data</span><span class="o">$</span><span class="n">number</span><span class="p">,</span> <span class="m">2</span><span class="p">))</span> <span class="o">/</span> <span class="nf">choose</span><span class="p">(</span><span class="nf">sum</span><span class="p">(</span><span class="n">data</span><span class="o">$</span><span class="n">number</span><span class="p">),</span> <span class="m">2</span><span class="p">)))</span> <span class="o">*</span> <span class="m">100</span>
</span></span></code></pre></div><p>And here’s the CSV after all the cleaning: <a href="https://sirfharu.codeberg.page/post/how-much-more-inter-caste-marriages-do-we-need/caste.csv">caste.csv</a>.</p>
<p>PS: the data that I used from Bihar Caste Census of 2022 includes all people, not just adults in the usual range of 18-65 years. It’s something to keep in mind while interpreting the data.</p></div>
    </content>
    <updated>2026-07-16T00:00:00Z</updated>
    <published>2026-07-16T00:00:00Z</published>
    <source>
      <id>https://sirfharu.codeberg.page/</id>
      <logo>https://sirfharu.codeberg.page/img/og-img.jpeg</logo>
      <author>
        <name>सिर्फ春</name>
      </author>
      <link href="https://sirfharu.codeberg.page/" rel="alternate" type="text/html"/>
      <link href="https://sirfharu.codeberg.page/index.xml" rel="self" type="application/rss+xml"/>
      <rights>Licensed with 🤍 under CC BY-NC-SA 4.0</rights>
      <subtitle>Recent content on सिर्फ春</subtitle>
      <title>सिर्फ春</title>
      <updated>2026-07-16T00:00:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>https://sirfharu.codeberg.page/post/i-made-a-r-package/</id>
    <link href="https://sirfharu.codeberg.page/post/i-made-a-r-package/" rel="alternate" type="text/html"/>
    <title>I made a R package!</title>
    <summary>AMAJING EXPERIANCE 10/10 RECOMMENDED</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Going through a boring summer break is very boring. So instead of wasting my wasted time on reading books, I decided to waste it on creating my first R package. I think it took about 10-15 days to do that (without using any sort of vibe coding), but the result was a very satisfactory scraper for <a href="https://chess-results.com">chess-results.com</a> which can blow through almost all kinds of tournaments.</p>
<p>The package is also live on CRAN as <a href="https://cran.r-project.org/package=chessResults">chessResults</a>. So, you can install it by just using <code>install.packages("chessResults")</code>. For people who don’t know about the acceptance criteria for CRAN, here’s a summary: it’s hard. For instance, my package was automatically rejected for using “Scraper for chess-results.com” instead of “Scraper for Chess-Results.com”. (Yes, apparently you are supposed to apply title case even on your links.) Thankfully I was lucky to only have a small R script (of 500 lines at the time of writing) for submission. The human reviewer accepted it on the first try, which is a very rare feat.</p>
<p>After that I also <a href="https://sirfharu.codeberg.page/chessresults">made a documentation</a> for it. I NOW EVEN HAVE A FUCKING DOI. (<a href="https://doi.org/10.32614/CRAN.package.chessResults">10.32614/CRAN.package.chessResults</a>). H O L Y F U C K.</p>
<p>I think the result is very cool.</p></div>
    </content>
    <updated>2026-07-11T00:00:00Z</updated>
    <published>2026-07-11T00:00:00Z</published>
    <source>
      <id>https://sirfharu.codeberg.page/</id>
      <logo>https://sirfharu.codeberg.page/img/og-img.jpeg</logo>
      <author>
        <name>सिर्फ春</name>
      </author>
      <link href="https://sirfharu.codeberg.page/" rel="alternate" type="text/html"/>
      <link href="https://sirfharu.codeberg.page/index.xml" rel="self" type="application/rss+xml"/>
      <rights>Licensed with 🤍 under CC BY-NC-SA 4.0</rights>
      <subtitle>Recent content on सिर्फ春</subtitle>
      <title>सिर्फ春</title>
      <updated>2026-07-16T00:00:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>https://sirfharu.codeberg.page/post/how-to-edit-andors-trail-savegames/</id>
    <link href="https://sirfharu.codeberg.page/post/how-to-edit-andors-trail-savegames/" rel="alternate" type="text/html"/>
    <title>How to Edit Andor's Trail Savegames</title>
    <summary>It is supposed to be easy, if you have an idea.</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>In my last post I praised <em>Andor’s Trail</em> for being an amazing game. I ended that post with saying that I would be editing the savegame file to get me some extra exp so that I can finish the story of the game more quickly.</p>
<p>The process turned out to be very confusing, especially due to the fact that the developers condone any editing. After reading various very ambiguous forum posts, I have arrived at the following step-by-step guide on how to actually edit the files correctly. Please don’t use this information to cheat the leaderboard!</p>
<ol>
<li>
<p>Export the savegame file from the game using the load menu. Also backup another file in case you fuck it up very bad.</p>
</li>
<li>
<p>Download a hex editor (if you don’t have one) since that would be required to edit the savegame. I recommend HexViewer since it’s an azad mobile editor with a very simple interface.</p>
</li>
<li>
<p>Open the file in the hex editor. In the plain text version of the document (which can be accessed from the 3-dot menu in HexViwer) the start should look something like this:</p>
<p>U sirfharu level 31, 539790 exp, 15175 gold</p>
<p>DO NOT EDIT THIS LINE SINCE IT IS USELESS AND WOULD PROBABLY CORRUPT YOUR SAVEGAME FILE! Copy the value you want to edit. Since I wanted to change the exp, I will copy the 539790.</p>
</li>
<li>
<p>Go online and get any online decimal to hex converter. Convert the copied number to hex. In my case it turns out to be 83c8e.</p>
</li>
<li>
<p>Go back to the hex version of the document. Search the hex that you got from the last step. Since 83c8e contains an odd number of digits I will be searching it as 083c8e instead.</p>
</li>
<li>
<p>You usually get a single hit for your search. If there are multiple hits, you might need to compare the different hits for the correct one. Once you have the part you want to edit, change the digits to the required number. In my case I am changing 083c8e to 0fffff. Notice that I didn’t introduce any extra digits because that would again corrupt the file.</p>
</li>
<li>
<p>Import the file from your game and enjoy!</p>
</li>
</ol>
<p>If you search for your character name, you can also find some other stats around it. Say you want to increase the number of health potions you have. I have not done that, but I think that it would be a lot more easier now that I (and you) know how to edit at least the exp. Editing quests seems to be a lot more involving, and I have no idea how to that, nor can I find any information online on that topic.</p></div>
    </content>
    <updated>2026-07-09T00:00:00Z</updated>
    <published>2026-07-09T00:00:00Z</published>
    <source>
      <id>https://sirfharu.codeberg.page/</id>
      <logo>https://sirfharu.codeberg.page/img/og-img.jpeg</logo>
      <author>
        <name>सिर्फ春</name>
      </author>
      <link href="https://sirfharu.codeberg.page/" rel="alternate" type="text/html"/>
      <link href="https://sirfharu.codeberg.page/index.xml" rel="self" type="application/rss+xml"/>
      <rights>Licensed with 🤍 under CC BY-NC-SA 4.0</rights>
      <subtitle>Recent content on सिर्फ春</subtitle>
      <title>सिर्फ春</title>
      <updated>2026-07-16T00:00:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>https://sirfharu.codeberg.page/post/andors-trail-is-a-very-nice-game/</id>
    <link href="https://sirfharu.codeberg.page/post/andors-trail-is-a-very-nice-game/" rel="alternate" type="text/html"/>
    <title>Andor's Trail is a Very Nice Game</title>
    <summary>I didn't know a pixel art game would be so much fun!</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I don’t play games very often, and when I do they usually turn out to be a very short fling. However, once in a while a game comes up which is so good that I can’t stop myself from spending hours into it. One of my newest addition to this latter category is <em>Andor’s Trail</em>. It looks like this:</p>
<p><img alt="Screenshot of Andor&#x2019;s Trail where the main character is in a town called Prim. There are a few shops nearby, though they don&#x2019;t have much to sell because of the recent attacks by red monsters. Feygrad guards are on the entrance to protect the town. The streets are mostly empty." src="https://sirfharu.codeberg.page/post/andors-trail-is-a-very-nice-game/game.jpg"/></p>
<p>Most people don’t play this kind of pixel art games nowadays, and I didn’t either since I considered the art style to be a past era of the gaming industry. However, I didn’t have much to do anyway, so I decided to give it a shot. It was good.</p>
<p><strong>NOTICE: MINOR SPOILERS AHEAD TALKING ABOUT SOME SIDE-QUESTS WHICH ARE NOT DIRECTLY RELATED TO THE MAIN STORY.</strong></p>
<p>The gameplay is mostly about you exploring a very very large world filled with very very interesting stories. In one quest I had to destroy a dam which was recently constructed for the poor people of East Brimhaven. When I reported the rich person, who had indirectly hired me, I was informed that the rich person later gifted a horse to the corrupt captain and got a nice contract to repair the dam in return. In another instance I killed a lot of innocent sheep because their simple owner denounced their partner a few years ago for engaging in a shady business.</p>
<p>Oh the misery I felt during (and after) these awful missions.</p>
<p>Thankfully there were also some moments which made me jump in joy. Like this one situation where a group of woodcutters cleared some trees to give me a shortcut to Blackwater Mountains. Anyone who has to travel through the tough path going along Stoutford and Prim would agree with me how happy this new path can make you. (I am going to ignore how I had to revengefully kill big honeybees for just <em>stinging</em> the woodcutters who had destroyed the entire forest where they used to live.)</p>
<p>If you can handle the story then you might want to give this game a try. I am currently at level 30, but I would soon stop playing this because it is just too addictive. However, before that I would be editing the save files to give me an insane amount of exp so that I can see the rest of the completed story before deleting the app.</p>
<p>PS: There is some “grinding” involved in the game where you would not be able to continue the story unless you seriously level up your character. You might just want to skip this game if grinding is not your style.</p>
<p>PS: PS: The “Andor” of <em>Andor’s Trail</em> refers to the brother of the main character. You will soon learn that Andor is now unrecognizable.</p></div>
    </content>
    <updated>2026-07-07T00:00:00Z</updated>
    <published>2026-07-07T00:00:00Z</published>
    <source>
      <id>https://sirfharu.codeberg.page/</id>
      <logo>https://sirfharu.codeberg.page/img/og-img.jpeg</logo>
      <author>
        <name>सिर्फ春</name>
      </author>
      <link href="https://sirfharu.codeberg.page/" rel="alternate" type="text/html"/>
      <link href="https://sirfharu.codeberg.page/index.xml" rel="self" type="application/rss+xml"/>
      <rights>Licensed with 🤍 under CC BY-NC-SA 4.0</rights>
      <subtitle>Recent content on सिर्फ春</subtitle>
      <title>सिर्फ春</title>
      <updated>2026-07-16T00:00:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>https://sirfharu.codeberg.page/post/removing-html-extension-from-urls-without-htaccess/</id>
    <link href="https://sirfharu.codeberg.page/post/removing-html-extension-from-urls-without-htaccess/" rel="alternate" type="text/html"/>
    <title>Removing .html Extension from URLs Without .htaccess</title>
    <summary>A smol Bash script.</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>If you are trying to remove .html from your URLs then you will find that online answers mostly rely on adding a .htaccess file to root. However, it is possible to achieve the same outcome by transferring your files from filename.html to filename/index.html. So, here’s a short Bash script to achieve that.</p>
<div class="highlight"><pre class="chroma" tabindex="0"><code class="language-bash"><span class="line"><span class="cl"><span class="c1"># The following code is licensed under GPL-3.0-or-Later.</span>
</span></span><span class="line"><span class="cl"><span class="c1"># The full text of the license can be read at the repo.</span>
</span></span><span class="line"><span class="cl"><span class="c1"># https://codeberg.org/SirfHaru/remove-dot-html</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">#!/bin/bash</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">find -name <span class="s1">'*.html'</span> ! -name <span class="s1">'index.html'</span> ! -name <span class="s1">'404.html'</span> <span class="p">|</span>
</span></span><span class="line"><span class="cl"><span class="k">while</span> <span class="nv">IFS</span><span class="o">=</span> <span class="nb">read</span> file<span class="p">;</span> <span class="k">do</span>
</span></span><span class="line"><span class="cl">  <span class="nv">folder</span><span class="o">=</span><span class="si">${</span><span class="nv">file</span><span class="p">%.*</span><span class="si">}</span>
</span></span><span class="line"><span class="cl">  mkdir <span class="nv">$folder</span>
</span></span><span class="line"><span class="cl">  mv <span class="nv">$file</span> <span class="nv">$folder</span>/index.html
</span></span><span class="line"><span class="cl">  <span class="nb">echo</span> <span class="s2">"moved </span><span class="nv">$file</span><span class="s2"> to </span><span class="nv">$folder</span><span class="s2">/index.html"</span>
</span></span><span class="line"><span class="cl"><span class="k">done</span>
</span></span></code></pre></div><p>The one major downside to this script is that people who were earlier using your filename.html link will now be met with a 404 error.</p></div>
    </content>
    <updated>2026-06-13T00:00:00Z</updated>
    <published>2026-06-13T00:00:00Z</published>
    <source>
      <id>https://sirfharu.codeberg.page/</id>
      <logo>https://sirfharu.codeberg.page/img/og-img.jpeg</logo>
      <author>
        <name>सिर्फ春</name>
      </author>
      <link href="https://sirfharu.codeberg.page/" rel="alternate" type="text/html"/>
      <link href="https://sirfharu.codeberg.page/index.xml" rel="self" type="application/rss+xml"/>
      <rights>Licensed with 🤍 under CC BY-NC-SA 4.0</rights>
      <subtitle>Recent content on सिर्फ春</subtitle>
      <title>सिर्फ春</title>
      <updated>2026-07-16T00:00:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>https://sirfharu.codeberg.page/post/its-fine-to-not-know-the-varnamala/</id>
    <link href="https://sirfharu.codeberg.page/post/its-fine-to-not-know-the-varnamala/" rel="alternate" type="text/html"/>
    <title>It's Fine to not Know the Varnamala</title>
    <summary>The inability of Hindi speakers to recite the ABCs shouldn't be regarded as a failure.</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>As a Hindi speaker, if you have stayed on mainstream social media for long enough you would have probably came across a version of a video which looks like this: a person asks strangers to recite the ABCs of English, and once they are done with that they ask for the varnamala. The people are usually able to perform the former task but not the latter. The message at the end of the video was clear: Hindi speakers should be ashamed to not even know the basics of their native language while being excellent in a “foreign” language.</p>
<p>Aside from the “foreign” part there are various reasons as to why ignorance of the varnamala is not that big of a deal.</p>
<p>For one, there is no clear reason as to why people need to learn the varnamala. I don’t have a clear memory, but I don’t think I was ever asked to do a कखग ever in my life. My family and friends taught me a lot of words and then the kindergarten taught me how to write those words; there was absolutely no involvement of the sequence of those characters. I think a lot of other people had this experience too. Even when they were taught the varnamala they forgot it after some time because there is almost no use of it.</p>
<p>Other than practical considerations, there is also the problem of creating a false parallel with English. English has 26 characters while Hindi has almost double of it. Hindi varnamala is not consistent like English. And most importantly, as mentioned above Hindi characters are taught in a piecemeal fashion unlike English where you are supposed to memorize the whole string of ABCs.</p>
<p>So the fact that people are not able to recite their alphabets should absolutely not considered a shame.</p></div>
    </content>
    <updated>2026-06-12T00:00:00Z</updated>
    <published>2026-06-12T00:00:00Z</published>
    <source>
      <id>https://sirfharu.codeberg.page/</id>
      <logo>https://sirfharu.codeberg.page/img/og-img.jpeg</logo>
      <author>
        <name>सिर्फ春</name>
      </author>
      <link href="https://sirfharu.codeberg.page/" rel="alternate" type="text/html"/>
      <link href="https://sirfharu.codeberg.page/index.xml" rel="self" type="application/rss+xml"/>
      <rights>Licensed with 🤍 under CC BY-NC-SA 4.0</rights>
      <subtitle>Recent content on सिर्फ春</subtitle>
      <title>सिर्फ春</title>
      <updated>2026-07-16T00:00:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>https://sirfharu.codeberg.page/post/how-i-prepared-for-cuet-pg/</id>
    <link href="https://sirfharu.codeberg.page/post/how-i-prepared-for-cuet-pg/" rel="alternate" type="text/html"/>
    <title>How I Prepared for CUET-PG Economics (I Really Don't Want to Write This)</title>
    <summary>AAAAAAAAAAAAAAH THIS IS SUCH AN EMBARRASSING TOPIC.</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><blockquote>
<p>Disclaimer: I am making this post since I keep getting a lot of questions around this topic. For people who intend to give CUET-PG in future here’s a warning: this post will probably not be very useful for you and it might even increase your anxiety. Let me know if this post is missing anything.</p>
</blockquote>
<p>Initially I was not very worried about my admission into the masters course, that is until I read the question paper (PYQ) of JAM 2023. My performance wasn’t bad but it wasn’t spectacular either. My “concepts”, as coaching centers like to call them, were clear but I was losing a lot of marks due to calculations. I was now very scared.</p>
<p>And so I started in January 2026, one month before the next JAM and two months before the next CUET-PG. I decided to just solve JAM PYQs as my preparation and call it a day at that. My usual daily routine looked like this: open laptop, solve a question and look for solutions online if I am not able to do them, repeat. I also used pomodoro technique and it worked wonders for me with my focus increasing substantially. I did this routine every time I wasn’t at the college. Then stopped the preparation in the last week before the exam. My performance hadn’t showed much improvement in terms of calculation. But I gave my test and was pretty confident that I would make it in to the top 50.</p>
<p>Then after that I gave the CUET-PG without any preparation because of my high confidence. The week after the test the JAM results came up: I had only got a rank around top 100. I was depressed for a day, then I went back to my PYQ routine after I learned that IIT Delhi also has an internal exam for some extra seats. At this point I was very exhausted since all I was doing was look at PDFs full of questions all day long. I have now also started solving papers of some other popular tests.</p>
<p>Thankfully, the misery was short-lived as I got my CUET-PG scores in April next month. I have got a good rank, good enough to join IGIDR and DSE which are often considered better than IITs for economics. I was happy. I immediately gave up all of my preparations for IIT Delhi’s internal exam. (I forgot to apply for ISI MSQE, so I didn’t even had the choice to prepare for that.)</p>
<p>Anyway, I am very happy with my choice of IGIDR.</p></div>
    </content>
    <updated>2026-06-11T00:00:00Z</updated>
    <published>2026-06-11T00:00:00Z</published>
    <source>
      <id>https://sirfharu.codeberg.page/</id>
      <logo>https://sirfharu.codeberg.page/img/og-img.jpeg</logo>
      <author>
        <name>सिर्फ春</name>
      </author>
      <link href="https://sirfharu.codeberg.page/" rel="alternate" type="text/html"/>
      <link href="https://sirfharu.codeberg.page/index.xml" rel="self" type="application/rss+xml"/>
      <rights>Licensed with 🤍 under CC BY-NC-SA 4.0</rights>
      <subtitle>Recent content on सिर्फ春</subtitle>
      <title>सिर्फ春</title>
      <updated>2026-07-16T00:00:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>https://blog.aktsbot.in/self-hosting-webapps.html</id>
    <link href="https://blog.aktsbot.in/self-hosting-webapps.html" rel="alternate" type="text/html"/>
    <title>A guide to self-hosting web apps on a VPS</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><!-- Date: 02 Jun 2026 --> <h1>A guide to self-hosting web apps on a VPS</h1> <p><small>02 Jun 2026</small> </p><hr/><p/> <p>If you have not chosen a VPS provider, the following are what I've used</p> <ul> <li><a href="https://www.digitalocean.com/solutions/vps-hosting">Digitalocean</a></li> <li><a href="https://www.vultr.com/pricing/">Vultr</a></li> <li><a href="https://www.hostinger.com/in/vps-hosting">Hostinger</a></li> </ul> <p>So now you got yourself an account on a VPS provider and you plan to host your dream project(s) on it. Well done, fellow traveller. Let our journey commence!</p> <h2>Table of contents</h2> <ol> <li><a href="https://blog.aktsbot.in/rss_content.xml#choose-server">Choosing a server</a></li> <li><a href="https://blog.aktsbot.in/rss_content.xml#configure-server">Configuring our server</a> <ol> <li><a href="https://blog.aktsbot.in/rss_content.xml#tmux">tmux</a></li> <li><a href="https://blog.aktsbot.in/rss_content.xml#user-setup">A new user</a></li> <li><a href="https://blog.aktsbot.in/rss_content.xml#ssh-setup">Configuring ssh on the server</a></li> <li><a href="https://blog.aktsbot.in/rss_content.xml#webapp-setup">Setting up a webapp on the server</a> <ul> <li><a href="https://blog.aktsbot.in/rss_content.xml#dns">DNS</a></li> <li><a href="https://blog.aktsbot.in/rss_content.xml#runtimes">Installing runtimes and dependencies</a></li> <li><a href="https://blog.aktsbot.in/rss_content.xml#app-directories">Application directories</a> </li> <li><a href="https://blog.aktsbot.in/rss_content.xml#nginx">Setting up nginx</a> </li> <li><a href="https://blog.aktsbot.in/rss_content.xml#certbot-https">Certbot HTTPS</a> </li> </ul></li> </ol></li> <li><a href="https://blog.aktsbot.in/rss_content.xml#finishing-up">Finishing up</a></li> </ol> <h2>Choosing a server <a name="choose-server"/></h2> <p>Most VPS offerings start from a VM that has</p> <ul> <li>2 cpu cores</li> <li>25 GB ssd storage</li> <li>1 GB of RAM.</li> </ul> <p>This should roughly cost us around 5-6 USD a month.</p> <p>By all means this should be more than enough for most hobby projects. How much RAM and CPU are your projects consuming when they're running on your laptop/desktop? This should be the only deciding factor for choosing the specs of your VM.</p> <p>As for the operating system, if you are unsure, choose Debian GNU\Linux.</p> <h2>Configuring our server <a name="configure-server"/></h2> <p>When we provision a VPS, we get a public IP assigned to our VPS/server. To connect to the VPS we'd do something like this from our terminal</p> <pre><code>dev$ ssh root@12.13.14.15 </code></pre> <p>Digitalocean for example, enables root logins via ssh to our new server. For other VPS providers it maybe different. They may provide a normal user which can sudo to root.</p> <pre><code>dev$ ssh admin@12.13.14.15 </code></pre> <p>If you need to specify the private key file, the command would look like</p> <pre><code>dev$ ssh admin@12.13.14.15 -i /path/to/private-key.pem </code></pre> <p>There's a handy config that let's you not worry about ips and usernames while connecting to a server. Create <code>$HOME/.ssh/config</code> if it does not exist and add the following at the end</p> <pre><code>Host myvps Hostname 12.13.14.15 User admin IdentityFile /path/to/private-key.pem </code></pre> <p>And then you could do</p> <pre><code>dev$ ssh myvps </code></pre> <p>and we are in our server. Please note that the <code>.ssh</code> folder and its content needs to have their permissions in order. If we screw up, run the following</p> <pre><code>chmod 700 ~/.ssh chmod 600 ~/.ssh/id_* chmod 600 ~/.ssh/config chmod 644 ~/.ssh/*.pub </code></pre> <p>I usually keep all of my private and public keypairs in the <code>$HOME/.ssh</code> folder, so that it becomes easy for me to do backups.</p> <p>Lets login into the VM and get cracking</p> <pre><code>server$ sudo apt update server$ sudo apt upgrade </code></pre> <p>This updates and upgrades the installed software in our server. Now, we'll install a few handy tools to make our server management life a bit easier.</p> <pre><code>server$ sudo apt install tmux neovim git curl htop </code></pre> <h3>1. tmux <a name="tmux"/></h3> <p><code>tmux</code> should be the first thing you run when you login into a VPS. Why? In the event that our ssh connection dies, any commands we were running on the server would still be running inside tmux. Let's configure it a bit</p> <pre><code>server$ nano ~/.tmux.conf </code></pre> <p>Put the following in it</p> <pre><code># Index starts from 1 set-option -g base-index 1 set-option -g pane-base-index 1 # Renumber windows when a window is closed set-option -g renumber-windows on # no login shell set -g default-command "${SHELL}" # 256-color terminal set -g default-terminal "tmux-256color" # use 256 colors instead of 16 # Add truecolor support (tmux info | grep Tc) set-option -ga terminal-overrides ",xterm-256color:Tc" # Mouse set-option -g mouse on # Reload ~/.tmux.conf bind-key R source-file ~/.tmux.conf \; display-message "Reloaded!" </code></pre> <p><code>Ctrl+o</code> and <code>Ctrl+x</code> to save and quit out of nano. If you roll with <code>vim</code>, use it to edit the files mentioned in the guide instead of <code>nano</code>.</p> <p>Now run <code>tmux</code></p> <pre><code>server$ tmux </code></pre> <p>We should see a green bar at the bottom indicating that we are in a tmux session. <a href="https://www.youtube.com/watch?v=vtB1J_zCv8I">Here's a quick video</a> on how to use tmux.</p> <p>Whenever I login into my server, this is what I do</p> <pre><code>server$ tmux ls 0: 1 windows (created Tue Jun 24 23:19:42 2025) server$ tmux a -t 0 # or which ever session </code></pre> <h3>2. A new user <a name="user-setup"/></h3> <p>If your VPS provider sets you up with the root account by default, then its a good idea to create a normal user.</p> <pre><code>server# adduser jim </code></pre> <p>Fill in the prompts that follow. The add our new user to the <code>sudo</code> group so that we can run <code>sudo</code> commands. Replace <code>jim</code> with your preferred username.</p> <pre><code>server# usermod -aG sudo jim </code></pre> <p>Let's check if <code>jim</code> has powers by switching to the account.</p> <pre><code>server# su - jim </code></pre> <p>Let's do something only root can do, like copying over the <code>.ssh</code> folder in <code>/root</code> to jim's home folder so that jim can login via ssh.</p> <pre><code>server$ sudo cp -r /root/.ssh ~/.ssh [sudo] password for jim: </code></pre> <p>Provide jim's password and the command should have succeeded. Fix permissions of the new folder</p> <pre><code>server$ chmod 700 ~/.ssh server$ chmod 644 ~/.ssh/authorized_keys </code></pre> <p>Let's now try to connect to our VPS with this new user.</p> <pre><code>dev$ ssh jim@12.13.14.15 </code></pre> <p>All good?</p> <h3>3. Configuring ssh on the server <a name="ssh-setup"/></h3> <p>We need to make 3 changes</p> <ul> <li>prevent root ssh logins</li> <li>only allow ssh logins with private keys i.e no password logins</li> <li>change port to something other than 22</li> </ul> <p>Have two terminals with ssh to our server open. And do the following in one of them.</p> <pre><code>server$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig server$ sudo vim /etc/ssh/sshd_config </code></pre> <p>Backups saves lives!</p> <p>Make the following changes in the file. Find the corresponding line and change it.</p> <pre><code>Port 2202 PermitRootLogin no PasswordAuthentication no </code></pre> <p>If the line of interest has a <code>#</code> infront, remove it before saving. Otherwise, it'd be considered as a comment. For example</p> <pre><code>#PermitRooLogin yes </code></pre> <p>should become</p> <pre><code>PermitRootLogin no </code></pre> <p>Then save the file and exit. Restart the sshd service on the server</p> <pre><code>server$ sudo service ssh restart </code></pre> <p>Logout from one of the terminals and connect to the server like so</p> <pre><code>dev$ ssh jim@12.13.14.15 -i /path/to/private-key.pem -p 2202 </code></pre> <p>If not able to connect, we have the other terminal from which we can debug. If all is well, make our lives easy by making the appropriate edits to <code>$HOME/.ssh/config</code> on our dev machine.</p> <pre><code>Host myvps Hostname 12.13.14.15 Port 2202 User jim IdentityFile /path/to/private-key.pem </code></pre> <p>Check once again with</p> <pre><code>dev$ ssh myvps </code></pre> <h3>4. Setting up a webapp on the server <a name="webapp-setup"/></h3> <p>It is hard naming things, so unfortunately the actual physical machine that runs our webapp and the software that it has to run to serve content - like our webapp, html files, images files etc is also called a web server.</p> <p>This guide will use a web server program called <a href="https://nginx.org/">nginx</a>. Almost all webserver software allows one to host multiple websites on a single vps/server. <a href="https://httpd.apache.org/">Apache</a> pioneered this technique and this is exactly what we need to host multiple projects on a single VPS.</p> <p>Here's our hypothetical webapp</p> <ul> <li><u><strong>https://myapp.com</strong></u> is a react.js SPA.</li> <li>https://myapp.com<u><strong>/api</strong></u> is a nodejs api that the above react frontend would consume.</li> <li>https://<u><strong>api.</strong></u>myapp.com is the same nodejs api as above. </li> </ul> <p>Assuming, we bought the domain myapp.com ofcourse.</p> <h4>4.1 DNS <a name="dns"/></h4> <p>Head over to where you purchased the myapp.com domain(namecheap/godaddy/bigrock?) and add an <code>A</code> record with <code>@</code> as sub-domain to it. Set the destination to our VPS's public IP.</p> <pre><code>A @ 12.13.14.15 </code></pre> <p>After this is done, all requests to myapp.com, foo.myapp.com, bar.myapp.com etc will all land on our new VPS.</p> <h4>4.2 Installing runtimes and dependencies <a name="runtimes"/></h4> <p>We are installing node.js here as our hypothetical webapp's backend needs it to run.</p> <pre><code>server$ curl -fsSL https://deb.nodesource.com/setup_23.x -o nodesource_setup.sh server$ sudo -E bash nodesource_setup.sh server$ sudo apt-get install -y nodejs server$ node -v </code></pre> <p>Refer <a href="https://github.com/nodesource/distributions">nodesource</a> for latest instructions on how to install node if you are reading this in the very future.</p> <p>Now lets set up our database. </p> <p><strong>a. sqlite</strong> <a name="sqlite"/></p> <p>If your application can make due with <code>sqlite</code>, then please go with sqlite. Then as your application grows, switch over to an database system like postgres or mongodb. Most ORMs used in backend codebases support switching database systems. So, a switch like this would not pose a challenge.</p> <pre><code>server$ sudo apt install sqlite3 </code></pre> <p>Put the following in <code>~/.sqliterc</code></p> <pre><code>.headers on .mode column </code></pre> <p>Then to open a database</p> <pre><code>server:/var/projects/dbs$ sqlite3 myapp.db </code></pre> <p><strong>b. postgres</strong></p> <p>Just a side note, its a good idea to run database systems like postgres, mariadb/mysql, mongodb etc on a separate VPS. More on that later.</p> <p>Onto installing postgres. Latest instructions for doing that are available on the <a href="https://www.postgresql.org/download/linux/debian/">postgres website</a>. Run the following one by one on the server.</p> <pre><code>sudo apt install curl ca-certificates sudo install -d /usr/share/postgresql-common/pgdg sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc . /etc/os-release sudo sh -c "echo 'deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt $VERSION_CODENAME-pgdg main' &gt; /etc/apt/sources.list.d/pgdg.list" sudo apt update sudo apt -y install postgresql </code></pre> <p>Next we setup a database user with which we can access the application database from the myapp backend.</p> <pre><code>server$ sudo su - postgres -c "createuser myappdbuser --pwprompt" </code></pre> <p>The above prompts you for a password for the myappdbuser.</p> <p>Create the application database, if not done so already.</p> <pre><code>server$ sudo su - postgres -c "createdb myapp_db" </code></pre> <p>Now we grant acces to <code>myappdbuser</code> to <code>myapp_db</code>.</p> <pre><code>server$ sudo -u postgres psql psql&gt; GRANT ALL PRIVILEGES ON DATABASE myapp_db TO myappdbuser; </code></pre> <p>The connection string for your application would look like so</p> <pre><code>postgres://myappdbuser:s3cr3tPass@localhost:5432/myapp_db </code></pre> <p>If you decided to host the database on a separate vps,</p> <pre><code>server$ sudo cp /etc/postgresql/&lt;version&gt;/main/postgresql.conf /etc/postgresql/&lt;version&gt;/main/postgresql.conf.orig server$ sudo vim /etc/postgresql/&lt;version&gt;/main/postgresql.conf </code></pre> <p>Look for the line that says</p> <pre><code>#listen_addresses = 'localhost' </code></pre> <p>and change it to</p> <pre><code>listen_addresses = 'localhost,10.2.3.4' # the above is the private ip for the database vps </code></pre> <p>Restart postgres</p> <pre><code>server$ sudo service postgresql restart </code></pre> <p>Now the connection string for your application would look like so</p> <pre><code>postgres://myappdbuser:s3cr3tPass@10.2.3.4:5432/myapp_db </code></pre> <p><strong>c. mysql/mariadb</strong></p> <pre><code>server$ sudo apt install mariadb-server server$ sudo mysql_secure_installation </code></pre> <p>In the prompts that follow</p> <pre><code>Enter current password for root (enter for none): Switch to unix_socket authentication [Y/n] n Change the root password? [Y/n] Y </code></pre> <p>Set the new root password and we're all set. Lets create a new database user instead of using root for our day to day.</p> <pre><code>server$ sudo mariadb </code></pre> <p>Next, we'll create the user</p> <pre><code>MariaDB [(none)]&gt; GRANT ALL ON announcing-litebb.md announcing-poof.md announcing-spb-lil.md autologin-sway-debian.md better-font-rendering-linux.md color-me-baby.md copy-paste-vim-slackware.md dwm-st-installation.md hello-lc230.md install-docker-linux.md javascript-callbacks-promises-async-await.md lubuntu-i3wm-awesomeness.md minimal-unix-setup-sowm.md multiple-ssh-keys-for-services.md no-more-blurry-fonts.md openbsd-getting-started.md polkit-thunar-mount.md self-hosting-webapps.md setting-up-neomutt-offlineimap-msmtp.md __skeleton.md__ slackware-install-lvm-luks.md slackware-kernel-patch-install.md slackware-post-install.md swaywm-on-debian-11.md vim-to-neovim.md xml.xml TO 'admin'@'localhost' IDENTIFIED BY 'p4ssw0rd' WITH GRANT OPTION; MariaDB [(none)]&gt; FLUSH PRIVILEGES; </code></pre> <p>Please note, what we did here was making a user similar to root. We'll create an application specific user next that we'll use for our <code>myapp</code> webapp.</p> <pre><code>MariaDB [(none)]&gt; CREATE DATABASE myapp_db; MariaDB [(none)]&gt; GRANT ALL ON myapp_db.* TO 'myappdbuser'@'localhost' IDENTIFIED BY 'N3wp4ssw0rd' WITH GRANT OPTION; MariaDB [(none)]&gt; FLUSH PRIVILEGES; MariaDB [(none)]&gt; exit </code></pre> <p>The connection string for our application would look like so</p> <pre><code>mysql://myappdbuser:N3wp4ssw0rd@localhost:3306/myapp_db </code></pre> <p>If we decide to run mariadb on a separate VPS, make the following edit in <code>/etc/mysql/my.cnf</code></p> <pre><code>... bind-address = 10.2.3.4,127.0.0.1 ... </code></pre> <p>Then restart the service</p> <pre><code>server$ sudo service mariadb restart </code></pre> <p>The connection string will now look like so,</p> <pre><code>mysql://myappdbuser:N3wp4ssw0rd@10.2.3.4:3306/myapp_db </code></pre> <h4>4.3 Application directories <a name="app-directories"/></h4> <p>The following is just a convention I use. Feel free to put your application whereever you like.</p> <pre><code>server$ sudo mkdir -p /var/projects/myapp.com/{frontend,backend} server$ sudo chown -R $USER /var/projects/myapp.com </code></pre> <p>Now get the code into the folders. Let's start by building and copying over the frontend project from our dev machine.</p> <pre><code>dev:frontend$ npm run build dev:frontend$ ls ./ ../ dist/ src/ package.json </code></pre> <p>The <strong>dist</strong> folder is what we want to deploy. Let's make an archive of it, so that we can copy it over easily.</p> <pre><code>dev:frontend$ tar -czf dist.tar.gz -C dist/ . </code></pre> <p>Now lets copy the archive over to our server.</p> <pre><code>dev:frontend$ scp -i ~/.ssh/private-key.pem \ -P 2202 \ dist.tar.gz jim@12.13.14.15:/var/projects/myapp/frontend </code></pre> <p>Let's extract the archive</p> <pre><code>dev:frontend$ ssh myvps "cd /var/projects/myapp/frontend; tar xzf dist.tar.gz; rm dist.tar.gz; ls" </code></pre> <p>if all went well, we should see the built react project in that folder in our server. Here's a handy <code>deploy.sh</code> script that has all of the above. Put this in your project root and add to <code>.gitignore</code></p> <pre><code>#!/bin/sh npm run build tar -czf dist.tar.gz -C dist/ . scp -i ~/.ssh/private-key.pem \ -P 2202 \ dist.tar.gz jim@12.13.14.15:/var/projects/myapp/frontend # or # scp dist.tar.gz myvps:/var/projects/myapp/frontend ssh myvps "cd /var/projects/myapp/frontend; tar xzf dist.tar.gz; rm dist.tar.gz; ls" </code></pre> <p>Lets do the same for our backend code.</p> <pre><code>dev:backend$ ls ./ ../ app/ .git/ node_modules/ package.json </code></pre> <p>Include all folders and files we need into the archive</p> <pre><code>dev:backend$ tar -czf api.tar.gz node_modules app package.json </code></pre> <p>Now lets copy the archive over to our server.</p> <pre><code>dev:backend$ scp api.tar.gz myvps:/var/projects/myapp/backend </code></pre> <p>Let's extract the archive</p> <pre><code>dev:backend$ ssh myvps "cd /var/projects/myapp/backend; tar xzf api.tar.gz; rm api.tar.gz; ls" </code></pre> <p>Here's a handy <code>deploy.sh</code> for this as well</p> <pre><code>#!/bin/sh # npm run build # - if its a typescript backend tar -czf api.tar.gz node_modules app package.json # or if its a typescript backend # tar -czf api.tar.gz node_modules dist package.json scp -i ~/.ssh/private-key.pem \ -P 2202 \ api.tar.gz jim@12.13.14.15:/var/projects/myapp/backend # or #scp api.tar.gz myvps:/var/projects/myapp/backend # NOTE: tweak this as per your project. ssh myvps "cd /var/projects/myapp/backend; tar xzf api.tar.gz; rm api.tar.gz; ls" </code></pre> <p>To run the backend, I use <a href="https://pm2.keymetrics.io">pm2</a>. Create a file called <code>pm2.config.cjs</code> in <code>/var/projects/myapp/backend</code> with the following. You can check this in with <code>git</code>.</p> <pre><code>module.exports = { apps: [ { name: "myapp-api", script: "./app/index.js", }, ], }; </code></pre> <p>And then I check if my project <strong>secrets</strong> in the file <code>/var/projects/myapp/backend/.env</code> are all set.</p> <p>Then to run the backend, its a simple</p> <pre><code>server$ npx pm2 start pm2.config.cjs </code></pre> <p>To see the logs</p> <pre><code>server$ npx pm2 logs myapp-api </code></pre> <h4>4.4 Setting up nginx <a name="nginx"/></h4> <p>This is the webserver that we talked about earlier. Install it with</p> <pre><code>server$ sudo apt install nginx </code></pre> <p>Now on to setting up a vhost files for our webapp.</p> <pre><code>server$ sudo nvim /etc/nginx/sites-available/myapp_com.conf </code></pre> <p>Put the following in it</p> <pre><code>server { listen 80; root /var/projects/myapp/frontend/dist; index index.html index.htm; server_name myapp.com; location / { default_type "text/html"; try_files $uri.html $uri $uri/ /index.html; } # assumes the backend is running on port 3000 location /api { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } </code></pre> <p>Remember our hypothetical webapp's deployment plan?</p> <ol> <li><u><strong>https://myapp.com</strong></u> is a react.js SPA.</li> <li>https://myapp.com<u><strong>/api</strong></u> is a nodejs api that the above react frontend would consume.</li> <li>https://<u><strong>api.</strong></u>myapp.com is the same nodejs api as above. </li> </ol> <p>1 and 2 are covered by the above nginx config. We need one more file for hosting our api in its own sub-domain.</p> <pre><code>server$ sudo nvim /etc/nginx/sites-available/api_myapp_com.conf </code></pre> <p>Put the following in it</p> <pre><code>server { listen 80; server_name api.myapp.com; # assumes the backend is running on port 3000 location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } </code></pre> <p>Now to make nginx use these configs, we need to run the following</p> <pre><code>server$ sudo ln -s /etc/nginx/sites-available/myapp_com.conf /etc/nginx/sites-enabled/myapp_com.conf server$ sudo ln -s /etc/nginx/sites-available/api_myapp_com.conf /etc/nginx/sites-enabled/api_myapp_com.conf </code></pre> <p>We can ofcourse create the vhost files directly inside the <code>sites-enabled</code> folder, but it wouldnt be best practise.</p> <p>Now we restart nginx</p> <pre><code>server$ sudo service nginx restart </code></pre> <p>Anytime, we make a config change to nginx, check if there are any problems with the config with</p> <pre><code>server$ sudo nginx -t </code></pre> <p>If all green, update nginx with</p> <pre><code>server$ sudo service nginx reload </code></pre> <h4>4.5 Certbot HTTPS <a name="certbot-https"/></h4> <p>By now, visiting <strong>http:</strong>//myapp.com and <strong>http:</strong>//api.myapp.com should have loaded our webapp and the webapp's api. But we need that sweet sweet https.</p> <pre><code>server$ sudo apt install certbot python3-certbot-nginx server$ sudo certbot --nginx -d myapp.com -d api.myapp.com </code></pre> <p>certbot would ask a few questions and after that would give us the ssl certificates for our domains.</p> <p><strong>Note:</strong> Let's Encrypt SSL certificates(the ones that certbot sets us up with) expires after 3 months. By installing certbot with <code>apt</code>, we get a <code>systemd</code> timer also installed for checking the certificates' expiry. We can find it with</p> <pre><code>server$ sudo systemctl list-timers | grep certbot </code></pre> <h2>Finishing up <a name="finishing-up"/></h2> <p>Always remember to keep you server patched with updates. A simple set of</p> <pre><code>server$ sudo apt-get update server$ sudo apt upgrade server$ sudo apt dist-upgrade server$ sudo apt-cache clean </code></pre> <p>would be all thats needed to do this. </p> <p>Just a heads up, keep an eye on database software upgrades like postgres / mysql. <code>apt</code> will tell you the packages that are about to be upgraded when you run <code>apt upgrade</code>.</p> <p><strong>P.S always backup your database before upgrading.</strong></p> <p>And with that, well done webmaster!</p> <p><em>Happy Hacking &amp; have a great day!</em></p></div>
    </summary>
    <updated>2026-06-02T00:00:00Z</updated>
    <author>
      <name>aktsbot</name>
    </author>
    <source>
      <id>https://blog.aktsbot.in</id>
      <link href="https://blog.aktsbot.in" rel="alternate" type="text/html"/>
      <link href="https://blog.aktsbot.in/rss_content.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Blast your rss feed reader with regular updates from a not-so-boring part of the
      internet!</subtitle>
      <title>Nix and webdev news from aktsbot</title>
      <updated>2026-09-06T18:30:54Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>https://ravidwivedi.in/posts/budapest-travel/</id>
    <link href="https://ravidwivedi.in/posts/budapest-travel/" rel="alternate" type="text/html"/>
    <title>Budapest Travel</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>In September 2025, I attended the annual <a href="https://conference.libreoffice.org/2025/">LibreOffice conference</a> in Budapest, Hungary. This gave me an opportunity to explore the city, which I will cover in this post.</p>
<p>Let’s start with the currency. Although Hungary is a part of the European Union (EU), it doesn’t use the euro as its currency. Instead, it uses Hungarian forints (denoted by “Ft”). During my time in Hungary, 1 Indian rupee was equal to 4 Hungarian forints.</p>
<p>After reaching the Budapest airport, I bought a 15-day public transport pass. The public transport counter is after you pass customs and immigration. The pass allows unlimited use of public transport in the city. I had to show my passport and pay 5950 Ft to get the pass. The pass had my passport number mentioned on it. The public transport passes can also be bought at any of the tram stations as well.</p>
<figure><img alt="This is the counter from where I bought my public transport pass." src="https://ravidwivedi.in/images/budapest/pt-counter.avif"/><figcaption>
      <p>This is the counter from where I bought my public transport pass.</p>
    </figcaption>
</figure>

<figure><img alt="Budapest pass." src="https://ravidwivedi.in/images/budapest/budapest-pass.avif"/><figcaption>
      <p>My unlimited public transport pass for Budapest. I have redacted my passport number from it.</p>
    </figcaption>
</figure>

<figure><img alt="An automatic ticket machine" src="https://ravidwivedi.in/images/budapest/ticket-machine.avif"/><figcaption>
      <p>An automatic ticket machine at a tram station in Budapest.</p>
    </figcaption>
</figure>

<p>Budapest is a union of two cities—Buda and Pest—lying on opposite sides of the Danube River. My hotel—Corvin Hotel—was on the Pest side.</p>
<p>Budapest had good public transport. The buses, metros, and trams complemented each other. For example, the airport didn’t have metro or tram connectivity, but it was served by the bus. Most of the metro was on the Pest side, with only a couple of stations falling in Buda. However, both sides had an extensive network of trams.</p>
<p>Furthermore, the information about the public transport was easily accessible. For instance, the map of tram stops inside the trams also included the bus routes one could get after alighting at those stops.</p>
<p>From the airport, I took a bus followed by taking a metro on the M3 line to reach within walking distance of my hotel.</p>
<figure><img alt="An M3 line metro in Budapest." src="https://ravidwivedi.in/images/budapest/metro-m3.avif"/><figcaption>
      <p>An M3 line metro in Budapest.</p>
    </figcaption>
</figure>

<p>During the conference I would take the tram to the conference venue. The trams were modern and fast. They also had a smiley face at the front, which gave them a friendly look. It seemed like the trams were happily doing their job. The city also had a good pedestrian infrastructure along with separate cycling tracks.</p>
<figure><img alt="A tram in Budapest." src="https://ravidwivedi.in/images/budapest/tram1.avif"/><figcaption>
      <p>A tram in Budapest having a smiley face at the front.</p>
    </figcaption>
</figure>

<p>Budapest’s tap water is officially safe to drink, which was mentioned on a sticker posted on the wall of the bathroom of my hotel room. So, I did not need to buy any water bottles while I was there.</p>
<p>On the 6th of September, I went on a sightseeing tour of Budapest with my <a href="https://twistappel.com">Dione</a>. Our friend Attila, who was a local (from Hungary), joined us. We went to the central market from our hotel by metro.</p>
<p>If you read <a href="https://ravidwivedi.in/posts/vienna-day-trip">my post on Vienna</a>, I mentioned that the metro stations don’t have AFC gates but ticket validators instead. Budapest’s metro also has the same system. If you buy individual tickets, you need to validate them using the validators on the station before boarding the metro. If you are using a public transport pass like I was, then you do not need to validate, and you can board the metro directly.</p>
<figure><img alt="A ticket validator at a metro station in Budapest." src="https://ravidwivedi.in/images/budapest/ticket-validator.avif"/><figcaption>
      <p>A ticket validator at a metro station in Budapest.</p>
    </figcaption>
</figure>

<p>In 10-15 minutes, we reached the central market. Attila showed us around. I bought a fridge magnet and paprika powder as souvenirs. Paprika powder is a signature spice of Hungary. It is mainly available in two forms—one is sweet and the other being spicy. I wanted the spicy one, but I didn’t get that in that market. Therefore, I had to contend with buying the sweet version. The sweet version isn’t sweet though, it is just not spicy. After bringing that paprika powder home, it is mainly used for food coloring. I like it though and use it frequently in my omelets and other dishes.</p>
<figure><img alt="Central Market." src="https://ravidwivedi.in/images/budapest/central-market.avif"/><figcaption>
      <p>Central market.</p>
    </figcaption>
</figure>

<figure><img alt="A building with a tram in front of it." src="https://ravidwivedi.in/images/budapest/central-market-building.avif"/><figcaption>
      <p>The building right behind the tram is the central market building.</p>
    </figcaption>
</figure>

<p>At some point, Atilla had to join the The Document Foundation (TDF) sightseeing group, so we parted ways at the central market. Dione and I continued our sightseeing and decided to start with visiting the Hungarian parliament, which is a tourist attraction. It was because we were on the Pest side and the parliament was also on the same side, while other tourist attractions were on the Buda side.</p>
<p>So, Dione and I hopped on a tram and went to the parliament. We got off at a tram station just outside the parliament. The parliament is the icon of Budapest. The building has a gothic architecture and colored brown and white. One can buy tickets and take an inside tour. However, we didn’t have a lot of time, so we stayed outside the building.</p>
<figure><img alt="Hungarian Parliament building." src="https://ravidwivedi.in/images/budapest/hungarian-parliament1.avif"/><figcaption>
      <p>Hungarian Parliament building.</p>
    </figcaption>
</figure>

<p>After spending some time outside the parliament building, we took a tram to the Chain Bridge. As I mentioned earlier, Budapest has two parts—Buda and Pest—separated by the Danube River. To go from one of the sides to the other requires crossing a bridge. Although Budapest has many bridges linking the two sides, the main one is the Chain Bridge.</p>
<p>We walked on the chain bridge to get to the other side. The bridge gave a good view of the Danube River. It also had a statue of a lion. The Buda Castle (another major landmark of Budapest) was visible from the bridge.</p>
<figure><img alt="Chain Bridge." src="https://ravidwivedi.in/images/budapest/chain-bridge.avif"/><figcaption>
      <p>A shot of Chain Bridge.</p>
    </figcaption>
</figure>

<figure><img alt="A lion statue" src="https://ravidwivedi.in/images/budapest/lion-statue.avif"/><figcaption>
      <p>The lion statue on the Chain Bridge.</p>
    </figcaption>
</figure>

<p>After reaching the other side of the bridge (the Buda side), we sat on a bench for some time and then planned on where to go next. We decided to go to Fisherman’s Bastion, which is another tourist attraction.</p>
<p>We used the <a href="https://osmand.net/">OSMAnd~ app</a> to figure out which bus to take and hopped on one. Soon we reached Fisherman’s Bastion, where we found a flight of stairs that led upwards. Upon climbing the stairs, we got a panoramic view of the city. It also gave us a good view of the Hungarian parliament across the river. Going further upstairs, we found a statue of <a href="https://en.wikipedia.org/wiki/Stephen_I_of_Hungary">Stephen I of Hungary</a>. He was the first king of Hungary, getting the crown in the year 1900.</p>
<figure><img alt="A view of Hungarian parliament from Fisherman's bastion" src="https://ravidwivedi.in/images/budapest/hungarian-parliament2.avif"/><figcaption>
      <p>A view of Hungarian parliament from Fisherman’s bastion.</p>
    </figcaption>
</figure>

<p>I found Fisherman’s Bastion to be the best tourist attraction in the city. As mentioned earlier, it offers a panoramic view of the city, which I liked. I liked the arhitecture and open space there. If you find yourself in Budapest, I would highly recommend that you visit Fisherman’s Bastion.</p>
<figure><img alt="Fisherman's Bastion." src="https://ravidwivedi.in/images/budapest/fishermans-bastion.avif"/><figcaption>
      <p>Fisherman’s Bastion.</p>
    </figcaption>
</figure>

<figure><img alt="A green colored statue of King Stephen" src="https://ravidwivedi.in/images/budapest/king-stephen.avif"/><figcaption>
      <p>Statue of Stephen I of Hungary at Fisherman’s Bastion.</p>
    </figcaption>
</figure>

<p>Next, we went downstairs and returned to where the bus dropped us. From here on, we walked in random streets to see the residential and non-touristy side of Budapest. It was not so random as we walked towards <em>Batthyány tér</em> metro station. Upon reaching the metro station, we found a café where we stopped for a while for some coffee. After injecting some caffeine into our blood, we proceeded to find a place to have lunch.</p>
<figure><img alt="A metro station" src="https://ravidwivedi.in/images/budapest/batthyany-ter-metro-station.avif"/><figcaption>
      <p><em>Batthyány tér</em> metro station.</p>
    </figcaption>
</figure>

<p>For lunch, we decided to go to <em>Rákóczi tér</em> metro station after reading on the internet about the food options there. Upon exiting the metro station, we found a market inside a building that had a lot of shops, but most of them were closed.</p>
<p>After roaming around inside a bit, we found an Italian place open and decided to eat there. The name of this place was Matteos. We ordered an eggplant parmigiana, a lasagna artichoke, and a classic tiramisu. It wasn’t very tasty but filled us up for the day.</p>
<figure><img alt="The Italian place we had our lunch at." src="https://ravidwivedi.in/images/budapest/matteos.avif"/><figcaption>
      <p>A picture of Matteos, where we had our lunch.</p>
    </figcaption>
</figure>

<p>Budapest has four metro lines, and we had been to three of them, so we decided to try the remaining line, which was the M1 line. It is the oldest line in the city and has a different vibe than the modern lines. This line was opened in 1896, one of the oldest subway systems in the world.</p>
<p>The coaches were much smaller than the other metro lines, and the seating arrangement was something you would expect from a bus than a typical metro train. We rode all the way to the last stop, <em>Mexikói út</em>. Upon going outside, we found out there wasn’t much to do here.</p>
<p>At this point, I checked the map and realized that Heroes’ Square is just a couple of metro stations away. Heroes’ Square is a tourist attraction in Budapest. It is located in <em>Zuglóa</em> and is a historically significant place in Budapest. It has a monument which features the Seven chieftains of the Magyars.</p>
<figure><img alt="M1 line station and tracks." src="https://ravidwivedi.in/images/budapest/m1-station.avif"/><figcaption>
      <p>M1 line station and tracks. It is the oldest metro transit of Budapest and one of the oldest in the world. It started operations in 1896.</p>
    </figcaption>
</figure>

<p>Here, our unlimited public transport pass was handy because if it was paid per trip, we would think of the stop as a “wasted” one because we would have to buy a ticket again, but in this case we could just hop on again without any regrets.</p>
<figure><img alt="A metro train entering a station." src="https://ravidwivedi.in/images/budapest/metro-m1.avif"/><figcaption>
      <p>An M1 line metro train entering the station.</p>
    </figcaption>
</figure>

<p>So we took the M1 line again and deboarded at <em>Hősök tere</em> station, followed by walking to the square. After roaming around for a while, we saw a trolleybus and decided to ride on that.</p>
<figure><img alt="Heroes' Square" src="https://ravidwivedi.in/images/budapest/heros-square.avif"/><figcaption>
      <p>Heroes’ Square.</p>
    </figcaption>
</figure>

<figure><img alt="A trolleybus" src="https://ravidwivedi.in/images/budapest/trolleybus.avif"/><figcaption>
      <p>This is the trolleybus we took in Budapest.</p>
    </figcaption>
</figure>

<p>A trolleybus is an electric bus that is powered by overhead electric cables. It is like a tram but runs on roads instead of tracks. We got down at <em>Dózsa György út</em> metro station. Then we took a metro to our hotel.</p>
<p>Before going to the hotel, we went to a place to eat something. We had coffee and <em>lángos</em>. <em>Lángos</em> is a deep-fried Hungarian dish, which looks exactly like the Indian flatbread bhatura. I found it tasty, but since it was deep-fried, that was almost a given.</p>
<figure><img alt="A deep friend dish called L&#xE1;ngos." src="https://ravidwivedi.in/images/budapest/langos.avif"/><figcaption>
      <p>Lángos — a dish which looks like the Indian flatbread bhatura.</p>
    </figcaption>
</figure>

<p>The next day we went to Vienna—the capital of Austria—which I have already posted about. Check it out <a href="https://ravidwivedi.in/posts/vienna-day-trip/">here</a>.</p>
<p>I had a good time in Budapest, and it is a beautiful city with good public transport and some amazing sites to visit.
That’s it for now, and see you next time!</p>
<p><strong>Credits: Thanks Dione and Badri for proofreading.</strong></p></div>
    </summary>
    <updated>2026-05-29T14:26:28Z</updated>
    <published>2026-05-29T14:26:28Z</published>
    <source>
      <id>https://ravidwivedi.in/posts/</id>
      <author>
        <name>Ravi Dwivedi</name>
      </author>
      <link href="https://ravidwivedi.in/posts/" rel="alternate" type="text/html"/>
      <link href="https://ravidwivedi.in/posts/index.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Recent content in Posts on Ravi's Blog</subtitle>
      <title>Posts on Ravi's Blog</title>
      <updated>2026-05-29T14:26:28Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>https://sirfharu.codeberg.page/post/how-good-is-pure-randomization-for-indian-competitive-tests/</id>
    <link href="https://sirfharu.codeberg.page/post/how-good-is-pure-randomization-for-indian-competitive-tests/" rel="alternate" type="text/html"/>
    <title>How Good is Pure Randomization for Indian Competitive Tests?</title>
    <summary>A Redditor claimed they got a pretty decent marks by just randomly choosing from the four options. How likely is that?</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><blockquote>
<p>I got a very good rank in &lt;<em>insert exam name</em>&gt; without studying anything. I just chose anything lol</p>
<p>â€” Some Redditor</p>
</blockquote>
<p>This comment felt a very curious claim to me. See the exam that person is referring to, CUET-PG, is a pretty big one and if randomization is seriously that good then it would be pretty stupid to answer the questions yourself.</p>
<p>So I decided to check the marks of 2025 batch to see how likely the Redditor’s claim would be. Turns out a university called Nehru Gram Bharati has leaked the marks of all candidates, at least for the Economics section. (Fuck privacy bro!) The first result for “nehru gram bharti cuet pg economics marks” was for a PDF on their website.</p>
<p>It is, of course, difficult to do any data analysis on a PDF. I started looking for an azad software to do the PDF to spreadsheet conversion but didn’t get any. Eventually I was forced to use the Adobe Acrobat’s online tool which I think did the deed nicely.</p>
<p>I used <code>readxl</code> and <code>dplyr</code> for importing the file. Cleaning the data after that required some time but in the end I had a nice numeric vector:</p>
<div class="highlight"><pre class="chroma" tabindex="0"><code class="language-r"><span class="line"><span class="cl"><span class="c1"># load the spreadsheet</span>
</span></span><span class="line"><span class="cl"><span class="n">marks</span> <span class="o">&lt;-</span> <span class="nf">read_excel</span><span class="p">(</span><span class="s">"~/Documents/R/CUET/marks.xlsx"</span><span class="p">)</span> <span class="o">|&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="nf">pull</span><span class="p">(</span><span class="n">MARK_TOT</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># clean bad entries and convert type </span>
</span></span><span class="line"><span class="cl"><span class="n">marks</span> <span class="o">&lt;-</span> <span class="n">marks[</span><span class="o">!</span> <span class="n">marks</span> <span class="o">%in%</span> <span class="nf">c</span><span class="p">(</span><span class="s">"MARK_TOT"</span><span class="p">,</span> <span class="kc">NA</span><span class="p">)</span><span class="n">]</span>
</span></span><span class="line"><span class="cl"><span class="n">marks</span> <span class="o">&lt;-</span> <span class="nf">type.convert</span><span class="p">(</span><span class="n">marks</span><span class="p">)</span>
</span></span></code></pre></div><p>The final CSV after tidying is available at <a href="https://sirfharu.codeberg.page/post/how-good-is-pure-randomization-for-indian-competitive-tests/marks.csv">marks.csv</a>. A weird thing about that CSV is that it only contains 15,843 entries though there are supposed to be 18,379 students in the list. I have zero idea what happened to the rest.</p>
<p>I then looked up some basic things:</p>
<div class="highlight"><pre class="chroma" tabindex="0"><code class="language-r"><span class="line"><span class="cl"><span class="nf">median</span><span class="p">(</span><span class="n">marks</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 45</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nf">sd</span><span class="p">(</span><span class="n">marks</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 40</span>
</span></span></code></pre></div><p>I also plotted a graph just in case I was missing something.</p>
<p><img alt="A cumulative density function of the marks.csv. It looks quite boring." src="https://sirfharu.codeberg.page/post/how-good-is-pure-randomization-for-indian-competitive-tests/cdf.jpeg#center"/></p>
<p>The Redditor’s claim seem quite plausible in the light of the above data, even if we account for the 50 marks rise in cut offs this year. However, I focused my attention back to the comment. It says “<em>I just chose anything lol</em>”. Hmm. I think I have been looking at the problem in the wrong way. Pure randomization after all doesn’t have anything to do with the distribution of marks within the rest of the students.</p>
<p>In CUET-PG each wrong answer deducts 1 marks and each right answer gives 4 marks. Empty answers don’t change the score. Since the expected value of each question is positive (0.25), it would be in the best interest of the exam taker who is using pure randomization to answer all questions.</p>
<p>Assuming our person of interest answered all questions, the probability that they would have a score which is at least as extreme as the one they got (which was 100 marks) would be:</p>
<div class="highlight"><pre class="chroma" tabindex="0"><code class="language-r"><span class="line"><span class="cl"><span class="nf">pbinom</span><span class="p">(</span><span class="m">35</span><span class="p">,</span> <span class="m">75</span><span class="p">,</span> <span class="m">0.25</span><span class="p">,</span> <span class="n">lower.tail</span> <span class="o">=</span> <span class="kc">FALSE</span><span class="p">)</span> <span class="o">|&gt;</span> 
</span></span><span class="line"><span class="cl">  <span class="nf">format</span><span class="p">(</span><span class="n">scientific</span> <span class="o">=</span> <span class="kc">FALSE</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># "0.00001411975"</span>
</span></span></code></pre></div><p>That is very very unlikely.</p>
<p>For conclusion, pure randomization only has a terrible expected value of 18.75. I don’t think anyone should submit to such chances if they have an alternative.</p></div>
    </content>
    <updated>2026-05-15T00:00:00Z</updated>
    <published>2026-05-15T00:00:00Z</published>
    <source>
      <id>https://sirfharu.codeberg.page/</id>
      <logo>https://sirfharu.codeberg.page/img/og-img.jpeg</logo>
      <author>
        <name>सिर्फ春</name>
      </author>
      <link href="https://sirfharu.codeberg.page/" rel="alternate" type="text/html"/>
      <link href="https://sirfharu.codeberg.page/index.xml" rel="self" type="application/rss+xml"/>
      <rights>Licensed with 🤍 under CC BY-NC-SA 4.0</rights>
      <subtitle>Recent content on सिर्फ春</subtitle>
      <title>सिर्फ春</title>
      <updated>2026-07-16T00:00:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>https://sirfharu.codeberg.page/post/i-love-my-new-laptop/</id>
    <link href="https://sirfharu.codeberg.page/post/i-love-my-new-laptop/" rel="alternate" type="text/html"/>
    <title>I Love My New Laptop!</title>
    <summary>I got my first laptop last week. It looks pretty awesome!</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I had been desperately waiting for my first laptop since the last month and now it’s finally here.</p>
<p>It is the Motobook 60 Pro. Yes, you heard it right: it is a laptop by Motorola. At the time of writing this, the only other laptop model made by them was “Motobook 60”. Since Motorola is owned by Lenovo, the firmware design and the bad thermal management are very Lenovoish. The outer blue design gives it a modern look and I was genuinely surprised when I found out that the boot button was on the side next to the USB Port.</p>
<figure>
    <img alt="The top of a blue laptop with a nice M in the middle." src="https://sirfharu.codeberg.page/laptop.jpg"/> <figcaption>
            <p>My cutie pie ðŸ¤�</p>
        </figcaption>
</figure>

<p>Of course, the first task at hand was to install Linux. However, I was not able to boot either CachyOS or Fedora correctly. In my frustration I even accidentally deleted Windows though I had some intentions of dual booting before that. I looked up hundreds of forum posts. Ultimately the problem turned out to be the thumb drive itself. This new fucker was corrupting all of the files and it was only after using another old USB stick was I able to make any progress.</p>
<p>I quickly created a bootable thumb drive with CachyOS, Limine, and Hyprland. Suffice it to say that the setup didn’t lasted long as I wasn’t able to connect to my WiFi. I wasn’t even able to fix the font size in end-4’s Hyprland dotfiles.</p>
<p>I reinserted my thumb drive and this time I chose KDE instead of Hyprland. It was nice, and I would have continued for longer if it wasn’t for me getting annoyed by the extremely long compiling process of R packages. Arch, unlike Fedora or Debian, does not have binary files for R packages, which means the user has to compile it themself. I would not recommend that shit even to my enemies. I tried to suffer silently for a bit longer but my OS soon became unbootable when I changed the background image of Limine but forgot to update the hash.</p>
<p>Damn it! I have had enough. I installed Fedora KDE Plasma because of its pure black theme. A little modification here, a little change there, and I had a very nice and stable setup.</p>
<p><img alt="Screenshot of a desktop with the deafult KDE panel on top. There&#x2019;s a black wallpaper of Kaguya-sama on left and a Konsole with FastFetch and oh-my-zsh on right." src="https://sirfharu.codeberg.page/post/i-love-my-new-laptop/desktop.webp"/></p>
<p>After a few hours I have downloaded almost everything except WINE for emulating Microsoft Excel (which might be useful for following professors using it in their classes). I hope that that would not be a big pain in the ass.</p></div>
    </content>
    <updated>2026-05-14T00:00:00Z</updated>
    <published>2026-05-14T00:00:00Z</published>
    <source>
      <id>https://sirfharu.codeberg.page/</id>
      <logo>https://sirfharu.codeberg.page/img/og-img.jpeg</logo>
      <author>
        <name>सिर्फ春</name>
      </author>
      <link href="https://sirfharu.codeberg.page/" rel="alternate" type="text/html"/>
      <link href="https://sirfharu.codeberg.page/index.xml" rel="self" type="application/rss+xml"/>
      <rights>Licensed with 🤍 under CC BY-NC-SA 4.0</rights>
      <subtitle>Recent content on सिर्फ春</subtitle>
      <title>सिर्फ春</title>
      <updated>2026-07-16T00:00:00Z</updated>
    </source>
  </entry>

  <entry>
    <id>https://abhijithpa.in/2026/patience-time-saver/</id>
    <link href="https://abhijithpa.in/2026/patience-time-saver/" rel="alternate" type="text/html"/>
    <title>Patience could've saved me time.</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>If I had been patient, it would have saved me time. One such instance
is following.</p>

<p>From my early blogs, you might know I am using mutt to do email. Just
after I get along with mutt, I started using notmuch. Because limit
search in mutt is always a pain when you have multiple folders. And
what better tool out there than notmuch-mutt to bind both these.</p>

<p>notmuch-mutt provide three macros by default.</p>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>macro index &lt;F8&gt; \
"&lt;enter-command&gt;set my_old_pipe_decode=\$pipe_decode my_old_wait_key=\$wait_key nopipe_decode nowait_key&lt;enter&gt;\
&lt;shell-escape&gt;notmuch-mutt -r --prompt search&lt;enter&gt;\
&lt;change-folder-readonly&gt;`echo ${XDG_CACHE_HOME:-$HOME/.cache}/notmuch/mutt/results`&lt;enter&gt;\
&lt;enter-command&gt;set pipe_decode=\$my_old_pipe_decode wait_key=\$my_old_wait_key&lt;enter&gt;" \
      "notmuch: search mail"
macro index &lt;F9&gt; \
"&lt;enter-command&gt;set my_old_pipe_decode=\$pipe_decode my_old_wait_key=\$wait_key nopipe_decode nowait_key&lt;enter&gt;\
&lt;pipe-message&gt;notmuch-mutt -r thread&lt;enter&gt;\
&lt;change-folder-readonly&gt;`echo ${XDG_CACHE_HOME:-$HOME/.cache}/notmuch/mutt/results`&lt;enter&gt;\
&lt;enter-command&gt;set pipe_decode=\$my_old_pipe_decode wait_key=\$my_old_wait_key&lt;enter&gt;" \
      "notmuch: reconstruct thread"
macro index &lt;F6&gt; \
"&lt;enter-command&gt;set my_old_pipe_decode=\$pipe_decode my_old_wait_key=\$wait_key nopipe_decode nowait_key&lt;enter&gt;\
&lt;pipe-message&gt;notmuch-mutt tag -- -inbox&lt;enter&gt;\
&lt;enter-command&gt;set pipe_decode=\$my_old_pipe_decode wait_key=\$my_old_wait_key&lt;enter&gt;" \
      "notmuch: remove message from inbox"
</code></pre></div></div>
<p>One for search, one for reconstructing threads and one for
manipulating tags, which I missed.</p>

<p>Now my impatient part. I have already mapped f6 for my folder
movements and in my initial days of notmuch, I only use just search.
So I never cared about the f6 macro provided by notmuch-mutt. As time
goes by I got very comfortable with notmuch. I was stretching my
notmuch legs. I started to live more on notmuch search results
<code class="highlighter-rouge">date:today tag:unread</code> than more on the mutt index. To the problem,
since notmuch-mutt dump all results to a temp maildir location, can’t
perform flag changes back to the original maildir which was annoying,
because we need to distinguish what mail you read and what not when
you subscribed to most of all debian mailing list.</p>

<p>I was under the impression that, the notmuch-mutt is not capable of
doing so and I just went like that without checking docs. I started
doing all crazy hack to sync these maildirs.</p>

<p>I even started reading notmuch-mutt codebase.</p>

<p>Later, I settled on notmuch-vim. Cause I can manipulate flags sync 
back from notmuch to maildir.</p>

<p>And while searching for something, I accidentally revisited the the
the notmuch-mutt macro page and saw the tag manipulation. I was like
:( .</p>

<p>If I read about the third macro patiently when added that to config,
I could’ve saved time by not doing ugly hacks around it.</p>

<p>I think I learned my lesson.</p></div>
    </summary>
    <updated>2026-04-28T06:33:00Z</updated>
    <published>2026-04-28T06:33:00Z</published>
    <category term="debian"/>
    <category term="mail"/>
    <category term="notmuch"/>
    <source>
      <id>https://abhijithpa.in/</id>
      <author>
        <name>Abhijith PA</name>
      </author>
      <link href="https://abhijithpa.in/" rel="alternate" type="text/html"/>
      <link href="https://abhijithpa.in/feed.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Hello, I'm Abhijith. A Free Software enthusiast.</subtitle>
      <title>Abhijith PA | അഭിജിത്ത് പി എ</title>
      <updated>2026-04-28T09:22:55Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>https://ravidwivedi.in/posts/vienna-day-trip/</id>
    <link href="https://ravidwivedi.in/posts/vienna-day-trip/" rel="alternate" type="text/html"/>
    <title>A Day in Vienna</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>On the 7th of September 2025, my friend Dione and I had a day trip to Vienna—the capital of Austria. We were attending a conference in Budapest, Hungary, which is 250 km from Vienna. So, it was a good opportunity to visit Vienna.</p>
<p>We took a morning train from Budapest to Vienna and got back to Budapest by night. However, booking these tickets turned out to be a bit complicated. There were many websites to book the train ticket—<a href="https://jegy.mav.hu/">Hungarian Railways</a>, <a href="https://www.oebb.at/en/">Austrian Railways</a>, and third-party sites such as <a href="https://www.omio.com/">Omio</a>. All these websites had different prices for the same ticket.</p>
<p>I booked the tickets from the Hungarian Railways website as it was the cheapest. The train from Budapest to Vienna was €13, operated by Eurocity. Also, I had to pay €2 for the seat reservation on top. The train from Vienna to Budapest—operated by Railjet—was €21, along with €2 extra for reservation again—making it €23. The tickets for the two-way journey added up to €38.</p>
<p>The cost of these tickets varied depending on when one purchses them: the sooner you purchase, the lower the price. I bought my tickets 15 days ahead of the date of journey and paid just €38. In contrast, Dione booked just one day before her trip and paid around €100 for her tickets.</p>
<p>As for the seat reservation, long-distance trains in Europe usually require paying extra for the seat reservation. This ensures that you get your preferred seat, such as a window seat or an aisle seat. Nevertheless, you will get a seat on long-distance trains because they do not sell more tickets than there are seats. Therefore, you will get a seat without reservation as well. However, we reserved our seats so that we can sit together. This helped us more in the return part of the journey—from Vienna to Budapest—which was more crowded than the train we took from Budapest to Vienna in the morning.</p>
<p>On another note, reservation is mandatory on some trains in Europe, but ours wasn’t one of them. In addition, people also use rail passes, so an extra charge is required on top for reserving the seats for pass holders. On the other hand, local trains do not require seat reservations in general.</p>
<p>Our train’s scheduled departure was at 08:55 from the Budapest Kelenfold station. We reached the train station 40 minutes before the train’s scheduled departure. The Kelenfold station had free Wi-Fi, which was handy because I didn’t have a local SIM.</p>
<figure><img alt="A departures board at Budapest Kelenfold station." src="https://ravidwivedi.in/images/vienna/departure-board-at-budapest-kelenfold.avif"/><figcaption>
      <p>A departures board at Budapest Kelenfold station. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<figure><img alt="A platform on Budapest Kelenfold station." src="https://ravidwivedi.in/images/vienna/budapest-kelenfold-platform.avif"/><figcaption>
      <p>This is platform number 15 of Budapest Kelenfold station where we boarded our train. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<p>Our train arrived on time. I tried to find our coach number but could not find the numbers written anywhere on the side of the coach. Luckily, we were helped by a fellow passenger who directed me to look at the doors, where the numbers were mentioned clearly!</p>
<p>Then we got into our compartment and took our respective seats. Our tickets were checked twice - once while the train was in Hungary and the other when in Austria. Showing the PDF of the train ticket on our mobile to the ticket inspector was good enough for the purpose. Austria and Hungary are a part of the open transit Schengen area, which means this was the extent of the border control checks we had to go through.</p>
<figure><img alt="Interior of the train." src="https://ravidwivedi.in/images/vienna/train1.avif"/><figcaption>
      <p>Interior of our Budapest to Vienna train. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<p>The train also had free Wi-Fi, albeit with poor connection at times. There were no eatery options inside the train.</p>
<p>We deboarded at the <em>Wien Hauptbahnhof</em> station in Vienna. The journey was 250 km and took 2.5 hours, reaching Vienna at 11:25, which was the scheduled time.</p>
<figure><img alt="A blue and white colored train on a railway platform" src="https://ravidwivedi.in/images/vienna/train2.avif"/><figcaption>
      <p>This blue colored train was the one we took for our Budapest to Vienna journey. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<figure><img alt="A red colored train standing at the Vienna station" src="https://ravidwivedi.in/images/vienna/obb.avif"/><figcaption>
      <p>An <em>ÖBB</em> train standing at a platform of Vienna train station. <em>ÖBB</em> is the national carrier of Austria. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<figure><img alt="Wien Hauptbahnhof train station" src="https://ravidwivedi.in/images/vienna/wien-hauptbahnhof.avif"/><figcaption>
      <p>Wien Hauptbahnhof train station. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<p>At the station, we bought a 24-hour public transport pass from a ticket machine for €8. The pass includes unlimited access to all the public transport in Vienna for 24 hours. My pass was valid from the 7th of September at 11:34 to the 8th of September at 11:33. A single public transport ticket (from anywhere to anywhere) costs €2.4. A single ticket of €2.4 can be used once on any public transport in Vienna—trams, metros, and buses.</p>
<p>Therefore, the pass is a good deal if you are going to take at least four public transport trips in a day. Unlike the public transport pass I got in Budapest, the pass in Vienna was anonymous and not tied to the rider’s name.</p>
<figure><img alt="Public transport pass for Vienna." src="https://ravidwivedi.in/images/vienna/vienna-pass.avif"/><figcaption>
      <p>My public transport pass in Vienna.</p>
    </figcaption>
</figure>

<p>We wanted to visit the <em>Schönbrunn</em> Palace. The palace was reachable by subway. In order to get to the subway station, we started by going outside the station. But it was not outside. So we came back inside the station building and realized that the subway was underground.</p>
<p>We took the subway and deboarded at the <em>Schönbrunn</em> subway station—the closest one to the palace. The ride was smooth; the train was pretty silent.</p>
<p>By the way, like Budapest, there were no AFC gates for boarding the subway in Vienna. The stations had ticket validators instead, where you are supposed to validate your tickets before getting into the subway.</p>
<figure><img alt="Vienna subway" src="https://ravidwivedi.in/images/vienna/validator.avif"/><figcaption>
      <p>Instead of AFC gates, Vienna has ticket validators as in the picture. You need to tap your ticket in the validator before boarding the subway. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<p>These validators are in place to ensure that you use your ticket only once. Unlike AFC gates, which are present in metros of most of the countries I have been to, the ticket validators don’t act as a physical barrier to enter the boarding area.</p>
<p>If you board the metro without validating your ticket, you will be facing hefty fines upon getting caught. I have heard that the fine is around €100. On the other hand, if you have a public transport pass like we did, then you don’t need to validate it before boarding.</p>
<p>In addition, there were no annoying security checks either, unlike in Indian cities. In the Delhi metro, for example, you would need to scan your bags and pass through a security check before getting to the AFC gates.</p>
<figure><img alt="Vienna subway" src="https://ravidwivedi.in/images/vienna/vienna-subway.avif"/><figcaption>
      <p>Vienna subway. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<p>Now back to the story, after alighting at the <em>Schönbrunn</em> subway station, we walked to the <em>Schönbrunn Palace</em>. One can roam around outside the palace and click pictures for free. To go inside, however, requires buying tickets. The tickets for the palace can be booked in advance on the internet. We didn’t take the tickets in advance, as we decided to visit the palace at the last moment.</p>
<p>So we went to the ticket counter and found out that we needed to wait for 1 hour 40 minutes before going inside if we took the tickets at that moment. In addition, one ticket costs €44 (around 4000 Indian rupees). Since we had to return to Budapest in the evening and only had a few hours in the city, we decided not to go inside the palace. Instead, we clicked a few pictures outside the palace.</p>
<figure><img alt="Photo of Sch&#xF6;nbrunn Palace." src="https://ravidwivedi.in/images/vienna/schonbrunn-palace.avif"/><figcaption>
      <p>Schönbrunn Palace. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<p>The <em>Schönbrunn</em> Palace is a UNESCO World Heritage Site and is a historically significant place. It served as one of the residences of the powerful Habsburg dynasty. The palace looked so good that my friend Dione said, “It seemed like the palace was built yesterday”. This remark applied to other parts of Vienna we went to. For example, the subway stations also seemed like they were built yesterday.</p>
<figure><img alt="A street near Sch&#xF6;nbrunn Palace." src="https://ravidwivedi.in/images/vienna/street-near-schonnbrun-palace.avif"/><figcaption>
      <p>A street near Schönbrunn Palace. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<p>Now, we wanted to go someplace to grab a bite. I asked my friend Urbec for suggestions on where to go. They suggested we visit the steps named <em>Strudlhofstiege</em>, which had the added benefit of being in a neighborhood with good bakeries and buildings.</p>
<p>So, we took the subway and deboarded at the <em>Roßauer Lände</em> station, followed by walking around a kilometer to reach the stairs.</p>
<figure><img alt="A subway station in Vienna." src="https://ravidwivedi.in/images/vienna/rossauer-laende-station.avif"/><figcaption>
      <p><em>Roßauer Lände</em> subway station. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<figure><img alt="Platform of the _Ro&#xDF;auer L&#xE4;nde_ subway station." src="https://ravidwivedi.in/images/vienna/subway-platform.avif"/><figcaption>
      <p>Platform of the <em>Roßauer Lände</em> subway station. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<figure><img alt="stairs with road in the front and trees in the background. Blue sky can also be seen in the background." src="https://ravidwivedi.in/images/vienna/the-stairs.avif"/><figcaption>
      <p>The <em>The Strudlhofstiege</em> steps. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<p>On the way, we were also looking for a place to eat. Unfortunately, it was Sunday, and Vienna closes on Sunday. That means most of the shops—including bakeries and cafés—are closed. Only places like railway stations have shops open on Sundays.</p>
<p>By the way, walking around in the streets of Vienna was a treat. The streets were not crowded (as it was not exactly a touristy neighborhood) and had good pedestrian infrastructure, with clean streets and separate cycling tracks. The buildings were also beautiful.</p>
<figure><img alt="Buildings and streets in Vienna." src="https://ravidwivedi.in/images/vienna/random-street.avif"/><figcaption>
      <p>A random street in Vienna.</p>
    </figcaption>
</figure>

<figure><img alt="Buildings and streets in Vienna." src="https://ravidwivedi.in/images/vienna/a-street-in-vienna.avif"/><figcaption>
      <p>Another street in Vienna.</p>
    </figcaption>
</figure>

<p>After some walking, we found a restaurant open. I grabbed the menu to check the prices. A lady at the shop asked me what I was doing, and I told her that I was browsing the menu. She said that the menu was in German. I don’t know how she knew that we didn’t know German, but it seemed like a racist thing to be told.</p>
<p>We roamed around further and found a café by the name of Blue Orange, where we ordered coffee and croissants. When we got our order, the waiter told us that they were having some issues, so they wouldn’t charge us for the croissant if it wasn’t good.</p>
<figure><img alt="Picture of a caf&#xE9;." src="https://ravidwivedi.in/images/vienna/blue-orange-cafe.avif"/><figcaption>
      <p>A picture of Blue Orange café. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<p>My friend and I took a bite, and both of us didn’t like the croissant. After some time, the waiter came to us and asked whether the croissant was okay, to which we said no. Therefore, they didn’t charge us for the croissant. This was the first time something like this happened to me. It felt like I was in a different world. I added a small tip at the end for this gesture, which I had to put in a jar at the counter.</p>
<p>The cappuccino I ordered was €4.50, while the espresso that Dione ordered was €3.60. The croissant would have been €3.60. I remember Paris having cheaper croissants!</p>
<p>Then when the waiter brought our drinks out, they automatically gave me the espresso and Dione the cappuccino. Dione found this funny because there is a stereotype in her country (Australia) that men drink strong black coffee, and women drink milky drinks like cappuccinos. She found it interesting that this stereotype seems to exist in Austrian culture too.</p>
<p>We hopped on a tram to reach the nearest subway station and went to the <em>Wien Hauptbahnhof</em> station to have something before we caught our return train to Budapest.</p>
<figure><img alt="Trams with buildings and the blue sky in the background" src="https://ravidwivedi.in/images/vienna/trams-in-vienna.avif"/><figcaption>
      <p>Trams in Vienna. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<p>At the station, I had <em>Esterhazyschnitten</em> and <em>Punschkrapfen</em> (thanks, Urbec, for the suggestion). The lady at the shop warned me that <em>punschkrapfen</em> had alcohol in it, to which I said okay.</p>
<p><em>Esterhazyschnitten</em> was a cake made of almonds, while <em>punschkrapfen</em> was a jam-filled sponge cake, soaked in rum. <em>Esterhazyschnitten</em> was my favorite out of the two. The <em>punschkrapfen</em> was too sweet for my taste.</p>
<figure><img alt="Punschkrapfen" src="https://ravidwivedi.in/images/vienna/punschkrapfen.avif"/><figcaption>
      <p>Punschkrapfen. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<figure><img alt="Esterhazyschnitten" src="https://ravidwivedi.in/images/vienna/esterhazyschnitten.avif"/><figcaption>
      <p>Esterhazyschnitten. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<p>While the station was well-built, there were a couple of things about the <em>Wien Hauptbahnhof</em> station that we didn’t like. There were no seats inside the station, so we had to eat outside the building. Also, the toilets needed to be paid for. It costs 50 cents to use the toilets at this station.</p>
<p>The Vienna train station had departure boards all over the place. So, we went to the platform our train was to arrive on.</p>
<figure><img alt="A departure board in Vienna displaying information about the trains" src="https://ravidwivedi.in/images/vienna/departures-board-in-vienna.avif"/><figcaption>
      <p>Departure boards in Vienna displaying information about the trains. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<figure><img alt="Platform and tracks at Wien Hauptbahnhof station." src="https://ravidwivedi.in/images/vienna/wien-hauptbahnhof-platform.avif"/><figcaption>
      <p>Platform and tracks at Wien Hauptbahnhof station. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<p>When our train arrived, we had some difficulty locating our compartment. This train was operated by a different company (Railjet) than the one we took in the morning (Eurocity) from Budapest to Vienna, and we were able to locate the coach numbers using the digital board at the station. Each compartment had a digital board next to it on the station displaying the coach number. However, that wasn’t the problem. Even after reading the coach numbers and trying to find ours, it didn’t appear where we expected in the sequence.</p>
<p>When we were not able to find our coach for a while, we asked a ticket inspector of the train who was standing on the platform. He directed us towards the front side of the train. So we started running to the front side as we didn’t know how long the train stops.</p>
<p>As we ran toward our coach, we found out that the engine of the back train was connected with the last compartment of the train at the front. At that point, we realized that the train was a combination of two trains. At a later station, the train on the back side parted ways and went towards Vienna Airport.</p>
<figure><img alt="Inside our train." src="https://ravidwivedi.in/images/vienna/railjet-interior.avif"/><figcaption>
      <p>Interior of the train we took from Vienna to Budapest. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<figure><img alt="A red colored train standing on the platform of Budapest Kelenfold station." src="https://ravidwivedi.in/images/vienna/railjet.avif"/><figcaption>
      <p>This is the train we took for our return journey from Vienna to Budapest. It is standing on a platform in Budapest Kelenfold station. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<p>We had a smooth journey and reached Budapest a couple of hours later.</p>
<p>Vienna is a beautiful city; we enjoyed being there, and we would like to visit the city again!</p>
<p>That’s it for now. Signing off. See you in the next one!</p>
<p><strong>Credits: Thanks to Dione and <a href="https://badrihippo.thekambattu.rocks/">Badri</a> for proofreading.</strong></p></div>
    </summary>
    <updated>2026-04-28T02:29:23Z</updated>
    <published>2026-04-28T02:29:23Z</published>
    <source>
      <id>https://ravidwivedi.in/posts/</id>
      <author>
        <name>Ravi Dwivedi</name>
      </author>
      <link href="https://ravidwivedi.in/posts/" rel="alternate" type="text/html"/>
      <link href="https://ravidwivedi.in/posts/index.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Recent content in Posts on Ravi's Blog</subtitle>
      <title>Posts on Ravi's Blog</title>
      <updated>2026-05-29T14:26:28Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>https://blog.sahilister.in/2026/04/weekly-notes/</id>
    <link href="https://blog.sahilister.in/2026/04/weekly-notes/" rel="alternate" type="text/html"/>
    <title>Weekly Notes</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Weekly notes is a genre where people chronicle their week on their blogs. Weekly notes are like a window. I love going through these, as they’re a steady stream of week on week happenings and progress in people’s lives. It shows people making efforts to improve: from basic things like learning to swim or drive, to planning long-term goals such as vacations, moving house, states, or even countries. In some cases, they carry internal monologues, thoughts, and anxieties. These are like a constant nudge for me to work on myself, like them.</p>
<p>These are the weekly notes I read nowadays:</p>
<ul>
<li><a href="https://adhavansivaraj.xyz/tags/weekly-notes/">https://adhavansivaraj.xyz/tags/weekly-notes/</a></li>
<li><a href="https://learningwala.in/tags/weekly-notes/">https://learningwala.in/tags/weekly-notes/</a></li>
<li><a href="https://thejeshgn.com/category/weekly-notes/">https://thejeshgn.com/category/weekly-notes/</a></li>
<li><a href="https://shrayas.com/tagged/weeknotes">https://shrayas.com/tagged/weeknotes</a></li>
<li><a href="https://tracydurnell.com/category/weeknotes/">https://tracydurnell.com/category/weeknotes/</a></li>
<li><a href="https://sathyabh.at/">https://sathyabh.at/</a></li>
</ul>
<p>Most are there on Thejesh’s <a href="https://thejeshgn.github.io/weekly-notes-planet/">weekly notes planet</a> which autoupdates when new posts arrive, usually starting on Friday evenings, and by Monday, almost everyone has posted.</p>
<p>It reminds of a word from The Dictionary of Obscure Sorrows -
<a href="https://www.thedictionaryofobscuresorrows.com/word/kenaway"><em>Kenaway</em></a> :</p>
<blockquote>
<p><em>the longing to see how other people live their lives when they’re not in public; wishing you could tune in to the raw feed of another human existence, in all its messiness and solitude—shimmying in place while brushing their teeth, squabbling over where to put the shoes, talking out their problems on solitary commutes—if only to give you something to compare your own life against, and figure out whether you’re bizarrely normal or normally bizarre.</em></p>
</blockquote>
<p>Close enough.</p></div>
    </summary>
    <updated>2026-04-27T02:40:59Z</updated>
    <published>2026-04-27T02:40:59Z</published>
    <author>
      <name>Sahil Dhiman</name>
    </author>
    <source>
      <id>https://blog.sahilister.in/</id>
      <link href="https://blog.sahilister.in/" rel="alternate" type="text/html"/>
      <link href="https://blog.sahilister.in/index.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Recent content on sahilister's Reimagined Doodle</subtitle>
      <title>sahilister's Reimagined Doodle</title>
      <updated>2026-04-27T02:40:59Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>https://sirfharu.codeberg.page/post/are-entertainers-useless/</id>
    <link href="https://sirfharu.codeberg.page/post/are-entertainers-useless/" rel="alternate" type="text/html"/>
    <title>Are Entertainers Useless?</title>
    <summary>Nicholas Decker thinks some jobs are so bad that they produce a net negative benefit for the society. How true is that?</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>In a way, I agree with a lot of points in Nicholas Decker’s recent article <a href="https://web.archive.org/web/20260423070345/https://nicholasdecker.substack.com/p/social-credit">Social Credit</a>. Our society with its modern mass media has allowed a handful of people to dominate our attention, and these people aren’t usually the ones you would want to be on top of the attention economy. I think you might have plenty of people in your mind who fit that description.</p>
<p>The core idea of Nicholas’ essay goes like this: sports, fashion, politics, and entertainment are kind of things which do not contribute much value to our society but still command our awe and, hence, we should discourage them in favour of scientists which actually do contribute to the progress of our society. In the words of Nicholas,</p>
<blockquote>
<p>It is not so bad if someone should go into sports because they are of little intelligence, and would amount to nothing if it were not for their body. But we should regard every person of intelligence, who could have done something which would actually improve the world, who goes into sports as a shameful tragedy.</p>
</blockquote>
<p>I am not very sure how they concluded that entertainment or musicians are a zero sum game since they haven’t provided any justification for that. They also included politicians in their criticism of “professions and industries whose existence is entirely zero sum”. This seems weird to me, especially considering the fact that Nicholas is from USA, a country which is currently <em>not</em> having a great time under its new set of poltical representatives. Nicholas doesn’t actually address how their criticism applies to politics, so the fact that they casually inserted that word seems wrong.</p>
<p>However, ignoring those bits, I would point out that the essay relies on one central assumption; the assumption that scientists are much more smarter than the rest of the population. This assumption critically weakens the logic of the essay and makes the whole argument a lot less convincing.</p>
<p><a href="https://doi.org/10.1136/bmj-2021-067883">Scientists are not that smart when compared to the rest of us</a>. They are able to do what they do because they have spent a lot of time on it, and in that way they are not that different from experts in other fields. I think that the image of scientists as people with some innate talent is derived from the image of science as a meritocracy where the best idea always win. <a href="https://doi.org/10.1021/acs.molpharmaceut.2c00118">This is of course not true</a>. There is also plenty of evidence that <a href="https://doi.org/10.1002/berj.4081">more educated people are more polarised</a> on important topics of contention such as climate change or universal basic income.</p>
<p>This weakens Nicholas’ arguments, since if scientists are really not that different from the rest of us, then transferring people from fields like sports or fashion may in fact lower welfare as people who previously enjoyed their jobs will be forced to do things which are possibly less enjoyable. Maybe there would also be a decrease in the total amount of effort applied by the person. In fact, it could be better to transfer, say, care workers instead.</p>
<p>I am also not sure if there is actually a scarcity of researchers right now. Maybe it’s just the case that research institutes are not getting enough resources to do stuff. In that case a transfer from sports will not be required. Unfortunately, Nicholas hasn’t discussed this either.</p></div>
    </content>
    <updated>2026-04-24T00:00:00Z</updated>
    <published>2026-04-24T00:00:00Z</published>
    <source>
      <id>https://sirfharu.codeberg.page/</id>
      <logo>https://sirfharu.codeberg.page/img/og-img.jpeg</logo>
      <author>
        <name>सिर्फ春</name>
      </author>
      <link href="https://sirfharu.codeberg.page/" rel="alternate" type="text/html"/>
      <link href="https://sirfharu.codeberg.page/index.xml" rel="self" type="application/rss+xml"/>
      <rights>Licensed with 🤍 under CC BY-NC-SA 4.0</rights>
      <subtitle>Recent content on सिर्फ春</subtitle>
      <title>सिर्फ春</title>
      <updated>2026-07-16T00:00:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>https://ravidwivedi.in/posts/libreoffice-conference-2025-budapest/</id>
    <link href="https://ravidwivedi.in/posts/libreoffice-conference-2025-budapest/" rel="alternate" type="text/html"/>
    <title>LibreOffice Conference Budapest 2025</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>In September 2025, I attended the <a href="https://conference.libreoffice.org/2025">LibreOffice Conference</a> in Budapest, Hungary, on the 4th and the 5th, and a community meeting on the 3rd. Thanks to The Document Foundation (TDF) for sponsoring my travel and accommodation costs. The conference venue was Faculty of Informatics, Eötvös Loránd University (ELTE).</p>
<p>The conference was planned to be held from the 4th to the 6th, but the program for the 6th of September had to be canceled due to the venue being unavailable because of a marathon in Budapest. So, all the talks got squeezed into just two days, making the schedule a bit hectic.</p>
<p>The TDF had booked my room at the Corvin Hotel. It was a double bedroom with a window. The breakfast was included in the hotel booking. The hotel was walking distance from the conference venue. One could also take a tram from the hotel to reach the venue.</p>
<figure><img alt="A double bed" src="https://ravidwivedi.in/images/libreoffice-conf-2025/my-room.avif"/><figcaption>
      <p>A shot of my room. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<figure><img alt="Tram" src="https://ravidwivedi.in/images/libreoffice-conf-2025/tram.avif"/><figcaption>
      <p>A tram in Budapest. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<h2 id="3rd-of-september">3rd of September</h2>
<p>On the 3rd of September, we had a community meeting at the above-mentioned venue. I walked with my friend Dione to the venue. Upon reaching there, I noticed that the university had no boundaries and gates. This reminded me of the previous year’s conference venue in Luxembourg, which also had no boundaries or gates.</p>
<p>In contrast, Indian universities and institutes typically have walls and gates serving as boundaries to separate them from the rest of the city. Many of these institutes also have security guards at the entrance, who may ask attendees to present proof of admission before allowing them inside. I was surprised to find that institutes in Europe, like the one where the conference was held, did not have such boundaries.</p>
<p>The building where the conference was held was red, which happened to be the same color as the building for the previous year’s conference venue. I remember joking with Dione that the criteria for the conference venue might have been the color of the building.</p>
<figure><img alt="A red building" src="https://ravidwivedi.in/images/libreoffice-conf-2025/building.avif"/><figcaption>
      <p>The red building in the picture served as the conference venue. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<p>During the community meeting, we shared ideas on how to spread the word about LibreOffice. The meeting lasted for a couple of hours.</p>
<p>After the community meeting, we went to the hotel for dinner sponsored by the TDF.</p>
<figure><img alt="Cake slices" src="https://ravidwivedi.in/images/libreoffice-conf-2025/esterhazy.avif"/><figcaption>
      <p>These <em>Esterházy</em> cake bites were really yummy. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<figure><img alt="Raspberry Currant cake slices" src="https://ravidwivedi.in/images/libreoffice-conf-2025/raspberry-currant-cake.avif"/><figcaption>
      <p>Raspberry Currant cake slices. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<h2 id="4th-of-september">4th of September</h2>
<p>On the first day of the conference, attendees were given swag bags containing a pad, sticky notes, a pen, a conference T-shirt, and a bottle.</p>
<figure><img alt="A blue colored T-shirt on a bed along with a pen, a bottle, a diary and a sticky note" src="https://ravidwivedi.in/images/libreoffice-conf-2025/swag.avif"/><figcaption>
      <p>Conference swag. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<p>The talks started early in the morning with Eliane Domingos, Chairperson of TDF’s Board of Directors, giving the inauguration talk. As always, I found Italo Vignoli’s talk on the importance of document freedom interesting.</p>
<p>During the snack break, I noticed that there were three types of milk available for coffee: cow’s milk, lactose-free milk, and almond milk. Almond milk is rare in India, but I have managed to get it, but I have never seen lactose-free milk in India.</p>
<p>Since I run fundraisers in my projects, such as Prav, I could relate to Lothar K. Becker’s talk. He discussed the issue that certain implementations in LibreOffice require a budget that is too large for any single interested entity to fund independently. Furthermore, The Document Foundation (TDF) cannot legally receive funds from government entities. Therefore, there is no organization or entity to pool resources from all the interested entities to finance the implementation.</p>
<figure><img alt="Lothar giving his presentation" src="https://ravidwivedi.in/images/libreoffice-conf-2025/lothar.avif"/><figcaption>
      <p>Lothar giving his presentation. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<p>Another talk was by the Austrian Armed Forces on their migration to LibreOffice. I wanted to know why they migrated, and I found out that they did it for their digital sovereignty, and not for saving on the license costs. Another point presented in the talk was that LibreOffice is available on all the operating systems, while the Microsoft Office suite is not that widely available. The migration was systematic and was performed over a few years. They started working on it in 2021, and the migration was finished recently. In addition, it also required training their staff in using LibreOffice.</p>
<figure><img alt="Presentation on migration to LibreOffice by Austrian Armed Forces" src="https://ravidwivedi.in/images/libreoffice-conf-2025/austrian-armed-forces.avif"/><figcaption>
      <p>Presentation on migration to LibreOffice by Austrian Armed Forces. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<p>The lunch was inside the university canteen. We were provided lunch coupons by the TDF. I got a vegan coupon with 4000 Ft written on it, which meant I could take lunch for up to 4000 Hungarian forints.</p>
<figure><img alt="My lunch ticket" src="https://ravidwivedi.in/images/libreoffice-conf-2025/lunch-ticket.avif"/><figcaption>
      <p>My lunch ticket for the conference. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<figure><img alt="The lunch I had on the first day" src="https://ravidwivedi.in/images/libreoffice-conf-2025/lunch.avif"/><figcaption>
      <p>The lunch I had on the first day. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<p>During the evening, it was my turn for the presentation. I was done with preparing my slides ten days before my talk. I also got my slides reviewed by friends.</p>
<p>My talk was finished in 20 minutes, while I was given a 30-minute slot. This helped us catch up on the schedule. Furthermore, I made my talk interactive by asking questions and making sure that the audience was not asleep. During my talk, my friend Dione took my pictures with my camera.</p>
<p>My talk was on how free software projects could give users a say in freedom to modify the software. I illustrated this using the <a href="https://prav.app">Prav project</a> that I am a part of.</p>
<p>After the talks were over, we were treated to a conference dinner at Trofea Grill. It had a great selection of desserts, which helped me sample some Hungarian desserts. The sponge cake was especially good.</p>
<figure><img alt="Desserts at Tofea Grill" src="https://ravidwivedi.in/images/libreoffice-conf-2025/desserts-at-tofea-grill.avif"/><figcaption>
      <p>Desserts at Tofea Grill. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<h2 id="5th-of-september">5th of September</h2>
<p>The next day—the 5th of September—I went with Dione to the venue early in the morning, as her talk was the first one of the day. Her talk was titled Managing Tasks with Nextcloud Deck. Later that day, I also attended a talk on Collabora. At lunch, I found the egg white salad quite tasty.</p>
<figure><img alt="Dione giving her presentation" src="https://ravidwivedi.in/images/libreoffice-conf-2025/dione.avif"/><figcaption>
      <p>Dione giving her presentation. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<figure><img alt="Egg white salad" src="https://ravidwivedi.in/images/libreoffice-conf-2025/egg-white-salad.avif"/><figcaption>
      <p>Egg white salad. Photo by Ravi Dwivedi, released under CC-BY-SA 4.0.</p>
    </figcaption>
</figure>

<p>After the lunch break, we had the conference group photo. I had a Nikon camera, which we used to take the group photo. I requested a university student to take our group photo and also taught her how to operate the camera.</p>
<figure><img alt="People looking at the camera and smiling" src="https://ravidwivedi.in/images/libreoffice-conf-2025/group-photo.avif"/><figcaption>
      <p>Group photo</p>
    </figcaption>
</figure>

<p>By the evening, the conference ended, after which we went to a pub, which was again sponsored by TDF. I had beer, but that one really tasted bad, so I couldn’t finish it. The only vegetarian option was goat cheeseburger, which my friend Manish and I opted for. The burger tasted awful. Apparently, I don’t like goat cheese.</p>
<p>The next day I went sightseeing with Dione in Budapest. Stay tuned for our adventures!</p>
<p><strong>Credits: Thanks to Dione and Richard for proofreading.</strong></p></div>
    </summary>
    <updated>2026-04-21T03:54:16Z</updated>
    <published>2026-04-21T03:54:16Z</published>
    <source>
      <id>https://ravidwivedi.in/posts/</id>
      <author>
        <name>Ravi Dwivedi</name>
      </author>
      <link href="https://ravidwivedi.in/posts/" rel="alternate" type="text/html"/>
      <link href="https://ravidwivedi.in/posts/index.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Recent content in Posts on Ravi's Blog</subtitle>
      <title>Posts on Ravi's Blog</title>
      <updated>2026-05-29T14:26:28Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>https://sirfharu.codeberg.page/post/hate-as-distortion-of-love/</id>
    <link href="https://sirfharu.codeberg.page/post/hate-as-distortion-of-love/" rel="alternate" type="text/html"/>
    <title>Hate as Distortion of Love</title>
    <summary>One common way of thinking about people doing bad things.</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><blockquote>
<p>…I feel that everything is about love and that hate is a perverse way of expressing love. It’s not that they are two sides of the same coin.</p>
<p>— Gustavo Santaolalla, in an interview with TechRadar</p>
</blockquote>
<p>[SPOILER ALERT! THIS POST DISCUSSES THE PLOT OF THE LAST OF US.]</p>
<p>One of the central themes of The Last of Us Part 2 is the contrast between Ellie’s hate for Abby and her love for Joel. In the story, the hate emerges from Joel’s brutal murder at the hands of Abby. Due to its importance to the story’s narrative, this idea of hate coming out of love heavily defines the music of the game. In fact, a lot of music from Part 1 was actually repackaged and given much harsher tones in Part 2.</p>
<p>I am fascinated by this evolution of love, and for me this contains an interesting way to view “evil”. Of course, much of this has been already discussed in popular culture in the form of “humanising the villain”. However, inspite of this, the general consensus views evil as being a fundamental property of some outliers and seeks to punish them. After all, the populace generally finds it difficult to imagine, say, a Hitler who loves dogs and children. (There has been some evidence that that statement is actually true.)</p>
<p>In my view, this only serves to provide a scapegoat instead of solving the actual problem. A better solution, in my opinion, would be to actually understand this evolution and try to reverse it. It would be difficult, especially considering we are talking about empathising with people who are sometimes even referred to as demons. However, inspite of difficulties it is actually the right method to adopt.</p>
<p>In the world of The Last of Us it would be hopeless to imagine helping Ellie since the environment is a dystopian anarchy anyway. However, in more calmer state of affairs maybe there’s a chance of redemption.</p></div>
    </content>
    <updated>2026-04-20T00:00:00Z</updated>
    <published>2026-04-20T00:00:00Z</published>
    <source>
      <id>https://sirfharu.codeberg.page/</id>
      <logo>https://sirfharu.codeberg.page/img/og-img.jpeg</logo>
      <author>
        <name>सिर्फ春</name>
      </author>
      <link href="https://sirfharu.codeberg.page/" rel="alternate" type="text/html"/>
      <link href="https://sirfharu.codeberg.page/index.xml" rel="self" type="application/rss+xml"/>
      <rights>Licensed with 🤍 under CC BY-NC-SA 4.0</rights>
      <subtitle>Recent content on सिर्फ春</subtitle>
      <title>सिर्फ春</title>
      <updated>2026-07-16T00:00:00Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>https://blog.sahilister.in/2026/04/what-is-life-to-you/</id>
    <link href="https://blog.sahilister.in/2026/04/what-is-life-to-you/" rel="alternate" type="text/html"/>
    <title>What is Life (to you)?</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>It started with a thought: to understand people’s perspectives on life and its meaning. So I texted folks, “What is life (to you)?”. Each of the following list items (-) is a response from a different individual, mostly verbatim.</p>
<blockquote>
<p><em>- A lot</em></p>
</blockquote>
<blockquote>
<p><em>- Everyone has a few universal basic qualities, and some special qualities. To me life is pursuit of exploring world based on those qualities and maturing those qualities as one goes on about exploring world/life with those qualities. <br/>
Discovering and enhancing experiences as one goes through them.</em></p>
</blockquote>
<blockquote>
<p><em>- life is endless suffering</em></p>
</blockquote>
<blockquote>
<p><em>- my answer might change daily, but this is what I’ve noticed and feel recently.
Life is a spectrum with two distinct ends: what we control and what we don’t. At birth, the spectrum is largely tilted toward control, but throughout our lives, it gradually shifts toward the other side. Ultimately, as we approach death, we lose all control over any aspect of our existence, reaching the other end of the spectrum. <br/>
tho this isn’t universal, privilege plays a huge part in what you control tho i believe it holds true for the majority <br/>
but yeah man, meaning and purpose are dynamic, it’s in their nature to change
i can give you a different answer this evening itself xD</em></p>
</blockquote>
<blockquote>
<p><em>- Funeral Monologue from Synecdoche, New York. <a href="https://www.youtube.com/watch?v=Z9PzSNy3xj0">https://www.youtube.com/watch?v=Z9PzSNy3xj0</a></em></p>
</blockquote>
<blockquote>
<p><em>- Zindagi ek nadiya hai,
Aur mujhe tairna nahi aata <br/> (translation - Life is a river,
and I donâ€™t know how to swim)<br/>
On a more serious note, Life is what you make it out for yourself.
The only established truth is that it will end. We can never know if there is something after or if there was something before.
So try to live a life that you feel aspired by?
But this question was beautifully answered by that book which you had about that dying professor <br/>
(Me - He was talking about Tuesday’s with Morrie)</em></p>
</blockquote>
<blockquote>
<p><em>- My answer is 42</em></p>
</blockquote>
<blockquote>
<p><em>- One, it’s living on your own terms, you define everything for yourself, success, normal, whatever. You get to curate your version of it no matter the societal norms. <br/>
It’s an accumulation of experiences - friends, parents, work, activities, doing shit loads. Sab try karo- travel, zumba, art, music, workout, sports, dil kara ye karna hai karlo. (translation - If your heart wants to do it, just do it.) <br/>
Then I think relationships - all that you’ve nurtured, people forget maintaining people because of work. It takes efforts to keep people in your life, everyone that comes has a place in yours, how well thats stays is upto you. You also get to curate your people, who stays who don’t. Family toh hai hi (translation - family is there) but everyone else that comes along can make it pretty good. <br/>
So I don’t want to be 50 and be like chalo ab kuch apne liye karte hai… (translation - Come on, now letâ€™s do something for ourselves) Do whatever shit you want today. Not everything costs money, and if it does get thrifty <br/>
But do keep healthy while doing all of that</em></p>
</blockquote>
<blockquote>
<p><em>- Being alive so that my daughter can grow up and i can help raising her kids as well.
Raising kids without mother is tough :P</em></p>
</blockquote>
<blockquote>
<p><em>- Definitively, I feel like Life is a by product of proteins and energy working together.
But in a more personal sense, Life is a dumb joke played onto us. Itâ€™s a rat race.
But rats exists because of life and then it becomes a chicken-egg problem <br/>
Honestly, I donâ€™t give good answers to life questions. Iâ€™m generally the one asking <br/>
Life can be like a box of chocolates, you donâ€™t know what youâ€™re gonna get untill you experience the chocolate(assuming the chocolates are heterogenous and contains a mix of everything) <br/>
Camus once said, â€œLife is a revoltâ€�, and one of his students added more spice to it like â€œLife is a revolt against the meaninglessness of existence" <br/>
I kinda feel like Life is the pursuit of every personâ€™s search for meaning</em></p>
</blockquote>
<blockquote>
<p><em>- Imprisonment waiting for execution ğŸ˜„ <br/>
I have one more thought while we are on the topic , game with pre defined starting position and predefined destination , path to reach is a maze</em></p>
</blockquote>
<blockquote>
<p><em>- A phase where you can have a really good time or really bad one, usually the mix of both.
A phase where you are prisoner to responsibility and materialistic wants. <br/>
It’s a hell for you, where you try to create heaven for others.
Being born was never your choice, but ending is always in your hands but you are a prisoner. You fear that leaving this world behind will destroy the heavens you created for others and they will be back to hell. But eventually everyone moves on watching the hourglass of their life. <br/>
Once you are left with no desires or no one to create heavens for, you look arround yourself. You see everyone chasing something, everyone scared of their limitted life time sliping away yet you want it to end sooner. <br/>
Doesn’t matter if it was all good till now, or all bad. The other half is waiting for redemption.
If it was all good, it’s best time to die don’t wait for the bad to start. If was all bad, it’s still the best time to die what if it was the good one and more worst is waiting for you.
We desire to be remembered, yet we want to free from this loop of suffering. <br/>
Someone once said, life is a suffering, chose your sufferings.</em></p>
</blockquote>
<blockquote>
<p><em>- Life to me is to live without regrets and live with freedom. <br/>
Life is always unpredictable and this unpredictability makes it more interesting and worth it.</em></p>
</blockquote>
<blockquote>
<p><em>- As of now, for the state of mind that I am in , I think for me life is about subtle struggle, subtle inconveniences and yet moving forward cause that’s all I know. <br/>
I am not sure if any of this has any meaning, but  sometimes I feel I was born of a purpose and that the universe has my back. <br/>
For me it’s about raising my consciousness, understanding people to their depths, gaining moderate material success and helping people to some extend. <br/>
I have tried to seek a grander meaning but I have failed. <br/>
Life for me is what I make out it. <br/>
In my times of great success i rarely think about life for I am busy enjoying it, whatever you may call that state of mind.</em></p>
</blockquote>
<blockquote>
<p><em>- For me its the little things that you enjoy with YOUR people</em></p>
</blockquote>
<blockquote>
<p><em>- Life to me is about living and loving, and doing it in a way that sustains. It’s the people who shape you, the work you get absorbed in, the quiet moments in between. There’s also the wanting, the drive to figure out what’s worth going after and how to get there, but that’s just one part of it, not the point of it. And none of it happens in a vacuum. I’m aware of the privileges that let me live this way, and I try to hold on to that gratitude. In the end, life has both a material and a non-material side, and a lot of what we do is chasing material things in an attempt to satisfy something non-material within us</em></p>
</blockquote>
<blockquote>
<p><em>- Mere liye (translation - for me) life is staying at my home and studying random economics papers. That’s when I enjoy myself the most.</em></p>
</blockquote>
<blockquote>
<p><em>- Very complicated <br/>
Some days I wish this life never ended and some time I feel it would be better if it stopped at that moment. <br/>
It all depends on the events that happen in the so called “life”. <br/>
So life to me is a string of events that happen anyway and you get to make some decisions which can turn it in any direction and then you wonder how did that happen.</em></p>
</blockquote>
<blockquote>
<p><em>- not forgetting to breathe, learn, eat, game, take a good shit, love, sleep.</em></p>
</blockquote>
<blockquote>
<p><em>- To be honest it changed with time!
At 19 it was about freedom, wasnâ€™t sure what freedom meant but i wanted that! To be free from everything, maybe because parents still controlled a part of my life.
Then came 22-24 where i was working, trying to figure out what i want, the meaning changed from freedom to living for myself. To earn more, to be greedy about myself and pursue whatever would help me gain more steps in my career. <br/>
Came my mba life, switched my life from doing for myself to trying everything out to have no regrets. Life meaning was just about living with no regrets, invested, gambled, did everything to earn that tag of â€œyeah, have tried thatâ€�.
Now it has all switched to, it was all just a fake facade. Life turned to having a meaningful life rather than finding meaning in what i am doing. Living for people around me, chhoti chhoti cheezo m khushi (translation - happiness in small things(?)) isnâ€™t really a topic of conversation but more of happy thing for me.
So it changed, and m quite happy to be honest. Life did show me a lot of failures, but was privileged enough to face those failures. Gained a lot of learnings if not moneyğŸ˜‚ <br/>
Hopeful for more learnings and change meaning of life with time</em></p>
</blockquote>
<blockquote>
<p><em>- A task.</em></p>
</blockquote>
<blockquote>
<p><em>- You have different answers at different times
You learn different meanings at different times
When you are studying, basically it is about job, finding a partner
then it becomes, house, car other things based on your income
in between, there can be passion too <br/>
Free Software was a passion, electoral politics too, but both kind of faded and I want cooperative and user driven development now (prav - something that motivates me every day) and these days learning Chinese and watching Cdrama takes a huge part of my leisure time
it is heavily subjective
and also influences by previous experiences
people around you, how much influence they have on you <br/>
it also depends on if they had to struggle in their life or not, for some life did not give much troubles
and trouble itself can be relative
people who never had to struggle may find even smallest challenges as troubles
like if you own a car, your worry is finding a parking slot</em></p>
</blockquote>
<blockquote>
<p><em>- I am too young to think about lyfe</em></p>
</blockquote>
<blockquote>
<p><em>- A ticket to see the show on earth, I guess ğŸ˜€  <br/>
I guess life is different depending on the mood. It is a very broad question. <br/>
(Me - What is it in this present mood?) <br/>
Learning stuff (like I am learning a new language) and being happy but also to regulate emotions in a world where being optimistic is getting harder each day. <br/>
Life is also having a unique set of glasses you wear. Both in terms of looking from your eyeballs and your psychological perspective. Both are unique and cannot be replicated. <br/>
It is interesting what people on their deathbed think of life.  If I know I am dying, my perspective would change a whole lot. <br/>
Life is finishing reading books while we are alive ğŸ˜‰ <br/>
Life is sleeping after a good XMPP chat ğŸ˜‰</em></p>
</blockquote>
<blockquote>
<p><em>- Dukh dard peeda (translation - surrow pain suffering)</em></p>
</blockquote>
<blockquote>
<p><em>- uhh to word it? life is just like a journey from A to somewhere and its all about what paths you take and what line you get on to me, just a series of short adventures that all connect to a larger sequence until you can’t have any more adventures-<br/>
(Me - eee, THE END. drop dead, like a coin) <br/>
yeaaaah- I am not really for spirituality of an afterlife, to me life just ends at some point, after which point there fails to remain a discernable <em>you</em>, and some X time after which, you will be last remembered, try to make that last time a good one I guess? <br/>
(Me -  no soul?) <br/>
uhhh not in the way most people think of it i guess? <br/>
theres just a lot of <code>you</code>s, theres the physical you, there is the idea of you, there is the expectation of you, and one of the undefinable you I would label as the soul maybe? like the part thats not physically you, but also certainly you <br/>
(Me - can’t say I understood part, but I get you in this sense) <br/>
mhm- well its about just questioning who you are more so questioning what life is-, I have sadly spent way too much time trying to figure that out</em></p>
</blockquote>
<blockquote>
<p><em>- Making the best of the time you have</em></p>
</blockquote>
<blockquote>
<p><em>- living a full range of experiences and embracing the good ones, seeing all that the world has to offer. In the end we were always just stardust. Might as well enjoy it when we are stardust with a consciousness of our own.</em></p>
</blockquote>
<blockquote>
<p><em>- For some reason or the Universe’s /dev/random I was born here as a biological being, and from my experience I understood living is hard and the best way to live is by embracing it. Loving everyone and everything around you. Be happy and joyful until you naturally say good bye to this world.</em></p>
</blockquote>
<blockquote>
<p><em>- Life is being fucked by everything and you just have to figure out and try to stick to the things worth being fucked for</em></p>
</blockquote>
<p>Note: Following was transcribed from a audio message.</p>
<blockquote>
<p><em>- There are five conditions to become a life to survive in the environment. I think there’s five conditions by the biological definitions and reproduction is one of the factor virus is not considered a life form because it cannot reproduce on its own but technically it’s kind of a life because it reproduces using the DNA ability this is the biological definition.
Do you want a philosophical definition? <br/>
My definition is kind of the same except that you get life experiences along with it as a human.
Extra benefits is that you are not an NPC. All other organisms are NPCs.
But humans can interpret the world and change it to their liking.
That is life in the case of a human.
But then many humans are mostly NPCs.
But they still can change the life.
Okay, fuck this. Where is this even going? <br/>
A human is an exception in the case of life, because human is not an NPC.
Human can interrupt the world, human can change it to its liking,
which is why we are such a successful organism on this planet.
That is life to me. That’s a human.
But all of this is kind of meaningless, because
the biological impurity of a human being still exists, so you still have the
urges to reproduce, which kind of makes
it like just another organism. But then, humans are yet to evolve
to overcome that biological imperative.</em></p>
</blockquote>
<p>I’m grateful for all the replies, outlooks, and subsequent conversations I got to have after this question with everyone. After all, it was a deeply personal question. It does fit in nicely with <em>my</em> definition of life: <br/> <em>“Life is all about experiences and all the transient relationships one gets to have with folks we meet on the way.”</em></p></div>
    </summary>
    <updated>2026-04-16T17:59:00Z</updated>
    <published>2026-04-16T17:59:00Z</published>
    <author>
      <name>Sahil Dhiman</name>
    </author>
    <source>
      <id>https://blog.sahilister.in/</id>
      <link href="https://blog.sahilister.in/" rel="alternate" type="text/html"/>
      <link href="https://blog.sahilister.in/index.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Recent content on sahilister's Reimagined Doodle</subtitle>
      <title>sahilister's Reimagined Doodle</title>
      <updated>2026-04-27T02:40:59Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>https://ravidwivedi.in/posts/hungary-visa/</id>
    <link href="https://ravidwivedi.in/posts/hungary-visa/" rel="alternate" type="text/html"/>
    <title>Hungary Visa</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>The annual <a href="https://conference.libreoffice.org/2025/">LibreOffice conference 2025</a> was held in Budapest, Hungary, from the 3rd to the 6th of September 2025. Thanks to the <a href="https://www.documentfoundation.org/">The Document Foundation</a> (TDF) for sponsoring me to attend the conference.</p>
<p>As Hungary is a part of the Schengen area, I needed a Schengen visa to attend the conference. In order to apply for a Schengen visa, one needs to get an appointment at VFS Global and submit all the required documents there, which are then forwarded to the embassy.</p>
<p>I got an appointment for a Hungary visa at VFS Global in New Delhi for the 24th of July. There were many appointment slots available for the Hungary visa. One could easily get an appointment for the next day at the Delhi center. There were some technical problems on the VFS website, though, as I was unable to upload a scanned copy of my passport while booking the appointment. I got an error saying, “Unfortunately, you have exceeded the maximum upload limit.”</p>
<p>The problem didn’t get fixed even after contacting the VFS helpline. They asked me to try in the Firefox browser and deleting all the cache, which I already did.</p>
<p>So I created another account with a different email address and phone number, after which I was able to upload my passport and book an appointment. Other conference attendees from India also reported facing some technical issues on the VFS Hungary website.</p>
<p>Anyway, I went to the VFS Hungary application center as per my appointment on the 24th of July. Going inside, I located the Hungary visa application counter. There were two applicants ahead of me.</p>
<p>When it was my turn, the VFS staff warned me that my passport was damaged. The “damage” was on the bio-data page. All the details could be seen, but the lamination of the details page wore off a bit. They asked me to write an application to the Embassy of Hungary in New Delhi stating that I insist VFS to submit my application along with describing the “damage” on my passport.</p>
<p>I got a bit worried about my application getting rejected due to the “damage.” But I decided to gamble my money on this one, as I didn’t have time (and energy) to apply for a new passport before this trip.</p>
<p>Moreover, I had struck down a couple of fields in my visa application form which were not applicable to me, due to which the VFS staff asked me to fill out another visa application.</p>
<p>After this, the application got submitted, and it was 11,000 INR (including the fee to book the appointment at VFS). Here is the list of documents I submitted:</p>
<ul>
<li>
<p>My passport</p>
</li>
<li>
<p>Photocopy of my passport</p>
</li>
<li>
<p>Two photographs of myself</p>
</li>
<li>
<p>Duly filled visa application form</p>
</li>
<li>
<p>Return flight ticket reservations</p>
</li>
<li>
<p>Payslips for the last three months</p>
</li>
<li>
<p>Invitation letter from the conference organizer (in Hungarian)</p>
</li>
<li>
<p>Proof of hotel bookings during my stay in Hungary</p>
</li>
<li>
<p>Cover letter stating my itinerary</p>
</li>
<li>
<p>Income tax returns filed by me</p>
</li>
<li>
<p>Bank account statement, signed and sealed by the bank</p>
</li>
<li>
<p>Travel insurance valid for the period of the entire trip</p>
</li>
</ul>
<p>It took 2 hours for me to submit my visa application, even though there were only two applicants before me. This was by far the longest time to submit a Schengen visa application for me.</p>
<p>Fast-forward to the 30th of July, and I received an email from the Embassy of Hungary asking me to submit an additional document - paid air ticket - for my application. I had only submitted dummy flight tickets, and they were enough for the Schengen visas I applied for until now. This was the first time a country was asking me to submit a confirmed flight ticket during the visa process.</p>
<p>I consulted my travel agent on this, and they were fairly confident that I will get the visa if the embassy is asking me to submit confirmed flight tickets. So I asked the travel agent to book the flight tickets. These tickets were ₹78,000, and the airline was Emirates. Then, I sent the flight tickets to the embassy by email.</p>
<p>The embassy sent the visa results on the 6th of August, which I received the next day.</p>
<p>My visa had been approved! It took 14 days for me to get the Hungary visa after submitting the application.</p>
<p>See you in the next one!</p>
<p><strong>Thanks to <a href="https://badrihippo.thekambattu.rocks/">Badri</a> for proofreading.</strong></p></div>
    </summary>
    <updated>2026-04-14T05:50:25Z</updated>
    <published>2026-04-14T05:50:25Z</published>
    <source>
      <id>https://ravidwivedi.in/posts/</id>
      <author>
        <name>Ravi Dwivedi</name>
      </author>
      <link href="https://ravidwivedi.in/posts/" rel="alternate" type="text/html"/>
      <link href="https://ravidwivedi.in/posts/index.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Recent content in Posts on Ravi's Blog</subtitle>
      <title>Posts on Ravi's Blog</title>
      <updated>2026-05-29T14:26:28Z</updated>
    </source>
  </entry>
</feed>
