# Kunjan Dhungana Self-taught software engineer from Nepal writing about TypeScript, runtimes, developer tooling, and maintainable systems. ## Pages - [Home](/) — Landing page with work, side quest, and featured song - [Blogs](/blogs) — Writing on TypeScript, runtimes, developer tooling, and maintainable systems - [Projects](/projects) — Open source projects and tools - [Gallery](/gallery) — Photographs - [Wall of Fame](/wall-of-fame) — Achievements and milestones ## Blog Posts - [Why I Built @neplex/vectorizer](/blogs/why-i-built-neplex-vectorizer) — I needed to convert raster images to SVG programmatically. No existing Node.js library did exactly what I wanted, so I wrote one on top of VTracer using napi-rs. - [I added `sfw` to my package manager commands after the recent npm supply chain mess](/blogs/I-added-sfw-to-my-package-manager-commands-after-the-recent-npm-supply-chain-mess) — 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. - [Using Bitfields for Permissions and Feature Flags](/blogs/bitfields-permissions-feature-flags) — Learn how to use bitfields for efficient permission systems and feature flags with TypeScript - [Building Recommendation Systems with Collaborative Filtering](/blogs/collaborative-filtering-recommendation-systems) — Learn the basics of collaborative filtering and implement simple recommendation systems using TypeScript - [Understanding Next.js after() function and implementing it in Express.js](/blogs/implementing-nextjs-after-function) — Learn how Next.js after() function works and how to implement a similar pattern in Express.js applications - [Automated Audit Trail in Prisma with AsyncLocalStorage](/blogs/prisma-automated-audit-trail) — Learn how to implement automated audit trails in Prisma using AsyncLocalStorage for user identification and automatic logging of CUD operations - [Understanding and Implementing Next.js "use cache" Directive: A Deep Dive](/blogs/how-does-nextjs-use-cache-work) — A comprehensive guide to understanding how the "use cache" directive in Next.js works, with a step-by-step implementation from scratch. ## Gallery - [Fog](/gallery/fog) - [Khwopa 01](/gallery/khwopa-01) - [Khwopa 02](/gallery/khwopa-02) - [Macro](/gallery/macro) - [Marbal Dada 01](/gallery/marbal-dada-01) - [Marbal Dada 02](/gallery/marbal-dada-02) - [Moon](/gallery/moon) - [Night Sky](/gallery/night-sky) - [Sunset](/gallery/sunset)