<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>David Cao&apos;s Personal Website - Blog</title>
    <link>https://yudavidcao.github.io/blogs</link>
    <description>Blog posts by David Cao</description>
    <language>en-us</language>
    <lastBuildDate>Sun, 12 Jul 2026 15:42:07 GMT</lastBuildDate>
    <atom:link href="https://yudavidcao.github.io/rss.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Turn Your iPhone into a Remote Terminal for Your Mac — Completely Free and Open Source</title>
      <link>https://yudavidcao.github.io/blog/turn-your-iphone-into-a-remote-terminal-for-your-mac-completely-free-and-open-source</link>
      <guid isPermaLink="true">https://yudavidcao.github.io/blog/turn-your-iphone-into-a-remote-terminal-for-your-mac-completely-free-and-open-source</guid>
      <description>SSH into your MacBook from your iPhone anywhere in the world using a-Shell, Tailscale, and tmux — a completely free, open-source setup that keeps terminal sessions alive across disconnects.</description>
      <pubDate>Sat, 11 Jul 2026 05:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Network Request Override with Chrome DevTools</title>
      <link>https://yudavidcao.github.io/blog/network-request-override-with-chrome-devtools</link>
      <guid isPermaLink="true">https://yudavidcao.github.io/blog/network-request-override-with-chrome-devtools</guid>
      <description>Chrome DevTools&apos; Override Content and Override Headers let you intercept network requests and replace responses locally — a game changer for frontend development, especially on large projects where backend changes are slow or impossible.</description>
      <pubDate>Tue, 07 Jul 2026 05:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Flutter App Store Publishing: Common Pitfalls (Part 1)</title>
      <link>https://yudavidcao.github.io/blog/flutter-app-store-publishing-common-pitfalls-part-1</link>
      <guid isPermaLink="true">https://yudavidcao.github.io/blog/flutter-app-store-publishing-common-pitfalls-part-1</guid>
      <description>After publishing 100+ Flutter apps, these are the App Store rejection reasons I see most often — missing Info.plist permissions, alpha-channel icons, in-app account deletion, XML escaping, debug banners in screenshots, and mandatory login issues.</description>
      <pubDate>Sun, 28 Jun 2026 05:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Understanding Side-Effect Imports in JavaScript</title>
      <link>https://yudavidcao.github.io/blog/understanding-side-effect-imports-in-javascript</link>
      <guid isPermaLink="true">https://yudavidcao.github.io/blog/understanding-side-effect-imports-in-javascript</guid>
      <description>Side-effect imports run a module&apos;s top-level code without binding any exports — useful for polyfills, analytics, and startup configuration, but they hide behavior and introduce ordering concerns. This post explains the pattern with examples and when to use it carefully.</description>
      <pubDate>Sun, 21 Jun 2026 05:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Using the BroadcastChannel API for Cross-Tab Communication</title>
      <link>https://yudavidcao.github.io/blog/using-the-broadcastchannel-api-for-cross-tab-communication</link>
      <guid isPermaLink="true">https://yudavidcao.github.io/blog/using-the-broadcastchannel-api-for-cross-tab-communication</guid>
      <description>The BroadcastChannel API lets browser tabs, windows, iframes, and workers on the same origin exchange messages without a server. This post covers common use cases, a logout synchronization example, and how it compares to localStorage events, Shared Workers, and Service Workers.</description>
      <pubDate>Thu, 11 Jun 2026 05:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Common Problems with Vibe Coding (and How to Avoid Them)</title>
      <link>https://yudavidcao.github.io/blog/common-problems-with-vibe-coding-and-how-to-avoid-them</link>
      <guid isPermaLink="true">https://yudavidcao.github.io/blog/common-problems-with-vibe-coding-and-how-to-avoid-them</guid>
      <description>Seven common problems with AI-assisted &apos;vibe coding&apos; — from duplicated code and security gaps to generic frontends and missing context — with practical workflow solutions for each. These aren&apos;t fundamental AI limitations; they&apos;re fixable with the right habits.</description>
      <pubDate>Sat, 06 Jun 2026 05:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Hopcroft&apos;s Algorithm: Efficient DFA Minimization</title>
      <link>https://yudavidcao.github.io/blog/hopcrofts-algorithm-efficient-dfa-minimization</link>
      <guid isPermaLink="true">https://yudavidcao.github.io/blog/hopcrofts-algorithm-efficient-dfa-minimization</guid>
      <description>A walkthrough of Hopcroft&apos;s Algorithm for DFA minimization — partition refinement, a step-by-step six-state example, full Python implementation, and O(n·s·log n) complexity analysis. A final project for UVA&apos;s Advanced Data Structures and Algorithms class.</description>
      <pubDate>Sat, 30 May 2026 05:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Reflections from PyCon US 2026</title>
      <link>https://yudavidcao.github.io/blog/reflections-from-pycon-us-2026</link>
      <guid isPermaLink="true">https://yudavidcao.github.io/blog/reflections-from-pycon-us-2026</guid>
      <description>Reflections from my first PyCon US — volunteering at the registration desk, GPU tiling with NVIDIA, AI economics, Python&apos;s generational garbage collector, Pablo Galindo&apos;s &apos;cathedral&apos; keynote on open source, and the &apos;Silence is Gold&apos; lightning talk. PyCon reminded me that Python is much bigger than a programming language — it&apos;s a community.</description>
      <pubDate>Wed, 20 May 2026 05:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Why Monorepos Make AI Coding Tools Way Smarter</title>
      <link>https://yudavidcao.github.io/blog/why-monorepos-make-ai-coding-tools-way-smarter</link>
      <guid isPermaLink="true">https://yudavidcao.github.io/blog/why-monorepos-make-ai-coding-tools-way-smarter</guid>
      <description>Monorepos significantly enhance AI coding tools by providing full context across frontend, backend, and shared code. This article explains how unified codebases enable better AI suggestions, fewer errors, and more effective pair programming with AI assistants.</description>
      <pubDate>Sat, 23 Aug 2025 05:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Things that literally doubled my productivity as a programmer</title>
      <link>https://yudavidcao.github.io/blog/things-that-literally-doubled-my-productivity-as-a-programmer</link>
      <guid isPermaLink="true">https://yudavidcao.github.io/blog/things-that-literally-doubled-my-productivity-as-a-programmer</guid>
      <description>Discover practical productivity tips and tools that can significantly boost your programming efficiency, from keyboard shortcuts to automation techniques.</description>
      <pubDate>Sat, 26 Jul 2025 05:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Xcode might be eating up your hard drive space!</title>
      <link>https://yudavidcao.github.io/blog/xcode-might-be-eating-up-your-hard-drive-space</link>
      <guid isPermaLink="true">https://yudavidcao.github.io/blog/xcode-might-be-eating-up-your-hard-drive-space</guid>
      <description>Xcode&apos;s DerivedData folder can consume massive disk space on Mac. This article explains how to find and safely delete it to reclaim storage, with a real-life example of freeing up 276 GB.</description>
      <pubDate>Tue, 01 Jul 2025 05:00:00 GMT</pubDate>
    </item>
    <item>
      <title>How I learned git rebasing — a real life work scenario</title>
      <link>https://yudavidcao.github.io/blog/how-i-learned-git-rebasing-a-real-life-work-scenario</link>
      <guid isPermaLink="true">https://yudavidcao.github.io/blog/how-i-learned-git-rebasing-a-real-life-work-scenario</guid>
      <description>A real-life scenario demonstrates how git rebase can help separate feature work from dependent changes. The article explains a branching situation, the problem with merging, and how &apos;git rebase --onto main A&apos; solves it, highlighting the value of practical experience.</description>
      <pubDate>Sun, 22 Jun 2025 05:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Canonical URL sharing on mobile browsers and a workaround for static sites</title>
      <link>https://yudavidcao.github.io/blog/canonical-url-sharing-on-mobile-browsers-and-a-workaround-for-static-sites</link>
      <guid isPermaLink="true">https://yudavidcao.github.io/blog/canonical-url-sharing-on-mobile-browsers-and-a-workaround-for-static-sites</guid>
      <description>Mobile browsers often share canonical URLs, which can strip important context from links. This article explains why, the impact on users, and a workaround for static sites to preserve full URLs when sharing.</description>
      <pubDate>Fri, 06 Jun 2025 05:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Write clean Flutter code with extension methods</title>
      <link>https://yudavidcao.github.io/blog/write-clean-flutter-code-with-extension-methods</link>
      <guid isPermaLink="true">https://yudavidcao.github.io/blog/write-clean-flutter-code-with-extension-methods</guid>
      <description>Learn how to write clean Flutter code using Dart extension methods. This article explains how to add new methods to existing classes, provides practical examples like date-only extraction and string capitalization, and encourages creating your own extensions for cleaner, more maintainable code.</description>
      <pubDate>Wed, 12 Jun 2024 05:00:00 GMT</pubDate>
    </item>
    <item>
      <title>How to learn programming in 2024</title>
      <link>https://yudavidcao.github.io/blog/how-to-learn-programming-in-2024</link>
      <guid isPermaLink="true">https://yudavidcao.github.io/blog/how-to-learn-programming-in-2024</guid>
      <description>Learning programming in 2024 is easier than ever thanks to abundant resources, but it&apos;s also easy to get overwhelmed. Focus on mastering core concepts, building real projects, and following your interests to stay motivated. Avoid &quot;tutorial hell&quot; by applying what you learn and tracking your progress.</description>
      <pubDate>Sat, 25 May 2024 05:00:00 GMT</pubDate>
    </item>
  </channel>
</rss>