<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>xzan - Writing</title><description>Debugging notes on video pipelines, embedded devices, database failures, and the tools that got me out of them.</description><link>https://xzan.my.id/</link><language>en-us</language><item><title>Stuck at 10 Mbps: How a Realtek RTL8822CE Got Trapped in WiFi 4 and What Finally Freed It</title><link>https://xzan.my.id/writing/realtek-8822ce-stuck-wifi-4-rtk-killer/</link><guid isPermaLink="true">https://xzan.my.id/writing/realtek-8822ce-stuck-wifi-4-rtk-killer/</guid><description>A WiFi 5 chip was quietly running at WiFi 4 speeds on a 20 MHz channel, capping a whole mini PC at 10 Mbps. The stock drivers could not fix it. A community-built driver could.</description><pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Auth Expired: Why My ESP32 Refused to Rejoin WiFi After Every Power Outage</title><link>https://xzan.my.id/writing/esp32-auth-expired-cold-boot-wifi/</link><guid isPermaLink="true">https://xzan.my.id/writing/esp32-auth-expired-cold-boot-wifi/</guid><description>A tiny Bluetooth proxy that worked fine for weeks kept hanging after every power cut. The fix was physical, the root cause was a reconnect race, and I was wrong twice before I listened to the one clue I kept ignoring.</description><pubDate>Sun, 14 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Use OpenCode From Anywhere via a Telegram Bridge</title><link>https://xzan.my.id/writing/use-opencode-from-anywhere-via-telegram/</link><guid isPermaLink="true">https://xzan.my.id/writing/use-opencode-from-anywhere-via-telegram/</guid><description>Bridge your local OpenCode instance to Telegram so you can code from anywhere, no tunnels, no open ports, and nothing on the internet.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate></item><item><title>Building a Disaster Recovery Setup for a Production App with MySQL Replication</title><link>https://xzan.my.id/writing/mysql-replication-disaster-recovery/</link><guid isPermaLink="true">https://xzan.my.id/writing/mysql-replication-disaster-recovery/</guid><description>Turning a single-server Node.js app into a resilient setup with master-slave replication, Docker, and a one-command failback script, without touching the existing production stack.</description><pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate></item><item><title>Stop Shipping API Keys in Your iOS App: Build a Serverless AI Proxy Instead</title><link>https://xzan.my.id/writing/stop-shipping-api-keys-ios-proxy/</link><guid isPermaLink="true">https://xzan.my.id/writing/stop-shipping-api-keys-ios-proxy/</guid><description>Why compiling OpenAI or Gemini keys inside your mobile app binary is a security trap, and how to build an elegant serverless proxy using Cloudflare Workers for free.</description><pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate></item><item><title>SnapText: How a Simple Window Close Crashed My MacOS App</title><link>https://xzan.my.id/writing/debugging-nswindow-crash/</link><guid isPermaLink="true">https://xzan.my.id/writing/debugging-nswindow-crash/</guid><description>A deep dive into debugging a mysterious crash in a macOS menu bar app built with Swift 6 and AppKit.</description><pubDate>Fri, 23 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Silent Bot in Group Chat: A Case Study in Chat Platform Integration</title><link>https://xzan.my.id/writing/telegram-bot-problem/</link><guid isPermaLink="true">https://xzan.my.id/writing/telegram-bot-problem/</guid><description>When your Telegram bot works flawlessly in DMs but ignores every message in a group, including @mentions, the fix is rarely where you expect it.</description><pubDate>Tue, 13 Jan 2026 00:00:00 GMT</pubDate></item><item><title>My Thoughts on Programmers vs Vibe Coders</title><link>https://xzan.my.id/writing/programmers-vs-vibe-coders/</link><guid isPermaLink="true">https://xzan.my.id/writing/programmers-vs-vibe-coders/</guid><description>Exploring the democratization of coding tools, the rise of vibe coding, and why the debate between engineering depth and business speed is a familiar historical pattern.</description><pubDate>Thu, 25 Dec 2025 00:00:00 GMT</pubDate></item><item><title>The Math Behind Cursor-Centered Zoom</title><link>https://xzan.my.id/writing/cursor-centered-zoom-math/</link><guid isPermaLink="true">https://xzan.my.id/writing/cursor-centered-zoom-math/</guid><description>Why my first zoom implementation was wrong, and the formula that finally made cursor-centered zoom work correctly at any zoom level.</description><pubDate>Tue, 07 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Building CCTV RTSP Live: A macOS App for Monitoring IP Cameras</title><link>https://xzan.my.id/writing/building-cctv-rtsp-live-macos/</link><guid isPermaLink="true">https://xzan.my.id/writing/building-cctv-rtsp-live-macos/</guid><description>The story of building a macOS app for RTSP camera monitoring from scratch - what started as a personal itch turned into a full-featured indie app.</description><pubDate>Tue, 19 Aug 2025 00:00:00 GMT</pubDate></item><item><title>Building a Recording Engine with FFmpeg on macOS</title><link>https://xzan.my.id/writing/building-recording-engine-ffmpeg-macos/</link><guid isPermaLink="true">https://xzan.my.id/writing/building-recording-engine-ffmpeg-macos/</guid><description>Why VLCKit&apos;s built-in recording failed for RTSP live streams, and how I replaced it with an FFmpeg subprocess that actually works.</description><pubDate>Mon, 02 Jun 2025 00:00:00 GMT</pubDate></item><item><title>Fixing H265 Stream Freeze on Tuya Cameras</title><link>https://xzan.my.id/writing/fixing-h265-freeze-tuya-cameras/</link><guid isPermaLink="true">https://xzan.my.id/writing/fixing-h265-freeze-tuya-cameras/</guid><description>How I tracked down a VideoToolbox -12906 error causing RTSP stream freezes and reconnect loops in my macOS CCTV app.</description><pubDate>Fri, 14 Mar 2025 00:00:00 GMT</pubDate></item><item><title>Building Things That Last</title><link>https://xzan.my.id/writing/engineering-stability/</link><guid isPermaLink="true">https://xzan.my.id/writing/engineering-stability/</guid><description>A reflection on 17 years of building software - from Friendster layouts to production systems - and what I&apos;ve learned about writing code that actually holds up.</description><pubDate>Mon, 30 Dec 2024 00:00:00 GMT</pubDate></item><item><title>Tuya DP ID List: How to Find DP IDs for Smart Plug, Bulb, and Camera</title><link>https://xzan.my.id/writing/finding-tuya-dp-ids/</link><guid isPermaLink="true">https://xzan.my.id/writing/finding-tuya-dp-ids/</guid><description>Step-by-step guide to finding Tuya DP IDs using the IoT Cloud API Explorer. Includes DP ID reference tables for smart plugs, bulbs, IP cameras, and IR blasters - useful for LocalTuya and Home Assistant integrations.</description><pubDate>Tue, 03 Sep 2024 00:00:00 GMT</pubDate></item><item><title>The Indihome Loyalty Tax: Why Staying Quiet Costs You More Than Switching</title><link>https://xzan.my.id/writing/indihome-loyalty-tax/</link><guid isPermaLink="true">https://xzan.my.id/writing/indihome-loyalty-tax/</guid><description>A seven-year price history of my Indihome fiber plan, from 10 Mbps to 200 Mbps, and why staying loyal to an ISP silently costs you more than pushing back.</description><pubDate>Tue, 22 Aug 2023 00:00:00 GMT</pubDate></item></channel></rss>