<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Rahul Kadyan</title>
  <link>https://znck.dev/</link>
  <description>Software Engineer @ Superhuman</description>
  <language>en-us</language>
  <atom:link href="https://znck.dev/rss.xml" rel="self" type="application/rss+xml"/>
  <lastBuildDate>Wed, 18 Mar 2026 22:08:26 GMT</lastBuildDate>
  <pubDate>Wed, 18 Mar 2026 22:08:26 GMT</pubDate>
  <item>
    <title>Project Hail Mary</title>
    <link>https://znck.dev/articles/2026-03-18-project-hail-mary/index.html</link>
    <description>
      <![CDATA[
        I just read Project Hail Mary. Picked it up expecting a fun sci-fi read. Put it down thinking about how we approach problems, communication, and risk.
      ]]>
    </description>
    <pubDate>Wed, 18 Mar 2026 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2026-03-18-project-hail-mary/index.html</guid>
    
  </item>
  <item>
    <title>The Ability to Be Wrong Cheaply</title>
    <link>https://znck.dev/articles/2026-03-05-the-ability-to-be-wrong-cheaply/index.html</link>
    <description>
      <![CDATA[
        I built a speed reading app. Used it for two weeks. Realized it was solving the wrong problem. Pivoted it into an RSS reader in a few hours.
      ]]>
    </description>
    <pubDate>Thu, 05 Mar 2026 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2026-03-05-the-ability-to-be-wrong-cheaply/index.html</guid>
    
  </item>
  <item>
    <title>Stepping Away from the Terminal</title>
    <link>https://znck.dev/articles/2026-03-04-stepping-away-from-the-terminal/index.html</link>
    <description>
      <![CDATA[
        That sentence sounds wrong, even to me. I'm a software developer and I've recently been building for Apple platforms, which means building on a Mac. Not optional. The entire development workflow is tethered to macOS.
      ]]>
    </description>
    <pubDate>Wed, 04 Mar 2026 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2026-03-04-stepping-away-from-the-terminal/index.html</guid>
    
  </item>
  <item>
    <title>What Building AI Agents Taught Me</title>
    <link>https://znck.dev/articles/2026-02-27-what-building-ai-agents-taught-me/index.html</link>
    <description>
      <![CDATA[
        I've spent most of my career in deterministic systems. Rendering engines, plugin architectures, monorepo tooling. Problems where a function returns the same output for the same input, a test passes or fails, and correctness is binary. That mental model served me well for years.
      ]]>
    </description>
    <pubDate>Fri, 27 Feb 2026 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2026-02-27-what-building-ai-agents-taught-me/index.html</guid>
    
  </item>
  <item>
    <title>Designing a Desktop Overlay Platform</title>
    <link>https://znck.dev/articles/2026-02-27-designing-a-desktop-overlay-platform/index.html</link>
    <description>
      <![CDATA[
        Grammarly works everywhere you write. Word, Google Docs, Slack, your browser, native desktop apps. It draws underlines, shows suggestion cards, and runs an AI assistant, all as a transparent overlay on top of whatever application you're using.
      ]]>
    </description>
    <pubDate>Fri, 27 Feb 2026 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2026-02-27-designing-a-desktop-overlay-platform/index.html</guid>
    
  </item>
  <item>
    <title>Taming Code Generation: An Exploration in Scaling Myself</title>
    <link>https://znck.dev/articles/2026-02-02-taming-code-generation/index.html</link>
    <description>
      <![CDATA[
        Gone are the days when your imagination was out of reach. Builders used to spend months typing away lines of code, inching towards their vision. We are living in a true golden age of software development. Code is cheap now. Your vision and agency are in the driver's seat.
      ]]>
    </description>
    <pubDate>Mon, 02 Feb 2026 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2026-02-02-taming-code-generation/index.html</guid>
    
  </item>
  <item>
    <title>Shipping "Books at Home" in Two Days</title>
    <link>https://znck.dev/articles/2026-01-12-shipping-books-at-home-in-two-days/index.html</link>
    <description>
      <![CDATA[
        Not a prototype.Not a rough MVP.A real app—on the App Store—with barcode scanning, iCloud sync, lending, wishlists, and a small statistics view.
      ]]>
    </description>
    <pubDate>Mon, 12 Jan 2026 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2026-01-12-shipping-books-at-home-in-two-days/index.html</guid>
    
  </item>
  <item>
    <title>Small Things Like These</title>
    <link>https://znck.dev/articles/2026-01-04-small-things-like-these/index.html</link>
    <description>
      <![CDATA[
        I just finished Claire Keegan's Small Things Like These, and I'm still sitting with the weight of it.
      ]]>
    </description>
    <pubDate>Sun, 04 Jan 2026 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2026-01-04-small-things-like-these/index.html</guid>
    <enclosure url="https://znck.dev/_assets/2026-01-small-things-town-DN_1Erad.png" type="image/png" length="3672975"/>
  </item>
  <item>
    <title>A No‑Fuss Option Type for TypeScript</title>
    <link>https://znck.dev/articles/2025-11-23-simple-option-type/index.html</link>
    <description>
      <![CDATA[
        Whenever I parse input, read configuration, or look up values in a map, I hit the same problem: sometimes a value is present, sometimes it isn't. JavaScript gives us undefined, null, and a long trail of defensive if checks. None of these carry any semantic meaning.
      ]]>
    </description>
    <pubDate>Sun, 23 Nov 2025 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2025-11-23-simple-option-type/index.html</guid>
    
  </item>
  <item>
    <title>Designing a result type that feels native in TypeScript</title>
    <link>https://znck.dev/articles/2025-11-22-designing-a-result-type/index.html</link>
    <description>
      <![CDATA[
        Over the years, I've worked in several TypeScript codebases that leaned heavily on fp-ts, Effect, and a few homegrown FP-inspired Result types. They all had good intentions, but they never felt like TypeScript. Each brought its own mental model, its own vocabulary, and its own way of composing functions. When you're deep in those systems, you start thinking in terms of Either, Task, Effect, pipe, and typeclass instances, not in terms of the language you're actually writing.
      ]]>
    </description>
    <pubDate>Sat, 22 Nov 2025 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2025-11-22-designing-a-result-type/index.html</guid>
    
  </item>
  <item>
    <title>A Tale of Two Monorepos</title>
    <link>https://znck.dev/articles/2025-07-16-a-tale-of-two-monorepos/index.html</link>
    <description>
      <![CDATA[
        At work, I'm designing a setup for hundreds of contributors across dozens of teams. In my personal time, I'm building products with a few friends—often owning entire codebases myself.
      ]]>
    </description>
    <pubDate>Wed, 16 Jul 2025 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2025-07-16-a-tale-of-two-monorepos/index.html</guid>
    
  </item>
  <item>
    <title>Zero Config Approach</title>
    <link>https://znck.dev/articles/2025-07-15-zero-config-approach/index.html</link>
    <description>
      <![CDATA[
        Every monorepo starts out clean. A few packages. A handful of configs. Nothing too hard to manage. But scale changes everything.
      ]]>
    </description>
    <pubDate>Tue, 15 Jul 2025 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2025-07-15-zero-config-approach/index.html</guid>
    
  </item>
  <item>
    <title>Reclaim Toolchain Ownership</title>
    <link>https://znck.dev/articles/2025-07-14-reclaim-toolchain-ownership/index.html</link>
    <description>
      <![CDATA[
        In my previous posts, I explored the benefits of building software with small, focused packages and maintaining a single version of each dependency across a monorepo. These practices bring structure to your codebase and simplify dependency management.
      ]]>
    </description>
    <pubDate>Mon, 14 Jul 2025 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2025-07-14-reclaim-toolchain-ownership/index.html</guid>
    
  </item>
  <item>
    <title>Single Version Policy</title>
    <link>https://znck.dev/articles/2025-07-11-single-version-policy/index.html</link>
    <description>
      <![CDATA[
        A while back, we hit a wall that's all too familiar in monorepo life: dependency chaos. It was a classic case of "One team upgrades a library, another lags behind, and suddenly the same codebase runs three versions of React. Debugging becomes archaeology. Upgrades turn into whack-a-mole. Everyone feels the pain."
      ]]>
    </description>
    <pubDate>Fri, 11 Jul 2025 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2025-07-11-single-version-policy/index.html</guid>
    
  </item>
  <item>
    <title>Before the Coffee Gets Cold</title>
    <link>https://znck.dev/articles/2025-07-07-before-the-coffee-gets-cold/index.html</link>
    <description>
      <![CDATA[
        You sit on a chair in a small basement café, you can go back or forward in time, but only until your coffee gets cold. The rules are strict: you can't change the past, you cannot get up from your seat, and you can only interact with people who are also in the café at that moment.
      ]]>
    </description>
    <pubDate>Mon, 07 Jul 2025 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2025-07-07-before-the-coffee-gets-cold/index.html</guid>
    
  </item>
  <item>
    <title>Package-First Philosophy</title>
    <link>https://znck.dev/articles/2025-07-02-package-first-philosophy/index.html</link>
    <description>
      <![CDATA[
        A year ago, we were facing a common challenge: a sprawling codebase where everything was interconnected. Fixing one issue often broke something else. Refactors felt like high-stakes operations. Code reviews were slow and confusing because no one was clear on ownership. It was a familiar problem, and it was draining.
      ]]>
    </description>
    <pubDate>Wed, 02 Jul 2025 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2025-07-02-package-first-philosophy/index.html</guid>
    
  </item>
  <item>
    <title>Negative feedback comes from a good place</title>
    <link>https://znck.dev/articles/2020-01-14-appreciate-feedback/index.html</link>
    <description>
      <![CDATA[
        It's not easy to say negative things to people. In fact, it takes a lot of courage to point out the shortcoming. If someone does that for me, honest and brutal, I keep them close. Brutal and honest friends are dearest to me.
      ]]>
    </description>
    <pubDate>Tue, 14 Jan 2020 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2020-01-14-appreciate-feedback/index.html</guid>
    
  </item>
  <item>
    <title>Shipping Web Components with Vue</title>
    <link>https://znck.dev/articles/2019-11-09-shipping-web-components-with-vue/index.html</link>
    <description>
      <![CDATA[
        I have been watching the web component spec. However, all the projects I have worked on were either using Vue or React, and these frameworks are more than capable of building complex applications. I never felt like using web components, but that changed yesterday.
      ]]>
    </description>
    <pubDate>Sat, 09 Nov 2019 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2019-11-09-shipping-web-components-with-vue/index.html</guid>
    
  </item>
  <item>
    <title>Simple Hard Things</title>
    <link>https://znck.dev/articles/2019-06-10-simple-hard-things/index.html</link>
    <description>
      <![CDATA[
        Simple things are easy; everyone says so. However, in reality, it may not be so.
      ]]>
    </description>
    <pubDate>Mon, 10 Jun 2019 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2019-06-10-simple-hard-things/index.html</guid>
    <enclosure url="https://znck.dev/_assets/david-van-dijk-255503-unsplash-DuPnNUrR.jpg" type="image/jpeg" length="154056"/>
  </item>
  <item>
    <title>Finally some colors in my life</title>
    <link>https://znck.dev/articles/2019-06-03-finally-some-colors/index.html</link>
    <description>
      <![CDATA[
        "I got a red shirt!", I scream, every time my friends jab that my wardrobe is grey and dull. They always call me out, "Get some colors, dude!".
      ]]>
    </description>
    <pubDate>Mon, 03 Jun 2019 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2019-06-03-finally-some-colors/index.html</guid>
    <enclosure url="https://znck.dev/_assets/prism-Da-XBeii.png" type="image/png" length="36819"/>
  </item>
  <item>
    <title>Grammarly in Code</title>
    <link>https://znck.dev/articles/2019-06-03-grammarly-in-code/index.html</link>
    <description>
      <![CDATA[
        There's no simpler writing tool than markdown. There's no elegant editor than code. There's no better writing environment than markdown in code. It's perfect, but whenever I write, I find myself copy-pasting back and forth between Grammarly editor and VS Code editor. Grammarly makes my writing much better, but it also forces me to use their editor. Don't take me wrong I don't hate their editor, in fact, I kind of like it — clean, spacious, and responsive. But it's not sufficient for me as my articles generally have images, code snippets, figures, and sometimes markup. The lack of syntax highlight for markdown and markup is an absolute deal-breaker. If Grammarly worked in VS Code editor, wouldn't that be perfect?
      ]]>
    </description>
    <pubDate>Mon, 03 Jun 2019 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2019-06-03-grammarly-in-code/index.html</guid>
    <enclosure url="https://znck.dev/_assets/screenshot-ext-Ckxyxl0T.png" type="image/png" length="692624"/>
  </item>
  <item>
    <title>Comments in Code</title>
    <link>https://znck.dev/articles/2019-05-26-comments-in-code/index.html</link>
    <description>
      <![CDATA[
        So one more pull request got rejected for having a comment; "Good code is self-documenting.", said the reviewer.
      ]]>
    </description>
    <pubDate>Sun, 26 May 2019 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2019-05-26-comments-in-code/index.html</guid>
    <enclosure url="https://znck.dev/_assets/doc-comment-C4Pd9mxy.png" type="image/png" length="113857"/>
  </item>
  <item>
    <title>Running an awesome conference</title>
    <link>https://znck.dev/articles/2019-05-20-awesomeconf/index.html</link>
    <description>
      <![CDATA[
        I love attending conferences. For inspiring talks, for making new friends and meeting old friends, or for learning new things, conferences have been influential in my journey as a developer. I like many conferences, but I want to be in every vue conference. If you been to a vue Conference, then you know that there’s something different about it. The environment is so welcoming and friendly. Sad! I have to travel across the world to be in one. I have longed to see a vue conference in India, my home, for a long time now.
      ]]>
    </description>
    <pubDate>Mon, 20 May 2019 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2019-05-20-awesomeconf/index.html</guid>
    <enclosure url="https://znck.dev/_assets/ac-standee-BKyjrjYJ.jpg" type="image/jpeg" length="185818"/>
  </item>
  <item>
    <title>Type Vuex without TypeScript</title>
    <link>https://znck.dev/articles/2018-11-20-type-vuex/index.html</link>
    <description>
      <![CDATA[
        A practical guide for type checking vuex modules written in JS and getting things done.
      ]]>
    </description>
    <pubDate>Tue, 20 Nov 2018 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2018-11-20-type-vuex/index.html</guid>
    <enclosure url="https://znck.dev/_assets/1-BnqozjI5.png" type="image/png" length="146233"/>
  </item>
  <item>
    <title>Type Vue without TypeScript</title>
    <link>https://znck.dev/articles/2018-11-11-type-vue/index.html</link>
    <description>
      <![CDATA[
        A practical guide for type checking vue components written in JS and getting things done.
      ]]>
    </description>
    <pubDate>Sun, 11 Nov 2018 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2018-11-11-type-vue/index.html</guid>
    <enclosure url="https://znck.dev/_assets/8-DFrj1CFY.png" type="image/png" length="61740"/>
  </item>
  <item>
    <title>Accessible Components: Test Driven Approach</title>
    <link>https://znck.dev/articles/2017-11-29-accessible-components/index.html</link>
    <description>
      <![CDATA[
        The web is undoubtedly the most vital resource today. Modern websites are built-in small building blocks; components. Practices from test-driven software development have employed to automate the correctness of these building blocks.
      ]]>
    </description>
    <pubDate>Wed, 29 Nov 2017 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2017-11-29-accessible-components/index.html</guid>
    
  </item>
  <item>
    <title>Provide/Inject in Vue 2.2</title>
    <link>https://znck.dev/articles/2017-03-10-provide-inject/index.html</link>
    <description>
      <![CDATA[
        The Initial D release of Vue have some amazing new features, including improved server side rendering, v-model customization, better error handling, provide & inject pair and many other small improvements.
      ]]>
    </description>
    <pubDate>Fri, 10 Mar 2017 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2017-03-10-provide-inject/index.html</guid>
    
  </item>
  <item>
    <title>Fiddle with Vue.js</title>
    <link>https://znck.dev/articles/2017-03-05-fiddle-with-vue/index.html</link>
    <description>
      <![CDATA[
        If you’ve created an issue on Vue.js repository for the first time then there is high probability that you skipped reading the contribution guidelines. By doing so you’ve created an issue that does not tell maintainers a thing and helps nobody.
Next, you would be hit with a template response and your issue would be labelled need repro.
      ]]>
    </description>
    <pubDate>Sun, 05 Mar 2017 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2017-03-05-fiddle-with-vue/index.html</guid>
    
  </item>
  <item>
    <title>First Day in Vue.js</title>
    <link>https://znck.dev/articles/2017-03-03-first-day/index.html</link>
    <description>
      <![CDATA[
        Back in college, junior year, we were exploring our entrepreneurial skills. I started a product development startup with couple of friends. We’re supposed to build iOS applications but some how we ended building websites.
      ]]>
    </description>
    <pubDate>Fri, 03 Mar 2017 00:00:00 GMT</pubDate>
    <guid isPermaLink="true">https://znck.dev/articles/2017-03-03-first-day/index.html</guid>
    <enclosure url="https://znck.dev/_assets/first-day-screenshot-CSbNDhqH.png" type="image/png" length="127785"/>
  </item>
</channel>
</rss>
