{
    "version": "https://jsonfeed.org/version/1",
    "title": "Leo Qin’s Blog - Technology",
    "home_page_url": "https://leoqin.com/en/category/Technology",
    "feed_url": "https://leoqin.com/en/rss/category/Technology/feed.json",
    "description": "LeoQin is talking here.",
    "author": {
        "name": "LeoQin",
        "url": "https://leoqin.com/en"
    },
    "items": [
        {
            "id": "https://leoqin.com/en/article/ai-three-personas",
            "content_html": "AI safety requires distinguishing saints from sycophants and schemers during training.",
            "url": "https://leoqin.com/en/article/ai-three-personas",
            "title": "Distinguishing Saints from Sycophants and Schemers",
            "summary": "AI safety requires distinguishing saints from sycophants and schemers during training.",
            "date_modified": "2026-05-11T00:00:00.000Z"
        },
        {
            "id": "https://leoqin.com/en/article/MCP",
            "content_html": "MCP standardizes how AI apps connect to tools, resources, prompts, and external systems. It is useful infrastructure for reducing integration glue, but it does not replace permissions, confirmations, logging, threat modeling, or tool-safety design.",
            "url": "https://leoqin.com/en/article/MCP",
            "title": "MCP Is Infrastructure, Not the Ultimate AI Solution",
            "summary": "MCP standardizes how AI apps connect to tools, resources, prompts, and external systems. It is useful infrastructure for reducing integration glue, but it does not replace permissions, confirmations, logging, threat modeling, or tool-safety design.",
            "date_modified": "2025-04-01T00:00:00.000Z"
        },
        {
            "id": "https://leoqin.com/en/article/Intro-to-Crawlers",
            "content_html": "A personal, practical guide to robots.txt and data-use boundaries, choosing between requests, aiohttp, Scrapy, and Playwright, and handling anti-bot measures and HTML parsing.",
            "url": "https://leoqin.com/en/article/Intro-to-Crawlers",
            "title": "Web Scraping 101: Permissions, Tools, and Anti-Bot Lessons",
            "summary": "A personal, practical guide to robots.txt and data-use boundaries, choosing between requests, aiohttp, Scrapy, and Playwright, and handling anti-bot measures and HTML parsing.",
            "date_modified": "2025-01-22T00:00:00.000Z"
        },
        {
            "id": "https://leoqin.com/en/article/graph-api-and-shaders",
            "content_html": "Shaders, GPU machine code, graphics APIs, and cache invalidation: why shader compilation takes so long.",
            "url": "https://leoqin.com/en/article/graph-api-and-shaders",
            "title": "What Does “Compiling Shaders” Mean in Games?",
            "summary": "Shaders, GPU machine code, graphics APIs, and cache invalidation: why shader compilation takes so long.",
            "date_modified": "2025-01-08T00:00:00.000Z"
        },
        {
            "id": "https://leoqin.com/en/article/content-auto-follow",
            "content_html": "Auto-scroll in an AI chat is not just scrollTop. It needs intent signals, a follow/free state machine, handling for programmatic scroll events, virtualization, and mobile edge cases.",
            "url": "https://leoqin.com/en/article/content-auto-follow",
            "title": "Auto-Scrolling AI Chats: How to Read User Intent",
            "summary": "Auto-scroll in an AI chat is not just scrollTop. It needs intent signals, a follow/free state machine, handling for programmatic scroll events, virtualization, and mobile edge cases.",
            "date_modified": "2024-12-13T00:00:00.000Z"
        },
        {
            "id": "https://leoqin.com/en/article/avoid-excessive-useeffect",
            "content_html": "useEffect is useful for side effects outside rendering, but too many effects turn a component into a dependency maze. This post uses a concrete dashboard example to show when to extract custom hooks or move data fetching elsewhere.",
            "url": "https://leoqin.com/en/article/avoid-excessive-useeffect",
            "title": "Avoid Overusing React useEffect",
            "summary": "useEffect is useful for side effects outside rendering, but too many effects turn a component into a dependency maze. This post uses a concrete dashboard example to show when to extract custom hooks or move data fetching elsewhere.",
            "date_modified": "2024-12-10T00:00:00.000Z"
        },
        {
            "id": "https://leoqin.com/en/article/AI-Improve-Efficiency",
            "content_html": "Based on hands-on use of Copilot, Cursor, and Claude Code, this post separates where AI assistants help most, such as search, boilerplate, and error diagnosis, from where they still struggle, such as architecture and edge cases.",
            "url": "https://leoqin.com/en/article/AI-Improve-Efficiency",
            "title": "How AI Coding Assistants Actually Improve Developer Efficiency",
            "summary": "Based on hands-on use of Copilot, Cursor, and Claude Code, this post separates where AI assistants help most, such as search, boilerplate, and error diagnosis, from where they still struggle, such as architecture and edge cases.",
            "date_modified": "2024-12-09T00:00:00.000Z"
        },
        {
            "id": "https://leoqin.com/en/article/Statsify-Finance-Tech-Analysis",
            "content_html": "A product and architecture walkthrough for Statsify Finance, covering its analysis, strategy, article, search, and finance-term pages, plus the Next.js, Tailwind, Ant Design, ECharts, MongoDB, and TypeScript stack behind it.",
            "url": "https://leoqin.com/en/article/Statsify-Finance-Tech-Analysis",
            "title": "Statsify Finance: Technical Breakdown",
            "summary": "A product and architecture walkthrough for Statsify Finance, covering its analysis, strategy, article, search, and finance-term pages, plus the Next.js, Tailwind, Ant Design, ECharts, MongoDB, and TypeScript stack behind it.",
            "date_modified": "2024-12-08T00:00:00.000Z"
        }
    ]
}