<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>snomiao blog</title>
    <description>snomiao's personal blog</description>
    <link>https://blog.snomiao.com</link>
    <atom:link href="https://blog.snomiao.com/api/rss" rel="self" type="application/rss+xml" />
    
    <item>
      <title><![CDATA[Automating AI Coding Assistants in the Browser]]></title>
      <description><![CDATA[How copilot-continue.user.js keeps GitHub Copilot running unattended by automatically handling interruptions.]]></description>
      <link>https://blog.snomiao.com/en/blog/copilot-continue-browser-automation/</link>
      <guid>https://blog.snomiao.com/en/blog/copilot-continue-browser-automation/</guid>
      <pubDate>Mon, 02 Mar 2026 00:00:00 GMT</pubDate>
    </item>

    <item>
      <title><![CDATA[Smart Task Scheduling with CPU Monitoring]]></title>
      <description><![CDATA[How cpu-wait prevents system overload by running heavy tasks only when your machine has capacity.]]></description>
      <link>https://blog.snomiao.com/en/blog/cpu-wait-smart-scheduling/</link>
      <guid>https://blog.snomiao.com/en/blog/cpu-wait-smart-scheduling/</guid>
      <pubDate>Mon, 02 Mar 2026 00:00:00 GMT</pubDate>
    </item>

    <item>
      <title><![CDATA[Using GitHub as a Free Database]]></title>
      <description><![CDATA[How keyv-github turns any GitHub repository into a serverless key-value store - with zero infrastructure costs.]]></description>
      <link>https://blog.snomiao.com/en/blog/keyv-github-free-database/</link>
      <guid>https://blog.snomiao.com/en/blog/keyv-github-free-database/</guid>
      <pubDate>Mon, 02 Mar 2026 00:00:00 GMT</pubDate>
    </item>

    <item>
      <title><![CDATA[Decoding ANSI: Building a Terminal Output Processor]]></title>
      <description><![CDATA[How terminal-render parses escape sequences and control characters to extract clean text from raw terminal output.]]></description>
      <link>https://blog.snomiao.com/en/blog/terminal-render-ansi-processor/</link>
      <guid>https://blog.snomiao.com/en/blog/terminal-render-ansi-processor/</guid>
      <pubDate>Mon, 02 Mar 2026 00:00:00 GMT</pubDate>
    </item>

    <item>
      <title><![CDATA[The 'Yes Man' Pattern: Automating AI Coding Assistants]]></title>
      <description><![CDATA[How to run Claude, Copilot, Gemini, and other AI CLI tools hands-free with automatic prompt handling.]]></description>
      <link>https://blog.snomiao.com/en/blog/agent-yes-automating-ai-assistants/</link>
      <guid>https://blog.snomiao.com/en/blog/agent-yes-automating-ai-assistants/</guid>
      <pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate>
    </item>

    <item>
      <title><![CDATA[How I Turned Caps Lock Into a Productivity Superpower]]></title>
      <description><![CDATA[Transform the most useless key on your keyboard into a command center for mouse-free computing with CapsLockX.]]></description>
      <link>https://blog.snomiao.com/en/blog/capslockx-productivity-superpower/</link>
      <guid>https://blog.snomiao.com/en/blog/capslockx-productivity-superpower/</guid>
      <pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate>
    </item>

    <item>
      <title><![CDATA[Conflict-Free Sync: Building Offline-First Apps with CRDTs]]></title>
      <description><![CDATA[How to sync data across devices without conflicts using keyv-crdt - a practical CRDT implementation for JavaScript/TypeScript apps.]]></description>
      <link>https://blog.snomiao.com/en/blog/keyv-crdt-offline-first-sync/</link>
      <guid>https://blog.snomiao.com/en/blog/keyv-crdt-offline-first-sync/</guid>
      <pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate>
    </item>

    <item>
      <title><![CDATA[PHP's `or die()` in TypeScript (With Proper Type Narrowing)]]></title>
      <description><![CDATA[A tiny utility that brings PHP's inline error handling pattern to TypeScript - and makes the type system happy.]]></description>
      <link>https://blog.snomiao.com/en/blog/phpdie-typescript-error-handling/</link>
      <guid>https://blog.snomiao.com/en/blog/phpdie-typescript-error-handling/</guid>
      <pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate>
    </item>

    <item>
      <title><![CDATA[Building a Trilingual Input Method: Chinese, Japanese, and English in One Keyboard]]></title>
      <description><![CDATA[How I built a unified input method that lets you type Chinese (Pinyin + Wubi), Japanese (Romaji), and English simultaneously - without ever switching IME.]]></description>
      <link>https://blog.snomiao.com/en/blog/rime-trilingual-input-method/</link>
      <guid>https://blog.snomiao.com/en/blog/rime-trilingual-input-method/</guid>
      <pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate>
    </item>

    <item>
      <title><![CDATA[Beyond Promises: Stream Processing with the WebStreams API]]></title>
      <description><![CDATA[How sflow brings functional programming patterns to JavaScript streams - without the complexity of RxJS.]]></description>
      <link>https://blog.snomiao.com/en/blog/sflow-stream-processing-webstreams/</link>
      <guid>https://blog.snomiao.com/en/blog/sflow-stream-processing-webstreams/</guid>
      <pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate>
    </item>

    <item>
      <title><![CDATA[Hello World]]></title>
      <description><![CDATA[The first post on snomiao's blog.]]></description>
      <link>https://blog.snomiao.com/en/blog/hello-world/</link>
      <guid>https://blog.snomiao.com/en/blog/hello-world/</guid>
      <pubDate>Wed, 19 Feb 2025 00:00:00 GMT</pubDate>
    </item>
  </channel>
</rss>