Hi, I'm Chinh.
RSS FeedI'm a full-stack engineer in Hanoi. I have worked at Stringee since 2019, on communication APIs and the StringeeX contact center, and on Cogover since 2024.
Here I write about the real work of building software: decisions, mistakes, and what customers and other engineers teach me.
Projects
Cogover
Front-end Engineer · 2024 – now · ActiveA low-code platform for running a business, where people and AI work together. I work on its web app and own the billing and subscription module.
React · TypeScript · Vite Module Federation · Next.js
Stringee
Senior Full-stack Engineer · 2019 – now · ActiveCommunication APIs for voice, video, SMS and chat, and the StringeeX omnichannel contact center. I have been a full-stack engineer there since 2019.
React · Vue · PHP · Go · MySQL
Featured
How to move a static site from Netlify to Cloudflare Workers without breaking old URLs
Serve a static site as Workers static assets, keep every old URL with a _redirects file and a test that fails when a redirect goes missing, then switch the domain and check it with curl.
Recent Posts
How a dotfiles auto-commit deleted three of my coding agents' rules, and the guard that blocks it now
On 23 September 2026 a 15-minute auto-commit pushed a stale copy of my agents' rule folder: 3 of 28 rules deleted, 12 rolled back. A guard now runs before every auto-commit; a replay of the failure prints BLOCKED and exits 1.
Does a Simplified Technical English prompt make LLM output shorter? Five runs each
Asking Claude Sonnet to write 80% of the way to ASD-STE100 cut words per sentence from 12.0 to 8.5 over five runs each. It did not shorten the answers: 328 prose words against 312. One earlier run had shown 20% fewer.
How to check that PHP is really patched for PHP2Shell when the version number does not change
A backported PHP2Shell fix keeps the old PHP version, so php -v proves nothing. Grep the binary for a string only the fix adds, then check that no running PHP process still uses the old, deleted binary.
How to make Claude Code follow a rule: a PreToolUse hook that refused git commit -a 40 times
A 30-line PreToolUse hook refuses git commit -a and names the safe command. From 15 to 26 October 2026 agents tried it 40 times; the hook refused all 40, and 36 times the agent's next command staged named files.
File Permissions in Linux/Unix: How to translate them?
In this tutorial, I'll show you how I learn to translate file permissions in Linux.