<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>A Developer&#39;s Experience</title>
    <link>/</link>
    <description>Recent content on A Developer&#39;s Experience</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 16 Mar 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>YMMV</title>
      <link>/posts/ymmv/</link>
      <pubDate>Mon, 16 Mar 2026 00:00:00 +0000</pubDate>
      <guid>/posts/ymmv/</guid>
      <description>I bought my car over 12 years ago and have tracked every fuel fill-up and mile since day one. For years I relied on spreadsheets to log fuel purchases and mileage. I always felt there should be a simple app for this, but none of the ones I found quite matched what I needed. And I kept putting off building one myself. Until now.</description>
    </item>
    <item>
      <title>Parsing from scratch - Part 4</title>
      <link>/posts/parser4/</link>
      <pubDate>Tue, 24 Feb 2026 12:00:00 +0000</pubDate>
      <guid>/posts/parser4/</guid>
      <description>Until now, we implemented a few relatively simple parsers; for parsing dates and hex colors. In this post, we are going to build a parser for parsing configuration key value pairs. This is a bit more involved compared to the ones we built so far. Read on.</description>
    </item>
    <item>
      <title>Parsing from scratch - Part 3</title>
      <link>/posts/parser3/</link>
      <pubDate>Tue, 24 Feb 2026 09:00:00 +0000</pubDate>
      <guid>/posts/parser3/</guid>
      <description>Let us implement another simple parser, this time for semantic version. Read on.</description>
    </item>
    <item>
      <title>Parsing from scratch - Part 2</title>
      <link>/posts/parser2/</link>
      <pubDate>Sun, 15 Feb 2026 10:00:00 +0000</pubDate>
      <guid>/posts/parser2/</guid>
      <description>Having learnt how to &lt;a href=&#34;/posts/parser1&#34;&gt;write&lt;/a&gt; a simple parsing library from scratch, it is time to put it to the test by writing simple parsers. In this post, we will write a few high-level parsers - dates of the format &lt;code&gt;YYYY-MM-DD&lt;/code&gt;, hex colors etc.</description>
    </item>
    <item>
      <title>Parsing from scratch - Part 1</title>
      <link>/posts/parser1/</link>
      <pubDate>Sun, 15 Feb 2026 09:00:00 +0000</pubDate>
      <guid>/posts/parser1/</guid>
      <description>Parsing from scratch is a powerful technique that allows you to build custom parsers for your specific needs. In this series, we will explore the basics of parsing and how to implement a simple parser in Scala.</description>
    </item>
    <item>
      <title>The Builder Macro</title>
      <link>/posts/builder-macro/</link>
      <pubDate>Mon, 15 Dec 2025 00:00:00 +0000</pubDate>
      <guid>/posts/builder-macro/</guid>
      <description>Some astute readers of the previous &lt;a href=&#34;/posts/builder1&#34;&gt;post&lt;/a&gt; on builder pattern highlighted the verbosity of the pattern. The builder pattern is a powerful pattern but comes with the baggage of boilerplate code. One even asked if it could be automated using macros. The answer is yes!</description>
    </item>
    <item>
      <title>The Sanitizer</title>
      <link>/posts/sanitizer-talk/</link>
      <pubDate>Mon, 17 Nov 2025 00:00:00 +0000</pubDate>
      <guid>/posts/sanitizer-talk/</guid>
      <description>Bahul and I gave a talk about a PII logging library solution in the Bay Area Scala meetup.</description>
    </item>
    <item>
      <title>Type Gymnastics with Builders - Part 8 - Show me the Code</title>
      <link>/posts/builder8/</link>
      <pubDate>Mon, 13 Oct 2025 15:00:00 +0000</pubDate>
      <guid>/posts/builder8/</guid>
      <description>This is a post-credits bonus post that shows the complete and finished builder code.</description>
    </item>
    <item>
      <title>Type Gymnastics with Builders - Part 7 - Why bother?</title>
      <link>/posts/builder7/</link>
      <pubDate>Mon, 13 Oct 2025 14:00:00 +0000</pubDate>
      <guid>/posts/builder7/</guid>
      <description>While the builder pattern is a powerful tool for creating complex objects in a type-safe manner, it is easy to discard it given its complexity and boilerplate. This post details the situations where builders are particularly useful.</description>
    </item>
    <item>
      <title>Type Gymnastics with Builders - Part 6 - Can You Hold This For Me?</title>
      <link>/posts/builder6/</link>
      <pubDate>Mon, 13 Oct 2025 13:00:00 +0000</pubDate>
      <guid>/posts/builder6/</guid>
      <description>This post takes the ideas from previous posts to get rid of some boilerplate, and concluding the &amp;ldquo;how&amp;rdquo; portion of the series.</description>
    </item>
    <item>
      <title>Type Gymnastics with Builders - Part 5 - Order, Order, I Say!</title>
      <link>/posts/builder5/</link>
      <pubDate>Mon, 13 Oct 2025 12:00:00 +0000</pubDate>
      <guid>/posts/builder5/</guid>
      <description>This post adds type-level ordering to the builder, enforcing when fields can be set. It introduces explicit constraints on configuration order: host/port first, maxConnections/connectionTimeout before algebras, and HealthChecks last. Read more to know how.</description>
    </item>
    <item>
      <title>Type Gymnastics with Builders - Part 4 - Flexibility</title>
      <link>/posts/builder4/</link>
      <pubDate>Mon, 13 Oct 2025 11:00:00 +0000</pubDate>
      <guid>/posts/builder4/</guid>
      <description>This post makes the builder API more flexible by allowing incremental health check additions without losing type safety. We will see how &lt;code&gt;withHealthChecks&lt;/code&gt; is changed from replace to append, so calls accumulate instead of overwrite.</description>
    </item>
    <item>
      <title>Type Gymnastics with Builders - Part 3 - Errors Are UX Too</title>
      <link>/posts/builder3/</link>
      <pubDate>Mon, 13 Oct 2025 10:00:00 +0000</pubDate>
      <guid>/posts/builder3/</guid>
      <description>This post talks about making the error messages cleaner and clearer. You might want to read this one since it involves typeclasses. 😉</description>
    </item>
    <item>
      <title>Type Gymnastics with Builders - Part 2 - Know Your Limitations</title>
      <link>/posts/builder2/</link>
      <pubDate>Mon, 13 Oct 2025 09:00:00 +0000</pubDate>
      <guid>/posts/builder2/</guid>
      <description>This post extends a prior typesafe Builder Pattern and demonstrates where it breaks down with a more complex &lt;code&gt;AppConfig[F[_]]&lt;/code&gt; that wires &lt;code&gt;Auth&lt;/code&gt;, &lt;code&gt;Users&lt;/code&gt;, &lt;code&gt;Books&lt;/code&gt;, and multiple &lt;code&gt;HealthCheck&lt;/code&gt;s. It presents a generic &lt;code&gt;AppBuilder&lt;/code&gt; using phantom &lt;code&gt;Option&lt;/code&gt; type parameters and extension ops to enforce field presence while allowing any order.</description>
    </item>
    <item>
      <title>Type Gymnastics with Builder Pattern</title>
      <link>/posts/builder1/</link>
      <pubDate>Wed, 01 Oct 2025 00:00:00 +0000</pubDate>
      <guid>/posts/builder1/</guid>
      <description>The Builder pattern provides a way to construct complex objects step by step with a fluent API, where each method call returns the builder itself, allowing for method chaining. Let us play some type gymnastics in Scala to ensure type safety when creating objects via the builder pattern.</description>
    </item>
    <item>
      <title>Understanding Contramap</title>
      <link>/posts/contramap/</link>
      <pubDate>Tue, 16 Sep 2025 00:00:00 +0000</pubDate>
      <guid>/posts/contramap/</guid>
      <description>A contramap is defined as the converse of the map. I have never been satisfied with the definition. In this post, I will explain the concept in a way that is easy to internalize.</description>
    </item>
    <item>
      <title>Scala 2 Symbols</title>
      <link>/posts/scala-symbols/</link>
      <pubDate>Wed, 10 Sep 2025 00:00:00 +0000</pubDate>
      <guid>/posts/scala-symbols/</guid>
      <description>This post provides a concise overview of key symbols used in Scala 2, such as symbols for function types, function literals, import renaming, and more. It serves as a quick reference for Scala developers to understand the functionality and application of these essential symbols.</description>
    </item>
    <item>
      <title>A Rogue JSON Parser</title>
      <link>/posts/json-parser/</link>
      <pubDate>Sun, 07 Sep 2025 00:00:00 +0000</pubDate>
      <guid>/posts/json-parser/</guid>
      <description>Recently, someone quizzed me to write a JSON parser. Time was limited. So, I told them I might not be able to write a disciplined parser that builds an AST and creates JSON objects out of it. In the limited time, I could only parse them to create objects directly.</description>
    </item>
    <item>
      <title>Top K Frequent Items</title>
      <link>/posts/top-k/</link>
      <pubDate>Wed, 23 Jul 2025 00:00:00 +0000</pubDate>
      <guid>/posts/top-k/</guid>
      <description>This post explores a functional style implementation in Scala and Java to a famous interview question to find the top k frequent items in an array. Beware the functional implementation may not be encouraged by interviewers because the solution focuses on the what rather than the how.</description>
    </item>
    <item>
      <title>TimedBufferedReader in Java</title>
      <link>/posts/buf-reader-java/</link>
      <pubDate>Thu, 26 Jun 2025 00:00:00 +0000</pubDate>
      <guid>/posts/buf-reader-java/</guid>
      <description>In the previous post - &lt;a href=&#34;/posts/why-fp-matters&#34;&gt;Why Functional Programming Matters&lt;/a&gt;, we explored the design of a high-throughput timed buffered reader in Scala using cats-effect. In this post, we implement the same in Java and see how it looks in comparison to the functional implementation in Scala.</description>
    </item>
    <item>
      <title>If you know Scala, you know Kotlin</title>
      <link>/posts/scala-kotlin/</link>
      <pubDate>Tue, 24 Jun 2025 00:00:00 +0000</pubDate>
      <guid>/posts/scala-kotlin/</guid>
      <description>This post explores the similarities between Kotlin and Scala, two modern programming languages. The post highlights key programming constructs, demonstrating how both languages handle basic syntax, variables, conditionals, string interpolation, loops, functions, collections, and classes.</description>
    </item>
    <item>
      <title>A world without types - Part 3</title>
      <link>/posts/types-3/</link>
      <pubDate>Mon, 26 May 2025 00:00:00 +0000</pubDate>
      <guid>/posts/types-3/</guid>
      <description>Guest post by &lt;a href=&#34;https://github.com/bahuljain&#34;&gt;Bahul Jain&lt;/a&gt;. In this post, he talks about algebraic data types (ADTs) and its benefits. He discusses how ADTs can be used to model complex data and boost developer productivity.</description>
    </item>
    <item>
      <title>scala-cli&#39;s JVM Install Location</title>
      <link>/posts/scala-cli-jvm/</link>
      <pubDate>Sat, 12 Apr 2025 00:00:00 +0000</pubDate>
      <guid>/posts/scala-cli-jvm/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://scala-cli.virtuslab.org/&#34;&gt;scala-cli&lt;/a&gt;, one of the superpowers in the Scala ecosystem, is a versatile tool for running Scala scripts. It has a ton of options to play with. One of the arguments you can pass to scala-cli is to specify the JVM version to run a script under, which is as follows:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why Functional Programming Matters</title>
      <link>/posts/why-fp-matters/</link>
      <pubDate>Tue, 18 Mar 2025 00:00:00 +0000</pubDate>
      <guid>/posts/why-fp-matters/</guid>
      <description>This post takes a more relatable and realistic yet complex problem to demonstrate how it is straightforward and concise to implement it in functional programming. It makes the case &lt;em&gt;why functional programming matters&lt;/em&gt;; especially large and/or complex programs.</description>
    </item>
    <item>
      <title>A world without types - Part 2</title>
      <link>/posts/types-2/</link>
      <pubDate>Fri, 07 Mar 2025 00:00:00 +0000</pubDate>
      <guid>/posts/types-2/</guid>
      <description>Guest post by &lt;a href=&#34;https://github.com/bahuljain&#34;&gt;Bahul Jain&lt;/a&gt;. In this post, he talks about addressing the performance implications of creating types everywhere. He explores &lt;code&gt;AnyVal&lt;/code&gt; and a light-weight library called &lt;code&gt;Supertagged&lt;/code&gt; to migitate it while still enjoying the benefits of types.</description>
    </item>
    <item>
      <title>A world without types - Part 1</title>
      <link>/posts/types-1/</link>
      <pubDate>Tue, 25 Feb 2025 00:00:00 +0000</pubDate>
      <guid>/posts/types-1/</guid>
      <description>Guest post by &lt;a href=&#34;https://github.com/bahuljain&#34;&gt;Bahul Jain&lt;/a&gt;. In this post, he explains why types are essential for modeling data and operations in a meaningful way. He goes into detail about how types help clarify the purpose of data, making it easier for developers to understand, reason about, and work with.</description>
    </item>
    <item>
      <title>Phantom types - Part 2</title>
      <link>/posts/phantom-types-2/</link>
      <pubDate>Wed, 01 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/posts/phantom-types-2/</guid>
      <description>&lt;p&gt;A friend raised a great question after reading the &lt;a href=&#34;/posts/phantom-types&#34;&gt;last&lt;/a&gt; post:&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;If I am reading a list of books (&lt;code&gt;List[Book]&lt;/code&gt;) from the database, wouldn&amp;rsquo;t I lose the type information augmented by phantom type? If so, what good is phantom type if it can be used only for statically initializing (Book) instances.&lt;/em&gt;&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>About Skiff</title>
      <link>/posts/skiff-gone/</link>
      <pubDate>Tue, 31 Dec 2024 00:00:00 +0000</pubDate>
      <guid>/posts/skiff-gone/</guid>
      <description>One of the email providers I highlighted in the &lt;a href=&#34;/posts/degoogling&#34;&gt;Degoogling&lt;/a&gt; post was &lt;a href=&#34;https://www.skiff.com&#34;&gt;Skiff&lt;/a&gt;, whihc is no longer alive. It was abruptly shut down in a day without notice, even to the patrons of their Discord community, in which I was a member. Skiff was acquired by Notion.</description>
    </item>
    <item>
      <title>Phantom types - Make illegal states unrepresentable</title>
      <link>/posts/phantom-types/</link>
      <pubDate>Sun, 29 Dec 2024 00:00:00 +0000</pubDate>
      <guid>/posts/phantom-types/</guid>
      <description>Making illegal states irrepresentable is a powerful technique in (functional) programming. The technique constrains certain operations to specific states, preventing your code from compiling if you attempt an invalid operation. The other less-than-ideal alternative is to check for valid states for operations at runtime.</description>
    </item>
    <item>
      <title>Re-publishing artifacts in SBT</title>
      <link>/posts/sbt-republish-cfg/</link>
      <pubDate>Mon, 16 Dec 2024 00:00:00 +0000</pubDate>
      <guid>/posts/sbt-republish-cfg/</guid>
      <description>&lt;p&gt;SBT does not allow re-publishing artifacts with the same version unless it is a snapshot version. A snapshot version ends with the &lt;code&gt;-SNAPSHOT&lt;/code&gt; suffix, such as &lt;code&gt;0.1.0-SNAPSHOT&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Re-publishing, which involves running the &lt;code&gt;sbt publish&lt;/code&gt; or &lt;code&gt;sbt publishLocal&lt;/code&gt; command for the second time or more, is standard, especially for snapshot versions.&lt;/p&gt;&#xA;&lt;p&gt;If you attempt to re-publish a non-snapshot version, SBT will warn you with the following message and not publish the artifact.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Unequal Bs</title>
      <link>/posts/unequals-bs/</link>
      <pubDate>Sun, 15 Dec 2024 00:00:00 +0000</pubDate>
      <guid>/posts/unequals-bs/</guid>
      <description>&lt;p&gt;Who can tell me what is the result of this expression?&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-scala&#34; data-lang=&#34;scala&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;В&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;B&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can use a repl of your choice, say Scala or Python, to evaluate the expression. Be prepared with an explanation for the result you see 😉&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>How I SBT - VII</title>
      <link>/posts/how-i-sbt7/</link>
      <pubDate>Wed, 04 Dec 2024 00:00:00 +0000</pubDate>
      <guid>/posts/how-i-sbt7/</guid>
      <description>&lt;p&gt;This post is the final part of the series on SBT. I hope I covered everything needed to break the ice and change the perspective on SBT. I have touched on most ingredients you need to write a decent fully-functional build definition. But there is a lot more to SBT.&lt;/p&gt;&#xA;&lt;p&gt;In this post, I will discuss some things, nifty and a la carte, on SBT.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Add space block in Mac Dock</title>
      <link>/til/dock-spacer/</link>
      <pubDate>Thu, 28 Nov 2024 00:00:00 +0000</pubDate>
      <guid>/til/dock-spacer/</guid>
      <description>&lt;p&gt;To add a spacer block in Mac Dock &amp;hellip;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;defaults write com.apple.dock persistent-apps &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -array-add &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;tile-type&amp;#34;=&amp;#34;spacer-tile&amp;#34;;}&amp;#39;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; killall Dock&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>How I SBT - VI</title>
      <link>/posts/how-i-sbt6/</link>
      <pubDate>Tue, 26 Nov 2024 00:00:00 +0000</pubDate>
      <guid>/posts/how-i-sbt6/</guid>
      <description>&lt;p&gt;I had planned to finish the series with this post. But &lt;em&gt;Plugin&lt;/em&gt; s wouldn&amp;rsquo;t let me. I am going to show you how to write/publish a SBT project that is a &lt;em&gt;Plugin&lt;/em&gt;, and I will show a nifty trick. It is not a trick, it is what SBT can do like a piece of pie.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How I SBT - V</title>
      <link>/posts/how-i-sbt5/</link>
      <pubDate>Thu, 21 Nov 2024 00:00:00 +0000</pubDate>
      <guid>/posts/how-i-sbt5/</guid>
      <description>&lt;p&gt;So far, we have everything we need to write the build definition for a single project. Today, we&amp;rsquo;ll see another powerful feature of SBT: &lt;em&gt;Multi-module builds&lt;/em&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Interview Bluff</title>
      <link>/posts/interview-bluff/</link>
      <pubDate>Tue, 19 Nov 2024 00:00:00 +0000</pubDate>
      <guid>/posts/interview-bluff/</guid>
      <description>Recently, I had a lunch meeting with an acquaintance who shared their interview experience, particularly behavioral questions. One of the questions asked was, &amp;ldquo;Works and on time or Perfect and late?&amp;rdquo; This question sparked a debate, as the interviewer was firmly in the former camp.</description>
    </item>
    <item>
      <title>How I SBT - IV</title>
      <link>/posts/how-i-sbt4/</link>
      <pubDate>Mon, 18 Nov 2024 00:00:00 +0000</pubDate>
      <guid>/posts/how-i-sbt4/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;/posts/how-i-sbt3&#34;&gt;Previously&lt;/a&gt;, we discussed &lt;em&gt;Plugin&lt;/em&gt; s. Today, let us see how to better organize build code.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;/posts/how-i-sbt1&#34;&gt;How I SBT - &lt;code&gt;build.sbt&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;/posts/how-i-sbt2&#34;&gt;How I SBT - Settings &amp;amp; Tasks&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;/posts/how-i-sbt3&#34;&gt;How I SBT - Plugins&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;/posts/how-i-sbt4&#34;&gt;How I SBT - Build Code Organization&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;/posts/how-i-sbt5&#34;&gt;How I SBT - Multi-module Builds&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;/posts/how-i-sbt6&#34;&gt;How I SBT - Publishing a Plugin&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;/posts/how-i-sbt7&#34;&gt;How I SBT - Final Edition - a la carte&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;build-code-organization&#34;&gt;Build Code Organization&lt;/h2&gt;&#xA;&lt;p&gt;Build code involves everything SBT will consume for the build&lt;/p&gt;</description>
    </item>
    <item>
      <title>How I SBT - III</title>
      <link>/posts/how-i-sbt3/</link>
      <pubDate>Tue, 12 Nov 2024 00:00:00 +0000</pubDate>
      <guid>/posts/how-i-sbt3/</guid>
      <description>&lt;p&gt;Previously, we discussed how to quickly write a simple &lt;a href=&#34;/posts/how-i-sbt1&#34;&gt;&lt;code&gt;build.sbt&lt;/code&gt;&lt;/a&gt; without fuss. We briefly understood how it is processed by SBT along with &lt;a href=&#34;/posts/how-i-sbt2&#34;&gt;Settings and Tasks&lt;/a&gt;. We did that without having to know about the build folder structure&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; et al.; &lt;strong&gt;until now&lt;/strong&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How I SBT - II</title>
      <link>/posts/how-i-sbt2/</link>
      <pubDate>Sat, 09 Nov 2024 00:00:00 +0000</pubDate>
      <guid>/posts/how-i-sbt2/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;/posts/how-i-sbt1&#34;&gt;Previously&lt;/a&gt;, I showed you how to write a SBT build definition without knowing much at all. Neither did I talk about simple things like directory structure nor about advanced things like scope or axis, yet you could pretty easily write a SBT build definition for a library and setup publishing. All by writing Scala code (DSL for SBT).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Custom List Bullet</title>
      <link>/til/li-style/</link>
      <pubDate>Wed, 06 Nov 2024 00:00:00 +0000</pubDate>
      <guid>/til/li-style/</guid>
      <description>&lt;p&gt;You can change the list bullet icon from the conventional disc (or circle) to anything you want using either the &lt;code&gt;marker&lt;/code&gt; property of the &lt;code&gt;li&lt;/code&gt; tag:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;li&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nd&#34;&gt;marker&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;\2192  &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c&#34;&gt;/* Unicode for right arrow (→) */&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;or using the &lt;code&gt;list-style-type&lt;/code&gt; property of the &lt;code&gt;ul&lt;/code&gt; tag:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Interpreter Basics</title>
      <link>/wiki/scala/interpreter/</link>
      <pubDate>Sat, 02 Nov 2024 00:00:00 +0000</pubDate>
      <guid>/wiki/scala/interpreter/</guid>
      <description>Interpreter is a language (or program) to evaluate expressions and execute code. The intent is to keep the evaluation lazy and pure. There are 3 different kinds of methods in the &lt;em&gt;interpreter pattern / Algebra&lt;/em&gt;.</description>
    </item>
    <item>
      <title>Links / Bookmarks</title>
      <link>/links/</link>
      <pubDate>Sat, 02 Nov 2024 00:00:00 +0000</pubDate>
      <guid>/links/</guid>
      <description>&lt;h2 id=&#34;scala&#34;&gt;Scala&lt;/h2&gt;&#xA;&lt;p&gt;📺 &lt;a href=&#34;https://vimeo.com/20308847&#34;&gt;&lt;strong&gt;Implicits without import tax&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;📺 &lt;a href=&#34;https://youtu.be/g_jP47HFpWA&#34;&gt;&lt;strong&gt;Making of an IO&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;📺 &lt;a href=&#34;https://youtu.be/qgfCmQ-2tW0&#34;&gt;The case for effect systems&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;others&#34;&gt;Others&lt;/h2&gt;&#xA;&lt;p&gt;Coming soon &amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Slash Pages</title>
      <link>/slashes/</link>
      <pubDate>Fri, 01 Nov 2024 00:00:00 +0000</pubDate>
      <guid>/slashes/</guid>
      <description>The canonical slashes page</description>
    </item>
    <item>
      <title>How I SBT - I</title>
      <link>/posts/how-i-sbt1/</link>
      <pubDate>Wed, 30 Oct 2024 00:00:00 +0000</pubDate>
      <guid>/posts/how-i-sbt1/</guid>
      <description>Contrary to the unpopular opinions that it is hard and clumsy, &lt;a href=&#34;https://www.scala-sbt.org/1.x/docs/&#34;&gt;SBT&lt;/a&gt;, the de facto build tool for Scala, is one of the best. Ease comes with familiarity. Unfortunately, there aren&amp;rsquo;t many beginner-friendly guides for specific scenarios. A lot of troubleshooting information is hidden in the forests of issues and public forums. This is despite the fact that SBT has excellent support for inspecting your project definition. The official documentation is like the encyclopedia that is too much to digest.</description>
    </item>
    <item>
      <title>Tagged Types &amp; Implicit Resolution</title>
      <link>/posts/tagged-and-implicits/</link>
      <pubDate>Tue, 29 Oct 2024 00:00:00 +0000</pubDate>
      <guid>/posts/tagged-and-implicits/</guid>
      <description>&lt;p&gt;Last time, I &lt;a href=&#34;https://blog.rhetoricalmusings.com/posts/declaring-implicits/&#34;&gt;&lt;strong&gt;wrote&lt;/strong&gt;&lt;/a&gt; about different ways of declaring implicits, which is a prelude to this post. Knowledge of different ways of declaring implicits is good for general understanding on the subject, and also for this post.&lt;/p&gt;&#xA;&lt;p&gt;This post discusses an intriguing case - a gotcha, with implicit resolution of instances related to tagged types. Interestingly, &lt;code&gt;newtype&lt;/code&gt;s are safer in that regard.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Cross-JDK Compilation in SBT</title>
      <link>/posts/sbt-xcompile-jdk/</link>
      <pubDate>Sun, 13 Oct 2024 00:00:00 +0000</pubDate>
      <guid>/posts/sbt-xcompile-jdk/</guid>
      <description>&lt;p&gt;Recently, I had to cross-compile a bunch of Scala library repositories for JDK 11 and JDK 17. I was hoping SBT would natively support specifying the related configuration in &lt;code&gt;build.sbt&lt;/code&gt; similar to &lt;code&gt;crossScalaVersions&lt;/code&gt;.  I came across some references to plugins that seemed to do the job. But I couldn&amp;rsquo;t find anything in their documentation that  proved they supported compiling for different JDK versions. They only seemed&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; to provide better management and configuration options for cross compiling different Scala versions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Suppressing unused function warning in Go</title>
      <link>/wiki/go/unused-fn/</link>
      <pubDate>Wed, 09 Oct 2024 00:00:00 +0000</pubDate>
      <guid>/wiki/go/unused-fn/</guid>
      <description>&lt;p&gt;Use this function below to suppress &lt;code&gt;unused function&lt;/code&gt; warning in Go, when you like to retain any unused functions (which you plan to use in the future but not remove from your codebase now)&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-golang&#34; data-lang=&#34;golang&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;UNUSED&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;_&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;interface&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{})&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-golang&#34; data-lang=&#34;golang&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;someUnusedFunc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;age&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;bool&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;UNUSED&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;someUnusedFunc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Declaring Implicits</title>
      <link>/posts/declaring-implicits/</link>
      <pubDate>Sun, 15 Sep 2024 00:00:00 +0000</pubDate>
      <guid>/posts/declaring-implicits/</guid>
      <description>While implicits are easy to use, declaring them properly requires careful consideration. Because there are a few different ways you can declare implicits viz. extension methods, parameter values, type converters and dynamic instances. Each one has a specific purpose. For instance, dynamic instances enable recursive implicit resolution. Understanding the different ways of declaring implicits is critical in choosing the right one for the given scenario. It is also invaluable in troubleshooting subtle bugs and unexpected behavior related to implicit resolution.</description>
    </item>
    <item>
      <title>Monad Laws</title>
      <link>/wiki/scala/monad-laws/</link>
      <pubDate>Sun, 01 Sep 2024 00:00:00 +0000</pubDate>
      <guid>/wiki/scala/monad-laws/</guid>
      <description>&lt;p&gt;Monad typeclass&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-scala&#34; data-lang=&#34;scala&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;trait&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;Monad&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;F&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;_&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pure&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;](&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;F&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;flatMap&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;A&lt;/span&gt;, &lt;span class=&#34;kt&#34;&gt;B&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;](&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fa&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;F&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;])(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;A&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;→&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;F&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;B&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;])&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;F&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;B&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;monad-laws&#34;&gt;Monad Laws&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-scala&#34; data-lang=&#34;scala&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;pure&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;flatMap&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;        &lt;span class=&#34;k&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;m&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;flatMap&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pure&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;           &lt;span class=&#34;k&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;m&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;m&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;flatMap&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;flatMap&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;h&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;   &lt;span class=&#34;k&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;m&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;flatMap&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;b&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;g&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;flatMap&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;h&lt;/span&gt;&lt;span class=&#34;o&#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>Learn Yaml through Yaml</title>
      <link>/wiki/yaml/</link>
      <pubDate>Thu, 01 Aug 2024 00:00:00 +0000</pubDate>
      <guid>/wiki/yaml/</guid>
      <description>An yaml document that teaches you the yaml syntax.</description>
    </item>
    <item>
      <title>Morse Code Table</title>
      <link>/wiki/morse/</link>
      <pubDate>Wed, 13 Mar 2024 00:00:00 +0000</pubDate>
      <guid>/wiki/morse/</guid>
      <description>Yeah, the morse code table!</description>
    </item>
    <item>
      <title>Unicode Characters</title>
      <link>/wiki/unicode/</link>
      <pubDate>Wed, 07 Feb 2024 00:00:00 +0000</pubDate>
      <guid>/wiki/unicode/</guid>
      <description>&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th style=&#34;text-align: center&#34;&gt;CHAR&lt;/th&gt;&#xA;          &lt;th style=&#34;text-align: center&#34;&gt;CODE&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;⌜&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;U+231C&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;「&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;U+300C&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;⌝&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;U+231D&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;⌞&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;U+231E&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;⌟&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;U+231F&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;」&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;U+300D&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;├──&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;U+2500&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;│ │&lt;/td&gt;&#xA;          &lt;td style=&#34;text-align: center&#34;&gt;U+2502&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;</description>
    </item>
    <item>
      <title>Count files matching pattern</title>
      <link>/wiki/bash/file-pattern/</link>
      <pubDate>Mon, 05 Feb 2024 00:00:00 +0000</pubDate>
      <guid>/wiki/bash/file-pattern/</guid>
      <description>Techniques to count number of files matching a given regex pattern</description>
    </item>
    <item>
      <title>My Scala Story</title>
      <link>/posts/my-scala-story/</link>
      <pubDate>Thu, 01 Feb 2024 00:00:00 +0000</pubDate>
      <guid>/posts/my-scala-story/</guid>
      <description>I have been reading the &lt;em&gt;My Scala Story&lt;/em&gt; &lt;a href=&#34;https://softwaremill.com/blog/?tag=myscalastory&#34;&gt;series&lt;/a&gt; by Software Mill - a short interview of renowned experts about their Scala journey. I have not done anything substantial in the OSS space to be on Software Mill&amp;rsquo;s radar. But their series inspired me to share mine. So, here it goes &amp;hellip;</description>
    </item>
    <item>
      <title>Matter Feature Request - Series</title>
      <link>/posts/matter-series/</link>
      <pubDate>Wed, 17 Jan 2024 00:00:00 +0000</pubDate>
      <guid>/posts/matter-series/</guid>
      <description>&lt;a href=&#34;https://hq.getmatter.com&#34;&gt;Matter&lt;/a&gt; is a fantastic app for reading; articles, blog posts etc. There is one feature I love to have in Matter. Let us find out what that is.</description>
    </item>
    <item>
      <title>.gitConfig Template</title>
      <link>/wiki/gitconfig/</link>
      <pubDate>Wed, 03 Jan 2024 00:00:00 +0000</pubDate>
      <guid>/wiki/gitconfig/</guid>
      <description>Standard git config template with useful git aliases</description>
    </item>
    <item>
      <title>Quotations</title>
      <link>/fav-quotes/</link>
      <pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate>
      <guid>/fav-quotes/</guid>
      <description>Collection of undeniably great quotations</description>
    </item>
    <item>
      <title>Keep Killing It</title>
      <link>/posts/keep-killing/</link>
      <pubDate>Thu, 26 Oct 2023 00:00:00 +0000</pubDate>
      <guid>/posts/keep-killing/</guid>
      <description>There are times when even decent chaps have to pick up the sword and fight. I am talking about times when some process on your machine is always peeking over your shoulder. Worst part, consumes a lot of resources, especially CPU time, and obstructs your productivity. Or peace of mind. For such cases, I give you &lt;code&gt;slay&lt;/code&gt;</description>
    </item>
    <item>
      <title>Python Overloaded</title>
      <link>/posts/python-overloaded/</link>
      <pubDate>Thu, 26 Oct 2023 00:00:00 +0000</pubDate>
      <guid>/posts/python-overloaded/</guid>
      <description>Function overloading is every day business in statically typed languages. Not all languages. Go has make it everything &lt;a href=&#34;https://go.dev/doc/faq#overloading&#34;&gt;hard&lt;/a&gt;. 🙄 But function overloading in dynamic languages are not really sought after.</description>
    </item>
    <item>
      <title>Optional Parameters</title>
      <link>/posts/optional-parameters/</link>
      <pubDate>Tue, 03 Oct 2023 00:00:00 +0000</pubDate>
      <guid>/posts/optional-parameters/</guid>
      <description>The billion dollar mistake has been committed already. No going back. But it is not necessary to keep repeating it. Oh, I am talking about the infamous &lt;code&gt;null&lt;/code&gt;. Would Java&amp;rsquo;s &lt;code&gt;Optional&lt;/code&gt; come to the rescue? Or are there any ironic &amp;ldquo;Don&amp;rsquo;ts&amp;rdquo; when using &lt;code&gt;Optional&lt;/code&gt;?</description>
    </item>
    <item>
      <title>For a better Signal (Part 1)</title>
      <link>/posts/signal-part1/</link>
      <pubDate>Mon, 04 Sep 2023 00:00:00 +0000</pubDate>
      <guid>/posts/signal-part1/</guid>
      <description>Signal is undisputedly the gold standard of chat messengers, especially for the staunch privacy-conscious. Signal gets its gold star for its security/privacy aspects. Nothing to argue in that regard. &lt;strong&gt;However, I would rate Signal very low when it comes to user friendliness&lt;/strong&gt;. Read the post find out why.</description>
    </item>
    <item>
      <title>Maven Tidbits</title>
      <link>/wiki/mvn/</link>
      <pubDate>Mon, 01 May 2023 00:00:00 +0000</pubDate>
      <guid>/wiki/mvn/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;Install a local file to the local M2 repo&lt;/li&gt;&#xA;&lt;li&gt;Install a remote JAR on local M2 repo&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>Pop OS and Zorin on ARM64</title>
      <link>/posts/popos-arm64/</link>
      <pubDate>Tue, 21 Mar 2023 00:00:00 +0000</pubDate>
      <guid>/posts/popos-arm64/</guid>
      <description>When Mac M1 was released, I did not have the same displeasure like many others. In fact, I was hopeful that the vast majority of the apps and tools will be ready for M1 in no time. So, I got myself an M1 with no hesitation. Took a little while but everything from brew to big fat applications were ready. All seemed fine until I came around to play with Parallels and those Linux distros.</description>
    </item>
    <item>
      <title>Degooling</title>
      <link>/posts/degoogling/</link>
      <pubDate>Sun, 12 Mar 2023 00:00:00 +0000</pubDate>
      <guid>/posts/degoogling/</guid>
      <description>A rundown of alternatives for degoogling based on recent conversations with friends and acquaintances. There are alternatives  that are user privacy friendly, and some of them free. Besides, do not get emotionally attached to a name.  &lt;em&gt;Brand names are not functionalities&lt;/em&gt;. Don&amp;rsquo;t hesitate to ditch a product/company in the case of foul play.</description>
    </item>
    <item>
      <title>Now I&#39;ll have padding both ways</title>
      <link>/posts/css-padding-props/</link>
      <pubDate>Wed, 08 Feb 2023 00:00:00 +0000</pubDate>
      <guid>/posts/css-padding-props/</guid>
      <description>In my CSS tinkering endeavors, I can&amp;rsquo;t believe I was ignorant of the existence of the very properties that I have been longing for. I am delighted I finally found it.</description>
    </item>
    <item>
      <title>Git Tidbits</title>
      <link>/wiki/git/</link>
      <pubDate>Sun, 01 Jan 2023 00:00:00 +0000</pubDate>
      <guid>/wiki/git/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;Alias for colored diff&lt;/li&gt;&#xA;&lt;li&gt;Delete Local and Remote Branches&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>Software Practices and Tradition</title>
      <link>/posts/software-tradition/</link>
      <pubDate>Sat, 19 Nov 2022 00:00:00 +0000</pubDate>
      <guid>/posts/software-tradition/</guid>
      <description>A note on software tradition - practices, conventions and standards. How it started and how is it going.</description>
    </item>
    <item>
      <title>Bloggi - Request for Updates</title>
      <link>/posts/bloggi/</link>
      <pubDate>Sun, 09 Oct 2022 00:00:00 +0000</pubDate>
      <guid>/posts/bloggi/</guid>
      <description>The quest for the simple blogging platform of my dreams continues. Tried this. Tried that. Stumbled upon Bloggi. It is simple, beautiful, content-centric and everything I could ask for. So, am I ready to move this blog to Bloggi?</description>
    </item>
    <item>
      <title>CSS Tidbits</title>
      <link>/wiki/css/tidbits/</link>
      <pubDate>Sat, 01 Oct 2022 00:00:00 +0000</pubDate>
      <guid>/wiki/css/tidbits/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;Standard and Handy Media Queries&lt;/li&gt;&#xA;&lt;li&gt;Select specific instances of element&lt;/li&gt;&#xA;&lt;li&gt;Hand-drawn Border&lt;/li&gt;&#xA;&lt;li&gt;&amp;hellip; and more&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>Restricting sum type instance creation</title>
      <link>/posts/restrict-sum-types-creation/</link>
      <pubDate>Wed, 25 May 2022 00:00:00 +0000</pubDate>
      <guid>/posts/restrict-sum-types-creation/</guid>
      <description>With Scala sum types, you can establish type strictness. But can you restrict creation of instances of sum types? So that you can guarantee that the values they hold pertain to the types defined.</description>
    </item>
    <item>
      <title>Scala on Discord</title>
      <link>/posts/scala-on-discord/</link>
      <pubDate>Sat, 09 Apr 2022 00:00:00 +0000</pubDate>
      <guid>/posts/scala-on-discord/</guid>
      <description>Scala community like others needs a platform for discussions and exchange thoughts and ideas. Above all, a platform where fellow programmers, old or new, can reach out for help and guidance, a platform for education and to breed and spread knowledge. Is Discord the right choice of platform? More importantly, is moving from Gitter to Discord the right choice?</description>
    </item>
    <item>
      <title>Defining sum types across files</title>
      <link>/posts/sum-types-across-files/</link>
      <pubDate>Mon, 28 Feb 2022 00:00:00 +0000</pubDate>
      <guid>/posts/sum-types-across-files/</guid>
      <description>While Scala allows creating defining ADTs, unfortunately all the sum types and their associated definitions have to be defined in the same file as the &lt;code&gt;sealed trait&lt;/code&gt; (ADT). This post discusses the situation of defining the sum type (companions) across multiple files.</description>
    </item>
    <item>
      <title>Confluence Alternatives</title>
      <link>/posts/confluence-alternatives/</link>
      <pubDate>Sun, 23 Jan 2022 00:00:00 +0000</pubDate>
      <guid>/posts/confluence-alternatives/</guid>
      <description>Is Confluence your documentation / knowledge-management system? Are you sick of its shortcomings? Poor and non-standard rendering. Lack of markdown support. Weird and inconsistent handling of unicode. Do you still think Confluence is a boon for document writing? Just be aware that there are better alternatives.</description>
    </item>
    <item>
      <title>Flexbox</title>
      <link>/wiki/css/flexbox/</link>
      <pubDate>Mon, 03 Jan 2022 00:00:00 +0000</pubDate>
      <guid>/wiki/css/flexbox/</guid>
      <description>Collection of flexbox tidbits</description>
    </item>
    <item>
      <title>CSS Gradients</title>
      <link>/wiki/css/css-gradients/</link>
      <pubDate>Sun, 02 Jan 2022 00:00:00 +0000</pubDate>
      <guid>/wiki/css/css-gradients/</guid>
      <description>&lt;div class=&#34;slab bg-purple-sky&#34; style=&#34;padding: 20px 75px; border-radius: 5px; height: 120px; margin: 30px 10px; background: radial-gradient(circle at 0% -25%,#FF8947 0%,#FF8354 0,#DA2C94 42%,#3E13A5 110%);&#34;&gt;&lt;/div&gt;&#xA;... and more&#xA;</description>
    </item>
    <item>
      <title>Inspirational Quotes</title>
      <link>/quotes/inspirational/</link>
      <pubDate>Sun, 02 Jan 2022 00:00:00 +0000</pubDate>
      <guid>/quotes/inspirational/</guid>
      <description>Collection of inspirational quotations</description>
    </item>
    <item>
      <title>Funny Quotes</title>
      <link>/quotes/funny/</link>
      <pubDate>Sat, 01 Jan 2022 00:00:00 +0000</pubDate>
      <guid>/quotes/funny/</guid>
      <description>Collection of extremely funny quotations</description>
    </item>
    <item>
      <title>Anorm Primer</title>
      <link>/posts/anorm-primer/</link>
      <pubDate>Thu, 18 Nov 2021 00:00:00 +0000</pubDate>
      <guid>/posts/anorm-primer/</guid>
      <description>A primer on Anorm to use the interesting parts - core and combinator functions, as opposed to the mundane way of reading the column from &lt;code&gt;Row&lt;/code&gt;. The post highlights situations when you don&amp;rsquo;t have a predefined type for the parsed row, and you are dealing with discrete columns in the result set based on time and need.</description>
    </item>
    <item>
      <title>scala-cli - A Breeze</title>
      <link>/posts/scala-cli-breeze/</link>
      <pubDate>Thu, 21 Oct 2021 00:00:00 +0000</pubDate>
      <guid>/posts/scala-cli-breeze/</guid>
      <description>New tool on the block is &lt;code&gt;scala-cli&lt;/code&gt; (from virtuslab.org) - a clean simple approachable non-fluff command line first interface to the Scala language.</description>
    </item>
    <item>
      <title>scala-cli Cheatsheet</title>
      <link>/pages/scalacli-cheatsheet/</link>
      <pubDate>Thu, 21 Oct 2021 00:00:00 +0000</pubDate>
      <guid>/pages/scalacli-cheatsheet/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;Cheatsheet of scala-cli commands&lt;/li&gt;&#xA;&lt;li&gt;Compile and/or run files/folder&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Specify Dependencies&lt;/li&gt;&#xA;&lt;li&gt;Watch for changes&lt;/li&gt;&#xA;&lt;li&gt;Specify Scala Version / main / JVM&lt;/li&gt;&#xA;&lt;li&gt;Create JAR / docker image / native executable&lt;/li&gt;&#xA;&lt;li&gt;REPL&lt;/li&gt;&#xA;&lt;li&gt;Scalafmt&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>My Everyday IntelliJ Plugins</title>
      <link>/posts/everyday-intellij-plugins/</link>
      <pubDate>Wed, 20 Oct 2021 00:00:00 +0000</pubDate>
      <guid>/posts/everyday-intellij-plugins/</guid>
      <description>If IntelliJ is the perfect main course, its plugins are the seasoning to spice it up. There are hundreds of popular plugins that rank in probably every post on IntelliJ plugins. However, the ones listed here are those that I use almost everyday. Besides, I like using these plugins, and highly recommend.</description>
    </item>
    <item>
      <title>Rebooting on Ghost Land</title>
      <link>/posts/rebooting-on-ghost-land/</link>
      <pubDate>Thu, 22 Jul 2021 00:00:00 +0000</pubDate>
      <guid>/posts/rebooting-on-ghost-land/</guid>
      <description>Many languages support union types, and it is high time Scala did. Union types are coming in upcoming version of Scala - Dotty. Union types (|) are already being compared with Either and Option (disjoint unions).</description>
    </item>
    <item>
      <title>Either Disjoint or Union Types</title>
      <link>/posts/2020-12-28-union-types/</link>
      <pubDate>Mon, 28 Dec 2020 00:00:00 +0000</pubDate>
      <guid>/posts/2020-12-28-union-types/</guid>
      <description>Many languages support union types, and it is high time Scala did. Union types are coming in upcoming version of Scala - Dotty. Union types (|) are already being compared with Either and Option (disjoint unions).</description>
    </item>
    <item>
      <title>Know Thy Option</title>
      <link>/posts/know-thy-option/</link>
      <pubDate>Fri, 17 Apr 2020 00:00:00 +0000</pubDate>
      <guid>/posts/know-thy-option/</guid>
      <description>&lt;p&gt;Avoid &lt;code&gt;.get&lt;/code&gt; at all costs. Forget there is even a &lt;code&gt;.get&lt;/code&gt; function on &lt;code&gt;Option&lt;/code&gt;. There is always a way out - better one, than using &lt;code&gt;.get&lt;/code&gt;. Same applies to &lt;code&gt;.head&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;If you are going to have access the value in an &lt;code&gt;Option&lt;/code&gt; in a test class, prefer extending your test class from &lt;code&gt;OptionValues&lt;/code&gt;. Then you can use &lt;code&gt;.value&lt;/code&gt; on an &lt;code&gt;Option&lt;/code&gt;. Doing so establishes the presence of value as verification with meaningful error if value is not defined.&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Pattern for Saner Mocking</title>
      <link>/posts/saner-mocking/</link>
      <pubDate>Thu, 02 Apr 2020 00:00:00 +0000</pubDate>
      <guid>/posts/saner-mocking/</guid>
      <description>&lt;p&gt;It is common to see mocks being setup this way in unit tests.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-scala&#34; data-lang=&#34;scala&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;scenario&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Test Case 1&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;n&#34;&gt;when&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;addressResolutionService&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;resolve&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(...)).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;thenReturn&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(...)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;n&#34;&gt;when&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vendorInventoryService&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;checkInventory&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(...)).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;thenReturn&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(...)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;o&#34;&gt;....&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;another&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bunch&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;when&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;then&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;returns&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;n&#34;&gt;when&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;shipmentService&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;schedule&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(...)).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;thenReturn&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(...)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;thisIsTheActualCalltoTest&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(...)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;n&#34;&gt;verify&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vendorInventoryService&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;checkInventory&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(...)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;other&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;such&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;verifications&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;scenario&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Test Case 2&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;n&#34;&gt;when&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;addressResolutionService&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;resolve&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(...)).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;thenReturn&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(...)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;n&#34;&gt;when&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vendorInventoryService&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;checkInventory&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(...)).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;thenReturn&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(...)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;o&#34;&gt;....&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;another&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bunch&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;when&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;then&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;returns&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;give&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;take&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;one&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;more&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;mocks&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;compared&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;previous&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;test&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;n&#34;&gt;when&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;shipmentService&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;schedule&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(...)).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;thenReturn&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(...)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;thisIsTheActualCalltoTest&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(...)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;n&#34;&gt;verify&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vendorInventoryService&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;checkInventory&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(...)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;other&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;such&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;verifications&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;...&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;other&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;such&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;test&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cases&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Cyrilex – Online Regex Tester</title>
      <link>/posts/cyrilex/</link>
      <pubDate>Wed, 20 Feb 2019 00:00:00 +0000</pubDate>
      <guid>/posts/cyrilex/</guid>
      <description>&lt;p&gt;A while ago, I &lt;a href=&#34;/cool-regex-testers/&#34;&gt;wrote&lt;/a&gt; the online regex tools. &lt;a href=&#34;https://extendsclass.com/contact&#34;&gt;Cyril&lt;/a&gt; (@CyrilBois) came across that post and &lt;a href=&#34;https://twitter.com/CyrilBois/status/1098214724465033217&#34;&gt;mentioned&lt;/a&gt; about &lt;a href=&#34;https://extendsclass.com/regex-tester.html&#34;&gt;&lt;strong&gt;his&lt;/strong&gt;&lt;/a&gt; regex tester tool.&lt;/p&gt;&#xA;&lt;p&gt;I think every tool should have a name; not one that just goes by its function but a nickname, if you will. So, I am going to name Cyril&amp;rsquo;s regex tool - &lt;strong&gt;&lt;code&gt;Cyrilex&lt;/code&gt;&lt;/strong&gt;. Don&amp;rsquo;t like it, don&amp;rsquo;t worry about it.&lt;/p&gt;&#xA;&lt;p&gt;Instead of adding &lt;code&gt;Cyrilex&lt;/code&gt; to the list, which I have already, I took the liberty to sort of review the tool. Because it has got a few cool things that I love.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Go away node/npm</title>
      <link>/2019/02/19/purge-node-npm/</link>
      <pubDate>Tue, 19 Feb 2019 00:00:00 +0000</pubDate>
      <guid>/2019/02/19/purge-node-npm/</guid>
      <description>&lt;p&gt;If you haven&amp;rsquo;t found a use for this script that uninstalls the second largest junk in the world next to Mac/iOS updates, you are either lazy or scared of breaking things.  I am neither, so I polished this &lt;a href=&#34;https://gist.github.com/VivekRagunathan/15c8b3b408c8015683a8d5fcf97cbf2f&#34;&gt;script&lt;/a&gt; from the different versions you will find on the internet. Oh, I am talking about node/npm.&lt;/p&gt;&#xA;&lt;p&gt;Happy cleaning!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Non-FP to FP Conversion Caveat</title>
      <link>/posts/fp-conversion-caveat/</link>
      <pubDate>Tue, 19 Feb 2019 00:00:00 +0000</pubDate>
      <guid>/posts/fp-conversion-caveat/</guid>
      <description>&lt;p&gt;Sometimes you learn the best from others; by watching. This post is based on such an instance. A fellow engineer on my team was investigating a nagging issue - &lt;strong&gt;partially-successful operations or rather operations that left data in an inconsistent state&lt;/strong&gt;. It goes without saying that I take no credit for the time and effort spent on the investigation nor for the fix. I am just the messenger. And as a responsible programmer 🤓, I am sharing it with the rest of the world.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Rambling on Error Handling</title>
      <link>/posts/ramble-error-handling/</link>
      <pubDate>Tue, 18 Sep 2018 00:00:00 +0000</pubDate>
      <guid>/posts/ramble-error-handling/</guid>
      <description>&lt;p&gt;In the early years, software applications were tiny, compared to what we build today. In any given application, one could say, there were only a handful of error scenarios to deal with. Besides, error reporting, if not error handling, lacked finesse. Just slap the user with something red enough, and just say &lt;strong&gt;An error occurred&lt;/strong&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>JS Programming in C# - Immutability</title>
      <link>/2018/02/18/js-in-cs-immutability/</link>
      <pubDate>Tue, 18 Sep 2018 00:00:00 +0000</pubDate>
      <guid>/2018/02/18/js-in-cs-immutability/</guid>
      <description>&lt;p&gt;Enough! JavaScript had us in its grip for long with its foot guns. The first time I heard the term &lt;em&gt;Hoisting&lt;/em&gt;, I had no idea about it and misheard as &lt;em&gt;hosting&lt;/em&gt;. You declare variables using &lt;em&gt;var&lt;/em&gt; happily, and you have to come to peace with yourself that it is okay to &lt;em&gt;hoist&lt;/em&gt; the &lt;code&gt;var&lt;/code&gt;s (lift&amp;rsquo;em all to the top-most scope). I can&amp;rsquo;t believe JS convinced the rest of us that it was okay. Then came ES6 and saved us. &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let&#34;&gt;&lt;code&gt;let&lt;/code&gt;&lt;/a&gt; fixed the scoping. &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const&#34;&gt;&lt;code&gt;const&lt;/code&gt;&lt;/a&gt; provided immutability. At least now, you can say JavaScript supports functional programming.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SMS Firewall Privacy Policy</title>
      <link>/sms-firewall-privacy-policy/</link>
      <pubDate>Tue, 01 May 2018 00:00:00 +0000</pubDate>
      <guid>/sms-firewall-privacy-policy/</guid>
      <description>&lt;p&gt;The app does not collect and/or transmit any personal information – name, address, contact information etc. No information is shared with third party apps and services.&lt;/p&gt;&#xA;&lt;p&gt;The app reads user’s contact list only to determine if an incoming SMS is in the list. When it is not in the user’s contact list, the SMS is quarantined.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Facets of Immutability</title>
      <link>/posts/facets-of-mmutability/</link>
      <pubDate>Wed, 06 Dec 2017 00:00:00 +0000</pubDate>
      <guid>/posts/facets-of-mmutability/</guid>
      <description>&lt;p&gt;Immutability, the cornerstone of functional programming, has many facets.&lt;/p&gt;&#xA;&lt;p&gt;Not every (mainstream) language supports all the facets; at least not per what each facet stands for. That&amp;rsquo;s what I will talk about today. The various facets of immutability from a theoretical perspective, and briefly show how some of the mainstream languages have adopted and support these facets in their own way.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Paradox of Braces</title>
      <link>/2017/12/106/paradox-of-braces/</link>
      <pubDate>Sun, 27 Aug 2017 00:00:00 +0000</pubDate>
      <guid>/2017/12/106/paradox-of-braces/</guid>
      <description>&lt;p&gt;A great deal of thought goes into language design. Eric Lippert’s &lt;a href=&#34;https://ericlippert.com&#34;&gt;posts&lt;/a&gt; is a living testament, at least for C#. Syntax and idioms are also part of the language design. When designing a language, the designers have to also consider its future. For instance, when designing C#, &lt;a href=&#34;https://twitter.com/ahejlsberg&#34;&gt;Anders&lt;/a&gt; and others should have thought of and planned for what’s coming in then upcoming version(s) of C#. Such level of forethought might be seem daunting for an outsider. But the language designers are good at what they do, and most importantly, they know what they are doing. Well, in most cases!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Lo and Behold</title>
      <link>/pages/lo-behold/</link>
      <pubDate>Thu, 16 Mar 2017 00:00:00 +0000</pubDate>
      <guid>/pages/lo-behold/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;This article was published also on &lt;a href=&#34;https://www.linkedin.com/pulse/lo-behold-vivek-ragunathan&#34;&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Netflix’s movie recommendations has never impressed me. I have found the recommendations are either unrelated or predictable. When I have finished watching a low-rated movie, it would be nice if Netflix recommends a better-rated ones in the same genre rather than dump more low-rated ones on me. I wonder if my outdated LED TV is the reason.&lt;/p&gt;</description>
    </item>
    <item>
      <title>C&#43;&#43;/CLI Primer – An Apress Book</title>
      <link>/posts/cpp-cli-apress/</link>
      <pubDate>Sun, 11 Dec 2016 09:18:37 +0000</pubDate>
      <guid>/posts/cpp-cli-apress/</guid>
      <description>&lt;p&gt;Earlier this year, I wrote&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; about publishing&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; C++/CLI Primer on [LeanPub.com]&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;. I wondered if there is anybody else besides myself and Microsoft using C++/CLI but readers surprised and humbled me with their support. Seems C++/CLI is here to stay. Know why?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Problem Reduction</title>
      <link>/posts/problem-reduction/</link>
      <pubDate>Sat, 10 Dec 2016 08:21:43 +0000</pubDate>
      <guid>/posts/problem-reduction/</guid>
      <description>Problem Reduction is what I call when a given problem can be expressed in terms of or solved using a solution to an alternate problem. Take for instance, the word distance problem: Find the shortest distance between two words in a given set of words.</description>
    </item>
    <item>
      <title>Importance of Semantics</title>
      <link>/posts/semantics/</link>
      <pubDate>Mon, 07 Nov 2016 06:04:46 +0000</pubDate>
      <guid>/posts/semantics/</guid>
      <description>&lt;p&gt;&lt;strong&gt;semantics&lt;/strong&gt; | /sɪˈmæntɪks/ | noun (functioning as sing)&lt;/p&gt;&#xA;&lt;p&gt;‐ the branch of linguistics that deals with the study of meaning, changes in meaning, and the principles that govern the relationship between sentences or words and their meanings&#xA;the study of the relationships between signs and symbols and what they represent&#xA;(logic)&lt;/p&gt;&#xA;&lt;p&gt;‐ the study of interpretations of a formal theory&lt;/p&gt;&#xA;&lt;p&gt;‐ the study of the relationship between the structure of a theory and its subject matter&#xA;(of a formal theory) the principles that determine the truth or falsehood of sentences within the theory, and the references of its terms&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Application Models</title>
      <link>/posts/app-models/</link>
      <pubDate>Sat, 27 Aug 2016 15:50:31 +0000</pubDate>
      <guid>/posts/app-models/</guid>
      <description>&lt;p&gt;A typical business application is composed of several flows or use-cases. Also, these flows consist of logical ones like a transaction that spans several flows. Take for instance an e-commerce application which consists of user registration/login, product lookup, and one of the most important interactions in an e-commerce application &amp;ndash; the shopping cart, and much more. Although these application flows might appear to be discrete and independent of one another, it is after producing a working solution that we realize that these flows are inherently interrelated for one reason or another. The idea of designing stateless application flows is many times confused with the relation between the flows.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Application Models</title>
      <link>/pages/app-models/</link>
      <pubDate>Sat, 27 Aug 2016 15:50:00 +0000</pubDate>
      <guid>/pages/app-models/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;This article was published also on &lt;a href=&#34;https://www.linkedin.com/pulse/application-models-vivek-ragunathan&#34;&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;A typical business application is composed of several flows or use-cases. Also, these flows consist of logical ones like a transaction that spans several flows. Take for instance an e-commerce application which consists of user registration/login, product lookup, and one of the most important interactions in an e-commerce application – the shopping cart, and much more. Although these application flows might appear to be discrete and independent of one another, it is after producing a working solution that we realize that these flows are inherently interrelated for one reason or another. The idea of designing stateless application flows is many times confused with the relation between the flows.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Iterators vs. Generators</title>
      <link>/posts/iterators-vs-generators/</link>
      <pubDate>Tue, 02 Aug 2016 19:16:00 +0000</pubDate>
      <guid>/posts/iterators-vs-generators/</guid>
      <description>&lt;p&gt;Yes, there is a difference. Although both produce the same end effect, an iterator is not the same as a generator. The difference is in the way it is implemented and also consumed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mundane vs JINQ Way</title>
      <link>/posts/mundane-vs-jinq-way/</link>
      <pubDate>Fri, 15 Jul 2016 06:27:45 +0000</pubDate>
      <guid>/posts/mundane-vs-jinq-way/</guid>
      <description>&lt;p&gt;New things are not always instantly accepted. Beyond skepticism, new things challenge the comfort people are accustomed to. &lt;a href=&#34;/posts/jinq/&#34;&gt;JINQ&lt;/a&gt; wasn&amp;rsquo;t particularly welcomed. It was either discarded as unknown angel or worse &amp;hellip; ridiculed. However, JINQ still promises expressive succinct code.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Text Editors</title>
      <link>/posts/text-editors-rundown/</link>
      <pubDate>Sun, 29 May 2016 07:49:39 +0000</pubDate>
      <guid>/posts/text-editors-rundown/</guid>
      <description>&lt;p&gt;I am not a *nix commands expert … but a &lt;a href=&#34;http://www.johndcook.com/blog/2014/10/18/experts-vs-professionals/&#34;&gt;professional&lt;/a&gt;? So why not relish educating my brother a couple of nifty commands, especially – &lt;code&gt;find&lt;/code&gt; and &lt;code&gt;grep&lt;/code&gt;, which he was looking into at the time. You can find a few more &lt;a href=&#34;/pages/cmd-line-quickies&#34;&gt;here&lt;/a&gt; if you are interested.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Selective Combinations</title>
      <link>/2016/05/16/resource-combinations/</link>
      <pubDate>Mon, 16 May 2016 07:00:08 +0000</pubDate>
      <guid>/2016/05/16/resource-combinations/</guid>
      <description>&lt;p&gt;Consider this scenario:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;You have a list of strings with which you have generate ordered selective combinations of strings starting with the first string in the list. Let us say the list of strings is &lt;code&gt;abc&lt;/code&gt;, &lt;code&gt;def&lt;/code&gt; and &lt;code&gt;ghi&lt;/code&gt;. I have to generate ordered combinations of the above list restricted to the ones starting with &lt;code&gt;abc&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;So that would be as follows:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;abc def ghi&#xA;&#xA;abc def&#xA;&#xA;abc ghi&#xA;&#xA;abc&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>JINQ</title>
      <link>/posts/jinq/</link>
      <pubDate>Fri, 01 Apr 2016 22:50:19 +0000</pubDate>
      <guid>/posts/jinq/</guid>
      <description>JINQ (Java INtegrated Query) is an ultra minimalistic library inspired from and mimicking the .NET LINQ. While LINQ is a language level construct, JINQ is composed of types - classes and methods, but to the same effect.</description>
    </item>
    <item>
      <title>Partial Classes – Java ???</title>
      <link>/posts/partial-classes-java/</link>
      <pubDate>Tue, 16 Feb 2016 04:27:37 +0000</pubDate>
      <guid>/posts/partial-classes-java/</guid>
      <description>&lt;p&gt;I am really sorry if I tricked you into believing that Java is offering partial class feature. Unfortunately, Java doesn’t. Maybe never will. But I am going to talk about a workaround also presenting the thought process. Hence the length of the post.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sporting a new look</title>
      <link>/posts/new-look-2016/</link>
      <pubDate>Tue, 19 Jan 2016 04:23:55 +0000</pubDate>
      <guid>/posts/new-look-2016/</guid>
      <description>&lt;p&gt;I am very particular about composing the content of the posts (and pages) on this blog. By content, I mean whatever goes in the body of a post/page – text, image, HTML, etc. I like to keep the content extremely clean and avoid polluting with HTML like I had to on Blogspot. With such content, it is a terrible pain to migrate blogs or render posts flawless and consistent across browsers. &lt;a href=&#34;http://www.blogger.com&#34;&gt;Blogger&lt;/a&gt; is notorious for that aspect&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Publishing C&#43;&#43;/CLI on LeanPub</title>
      <link>/2016/01/19/publishing-ccli-on-leanpub/</link>
      <pubDate>Tue, 19 Jan 2016 03:07:03 +0000</pubDate>
      <guid>/2016/01/19/publishing-ccli-on-leanpub/</guid>
      <description>&lt;p&gt;I came across LeanPub &lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; a few months back. I believe it was through hanselman&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; – blog, video or something. I liked LeanPub &lt;em&gt;instantly&lt;/em&gt; because of a couple of reasons.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;It supports writing in markdown&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; and I love markdown.&lt;/li&gt;&#xA;&lt;li&gt;There is a large collection and variety of books including technical books and material, some of which are free too.&lt;/li&gt;&#xA;&lt;li&gt;In case you are not a professional writer, the publication process encourages you with the feeling as if you are one.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I hadn’t written/published any lengthy material in a long time except the C+/CLI Primer on CodeProject&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;. Why not publish same, I thought, and actually published&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;. I wasn’t even expecting any response from anyone since the material was on C++/CLI, a language that gave me the impression that I was the only one using it at the time I published on CodeProject. 😀 I am really impressed that the material topped more than 50 downloads in about three months since it was published. &lt;strong&gt;Heck, a couple of them even paid&lt;/strong&gt; despite the fact that the material is free. Not only am I humbled by this encouraging gesture but I am also convinced that C++/CLI is still being pursued and will continue to live – production, academic or as a pet language. Go grab your copy of the booklet – C++/CLI Primer. It’s free!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Written in Stone</title>
      <link>/pages/written-in-stone/</link>
      <pubDate>Wed, 30 Dec 2015 06:58:42 +0000</pubDate>
      <guid>/pages/written-in-stone/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;This article was &lt;a href=&#34;https://www.linkedin.com/pulse/bits-bytes-stones-vivek-ragunathan&#34;&gt;published&lt;/a&gt; also on LinkedIn.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h3 id=&#34;academia&#34;&gt;Academia&lt;/h3&gt;&#xA;&lt;p&gt;The Mamallapuram Shore Temple, constructed on the deep southern shores of the Bay of Bengal, is one of the oldest stone structures on the planet. It was built around the beginning of the Anno Domini (AD). The site consists of three temple structures, subsidiary structures, and statues primarily built with granite. Prominent statues are that of a lion and elephant with great significance in the way it was rock-cut. Chariots are the primary subsidiary structures other than the temple. It is inevitable not to be marveled at the temple design, intricate and precise carvings and inscriptions. Carvings are made on a monolithic rock on which the works of an elephant and its ear with its loose skin are nearly impossible even today. Inscriptions, according to linguists, is poetic and metaphorical, a sophisticated language nevertheless. Another marvel is Krishna’s Butter Ball, a massive boulder of rock sitting tight above a rocky slope.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Lights Preserved</title>
      <link>/2015/12/28/lights-preserved/</link>
      <pubDate>Sun, 27 Dec 2015 21:45:40 +0000</pubDate>
      <guid>/2015/12/28/lights-preserved/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;/images/lights-preserved.jpg&#34; alt=&#34;lights preserved&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;I have a separate blog – &lt;a href=&#34;https://lightspreserved.wordpress.com&#34;&gt;Lights Preserved&lt;/a&gt; where I get to claim myself a photographer, and where I publish some of my artistic snapshots. 😀&lt;/p&gt;&#xA;&lt;p&gt;Nothing entertains me on a Sunday beating the nap and pecking around my old store. Published a few good snaps that brought back good memories. Take a &lt;a href=&#34;https://lightspreserved.wordpress.com&#34;&gt;look&lt;/a&gt;!&lt;/p&gt;</description>
    </item>
    <item>
      <title>.NET for the next generation</title>
      <link>/2015/12/03/net-oss/</link>
      <pubDate>Thu, 03 Dec 2015 09:36:26 +0000</pubDate>
      <guid>/2015/12/03/net-oss/</guid>
      <description>&lt;p&gt;It was about a decade ago when &lt;a href=&#34;https://us.amazon.com/Microsoft-Visual-Studio-NET-Professional/dp/B00005RV4Z&#34;&gt;Visual Studio .NET 2002&lt;/a&gt; was launched. Having worked with &lt;a href=&#34;https://www.amazon.com/Microsoft-Visual-Studio-Professional-6-0/dp/B00003W8H8&#34;&gt;Visual Studio 6&lt;/a&gt; until then, the new interface was refreshing and powerful along with .NET and the suite of languages, tools and technologies. If you were there, you would have felt &lt;em&gt;times were changing&lt;/em&gt;. Beyond the cool and modern interface, Visual Studio &lt;strong&gt;.NET&lt;/strong&gt; 2002 had a lot more to offer  compared to Visual Studio 6 — .NET. It was an exciting time for me back then.&lt;/p&gt;</description>
    </item>
    <item>
      <title>final, const and beyond</title>
      <link>/posts/final-const-beyond/</link>
      <pubDate>Tue, 13 Oct 2015 08:13:30 +0000</pubDate>
      <guid>/posts/final-const-beyond/</guid>
      <description>&lt;p&gt;What are your thoughts on the following piece of code?&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;someGibberishMethod&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#x9;&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;someMethodReturningLength&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#x9;&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sum&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#x9;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#x9;   &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// some code that updates the sum variable&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#x9;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#x9;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SomeClass&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;someClass&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SomeClass&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sum&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#x9;&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sumValueInsideSomeClass&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;someClass&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;getSumValue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#x9;&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// use someText, maybe log or something&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#x9;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;someText&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;someClass&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;doSomeOperation&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;cm&#34;&gt;/*some parameters*/&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#x9;&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// use someText, maybe log or something&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#x9;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;someText&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>The unconquerable</title>
      <link>/2015/10/04/unconquerable/</link>
      <pubDate>Sat, 03 Oct 2015 19:28:22 +0000</pubDate>
      <guid>/2015/10/04/unconquerable/</guid>
      <description>&lt;p&gt;Hercules was a strong man; a tall muscular perfect masculine figure. He moved boulders with his bare hands. He stopped elephants and swung them by their tusks. No doubt, he prevented battles by his mere presence. His body drew its strength from within. He was no less than unconquerable.&lt;/p&gt;</description>
    </item>
    <item>
      <title>JAR Tips: Loading dependencies</title>
      <link>/2015/09/14/jar-tips-loading-dependencies/</link>
      <pubDate>Sun, 13 Sep 2015 19:42:16 +0000</pubDate>
      <guid>/2015/09/14/jar-tips-loading-dependencies/</guid>
      <description>&lt;p&gt;If you are writing a typical console based application in Windows, you would end up with an executable (exe). You might also have one or more dependent libraries (DLL). The question is where do we place these DLLs so that they are picked up at runtime by the application; loaded and consumed. Actually it is no brainer, just put them along side the console application executable. Or you could place the DLLs in the &lt;em&gt;System32&lt;/em&gt; directory. Or you could add the directory to the &lt;em&gt;PATH&lt;/em&gt;. Well, my point was actually to say that the DLLs can be simply placed alongside the executable and it would be picked up.&lt;/p&gt;</description>
    </item>
    <item>
      <title>An Unfair World of Tuples, Anons., var and auto</title>
      <link>/posts/tuples-anons-var-auto/</link>
      <pubDate>Mon, 24 Aug 2015 01:10:27 +0000</pubDate>
      <guid>/posts/tuples-anons-var-auto/</guid>
      <description>&lt;p&gt;It all began when I wanted to return more than one value from one of the methods. Although my attempts ended futile, it was fun exploring and musing how things could have been.&lt;/p&gt;&#xA;&lt;p&gt;There are at least a couple of options to return multiple values from a method:-&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;return an instance of a class that holds the values&lt;/li&gt;&#xA;&lt;li&gt;return a tuple&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
    </item>
    <item>
      <title>A funny moment of IoC</title>
      <link>/2015/07/08/a-funny-moment-of-ioc/</link>
      <pubDate>Wed, 08 Jul 2015 06:16:56 +0000</pubDate>
      <guid>/2015/07/08/a-funny-moment-of-ioc/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Inversion_of_control&#34;&gt;IoC&lt;/a&gt; - Inversion of control, is a design that enables fluid flow of control by decoupling  tight dependencies between the portion of a code that exhibits behavior and  another portion of code that provides required functionality. One form of IoC, as we know, is Dependency Injection (DI). For instance, a &lt;code&gt;TextEditor&lt;/code&gt; could refer an &lt;code&gt;ISpellChecker&lt;/code&gt; instead of direct coupling to a specific implementation of spell checker thereby enabling the text editor to switch spell checker or even use more than one.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mutating Strings</title>
      <link>/2015/07/07/mutating-strings/</link>
      <pubDate>Tue, 07 Jul 2015 06:52:45 +0000</pubDate>
      <guid>/2015/07/07/mutating-strings/</guid>
      <description>&lt;p&gt;Today, we question our beliefs! Is string really immutable?&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;message&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Hello World!&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;message&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// Prints &amp;#34;Hello World!&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;unsafe&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;message&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;fixed&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;char&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;message&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;*(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;sc&#34;&gt;&amp;#39;?&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;message&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// Prints what? See for yourself!&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>A time when time did not exist …</title>
      <link>/2015/05/02/time-begins/</link>
      <pubDate>Sat, 02 May 2015 18:08:59 +0000</pubDate>
      <guid>/2015/05/02/time-begins/</guid>
      <description>&lt;p&gt;Those of us, non-physicists, we do seem to realize that time is eternal. Yet there was a time when time did not exist; tough to comprehend? For us, time is something running on a clock or tracked on a calendar. Let me share what I think about when time did not exist.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quiz: Choosing an array of integers !!!</title>
      <link>/2015/03/13/jaoints/</link>
      <pubDate>Fri, 13 Mar 2015 06:40:37 +0000</pubDate>
      <guid>/2015/03/13/jaoints/</guid>
      <description>&lt;p&gt;In the recent interviews, I asked the candidates the following question:&lt;/p&gt;&#xA;&lt;p&gt;Is there a difference that I need to consider in the following declarations? Both allocate fixed size array to store integers:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;na1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Integer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;na2&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Integer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Conditionals in Bash</title>
      <link>/wiki/bash/if/</link>
      <pubDate>Tue, 10 Feb 2015 00:00:00 +0000</pubDate>
      <guid>/wiki/bash/if/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;Syntax&lt;/li&gt;&#xA;&lt;li&gt;Conditional Options for Values&lt;/li&gt;&#xA;&lt;li&gt;Conditional Options for File/Folder&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>Change Permissions Recursively</title>
      <link>/wiki/bash/rwx/</link>
      <pubDate>Sat, 07 Feb 2015 08:02:58 +0000</pubDate>
      <guid>/wiki/bash/rwx/</guid>
      <description>Change Permission on Folder/Files Recursively</description>
    </item>
    <item>
      <title>Everyday grep</title>
      <link>/wiki/bash/grep/</link>
      <pubDate>Sat, 07 Feb 2015 08:02:58 +0000</pubDate>
      <guid>/wiki/bash/grep/</guid>
      <description>grep commands for everyday use</description>
    </item>
    <item>
      <title>SVN Commands</title>
      <link>/wiki/svn/</link>
      <pubDate>Sat, 07 Feb 2015 08:02:58 +0000</pubDate>
      <guid>/wiki/svn/</guid>
      <description>SVN commands you were longing for</description>
    </item>
    <item>
      <title>A-Team Library</title>
      <link>/posts/a-team-lib/</link>
      <pubDate>Mon, 26 Jan 2015 01:11:52 +0000</pubDate>
      <guid>/posts/a-team-lib/</guid>
      <description>&lt;p&gt;A short while ago, I had to write a compelling document for a client about a library that I had developed during my tenure, call it &lt;em&gt;A-Team Library&lt;/em&gt; or &lt;strong&gt;ATL&lt;/strong&gt;. Having to learn the “&lt;em&gt;eyes-wide-shut&lt;/em&gt;” culture to maintain the couples-of-decades old code and simultaneously develop on the top of it was very disheartening. It was time a lot of things were given fresh thoughts. Not the least of all duplication of code and &lt;em&gt;functionality&lt;/em&gt;. But not just that. Like in a programming language, when there is more than one way of doing something, when those ways are opposing, it causes nothing but confusion. So was the case. The business seemed to be far from realizing it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Court Room Climax</title>
      <link>/pages/court-room-climax/</link>
      <pubDate>Sun, 25 Jan 2015 00:19:31 +0000</pubDate>
      <guid>/pages/court-room-climax/</guid>
      <description>&lt;p&gt;&lt;small&gt;Before reading this page, please read the relevant blog post: &lt;a href=&#34;/posts/a-team-lib&#34;&gt;A-Team Library&lt;/a&gt;. This page is an excerpt of a climactic &lt;em&gt;court room like&lt;/em&gt; epilogue of a document that was authored for one of the clients I use to work with. The actual context and details have been omitted. The excerpt has been borrowed and tailored a little bit for public reading. The tone and message remain the same.&lt;/small&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Colors in the Shell</title>
      <link>/wiki/shell-colors/</link>
      <pubDate>Sat, 10 Jan 2015 00:00:00 +0000</pubDate>
      <guid>/wiki/shell-colors/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;Display Color Palette&lt;/li&gt;&#xA;&lt;li&gt;Display Color Grid&lt;/li&gt;&#xA;&lt;li&gt;Color Index&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>Bash Tidbits</title>
      <link>/wiki/bash/etc/</link>
      <pubDate>Thu, 01 Jan 2015 00:00:00 +0000</pubDate>
      <guid>/wiki/bash/etc/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;Arguments&lt;/li&gt;&#xA;&lt;li&gt;Template for find files and process each file&lt;/li&gt;&#xA;&lt;li&gt;Template for convert &lt;code&gt;.png&lt;/code&gt; to &lt;code&gt;.jpg&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&amp;hellip; and more&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>The Secret behind Bjarne and Herb’s Papers on Unified Syntax</title>
      <link>/posts/secret-of-cpp-unified-syntax/</link>
      <pubDate>Sun, 09 Nov 2014 10:36:44 +0000</pubDate>
      <guid>/posts/secret-of-cpp-unified-syntax/</guid>
      <description>&lt;p&gt;A long time back, in one of my posts here&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;, I had discussed about Extension Methods&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; … in C++; sorta! It seems that the grand daddy, Bjarne Stroustoup&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;, had read my post, and was impressed. So he has published a paper – Call syntax&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;: &lt;code&gt;x.f(y)&lt;/code&gt; vs. &lt;code&gt;f(x,y)&lt;/code&gt;. Good thing except I don’t like the idea of assuming &lt;code&gt;x.f(y)&lt;/code&gt; for &lt;code&gt;f(x, y)&lt;/code&gt; while the reverse is the actual idea of extension methods. You will know when you read his paper. It seems the commander, Herb Sutter&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;, also was impressed with my post. Not only that he too doesn’t seem to like the &lt;code&gt;x.f(y)&lt;/code&gt; for f(x, y) idea. Great men think alike. LOL! So he published his paper – &lt;strong&gt;Unified Syntax&lt;/strong&gt;&lt;sup id=&#34;fnref:6&#34;&gt;&lt;a href=&#34;#fn:6&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;6&lt;/a&gt;&lt;/sup&gt;. How is that?&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Simple Tree List View</title>
      <link>/2014/10/05/simple-tlv/</link>
      <pubDate>Sat, 04 Oct 2014 19:43:27 +0000</pubDate>
      <guid>/2014/10/05/simple-tlv/</guid>
      <description>&lt;p&gt;Digging up stash is one of the best pass times. You know you never know what you will find. I had an article written quite some time back but had not posted it anywhere. Not sure why. I posted it at CodeProject – &lt;a href=&#34;http://www.codeproject.com/Articles/825741/A-Simple-Tree-List-View&#34;&gt;A Simple Tree List View&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Just-In-Time (JIT) Compilation</title>
      <link>/pages/2014-10-01-jit/</link>
      <pubDate>Wed, 01 Oct 2014 04:27:30 +0000</pubDate>
      <guid>/pages/2014-10-01-jit/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;small&gt;An excerpt from the book &lt;a href=&#34;&#34;&gt;Professional .NET v2.0&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;The Just in Time (JIT) Compiler gets its name because it compiles your managed code into executable native code on the fly. That is, it compiles the IL just as it’s needed. Understanding how the JIT works, again, isn’t strictly necessary in order to be productive with managed code. In fact, those not familiar with assembly-level programming might feel a little uncomfortable with the content in this section; if you’ve never programmed in a language like C or C++, for example, then you are sure to feel a little lost. Don’t fret; you can safely skim over this section and come back after you’ve worked with the CLR a little more. But for those who read through, it will give you some internals-style insight into how things work in the runtime.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tree List View</title>
      <link>/pages/tlv/</link>
      <pubDate>Wed, 01 Oct 2014 03:45:22 +0000</pubDate>
      <guid>/pages/tlv/</guid>
      <description>How about a control like that? Isn’t it cool? Unfortunately, you don’t get that with the Windows Forms controls collection. But you can get yourself one; read on. &lt;img src=&#34;/images/tlv.png&#34; alt=&#34;tlv&#34;&gt;</description>
    </item>
    <item>
      <title>C&#43;&#43;0x Like Algorithms</title>
      <link>/pages/cpp0x-algos/</link>
      <pubDate>Wed, 01 Oct 2014 03:32:28 +0000</pubDate>
      <guid>/pages/cpp0x-algos/</guid>
      <description>&lt;p&gt;A few C++0x algorithms and other helper methods implemented for C++98:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;TrueFor&lt;/code&gt;[&lt;code&gt;All&lt;/code&gt;|&lt;code&gt;Any&lt;/code&gt;]&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;IndexOf&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Copy&lt;/code&gt;[&lt;code&gt;If&lt;/code&gt;|&lt;code&gt;N&lt;/code&gt;]&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;IsPartitioned&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Itoa&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;[&lt;code&gt;From&lt;/code&gt;|&lt;code&gt;To&lt;/code&gt;]&lt;code&gt;String&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Trim&lt;/code&gt;[&lt;code&gt;Start&lt;/code&gt;|&lt;code&gt;End&lt;/code&gt;]&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>PHP Savers – PropertyBag</title>
      <link>/2014/09/30/php-property-bag/</link>
      <pubDate>Mon, 29 Sep 2014 22:36:35 +0000</pubDate>
      <guid>/2014/09/30/php-property-bag/</guid>
      <description>&lt;p&gt;The ubiquitous and the universal data structure in PHP is the [array][1]. It is an amalgamation of commonly used data structures – list, map etc. In the recent times, PHP has also adopted object orientation and introduced classes. The syntactic difference in the way a property of an array and object poses an inconvenience in the user code&lt;sup id=&#34;fnref-452-1&#34;&gt;&lt;a href=&#34;#fn-452-1&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; specifically when there is a need to interact with code that is not open for change; legacy or not.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cool Regex Testers</title>
      <link>/2014/07/23/cool-regex-testers/</link>
      <pubDate>Wed, 23 Jul 2014 11:30:28 +0000</pubDate>
      <guid>/2014/07/23/cool-regex-testers/</guid>
      <description>&lt;p&gt;Anytime I have to play with regular expressions, I use one of the online regex testing web sites to come up with the regex I need. Last couple of times I had to come up with a regex for most common everyday stuff like dates and such. Oh yeah, last time it was date actually. I had a server response that had a date in the format &lt;code&gt;yyyy-mm-dd&lt;/code&gt;, &lt;a href=&#34;http://www.w3.org/QA/Tips/iso-date&#34;&gt;ISO format&lt;/a&gt;. I was working with JavaScript, and initially I was naive to use the &lt;a href=&#34;http://www.w3schools.com/jsref/jsref_obj_date.asp&#34;&gt;&lt;code&gt;Date&lt;/code&gt;&lt;/a&gt; class to parse the date in the response. Turned that there is difference in the way the date is interpreted by Firefox and other browsers.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Overloading vs Variable Arguments !!!</title>
      <link>/2014/05/29/overloading-and-varargs/</link>
      <pubDate>Wed, 28 May 2014 21:26:39 +0000</pubDate>
      <guid>/2014/05/29/overloading-and-varargs/</guid>
      <description>&lt;p&gt;In a statically typed (object oriented?) language, function overloading offers the facility of organizing your code into two or more functions with different types and/or number of arguments. This is highly useful when the functionality offered by the function can be invoked in different scenarios. For instance, let us consider the function(s) below:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Getting reminded of the reminder !!!</title>
      <link>/2014/05/23/android-reminder/</link>
      <pubDate>Fri, 23 May 2014 01:47:56 +0000</pubDate>
      <guid>/2014/05/23/android-reminder/</guid>
      <description>&lt;p style=&#39;font-family:Open Sans;&#39;&gt;&#xA;  I have been using Android for quite some time now, and only recently I noticed that Android pops up a notification &lt;i&gt;reminding you of a reminder&lt;/i&gt;. It says &amp;#8220;Upcoming alarm &amp;#8211; Buy Milk&amp;#8221;, where Buy Milk is the reminder I had set.&#xA;&lt;/p&gt;</description>
    </item>
    <item>
      <title>jqGrid: Handling array data !!!</title>
      <link>/2014/05/23/jqgrid-handling-array-data/</link>
      <pubDate>Fri, 23 May 2014 01:43:15 +0000</pubDate>
      <guid>/2014/05/23/jqgrid-handling-array-data/</guid>
      <description>&lt;p&gt;This post is primarily a personal reference. I also consider this a tribute to &lt;a href=&#34;http://stackoverflow.com/users/315935/oleg&#34;&gt;Oleg&lt;/a&gt;, who played a big role in improving my understanding of the jqGrid internals – the way it handles source data types, which, if I may say, led him in discovering a bug in jqGrid.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Clean Code</title>
      <link>/2014/05/23/clean-code/</link>
      <pubDate>Fri, 23 May 2014 01:31:21 +0000</pubDate>
      <guid>/2014/05/23/clean-code/</guid>
      <description>&lt;p&gt;I received quite a lot of criticism for &lt;a href=&#34;/2013/02/11/dealing-with-bad-code/&#34;&gt;Dealing with Bad Code&lt;/a&gt;. The criticism was mostly along these lines – &lt;em&gt;There is no good or bad programmer. The good programmer thing is more of an illusion. When you place a programmer in a domain in which he has little or no experience (like a PHP web programmer writing C++ code), he will soon be seen as a bad programmer. What is branded good or bad is subjective&lt;/em&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Windows Phone Epic !!!</title>
      <link>/posts/windows-phone-epic/</link>
      <pubDate>Thu, 28 Nov 2013 03:48:57 +0000</pubDate>
      <guid>/posts/windows-phone-epic/</guid>
      <description>&lt;p&gt;Dear Reader,&lt;/p&gt;&#xA;&lt;p&gt;Do not be overwhelmed by the length of the article. I have tried my best to keep the length of the article NOT directly proportional to the time required to read it.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;em&gt;If you want to tell people the truth, make them laugh, otherwise they’ll kill you&lt;/em&gt; - Oscar Wilde&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;There are times when truth tends to be subjective, such as this article. However, I have definitely added the fun component to keep up earlier promise. Consider the time you spent reading this article as a break from your work or routine. I am sure you will enjoy it; doesn’t matter if you are using a Windows Phone 1. Perhaps you will read it again.&lt;/p&gt;&#xA;&lt;p&gt;I am programmer&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; gadget savvy, an avid fan of Microsoft products (especially Visual Studio and associated suite of development tools), and an honest critic of any product I use. I have an Android Phone, an iPhone, and for a few months now, a Windows Phone. And this is my experience with the Windows Phone – good, bad and grey.&lt;/p&gt;&#xA;&lt;p&gt;To begin with, the Windows Phone landscape (app and feature set) is dry and unpromising. There are a few good things here and there to console ourselves for the money we spent on the phone, and for the love of Microsoft!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dealing with Bad Code</title>
      <link>/2013/02/11/dealing-with-bad-code/</link>
      <pubDate>Sun, 10 Feb 2013 18:30:26 +0000</pubDate>
      <guid>/2013/02/11/dealing-with-bad-code/</guid>
      <description>&lt;p&gt;Read this fine article by &lt;a href=&#34;http://www.joelonsoftware.com/&#34;&gt;Joel Spolsky&lt;/a&gt;: &lt;a href=&#34;http://www.joelonsoftware.com/articles/fog0000000069.html&#34;&gt;Things You Should Never Do&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;It is a great article, one that invokes mixed feelings. The article talks against rewriting (large scale) software…..from scratch. Joel was kind enough to consider all those who write software as true programmers; people who give enough thought and not just code up something that works. However, it is far different in the real world. That said, I am neither completely in disagreement with Joel nor am I advocating to rewrite large scale software once the code is identified as a mess.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linked List Quiz – Part II !!!</title>
      <link>/2012/11/01/linked-list-quiz-part-ii/</link>
      <pubDate>Wed, 31 Oct 2012 18:30:21 +0000</pubDate>
      <guid>/2012/11/01/linked-list-quiz-part-ii/</guid>
      <description>&lt;p&gt;In the previous &lt;a href=&#34;/2012/06/18/linked-list-quiz-part-i&#34;&gt;post&lt;/a&gt;, we saw the academic (not general purpose) version of a linked list used to solve the puzzles, and solved the following puzzles on linked list.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Reverse the list recursively&lt;/li&gt;&#xA;&lt;li&gt;Reverse the list iteratively&lt;/li&gt;&#xA;&lt;li&gt;Find if a list is cyclic&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In this part, I will be solving the remaining two puzzles that I listed in the last part.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Offering __FILE__ and __LINE__ for C# !!!</title>
      <link>/2012/09/09/caller_info_in_cs/</link>
      <pubDate>Sat, 08 Sep 2012 18:30:40 +0000</pubDate>
      <guid>/2012/09/09/caller_info_in_cs/</guid>
      <description>&lt;p&gt;Not the same way but we could say better.&lt;/p&gt;&#xA;&lt;p&gt;Visual Studio 2012, another power packed release of Visual Studio, among a lot of other powerful fancy language features, offers the ability to deduce the method caller details at compile time.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linked List Quiz – Part I !!!</title>
      <link>/2012/06/18/linked-list-quiz-part-i/</link>
      <pubDate>Sun, 17 Jun 2012 18:30:44 +0000</pubDate>
      <guid>/2012/06/18/linked-list-quiz-part-i/</guid>
      <description>&lt;p&gt;A short while back, Sammy quizzed me on linked list based problems; singly linked list.&lt;/p&gt;&#xA;&lt;p&gt;I am recording those problems, solutions and my experience as a two part series. In the first part, I am introducing the linked list class, which I wrote for packaging the implementation of the solutions. This class pertains to the context of the problem(s) and cannot be used as a general purpose linked list. A std::list might more pertinent in the context of the general purpose implementation of a list.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sms FireWall Update</title>
      <link>/2012/04/24/smsfwupdate/</link>
      <pubDate>Mon, 23 Apr 2012 18:35:56 +0000</pubDate>
      <guid>/2012/04/24/smsfwupdate/</guid>
      <description>&lt;p&gt;I gave &lt;a href=&#34;https://play.google.com/store/apps/details?id=com.vivekr.smsfirewall&#34;&gt;SMS FireWall&lt;/a&gt; a refresh with a couple of features requested by users:-&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;An option ‘Allow and Move’ in the settings screen, which when checked moves the messages from the quarantine vault when opted to be added to the allowed list. Although it might be clear to you, let me explain it in a few words how it works. When you long press a sender in the quarantine vault, a menu with two options appear – Allow, Delete. When ‘Allow’ is clicked, the sender is added to the allowed list. And when the ‘Allow and Move’ setting is checked, the messages from this sender are moved to the inbox.&lt;/li&gt;&#xA;&lt;li&gt;A confirmation dialog prompt when attempted to empty the quarantine vault&lt;/li&gt;&#xA;&lt;li&gt;A few minor (internal) improvements&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Hope they are useful to others too. And let me know if you need any other features to be in the application.&lt;/p&gt;</description>
    </item>
    <item>
      <title>OrderedThreadPool – Bug Fix !!!</title>
      <link>/2012/04/14/otp-bug-fix/</link>
      <pubDate>Fri, 13 Apr 2012 19:50:01 +0000</pubDate>
      <guid>/2012/04/14/otp-bug-fix/</guid>
      <description>&lt;p&gt;Hugh pointed out a &lt;a href=&#34;http://www.blogger.com/comment.g?blogID=11793007&amp;amp;postID=8394495887151499024&#34;&gt;bug&lt;/a&gt; in the &lt;a href=&#34;/2009/03/18/ordered-thread-pool&#34;&gt;OrderedThreadPool&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I think there is a small window for error in the OrderedThreadPool class. Basically, if an item of work is queued, then a worker thread runs, takes the item off the queue and is about to call &lt;code&gt;wcb(state)&lt;/code&gt; – but at that instant is (say) context switched. Then another item gets queued and another worker thread runs and dequeues the item and then again is about to call &lt;code&gt;wcb(state)&lt;/code&gt;. There is scope here for the two operations to run concurrently or even out of order…&lt;/p&gt;</description>
    </item>
    <item>
      <title>Unique Id Generation !!!</title>
      <link>/2012/03/09/uid-gen/</link>
      <pubDate>Thu, 08 Mar 2012 18:41:36 +0000</pubDate>
      <guid>/2012/03/09/uid-gen/</guid>
      <description>&lt;p&gt;A short while I was engaged in a little project where I had to interact with a third party service provider who required a (30 length) unique id as part of the transaction. I am little dumb and am used to GUIDs for a long time when it comes to unique ids. But GUIDs are more than 30 in length. I was trying out some stupid ways like stripping out the trail part of the GUID to make 30 length unique but my intuition wasn’t convinced about the tricks I was working out.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sms FireWall</title>
      <link>/posts/sms-firewall/</link>
      <pubDate>Thu, 08 Mar 2012 18:36:49 +0000</pubDate>
      <guid>/posts/sms-firewall/</guid>
      <description>&lt;p&gt;Tired of prank SMSes. Need a simple way to block them, and keep your inbox clean? Don’t worry. You got it!&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://market.android.com/details?id=com.vivekr.smsfirewall&#34;&gt;SMS Firewall&lt;/a&gt; is a simple and cute (hope you like it!) Android application to block and quarantine unwanted SMS from reaching your inbox. Unwanted are those who are neither in your contacts list nor in the allowed list, which is provided by the application. Phone numbers or sender names such as your bank or mobile service provider can be added to the allowed list. You got an option to either notify you of the blocked SMS or ignore it, in which case you will have check the quarantine vault by yourself. Besides, you have a ‘Just Monitor’ mode, which is primarily used for debugging purposes or when you don’t want to block SMS from unknown sender(s) (for a while). When this mode is switched on, SMS from unknown senders will reach the inbox and also a copy of it is saved in the quarantine vault.&lt;/p&gt;</description>
    </item>
    <item>
      <title>To Ritchie</title>
      <link>/posts/2011-10-17-toritchie/</link>
      <pubDate>Mon, 17 Oct 2011 15:34:09 +0000</pubDate>
      <guid>/posts/2011-10-17-toritchie/</guid>
      <description>&lt;p&gt;&lt;em&gt;Dennis Ritchie&lt;/em&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;, whom we all know as the creator of the C programming language passed away on Oct 12, 2011. We have lost one of the brilliant minds of mankind. I owe him this post for he has been one of the greatest inspirations in my life and the very reason that I am into programming.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Seinfeld Calendar Update !!!</title>
      <link>/posts/seinfeld/</link>
      <pubDate>Fri, 09 Sep 2011 19:50:43 +0000</pubDate>
      <guid>/posts/seinfeld/</guid>
      <description>&lt;p&gt;We have released an update for &lt;a href=&#34;https://market.android.com/details?id=com.pongal.seinfeld&#34;&gt;Seinfeld Calendar&lt;/a&gt; with a bunch of some exciting features and defect fixes. I hope they are exciting for you too.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;NOTES&lt;/strong&gt;: You can add notes or additional information for a task on a month basis. Again, the notes are maintained month wise and not date wise. It is just to keep it simple, since adding it date wise would require a special selection mechanism for marking a date as completed.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;REMINDERS&lt;/strong&gt;: When you create a new task or edit an existing task, you will now be able to add reminders for a task, or disable them too if you added one already. As you might have guessed it, the reminder pops up a notification at the specified time reminding you to do the task. It could be jogging in the morning or taking your pills at night. The tool is now improved to not only keep track of your task status, but also helps you to do it everyday by reminding you. So you will not miss doing it!&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;HOME SCREEN WIDGET&lt;/strong&gt;: We have added the facility to drop home screen widgets on your home screen &lt;em&gt;per task&lt;/em&gt;. The home screen will show you the current date and you can click the date to mark it done. If you click the task name, it will take you to the specific task\current month in the application.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;So with the above features, doing the task and tracking it has become super easy. Despite all the handy features, it is all in your hands to do your task. It is just not about marking it done.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Android meets .NET</title>
      <link>/posts/android-meets-net/</link>
      <pubDate>Sun, 21 Aug 2011 13:07:44 +0000</pubDate>
      <guid>/posts/android-meets-net/</guid>
      <description>&lt;p&gt;It is always fun to program in C# (besides C++). If so, how would I feel if I was able to program in C# on Android? You may be wondering what in the world I am talking about. Android development environment is all Java and open source stuff. How could this Microsoft thing fit onto it? Well, it seems that some clever guys&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; had huddled up and ported Mono for Android, developed .NET libraries for the Android SDK, and also supplemented it with a &lt;em&gt;Mono for Android&lt;/em&gt; project template in Visual Studio. Thus we relish writing C# code for Android.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quiz - Beauty of Numbers - Solution</title>
      <link>/2011/07/03/beauty-of-numbers-solution/</link>
      <pubDate>Fri, 01 Jul 2011 20:45:08 +0000</pubDate>
      <guid>/2011/07/03/beauty-of-numbers-solution/</guid>
      <description>&lt;p&gt;One hint that should be  helpful in building our solution is that we got to get retained after every wave of removal (until nobody else remains). That means it got to be really some special number or special kind of number. We could do what functional programmers would do. Write down the steps of removal for every queue size N, and it is not worth trying for very large N; in our case, even 20 or 30 could be large. But the point is we could iterate the steps manually and find a position K for every queue size N, where K is the position that remains after all the waves of removal. Once we are done with that, we should stare intensely 😂 on every K to derive a pattern, which would tell us something about those Ks, and with that we should be able to solve the problem.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quiz - Beauty of Numbers</title>
      <link>/2011/07/02/quiz-beauty-of-numbers/</link>
      <pubDate>Fri, 01 Jul 2011 19:39:08 +0000</pubDate>
      <guid>/2011/07/02/quiz-beauty-of-numbers/</guid>
      <description>&lt;p&gt;Sriram quizzed:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Imagine there is a queue of people for getting a ticket for a movie or somehing. Where should be standing in the queue to last until the manager or some guy keeps removing people at odd indices. For instance, if the queue has 5 people given a token A to E, first we remove the first set of odd numbered positions in the queue, so A, C and E are gone. Now B and D remain. Again we remove the odd numbered positions. This time B alone is gone, and D is the winner. So in a queue like that, what is the lucky position you should hold so that you survive the wave of removals?&lt;/p&gt;</description>
    </item>
    <item>
      <title>To Hold or Not to Hold – A story on Thread references !!!</title>
      <link>/posts/thread-reference/</link>
      <pubDate>Wed, 30 Mar 2011 17:05:36 +0000</pubDate>
      <guid>/posts/thread-reference/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SomeMethod&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;double&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;y&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// some code&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Thread&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ThreadFunc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Start&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;What do you think about the code above?&lt;/p&gt;&#xA;&lt;p&gt;Some may say nothing seems to be wrong. Some may say there is not enough information to comment. A few may say that it is awful to spin off a thread like that (the last line of the method), and that there is a probability for the thread to be garbage collected at an unexpected point of execution. That is something interesting to discuss about.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Crazy Brackets – [](){}();</title>
      <link>/posts/crazy-brackets/</link>
      <pubDate>Sat, 26 Mar 2011 18:38:23 +0000</pubDate>
      <guid>/posts/crazy-brackets/</guid>
      <description>&lt;p&gt;What does this cryptic bracket sequence mean? What programming language is it? Is it valid syntax? If there is even a weak chance of this syntax being valid? If so, what does it mean?&lt;/p&gt;&#xA;&lt;p&gt;Alright, alright, alright! It is C++. That would calm most people; with all their love (pun) for C++. Specifically, it is C++0x. Amongst many other features that we have been waiting for, C++0x gives us the power of lambdas.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wetting my feet in Android – Seinfeld Calendar</title>
      <link>/2011/03/15/seinfeld/</link>
      <pubDate>Tue, 15 Mar 2011 18:20:04 +0000</pubDate>
      <guid>/2011/03/15/seinfeld/</guid>
      <description>&lt;p&gt;A couple of my colleagues and I huddled up to learn a bit of Android. I think I told you about &lt;a href=&#34;/2011/03/08/anonymous-classes-vs-delegates/&#34;&gt;that&lt;/a&gt; a short while back. We developed a very simple application – &lt;a href=&#34;https://market.android.com/details?id=com.pongal.seinfeld&amp;amp;feature=search_result&#34;&gt;The Seinfeld Calendar&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://en.wikipedia.org/wiki/Jerry_Seinfeld&#34;&gt;Seinfeld&lt;/a&gt; calendar or otherwise called the habit calendar is &lt;a href=&#34;http://lifehacker.com/#!281626/jerry-seinfelds-productivity-secret&#34;&gt;Seinfeld’s productivity secret&lt;/a&gt;. The secret of achieving your goal is practising something, whatever your goal is, everyday and make it a habit. And mark it in your calendar each day you practice, and make sure you do not break the chain. Our application helps you keep track of your everyday tasks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Anonymous Classes vs Delegates !!!</title>
      <link>/2011/03/08/anonymous-classes-vs-delegates/</link>
      <pubDate>Tue, 08 Mar 2011 17:10:16 +0000</pubDate>
      <guid>/2011/03/08/anonymous-classes-vs-delegates/</guid>
      <description>&lt;p&gt;I am not a java programmer. By that, I do not mean I am against Java. As a programmer by profession and passion, I try to learn things along the way. That includes a little of bit of Java. I should say that my proper encounter, so to say, with Java is a simple application that I am trying out with Android. There might be some hard core differences and/or limitations in the Android version of Java. But I am almost certain that I am using only primary level features of Java.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quiz – Where am I ?</title>
      <link>/2011/02/19/where-am-i/</link>
      <pubDate>Sat, 19 Feb 2011 12:05:38 +0000</pubDate>
      <guid>/2011/02/19/where-am-i/</guid>
      <description>&lt;p&gt;The question is, in C++, how do detect if an object is allocated on the stack or heap.&lt;/p&gt;&#xA;&lt;p&gt;On Windows, the stack address is in the range of &lt;code&gt;0x80000000&lt;/code&gt;. If the address of the variable is in this range, then you could say that the object is allocated on the stack; else it is allocated on the heap. This technique of detecting is not preferable since it may not work on other operating systems (such as linux), and deals with the platform specific information making it a non-portable solution.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Meeting Martin</title>
      <link>/posts/2010-12-21-meeting-martin/</link>
      <pubDate>Tue, 21 Dec 2010 13:32:57 +0000</pubDate>
      <guid>/posts/2010-12-21-meeting-martin/</guid>
      <description>&lt;p&gt;You may not know the guy in black. You should definitely be knowing the guy in green. &lt;a href=&#34;http://martinfowler.com/aboutMe.html&#34;&gt;Don&amp;rsquo;t you&lt;/a&gt;?&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;/images/2010/12/martin-and-i.jpg&#34; alt=&#34;Martin Fowler&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;I am not a patron of his philosophies against planned design. But he sure is a great guy with lots of good ideas. It was nice having an hour long chat with him.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Invoking methods with out and ref – Finale !!!</title>
      <link>/2010/12/21/out-ref-finale/</link>
      <pubDate>Tue, 21 Dec 2010 13:24:39 +0000</pubDate>
      <guid>/2010/12/21/out-ref-finale/</guid>
      <description>&lt;p&gt;Alright, it is a long wait. And I am going to keep it short.&lt;/p&gt;&#xA;&lt;p&gt;Recap of the problem: Why did the &lt;code&gt;ref&lt;/code&gt; variable in SomeMethod not get the expected result (&lt;code&gt;DayOfWeek&lt;/code&gt;.&lt;code&gt;Friday&lt;/code&gt;) when called from a different thread?&lt;/p&gt;&#xA;&lt;p&gt;Boxing. Yes, that is the culprit. Sometimes, it is subtle to note. &lt;code&gt;DayOfWeek&lt;/code&gt; is an &lt;code&gt;enum&lt;/code&gt; – a value type. When the method is called from a different thread, we put the argument (&lt;code&gt;arg3&lt;/code&gt;) in an object array, and that’s where the value gets boxed. So we happen to assign the resultant value to the boxed value.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Invoking methods with Out and Ref (Part 2) !!!</title>
      <link>/2010/10/28/outref2/</link>
      <pubDate>Thu, 28 Oct 2010 17:22:39 +0000</pubDate>
      <guid>/2010/10/28/outref2/</guid>
      <description>&lt;p style=&#34;font-family:Tahoma;font-size:11pt;&#34;&gt;&#xA;  Straight to code&amp;#8230;..&#xA;&lt;/p&gt;&#xA;&lt;pre style=&#34;color:blue;font-family:Consolas;font-size:11pt;&#34;&gt;int SomeMethod(string arg1,&#xA;    string arg2,&#xA;    ref DayOfWeek arg3)&#xA;{&#xA;    // Wildest implementation!&#xA;}&lt;/pre&gt;&#xA;&lt;p style=&#34;font-family:Tahoma;font-size:11pt;&#34;&gt;&#xA;  The above method had to be executed on its dispatcher thread. So let unravel a bit of the wildest implementation above.&#xA;&lt;/p&gt;&#xA;&lt;pre style=&#34;color:blue;font-family:Consolas;font-size:11pt;&#34;&gt;int SomeMethod(string arg1,&#xA;    string arg2,&#xA;    ref DayOfWeek arg3)&#xA;{&#xA;    if (Disptacher.CheckAccess())&#xA;    {&#xA;        var funcDelegate = (Func&amp;lt;string, string, DayOfWeek, int&amp;gt;)SomeMthod;&#xA;&#xA;        return Dispatcher.Invoke(funcDelegate,&#xA;            arg1,&#xA;            arg2,&#xA;            ref arg3);&#xA;    }&#xA;&#xA;    // Wilder implementation!!&#xA;}&lt;/pre&gt;&#xA;&lt;p style=&#34;font-family:Tahoma;font-size:11pt;&#34;&gt;&#xA;  Before you say anything, yes, the compiler spat the following errors:-&#xA;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Scrollable Image Viewer</title>
      <link>/pages/img-viewer/</link>
      <pubDate>Sat, 09 Oct 2010 00:00:00 +0000</pubDate>
      <guid>/pages/img-viewer/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;This article was published also on &lt;a href=&#34;https://www.codeproject.com/Articles/25748/Scrollable-Image-Viewer&#34;&gt;CodeProject&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;The .NET Base Class Library comes with a PictureBox control that is used for displaying images. Although it offers a few scaling modes, unfortunately, it does not provide a scrolling facility. This article presents a picture box like control [Scrollable Image Viewer Control or SIV Control] that is used to display images in one of two modes:-&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pattern Conflict</title>
      <link>/pages/pattern-conflict/</link>
      <pubDate>Fri, 08 Oct 2010 17:56:18 +0000</pubDate>
      <guid>/pages/pattern-conflict/</guid>
      <description>Are your classes that implement the Template Method Design Pattern “Decorator aware”?</description>
    </item>
    <item>
      <title>Thinking Currying</title>
      <link>/posts/thinking-currying/</link>
      <pubDate>Sun, 03 Oct 2010 12:08:00 +0000</pubDate>
      <guid>/posts/thinking-currying/</guid>
      <description>&lt;p&gt;&lt;em&gt;Currying&lt;/em&gt; is a mathematical concept based on lambda calculus. It is a technique of operating on a function (taking multiple arguments) by splitting and capable of chaining into a series of single argument functions. It is very similar to what a human would attempt to do on paper. For example, if you have to add numbers &lt;code&gt;1&lt;/code&gt; through &lt;code&gt;10&lt;/code&gt;, what would you do? Class II mathematics -&lt;code&gt;0&lt;/code&gt; in hand, &lt;code&gt;1&lt;/code&gt; in the mind, add &lt;code&gt;0&lt;/code&gt; and &lt;code&gt;1&lt;/code&gt;, so &lt;code&gt;1&lt;/code&gt; in the mind, then &lt;code&gt;2&lt;/code&gt; in the hand, &amp;hellip; up to &lt;code&gt;10&lt;/code&gt;. So we compute the addition with one argument at a time.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quiz – (Journey through templates, SFINAE and specialization) !!!</title>
      <link>/2010/04/10/sfinae/</link>
      <pubDate>Sat, 10 Apr 2010 07:39:00 +0000</pubDate>
      <guid>/2010/04/10/sfinae/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;template&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;typename&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;typename&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;B&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;TClass&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TClass&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// Overload #1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SomeMethod&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;A&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;B&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ostringstream&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ostr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           &lt;span class=&#34;n&#34;&gt;ostr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;-&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ostr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// Overload #2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SomeMethod&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;B&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;A&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           &lt;span class=&#34;n&#34;&gt;std&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ostringstream&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ostr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           &lt;span class=&#34;n&#34;&gt;ostr&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;-&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ostr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;So that is a template class with SomeMethod overloads. Why would somebody write such a class? Imagine it is an adder class, and the method overloads could used to add with parameters specified in either order. Following is the way one could use the above (based on the adder example):-&lt;/p&gt;</description>
    </item>
    <item>
      <title>Missing MI !!!</title>
      <link>/2010/03/05/missing-mi/</link>
      <pubDate>Fri, 05 Mar 2010 17:10:00 +0000</pubDate>
      <guid>/2010/03/05/missing-mi/</guid>
      <description>&lt;p&gt;We all know C# does not offer multiple inheritance but offers arguments that programmers can live without it. It is true in almost all cases, especially all cat and animal or employee and manager projects. I have seen a few cases where if C# offered multiple inheritance, the solution would have been natural, elegant and succinct.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sizeof vs Marshal.SizeOf !!!</title>
      <link>/2009/12/30/sizeof-vs-marshal-sizeof/</link>
      <pubDate>Tue, 29 Dec 2009 22:25:00 +0000</pubDate>
      <guid>/2009/12/30/sizeof-vs-marshal-sizeof/</guid>
      <description>&lt;p&gt;There are two facilities in C# to determine the size of a type – &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/eahchzkf.aspx&#34;&gt;&lt;code&gt;sizeof&lt;/code&gt;&lt;/a&gt; operator and&lt;a href=&#34;http://msdn.microsoft.com/en-us/library/5s4920fa.aspx&#34;&gt;&lt;code&gt;Marshal.SizeOf&lt;/code&gt;&lt;/a&gt; method. Let us discuss what they offer and how they differ.&lt;/p&gt;&#xA;&lt;p&gt;Before we settle the difference between &lt;code&gt;sizeof&lt;/code&gt; and &lt;code&gt;Marshal.SizeOf&lt;/code&gt;, let us discuss why would we want to compute the size of a variable or type. Other than academic, one typical reason to know the size of a type (in a production code) would be allocate memory for an array of items; typically done while using &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/6ewkz86d(VS.80).aspx&#34;&gt;&lt;code&gt;malloc&lt;/code&gt;&lt;/a&gt;. Unlike in C++ (or unmanaged world), computing the size of a type definitely has no such use in C# (managed world). Within the managed application, size does not matter; since there are types provided by the CLR for creating \ managing fixed size and variable size (typed) arrays. And as per MSDN, the size cannot be computed accurately. Does that mean we don’t need to compute the size of a type at all when working in the CLR world? Obviously no, else I would not be writing this post.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Curious Case Of Anonymous Delegates !!!</title>
      <link>/2009/09/02/anondelegates/</link>
      <pubDate>Wed, 02 Sep 2009 18:29:00 +0000</pubDate>
      <guid>/2009/09/02/anondelegates/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://msmvps.com/blogs/senthil/default.aspx&#34; target=&#34;_blank&#34;&gt;Senthil&lt;/a&gt; has left us thrilled in his &lt;a href=&#34;http://msmvps.com/blogs/senthil/archive/2009/09/01/anonymous-methods-as-event-handlers-part-1.aspx&#34; target=&#34;_blank&#34;&gt;new post&lt;/a&gt;, and also inspired me to write about the &lt;a href=&#34;http://msdn.microsoft.com/en-us/library/0yw3tz5k(VS.80).aspx&#34; target=&#34;_blank&#34;&gt;topic&lt;/a&gt;. Although, anonymous delegates have become a mundane stuff amongst programmers, there is still these subtle stuff left unexplored. Alright, let us try to answer Senthil’s question before he unravels the mystery in his next post.&lt;/p&gt;</description>
    </item>
    <item>
      <title>finally and Return Values !!!</title>
      <link>/2009/07/02/finally-and-return-values/</link>
      <pubDate>Wed, 01 Jul 2009 21:07:00 +0000</pubDate>
      <guid>/2009/07/02/finally-and-return-values/</guid>
      <description>&lt;p&gt;Let us read some code:-&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SomeMethod&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;num&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;try&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;num&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;num&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;finally&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;num&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;What is the return value of &lt;code&gt;SomeMethod&lt;/code&gt;? Some anonymous guy asked that question in the code project forum, and it has been answered. I am writing about it here because it is interesting and subtle. One should not be surprised when people misinterpret finally. So let us take a guess, &lt;code&gt;10&lt;/code&gt; (&lt;code&gt;i = 5&lt;/code&gt;, then incremented by 5 in the finally block).It is not the right answer; rather &lt;code&gt;SomeMethod&lt;/code&gt; returns &lt;code&gt;5&lt;/code&gt;. Agreed that &lt;code&gt;finally&lt;/code&gt; is called in all cases of returning from SomeMethod but the return value is calculated when it is time to return from SomeMethod, normally or abnormally. The subtlety lies not in the way finally is executed but in the return value is calculated. So the return value (5) is decided when a return is encountered in the try block. The finally is just called for cleanup; and the &lt;code&gt;num&lt;/code&gt; modified there is local to &lt;code&gt;SomeMethod&lt;/code&gt;. So make the return value &lt;code&gt;10&lt;/code&gt;, it is no use being hasty making &lt;code&gt;SomeMethod&lt;/code&gt; return from the finally block. Because returning from &lt;code&gt;finally&lt;/code&gt; is not allowed. (We will talk about it later why returning from &lt;code&gt;catch&lt;/code&gt; block is a bad practice and why can&amp;rsquo;t we return from &lt;code&gt;finally&lt;/code&gt; block). Had such modifications been done on a reference type, they would have been visible outside of &lt;code&gt;SomeMethod&lt;/code&gt;, although the return value may be different.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Type Safe Logger</title>
      <link>/2009/04/25/type-safe-logger/</link>
      <pubDate>Sat, 25 Apr 2009 15:02:00 +0000</pubDate>
      <guid>/2009/04/25/type-safe-logger/</guid>
      <description>&lt;p&gt;Article co-authored with &lt;a href=&#34;www.linkedin.com/in/sanjeev-venkataramanan-3496b018&#34;&gt;Sanjeev&lt;/a&gt;, and &lt;a href=&#34;http://www.codeproject.com/Articles/35648/Type-Safe-Logger-For-C&#34;&gt;published&lt;/a&gt; on &lt;a href=&#34;www.codeproject.com&#34;&gt;CodeProject&lt;/a&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;problem&#34;&gt;PROBLEM&lt;/h3&gt;&#xA;&lt;p&gt;Every application logs a whole bunch of diagnostic messages, primarily for (production) debugging, to the console or the standard error device or to files. There are so many other destinations where the logs can be written to. Irrespective of the destination that each application must be able to configure, the diagnostic log message and the way to generate the message is of our interest now. So we are in need of a logger class that can behave transparent to the logging destination. That should not be a problem, it would be fun to design that.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Typesafe Logger</title>
      <link>/pages/ts-logger/</link>
      <pubDate>Sat, 25 Apr 2009 15:02:00 +0000</pubDate>
      <guid>/pages/ts-logger/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;This article was co-authored with &lt;a href=&#34;https://www.linkedin.com/in/sanjeev-venkataramanan-3496b018&#34;&gt;Sanjeev&lt;/a&gt;, and &lt;a href=&#34;https://www.codeproject.com/Articles/35648/Type-Safe-Logger-For-C&#34;&gt;published&lt;/a&gt; on &lt;a href=&#34;https://www.codeproject.com&#34;&gt;CodeProject&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;problem&#34;&gt;PROBLEM&lt;/h3&gt;&#xA;&lt;p&gt;Every application logs a whole bunch of diagnostic messages, primarily for (production) debugging, to the console or the standard error device or to files. There are so many other destinations where the logs can be written to. Irrespective of the destination that each application must be able to configure, the diagnostic log message and the way to generate the message is of our interest now. So we are in need of a logger class that can behave transparent to the logging destination. That should not be a problem, it would be fun to design that.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Simple Array Class For C&#43;&#43;</title>
      <link>/posts/cpp-array/</link>
      <pubDate>Fri, 10 Apr 2009 16:48:00 +0000</pubDate>
      <guid>/posts/cpp-array/</guid>
      <description>This is a simple array like class for C++, which can be used as a safe wrapper for accessing a block of memory pointed by a bare pointer.</description>
    </item>
    <item>
      <title>CComPtr Misconception !!!</title>
      <link>/2009/04/08/ccomptr-misconception/</link>
      <pubDate>Wed, 08 Apr 2009 00:15:00 +0000</pubDate>
      <guid>/2009/04/08/ccomptr-misconception/</guid>
      <description>&lt;p&gt;This is about a killer bug identified by our chief software engineer in our application. What was devised for ease of use and write smart code ended up in this killer defect due to improper perception. Ok, let us go!&lt;/p&gt;</description>
    </item>
    <item>
      <title>OrderedThreadPool – Task Execution In Queued Order !!!</title>
      <link>/2009/03/18/ordered-thread-pool/</link>
      <pubDate>Wed, 18 Mar 2009 03:35:00 +0000</pubDate>
      <guid>/2009/03/18/ordered-thread-pool/</guid>
      <description>&lt;p&gt;I would not want to write chunks of code to spawns threads and perform many of my background tasks such as firing events, UI update etc. Instead I would use the System.Threading.ThreadPool class which serves this purpose. And a programmer who knows to use this class for such cases would also be aware that the tasks queued to the thread pool are NOT dispatched in the order they are queued. They get dispatched for execution in a haphazard fashion.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Settling Casting Restrictions</title>
      <link>/2009/02/06/settling-casting-restrictions/</link>
      <pubDate>Thu, 05 Feb 2009 20:31:00 +0000</pubDate>
      <guid>/2009/02/06/settling-casting-restrictions/</guid>
      <description>&lt;p&gt;Remember the Casting Restrictions we discussed a while back, let us settle that now. So we have some code like this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;object&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;obj&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;long&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;l&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;long&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;obj&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And an invalid cast exception while casting ‘obj’ to long. It is obvious that we are not changing the value held by obj, but just reading it. Then why restrict such casting. Let us disassemble and see what we got.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The WD Anti-Propaganda Campaign !!!</title>
      <link>/2009/01/25/the-wd-anti-propaganda-campaign/</link>
      <pubDate>Sun, 25 Jan 2009 22:35:00 +0000</pubDate>
      <guid>/2009/01/25/the-wd-anti-propaganda-campaign/</guid>
      <description>&lt;p&gt;Thanks to the internet. If nobody else bothers or understands what loss of data means, you can shout it aloud here. I lost 500GB of data - every moment of my personal and professional life captured in bits and bytes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Casting Restrictions ???</title>
      <link>/2008/11/22/casting-restrictions/</link>
      <pubDate>Sat, 22 Nov 2008 11:43:00 +0000</pubDate>
      <guid>/2008/11/22/casting-restrictions/</guid>
      <description>&lt;p&gt;We all know that the runtime can detect the actual type of a &lt;code&gt;System.Object&lt;/code&gt; instance. The primitive data types provided by the runtime are compatible with one another for casting (assuming that we do not truncate the values). So if I have an &lt;code&gt;int&lt;/code&gt;, it can be cast to &lt;code&gt;long&lt;/code&gt; or &lt;code&gt;ulong&lt;/code&gt;. All that is fine. Watch this:-&lt;/p&gt;</description>
    </item>
    <item>
      <title>Understanding (ref)erences</title>
      <link>/2008/09/26/understanding-references/</link>
      <pubDate>Fri, 26 Sep 2008 17:03:00 +0000</pubDate>
      <guid>/2008/09/26/understanding-references/</guid>
      <description>&lt;p&gt;Let us take a look at the following piece of code:-&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Operate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;IList&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;iList2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;iList2&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;List&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;iList2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;iList2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;iList2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;static&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;IList&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;iList&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;List&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;iList&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Operate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;iList&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;n&#34;&gt;Console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;iList&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ToString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;());&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Be thinking about what would the above program print to the console ? And that is what we are going to talk about in this post – simple but subtle.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Extension Methods – A Polished C&#43;&#43; Feature</title>
      <link>/2008/04/09/extension-methods-a-polished-c-feature/</link>
      <pubDate>Wed, 09 Apr 2008 06:31:39 +0000</pubDate>
      <guid>/2008/04/09/extension-methods-a-polished-c-feature/</guid>
      <description>&lt;p&gt;Extension Methods is an excellent feature in C# 3.0. It is a mechanism by which new methods can be exposed from an existing type (interface or class) without directly adding the method to the type. Why do we need extension methods anyway ? Ok, that is the big story of lamba and LINQ. But from a conceptual standpoint, the extension methods establish a mechanism to extend the public interface of a type. The compiler is smart enough to make the method a part of the public interface of the type. Yeah, that is what it does, and the intellisense is very cool in making us believe that. It is cleaner and easier (for the library developers and for us programmers even) to add extra functionality (methods) not provided in the type. That is the intent. And we know that was exercised extravagantly in LINQ. The IEnumerable was extended with a whole lot set of methods to aid the LINQ design. Remember the &lt;code&gt;Where&lt;/code&gt;, &lt;code&gt;Select&lt;/code&gt; etc methods on &lt;code&gt;IEnumerable&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Surprising Finalize Call</title>
      <link>/2007/02/22/the-surprising-finalize-call/</link>
      <pubDate>Wed, 21 Feb 2007 20:27:00 +0000</pubDate>
      <guid>/2007/02/22/the-surprising-finalize-call/</guid>
      <description>&lt;p&gt;Guess the output of the following program:-&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;SomeClass&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;IDisposable&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SomeClass&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&#x9;&lt;span class=&#34;n&#34;&gt;Trace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;SomeClass - Attempting instance creation&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&#x9;&lt;span class=&#34;k&#34;&gt;throw&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Exception&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Ohh !!! Not Now&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Dispose&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&#x9;&lt;span class=&#34;n&#34;&gt;Trace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;SomeClass::Dispose&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;p&#34;&gt;~&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SomeClass&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&#x9;&lt;span class=&#34;n&#34;&gt;Trace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;SomeClass::Finalizer&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[]){&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;k&#34;&gt;try&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&#x9;&lt;span class=&#34;n&#34;&gt;SomeClass&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sc&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SomeClass&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&lt;span class=&#34;k&#34;&gt;catch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Exception&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;){&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;&#x9;&lt;span class=&#34;n&#34;&gt;Trace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Main - {0}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Message&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;!-- more --&gt;&#xA;&lt;p&gt;This will be the output of the program:-&lt;/p&gt;</description>
    </item>
    <item>
      <title>Learning Type Access Modifiers Basics</title>
      <link>/2006/12/20/learning-type-access-modifiers-basics/</link>
      <pubDate>Wed, 20 Dec 2006 18:01:00 +0000</pubDate>
      <guid>/2006/12/20/learning-type-access-modifiers-basics/</guid>
      <description>&lt;p&gt;When I started developing my module, I had an interface IParamCountBasedAlgo declared as a nested type in a class AlgorithmOneExecutor, declared as follows:-&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;namespace&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;DataStructuresAndAlgo&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;kd&#34;&gt;partial&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;AlgorithmOneExecutor&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;interface&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;IParamCountBasedAlgo&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;k&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Validate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;k&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Execute&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#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>First Google Gadget(s)</title>
      <link>/2006/12/20/first-google-gadgets/</link>
      <pubDate>Wed, 20 Dec 2006 17:53:00 +0000</pubDate>
      <guid>/2006/12/20/first-google-gadgets/</guid>
      <description>&lt;p&gt;I did some cool stuff here with google. I wrote my first “Hello World” sort of google gadget. It claims no rewards but just was fun. Since I am a novice in html and javascript sort of things, this gadget is pretty simple.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Follow the trail…….Join the Concurrency Revolution !!!</title>
      <link>/2006/12/20/follow-the-trail-join-the-concurrency-revolution/</link>
      <pubDate>Wed, 20 Dec 2006 17:50:00 +0000</pubDate>
      <guid>/2006/12/20/follow-the-trail-join-the-concurrency-revolution/</guid>
      <description>&lt;p&gt;I could not stop writing this post after I read &lt;a href=&#34;http://www.gotw.ca/publications/guest-ed-200609.htm&#34;&gt;&lt;strong&gt;this&lt;/strong&gt;&lt;/a&gt; article by Herb Sutter. The article is just a casual technical discussion but very encouraging that a person requires at the right time – the time when he is a student. Even after several years after my college, I have been trying to keep myself a student and I got a right encouragement to join the Concurrency revolution. Thanks to Herb Sutter.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The New Looking Post</title>
      <link>/2006/12/20/the-new-looking-post/</link>
      <pubDate>Wed, 20 Dec 2006 17:44:00 +0000</pubDate>
      <guid>/2006/12/20/the-new-looking-post/</guid>
      <description>&lt;p&gt;I am very much fond of tools, updates and stuff. So I keep updating my softwares and hear/learn about new tools etc. I am excited about the new spaces - Live Spaces. Looks much better than before. I thought I would write something about the new spaces. Please &lt;em&gt;spaces guys&lt;/em&gt;, make the arranging the boxes on the home page a bit easier and intelligent. That is a feature request. Otherwise the default skin/theme is cool and professional. Old themes are still old and not much appealing. Anyway, i write the post just to say i love it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>where enum does not work</title>
      <link>/2006/12/20/where-enum-does-not-work/</link>
      <pubDate>Wed, 20 Dec 2006 12:25:00 +0000</pubDate>
      <guid>/2006/12/20/where-enum-does-not-work/</guid>
      <description>&lt;p&gt;I was writing a &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/0x6a29h6.aspx&#34;&gt;generic&lt;/a&gt; method with &lt;code&gt;enum&lt;/code&gt; as the &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/d5x73970.aspx&#34;&gt;Constraint&lt;/a&gt;, and the compiler spat a few errors that did not directly convey me that &lt;code&gt;enum&lt;/code&gt;s cannot used as generic constraints. I learnt the following from my investigation:&lt;/p&gt;&#xA;&lt;p&gt;Following is an excerpt from the &lt;a href=&#34;http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf&#34;&gt;C# language specification&lt;/a&gt; &lt;strong&gt;for generic constraints&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Overloading - A Matter Of Taste</title>
      <link>/2006/12/20/overloading-a-matter-of-taste/</link>
      <pubDate>Wed, 20 Dec 2006 12:21:00 +0000</pubDate>
      <guid>/2006/12/20/overloading-a-matter-of-taste/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://blogs.wdevs.com/mattdoig/archive/2006/08/20/14222.aspx#14244&#34;&gt;This&lt;/a&gt; was a pretty interesting discussion about method overloading in the managed world. As the discussion says that the overloading is a matter of taste. It seems that the method overloading in the managed world, indeed, is a matter of taste. Sad BUT True !!! But on the contrary, it must have been a [strict] rule. Overloading might be exhibited differently by each language in the unmanaged world. But as far as .NET goes, it must have been made a standard specification. Pardon me, if there is one.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fooled by the Activator !!!</title>
      <link>/2006/07/07/fooled-by-the-activator/</link>
      <pubDate>Fri, 07 Jul 2006 01:56:00 +0000</pubDate>
      <guid>/2006/07/07/fooled-by-the-activator/</guid>
      <description>&lt;p&gt;It was interesting to know that a custom exception, say an exception class derived from &lt;a href=&#34;http://msdn2.microsoft.com/en-us/library/system.applicationexception.aspx&#34;&gt;System.ApplicationException&lt;/a&gt;, thrown while creating an instance of a type using Activator.CreateInstance does not get caught in its appropriate exception handler, instead gets caught in the global exception handler &lt;code&gt;catch(Exception ex)&lt;/code&gt;, if provided. Any exception raised while creating an instance of the loaded type is wrapped inside a new exception object as &lt;code&gt;InnerException&lt;/code&gt; by &lt;code&gt;Activator&lt;/code&gt;.&lt;code&gt;CreateInstance&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Properties C# 2.0 – Not Elegant Enough</title>
      <link>/posts/cs-props-elegance/</link>
      <pubDate>Sat, 03 Jun 2006 06:59:00 +0000</pubDate>
      <guid>/posts/cs-props-elegance/</guid>
      <description>&lt;p&gt;Prior to .NET 2.0, there wasn&amp;rsquo;t the facility in C# to opt the visibility level for the get and set property or indexers. And i take my comment in &lt;a href=&#34;/posts/ccli-props-cs-look-alike&#34;&gt;my previous post&lt;/a&gt; that C# does not provide the facility of having different visibility levels for the get and set accessors. While that is partly correct, it is no more in C# 2.0.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Singularity – Safety &amp; Speed !!!</title>
      <link>/2006/06/02/singularity-safety-speed/</link>
      <pubDate>Fri, 02 Jun 2006 19:54:00 +0000</pubDate>
      <guid>/2006/06/02/singularity-safety-speed/</guid>
      <description>&lt;p&gt;I read about this interesting thing somewhere in MSDN.&lt;/p&gt;&#xA;&lt;p&gt;There are two types of programming or programming languages. The good old C/C++ kind called the unsafe programming languages, and the other is the safe programming type which we realised very much after advent of Java/C#. And there has always been debate about safety and speed. And neither of the two has won.&lt;/p&gt;</description>
    </item>
    <item>
      <title>out, ref and InvokeMember !!!</title>
      <link>/2006/05/12/out-ref-and-invokemember/</link>
      <pubDate>Fri, 12 May 2006 02:26:00 +0000</pubDate>
      <guid>/2006/05/12/out-ref-and-invokemember/</guid>
      <description>&lt;p&gt;When I was working on the .NET reflection extravaganza thing that I explained in my previous column, i learnt one another interesting thing, that is about the Type.InvokeMember. How will pass out or ref parameters for the method invoked using Type.InvokeMember ? If you are going to invoke a method with the prototype&lt;/p&gt;</description>
    </item>
    <item>
      <title>.NET Reflection Extravanganza !!!</title>
      <link>/2006/05/11/net-reflection-extravanganza/</link>
      <pubDate>Thu, 11 May 2006 22:40:00 +0000</pubDate>
      <guid>/2006/05/11/net-reflection-extravanganza/</guid>
      <description>&lt;p&gt;Over the past few weeks, I have been involved with this module that got the best of both worlds - .NET and I, 😁.&lt;/p&gt;&#xA;&lt;p&gt;Ok, this was the problem. We have a COM server, let us name it Server. I had to write an assembly in C#, let us call it Bridge, that will listen to all of the events fired by the Server and perform an action Action. To keep that Action simple, let us assume we have to log them to the database. But the Server fires &lt;strong&gt;hundreds&lt;/strong&gt; of events, and it is not wise to write up static event handlers for all of them. Also, if more events are (ever) added in the future, the Bridge should be able to support it without code changes.&lt;/p&gt;&#xA;&lt;p&gt;The twist in the game was that this was a brown + green field development project. That demanded a wise solution - learn from the past and better the future.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Where is my C&#43;&#43; ?</title>
      <link>/2006/05/04/where-is-my-c/</link>
      <pubDate>Thu, 04 May 2006 06:11:00 +0000</pubDate>
      <guid>/2006/05/04/where-is-my-c/</guid>
      <description>&lt;p&gt;I have been using C# for quite some time now, and that too VS 2005. I see that Programming Pain at a macro level has boiled down to thinking than coding. Though it might be an advantage on one side, I feel I have become lazy. Since I am a programmer from the C++ world, it was very easy to become lazy. The small and handy applications that I write for myself in C++, I am writing them in C#. Even now I am a great disciple of C++. And even though C++/CLI is out there, and I work a small amount of it in my project, I am getting inclined to C#.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Infinite .NET Languages !!!</title>
      <link>/2006/04/29/infinite-net-languages/</link>
      <pubDate>Sat, 29 Apr 2006 02:39:00 +0000</pubDate>
      <guid>/2006/04/29/infinite-net-languages/</guid>
      <description>&lt;p&gt;Though I knew that there are quite a few languages for the .NET platform, I came to know when surfing today that there are many well beyond my knowledge, most surprisingly like the COBOL.&lt;/p&gt;&#xA;&lt;p&gt;Check it out @ &lt;a href=&#34;http://www.dotnetpowered.com/languages.aspx&#34;&gt;http://www.dotnetpowered.com/languages.aspx&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Implementing COM OutOfProc Servers in C# .NET !!!</title>
      <link>/posts/com-oop-in-cs/</link>
      <pubDate>Sat, 29 Apr 2006 02:34:00 +0000</pubDate>
      <guid>/posts/com-oop-in-cs/</guid>
      <description>&lt;p&gt;Had to implement our COM OOP Server project in .NET, and I found this solution from the internet after a great deal of search, but unfortunately the whole idea was ruled out, and we wrapped it as a .NET assembly. This is worth knowing.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Non-conventional Window Shapes [I love C#] !!!</title>
      <link>/2006/04/15/non-conventional-window-shapes-i-love-c/</link>
      <pubDate>Sat, 15 Apr 2006 05:48:00 +0000</pubDate>
      <guid>/2006/04/15/non-conventional-window-shapes-i-love-c/</guid>
      <description>&lt;p&gt;I am not a UI guy. More specifically, I love to work with UIs. I think (only) a UI can give a better picture of the system in a multitasking environment unlike Unix. I do not say I hate Unix. And I do not like to work on UIs ie program on UIs cuz I do not know much. But have always wanted to create a non-conventional window, say an elliptical one. .NET made things like that very easy for guys like me. Look at the code below for creating a ellipitcal window.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Serialization and Exceptions !!!</title>
      <link>/2006/04/15/serialization-and-exceptions/</link>
      <pubDate>Sat, 15 Apr 2006 00:23:00 +0000</pubDate>
      <guid>/2006/04/15/serialization-and-exceptions/</guid>
      <description>&lt;p&gt;I am just like Alice in Wonderland, and not yet got out of the wonders of the .NET framework, C# and the VS 2003(5) IDE. I thought that the serialization is all not my thing until I do something big in C#. I had written this custom exception class in my project that has 3 processes connected by .NET Remoting Infrastructure. I throw my custom exception for a scenario but all I got was some other exception:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Know where you initialize and Do not forget to uninitialize !!!</title>
      <link>/2006/04/11/know-where-you-initialize-and-do-not-forget-to-uninitialize/</link>
      <pubDate>Tue, 11 Apr 2006 04:33:00 +0000</pubDate>
      <guid>/2006/04/11/know-where-you-initialize-and-do-not-forget-to-uninitialize/</guid>
      <description>&lt;p&gt;If you have long been programming in C++/COM and then you move to C#.NET, the first difference you can feel is that you got a ctor for the object you create unlike the CoCreateInstance. In the C++/COM world, you generally would have a &lt;code&gt;Initialize&lt;/code&gt; method to do the construction sort of, paired with &lt;code&gt;Terminate&lt;/code&gt;/&lt;code&gt;Uninitialize&lt;/code&gt; method. Similar is the case with singleton classes. For singleton classes in C++, you will have &lt;code&gt;public static Instance&lt;/code&gt; or &lt;code&gt;GetInstance&lt;/code&gt; method to get the only and one instance of the class and then use the initialize method to do the construction. This is certainly advantageous than the ctor facility in .NET, since you will not know when the instance will be initialized without the initialize method. Any call like &lt;code&gt;SingletonClass&lt;/code&gt;.&lt;code&gt;GetInstance()&lt;/code&gt;.SomeMethod may initialize the singleton anywhere and you will not exactly do the initialization during the application startup, which in many cases will lead to application errors after startup.&lt;/p&gt;</description>
    </item>
    <item>
      <title>An encounter with Hashtables !!!</title>
      <link>/2006/04/11/an-encounter-with-hashtables/</link>
      <pubDate>Tue, 11 Apr 2006 04:26:00 +0000</pubDate>
      <guid>/2006/04/11/an-encounter-with-hashtables/</guid>
      <description>&lt;p&gt;I encountered a situation like this where I had a hashtable in which the key is a string and the value is some object, and I had to change the values of all the keys [from zero to count] to null or some other value. I used the some of the facilities – enumerator, the Keys property etc provided by the hash table itself but it did not work out, and I spent too much time on this.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Note On Finalize !!!</title>
      <link>/2006/04/11/a-note-on-finalize/</link>
      <pubDate>Tue, 11 Apr 2006 04:12:00 +0000</pubDate>
      <guid>/2006/04/11/a-note-on-finalize/</guid>
      <description>&lt;p&gt;This is not about what Finalize is, but well Finalize is the last call on a managed object, where you can perform some clean up operations, before getting garbage collected by the .NET runtime. A few important things that are to be noted about finalizers are:-&lt;/p&gt;</description>
    </item>
    <item>
      <title>Explicit Interface Implementation !!!</title>
      <link>/2006/04/11/explicit-interface-implementation/</link>
      <pubDate>Tue, 11 Apr 2006 04:06:00 +0000</pubDate>
      <guid>/2006/04/11/explicit-interface-implementation/</guid>
      <description>&lt;p&gt;I have encountered this [wait i’ll explain] sort of situation many times and I mostly do this way in C++.&lt;/p&gt;&#xA;&lt;p&gt;Assume you have a class CMyClass that exposes its functionality through its public methods, and also let it listen to events from some sources, events being OnSomeEvent or OnXXXX(), by implementing some event interface IXModuleEvents. Now these event listener methods are reserved only for internal use and are not meant to be called by the users. So when I implement the IXModuleEvents interface in CMyClass, I make them private. Think about it and the problem is solved. It is the polymorphism game, that never cares for the accessibility of the method.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Interface Based Programming Argument !!!</title>
      <link>/2006/04/11/the-interface-based-programming-argument/</link>
      <pubDate>Tue, 11 Apr 2006 04:03:00 +0000</pubDate>
      <guid>/2006/04/11/the-interface-based-programming-argument/</guid>
      <description>&lt;p&gt;I am always a great fan of interface programming. I mean not exactly the interface keyowrd but some way to expose the functionality of the class or your module relieving the user about the worries of the implementation. But definitely make him curious of the stuff inside.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Properties in C&#43;&#43;/CLI - The C# look alike</title>
      <link>/posts/ccli-props-cs-look-alike/</link>
      <pubDate>Tue, 11 Apr 2006 03:56:00 +0000</pubDate>
      <guid>/posts/ccli-props-cs-look-alike/</guid>
      <description>&lt;p&gt;Inherently after writing some code in C#, I wanted everything to be as easy to do like in C#. And could not resist myself writing property like syntax in C++ [ofcourse C++/CLI, threw away the ugly Managed C++ before it was too late for my code to grow into a tree]. Then I learnt that properties are supported in C++.NET too but as always in the ugly way. But in C++/CLI, I was happy enough that the syntax is more elegantly redefined. For instance, there was this boolean member &lt;code&gt;logToStdError&lt;/code&gt; in my class, and in my legacy code, the property definition for &lt;code&gt;logToStdError&lt;/code&gt; looked like:-&lt;/p&gt;</description>
    </item>
    <item>
      <title>Managed Debugging Assistant !!!</title>
      <link>/2006/04/11/managed-debugging-assistant/</link>
      <pubDate>Tue, 11 Apr 2006 03:52:00 +0000</pubDate>
      <guid>/2006/04/11/managed-debugging-assistant/</guid>
      <description>&lt;p&gt;The Loader Lock is a synchronization object that helps to provide mutual exclusion during DLL loading and unloading. It helps to prevent DLLs being re-entered before they are completely initialized [in the DLLMain].&lt;/p&gt;&#xA;&lt;p&gt;When some dll load code is executed, the loader lock is set and after the complete initialization it is unset. But there is a possibility of deadlock when threads do not properly synchronize on the loader lock. This mostly happens when threads try to call other Win32 APIs (&lt;code&gt;LoadLibrary&lt;/code&gt;, &lt;code&gt;GetProcAddress&lt;/code&gt;, &lt;code&gt;FreeLibrary&lt;/code&gt; etc.) that also require the loader lock. Often this is evident in the mixed managed/unmanaged code, whereby it is not intentional but the CLR may have to call those APIs like during a call using platform invoke on one of the above listed Win32 API.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Do not delete [] a scalar pointer !!!</title>
      <link>/posts/del-scalar-ptr/</link>
      <pubDate>Mon, 27 Mar 2006 20:28:00 +0000</pubDate>
      <guid>/posts/del-scalar-ptr/</guid>
      <description>&lt;p&gt;Recently I got tangled into this problem in my code - Calling a &lt;code&gt;vector&lt;/code&gt; destructor for a scalar pointer. We all know that it is perfectly illegal to do that. For example, if we allocate something like this:-&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;OurClass&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;OurClass&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and try to delete like this:-&lt;/p&gt;</description>
    </item>
    <item>
      <title>Where do you QueryInterface ???</title>
      <link>/2006/03/27/where-do-you-queryinterface/</link>
      <pubDate>Mon, 27 Mar 2006 00:23:00 +0000</pubDate>
      <guid>/2006/03/27/where-do-you-queryinterface/</guid>
      <description>&lt;p&gt;For an ATL class, the QueryInterface is implemented in CComObject. The figure below is the inheritance hierarchy for a class generated by the wizard representing an ATL-COM object.&lt;/p&gt;&#xA;&lt;p&gt;CComObjectRootBase has an InternalQueryInterface method, which uses the interface map built by the BEGIN_COM_MAP macro to resolve IID -&amp;gt; interface pointer. The BEGIN_COM_MAP macro also defines a method _InternalQueryInterface, which passes the map on to InternalQueryInterface. CComObject implements QueryInterface, and calls _InternalQueryInterface.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Use Of Class Factories !!!</title>
      <link>/2006/03/27/use-of-class-factories/</link>
      <pubDate>Mon, 27 Mar 2006 00:22:00 +0000</pubDate>
      <guid>/2006/03/27/use-of-class-factories/</guid>
      <description>&lt;p&gt;To understand quickly and to explain in the simplest way, Class Factories are the factory classes that create a COM object. A class factory may be responsible for creating one or more COM objects. In the case of COM OutOfProc servers, the server registers the class factories for objects that it can create in a system-global table using CoRegisterClassObject. Whenever a client does &lt;code&gt;CoGetClassObject&lt;/code&gt; for a &lt;code&gt;CLSID&lt;/code&gt;, the COM run-time can look it up in the system global table, and return the factory instance. The case with InProc servers is also similar but through the &lt;code&gt;DLLGetClassObject&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Unsafe Operations with STL !!!</title>
      <link>/2006/03/27/unsafe-operations-with-stl/</link>
      <pubDate>Mon, 27 Mar 2006 00:19:00 +0000</pubDate>
      <guid>/2006/03/27/unsafe-operations-with-stl/</guid>
      <description>&lt;p&gt;It is UNSAFE to do any operation on an STL container that will modify its size while holding a reference to one of its existing element. What could happen is, when you do an operation, say push_back on a vector, it determines if there is enough space available to add a new element. If there is not sufficient space available, it allocates new space for whole of the data structure and deletes the old buffer. At this point, any reference to one of its elements created prior to push_back would have gotten corrupted.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Consoles for Mr.GUI !!!</title>
      <link>/2006/03/27/consoles-for-mr-gui/</link>
      <pubDate>Mon, 27 Mar 2006 00:13:00 +0000</pubDate>
      <guid>/2006/03/27/consoles-for-mr-gui/</guid>
      <description>&lt;p&gt;Learnt something new, a small one but very useful.&lt;/p&gt;&#xA;&lt;p&gt;Many times I have seen GUI applications accompanied by console windows that show logs or trace information of the application. How do we do that for our application ?&lt;/p&gt;&#xA;&lt;p&gt;Any GUI application can create its own console window just by calling AllocConsole Win32 API. Actually any process can use that API to allocate a new console. And the application must also learn to be disciplined enough to FreeConsole. Ok, fine. I used that in my small MFC application and was happy to see the console. But I did not see anything displayed on the console. As we know, each process has its own stdin, stdout and stderr. So redirect the console output of your parent application to the console. How do you do that ?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting Environment Variables !!!</title>
      <link>/2006/03/27/setting-environment-variables/</link>
      <pubDate>Mon, 27 Mar 2006 00:11:00 +0000</pubDate>
      <guid>/2006/03/27/setting-environment-variables/</guid>
      <description>&lt;p&gt;Need to change or set the value of an environment variable programmatically and without the need to restart/log off the machine. I need the change to reflect for all processes, ie, I need to change the global environment value and not the one in the PEB [Process Environment Block] of a process. Frustated with setting the value of an environment variable !!!&lt;/p&gt;</description>
    </item>
    <item>
      <title>CoMarshal ... Working in NT, Not in XP !!!</title>
      <link>/2006/03/26/comarshal-working-in-nt-not-working-in-xp/</link>
      <pubDate>Sun, 26 Mar 2006 00:48:00 +0000</pubDate>
      <guid>/2006/03/26/comarshal-working-in-nt-not-working-in-xp/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;I have created a multi-threaded application which works without any problems on a NT-4.0 Workstation/Server. When I try to run the same application in Windows XP, I get an error in a call to &lt;code&gt;CoMarshalInterThreadInterfaceInStream&lt;/code&gt; which returns &lt;code&gt;-2147418113&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I have provided a snippet of the code below where the call fails in Windows XP.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Consts in .NET !!!</title>
      <link>/2006/03/26/consts-in-net/</link>
      <pubDate>Sun, 26 Mar 2006 00:37:00 +0000</pubDate>
      <guid>/2006/03/26/consts-in-net/</guid>
      <description>&lt;p&gt;I was doing some programming with C# and I had to use some &lt;code&gt;const&lt;/code&gt;s as everybody does generally in programming. I had a class that simply had const string variables for my DB table names and stuff like that. My program was not working well and I started debugging and in the debugger, I was shocked to see that the const variables did not show the string values I had assigned. I did rebuilt and other non-sensical stuff like that until I learnt this about the consts in .NET:- &lt;code&gt;const&lt;/code&gt; variables in .NET do not exist as variables out of the assembly they exist in. Instead, during compilation, they get embedded - &lt;em&gt;hard-coded&lt;/em&gt;, where ever you use them, and so when you debug, you do not see the proper value that you had assigned. For debugging purposes you have to output diagnostic trace messages and verify.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Joining the Game</title>
      <link>/2005/04/19/joining-the-game/</link>
      <pubDate>Tue, 19 Apr 2005 17:25:00 +0000</pubDate>
      <guid>/2005/04/19/joining-the-game/</guid>
      <description>&lt;p&gt;Everything has a beginning.&lt;/p&gt;</description>
    </item>
    <item>
      <title>About</title>
      <link>/pages/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/pages/about/</guid>
      <description>&lt;p&gt;I am Higher-Kinded Type. Welcome to my blog.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bahul Jain</title>
      <link>/authors/bahul-jain/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/authors/bahul-jain/</guid>
      <description>&lt;p&gt;Bahul Jain is a very talented software engineer, a Scala enthusiast and a passionate advocate for functional programming. He is a &lt;a href=&#34;&#34;&gt;&lt;code&gt;shapeless&lt;/code&gt;&lt;/a&gt; guru.&lt;/p&gt;</description>
    </item>
    <item>
      <title>HKT</title>
      <link>/authors/hkt/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/authors/hkt/</guid>
      <description>&lt;p&gt;I am Higher-Kinded Type. Welcome to my author page.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Morgen Peschke</title>
      <link>/authors/morgen-peschke/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/authors/morgen-peschke/</guid>
      <description>&lt;p&gt;Morgen is an all-rounder software engineer. He is an expert Scala programmer and contributes to open source. He is a great mentor as well.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Search</title>
      <link>/search/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/search/</guid>
      <description>&lt;link rel=&#34;stylesheet&#34; href=&#34;/pagefind/pagefind-ui.css&#34;&gt;&#xA;&lt;div id=&#34;search&#34;&gt;&lt;/div&gt;&#xA;&lt;script src=&#34;/pagefind/pagefind-ui.js&#34;&gt;&lt;/script&gt;&#xA;&lt;script&gt;&#xA;  window.addEventListener(&#39;DOMContentLoaded&#39;, function() {&#xA;    new PagefindUI({&#xA;      element: &#39;#search&#39;,&#xA;      showSubResults: true,&#xA;      showImages: true&#xA;    });&#xA;  });&#xA;&lt;/script&gt;</description>
    </item>
  </channel>
</rss>
