<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss/styles.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Fatbobman&apos;s Blog</title><description>English Home | Fatbobman&apos;s Blog ｜肘子的 Swift 记事本 – Sharing content related to Swift, SwiftUI, Core Data, and Swift Data, as well as covering development tools, AI, and other topics. All articles are original creations; for reproduction, please contact the author.</description><link>https://fatbobman.com/</link><language>en</language><follow_challenge><feedId>69192030853292039</feedId><userId>60878761419746304</userId></follow_challenge><item><title>Apple&apos;s Rare Concession: When Critical Vulnerabilities Meet the &apos;Update Refusal&apos; Wave - Fatbobman&apos;s Swift Weekly #130</title><link>https://fatbobman.com/en/weekly/issue-130/</link><guid isPermaLink="true">https://fatbobman.com/en/weekly/issue-130/</guid><description>For iOS users, recent news about the Coruna and DarkSword vulnerabilities has become unavoidable. Both exploit chains use watering hole attacks, requiring no user interaction — simply visiting a legitimate website with a malicious iframe or loading a compromised ad in Safari is enough to trigger the full attack chain, after which the malware cleans its traces. Since the exploited vulnerabilities span most versions of iOS from 13 to 18.7, hundreds of millions of devices have been affected to date.</description><pubDate>Mon, 06 Apr 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For iOS users, recent news about the Coruna and DarkSword vulnerabilities has become unavoidable. Both exploit chains use watering hole attacks, requiring no user interaction — simply visiting a legitimate website with a malicious iframe or loading a compromised ad in Safari is enough to trigger the full attack chain, after which the malware cleans its traces. Since the exploited vulnerabilities span most versions of iOS from 13 to 18.7, hundreds of millions of devices have been affected to date.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/weekly/issue-130/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>weekly</category><category>swiftui</category><author>Fatbobman</author></item><item><title>A Wall Away, Worlds Apart - Fatbobman&apos;s Swift Weekly #129</title><link>https://fatbobman.com/en/weekly/issue-129/</link><guid isPermaLink="true">https://fatbobman.com/en/weekly/issue-129/</guid><description>The annual Let&apos;s Vision conference was held in Shanghai as scheduled, with this year’s theme being: Born to Create, Powered by AI. Therefore, alongside the regular sessions on Swift and spatial computing, the conference invited many developers to share their applications and insights regarding AI in their daily workflows. I benefited immensely from the speakers&apos; introductions to their AI workflows. The AI-themed venue, originally designed to hold only 300 people, was packed inside and out with an enthusiastic crowd.</description><pubDate>Mon, 30 Mar 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The annual Let&apos;s Vision conference was held in Shanghai as scheduled, with this year’s theme being: Born to Create, Powered by AI. Therefore, alongside the regular sessions on Swift and spatial computing, the conference invited many developers to share their applications and insights regarding AI in their daily workflows. I benefited immensely from the speakers&apos; introductions to their AI workflows. The AI-themed venue, originally designed to hold only 300 people, was packed inside and out with an enthusiastic crowd.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/weekly/issue-129/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>weekly</category><category>swiftui</category><author>Fatbobman</author></item><item><title>Is My App Stuck in Review? - Fatbobman&apos;s Swift Weekly #128</title><link>https://fatbobman.com/en/weekly/issue-128/</link><guid isPermaLink="true">https://fatbobman.com/en/weekly/issue-128/</guid><description>Last Thursday, a user in my Discord community complained that their app had been submitted to App Store Connect for four or five days but still hadn&apos;t entered the review process. While I was enthusiastically analyzing the possible reasons with everyone, my heart suddenly skipped a beat: it seemed that the app I submitted on Monday hadn&apos;t received any review updates either.</description><pubDate>Mon, 23 Mar 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last Thursday, a user in my Discord community complained that their app had been submitted to App Store Connect for four or five days but still hadn&apos;t entered the review process. While I was enthusiastically analyzing the possible reasons with everyone, my heart suddenly skipped a beat: it seemed that the app I submitted on Monday hadn&apos;t received any review updates either.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/weekly/issue-128/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>weekly</category><category>swiftui</category><author>Fatbobman</author></item><item><title>CDE: An Attempt to Make Core Data Feel More Like Modern Swift</title><link>https://fatbobman.com/en/posts/cde-an-attempt-to-make-core-data-feel-more-like-modern-swift/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/cde-an-attempt-to-make-core-data-feel-more-like-modern-swift/</guid><description>In my previous article, I discussed the current reality of Core Data in today&apos;s projects: it hasn&apos;t disappeared, and it still has unique value, but the disconnect between it and modern Swift projects is becoming increasingly apparent. In this article, I will introduce my experimental project Core Data Evolution, exploring whether we can make Core Data continue to exist in modern Swift projects in a more natural way?</description><pubDate>Wed, 18 Mar 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In my previous article, I discussed the current reality of Core Data in today&apos;s projects: it hasn&apos;t disappeared, and it still has unique value, but the disconnect between it and modern Swift projects is becoming increasingly apparent. In this article, I will introduce my experimental project Core Data Evolution, exploring whether we can make Core Data continue to exist in modern Swift projects in a more natural way?&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/cde-an-attempt-to-make-core-data-feel-more-like-modern-swift/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>core data</category><category>concurrency</category><author>Fatbobman</author></item><item><title>Apple at 50 and Me at 51 - Fatbobman&apos;s Swift Weekly #127</title><link>https://fatbobman.com/en/weekly/issue-127/</link><guid isPermaLink="true">https://fatbobman.com/en/weekly/issue-127/</guid><description>In less than half a month, Apple will celebrate its 50th birthday. However, because of Apple&apos;s image as a constant trendsetter, many people don&apos;t realize that it is now a veritable elder statesman in the IT industry. Among the tech giants of its age, very few remain at the top-tier table today.</description><pubDate>Mon, 16 Mar 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In less than half a month, Apple will celebrate its 50th birthday. However, because of Apple&apos;s image as a constant trendsetter, many people don&apos;t realize that it is now a veritable elder statesman in the IT industry. Among the tech giants of its age, very few remain at the top-tier table today.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/weekly/issue-127/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>weekly</category><category>swiftui</category><author>Fatbobman</author></item><item><title> Why I&apos;m Still Thinking About Core Data in 2026</title><link>https://fatbobman.com/en/posts/why-i-am-still-thinking-about-core-data-in-2026/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/why-i-am-still-thinking-about-core-data-in-2026/</guid><description>Core Data remains widely used in 2026, but its mismatch with modern Swift concurrency, type safety, and code expression is growing. This article outlines the three core pain points and explores what modernization might look like without abandoning Core Data.</description><pubDate>Wed, 11 Mar 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Core Data remains widely used in 2026, but its mismatch with modern Swift concurrency, type safety, and code expression is growing. This article outlines the three core pain points and explores what modernization might look like without abandoning Core Data.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/why-i-am-still-thinking-about-core-data-in-2026/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>core data</category><author>Fatbobman</author></item><item><title>MacBook Neo: The Starting Point of Apple&apos;s Return to Campus - Fatbobman&apos;s Swift Weekly #126</title><link>https://fatbobman.com/en/weekly/issue-126/</link><guid isPermaLink="true">https://fatbobman.com/en/weekly/issue-126/</guid><description>Last week, Apple launched several new hardware products. Unlike previous launch events, this release was unusually low-key. Initially, I was only interested in the newly announced monitor, but after seeing numerous tech media outlets criticizing the MacBook Neo&apos;s specs, I couldn&apos;t help but pay closer attention to it. Looking past the superficial downgrades, I saw Apple&apos;s clear determination to return to the education market through its precise pricing strategy.</description><pubDate>Mon, 09 Mar 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last week, Apple launched several new hardware products. Unlike previous launch events, this release was unusually low-key. Initially, I was only interested in the newly announced monitor, but after seeing numerous tech media outlets criticizing the MacBook Neo&apos;s specs, I couldn&apos;t help but pay closer attention to it. Looking past the superficial downgrades, I saw Apple&apos;s clear determination to return to the education market through its precise pricing strategy.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/weekly/issue-126/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>weekly</category><category>swiftui</category><author>Fatbobman</author></item><item><title>Why Does Passing NSManagedObjectContext Across Isolation Domains No Longer Error in Swift 6.2? The Real Change Isn&apos;t in the Compiler</title><link>https://fatbobman.com/en/posts/sendable-nsmanagedobjectcontext/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/sendable-nsmanagedobjectcontext/</guid><description>This post documents a recent debugging journey: starting from a test failure, tracing all the way down to the Core Data SDK interface, and ultimately discovering that the key change had nothing to do with the Swift compiler itself — it was how NSManagedObjectContext is imported into Swift that had changed.</description><pubDate>Wed, 04 Mar 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This post documents a recent debugging journey: starting from a test failure, tracing all the way down to the Core Data SDK interface, and ultimately discovering that the key change had nothing to do with the Swift compiler itself — it was how NSManagedObjectContext is imported into Swift that had changed.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/sendable-nsmanagedobjectcontext/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>concurrency</category><category>core data</category><author>Fatbobman</author></item><item><title>Xcode 26.3 + Claude Agent: Model Swapping,MCP, Skills, and Adaptive Configuration</title><link>https://fatbobman.com/en/posts/xcode-263-claude/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/xcode-263-claude/</guid><description>Unexpectedly, Apple has directly provided support for Claude Code/Codex in Xcode 26.3. With this update, developers can finally use native AI Agents elegantly within Xcode. Over the past two days, I’ve conducted a series of experiments with this new version, including configuring MCP and writing an adaptive `CLAUDE.md`. This article uses Claude Code as an example to share some tips that go beyond the official documentation.</description><pubDate>Fri, 06 Feb 2026 02:30:00 GMT</pubDate><content:encoded>&lt;p&gt;Unexpectedly, Apple has directly provided support for Claude Code/Codex in Xcode 26.3. With this update, developers can finally use native AI Agents elegantly within Xcode. Over the past two days, I’ve conducted a series of experiments with this new version, including configuring MCP and writing an adaptive `CLAUDE.md`. This article uses Claude Code as an example to share some tips that go beyond the official documentation.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/xcode-263-claude/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>ai</category><category>dev tools</category><author>Fatbobman</author></item><item><title>From Pixel Capture to Metadata: Reimagining Screen Recording Architecture on macOS</title><link>https://fatbobman.com/en/posts/screensage-from-pixel-to-meta/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/screensage-from-pixel-to-meta/</guid><description>Independent developer Sintone shares a deep dive into building a macOS screen recorder. Learn practical solutions for ScreenCaptureKit errors (-3821), high-performance video composition with Metal, and optimizing complex SwiftUI timelines using the new @Observable macro.</description><pubDate>Wed, 04 Feb 2026 14:12:00 GMT</pubDate><content:encoded>&lt;p&gt;Independent developer Sintone shares a deep dive into building a macOS screen recorder. Learn practical solutions for ScreenCaptureKit errors (-3821), high-performance video composition with Metal, and optimizing complex SwiftUI timelines using the new @Observable macro.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/screensage-from-pixel-to-meta/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>dev diary</category><category>guest post</category><author>Fatbobman</author></item><item><title>isolated(any) and #isolation: Letting Swift Closures Automatically Inherit Isolation</title><link>https://fatbobman.com/en/posts/letting-swift-closures-automatically-inherit-isolation/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/letting-swift-closures-automatically-inherit-isolation/</guid><description>Swift 6 introduced many new features and keywords for concurrency. While many of these might be rarely used in daily development, encountering specific scenarios without understanding these new concepts can lead to hitting a wall, even with AI assistance. In this post, I will walk through a concurrency issue encountered during development testing to introduce how to utilize **`@isolated(any)`** and the **`#isolation`** macro. These tools enable function isolation inheritance, allowing the compiler to automatically infer the execution context of closures.</description><pubDate>Wed, 21 Jan 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Swift 6 introduced many new features and keywords for concurrency. While many of these might be rarely used in daily development, encountering specific scenarios without understanding these new concepts can lead to hitting a wall, even with AI assistance. In this post, I will walk through a concurrency issue encountered during development testing to introduce how to utilize **`@isolated(any)`** and the **`#isolation`** macro. These tools enable function isolation inheritance, allowing the compiler to automatically infer the execution context of closures.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/letting-swift-closures-automatically-inherit-isolation/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>concurrency</category><author>Fatbobman</author></item><item><title>Surviving tvOS: An Engineering Log of an Atypical Media Player</title><link>https://fatbobman.com/en/posts/surviving-tvos/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/surviving-tvos/</guid><description>tvOS is far more than just an enlarged iPad. This article is an engineering log of the Syncnext player, providing an in-depth analysis of real pitfalls in Apple TV development: from the Focus mechanism, harsh storage constraints, to SwiftUI workarounds and AVPlayer deep optimization, helping developers &quot;survive&quot; on the tvOS platform</description><pubDate>Wed, 14 Jan 2026 14:12:00 GMT</pubDate><content:encoded>&lt;p&gt;tvOS is far more than just an enlarged iPad. This article is an engineering log of the Syncnext player, providing an in-depth analysis of real pitfalls in Apple TV development: from the Focus mechanism, harsh storage constraints, to SwiftUI workarounds and AVPlayer deep optimization, helping developers &quot;survive&quot; on the tvOS platform&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/surviving-tvos/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>swiftui</category><category>tvos</category><category>guest post</category><author>Fatbobman</author></item><item><title>Farewell to Portable Assembly: I&apos;ve Been Running Swift on MCUs for Seven Years</title><link>https://fatbobman.com/en/posts/running-swift-on-mcu/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/running-swift-on-mcu/</guid><description>Long before Apple’s official entry, Andy Liu and his MadMachine team spent years pioneering embedded Swift. Taking a unique path for complex development scenarios, they’ve built a perspective different from the mainstream. I invited Andy to share their journey—both as a historical record and a fresh outlook for the community.</description><pubDate>Wed, 07 Jan 2026 14:12:00 GMT</pubDate><content:encoded>&lt;p&gt;Long before Apple’s official entry, Andy Liu and his MadMachine team spent years pioneering embedded Swift. Taking a unique path for complex development scenarios, they’ve built a perspective different from the mainstream. I invited Andy to share their journey—both as a historical record and a fresh outlook for the community.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/running-swift-on-mcu/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>dev diary</category><category>guest post</category><author>Fatbobman</author></item><item><title>The Indie Developer&apos;s Trial: Zipic&apos;s Productization Journey from 0 to 1</title><link>https://fatbobman.com/en/posts/zipic-1-from-0-to-1/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/zipic-1-from-0-to-1/</guid><description>Building an indie product sounds easy, but you don&apos;t realize how deep the water is until you jump in. This is the true story of an indie developer turning a small workplace requirement into a flagship product. We follow the perspective of Zipic&apos;s creator, Shili, to review the journey from 0 to 1. This part focuses on product design and decision-making.</description><pubDate>Mon, 22 Dec 2025 14:12:00 GMT</pubDate><content:encoded>&lt;p&gt;Building an indie product sounds easy, but you don&apos;t realize how deep the water is until you jump in. This is the true story of an indie developer turning a small workplace requirement into a flagship product. We follow the perspective of Zipic&apos;s creator, Shili, to review the journey from 0 to 1. This part focuses on product design and decision-making.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/zipic-1-from-0-to-1/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>dev diary</category><category>guest post</category><author>Fatbobman</author></item><item><title>Escaping the Mac App Store: Building a Distribution and Sales System for Indie Apps from Scratch</title><link>https://fatbobman.com/en/posts/zipic-2-selling-and-distribution/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/zipic-2-selling-and-distribution/</guid><description>The Mac App Store is simple to use, but it may not be suitable for all products. In this article, we follow the perspective of Zipic creator Shili to solve the distribution and sales problems of a macOS indie app.</description><pubDate>Mon, 22 Dec 2025 14:11:00 GMT</pubDate><content:encoded>&lt;p&gt;The Mac App Store is simple to use, but it may not be suitable for all products. In this article, we follow the perspective of Zipic creator Shili to solve the distribution and sales problems of a macOS indie app.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;https://fatbobman.com/en/posts/zipic-2-selling-and-distribution/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>dev diary</category><category>guest post</category><author>Fatbobman</author></item><item><title>【Tips】Why Child @State Won&apos;t Update from Parent in SwiftUI</title><link>https://fatbobman.com/en/snippet/why-child-state-won-not-update-from-parent-in-swiftui/</link><guid isPermaLink="true">https://fatbobman.com/en/snippet/why-child-state-won-not-update-from-parent-in-swiftui/</guid><description>Assigning values to @State in init usually fails on updates. Discover the mechanics of SwiftUI View Identity and the correct data flow patterns to fix this common issue.</description><pubDate>Thu, 18 Dec 2025 08:21:01 GMT</pubDate><content:encoded>&lt;p&gt;Assigning values to @State in init usually fails on updates. Discover the mechanics of SwiftUI View Identity and the correct data flow patterns to fix this common issue.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;/en/snippet/why-child-state-won-not-update-from-parent-in-swiftui/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>swiftui</category><author>Fatbobman</author></item><item><title>【Tips】Fixing GTM Events in Partytown: Forwarding dataLayer &amp; gtag</title><link>https://fatbobman.com/en/snippet/how-to-forward-custom-tag-events-to-gtm-running-inside-partytown/</link><guid isPermaLink="true">https://fatbobman.com/en/snippet/how-to-forward-custom-tag-events-to-gtm-running-inside-partytown/</guid><description>Did your GA4 events stop working after optimizing with Partytown? Learn how to configure the `forward` property in Astro to bridge `gtag` and `dataLayer.push` between the main thread and Web Workers.</description><pubDate>Mon, 08 Dec 2025 14:20:00 GMT</pubDate><content:encoded>&lt;p&gt;Did your GA4 events stop working after optimizing with Partytown? Learn how to configure the `forward` property in Astro to bridge `gtag` and `dataLayer.push` between the main thread and Web Workers.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;/en/snippet/how-to-forward-custom-tag-events-to-gtm-running-inside-partytown/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>web</category><category>performance</category><category>astro</category><author>Fatbobman</author></item><item><title>【Tips】Faster Swift 6 Builds: Enabling SwiftSyntax Prebuilts</title><link>https://fatbobman.com/en/snippet/speed-up-compilation-with-prebuilt-swift-syntax/</link><guid isPermaLink="true">https://fatbobman.com/en/snippet/speed-up-compilation-with-prebuilt-swift-syntax/</guid><description>Is compiling Swift Macros slowing you down? Learn how to enable SwiftSyntax Prebuilts in Swift 6.1+ to significantly slash Xcode build times.</description><pubDate>Fri, 06 Jun 2025 00:20:00 GMT</pubDate><content:encoded>&lt;p&gt;Is compiling Swift Macros slowing you down? Learn how to enable SwiftSyntax Prebuilts in Swift 6.1+ to significantly slash Xcode build times.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;/en/snippet/speed-up-compilation-with-prebuilt-swift-syntax/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><author>Fatbobman</author></item><item><title>【Tips】Swift package Access Level: Sharing Code Across Targets Securely</title><link>https://fatbobman.com/en/snippet/controlling-access-within-a-swift-package/</link><guid isPermaLink="true">https://fatbobman.com/en/snippet/controlling-access-within-a-swift-package/</guid><description>Learn how to share code between multiple Targets within a Swift Package without exposing it publicly. We explore the `package` access modifier to bridge the gap between `internal` and `public`.</description><pubDate>Thu, 08 May 2025 14:21:01 GMT</pubDate><content:encoded>&lt;p&gt;Learn how to share code between multiple Targets within a Swift Package without exposing it publicly. We explore the `package` access modifier to bridge the gap between `internal` and `public`.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;/en/snippet/controlling-access-within-a-swift-package/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><author>Fatbobman</author></item><item><title>【Tips】Fixing SwiftLint Configuration for Monorepos in VSCode &amp; Cursor</title><link>https://fatbobman.com/en/snippet/fixing-swiftlint-configuration-not-working-in-monorepo-projects/</link><guid isPermaLink="true">https://fatbobman.com/en/snippet/fixing-swiftlint-configuration-not-working-in-monorepo-projects/</guid><description>SwiftLint ignoring your root config in VSCode or Cursor? Learn how to set `configSearchPaths` and structure your Monorepo to share linting rules across multiple packages.</description><pubDate>Thu, 24 Apr 2025 14:20:00 GMT</pubDate><content:encoded>&lt;p&gt;SwiftLint ignoring your root config in VSCode or Cursor? Learn how to set `configSearchPaths` and structure your Monorepo to share linting rules across multiple packages.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;/en/snippet/fixing-swiftlint-configuration-not-working-in-monorepo-projects/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>dev tools</category><author>Fatbobman</author></item><item><title>【Tips】VSCode/Cursor Core Data: Manually Compiling xcdatamodeld for Tests</title><link>https://fatbobman.com/en/snippet/how-to-test-core-data-code-in-vscode-cursor/</link><guid isPermaLink="true">https://fatbobman.com/en/snippet/how-to-test-core-data-code-in-vscode-cursor/</guid><description>Core Data unit tests failing in VSCode or Cursor? Learn how to configure the Xcode toolchain and use `xcrun momc` to manually compile `.xcdatamodeld` files.</description><pubDate>Tue, 15 Apr 2025 14:21:01 GMT</pubDate><content:encoded>&lt;p&gt;Core Data unit tests failing in VSCode or Cursor? Learn how to configure the Xcode toolchain and use `xcrun momc` to manually compile `.xcdatamodeld` files.&lt;/p&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&gt;&lt;a href=&quot;https://fatbobman.com/zh/rss.xml&quot;&gt;&lt;b&gt;订阅中文版 RSS&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   &lt;div style=&quot;margin-top: 20px;&quot;&gt;
                   &lt;p&quot;&gt;&lt;a href=&quot;/en/snippet/how-to-test-core-data-code-in-vscode-cursor/&quot;&gt;&lt;b&gt;Read More&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
                   &lt;/div&gt;
                   </content:encoded><category>computing</category><category>swift</category><category>learning</category><category>programming</category><category>swift-programming</category><category>ios-development</category><category>core data</category><author>Fatbobman</author></item></channel></rss>