<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Khương - SEO-ready website design</title>
        <link>https://nguyentrungkhuong.com/en</link>
        <description>Website design and development for businesses: on-page SEO, fast loading, a custom look for each brand. 13+ years of experience.</description>
        <lastBuildDate>Wed, 04 Nov 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en-us</language>
        <image>
            <title>Khương - SEO-ready website design</title>
            <url>https://nguyentrungkhuong.com/favicon/android-chrome-512x512.png</url>
            <link>https://nguyentrungkhuong.com/en</link>
        </image>
        <copyright>All rights reserved 2026, Khương</copyright>
        <atom:link href="https://nguyentrungkhuong.com/feed/en/blog/feed.xml" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[A 12-month AI Engineer roadmap, no Computer Science degree required]]></title>
            <link>https://nguyentrungkhuong.com/en/ai-engineer-roadmap-2026</link>
            <guid>https://nguyentrungkhuong.com/en/ai-engineer-roadmap-2026</guid>
            <pubDate>Mon, 12 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[6 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.]]></description>
            <author>contact@nguyentrungkhuong.com (Khương)</author>
            <category>AI Engineer</category>
            <category>LLM</category>
            <category>RAG</category>
            <category>AI Agent</category>
            <enclosure url="https://nguyentrungkhuong.com/covers/ai-engineer-roadmap-2026.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Stop committing out/: a CI/CD pipeline that builds static files on the server]]></title>
            <link>https://nguyentrungkhuong.com/en/ci-cd-static-build-on-server</link>
            <guid>https://nguyentrungkhuong.com/en/ci-cd-static-build-on-server</guid>
            <pubDate>Thu, 23 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[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 3 bash traps that only showed up under test.]]></description>
            <author>contact@nguyentrungkhuong.com (Khương)</author>
            <category>CI/CD</category>
            <category>GitHub Actions</category>
            <category>Next.js 16</category>
            <category>Nginx</category>
            <category>Cloudflare</category>
            <enclosure url="https://nguyentrungkhuong.com/covers/ci-cd-static-build-on-server.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Claude Code + NotebookLM + Obsidian: a research pipeline, and the half of the bridge that is unofficial]]></title>
            <link>https://nguyentrungkhuong.com/en/claude-code-notebooklm-obsidian-research</link>
            <guid>https://nguyentrungkhuong.com/en/claude-code-notebooklm-obsidian-research</guid>
            <pubDate>Sat, 08 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[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 3 tools together.]]></description>
            <author>contact@nguyentrungkhuong.com (Khương)</author>
            <category>Claude Code</category>
            <category>NotebookLM</category>
            <category>Obsidian</category>
            <category>MCP</category>
            <category>AI Agent</category>
            <enclosure url="https://nguyentrungkhuong.com/covers/claude-code-notebooklm-obsidian-research.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Claude Code subagent cost: cut 40-78% per implementer call]]></title>
            <link>https://nguyentrungkhuong.com/en/claude-code-subagent-cost-optimization</link>
            <guid>https://nguyentrungkhuong.com/en/claude-code-subagent-cost-optimization</guid>
            <pubDate>Wed, 04 Nov 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[A Claude Code subagent loads tens of thousands of tokens of rules and skills at every start, then repeats them over dozens of turns. I measured it from transcripts, replaced it with a dedicated agent, and compared 3 real subagent-driven-development runs.]]></description>
            <author>contact@nguyentrungkhuong.com (Khương)</author>
            <category>Claude Code</category>
            <category>Subagent</category>
            <category>superpowers</category>
            <category>Token cost</category>
            <enclosure url="https://nguyentrungkhuong.com/covers/claude-code-subagent-cost-optimization.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Dropping the server: moving a static Next.js site to Cloudflare Workers Static Assets]]></title>
            <link>https://nguyentrungkhuong.com/en/cloudflare-workers-static-assets-replacing-nginx</link>
            <guid>https://nguyentrungkhuong.com/en/cloudflare-workers-static-assets-replacing-nginx</guid>
            <pubDate>Wed, 28 Oct 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[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 2 places I tripped after the move.]]></description>
            <author>contact@nguyentrungkhuong.com (Khương)</author>
            <category>Cloudflare Workers</category>
            <category>Cloudflare</category>
            <category>Next.js 16</category>
            <category>CI/CD</category>
            <category>GitHub Actions</category>
            <enclosure url="https://nguyentrungkhuong.com/covers/cloudflare-workers-static-assets-replacing-nginx.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[codebase-memory-mcp: a knowledge graph for your codebase, and what to watch for]]></title>
            <link>https://nguyentrungkhuong.com/en/codebase-memory-mcp</link>
            <guid>https://nguyentrungkhuong.com/en/codebase-memory-mcp</guid>
            <pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[One C binary indexes a whole repo into a knowledge graph, so the agent asks with a graph query instead of grepping file by file. How to install it, the 3 tools I use most, and 2 silent failures that leave the graph incomplete while it still reports indexed.]]></description>
            <author>contact@nguyentrungkhuong.com (Khương)</author>
            <category>codebase-memory-mcp</category>
            <category>MCP</category>
            <category>Claude Code</category>
            <category>Knowledge Graph</category>
            <category>AI Agent</category>
            <enclosure url="https://nguyentrungkhuong.com/covers/codebase-memory-mcp-en.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Gemini 3.6 Flash on Antigravity CLI: 17% fewer output tokens]]></title>
            <link>https://nguyentrungkhuong.com/en/gemini-3-6-flash-antigravity-cli</link>
            <guid>https://nguyentrungkhuong.com/en/gemini-3-6-flash-antigravity-cli</guid>
            <pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[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.]]></description>
            <author>contact@nguyentrungkhuong.com (Khương)</author>
            <category>Gemini 3.6 Flash</category>
            <category>Antigravity CLI</category>
            <category>AI Agent</category>
            <category>LLM</category>
            <enclosure url="https://nguyentrungkhuong.com/covers/gemini-3-6-flash-antigravity-cli-en.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Syncing KiotViet with WordPress: why I stopped calling the API directly]]></title>
            <link>https://nguyentrungkhuong.com/en/kiotviet-api-sync</link>
            <guid>https://nguyentrungkhuong.com/en/kiotviet-api-sync</guid>
            <pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[3 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.]]></description>
            <author>contact@nguyentrungkhuong.com (Khương)</author>
            <category>Node.js</category>
            <category>REST API</category>
            <category>MySQL</category>
            <enclosure url="https://nguyentrungkhuong.com/covers/kiotviet-api-sync.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Loop engineering: stop prompting the agent, design the loop that prompts it]]></title>
            <link>https://nguyentrungkhuong.com/en/loop-engineering-agent-loop-design</link>
            <guid>https://nguyentrungkhuong.com/en/loop-engineering-agent-loop-design</guid>
            <pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Building a loop for an agent now takes 15 minutes. The hard part is putting something inside it that dares to say "no". The 5 moves of one pass, 5 ways a loop fails, and the real loop on this site, which is halfway there.]]></description>
            <author>contact@nguyentrungkhuong.com (Khương)</author>
            <category>AI</category>
            <category>Agent</category>
            <category>Claude Code</category>
            <category>CI/CD</category>
            <enclosure url="https://nguyentrungkhuong.com/covers/loop-engineering-agent-loop-design.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Mac compressed pages jumped from 5% to 30% because of a log-wait loop]]></title>
            <link>https://nguyentrungkhuong.com/en/macos-compressed-pages-spike-agent-wait-loop</link>
            <guid>https://nguyentrungkhuong.com/en/macos-compressed-pages-spike-agent-wait-loop</guid>
            <pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[A Claude Code subagent waited on an e2e log with a loop that reads /dev/zero. One bash process grew to 47.7 GB and the Mac compressed page count jumped from 5% to 30% of its limit while RAM still showed 71% available.]]></description>
            <author>contact@nguyentrungkhuong.com (Khương)</author>
            <category>macOS</category>
            <category>Claude Code</category>
            <category>Kernel Panic</category>
            <category>Bash</category>
            <enclosure url="https://nguyentrungkhuong.com/covers/macos-compressed-pages-spike-agent-wait-loop.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Kernel panic data.kalloc.1024 on a Mac running many Claude Code sessions]]></title>
            <link>https://nguyentrungkhuong.com/en/macos-kernel-panic-kalloc-claude-code</link>
            <guid>https://nguyentrungkhuong.com/en/macos-kernel-panic-kalloc-claude-code</guid>
            <pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[A 32 GB Mac Studio running about 20 Claude Code sessions rebooted itself 5 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 3 steps that stopped it.]]></description>
            <author>contact@nguyentrungkhuong.com (Khương)</author>
            <category>Claude Code</category>
            <category>macOS</category>
            <category>Kernel Panic</category>
            <enclosure url="https://nguyentrungkhuong.com/covers/macos-kernel-panic-kalloc-claude-code.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[A Mac with 65% RAM free nearly panicked: the compressor, IOSurface and Playwright's WebKit]]></title>
            <link>https://nguyentrungkhuong.com/en/macos-panic-compressor-iosurface-playwright-webkit</link>
            <guid>https://nguyentrungkhuong.com/en/macos-panic-compressor-iosurface-playwright-webkit</guid>
            <pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[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.]]></description>
            <author>contact@nguyentrungkhuong.com (Khương)</author>
            <category>macOS</category>
            <category>Kernel Panic</category>
            <category>Playwright</category>
            <category>Claude Code</category>
            <enclosure url="https://nguyentrungkhuong.com/covers/macos-panic-compressor-iosurface-playwright-webkit.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[1 route, 10+ layouts: Next.js site architecture that runs entirely on Markdown]]></title>
            <link>https://nguyentrungkhuong.com/en/nextjs-markdown-site-architecture</link>
            <guid>https://nguyentrungkhuong.com/en/nextjs-markdown-site-architecture</guid>
            <pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[This whole site renders from exactly 1 route file. The pipeline behind it: frontmatter split into sections, computed fields, a layout registry and collections.]]></description>
            <author>contact@nguyentrungkhuong.com (Khương)</author>
            <category>Next.js 16</category>
            <category>MDX</category>
            <category>Tailwind CSS</category>
            <enclosure url="https://nguyentrungkhuong.com/covers/nextjs-markdown-site-architecture.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[REA: letting an agent do reverse engineering, then testing the oracle too]]></title>
            <link>https://nguyentrungkhuong.com/en/reverse-engineering-software-with-agents-rea</link>
            <guid>https://nguyentrungkhuong.com/en/reverse-engineering-software-with-agents-rea</guid>
            <pubDate>Thu, 29 Oct 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[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.]]></description>
            <author>contact@nguyentrungkhuong.com (Khương)</author>
            <category>AI</category>
            <category>Agent</category>
            <category>Claude Code</category>
            <category>Reverse engineering</category>
            <category>MCP</category>
            <enclosure url="https://nguyentrungkhuong.com/covers/reverse-engineering-software-with-agents-rea.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Tencent's Hy3: a 295B model that runs at the cost of a 21B one]]></title>
            <link>https://nguyentrungkhuong.com/en/tencent-hy3-review</link>
            <guid>https://nguyentrungkhuong.com/en/tencent-hy3-review</guid>
            <pubDate>Tue, 21 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[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.]]></description>
            <author>contact@nguyentrungkhuong.com (Khương)</author>
            <category>AI</category>
            <category>LLM</category>
            <category>Hy3</category>
            <enclosure url="https://nguyentrungkhuong.com/covers/tencent-hy3-review.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Top 10 Claude Code skills by GitHub stars: what each one does and which ones overlap]]></title>
            <link>https://nguyentrungkhuong.com/en/top-10-claude-code-skills</link>
            <guid>https://nguyentrungkhuong.com/en/top-10-claude-code-skills</guid>
            <pubDate>Thu, 29 Oct 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The 10 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.]]></description>
            <author>contact@nguyentrungkhuong.com (Khương)</author>
            <category>Claude Code</category>
            <category>Agent Skills</category>
            <category>AI Agent</category>
            <category>GitHub</category>
            <enclosure url="https://nguyentrungkhuong.com/covers/top-10-claude-code-skills.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Upgrading Next.js 15 to Next.js 16: Turbopack, static export and 3 snags]]></title>
            <link>https://nguyentrungkhuong.com/en/upgrading-website-to-nextjs-16</link>
            <guid>https://nguyentrungkhuong.com/en/upgrading-website-to-nextjs-16</guid>
            <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Notes from upgrading this site to Next.js 16: why I kept static export for Nginx, where Turbopack is stricter than webpack, and the 3 bugs that ate the most hours.]]></description>
            <author>contact@nguyentrungkhuong.com (Khương)</author>
            <category>Next.js 16</category>
            <category>Tailwind CSS</category>
            <category>Turbopack</category>
            <enclosure url="https://nguyentrungkhuong.com/covers/upgrading-website-to-nextjs-16.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Building my own uptime dashboard for 30 client websites]]></title>
            <link>https://nguyentrungkhuong.com/en/website-monitoring-dashboard</link>
            <guid>https://nguyentrungkhuong.com/en/website-monitoring-dashboard</guid>
            <pubDate>Sun, 10 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[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.]]></description>
            <author>contact@nguyentrungkhuong.com (Khương)</author>
            <category>Next.js</category>
            <category>Node.js</category>
            <category>Tailwind CSS</category>
            <enclosure url="https://nguyentrungkhuong.com/covers/website-monitoring-dashboard.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[WordPress PageSpeed optimization: what actually changed in 2026]]></title>
            <link>https://nguyentrungkhuong.com/en/wordpress-pagespeed-optimization</link>
            <guid>https://nguyentrungkhuong.com/en/wordpress-pagespeed-optimization</guid>
            <pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Google did change a few things in 2026, but not the Core Web Vitals thresholds that many articles claim. Here is what really changed, and the order of work for a WordPress website.]]></description>
            <author>contact@nguyentrungkhuong.com (Khương)</author>
            <category>WordPress</category>
            <category>Core Web Vitals</category>
            <category>Web performance</category>
            <enclosure url="https://nguyentrungkhuong.com/covers/wordpress-pagespeed-optimization.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Writing a good CLAUDE.md: 4 rule groups and the real limits of Claude Code]]></title>
            <link>https://nguyentrungkhuong.com/en/writing-a-good-claude-md</link>
            <guid>https://nguyentrungkhuong.com/en/writing-a-good-claude-md</guid>
            <pubDate>Tue, 03 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[CLAUDE.md works well when it is split into 4 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.]]></description>
            <author>contact@nguyentrungkhuong.com (Khương)</author>
            <category>Claude Code</category>
            <category>CLAUDE.md</category>
            <category>AI Agent</category>
            <category>LLM</category>
            <enclosure url="https://nguyentrungkhuong.com/covers/writing-a-good-claude-md.png" length="0" type="image/png"/>
        </item>
    </channel>
</rss>