Muhammad Zulfan Wahyudin

Blog

Thoughts on software engineering, open source, and projects I'm building.

Building a Production-Ready Frontend with Ant Design 6

A practical guide to setting up Ant Design 6 with React, TypeScript, and Vite — covering the new CSS variables architecture, semantic DOM, theming, forms, tables, and bundle optimization.

reactant-designdesign-systemtypescriptfrontend
TypeScript Generics Are Not Scary: Real-World Generic Components

From generic hooks to generic API clients — how infer, extends, and conditional types eliminate any in real code.

typescriptgenericsfrontendreactadvanced
Astro vs Next.js: Why Astro Wins for Content-First Websites

An honest comparison between Astro and Next.js for content-first sites — performance, architecture, developer experience, and when to choose which.

astronextjsfrontendweb-developmentcomparison
Ditch nvm: Manage Node.js Versions with Nix

Nix is not just a package manager or an OS. It is a better nvm — declarative, deterministic, and per-project Node.js versioning without shell hacks or manual switches.

nixnvmnodejsdevtoolsdeveloper-experience
Custom Hooks in React with TypeScript

How I structure reusable logic with custom hooks — from useDebounce to useLocalStorage.

reacttypescripthooks