blog
Blog
Notes on web development: Next.js, WordPress, performance, and the places I tripped up on real projects.
Building my own uptime dashboard for 30 client websites
Clients called to say their site was down before I knew. How I track uptime, response time and SSL expiry for 30 sites without producing a pile of junk alerts.
- Published
1 route, 10+ layouts: the architecture of a Next.js site run entirely on Markdown
This whole site renders from exactly 1 route file. The pipeline behind it: frontmatter split into sections, computed fields, a layout registry and collections.
- Published
Upgrading Next.js 15 to 16: Turbopack, static export and three snags
Notes from upgrading this site to Next.js 16: why I kept static export for Nginx, where Turbopack is stricter than webpack, and the three bugs that ate the most hours.
- Published
Syncing KiotViet with WordPress: why I stopped calling the API directly
Three retail websites called the KiotViet API straight from PHP and all hit the rate limit of the same account. How I moved the integration out into a Node.js service in the middle.
- Published
Writing a good CLAUDE.md: four rule groups and the real limits of Claude Code
CLAUDE.md works well when it is split into four clear groups: commands, rules, path-scoped architecture, and how to scale as the project grows. How to write each group within the real technical limits of Claude Code, with examples that run.
- Published
A 12-month roadmap to AI Engineer, no Computer Science degree required
Six phases, and each one ships something that runs: Python, LLM APIs, RAG, agents, evals and a portfolio. A roadmap for developers moving into AI, with a section on the Vietnamese job market.
- Published