<?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>Fatbobman&apos;s Blog: in-depth, original articles on Swift, SwiftUI, Core Data and SwiftData, plus hands-on notes on using and understanding AI in real development. Home of Fatbobman&apos;s Swift Weekly.</description><link>https://fatbobman.com/</link><language>en</language><follow_challenge><feedId>57718511161060352</feedId><userId>60878761419746304</userId></follow_challenge><item><title>The Case of the Rapidly Disappearing Disk Space - Fatbobman&apos;s Swift Weekly #160</title><link>https://fatbobman.com/en/weekly/issue-160/</link><guid isPermaLink="true">https://fatbobman.com/en/weekly/issue-160/</guid><description>My MacBook contains almost nothing but development tools and related data, and I’ve long maintained at least 500–600 GB of free space. For quite some time, I assumed its internal storage was more than sufficient. But coding agents have changed that. Last week, I found myself in the rather embarrassing situation of having my disk space rapidly exhausted—not once, but twice.</description><pubDate>Mon, 02 Nov 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My MacBook contains almost nothing but development tools and related data, and I’ve long maintained at least 500–600 GB of free space. For quite some time, I assumed its internal storage was more than sufficient. But coding agents have changed that. Last week, I found myself in the rather embarrassing situation of having my disk space rapidly exhausted—not once, but twice.&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-160/&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>When Apps Are No Longer Tied to a Specific Operating System - Fatbobman&apos;s Swift Weekly #159</title><link>https://fatbobman.com/en/weekly/issue-159/</link><guid isPermaLink="true">https://fatbobman.com/en/weekly/issue-159/</guid><description>This week’s issue features three intriguing projects: Cutefish, SimRun, and Mac Android Subsystem. They take different technical approaches. One provides a runtime environment by implementing compatible APIs and frameworks, another runs apps built for a simulator directly, and the third hides an entire virtualized operating system in the background. </description><pubDate>Mon, 26 Oct 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This week’s issue features three intriguing projects: Cutefish, SimRun, and Mac Android Subsystem. They take different technical approaches. One provides a runtime environment by implementing compatible APIs and frameworks, another runs apps built for a simulator directly, and the third hides an entire virtualized operating system in the background. &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-159/&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>Who Is the Real Threat to AI-Relay Apps? - Fatbobman&apos;s Swift Weekly #158</title><link>https://fatbobman.com/en/weekly/issue-158/</link><guid isPermaLink="true">https://fatbobman.com/en/weekly/issue-158/</guid><description>Last week, I was invited to Beijing to attend the inaugural Apple App Incubator event, where Tim Cook attended in person to present awards to the winners.</description><pubDate>Mon, 19 Oct 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last week, I was invited to Beijing to attend the inaugural Apple App Incubator event, where Tim Cook attended in person to present awards to the winners.&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-158/&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>When Build in Public Goes Back Underground - Fatbobman&apos;s Swift Weekly #157</title><link>https://fatbobman.com/en/weekly/issue-157/</link><guid isPermaLink="true">https://fatbobman.com/en/weekly/issue-157/</guid><description>Over the past few months, the community has seen a growing number of cases where AI is used to quickly reverse-engineer commercial products or create pixel-perfect replicas of popular apps. With enough tokens to burn, building a free “shadow version” no longer seems particularly difficult.</description><pubDate>Mon, 12 Oct 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Over the past few months, the community has seen a growing number of cases where AI is used to quickly reverse-engineer commercial products or create pixel-perfect replicas of popular apps. With enough tokens to burn, building a free “shadow version” no longer seems particularly difficult.&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-157/&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>AI-Friendly Frameworks: As Abstraction Moves Up, How Can Verification Keep Pace?</title><link>https://fatbobman.com/en/posts/ai-friendly-framework/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/ai-friendly-framework/</guid><description>As AI coding becomes widespread, more and more developers lean toward one view: imperative frameworks like UIKit may suit coding agents better than SwiftUI. The reasoning is intuitive. UIKit&apos;s logic is direct and explicit: create objects, set properties, add them to the hierarchy, build constraints. Every step acts on a concrete entity. SwiftUI, by contrast, tucks much of its implementation detail behind declarative syntax, where state, environment, identity, layout, and rendering jointly determine the final result.</description><pubDate>Wed, 07 Oct 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As AI coding becomes widespread, more and more developers lean toward one view: imperative frameworks like UIKit may suit coding agents better than SwiftUI. The reasoning is intuitive. UIKit&apos;s logic is direct and explicit: create objects, set properties, add them to the hierarchy, build constraints. Every step acts on a concrete entity. SwiftUI, by contrast, tucks much of its implementation detail behind declarative syntax, where state, environment, identity, layout, and rendering jointly determine the final result.&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/ai-friendly-framework/&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>ai</category><author>Fatbobman</author></item><item><title>Swift Server Has Another Google - Fatbobman&apos;s Swift Weekly #156</title><link>https://fatbobman.com/en/weekly/issue-156/</link><guid isPermaLink="true">https://fatbobman.com/en/weekly/issue-156/</guid><description>Last week, Google Cloud introduced a Swift SDK for server-side development. It covers more than a hundred Google Cloud services, including Cloud Storage, IAM, Secret Manager, and AI, while providing essential cloud capabilities such as authentication, retries, and pagination. Google is very clear about its positioning: this is a Swift SDK built for servers, containers, and DevOps, not a client-side tool for iOS apps to access cloud services directly.</description><pubDate>Mon, 05 Oct 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Last week, Google Cloud introduced a Swift SDK for server-side development. It covers more than a hundred Google Cloud services, including Cloud Storage, IAM, Secret Manager, and AI, while providing essential cloud capabilities such as authentication, retries, and pagination. Google is very clear about its positioning: this is a Swift SDK built for servers, containers, and DevOps, not a client-side tool for iOS apps to access cloud services directly.&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-156/&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>Letting AI See SwiftUI: Xcode Preview MCP in Practice — Pitfalls and Hopes</title><link>https://fatbobman.com/en/posts/letting-ai-see-swiftui/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/letting-ai-see-swiftui/</guid><description>Xcode 26.3 marked the first time Apple opened its own capabilities to external agents through MCP. Many of those capabilities were already reachable through the CLI, but Preview rendering was entirely new. Xcode 27 went a step further with a headless MCP server, making these tools even easier to call, so I wove Preview rendering deeply into my AI workflows. Along the way I ran into a few pitfalls, and came away with some reflections and hopes.</description><pubDate>Wed, 30 Sep 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Xcode 26.3 marked the first time Apple opened its own capabilities to external agents through MCP. Many of those capabilities were already reachable through the CLI, but Preview rendering was entirely new. Xcode 27 went a step further with a headless MCP server, making these tools even easier to call, so I wove Preview rendering deeply into my AI workflows. Along the way I ran into a few pitfalls, and came away with some reflections and hopes.&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-ai-see-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><category>ai</category><category>dev tools</category><author>Fatbobman</author></item><item><title>ArrangementView: Think Before You Arrange</title><link>https://fatbobman.com/en/posts/arrangementview-think-before-you-arrange/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/arrangementview-think-before-you-arrange/</guid><description>In the first time I saw the `ArrangementView` API, I had a vague sense of discomfort, though I couldn’t quite put my finger on why. It wasn’t until I actually used it in Xcode 27.1 beta that the feeling began to take shape. After reading more of Apple’s materials and putting the API back into the context of the iPhone Duo, I realized that this discomfort came from two places. Part of it was simply that I hadn’t understood where the API was meant to fit; once I did, that part made sense. The other part came from the API itself—and remained even after I understood its design.</description><pubDate>Wed, 23 Sep 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In the first time I saw the `ArrangementView` API, I had a vague sense of discomfort, though I couldn’t quite put my finger on why. It wasn’t until I actually used it in Xcode 27.1 beta that the feeling began to take shape. After reading more of Apple’s materials and putting the API back into the context of the iPhone Duo, I realized that this discomfort came from two places. Part of it was simply that I hadn’t understood where the API was meant to fit; once I did, that part made sense. The other part came from the API itself—and remained even after I understood its design.&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/arrangementview-think-before-you-arrange/&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>From pbxproj to xcproj: Xcode Project Configuration Gets a JSON Format</title><link>https://fatbobman.com/en/posts/from-pbxproj-to-xcproj/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/from-pbxproj-to-xcproj/</guid><description>Apple has released the 27.2 beta. Although the iPhone Duo simulator is still missing, the new `project.xcproj` is quite eye-catching. It replaces the `project.pbxproj` build graph inside the `.xcodeproj` bundle, not the entire project bundle. What are its highlights, what problems does it solve, and what remains unchanged? This article will explore these aspects.</description><pubDate>Thu, 17 Sep 2026 14:30:00 GMT</pubDate><content:encoded>&lt;p&gt;Apple has released the 27.2 beta. Although the iPhone Duo simulator is still missing, the new `project.xcproj` is quite eye-catching. It replaces the `project.pbxproj` build graph inside the `.xcodeproj` bundle, not the entire project bundle. What are its highlights, what problems does it solve, and what remains unchanged? This article will explore these aspects.&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/from-pbxproj-to-xcproj/&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>SwiftData: Optimization Starts with Modeling</title><link>https://fatbobman.com/en/posts/swiftdata-optimization-starts-with-modeling/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/swiftdata-optimization-starts-with-modeling/</guid><description>Once a dataset grows large, SwiftData lists start to stutter. This has been the performance complaint I&apos;ve heard most often these past few years. Once you actually spend time on it, you find that the slowness isn&apos;t only the long initial load — the enormous memory footprint drags performance down just as much. This article looks at why these problems show up in SwiftData, and where to start fixing them.</description><pubDate>Wed, 02 Sep 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Once a dataset grows large, SwiftData lists start to stutter. This has been the performance complaint I&apos;ve heard most often these past few years. Once you actually spend time on it, you find that the slowness isn&apos;t only the long initial load — the enormous memory footprint drags performance down just as much. This article looks at why these problems show up in SwiftData, and where to start fixing them.&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/swiftdata-optimization-starts-with-modeling/&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>swiftdata</category><author>Fatbobman</author></item><item><title>From Using AI to Delegating Work to AI (Part 1): Why I No Longer Wait for Stronger Models</title><link>https://fatbobman.com/en/posts/from-using-ai-to-delegating-work-to-ai/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/from-using-ai-to-delegating-work-to-ai/</guid><description>From Q&amp;A and code generation to letting agents take on more complete pieces of work, I have now been using AI for several years.</description><pubDate>Wed, 19 Aug 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;From Q&amp;A and code generation to letting agents take on more complete pieces of work, I have now been using AI for several years.&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/from-using-ai-to-delegating-work-to-ai/&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><author>Fatbobman</author></item><item><title>From Using AI to Delegating Work to AI (Part 2): What I Mean by Delegability</title><link>https://fatbobman.com/en/posts/from-using-ai-to-delegating-work-to-ai-2/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/from-using-ai-to-delegating-work-to-ai-2/</guid><description>How to build a trusted AI collaborator? Discover &quot;delegatability&quot; using a deterministic runtime and external docs, featuring a practical Task-Driven workflow guide.</description><pubDate>Wed, 19 Aug 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;How to build a trusted AI collaborator? Discover &quot;delegatability&quot; using a deterministic runtime and external docs, featuring a practical Task-Driven workflow guide.&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/from-using-ai-to-delegating-work-to-ai-2/&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><author>Fatbobman</author></item><item><title>ContentBuilder Explained: The Secret Behind SwiftUI&apos;s Type-Checking Speedup</title><link>https://fatbobman.com/en/posts/contentbuilder-explained/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/contentbuilder-explained/</guid><description>In WWDC 2026, Apple engineers introduced a new SwiftUI feature — ContentBuilder. From the usage perspective, it seems to be nothing more than a ViewBuilder with a wider scope. Apple also claims this adjustment can significantly improve type-checking performance. This article will dissect the essence of ContentBuilder and explore the secrets behind the performance boost.</description><pubDate>Wed, 12 Aug 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In WWDC 2026, Apple engineers introduced a new SwiftUI feature — ContentBuilder. From the usage perspective, it seems to be nothing more than a ViewBuilder with a wider scope. Apple also claims this adjustment can significantly improve type-checking performance. This article will dissect the essence of ContentBuilder and explore the secrets behind the performance boost.&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/contentbuilder-explained/&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>Controlling Orphans in SwiftUI Text: Uncovering the Undocumented avoidsOrphans</title><link>https://fatbobman.com/en/posts/controlling-orphans-in-swiftui-text/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/controlling-orphans-in-swiftui-text/</guid><description>SwiftUI&apos;s Text has a default behavior: when the final line of a paragraph is left holding a single stranded word or character, it proactively pushes the complete word group from the preceding line down to join it, so that nothing is left standing alone. This bit of thoughtfulness is right most of the time, but it comes at a cost — the preceding line may be left with a wide gap. In narrow containers, or in mixed Chinese-English typesetting, that can end up disrupting the balance of the paragraph rather than preserving it.</description><pubDate>Thu, 06 Aug 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;SwiftUI&apos;s Text has a default behavior: when the final line of a paragraph is left holding a single stranded word or character, it proactively pushes the complete word group from the preceding line down to join it, so that nothing is left standing alone. This bit of thoughtfulness is right most of the time, but it comes at a cost — the preceding line may be left with a wide gap. In narrow containers, or in mixed Chinese-English typesetting, that can end up disrupting the balance of the paragraph rather than preserving it.&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/controlling-orphans-in-swiftui-text/&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>Liquid Glass: A Field Guide to UIKit Compatibility Pitfalls</title><link>https://fatbobman.com/en/posts/liquid-glass-a-field-guide-to-uikit-compatibility-pitfalls/</link><guid isPermaLink="true">https://fatbobman.com/en/posts/liquid-glass-a-field-guide-to-uikit-compatibility-pitfalls/</guid><description>Although Liquid Glass has been around for two years, the compatibility issues it introduced haven’t completely disappeared. Drawing on a real-world project, SLIT_STUDIO developer Megabits summarizes several common UIKit adaptation pitfalls and the solutions he used to address them.</description><pubDate>Wed, 29 Jul 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Although Liquid Glass has been around for two years, the compatibility issues it introduced haven’t completely disappeared. Drawing on a real-world project, SLIT_STUDIO developer Megabits summarizes several common UIKit adaptation pitfalls and the solutions he used to address them.&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/liquid-glass-a-field-guide-to-uikit-compatibility-pitfalls/&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>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>