<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Yingjie's Blog</title>
        <link>https://yingjiezhao.com/en/</link>
        <description>Thoughts on technology and life</description>
        <lastBuildDate>Thu, 06 Aug 2026 07:49:38 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>Yingjie's Blog</title>
            <url>https://yingjiezhao.com/assets/avatar.jpg</url>
            <link>https://yingjiezhao.com/en/</link>
        </image>
        <copyright>Copyright © 2026 Yingjie Zhao</copyright>
        <atom:link href="https://yingjiezhao.com/en/feed.xml" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[How I Built a Usage Circuit Breaker for Cloudflare Workers]]></title>
            <link>https://yingjiezhao.com/en/articles/Usage-Circuit-Breaker-for-Cloudflare-Workers/</link>
            <guid>https://yingjiezhao.com/en/articles/Usage-Circuit-Breaker-for-Cloudflare-Workers/</guid>
            <pubDate>Tue, 10 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Circuit breakers traditionally protect against downstream failures. But on serverless platforms with hard usage caps, the real threat is your own resource consumption. Here's how I built a self-protecting circuit breaker that monitors Cloudflare Workers plan limits and gracefully degrades before hitting the ceiling.<br><br><a href="https://yingjiezhao.com/en/articles/Usage-Circuit-Breaker-for-Cloudflare-Workers/">Read more</a>]]></description>
            <author>contact@yingjiezhao.com (Yingjie Zhao)</author>
        </item>
        <item>
            <title><![CDATA[Cross-Lingual News Dedup at $100/month: Why MinHash+LSH Fails and What Actually Works]]></title>
            <link>https://yingjiezhao.com/en/articles/Cross-Lingual-News-Dedup-at-100-Dollar-a-Month/</link>
            <guid>https://yingjiezhao.com/en/articles/Cross-Lingual-News-Dedup-at-100-Dollar-a-Month/</guid>
            <pubDate>Wed, 04 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[MinHash+LSH is the textbook answer for document deduplication. But when you aggregate news across 180+ sources in 17 languages, token-level shingles produce zero overlap between semantically identical articles. Here's how I solved cross-lingual dedup using multilingual embeddings, pgvector HNSW, and UnionFind — all running on Cloudflare Workers at $100/month.<br><br><a href="https://yingjiezhao.com/en/articles/Cross-Lingual-News-Dedup-at-100-Dollar-a-Month/">Read more</a>]]></description>
            <author>contact@yingjiezhao.com (Yingjie Zhao)</author>
        </item>
        <item>
            <title><![CDATA[Taming Sentry Noise in Cloudflare Workflows]]></title>
            <link>https://yingjiezhao.com/en/articles/Taming-Sentry-Noise-in-Cloudflare-Workflows/</link>
            <guid>https://yingjiezhao.com/en/articles/Taming-Sentry-Noise-in-Cloudflare-Workflows/</guid>
            <pubDate>Wed, 11 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[instrumentWorkflowWithSentry automatically reports every step retry to Sentry, flooding dashboards with false alarms. By reading the SDK source code, I discovered that mechanism.type can precisely distinguish automatic captures from manual reports, enabling beforeSend filtering to only report final failures.<br><br><a href="https://yingjiezhao.com/en/articles/Taming-Sentry-Noise-in-Cloudflare-Workflows/">Read more</a>]]></description>
            <author>contact@yingjiezhao.com (Yingjie Zhao)</author>
        </item>
        <item>
            <title><![CDATA[MCP Protocol Overview: Bridging AI Agents with the External World]]></title>
            <link>https://yingjiezhao.com/en/articles/MCP-Protocol-Overview/</link>
            <guid>https://yingjiezhao.com/en/articles/MCP-Protocol-Overview/</guid>
            <pubDate>Mon, 08 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[This article provides a comprehensive introduction to the MCP (Model Context Protocol), covering its core principles, Agent-MCP interaction mechanisms, and a comparative analysis of stdio and SSE transport protocols.<br><br><a href="https://yingjiezhao.com/en/articles/MCP-Protocol-Overview/">Read more</a>]]></description>
            <author>contact@yingjiezhao.com (Yingjie Zhao)</author>
        </item>
        <item>
            <title><![CDATA[From LLM to Agent: A Deep Dive into AI Agent Architecture Evolution]]></title>
            <link>https://yingjiezhao.com/en/articles/From-LLM-to-Agent-Architecture-Evolution/</link>
            <guid>https://yingjiezhao.com/en/articles/From-LLM-to-Agent-Architecture-Evolution/</guid>
            <pubDate>Thu, 27 Nov 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[This article systematically explores the three-generation architecture evolution from bare LLM to Workflow to Agent, deeply analyzing the core working principles of Agents, their relationship with RAG, whether model fine-tuning is needed, and demonstrates the practical value of Agents through industry cases like Manus.<br><br><a href="https://yingjiezhao.com/en/articles/From-LLM-to-Agent-Architecture-Evolution/">Read more</a>]]></description>
            <author>contact@yingjiezhao.com (Yingjie Zhao)</author>
        </item>
        <item>
            <title><![CDATA[Solving Markdown Newline Issues in LLM Stream Responses]]></title>
            <link>https://yingjiezhao.com/en/articles/Solving-Markdown-Newline-Issues-in-LLM-Stream-Responses/</link>
            <guid>https://yingjiezhao.com/en/articles/Solving-Markdown-Newline-Issues-in-LLM-Stream-Responses/</guid>
            <pubDate>Mon, 10 Mar 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[When developing applications integrated with Large Language Models (LLMs), streaming responses are a key technology for enhancing user experience. However, when LLMs return Markdown-formatted content through EventSource to the frontend, newline characters may be lost, causing Markdown rendering errors. This article analyzes the root cause of this problem and proposes an elegant solution—using custom placeholders to replace newlines, ensuring Markdown formatting is fully preserved during streaming transmission.<br><br><a href="https://yingjiezhao.com/en/articles/Solving-Markdown-Newline-Issues-in-LLM-Stream-Responses/">Read more</a>]]></description>
            <author>contact@yingjiezhao.com (Yingjie Zhao)</author>
        </item>
        <item>
            <title><![CDATA[Understanding Component Rendering Order in Next.js App Router]]></title>
            <link>https://yingjiezhao.com/en/articles/Understanding-Component-Rendering-Order-in-Next.js-App-Router/</link>
            <guid>https://yingjiezhao.com/en/articles/Understanding-Component-Rendering-Order-in-Next.js-App-Router/</guid>
            <pubDate>Tue, 25 Feb 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[In React application development, the top-down rendering pattern of component trees (parent components render before children) is a fundamental paradigm. However, when using Next.js App Router, developers may encounter a noteworthy phenomenon - **child components execute before parent components**. This counter-intuitive behavior can cause issues, particularly in permission validation and internationalization scenarios. This article analyzes this feature, demonstrates its behavior through real-world examples, explores the technical principles behind it, and provides practical solutions.<br><br><a href="https://yingjiezhao.com/en/articles/Understanding-Component-Rendering-Order-in-Next.js-App-Router/">Read more</a>]]></description>
            <author>contact@yingjiezhao.com (Yingjie Zhao)</author>
        </item>
        <item>
            <title><![CDATA[Simple RAG Implementation with LangChain]]></title>
            <link>https://yingjiezhao.com/en/articles/Simple-RAG-Implementation-with-LangChain/</link>
            <guid>https://yingjiezhao.com/en/articles/Simple-RAG-Implementation-with-LangChain/</guid>
            <pubDate>Thu, 23 Jan 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[This article introduces how to implement a simple RAG system using LangChain, covering key steps including document loading, splitting, vectorization, storage, retrieval, and prompt assembly. Through LangChain's modular design, you can easily build an efficient and reliable RAG system.<br><br><a href="https://yingjiezhao.com/en/articles/Simple-RAG-Implementation-with-LangChain/">Read more</a>]]></description>
            <author>contact@yingjiezhao.com (Yingjie Zhao)</author>
        </item>
        <item>
            <title><![CDATA[Understanding the Essence of RAG]]></title>
            <link>https://yingjiezhao.com/en/articles/Understanding-the-Essence-of-RAG/</link>
            <guid>https://yingjiezhao.com/en/articles/Understanding-the-Essence-of-RAG/</guid>
            <pubDate>Fri, 17 Jan 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[This article delves deep into the essence of RAG (Retrieval Augmented Generation), covering everything from basic concepts to practical implementations, including implementations using different frameworks like LangChain, LlamaIndex, and detailed examples of custom RAG, helping readers comprehensively understand this important AI architectural pattern.<br><br><a href="https://yingjiezhao.com/en/articles/Understanding-the-Essence-of-RAG/">Read more</a>]]></description>
            <author>contact@yingjiezhao.com (Yingjie Zhao)</author>
        </item>
        <item>
            <title><![CDATA[VitePress Sidebar Auto-generation Implementation]]></title>
            <link>https://yingjiezhao.com/en/articles/vitepress-sidebar-auto-generation/</link>
            <guid>https://yingjiezhao.com/en/articles/vitepress-sidebar-auto-generation/</guid>
            <pubDate>Mon, 06 Jan 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[When building a blog with VitePress, a common requirement is to automatically generate sidebar navigation based on articles. This article will detail how to implement a multilingual sidebar auto-generation tool with year-month grouping.<br><br><a href="https://yingjiezhao.com/en/articles/vitepress-sidebar-auto-generation/">Read more</a>]]></description>
            <author>contact@yingjiezhao.com (Yingjie Zhao)</author>
        </item>
        <item>
            <title><![CDATA[Implementing iCloud Sync by Combining SwiftData with CKSyncEngine]]></title>
            <link>https://yingjiezhao.com/en/articles/Implementing-iCloud-Sync-by-Combining-SwiftData-with-CKSyncEngine/</link>
            <guid>https://yingjiezhao.com/en/articles/Implementing-iCloud-Sync-by-Combining-SwiftData-with-CKSyncEngine/</guid>
            <pubDate>Sun, 05 Jan 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Data synchronization is a common requirement in iOS app development. While SwiftData provides native CloudKit sync support, we can choose to combine it with CKSyncEngine for more flexible synchronization when fine-grained control over the sync process is needed. This article will detail how to combine SwiftData with CKSyncEngine.<br><br><a href="https://yingjiezhao.com/en/articles/Implementing-iCloud-Sync-by-Combining-SwiftData-with-CKSyncEngine/">Read more</a>]]></description>
            <author>contact@yingjiezhao.com (Yingjie Zhao)</author>
        </item>
        <item>
            <title><![CDATA[2024 Annual Summary: Exploring ML, RAG and iOS Development]]></title>
            <link>https://yingjiezhao.com/en/articles/2024-Annual-Summary/</link>
            <guid>https://yingjiezhao.com/en/articles/2024-Annual-Summary/</guid>
            <pubDate>Tue, 31 Dec 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[This is my 2024 annual summary as a backend/algorithm/iOS developer. Throughout this year, I witnessed the practical applications of machine learning, the rise of RAG technology, the evolution of the Swift ecosystem, and gained valuable experience in independent development.<br><br><a href="https://yingjiezhao.com/en/articles/2024-Annual-Summary/">Read more</a>]]></description>
            <author>contact@yingjiezhao.com (Yingjie Zhao)</author>
        </item>
        <item>
            <title><![CDATA[Java Multi-threading and Semaphore Investigation]]></title>
            <link>https://yingjiezhao.com/en/articles/Java-Multi-threading-and-Semaphore-Investigation/</link>
            <guid>https://yingjiezhao.com/en/articles/Java-Multi-threading-and-Semaphore-Investigation/</guid>
            <pubDate>Sun, 01 May 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Investigation into combining Java thread pools with semaphores, analyzing issues in controlling task submission rates. Through practical examples, this article explores ThreadPoolExecutor's thread management mechanism and Semaphore's synchronization characteristics, providing optimization suggestions.<br><br><a href="https://yingjiezhao.com/en/articles/Java-Multi-threading-and-Semaphore-Investigation/">Read more</a>]]></description>
            <author>contact@yingjiezhao.com (Yingjie Zhao)</author>
        </item>
        <item>
            <title><![CDATA[Implementing MapReduce in Java]]></title>
            <link>https://yingjiezhao.com/en/articles/MapReduce-implementation-in-java/</link>
            <guid>https://yingjiezhao.com/en/articles/MapReduce-implementation-in-java/</guid>
            <pubDate>Tue, 29 Jun 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[MapReduce is a distributed computing model for processing large datasets. It breaks down data processing tasks into Map and Reduce phases, improving computational efficiency through parallel processing. This article will demonstrate how to implement a simple MapReduce framework in Java, similar to the functionality described in Google's MapReduce paper.<br><br><a href="https://yingjiezhao.com/en/articles/MapReduce-implementation-in-java/">Read more</a>]]></description>
            <author>contact@yingjiezhao.com (Yingjie Zhao)</author>
        </item>
    </channel>
</rss>