<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>loc. — Writing</title>
    <link>http://localhost:3000</link>
    <description>Essays on Claude skills, interface craft, and the small web.</description>
    <language>en</language>
    <lastBuildDate>Tue, 02 Jun 2026 00:00:00 GMT</lastBuildDate>
    <atom:link href="http://localhost:3000/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Flexbox: Hiểu Từ Bên Trong (Hướng Dẫn Tương Tác)</title>
      <link>http://localhost:3000/blog/flexbox-tuong-tac</link>
      <guid isPermaLink="true">http://localhost:3000/blog/flexbox-tuong-tac</guid>
      <pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate>
      <description>Hiểu sâu Flexbox qua demo tương tác: từ mental model, justify/align, grow/shrink đến gotcha thực chiến.</description>
    </item>
    <item>
      <title>Sliding window: the linear-time answer to subarray questions</title>
      <link>http://localhost:3000/blog/sliding-window-pattern</link>
      <guid isPermaLink="true">http://localhost:3000/blog/sliding-window-pattern</guid>
      <pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate>
      <description>A family of interview problems falls to the same pattern once you see it. The sliding window is that pattern.</description>
    </item>
    <item>
      <title>Next.js App Router caching: the four layers you need to know</title>
      <link>http://localhost:3000/blog/nextjs-caching-four-layers</link>
      <guid isPermaLink="true">http://localhost:3000/blog/nextjs-caching-four-layers</guid>
      <pubDate>Thu, 12 Mar 2026 00:00:00 GMT</pubDate>
      <description>Caching in the App Router is powerful and confusing in equal measure. Here is the map I wish I had from day one.</description>
    </item>
    <item>
      <title>Thinking in agents: from single prompts to multi-step workflows</title>
      <link>http://localhost:3000/blog/thinking-in-agents</link>
      <guid isPermaLink="true">http://localhost:3000/blog/thinking-in-agents</guid>
      <pubDate>Thu, 05 Mar 2026 00:00:00 GMT</pubDate>
      <description>When a single LLM call is not enough, you reach for an agent. Here is the mental model I use to design them without overengineering.</description>
    </item>
    <item>
      <title>Type narrowing is the skill, not the syntax</title>
      <link>http://localhost:3000/blog/type-narrowing-the-skill</link>
      <guid isPermaLink="true">http://localhost:3000/blog/type-narrowing-the-skill</guid>
      <pubDate>Wed, 25 Feb 2026 00:00:00 GMT</pubDate>
      <description>Learning TypeScript syntax is easy. Learning to narrow types correctly — and knowing when not to — takes longer.</description>
    </item>
    <item>
      <title>Stop configuring components, start composing them</title>
      <link>http://localhost:3000/blog/composition-over-configuration</link>
      <guid isPermaLink="true">http://localhost:3000/blog/composition-over-configuration</guid>
      <pubDate>Wed, 18 Feb 2026 00:00:00 GMT</pubDate>
      <description>The prop surface of a component is a bet on how it will be used. Composition-first design keeps that bet small.</description>
    </item>
    <item>
      <title>RAG in practice: what actually breaks at scale</title>
      <link>http://localhost:3000/blog/rag-in-practice</link>
      <guid isPermaLink="true">http://localhost:3000/blog/rag-in-practice</guid>
      <pubDate>Tue, 10 Feb 2026 00:00:00 GMT</pubDate>
      <description>Building a retrieval-augmented system is straightforward in a notebook. Keeping it honest in production is not.</description>
    </item>
    <item>
      <title>Two pointers: a pattern, not a trick</title>
      <link>http://localhost:3000/blog/two-pointers-pattern</link>
      <guid isPermaLink="true">http://localhost:3000/blog/two-pointers-pattern</guid>
      <pubDate>Thu, 05 Feb 2026 00:00:00 GMT</pubDate>
      <description>Once you see the two-pointer pattern clearly, you start seeing it everywhere. Here is how I think about it.</description>
    </item>
    <item>
      <title>How Server Components changed the way I fetch data</title>
      <link>http://localhost:3000/blog/server-components-data-fetching</link>
      <guid isPermaLink="true">http://localhost:3000/blog/server-components-data-fetching</guid>
      <pubDate>Wed, 28 Jan 2026 00:00:00 GMT</pubDate>
      <description>React Server Components are not just a performance optimization. They are a different mental model for where code lives.</description>
    </item>
    <item>
      <title>The rules of useEffect I wish I had earlier</title>
      <link>http://localhost:3000/blog/useeffect-rules</link>
      <guid isPermaLink="true">http://localhost:3000/blog/useeffect-rules</guid>
      <pubDate>Tue, 20 Jan 2026 00:00:00 GMT</pubDate>
      <description>useEffect is the most misunderstood hook in React. After shipping dozens of components that got it wrong, here is the mental model that fixed it.</description>
    </item>
    <item>
      <title>Building with Claude skills: a practical intro</title>
      <link>http://localhost:3000/blog/building-with-claude-skills</link>
      <guid isPermaLink="true">http://localhost:3000/blog/building-with-claude-skills</guid>
      <pubDate>Mon, 12 Jan 2026 00:00:00 GMT</pubDate>
      <description>Anthropic&apos;s Claude skills turn abstract &apos;prompts&apos; into reusable, reviewable units of behavior. Here&apos;s how I&apos;ve been shipping them at work without ceremony.</description>
    </item>
    <item>
      <title>The TypeScript utility types I reach for every week</title>
      <link>http://localhost:3000/blog/typescript-utility-types</link>
      <guid isPermaLink="true">http://localhost:3000/blog/typescript-utility-types</guid>
      <pubDate>Thu, 08 Jan 2026 00:00:00 GMT</pubDate>
      <description>TypeScript ships a standard library of type transformers. These are the five I use constantly and the one I keep forgetting.</description>
    </item>
    <item>
      <title>Shopify app accessibility: the color-contrast trap</title>
      <link>http://localhost:3000/blog/shopify-app-accessibility-contrast</link>
      <guid isPermaLink="true">http://localhost:3000/blog/shopify-app-accessibility-contrast</guid>
      <pubDate>Mon, 05 Jan 2026 00:00:00 GMT</pubDate>
      <description>App Bridge and Polaris give you a safety net, but merchants are going to override it. Designing a contrast-safe theming layer that still respects the brand.</description>
    </item>
    <item>
      <title>View transitions in practice (and where they still hurt)</title>
      <link>http://localhost:3000/blog/astro-view-transitions-in-practice</link>
      <guid isPermaLink="true">http://localhost:3000/blog/astro-view-transitions-in-practice</guid>
      <pubDate>Mon, 22 Dec 2025 00:00:00 GMT</pubDate>
      <description>The View Transitions API feels magical in a five-line demo. Here is what actually happens when you try to ship it on a real content site.</description>
    </item>
  </channel>
</rss>
