<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss/styles.xsl" type="text/xsl"?><rss version="2.0"><channel><title>Morris Liu - Thoughts</title><description>Technical thoughts and insights from Morris Liu on software engineering, leadership, AI infrastructure, and open source development.</description><link>https://realmorrisliu.com/</link><language>en-us</language><item><title>Human in the End：重新思考我们与 AI Agent 的交互方式</title><link>https://realmorrisliu.com/thoughts/human-in-the-end-next-gen-agent-interaction-zh.mdx</link><guid isPermaLink="true">https://realmorrisliu.com/thoughts/human-in-the-end-next-gen-agent-interaction-zh.mdx</guid><description>行业共识是 Human-in-the-Loop。但当 Agent 连续自主运行数小时，逐步审批反而成了瓶颈。Human-in-the-End 不是移除人类，而是将人类的角色从操作者升级为拥有者。</description><pubDate>Fri, 27 Feb 2026 00:00:00 GMT</pubDate><category>ai</category><category>agents</category><category>architecture</category><category>alan</category><author>Morris Liu</author></item><item><title>Human in the End: Rethinking How We Interact with AI Agents</title><link>https://realmorrisliu.com/thoughts/human-in-the-end-next-gen-agent-interaction.mdx</link><guid isPermaLink="true">https://realmorrisliu.com/thoughts/human-in-the-end-next-gen-agent-interaction.mdx</guid><description>The industry consensus is Human-in-the-Loop. But when agents run for hours autonomously, approving every step becomes the bottleneck. Human-in-the-End isn&apos;t about removing humans—it&apos;s about upgrading their role from operator to owner.</description><pubDate>Fri, 27 Feb 2026 00:00:00 GMT</pubDate><category>ai</category><category>agents</category><category>architecture</category><category>alan</category><author>Morris Liu</author></item><item><title>FastAPI Graceful Shutdown: 3 Resource Management Traps</title><link>https://realmorrisliu.com/thoughts/fastapi-graceful-shutdown/</link><guid isPermaLink="true">https://realmorrisliu.com/thoughts/fastapi-graceful-shutdown/</guid><description>FastAPI won&apos;t exit with one Ctrl+C? Discover three hidden resource management traps—aiosqlite leaks, thread chaos, and asyncio.run() pitfalls.</description><pubDate>Tue, 25 Nov 2025 00:00:00 GMT</pubDate><category>fastapi</category><category>python</category><category>resource-management</category><category>async</category><category>backend</category><author>Morris Liu</author></item><item><title>GKE Gateway API: Fix &apos;No Healthy Upstream&apos; Error</title><link>https://realmorrisliu.com/thoughts/fixing-gke-healthcheck-policy-no-healthy-upstream/</link><guid isPermaLink="true">https://realmorrisliu.com/thoughts/fixing-gke-healthcheck-policy-no-healthy-upstream/</guid><description>Production down with &apos;no healthy upstream&apos; but staging works? Your GKE Gateway API health check is misconfigured. Step-by-step fix inside.</description><pubDate>Tue, 11 Nov 2025 00:00:00 GMT</pubDate><category>gke</category><category>gateway-api</category><category>kubernetes</category><category>healthcheck</category><author>Morris Liu</author></item><item><title>From kubectl Scripts to GitOps: Why Flux CD Changed How I Think About Deployment</title><link>https://realmorrisliu.com/thoughts/from-kubectl-to-gitops-flux-cd/</link><guid isPermaLink="true">https://realmorrisliu.com/thoughts/from-kubectl-to-gitops-flux-cd/</guid><description>After building CI/CD pipelines with GitLab CI, Jenkins, and GitHub Actions for years, I thought deployment was just another pipeline step. Then Flux CD showed me the fundamental difference between Push and Pull models—and solved problems I didn&apos;t even know I had.</description><pubDate>Sat, 11 Oct 2025 00:00:00 GMT</pubDate><category>gitops</category><category>flux-cd</category><category>kubernetes</category><category>devops</category><category>ci-cd</category><category>architecture</category><author>Morris Liu</author></item><item><title>Style Transfer with Google&apos;s Nano Banana: A Three-Stage Evolution from Failure to Breakthrough</title><link>https://realmorrisliu.com/thoughts/style-transfer-with-google-nano-banana/</link><guid isPermaLink="true">https://realmorrisliu.com/thoughts/style-transfer-with-google-nano-banana/</guid><description>Google&apos;s nano banana (gemini-2.5-flash-image-preview) promised breakthrough image generation, but family photos revealed critical limitations. Following Google&apos;s official prompting guide, I evolved through three technical approaches—from complex prompts to description-first to line art bridging—discovering how to work with AI model strengths rather than against them.</description><pubDate>Fri, 05 Sep 2025 00:00:00 GMT</pubDate><category>ai</category><category>image-generation</category><category>google-gemini</category><category>style-transfer</category><category>prompt-engineering</category><author>Morris Liu</author></item><item><title>做那些无法规模化的事</title><link>https://realmorrisliu.com/thoughts/do-things-that-dont-scale-zh.mdx</link><guid isPermaLink="true">https://realmorrisliu.com/thoughts/do-things-that-dont-scale-zh.mdx</guid><description>Paul Graham 关于创业早期必须亲力亲为的经典指南。从 Stripe 的「Collison 安装法」到 Airbnb 的挨家挨户推广，了解为什么成功的创业公司都是创始人手动「推动」起来的，而不是自然「起飞」的。</description><pubDate>Wed, 20 Aug 2025 00:00:00 GMT</pubDate><category>startup</category><category>entrepreneurship</category><category>growth</category><category>user-acquisition</category><category>product-management</category><author>Paul Graham</author></item><item><title>Fix ingress-nginx Snippet Annotation Errors After 1.9 Upgrade</title><link>https://realmorrisliu.com/thoughts/fix-ingress-nginx-snippet-annotation-errors/</link><guid isPermaLink="true">https://realmorrisliu.com/thoughts/fix-ingress-nginx-snippet-annotation-errors/</guid><description>Encountering &apos;nginx.ingress.kubernetes.io/server-snippet annotation cannot be used&apos; errors after upgrading ingress-nginx? Here&apos;s how to fix the breaking changes in version 1.9 with proper Helm configuration and security considerations.</description><pubDate>Wed, 20 Aug 2025 00:00:00 GMT</pubDate><category>kubernetes</category><category>devops</category><category>infrastructure</category><category>security</category><category>troubleshooting</category><author>Morris Liu</author></item><item><title>构建零信任密钥管理系统：设计决策背后的权衡</title><link>https://realmorrisliu.com/thoughts/zero-trust-secret-management-design-decisions-zh.mdx</link><guid isPermaLink="true">https://realmorrisliu.com/thoughts/zero-trust-secret-management-design-decisions-zh.mdx</guid><description>从 &quot;by user&quot; 到 &quot;by client&quot; 架构的演进过程。深入分析 Sealbox 多客户端架构设计中的技术权衡，探讨零信任安全模型、Envelope Encryption 实践，以及如何在团队协作与安全性之间找到平衡点。</description><pubDate>Sat, 16 Aug 2025 00:00:00 GMT</pubDate><category>zero-trust</category><category>rust</category><category>architecture</category><category>security</category><category>devops</category><author>Morris Liu</author></item><item><title>Building Zero-Trust Secret Management: The Design Decisions Behind the Architecture</title><link>https://realmorrisliu.com/thoughts/zero-trust-secret-management-design-decisions.mdx</link><guid isPermaLink="true">https://realmorrisliu.com/thoughts/zero-trust-secret-management-design-decisions.mdx</guid><description>How we evolved from &quot;by user&quot; to &quot;by client&quot; architecture in Sealbox. A deep dive into the technical tradeoffs of zero-trust security models, Envelope Encryption implementation, and balancing team collaboration with security in secret management systems.</description><pubDate>Sat, 16 Aug 2025 00:00:00 GMT</pubDate><category>zero-trust</category><category>rust</category><category>architecture</category><category>security</category><category>devops</category><author>Morris Liu</author></item><item><title>Fixing Astro SEO on Cloudflare Pages: Why trailingSlash Doesn&apos;t Work (and What Does)</title><link>https://realmorrisliu.com/thoughts/fixing-astro-seo-cloudflare-trailing-slash/</link><guid isPermaLink="true">https://realmorrisliu.com/thoughts/fixing-astro-seo-cloudflare-trailing-slash/</guid><description>Deployed your Astro site on Cloudflare Pages only to discover mysterious 308 redirects killing your SEO? I spent hours chasing the wrong solution. Here&apos;s what actually fixes the trailing slash problem and why Astro&apos;s trailingSlash config won&apos;t help you.</description><pubDate>Wed, 13 Aug 2025 00:00:00 GMT</pubDate><category>astro</category><category>seo</category><category>web-development</category><category>cloudflare</category><category>devops</category><author>Morris Liu</author></item><item><title>Rust Builder Pattern Guide: derive_builder vs Hand-Written Constructors</title><link>https://realmorrisliu.com/thoughts/rust-builder-pattern-evolution/</link><guid isPermaLink="true">https://realmorrisliu.com/thoughts/rust-builder-pattern-evolution/</guid><description>Learn Rust builder pattern with derive_builder crate. Step-by-step tutorial from complex constructors to clean API design. Includes real code examples and best practices.</description><pubDate>Wed, 06 Aug 2025 00:00:00 GMT</pubDate><category>rust</category><category>api-design</category><category>design-patterns</category><category>software-engineering</category><category>type-systems</category><author>Morris Liu</author></item><item><title>Building Kira: An AI-Native Second Brain That Captures Context, Not Just Notes</title><link>https://realmorrisliu.com/thoughts/building-kira-an-ai-native-second-brain/</link><guid isPermaLink="true">https://realmorrisliu.com/thoughts/building-kira-an-ai-native-second-brain/</guid><description>Traditional note-taking apps like Notion and Obsidian create too much cognitive overhead. I&apos;m building Kira—an AI assistant that continuously captures context from your digital environment and amplifies your thinking through conversation. Learn how it evolved from a reading app idea into something completely different.</description><pubDate>Sun, 20 Jul 2025 00:00:00 GMT</pubDate><category>ai</category><category>product-design</category><category>knowledge-management</category><category>rust</category><category>productivity</category><author>Morris Liu</author></item><item><title>Why I Built Sealbox: A Developer-First Secret Management Tool in Rust</title><link>https://realmorrisliu.com/thoughts/why-i-built-sealbox/</link><guid isPermaLink="true">https://realmorrisliu.com/thoughts/why-i-built-sealbox/</guid><description>After struggling with HashiCorp Vault&apos;s complexity for a simple API key storage task, I built Sealbox—a lightweight, single-binary secret manager in Rust with end-to-end encryption, SQLite storage, and zero cloud dependencies. Here&apos;s the story and technical decisions behind it.</description><pubDate>Sat, 19 Jul 2025 00:00:00 GMT</pubDate><category>rust</category><category>security</category><category>devops</category><category>open-source</category><category>developer-tools</category><author>Morris Liu</author></item></channel></rss>