About Me
With over 14 years of experience as a full-stack developer, I've had the opportunity to spearhead project teams at tech startups in Vietnam, Thailand, Japan, and Singapore. Additionally, I have worked as a freelance engineer for various companies based in Asia Pacific, Europe, and North America.
Currently, I serve as a Senior Full Stack Software Engineer at ACX, where I focus on developing blockchain-based carbon exchange platforms and innovative solutions using TypeScript, Node.js, and React.
Featured Projects
Open source projects and tools I've created
zed-101-setup
Your ultimate guide to setting up Zed with Vim mode, tailored settings, and key bindings for a seamless coding experience
next-swagger-doc
This package reads your JSDoc-annotated source code on NextJS API route and generates an OpenAPI (Swagger) specification.
typescript-tips
A curated list of awesome 🔥 TypeScript Tips 🔥
dapp-starter
Opinionated Dapp Starter Template provides a solid foundation for building Ethereum-based applications. It incorporates various tools and frameworks such as React, Next.js, Hardhat, TypeChain, web3-react, daisyUI Tailwind CSS Components, and OpenZeppelin.
next-app-starter
Another awesome starter for your app base on nextjs + tailwind + react-query + zod + react-hook-form + next-auth + jotai
hurl.nvim
Hurl.nvim is a Neovim plugin designed to run HTTP requests directly from `.hurl` files. Elevate your API development workflow by executing and viewing responses without leaving your editor.
VS Code Extensions
Tools I've built to improve developer experience
vscode-hurl-runner
Hurl Runner is a VS Code extension designed to run HTTP requests directly from `.hurl` files.
vscode-like-pro
Make your VSCode Awesome! Minimalist, Productive, and Performance.
vscode-settings-cycler
VSCode Settings Cycler
vscode-seal-code
Smart Code Review with AI-Powered Insights
vscode-mux
Open VS Code terminals inside tmux or zellij
vs-code-preset
Easy to quickly enable/disable VS Code extensions base on your preset
Neovim Plugins
Lua plugins to supercharge your Neovim workflow
lazy-nvim-ide
My 💤 LazyVim IDE config for Neovim
tiny-nvim
Slim Neovim config for 0.11+ with minimal plugins.
ts-inlay-hints
A guide on how to utilize TypeScript inlay hints in VS Code / Neovim with the TypeScript Language Server
my-nvim-ide
My personal neovim configuration.
typecheck.nvim
A Neovim plugin for seamless TypeScript type checking.
nvim-for-webdev
Starter Template for Web Developers
quick-code-runner.nvim
A simple and efficient code runner for Neovim.
spinner.nvim
spinner.nvim is a single file, no-dependency plugin for Neovim
learn-vim-with-vscode
This project aims to guide you through setting up and learning Vim within Visual Studio Code using the VSCodeVim and VSCode-Neovim extensions.
Latest Videos
Loading...
Loading videos...
Loading videos...
Loading videos...
Loading videos...
Loading videos...
Loading videos...
Latest Blog Posts
Guides, TILs, and tutorials

#TIL 2 - Create and apply git patch from a commit hash
Port commits between branches with git patch
Aug 12, 2020

#TIL 1 - Git Rebase Interactive
Clean up git history before PR
Aug 11, 2020

How to use custom element with NextJS/React
Use lite-youtube-embed with Next.js dynamic import
Sep 7, 2021

New Web APP CLI
React app generator built on Vite
May 30, 2021

React Hook - Use wait for transaction hash
Poll ETH transaction status in React
Apr 30, 2021
Reload page from iframe with cross-domain support
Trigger parent page reload from iframe
Sep 10, 2021