<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Code, Checkmates, Curries, Cinemas – Bits & Bytes]]></title><description><![CDATA[Debugging life’s quirks, checkmating troubles, on and off the keyboard]]></description><link>https://www.harish.dev</link><image><url>https://substackcdn.com/image/fetch/$s_!rZua!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc04f88f-7409-4e63-8e69-7ac46276a917_1024x1024.png</url><title>Code, Checkmates, Curries, Cinemas – Bits &amp; Bytes</title><link>https://www.harish.dev</link></image><generator>Substack</generator><lastBuildDate>Tue, 21 Apr 2026 11:01:03 GMT</lastBuildDate><atom:link href="https://www.harish.dev/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Srivathsa Harish]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[srivathsa@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[srivathsa@substack.com]]></itunes:email><itunes:name><![CDATA[Srivathsa Harish]]></itunes:name></itunes:owner><itunes:author><![CDATA[Srivathsa Harish]]></itunes:author><googleplay:owner><![CDATA[srivathsa@substack.com]]></googleplay:owner><googleplay:email><![CDATA[srivathsa@substack.com]]></googleplay:email><googleplay:author><![CDATA[Srivathsa Harish]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Monads]]></title><description><![CDATA[The Misunderstood "Design Pattern"]]></description><link>https://www.harish.dev/p/monads</link><guid isPermaLink="false">https://www.harish.dev/p/monads</guid><dc:creator><![CDATA[Srivathsa Harish]]></dc:creator><pubDate>Mon, 04 Nov 2024 16:54:58 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d9d2bfb9-6d35-4627-a186-e1a35982f522_1404x1872.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Ah, monads&#8212;the mere word either sparks intrigue or dread. Monads are often described as magical constructs that solve everything. Well, they don&#8217;t. Monads are more like a humble design pattern, focused on readability and problem-solving. While we&#8217;ll touch on some theory, think of this as a practical guide, with no magical smoke and mirrors&#8212;just one straightforward solution to an everyday problem.</p><div><hr></div><h3>What <em>Is</em> a Monad?</h3><p>To answer this question, let&#8217;s first understand the problem it solves. Take the following code as an example:</p><pre><code><code>if (a &gt; b) {
    if (c &lt; d) {
        if (e != f) {
            ...
        }
    }
}</code></code></pre><p>One can immediately see that the code is deeply nested and difficult to comprehend. Keen readers might argue this could be solved with early returns. True in some cases, but not entirely, because:</p><ul><li><p>The deep nesting problem isn&#8217;t limited to <code>if</code> blocks alone.</p></li><li><p>Even with early returns, the code might become long and difficult to follow.</p></li><li><p>Above all, we may not want to return right away; we might want to do something else, like adding an error message to an array.</p></li></ul><p>In the above example, the unit of operation is comparison. Similarly, the unit of operation in a loop is iteration, and in <code>async/await</code>, it&#8217;s an external call. From this, a monad can be practically defined as a pattern/construct/container/wrapper that encapsulates a unit of operation and chains subsequent operations in a flattened way.</p><p>The above example can be rewritten as below: where If and AndIf are extension methods</p><pre><code><code>If( _ =&gt; a &gt; b)
.AndIf(_ =&gt; c &lt; d)
.AndIf(_ =&gt; e != f);</code></code></pre><p>This is an over-simplified example, and that&#8217;s intentional, as many other posts about monads dive into complex details, leading readers to misunderstand what they really are.</p><p>Similarly, nested <code>for</code> loops can be simplified as below:</p><p><strong>From:</strong></p><pre><code><code>foreach (var outerItem in outerCollection)
{
    foreach (var innerItem in outerItem.innerCollection)
    {
         ...
    }
}</code></code></pre><p><strong>To:</strong></p><pre><code><code>outerCollection.SelectMany(innerItem =&gt; ...);</code></code></pre><div><hr></div><h3>TypeScript Example</h3><p>In TypeScript, here&#8217;s an example with nested callbacks and the <code>async/await</code> equivalent:</p><pre><code><code>// Using nested callbacks
function getUserInfoWithCallback() {
    fetchUserData((user) =&gt; {
        fetchUserProfile(user.id, (profile) =&gt; {
            console.log("User data:", user);
            console.log("User profile:", profile);
            // More nested operations could go here
        });
    });
}

