Skip to main content

Design, build, and ship modern applications.

Notes on modern tech, developer tooling, system design, and cross-platform development, based on what i'm actually building and using.

This website has been migrated to Tanstack Router from Nextjs
April 23, 2026

After years with Next.js, I migrated my personal website. Here is what I found. Why I Moved From Next.js to TanStack Router.

Read article
Kanata as a Text Expander — Why I Stopped Installing Extra Tools
April 8, 2026

So I was typing my email address for the hundredth time this week. Actually, I'm not even exaggerating. Forms, git configs, `.env` files, slack messages — every…

Read article
Why `onClick={() => ref.current?.submit()}` Works but `onClick={ref.current?.submit}` Doesn’t in React
November 9, 2025

In React, the difference between these two lines might look small — but it hides a subtle and important detail about *when* and *how* your code runs. ```tsx //…

Read article
📘 TypeScript → Rust Migration Cheatsheet
August 21, 2025

## 1. Basics | Concept | TypeScript | Rust | Note | | -------- | ---------------…

Read article
Understanding isLoading vs isSubmitting in React Hook Form
July 18, 2025

When we work with forms in React using **React Hook Form (RHF)**, sometimes we get confused about `isLoading` and `isSubmitting`. These two are very useful, but…

Read article