<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Programming on Raveen Kumar</title>
    <link>https://raveenkumar.com/tags/programming/</link>
    <description>Recent content in Programming on Raveen Kumar</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <copyright>Raveen Kumar</copyright>
    <lastBuildDate>Fri, 04 Sep 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://raveenkumar.com/tags/programming/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Contacts Organizer cli app</title>
      <link>https://raveenkumar.com/posts/2026-09-04-contacts-organizer-cli-app/</link>
      <pubDate>Fri, 04 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/posts/2026-09-04-contacts-organizer-cli-app/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;TODO:&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Power of 2s</title>
      <link>https://raveenkumar.com/posts/2023-04-20-power-of-2s/</link>
      <pubDate>Thu, 20 Apr 2023 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/posts/2023-04-20-power-of-2s/</guid>
      <description>&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;n&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;2^n&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;2&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;2&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;4&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;3&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;8&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;4&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;16&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;5&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;32&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;6&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;64&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;7&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;128&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;8&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;256&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;9&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;512&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;10&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1,024&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;11&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;2,048&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;12&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;4,096&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;13&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;8,192&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;14&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;16,384&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;15&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;32,768&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;16&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;65,536&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;17&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;131,072&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;18&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;262,144&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;19&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;524,288&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;20&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1,048,576&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;</description>
    </item>
    <item>
      <title>Reading notes - Designing a Video Game hardware in Verilog</title>
      <link>https://raveenkumar.com/posts/2023-04-20-reading-notes---designing-a-video-game-hardware-in-verilog/</link>
      <pubDate>Thu, 20 Apr 2023 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/posts/2023-04-20-reading-notes---designing-a-video-game-hardware-in-verilog/</guid>
      <description>&lt;p&gt;Book: &lt;em&gt;Designing Video Game Hardware in Verilog&lt;/em&gt;, Steven Hugg (2018).&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;../2023-04-20-power-of-2s/&#34;&gt;2023-04-20-power-of-2s&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Byte - 8 bits&#xA;Nibble - 4 bits&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-verilog&#34; data-lang=&#34;verilog&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;A clock divider in Verilog, using the cascading&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;flip-flop method.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;*/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;module&lt;/span&gt; clock_divider(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;input&lt;/span&gt; clk,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;input&lt;/span&gt; reset,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;output&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;reg&lt;/span&gt; clk_div2,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;output&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;reg&lt;/span&gt; clk_div4,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;output&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;reg&lt;/span&gt; clk_div8,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;output&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;reg&lt;/span&gt; clk_div16&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;// simple ripple clock divider&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;always&lt;/span&gt; @(&lt;span style=&#34;color:#66d9ef&#34;&gt;posedge&lt;/span&gt; clk)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    clk_div2 &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; reset &lt;span style=&#34;color:#f92672&#34;&gt;?&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;~&lt;/span&gt;clk_div2;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;always&lt;/span&gt; @(&lt;span style=&#34;color:#66d9ef&#34;&gt;posedge&lt;/span&gt; clk_div2)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    clk_div4 &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;~&lt;/span&gt;clk_div4;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;always&lt;/span&gt; @(&lt;span style=&#34;color:#66d9ef&#34;&gt;posedge&lt;/span&gt; clk_div4)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    clk_div8 &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;~&lt;/span&gt;clk_div8;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;always&lt;/span&gt; @(&lt;span style=&#34;color:#66d9ef&#34;&gt;posedge&lt;/span&gt; clk_div8)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    clk_div16 &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;~&lt;/span&gt;clk_div16;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;endmodule&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;static-timing-anaysis&#34;&gt;Static timing anaysis&lt;/h2&gt;&#xA;&lt;p&gt;Setup time and hold time are timing constraints that must be met in digital circuits to ensure correct data transfer between logic elements. These constraints are important to consider in the design of synchronous digital circuits, which use a clock signal to synchronize the transfer of data between flip-flops or other storage elements.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Emacs symbol search at point</title>
      <link>https://raveenkumar.com/posts/2023-04-12-emacs-symbol-search-at-point/</link>
      <pubDate>Wed, 12 Apr 2023 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/posts/2023-04-12-emacs-symbol-search-at-point/</guid>
      <description>&lt;p&gt;To enter symbol search press &lt;code&gt;M-s .&lt;/code&gt; this with execute &lt;code&gt;isearch-forward-symbol-at-point&lt;/code&gt; function. This is similar to vim&amp;rsquo;s &lt;code&gt;*&lt;/code&gt; key. I accitentally pressed it instead of &lt;code&gt;M-s h .&lt;/code&gt; and found it while trying to highlight a symbol, lol.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mark ring and Jumplist with emacs and helm</title>
      <link>https://raveenkumar.com/posts/2023-04-07-mark-ring-and-jumplist-with-emacs-and-helm/</link>
      <pubDate>Fri, 07 Apr 2023 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/posts/2023-04-07-mark-ring-and-jumplist-with-emacs-and-helm/</guid>
      <description>&lt;p&gt;Like vim, emacs has an alternative to jump list. It is called mark rings but its difficult to use. Fortunately there is a helm and counsel function to help us navigate the mark rings. Add this following command to emacs init file,&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-lisp&#34; data-lang=&#34;lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(global-set-key (kbd &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;C-c &amp;#39;&amp;#34;&lt;/span&gt;) &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;helm-all-mark-rings&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I use &lt;code&gt;C-c &#39;&lt;/code&gt; to browse mark rings.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Stop asking tags table to be reset every time a new file is visited in a different project</title>
      <link>https://raveenkumar.com/posts/2023-04-07-stop-asking-tags-table-to-be-reset-every-time-a-new-file-is-visited-in-a-different-project/</link>
      <pubDate>Fri, 07 Apr 2023 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/posts/2023-04-07-stop-asking-tags-table-to-be-reset-every-time-a-new-file-is-visited-in-a-different-project/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-lisp&#34; data-lang=&#34;lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;setq&lt;/span&gt; tags-add-tables &lt;span style=&#34;color:#66d9ef&#34;&gt;nil&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Emacs configuration for perl programming</title>
      <link>https://raveenkumar.com/posts/2023-03-03-emacs-configuration-for-perl-programming/</link>
      <pubDate>Fri, 03 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/posts/2023-03-03-emacs-configuration-for-perl-programming/</guid>
      <description>&lt;p&gt;Configuration taken from &lt;a href=&#34;https://www.emacswiki.org/emacs/CPerlMode&#34;&gt;https://www.emacswiki.org/emacs/CPerlMode&lt;/a&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-lisp&#34; data-lang=&#34;lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;;;; Perl&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;;; cperl-mode is preferred to perl-mode&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;;; &amp;#34;Brevity is the soul of wit&amp;#34; &amp;lt;foo at acm.org&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(defalias &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;perl-mode&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;cperl-mode&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;setq&lt;/span&gt; cperl-invalid-face &lt;span style=&#34;color:#66d9ef&#34;&gt;nil&lt;/span&gt;) &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;setq&lt;/span&gt; cperl-electric-keywords &lt;span style=&#34;color:#66d9ef&#34;&gt;t&lt;/span&gt;) &lt;span style=&#34;color:#75715e&#34;&gt;;; expands for keywords such as foreach, while, etc...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;setq&lt;/span&gt; cperl-hairy &lt;span style=&#34;color:#66d9ef&#34;&gt;t&lt;/span&gt;) &lt;span style=&#34;color:#75715e&#34;&gt;;; Turns on most of the CPerlMode options&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Python docstrings</title>
      <link>https://raveenkumar.com/posts/2023-02-28-python-docstrings/</link>
      <pubDate>Tue, 28 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/posts/2023-02-28-python-docstrings/</guid>
      <description>&lt;p&gt;In python, docstrings are used to define the functions documentation. Refer this page,&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://peps.python.org/pep-0257/&#34;&gt;https://peps.python.org/pep-0257/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;function&lt;/span&gt;(a, b):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;Do X and return a list.&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>How-to delete an element from a xml tree in Python</title>
      <link>https://raveenkumar.com/posts/2023-02-27-how-to-delete-an-element-from-a-xml-tree-in-python/</link>
      <pubDate>Mon, 27 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/posts/2023-02-27-how-to-delete-an-element-from-a-xml-tree-in-python/</guid>
      <description>&lt;p&gt;Following are the steps to delete an element from a xml tree proprly when parsing with python,&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://stackoverflow.com/questions/47041688/remove-element-from-xml-with-elementtree&#34;&gt;https://stackoverflow.com/questions/47041688/remove-element-from-xml-with-elementtree&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Example XML tree&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;foo&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;bar&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;level&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;test&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;name=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;stuff&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;               hello&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/stuff&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/test&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;test&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;name=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;stuff&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;               hello&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/stuff&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/test&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/level&amp;gt;&lt;/span&gt;   &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/bar&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/foo&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Python code to delete stuff&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; xml.etree.ElementTree &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; ET&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tree &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ET&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;parse(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;myfile.xml&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;root &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; tree&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;getroot()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; test &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; root&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;iter(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;test&amp;#39;&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; stuff &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; test&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;findall(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;stuff&amp;#39;&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       test&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;remove(stuff)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print ET&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;tostring(root)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You need to have pointer to parent tag in order to remove child tag.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fuzzy matching with python</title>
      <link>https://raveenkumar.com/posts/2023-02-26-fuzzy-matching-with-python/</link>
      <pubDate>Sun, 26 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/posts/2023-02-26-fuzzy-matching-with-python/</guid>
      <description>&lt;p&gt;Fuzzy matching is great. In fact, it is better than regular expression matching in certain cases. Come to think of it, our entire human brain works on fuzzy matching.&lt;/p&gt;&#xA;&lt;p&gt;Take handwriting, for example, everyone can read each other&amp;rsquo;s handwriting as long as it&amp;rsquo;s legible. That&amp;rsquo;s fuzzy matching on an organic level.&lt;/p&gt;&#xA;&lt;p&gt;I had a problem where I have a string of text, and I wanted to match the substring with other string but the issue is that the substring varies from string to string and I cant predict the proper substring to do a regex matching. So suddenly out of the blue I got an idea to do a fuzzy matching.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Adding epiog to python scripts using argparse module</title>
      <link>https://raveenkumar.com/posts/2023-02-20-adding-epilog-to-python-scripts-using-argparse-module/</link>
      <pubDate>Mon, 20 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/posts/2023-02-20-adding-epilog-to-python-scripts-using-argparse-module/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://docs.python.org/dev/library/argparse.html#argparse.RawDescriptionHelpFormatter&#34;&gt;https://docs.python.org/dev/library/argparse.html#argparse.RawDescriptionHelpFormatter&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;We can add epilog to argparse help and description to add more info. Refer link above.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PHP Notes</title>
      <link>https://raveenkumar.com/library/programming/php/</link>
      <pubDate>Mon, 20 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/library/programming/php/</guid>
      <description>&lt;h2 id=&#34;php-notes&#34;&gt;PHP Notes&lt;/h2&gt;</description>
    </item>
    <item>
      <title>Programming</title>
      <link>https://raveenkumar.com/library/programming/</link>
      <pubDate>Sun, 19 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/library/programming/</guid>
      <description></description>
    </item>
    <item>
      <title>Coding Guidelines</title>
      <link>https://raveenkumar.com/library/programming/coding-guidelines/</link>
      <pubDate>Sat, 18 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/library/programming/coding-guidelines/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;First rule of coding, do not code&lt;/li&gt;&#xA;&lt;li&gt;Second rule of coding, write less code whenever you can&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>C&#43;&#43; notes</title>
      <link>https://raveenkumar.com/library/programming/c&#43;&#43;/</link>
      <pubDate>Fri, 17 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/library/programming/c&#43;&#43;/</guid>
      <description>&lt;h2 id=&#34;for-loops&#34;&gt;For loops&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;for (uint32_t i=0; i&amp;lt;10; i++) {&#xA;printf(&amp;quot;i = %d&amp;quot;, i);&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;prints&#34;&gt;Prints&lt;/h2&gt;&#xA;&lt;p&gt;printf(&amp;ldquo;unsigned = %u&amp;rdquo;, var1);&#xA;printf(&amp;ldquo;signed   = %d&amp;rdquo;, var1);&lt;/p&gt;&#xA;&lt;h2 id=&#34;functions&#34;&gt;Functions&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://softwareengineering.stackexchange.com/questions/286490/what-is-the-difference-between-function-and-functionvoid&#34;&gt;https://softwareengineering.stackexchange.com/questions/286490/what-is-the-difference-between-function-and-functionvoid&lt;/a&gt;&#xA;6.7.6.3 Function declarators (including prototypes)&#xA;10 The special case of an unnamed parameter of type void as the only item in the list specifies that the function has no parameters.&#xA;14 An identifier list declares only the identifiers of the parameters of the function. An empty list in a function declarator that is part of a definition of that function specifies that the function has no parameters. The empty list in a function declarator that is not part of a definition of that function specifies that no information about the number or types of the parameters is supplied.145)&lt;/p&gt;</description>
    </item>
    <item>
      <title>ctags</title>
      <link>https://raveenkumar.com/library/programming/ctags/</link>
      <pubDate>Fri, 17 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/library/programming/ctags/</guid>
      <description>&lt;h2 id=&#34;basics&#34;&gt;Basics&lt;/h2&gt;&#xA;&lt;p&gt;Ctags is a tool that makes it easy to navigate large source code projects. It provides some of the features that you may be used to using in Eclipse or other IDEs, such as the ability to jump from the current source file to definitions of functions and structures in other files.&lt;/p&gt;&#xA;&lt;p&gt;For full info refer this link, &lt;a href=&#34;https://courses.cs.washington.edu/courses/cse451/10au/tutorials/tutorial_ctags.html&#34;&gt;https://courses.cs.washington.edu/courses/cse451/10au/tutorials/tutorial_ctags.html&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;commands&#34;&gt;Commands&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cd $REPO_ROOT&#xA;ctags -R *&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In vim&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;:! ctag -R *&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Add the tags file to vimrc&lt;/p&gt;</description>
    </item>
    <item>
      <title>Documentation notes</title>
      <link>https://raveenkumar.com/library/programming/documentation/</link>
      <pubDate>Fri, 17 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/library/programming/documentation/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://documentation.divio.com/&#34;&gt;https://documentation.divio.com/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://labs.quansight.org/blog/2020/03/documentation-as-a-way-to-build-community&#34;&gt;Documentation as a way to build community&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Emacs lisp / elisp</title>
      <link>https://raveenkumar.com/library/programming/elisp-snippets/</link>
      <pubDate>Fri, 17 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/library/programming/elisp-snippets/</guid>
      <description>&lt;h2 id=&#34;open-messages-buffer-in-a-popup-window-below&#34;&gt;Open messages buffer in a popup window below&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-lisp&#34; data-lang=&#34;lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;let&lt;/span&gt; ((messages-buffer (get-buffer &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;*Messages*&amp;#34;&lt;/span&gt;)))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (display-buffer-at-bottom messages-buffer&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#39;&lt;/span&gt;(display-buffer-pop-up-window&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      (window-height &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0.2&lt;/span&gt;))))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>General programming notes</title>
      <link>https://raveenkumar.com/library/programming/general-programming-notes/</link>
      <pubDate>Fri, 17 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/library/programming/general-programming-notes/</guid>
      <description>&lt;h2 id=&#34;file-structure&#34;&gt;File structure&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Always try to keep files in one directory, but name them properly&lt;/li&gt;&#xA;&lt;li&gt;Use multiple directories to dump similar data&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;json&#34;&gt;json&lt;/h2&gt;&#xA;&lt;p&gt;Cannot use bash variables inside json files&lt;/p&gt;</description>
    </item>
    <item>
      <title>Programming Concepts</title>
      <link>https://raveenkumar.com/library/programming/programming-concepts/</link>
      <pubDate>Fri, 17 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/library/programming/programming-concepts/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;Arrays&lt;/li&gt;&#xA;&lt;li&gt;Associative arrays&lt;/li&gt;&#xA;&lt;li&gt;dicts&lt;/li&gt;&#xA;&lt;li&gt;case&lt;/li&gt;&#xA;&lt;li&gt;while&lt;/li&gt;&#xA;&lt;li&gt;for&lt;/li&gt;&#xA;&lt;li&gt;if&lt;/li&gt;&#xA;&lt;li&gt;exit codes and returns&lt;/li&gt;&#xA;&lt;li&gt;advicing functions&lt;/li&gt;&#xA;&lt;li&gt;Fuzzy matching - &lt;a href=&#34;https://raveenkumar.com/posts/2023-02-26-fuzzy-matching-with-python/&#34;&gt;Fuzzy Matching with python&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Programming quotes</title>
      <link>https://raveenkumar.com/library/programming-quotes/</link>
      <pubDate>Fri, 17 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/library/programming-quotes/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://howto-pages.org/shootfoot.php&#34;&gt;How to shoot yourself in the foot&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;The problem with object-oriented languages is they’ve got all this implicit environment that they carry around with them. You wanted a banana but what you got was a gorilla holding the banana and the entire jungle. — Joe&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Some people, when confronted with a problem, think ‘I&#xA;know, I’ll use regular expressions.’ Now they have two&#xA;problems.&lt;/p&gt;&#xA;&lt;p&gt;Jamie Zawinski&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Yuan-Ma said, ‘When you cut against the grain of the wood,&#xA;much strength is needed. When you program against the&#xA;grain of the problem, much code is needed.’&lt;/p&gt;</description>
    </item>
    <item>
      <title>Advising a function in emacs lisp</title>
      <link>https://raveenkumar.com/posts/2023-01-22-emacs-lisp-advice/</link>
      <pubDate>Thu, 16 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/posts/2023-01-22-emacs-lisp-advice/</guid>
      <description>&lt;p&gt;One of the awesome things that I found when programming in elisp is the advice. For any function, you can advice before, after, around, to it.&lt;/p&gt;&#xA;&lt;p&gt;When you advice a function A with a function B. Function B will executed before it. This is really interesting and useful.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-lisp&#34; data-lang=&#34;lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(advice-add &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;funa&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;:before&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;funb&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;EMACS is a event based program, it has hooks, advices and all that goodness to modify and customize anything. 🪝&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bash</title>
      <link>https://raveenkumar.com/library/programming/bash/</link>
      <pubDate>Thu, 16 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/library/programming/bash/</guid>
      <description>&lt;h2 id=&#34;bash&#34;&gt;Bash&lt;/h2&gt;&#xA;&lt;h2 id=&#34;reading-materials&#34;&gt;Reading materials&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blog.yossarian.net/2020/01/23/Anybody-can-write-good-bash-with-a-little-effort&#34;&gt;https://blog.yossarian.net/2020/01/23/Anybody-can-write-good-bash-with-a-little-effort&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://will-keleher.com/posts/5-Useful-Bash-Patterns.html&#34;&gt;https://will-keleher.com/posts/5-Useful-Bash-Patterns.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://timvisee.com/blog/elegant-bash-conditionals&#34;&gt;https://timvisee.com/blog/elegant-bash-conditionals&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://srobb.net/shellscripting.html&#34;&gt;https://srobb.net/shellscripting.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://srobb.net/bashtips.html&#34;&gt;https://srobb.net/bashtips.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;select-statement&#34;&gt;Select statement&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;select&lt;/span&gt; opt in y n; &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;echo $opt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This creates a loop where the user can select the option. Use case to break out of the loop.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;select&lt;/span&gt; opt in y n; &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;echo $opt selected&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; $opt in&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;y&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;break &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;n&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;break &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;*&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;echo wrong option&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#66d9ef&#34;&gt;esac&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;bash-variables&#34;&gt;Bash variables&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;$USER&#xA;$HOSTNAME&#xA;$PS1&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h3 id=&#34;to-find-or-list-all-environment-variables&#34;&gt;To Find or List all environment variables&lt;/h3&gt;&#xA;&lt;pre&gt;&lt;code&gt;env&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;This is useful when we want to manage the shell variables properly&lt;/p&gt;</description>
    </item>
    <item>
      <title>VLSI</title>
      <link>https://raveenkumar.com/library/programming/vlsi/</link>
      <pubDate>Thu, 16 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/library/programming/vlsi/</guid>
      <description>&lt;h2 id=&#34;vlsi&#34;&gt;VLSI&lt;/h2&gt;</description>
    </item>
    <item>
      <title>How to shoot yourself in the foot</title>
      <link>https://raveenkumar.com/library/programming/how-to-shoot-yourself-in-the-foot/</link>
      <pubDate>Tue, 07 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/library/programming/how-to-shoot-yourself-in-the-foot/</guid>
      <description>&lt;h2 id=&#34;how-to-shoot-yourself-in-the-foot&#34;&gt;How to shoot yourself in the foot&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Described below are several methods for shooting yourself in the foot using various programming techniques.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;C&lt;/strong&gt;&lt;br&gt;&#xA;You shoot yourself in the foot.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;C++&lt;/strong&gt;&lt;br&gt;&#xA;You accidentally create a dozen instances of yourself and shoot them all in the foot. Providing emergency medical care is impossible since you can&amp;rsquo;t tell which are bitwise copies and which are just pointing at others and saying, &amp;ldquo;That&amp;rsquo;s me over there.&amp;rdquo;&lt;/p&gt;</description>
    </item>
    <item>
      <title>When to use implicit else</title>
      <link>https://raveenkumar.com/posts/2022-12-12-when-to-use-implicit-else/</link>
      <pubDate>Mon, 12 Dec 2022 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/posts/2022-12-12-when-to-use-implicit-else/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://medium.com/lost-but-coding/when-to-use-implicit-else-e891cdcfe1bd&#34;&gt;https://medium.com/lost-but-coding/when-to-use-implicit-else-e891cdcfe1bd&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;The author describes an ‘implicit else’. I’ve never heard of such a thing. Turns out it’s just doing this:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;if (x) {&#xA;  return y;&#xA; }&#xA;return z;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;instead of this:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;if (x) {&#xA;  return y;&#xA; } else {&#xA;  return z;&#xA; }&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Is it ok to murder a program</title>
      <link>https://raveenkumar.com/posts/2022-10-12-is-it-ok-to-murder-a-program/</link>
      <pubDate>Wed, 12 Oct 2022 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/posts/2022-10-12-is-it-ok-to-murder-a-program/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been thinking about the life of humans in relation to the programs we write. Here are some examples,&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Scenario 1&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;We assume that there is a law that allows murder if and only if you will make one offspring and raise it until it reaches the age of the murder victim.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Scenario 2&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Let us assume that a person is on his/her deathbed, and you were given a knife. You are allowed to end the person&amp;rsquo;s suffering a day before the natural death. Will you do it? What if it was an hour before, a second before or a millisecond before. Will you still do it?&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to customize tmux status bar with shell scripts</title>
      <link>https://raveenkumar.com/posts/2022-10-06-customize-tmux-status-bar-with-shell-scripts/</link>
      <pubDate>Thu, 06 Oct 2022 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/posts/2022-10-06-customize-tmux-status-bar-with-shell-scripts/</guid>
      <description>&lt;p&gt;TMUX status bar can be customized to run shell scripts.&lt;/p&gt;&#xA;&lt;p&gt;In the &lt;code&gt;.tmux.conf&lt;/code&gt; file, in the status left or right command execute the shell script using the following syntax,&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;set -g status-right &#39;| #(shell_script.bash) |&#39;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;This will print the output of that shell script in the status bar. Useful if you want to check the size the home directory.&lt;/p&gt;&#xA;&lt;p&gt;Contents of &lt;code&gt;shell_script.bash&lt;/code&gt; example&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;#!/bin/bash&#xA;&#xA;df -h $HOME | awk &#39;{print $5}&#39; | tail -n 1&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Battery information in i3 status bar</title>
      <link>https://raveenkumar.com/posts/2022-09-27-battery-information-in-i3-status-bar/</link>
      <pubDate>Tue, 27 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/posts/2022-09-27-battery-information-in-i3-status-bar/</guid>
      <description>&lt;p&gt;First create battery block,&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;battery 0 {&#xA;  format = &amp;quot; %status %percentage %remaining &amp;quot;&#xA;  format_down = &amp;quot; no battery &amp;quot;  &#xA;  last_full_capacity = false&#xA;  integer_battery_capacity = true  &#xA;  hide_seconds = true    &#xA;  status_chr = &amp;quot;&amp;quot;&#xA;  status_bat = &amp;quot;☉&amp;quot;&#xA;  status_full = &amp;quot;☻&amp;quot;&#xA;  low_threshold = 10&#xA;  threshold_type = percentage&#xA;  path = &amp;quot;/sys/class/power_supply/BAT0/uevent&amp;quot;&#xA;} &#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;then add it to the order array,&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;order += &amp;quot;battery 0&amp;quot;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Make sure to check the path of the battery first. In my case it was &lt;code&gt;/sys/class/power_supply/BAT0/uevent&lt;/code&gt;. It might be different for other laptops.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to find out what display server I am using</title>
      <link>https://raveenkumar.com/posts/2022-09-15-how-to-find-out-what-display-server-i-am-using/</link>
      <pubDate>Thu, 15 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/posts/2022-09-15-how-to-find-out-what-display-server-i-am-using/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://unix.stackexchange.com/questions/236498/how-to-get-information-about-which-display-server-is-running&#34;&gt;https://unix.stackexchange.com/questions/236498/how-to-get-information-about-which-display-server-is-running&lt;/a&gt;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;ps -e | grep tty&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Start your commands with a comma</title>
      <link>https://raveenkumar.com/posts/2022-09-13-starting-your-commands-with-a-comma/</link>
      <pubDate>Tue, 13 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://raveenkumar.com/posts/2022-09-13-starting-your-commands-with-a-comma/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://rhodesmill.org/brandon/2009/commands-with-comma/&#34;&gt;https://rhodesmill.org/brandon/2009/commands-with-comma/&lt;/a&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