// Using async/await
async function getUserInfoMonadic() {
    const user = await fetchUserData();
    const profile = await fetchUserProfile(user.id);
    console.log("User data:", user);
    console.log("User profile:", profile);
}</code></code></pre><div><hr></div><h3>Am I a Functional Programmer?</h3><p>Absolutely not (well, maybe&#8212;actually, I don&#8217;t know). Contrary to popular belief, monads aren&#8217;t exclusive to functional languages. Languages like C# and JavaScript are more than happy to sneak them in under different names (looking at you, <code>async/await</code>). If you&#8217;ve ever been caught in callback hell or wrangled with nested <code>foreach</code> loops, you&#8217;ve already encountered the kinds of issues that monads can help clean up.</p><blockquote><p><strong>Pro tip:</strong> You can stop feeling guilty about using monads outside of functional programming&#8212;it&#8217;s not cheating; it&#8217;s efficient coding.</p></blockquote><p>Let&#8217;s defer the usual definition until the end because, let&#8217;s be honest, the only thing scarier than &#8220;Category Theory&#8221; is the phrase &#8220;Category Theory for Beginners.&#8221; In essence, monads help manage data transformations in a readable and declarative way. They structure your code around sequences of operations, ensuring each step flows neatly into the next without trapping readers in a labyrinth of early returns and conditionals.</p><blockquote><p><strong>Think of monads as tidy helpers</strong> for your code, ensuring the solution feels more like a conversation than an interrogation.</p></blockquote><div><hr></div><h3>Composing Operations with Monads</h3><p>Monads provide a way to compose multiple operations in a clear, organized sequence. For example, if you&#8217;re validating data, monads can help you set up a chain where each validation runs only if the previous one succeeded, saving you from a jungle of nested statements.</p><p><strong>Example in C#:</strong></p><pre><code><code>var result = email.Validate()
.Then(_ =&gt; password.Validate())
.Then(_ =&gt; username.Validate())
.Map((e, p, u) =&gt; new(e, p, u));</code></code></pre><p>This code is declarative and easy to read. Each validation step is composed neatly, without excessive conditionals or manual error handling. For this to work, <code>email</code>, <code>password</code>, and <code>username</code> should adhere to a common interface, say <code>IValidated</code> or <code>IValidatable</code>, and <code>Validate()</code> should return the same type. For the adventurous C# programmer, you can add <code>Select</code> and <code>SelectMany</code> methods to these types so that LINQ query syntax can be used, like so:</p><pre><code><code>from validatedEmail in email.Validate()
from validatedPassword in password.Validate()
from validatedUsername in username.Validate()
select new UserRegistration(validatedEmail, validatedPassword, validatedUsername);</code></code></pre><p>Fear not&#8212;many languages have their own way of expressing monad continuations. Just as with design patterns, understanding monads is less about memorizing their structure and more about recognizing when they solve a particular problem.</p><div><hr></div><h3>The Hyped-Up Monad Problem</h3><p>Here&#8217;s the kicker: a lot of literature makes monads sound like mystical constructs with powers beyond mortal comprehension. This over-glorification can set readers up for disappointment. Yes, monads are useful, but they&#8217;re not an arcane force that transforms code into pure gold. They&#8217;re a design pattern&#8212;like the Singleton or Factory patterns&#8212;but with an actual definition.</p><blockquote><p><strong>Fun fact:</strong> The term &#8220;design pattern&#8221; is often code for &#8220;not exactly defined, but sounds good.&#8221; At least monads have actual definitions!</p></blockquote><div><hr></div><h3>Monads, Category Theory, and Why We Should (Mostly) Ignore It</h3><p>Yes, monads come from category theory, and understanding that foundation is great for abstraction. But for the everyday developer, thinking of monads as design patterns for readability is often more practical. Sure, learning category theory can make pseudocode nearly identical to real code across languages, but nobody&#8217;s handing out gold stars for that. Here&#8217;s the theoretical definition:</p><p>A monad is defined as a triple (T,&#951;,&#956;)(T, \eta, \mu)(T,&#951;,&#956;), where:</p><ul><li><p><strong>TTT</strong> is a functor that maps objects and morphisms between categories.</p></li><li><p><strong>&#951;\eta&#951;</strong> (unit) wraps a value in the monadic context, like <code>Just x</code> for <code>Maybe</code>.</p></li><li><p><strong>&#956;\mu&#956;</strong> (bind) flattens nested monads, ensuring operations combine smoothly.</p></li></ul><h3>Monad Laws (Ignore if You&#8217;re Sane)</h3><p>For those interested, monads must satisfy three laws to chain operations reliably:</p><ul><li><p><strong>Left Identity:</strong> <code>return x &gt;&gt;= f</code> is the same as <code>f x</code></p></li><li><p><strong>Right Identity:</strong> <code>m &gt;&gt;= return</code> is the same as <code>m</code></p></li><li><p><strong>Associativity:</strong> <code>(m &gt;&gt;= f) &gt;&gt;= g</code> is the same as <code>m &gt;&gt;= (\x -&gt; f x &gt;&gt;= g)</code></p></li></ul><div><hr></div><h3>Final Thoughts</h3><p>Monads are best thought of as a design pattern for readability, not a complex mathematical structure only for the elite. In essence, monads help you nested code to be flattened and chained. There are some advanced theory behind how these can also be used to isolate side-effects from the business logic. We did not deal with that in this post though. By keeping things grounded and applying monads where they naturally fit, we can avoid the hype and find practical solutions. And remember: if you ever feel the urge to start with &#8220;In category theory&#8230;&#8221;&#8212;just don&#8217;t.</p>]]></content:encoded></item><item><title><![CDATA[Subscriptions Overload]]></title><description><![CDATA[Full-Time Content Consumer]]></description><link>https://www.harish.dev/p/subscriptions-overload-my-story-of</link><guid isPermaLink="false">https://www.harish.dev/p/subscriptions-overload-my-story-of</guid><dc:creator><![CDATA[Srivathsa Harish]]></dc:creator><pubDate>Sun, 27 Oct 2024 23:41:11 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/429da6e9-dfaf-4799-b1df-ff942574de37_256x256.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3><strong>Full-Time Content Consumer</strong></h3><p>Thanks to my YouTube subscriptions list. Or, as I call it, my &#8220;self-imposed online university.&#8221; Each channel I have subscribed has genuinely helped me, whether it&#8217;s learning how to debug a stubborn nvim plugin, figuring out why curries refuse to curry me, or finally understanding the history behind the pawn structure I keep messing up in the end game. But somewhere along the way, my curiosity spiralled out of control, and now I&#8217;m drowning in content, wondering if &#8220;YouTube Subscriber&#8221; counts as a profession.</p><p><strong>The basics:</strong> I subscribed to all these channels because I believed they would make me smarter, more productive, and be a better version of myself. But instead, I&#8217;ve become a walking encyclopedia of half-digested knowledge, an &#8220;expert&#8221; who knows a little about everything and a lot about avoiding real work. At this rate, my productivity graph looks like it was hit by a <code>segmentation fault</code>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_dW5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e79dc6-6cec-48d7-a3b1-7e97c633eecf_1024x1024.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_dW5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e79dc6-6cec-48d7-a3b1-7e97c633eecf_1024x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!_dW5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e79dc6-6cec-48d7-a3b1-7e97c633eecf_1024x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!_dW5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e79dc6-6cec-48d7-a3b1-7e97c633eecf_1024x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!_dW5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e79dc6-6cec-48d7-a3b1-7e97c633eecf_1024x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_dW5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e79dc6-6cec-48d7-a3b1-7e97c633eecf_1024x1024.webp" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29e79dc6-6cec-48d7-a3b1-7e97c633eecf_1024x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Conceptual mosaic representing personal and social aspects of life&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Conceptual mosaic representing personal and social aspects of life" title="Conceptual mosaic representing personal and social aspects of life" srcset="https://substackcdn.com/image/fetch/$s_!_dW5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e79dc6-6cec-48d7-a3b1-7e97c633eecf_1024x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!_dW5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e79dc6-6cec-48d7-a3b1-7e97c633eecf_1024x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!_dW5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e79dc6-6cec-48d7-a3b1-7e97c633eecf_1024x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!_dW5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e79dc6-6cec-48d7-a3b1-7e97c633eecf_1024x1024.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h3><strong>The Productivity Paradox: Welcome to the Land of Infinite Notifications</strong></h3><p>Every day, I start with the noble intention of achieving something meaningful&#8212;maybe progress a bit on one of many coding projects lying around, or even (gasp) get a workout in. But then the YouTube notifications hit, and I&#8217;m sucked into a vortex of &#8220;urgent&#8221; videos. Watching one turns into watching five, and before I know it, I&#8217;m &#8220;learning&#8221; about medieval Mongolian war strategies&#8230; and no, I have no idea how I got there either.</p><p>On good days, I convince myself that all this content is making me more well-rounded. On bad days, I&#8217;m just a guy with many browser tabs open on &#8220;How to optimize my code&#8221; while simultaneously watching a live stream on how to lose gracefully in chess. Every notification promises something critical, like &#8220;5 Mind-Blowing JavaScript Hacks,&#8221; and here I am, choosing to watch rather than code, only to forget every single hack as soon as the video ends.</p><div><hr></div><h3><strong>My Own Productivity Saboteur</strong></h3><p>So, what did I learn from all these channels? Well, nothing&#8230; at least nothing that can be found in a resume. Somewhere between &#8220;Geography Now&#8221; and &#8220;Fireship,&#8221; I realized I&#8217;m not as committed to growth as I thought. I&#8217;m more like a kid at a candy store, grabbing everything and savoring nothing.</p><p>A shoutout to my most favourite youtubers though </p><ul><li><p>Zach Star</p></li><li><p>Sorted Food</p></li><li><p>ChessBase India(Beloved Sagar and Amruta)</p></li><li><p>Our stupid reactions</p></li><li><p>Geography now</p></li><li><p>Kings and generals</p></li><li><p>3Blue1Brown</p></li><li><p>NileRed</p></li><li><p>Roomieofficial and so many more(93 in total &#128559;)</p></li></ul><div><hr></div><h3><strong>The (Unpaid) Job of Watching All This: An Exercise in Futility</strong></h3><p>Honestly, keeping up with my subscriptions feels like a full-time job. There are notifications popping up at all hours, begging me to click. And click, I do. Sometimes, I think I should just add &#8220;YouTube Enthusiast&#8221; to my LinkedIn profile. But then I realize that the only endorsement I&#8217;d get would be for &#8220;Avoiding Real Work.&#8221;</p><p>And this is only my YouTube list. I haven&#8217;t even touched on Twitter, where every thread promises &#8220;insights that will change your life&#8221; (but only if you scroll past 25 tweets), or Twitch, where people are streaming chess and coding for hours while I struggle to watch without also feeling like a passive observer in my own life. Then there are all the ad-hoc suggestions from YouTube, Netflix, prime, appletv, Disney+, hotstar and SonyLiv. My multitasking skills have reached a new high&#8230; or low. Let&#8217;s call it <em>efficiently overwhelmed.</em></p><p><strong>I May Never Escape, But At Least I&#8217;m Entertained</strong></p><p>In the end, my subscription explosion is both my joy and my downfall. I have access to endless knowledge, inspiration, and the occasional recipe that I&#8217;ll definitely mess up. But really, I&#8217;m not fooling anyone. I&#8217;ve crossed from &#8220;lifelong learner&#8221; to &#8220;lifelong procrastinator.&#8221;</p><p>So here&#8217;s to all the content creators and their neon LED backdrops, intense chess analyses, and relentless calls to &#8220;smash that like button.&#8221; You&#8217;ve created a world where every notification feels like an invitation to greatness, even if, deep down, I know I&#8217;ll be watching rather than doing. Now, if you&#8217;ll excuse me, there are 12 new videos waiting for me to ignore all my responsibilities.</p>]]></content:encoded></item><item><title><![CDATA[My Totally Real and Completely Plausible Journey to the Chess Olympiad 2024]]></title><description><![CDATA[The Olympiad Dream]]></description><link>https://www.harish.dev/p/my-totally-real-and-completely-plausible</link><guid isPermaLink="false">https://www.harish.dev/p/my-totally-real-and-completely-plausible</guid><dc:creator><![CDATA[Srivathsa Harish]]></dc:creator><pubDate>Sat, 12 Oct 2024 21:52:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!1of6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52adfdf-4b56-4f1b-89e6-1cc3bf6dea84_3980x1319.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>The Olympiad Dream</strong><br>As I entered the grand venue of the 2024 Chess Olympiad, my heart raced with excitement. It was a chess lover&#8217;s paradise, and I was about to meet some of the greatest players in the world. Yes, I actually <em>did</em> meet many of my heroes in real life. I have the photos to prove it (check them out in the collage below!). But what if, instead of just meeting them, I was one of them? That&#8217;s when my imagination took over and decided to run wild...</p><p><strong>The Only Way In: Be a Player</strong><br>No, I didn&#8217;t sneak in disguised as a janitor. But after navigating the Olympic-level security and finally getting to shake hands with some of the top players, my mind started wondering: What if I had been <em>on the other side</em> of the barricades? How would my life have played out if I were not just a fan, but an actual participant in the Olympiad?</p><p><strong>Mistaken Identity: How I Became a Player</strong><br>In my imagined version of events, I was sitting innocently, watching a thrilling game between Viswanathan Anand and his opponent, when suddenly a frazzled organizer ran up to me. &#8220;You! Quick! We need you to play!&#8221; Naturally, I didn&#8217;t hesitate&#8212;because, hey, what could go wrong when your chess rating is roughly equivalent to your shoe size?</p><p><strong>The Game Begins</strong><br>As I imagined, I sat down across from a Norwegian grandmaster, trying to look as calm and professional as possible. I opened with the classic pawn to e4. Solid move, right? Except, fifteen moves later, I&#8217;d somehow trapped my own queen and built a fortress that would make abstract artists proud.</p><p><strong>Miraculous (Imaginary) Victory</strong><br>But hey, this is my story, so why not dream big? In my mind, just as my opponent was about to finish me off, I pulled off a brilliant, unexpected tactic (thank you, 2 a.m. chess tutorials), and <em>boom</em>&#8212;checkmate! Cue the standing ovation.</p><p><strong>Back to Reality</strong><br>Of course, none of this really happened. I did meet my chess heroes&#8212;Anand, Harikrishna, Gukesh, and more&#8212;but I left the actual playing to the pros. No imaginary glory, no sneaky victories. Just pure admiration and some fantastic memories of chatting with these legends.</p><p><strong>The Dream Lives On</strong><br>In the end, my trip to the 2024 Chess Olympiad was everything I had hoped for and more. I may not have played in the event (this time), but that wild imaginary journey? Let&#8217;s just call it a fun detour. Until then, I&#8217;ll stick to taking selfies with the masters and enjoy being a fan!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1of6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52adfdf-4b56-4f1b-89e6-1cc3bf6dea84_3980x1319.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1of6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52adfdf-4b56-4f1b-89e6-1cc3bf6dea84_3980x1319.png 424w, https://substackcdn.com/image/fetch/$s_!1of6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52adfdf-4b56-4f1b-89e6-1cc3bf6dea84_3980x1319.png 848w, https://substackcdn.com/image/fetch/$s_!1of6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52adfdf-4b56-4f1b-89e6-1cc3bf6dea84_3980x1319.png 1272w, https://substackcdn.com/image/fetch/$s_!1of6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52adfdf-4b56-4f1b-89e6-1cc3bf6dea84_3980x1319.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1of6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52adfdf-4b56-4f1b-89e6-1cc3bf6dea84_3980x1319.png" width="1456" height="483" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b52adfdf-4b56-4f1b-89e6-1cc3bf6dea84_3980x1319.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:483,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5662379,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1of6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52adfdf-4b56-4f1b-89e6-1cc3bf6dea84_3980x1319.png 424w, https://substackcdn.com/image/fetch/$s_!1of6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52adfdf-4b56-4f1b-89e6-1cc3bf6dea84_3980x1319.png 848w, https://substackcdn.com/image/fetch/$s_!1of6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52adfdf-4b56-4f1b-89e6-1cc3bf6dea84_3980x1319.png 1272w, https://substackcdn.com/image/fetch/$s_!1of6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb52adfdf-4b56-4f1b-89e6-1cc3bf6dea84_3980x1319.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>In my mind, they asked me for selfies!</em> &#127881;&#9823;&#65039;</p>]]></content:encoded></item></channel></rss>