<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Haowei Chan</title><description>Personal portfolio and blog of Haowei Chan, featuring projects, writing, and web experiments.</description><link>https://haoweichan.github.io/</link><item><title>Every Node Reported Success and the Output Was Still Wrong: Debugging Partial Success in a Content Pipeline</title><link>https://haoweichan.github.io/blog/when-every-node-succeeds/</link><guid isPermaLink="true">https://haoweichan.github.io/blog/when-every-node-succeeds/</guid><description>A reader said &quot;every post has a fair few typos&quot;, but that month no node in the pipeline had failed once. Six defects, none of them a failure: every one was a component doing exactly what it was told, returning 200, then going wrong in the inch it was never told about. Plus the question I now keep on my review list: is this success signal load-bearing?</description><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate></item><item><title>每個節點都回報成功，成品還是錯的：內容 Pipeline 的「局部成功」偵查</title><link>https://haoweichan.github.io/zh-tw/blog/when-every-node-succeeds/</link><guid isPermaLink="true">https://haoweichan.github.io/zh-tw/blog/when-every-node-succeeds/</guid><description>讀者說「每一篇都有不少錯字」，但那個月 pipeline 沒有任何一個節點失敗過。六個缺陷，沒有一個是失敗：全都是某個元件正確完成了它被交代的工作、回傳 200，然後在它沒被交代的那一寸出錯。以及我因此加進 review 清單的那個問題：這個成功訊號，是承重的嗎？</description><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Predeclare and Three Gates: Building Internal Controls for Factor Research</title><link>https://haoweichan.github.io/blog/factor-research-internal-controls/</link><guid isPermaLink="true">https://haoweichan.github.io/blog/factor-research-internal-controls/</guid><description>Researcher degrees of freedom are the real adversary in quantitative research. From predeclaration, orthogonality prescreens, and Gate A to the neutralization ladder and a forward shadow book: a control process I have run for over a year and violated a few times myself. It does not guarantee profit; it guarantees I can tell when a result is fake.</description><pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate></item><item><title>我如何用「預先聲明 + 三道閘門」建立因子研究的內控制度：一套避免自己騙自己的流程</title><link>https://haoweichan.github.io/zh-tw/blog/factor-research-internal-controls/</link><guid isPermaLink="true">https://haoweichan.github.io/zh-tw/blog/factor-research-internal-controls/</guid><description>研究者自由度是量化研究最大的敵人。從預先聲明、正交前篩、閘門 A、中性化階梯到前瞻影子簿：一套實際跑了一年多、也實際被自己違反過幾次的內控流程。它不保證賺錢，只保證結果是假的時候看得出來。</description><pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The Last Mile of a Cloud Exit: Moving 140GB of Media and Every Secret Onto My Own VPS</title><link>https://haoweichan.github.io/blog/media-secrets-cloud-exit/</link><guid isPermaLink="true">https://haoweichan.github.io/blog/media-secrets-cloud-exit/</guid><description>Large immutable files and small highly sensitive config are the two poles a database migration never covers: an in-place storage-layer swap, a three-tier secret resolution order, half-finished-work archaeology, and the discipline of export, off-site backup, reconcile, only then delete.</description><pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate></item><item><title>雲端退場最後一哩：把 140GB 媒體檔和所有 Secrets 搬回自己的 VPS</title><link>https://haoweichan.github.io/zh-tw/blog/media-secrets-cloud-exit/</link><guid isPermaLink="true">https://haoweichan.github.io/zh-tw/blog/media-secrets-cloud-exit/</guid><description>大體積不可變檔案與高敏感小體積設定，是資料庫遷移沒覆蓋到的兩極：存儲層原地替換、secrets 三層解析順序、半成品考古學，以及「export → 異地備份 → 核對 → 才刪」的刪除紀律。</description><pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate></item><item><title>From a Document Database Back to PostgreSQL: A Six-Phase Data Layer Exit Playbook</title><link>https://haoweichan.github.io/blog/document-db-to-postgres-migration/</link><guid isPermaLink="true">https://haoweichan.github.io/blog/document-db-to-postgres-migration/</guid><description>How to cut a migration that touches every read and write path into six independently shippable, independently reversible phases: same-interface swaps, the dual-write safety net, write-stop as the only irreversible point, and the fourteen production bombs adversarial review caught.</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate></item><item><title>從文件資料庫搬回 PostgreSQL：我的六階段資料層退場方法論</title><link>https://haoweichan.github.io/zh-tw/blog/document-db-to-postgres-migration/</link><guid isPermaLink="true">https://haoweichan.github.io/zh-tw/blog/document-db-to-postgres-migration/</guid><description>把一場「動所有讀寫路徑」的遷移，切成六個可以獨立上線、獨立回滾的階段：同介面替換、雙寫安全網、停寫作為唯一的不可逆點，以及對抗審查抓出的十四個生產級炸彈。</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate></item><item><title>When the Cloud Bill Jumps 20x Overnight: A Full Forensic Trail of a Database Traffic Leak</title><link>https://haoweichan.github.io/blog/cloud-bill-forensics/</link><guid isPermaLink="true">https://haoweichan.github.io/blog/cloud-bill-forensics/</guid><description>The bill went from a few hundred NTD to over forty thousand, and nobody broke in — every cent was spent by my own code. A five-layer drill-down from invoice total to function name, and why payload x distance costs more than read count.</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate></item><item><title>當雲端帳單一夜暴漲二十倍：一次資料庫流量失血的完整偵查紀錄</title><link>https://haoweichan.github.io/zh-tw/blog/cloud-bill-forensics/</link><guid isPermaLink="true">https://haoweichan.github.io/zh-tw/blog/cloud-bill-forensics/</guid><description>帳單從幾百元變成四萬多，沒有人入侵——每一分錢都是自己的程式碼花掉的。從總金額一路下鑽到函式名的五層偵查法，以及「payload × 距離」為什麼比讀取次數更貴。</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Automating Portfolio Tracking and Broker Report Ingestion: From Encrypted PDFs to Daily Account Equity Pipelines</title><link>https://haoweichan.github.io/blog/broker-reports-and-portfolio-automation/</link><guid isPermaLink="true">https://haoweichan.github.io/blog/broker-reports-and-portfolio-automation/</guid><description>Resident Personal Assistant Series: Parsing encrypted PDF statements, integrating multi-broker APIs, handling T+2 settlement lags, and building automated research report crawlers.</description><pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate></item><item><title>從對帳單 PDF 到多帳戶權益數：我如何用 Python + Cron 打造自動化資產與研報追蹤系統</title><link>https://haoweichan.github.io/zh-tw/blog/broker-reports-and-portfolio-automation/</link><guid isPermaLink="true">https://haoweichan.github.io/zh-tw/blog/broker-reports-and-portfolio-automation/</guid><description>個人常駐助理系列：解密加密 PDF 對帳單解析、多經紀商 API 串接、T+2 交割款時差計算與自動化券商研報爬蟲系統設計。</description><pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate></item><item><title>My Personal Assistant Is Not a Chatbot</title><link>https://haoweichan.github.io/blog/resident-personal-assistant/</link><guid isPermaLink="true">https://haoweichan.github.io/blog/resident-personal-assistant/</guid><description>Building a resident assistant on Hermes Agent: six traits that stop it being a chatbot, what is genuinely clever about the Hermes agent mechanism, and the day it became trustworthy.</description><pubDate>Tue, 03 Mar 2026 00:00:00 GMT</pubDate></item><item><title>我的個人助理不是 chatbot</title><link>https://haoweichan.github.io/zh-tw/blog/resident-personal-assistant/</link><guid isPermaLink="true">https://haoweichan.github.io/zh-tw/blog/resident-personal-assistant/</guid><description>用 Hermes Agent 蓋一個常駐、會自己開口的個人助理：六個讓它不像聊天機器人的特性、Hermes 的 agent 機制聰明在哪，以及它變得可信的那一天。</description><pubDate>Tue, 03 Mar 2026 00:00:00 GMT</pubDate></item><item><title>FastAPI + Redis: Tiered Cache Design for Read-Heavy APIs</title><link>https://haoweichan.github.io/blog/fastapi-redis-tiered-cache-design/</link><guid isPermaLink="true">https://haoweichan.github.io/blog/fastapi-redis-tiered-cache-design/</guid><description>Full-Stack Architecture Series: Not all APIs deserve the same TTL. How to combine Edge CDNs, Redis in-memory caching, and Cache-Aside patterns to prevent Cache Stampedes.</description><pubDate>Fri, 20 Feb 2026 00:00:00 GMT</pubDate></item><item><title>FastAPI + Redis：高讀取量 API 的快取分層設計</title><link>https://haoweichan.github.io/zh-tw/blog/fastapi-redis-tiered-cache-design/</link><guid isPermaLink="true">https://haoweichan.github.io/zh-tw/blog/fastapi-redis-tiered-cache-design/</guid><description>全端產品架構系列：並非所有 API 都適用相同的 TTL。如何結合 Edge CDN、Redis 記憶體快取與 Cache-Aside 模式應對 Cache Stampede 並提升系統吞吐量。</description><pubDate>Fri, 20 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Dev / Staging / Production: Environment Layering Strategies for Small Teams</title><link>https://haoweichan.github.io/blog/dev-staging-prod-environments/</link><guid isPermaLink="true">https://haoweichan.github.io/blog/dev-staging-prod-environments/</guid><description>Environment layering is not enterprise ceremony, but a risk-reduction pattern: how to boost release reliability using branch-to-environment mapping, preview deploys, secrets isolation, and production guardrails.</description><pubDate>Tue, 10 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Dev / Staging / Production：小團隊也需要的環境分層策略</title><link>https://haoweichan.github.io/zh-tw/blog/dev-staging-prod-environments/</link><guid isPermaLink="true">https://haoweichan.github.io/zh-tw/blog/dev-staging-prod-environments/</guid><description>環境分層不是大型公司的儀式，而是一個降低發布風險的設計模式：如何透過 Branch-to-env 映射、Preview Deploys、Secrets 隔離與生產環境 Release Guardrails 提升發布可靠性。</description><pubDate>Tue, 10 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Designing a Reliable Agentic Ingestion Pipeline (Part 2): Step-by-Step Checkpoints, Reasoning Token Budgets, and Pre-Persistence Gates</title><link>https://haoweichan.github.io/blog/agentic-ingestion-pipeline-part2/</link><guid isPermaLink="true">https://haoweichan.github.io/blog/agentic-ingestion-pipeline-part2/</guid><description>Production lessons: Step-by-step checkpoints and rerun_from recovery, preventing reasoning model token truncation, pre-persistence gates, and concurrency budgets.</description><pubDate>Thu, 22 Jan 2026 00:00:00 GMT</pubDate></item><item><title>如何設計一條可靠的 Agentic Ingestion Pipeline (下)：Step-by-step Checkpoints、推理解算溢出與防寫閘實戰</title><link>https://haoweichan.github.io/zh-tw/blog/agentic-ingestion-pipeline-part2/</link><guid isPermaLink="true">https://haoweichan.github.io/zh-tw/blog/agentic-ingestion-pipeline-part2/</guid><description>生產環境實戰：Step-by-step Checkpoints 重播機制、推理模型 Token 截斷防禦、寫入前強校驗防寫閘與併發預算控制。</description><pubDate>Thu, 22 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Designing a Reliable Agentic Ingestion Pipeline (Part 1): From Single-Prompt Bottlenecks to LangGraph Multi-Agent Workflows</title><link>https://haoweichan.github.io/blog/agentic-ingestion-pipeline-part1/</link><guid isPermaLink="true">https://haoweichan.github.io/blog/agentic-ingestion-pipeline-part1/</guid><description>How an unstructured financial podcast data pipeline evolved from a single prompt into a decoupled multi-agent topology using LangGraph.</description><pubDate>Thu, 15 Jan 2026 00:00:00 GMT</pubDate></item><item><title>如何設計一條可靠的 Agentic Ingestion Pipeline (上)：從單一 Prompt 瓶頸到 LangGraph 多 Agent 協作圖譜</title><link>https://haoweichan.github.io/zh-tw/blog/agentic-ingestion-pipeline-part1/</link><guid isPermaLink="true">https://haoweichan.github.io/zh-tw/blog/agentic-ingestion-pipeline-part1/</guid><description>從單一 Prompt 瓶頸到 LangGraph 多 Agent 協作：非結構化財經 Podcast 語音與逐字稿 Pipeline 的解耦與拓撲設計。</description><pubDate>Thu, 15 Jan 2026 00:00:00 GMT</pubDate></item></channel></rss>