vi

Khương · Hanoi

SEO-ready Web design
fast pages, custom interfaces

I write WordPress themes, content management systems and static Next.js sites for businesses in Vietnam and abroad.

13+
Years of experience
99+
Projects delivered
30+
Projects in production
50+
Clients

projects

Featured projects

view all →

blog

Latest posts

all posts →
A memory gauge window where the free RAM bar is still long and the compressor size bar is short, while the gradient bar for compressor page count has hit the limit line

A Mac with 65% RAM free nearly panicked: the compressor, IOSurface and Playwright's WebKit

A 32 GB Mac Studio panicked with 100% of compressed pages limit, then came close to a second panic that evening while RAM still showed 65% free. The page count in the compressor had filled up, and the culprit was IOSurface that Playwright WebKit left in the kernel.

Published
read more →
An assembly window on the left passes through an oracle gate in the middle and becomes a new code window on the right, while a broken version is stopped in front of the gate

REA: letting an agent reverse engineer software, then testing the oracle too

REA lets a coding agent read a program that has no source, down to machine code, then rebuild that feature in its own code. Whether the rebuild is right is up to the oracle, and the oracle is code too, with its own bugs.

Published
read more →
A ranking panel of ten horizontal bars getting shorter, the first filled with a blue-to-indigo gradient and the other nine in gray

Top 10 Claude Code skills by GitHub stars: what each one does and which ones overlap

The ten Claude Code skill sets with the most GitHub stars on 29 Oct 2026: Superpowers, Matt Pocock Skills, Karpathy Skills, Anthropic Skills, Ponytail, UI UX Pro Max, Graphify, Caveman, Agent Skills, Taste Skill. Each one with its install command, what it does and where it overlaps with another set.

Published
read more →
The out/ folder going straight to the Cloudflare edge network, next to a crossed-out VPS running nginx

Dropping the server: moving a static Next.js site to Cloudflare Workers Static Assets

This site is only HTML, JS and images, yet it used to live on a 2 GB RAM VPS shared with about 28 other sites. How I moved it to Workers Static Assets: translating the nginx config into _redirects and _headers, why requests do not count against the Free plan limit, and two places I tripped after the move.

Published
read more →
A window with a gauge for the data.kalloc.1024 zone filling up past each warning mark toward the limit line

Kernel panic data.kalloc.1024 on a Mac running many Claude Code sessions

A 32 GB Mac Studio running about 20 Claude Code sessions rebooted itself five times because the kernel zone data.kalloc.1024 leaked to about 20 GB. How to watch it with zprint, why the npm install leaks faster, and the three steps that stopped it.

Published
read more →
Claude Code in the middle, linked to NotebookLM on the left by a dashed line labeled reverse-engineer and to Obsidian on the right by a solid line labeled MCP

Claude Code + NotebookLM + Obsidian: a research pipeline, and the half of the bridge that is unofficial

How to combine Claude Code, NotebookLM and Obsidian into a research pipeline: which skills already exist, why NotebookLM has no API for personal accounts, and the price of wiring these three tools together.

Published
read more →
A circle of five nodes, discovery, handoff, verification, persistence and scheduling, with the verification node lit in the accent color and a gate cutting across the circle

Loop engineering: stop prompting the agent, design the loop that prompts it

Building a loop for an agent now takes fifteen minutes. The hard part is putting something inside it that dares to say "no". The five moves of one pass, five ways a loop fails, and the real loop on this site, which is halfway there.

Published
read more →
A current pointer switching from the old release to the one just built, with three release boxes side by side

Stop committing out/: a CI/CD pipeline that builds static files on the server

29 of the 51 commits in this repo touched the build output folder. How I dropped it for good: a self-hosted runner that builds on the server, a publish that is one symlink swap, a Cloudflare purge, and three bash traps that only showed up under test.

Published
read more →
A terminal window running agy to select the Gemini 3.6 Flash model, next to a figure showing 17% fewer output tokens

Gemini 3.6 Flash on Antigravity CLI: 17% fewer output tokens

Google replaced Gemini CLI with Antigravity CLI, and 3.6 Flash is the model worth making the default in the terminal. How to pick a model with agy, run it headless, and work out the cost of one agent run.

Published
read more →
A grid of Hy3's 192 experts with 8 lit up, showing 295B parameters of which only 21B are activated per token

Tencent's Hy3: a 295B model that runs at the cost of a 21B one

Hy3 has 295 billion parameters, but each token passes through only 21 billion of them. The MoE architecture, its benchmark scores next to GLM-5.2, the price once the free tier is gone, and which jobs to give it.

Published
read more →

Have a project you need built?

A new website, an upgrade to an old system, or an idea that has not taken shape yet. Tell me about it.

Send me an e-mail