<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Rahul Kadyan</title>
  <link href="https://znck.dev/atom.xml" rel="self"/>
  <link href="https://znck.dev/"/>
  <id>https://znck.dev/</id>
  <updated>2026-03-18T22:02:10.801Z</updated>
  <author>
    <name>Rahul Kadyan</name>
  </author>
  <subtitle>Software Engineer @ Superhuman</subtitle>
  <entry>
    <title>Project Hail Mary</title>
    <link href="https://znck.dev/articles/2026-03-18-project-hail-mary/index.html"/>
    <id>https://znck.dev/articles/2026-03-18-project-hail-mary/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![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.
      
      ]]>
    </summary>
    <published>2026-03-18T00:00:00.000Z</published>
    
  </entry>
  <entry>
    <title>The Ability to Be Wrong Cheaply</title>
    <link href="https://znck.dev/articles/2026-03-05-the-ability-to-be-wrong-cheaply/index.html"/>
    <id>https://znck.dev/articles/2026-03-05-the-ability-to-be-wrong-cheaply/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![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.
      
      ]]>
    </summary>
    <published>2026-03-05T00:00:00.000Z</published>
    
  </entry>
  <entry>
    <title>Stepping Away from the Terminal</title>
    <link href="https://znck.dev/articles/2026-03-04-stepping-away-from-the-terminal/index.html"/>
    <id>https://znck.dev/articles/2026-03-04-stepping-away-from-the-terminal/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![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.
      
      ]]>
    </summary>
    <published>2026-03-04T00:00:00.000Z</published>
    
  </entry>
  <entry>
    <title>What Building AI Agents Taught Me</title>
    <link href="https://znck.dev/articles/2026-02-27-what-building-ai-agents-taught-me/index.html"/>
    <id>https://znck.dev/articles/2026-02-27-what-building-ai-agents-taught-me/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![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.
      
      ]]>
    </summary>
    <published>2026-02-27T00:00:00.000Z</published>
    
  </entry>
  <entry>
    <title>Designing a Desktop Overlay Platform</title>
    <link href="https://znck.dev/articles/2026-02-27-designing-a-desktop-overlay-platform/index.html"/>
    <id>https://znck.dev/articles/2026-02-27-designing-a-desktop-overlay-platform/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![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.
      
      ]]>
    </summary>
    <published>2026-02-27T00:00:00.000Z</published>
    
  </entry>
  <entry>
    <title>Taming Code Generation: An Exploration in Scaling Myself</title>
    <link href="https://znck.dev/articles/2026-02-02-taming-code-generation/index.html"/>
    <id>https://znck.dev/articles/2026-02-02-taming-code-generation/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![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.
      
      ]]>
    </summary>
    <published>2026-02-02T00:00:00.000Z</published>
    
  </entry>
  <entry>
    <title>Shipping "Books at Home" in Two Days</title>
    <link href="https://znck.dev/articles/2026-01-12-shipping-books-at-home-in-two-days/index.html"/>
    <id>https://znck.dev/articles/2026-01-12-shipping-books-at-home-in-two-days/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![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.
      
      ]]>
    </summary>
    <published>2026-01-12T00:00:00.000Z</published>
    
  </entry>
  <entry>
    <title>Small Things Like These</title>
    <link href="https://znck.dev/articles/2026-01-04-small-things-like-these/index.html"/>
    <id>https://znck.dev/articles/2026-01-04-small-things-like-these/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![CDATA[
      I just finished Claire Keegan's Small Things Like These, and I'm still sitting with the weight of it.
      <img src="https://znck.dev/_assets/2026-01-small-things-town-DN_1Erad.png" alt="Small Things Like These" />
      ]]>
    </summary>
    <published>2026-01-04T00:00:00.000Z</published>
    <link rel="enclosure" href="https://znck.dev/_assets/2026-01-small-things-town-DN_1Erad.png" type="image/png" length="3672975"/>
  </entry>
  <entry>
    <title>A No‑Fuss Option Type for TypeScript</title>
    <link href="https://znck.dev/articles/2025-11-23-simple-option-type/index.html"/>
    <id>https://znck.dev/articles/2025-11-23-simple-option-type/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![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.
      
      ]]>
    </summary>
    <published>2025-11-23T00:00:00.000Z</published>
    
  </entry>
  <entry>
    <title>Designing a result type that feels native in TypeScript</title>
    <link href="https://znck.dev/articles/2025-11-22-designing-a-result-type/index.html"/>
    <id>https://znck.dev/articles/2025-11-22-designing-a-result-type/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![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.
      
      ]]>
    </summary>
    <published>2025-11-22T00:00:00.000Z</published>
    
  </entry>
  <entry>
    <title>A Tale of Two Monorepos</title>
    <link href="https://znck.dev/articles/2025-07-16-a-tale-of-two-monorepos/index.html"/>
    <id>https://znck.dev/articles/2025-07-16-a-tale-of-two-monorepos/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![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.
      
      ]]>
    </summary>
    <published>2025-07-16T00:00:00.000Z</published>
    
  </entry>
  <entry>
    <title>Zero Config Approach</title>
    <link href="https://znck.dev/articles/2025-07-15-zero-config-approach/index.html"/>
    <id>https://znck.dev/articles/2025-07-15-zero-config-approach/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![CDATA[
      Every monorepo starts out clean. A few packages. A handful of configs. Nothing too hard to manage. But scale changes everything.
      
      ]]>
    </summary>
    <published>2025-07-15T00:00:00.000Z</published>
    
  </entry>
  <entry>
    <title>Reclaim Toolchain Ownership</title>
    <link href="https://znck.dev/articles/2025-07-14-reclaim-toolchain-ownership/index.html"/>
    <id>https://znck.dev/articles/2025-07-14-reclaim-toolchain-ownership/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![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.
      
      ]]>
    </summary>
    <published>2025-07-14T00:00:00.000Z</published>
    
  </entry>
  <entry>
    <title>Single Version Policy</title>
    <link href="https://znck.dev/articles/2025-07-11-single-version-policy/index.html"/>
    <id>https://znck.dev/articles/2025-07-11-single-version-policy/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![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."
      
      ]]>
    </summary>
    <published>2025-07-11T00:00:00.000Z</published>
    
  </entry>
  <entry>
    <title>Before the Coffee Gets Cold</title>
    <link href="https://znck.dev/articles/2025-07-07-before-the-coffee-gets-cold/index.html"/>
    <id>https://znck.dev/articles/2025-07-07-before-the-coffee-gets-cold/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![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.
      
      ]]>
    </summary>
    <published>2025-07-07T00:00:00.000Z</published>
    
  </entry>
  <entry>
    <title>Package-First Philosophy</title>
    <link href="https://znck.dev/articles/2025-07-02-package-first-philosophy/index.html"/>
    <id>https://znck.dev/articles/2025-07-02-package-first-philosophy/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![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.
      
      ]]>
    </summary>
    <published>2025-07-02T00:00:00.000Z</published>
    
  </entry>
  <entry>
    <title>Negative feedback comes from a good place</title>
    <link href="https://znck.dev/articles/2020-01-14-appreciate-feedback/index.html"/>
    <id>https://znck.dev/articles/2020-01-14-appreciate-feedback/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![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.
      
      ]]>
    </summary>
    <published>2020-01-14T00:00:00.000Z</published>
    
  </entry>
  <entry>
    <title>Shipping Web Components with Vue</title>
    <link href="https://znck.dev/articles/2019-11-09-shipping-web-components-with-vue/index.html"/>
    <id>https://znck.dev/articles/2019-11-09-shipping-web-components-with-vue/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![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.
      
      ]]>
    </summary>
    <published>2019-11-09T00:00:00.000Z</published>
    
  </entry>
  <entry>
    <title>Simple Hard Things</title>
    <link href="https://znck.dev/articles/2019-06-10-simple-hard-things/index.html"/>
    <id>https://znck.dev/articles/2019-06-10-simple-hard-things/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![CDATA[
      Simple things are easy; everyone says so. However, in reality, it may not be so.
      <img src="https://znck.dev/_assets/david-van-dijk-255503-unsplash-DuPnNUrR.jpg" alt="Simple Hard Things" />
      ]]>
    </summary>
    <published>2019-06-10T00:00:00.000Z</published>
    <link rel="enclosure" href="https://znck.dev/_assets/david-van-dijk-255503-unsplash-DuPnNUrR.jpg" type="image/jpeg" length="154056"/>
  </entry>
  <entry>
    <title>Finally some colors in my life</title>
    <link href="https://znck.dev/articles/2019-06-03-finally-some-colors/index.html"/>
    <id>https://znck.dev/articles/2019-06-03-finally-some-colors/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![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!".
      <img src="https://znck.dev/_assets/prism-Da-XBeii.png" alt="Finally some colors in my life" />
      ]]>
    </summary>
    <published>2019-06-03T00:00:00.000Z</published>
    <link rel="enclosure" href="https://znck.dev/_assets/prism-Da-XBeii.png" type="image/png" length="36819"/>
  </entry>
  <entry>
    <title>Grammarly in Code</title>
    <link href="https://znck.dev/articles/2019-06-03-grammarly-in-code/index.html"/>
    <id>https://znck.dev/articles/2019-06-03-grammarly-in-code/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![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 <span title="VS Code">code</span>. 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?
      <img src="https://znck.dev/_assets/screenshot-ext-Ckxyxl0T.png" alt="Grammarly in Code" />
      ]]>
    </summary>
    <published>2019-06-03T00:00:00.000Z</published>
    <link rel="enclosure" href="https://znck.dev/_assets/screenshot-ext-Ckxyxl0T.png" type="image/png" length="692624"/>
  </entry>
  <entry>
    <title>Comments in Code</title>
    <link href="https://znck.dev/articles/2019-05-26-comments-in-code/index.html"/>
    <id>https://znck.dev/articles/2019-05-26-comments-in-code/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![CDATA[
      So one more pull request got rejected for having a comment; "Good code is self-documenting.", said the reviewer.
      <img src="https://znck.dev/_assets/doc-comment-C4Pd9mxy.png" alt="Comments in Code" />
      ]]>
    </summary>
    <published>2019-05-26T00:00:00.000Z</published>
    <link rel="enclosure" href="https://znck.dev/_assets/doc-comment-C4Pd9mxy.png" type="image/png" length="113857"/>
  </entry>
  <entry>
    <title>Running an awesome conference</title>
    <link href="https://znck.dev/articles/2019-05-20-awesomeconf/index.html"/>
    <id>https://znck.dev/articles/2019-05-20-awesomeconf/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![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.
      <img src="https://znck.dev/_assets/ac-standee-BKyjrjYJ.jpg" alt="Running an awesome conference" />
      ]]>
    </summary>
    <published>2019-05-20T00:00:00.000Z</published>
    <link rel="enclosure" href="https://znck.dev/_assets/ac-standee-BKyjrjYJ.jpg" type="image/jpeg" length="185818"/>
  </entry>
  <entry>
    <title>Type Vuex without TypeScript</title>
    <link href="https://znck.dev/articles/2018-11-20-type-vuex/index.html"/>
    <id>https://znck.dev/articles/2018-11-20-type-vuex/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![CDATA[
      A practical guide for type checking vuex modules written in JS and getting things done.
      <img src="https://znck.dev/_assets/1-BnqozjI5.png" alt="Type Vuex without TypeScript" />
      ]]>
    </summary>
    <published>2018-11-20T00:00:00.000Z</published>
    <link rel="enclosure" href="https://znck.dev/_assets/1-BnqozjI5.png" type="image/png" length="146233"/>
  </entry>
  <entry>
    <title>Type Vue without TypeScript</title>
    <link href="https://znck.dev/articles/2018-11-11-type-vue/index.html"/>
    <id>https://znck.dev/articles/2018-11-11-type-vue/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![CDATA[
      A practical guide for type checking vue components written in JS and getting things done.
      <img src="https://znck.dev/_assets/8-DFrj1CFY.png" alt="Type Vue without TypeScript" />
      ]]>
    </summary>
    <published>2018-11-11T00:00:00.000Z</published>
    <link rel="enclosure" href="https://znck.dev/_assets/8-DFrj1CFY.png" type="image/png" length="61740"/>
  </entry>
  <entry>
    <title>Accessible Components: Test Driven Approach</title>
    <link href="https://znck.dev/articles/2017-11-29-accessible-components/index.html"/>
    <id>https://znck.dev/articles/2017-11-29-accessible-components/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![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.
      
      ]]>
    </summary>
    <published>2017-11-29T00:00:00.000Z</published>
    
  </entry>
  <entry>
    <title>Provide/Inject in Vue 2.2</title>
    <link href="https://znck.dev/articles/2017-03-10-provide-inject/index.html"/>
    <id>https://znck.dev/articles/2017-03-10-provide-inject/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![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.
      
      ]]>
    </summary>
    <published>2017-03-10T00:00:00.000Z</published>
    
  </entry>
  <entry>
    <title>Fiddle with Vue.js</title>
    <link href="https://znck.dev/articles/2017-03-05-fiddle-with-vue/index.html"/>
    <id>https://znck.dev/articles/2017-03-05-fiddle-with-vue/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![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.
      
      ]]>
    </summary>
    <published>2017-03-05T00:00:00.000Z</published>
    
  </entry>
  <entry>
    <title>First Day in Vue.js</title>
    <link href="https://znck.dev/articles/2017-03-03-first-day/index.html"/>
    <id>https://znck.dev/articles/2017-03-03-first-day/index.html</id>
    <updated>2026-03-18T22:02:10.801Z</updated>
    <summary type="html">
      <![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.
      <img src="https://znck.dev/_assets/first-day-screenshot-CSbNDhqH.png" alt="First Day in Vue.js" />
      ]]>
    </summary>
    <published>2017-03-03T00:00:00.000Z</published>
    <link rel="enclosure" href="https://znck.dev/_assets/first-day-screenshot-CSbNDhqH.png" type="image/png" length="127785"/>
  </entry>
</feed>
