<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Kunjan Dhungana</title>
  <subtitle>Self-taught software engineer from Nepal writing about TypeScript, runtimes, developer tooling, and maintainable systems.</subtitle>
  <link href="https://twlite.dev/blogs/feed.xml" rel="self"/>
  <link href="https://twlite.dev/blogs" rel="alternate"/>
  <updated>2026-05-24T00:00:00.000Z</updated>
  <id>https://twlite.dev/blogs</id>
<entry>
    <title>I added `sfw` to my package manager commands after the recent npm supply chain mess</title>
    <link href="https://twlite.dev/blogs/I-added-sfw-to-my-package-manager-commands-after-the-recent-npm-supply-chain-mess"/>
    <id>https://twlite.dev/blogs/I-added-sfw-to-my-package-manager-commands-after-the-recent-npm-supply-chain-mess</id>
    <published>2026-05-24T00:00:00.000Z</published>
    <updated>2026-05-24T00:00:00.000Z</updated>
    <summary type="html">A small setup I added after recent npm supply chain attacks made me realize how casually we execute untrusted install-time code on our machines.</summary>
    <author>
      <name>Kunjan Dhungana</name>
    </author>
    <category term="npm"/><category term="supply-chain-security"/><category term="cybersecurity"/><category term="package-managers"/><category term="socket-firewall"/><category term="socket.dev"/><category term="javascript"/><category term="nodejs"/>
  </entry>
<entry>
    <title>Using Bitfields for Permissions and Feature Flags</title>
    <link href="https://twlite.dev/blogs/bitfields-permissions-feature-flags"/>
    <id>https://twlite.dev/blogs/bitfields-permissions-feature-flags</id>
    <published>2025-09-03T00:00:00.000Z</published>
    <updated>2025-09-03T00:00:00.000Z</updated>
    <summary type="html">Learn how to use bitfields for efficient permission systems and feature flags with TypeScript</summary>
    <author>
      <name>Kunjan Dhungana</name>
    </author>
    
  </entry>
<entry>
    <title>Building Recommendation Systems with Collaborative Filtering</title>
    <link href="https://twlite.dev/blogs/collaborative-filtering-recommendation-systems"/>
    <id>https://twlite.dev/blogs/collaborative-filtering-recommendation-systems</id>
    <published>2025-08-26T00:00:00.000Z</published>
    <updated>2025-08-26T00:00:00.000Z</updated>
    <summary type="html">Learn the basics of collaborative filtering and implement simple recommendation systems using TypeScript</summary>
    <author>
      <name>Kunjan Dhungana</name>
    </author>
    
  </entry>
<entry>
    <title>Understanding Next.js after() function and implementing it in Express.js</title>
    <link href="https://twlite.dev/blogs/implementing-nextjs-after-function"/>
    <id>https://twlite.dev/blogs/implementing-nextjs-after-function</id>
    <published>2025-08-26T00:00:00.000Z</published>
    <updated>2025-08-26T00:00:00.000Z</updated>
    <summary type="html">Learn how Next.js after() function works and how to implement a similar pattern in Express.js applications</summary>
    <author>
      <name>Kunjan Dhungana</name>
    </author>
    
  </entry>
<entry>
    <title>Automated Audit Trail in Prisma with AsyncLocalStorage</title>
    <link href="https://twlite.dev/blogs/prisma-automated-audit-trail"/>
    <id>https://twlite.dev/blogs/prisma-automated-audit-trail</id>
    <published>2025-08-26T00:00:00.000Z</published>
    <updated>2025-08-26T00:00:00.000Z</updated>
    <summary type="html">Learn how to implement automated audit trails in Prisma using AsyncLocalStorage for user identification and automatic logging of CUD operations</summary>
    <author>
      <name>Kunjan Dhungana</name>
    </author>
    
  </entry>
<entry>
    <title>Understanding and Implementing Next.js &quot;use cache&quot; Directive: A Deep Dive</title>
    <link href="https://twlite.dev/blogs/how-does-nextjs-use-cache-work"/>
    <id>https://twlite.dev/blogs/how-does-nextjs-use-cache-work</id>
    <published>2025-05-19T00:00:00.000Z</published>
    <updated>2025-05-19T00:00:00.000Z</updated>
    <summary type="html">A comprehensive guide to understanding how the &quot;use cache&quot; directive in Next.js works, with a step-by-step implementation from scratch.</summary>
    <author>
      <name>Kunjan Dhungana</name>
    </author>
    <category term="nextjs"/><category term="react server components"/><category term="caching"/><category term="web development"/><category term="performance"/><category term="tutorial"/>
  </entry>
</feed>