<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>Paulo's blog feed — Swift</title>
        <link>https://pfandrade.me/tags/Swift/</link>
        <description>Blog post summaries tagged with "Swift"</description>
        <lastBuildDate>Mon, 18 May 2026 10:17:33 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>Next.js using Feed</generator>
        <item>
            <title><![CDATA[Using SwiftUI to Build a Mac-assed App in 2026]]></title>
            <link>https://pfandrade.me/blog/mac-assed-swiftui-app/</link>
            <guid isPermaLink="false">https://pfandrade.me/blog/mac-assed-swiftui-app/</guid>
            <pubDate>Wed, 06 May 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[More than five years after SwiftUI's release, how well does it hold up for building a first-class Mac app?]]></description>
        </item>
        <item>
            <title><![CDATA[Swift Modules and Code/Assets Duplication]]></title>
            <link>https://pfandrade.me/blog/swift-modules-and-codeassets-duplication/</link>
            <guid isPermaLink="false">https://pfandrade.me/blog/swift-modules-and-codeassets-duplication/</guid>
            <pubDate>Wed, 07 Jan 2026 11:46:00 GMT</pubDate>
            <description><![CDATA[How to use SPM modules in an Xcode project with several targets and avoid duplicated code and assets.]]></description>
        </item>
        <item>
            <title><![CDATA[Swift Build Times and Module Verification…]]></title>
            <link>https://pfandrade.me/blog/swift-build-times-and-module-verification/</link>
            <guid isPermaLink="false">https://pfandrade.me/blog/swift-build-times-and-module-verification/</guid>
            <pubDate>Mon, 26 Aug 2024 10:07:25 GMT</pubDate>
            <description><![CDATA[A diagnostic of slow Swift build times after modularizing, focusing on module verification and practical fixes to speed up compilation.]]></description>
        </item>
        <item>
            <title><![CDATA[Mixing Swift, Objective-C, SPM and Static Frameworks]]></title>
            <link>https://pfandrade.me/blog/mixing-swift-objective-c-spm-and-static-frameworks/</link>
            <guid isPermaLink="false">https://pfandrade.me/blog/mixing-swift-objective-c-spm-and-static-frameworks/</guid>
            <pubDate>Mon, 07 Mar 2022 13:35:25 GMT</pubDate>
            <description><![CDATA[Describes problems and solutions when integrating Swift packages into an Objective-C project structure that uses static frameworks.]]></description>
        </item>
        <item>
            <title><![CDATA[Generic View Controllers with Storyboards]]></title>
            <link>https://pfandrade.me/blog/generic-view-controllers-with-storyboards/</link>
            <guid isPermaLink="false">https://pfandrade.me/blog/generic-view-controllers-with-storyboards/</guid>
            <pubDate>Fri, 05 Feb 2021 18:10:25 GMT</pubDate>
            <description><![CDATA[Patterns and practical workarounds for using generic view controllers with storyboards when the storyboard needs a concrete class.]]></description>
        </item>
        <item>
            <title><![CDATA[AnyDecodable]]></title>
            <link>https://pfandrade.me/blog/anydecodable/</link>
            <guid isPermaLink="false">https://pfandrade.me/blog/anydecodable/</guid>
            <pubDate>Wed, 12 Feb 2020 15:40:25 GMT</pubDate>
            <description><![CDATA[Presents `AnyDecodable`, a flexible approach to decoding JSON with `Codable` when the exact types are unknown ahead of time.]]></description>
        </item>
        <item>
            <title><![CDATA[Splitting Your Xcode Project into Modules]]></title>
            <link>https://pfandrade.me/blog/splitting-your-xcode-project-into-modules/</link>
            <guid isPermaLink="false">https://pfandrade.me/blog/splitting-your-xcode-project-into-modules/</guid>
            <pubDate>Thu, 06 Feb 2020 14:08:25 GMT</pubDate>
            <description><![CDATA[Practical steps to modularize an Xcode project into separate frameworks and common pitfalls related to linking and build flags.]]></description>
        </item>
        <item>
            <title><![CDATA[Unsafe Swift]]></title>
            <link>https://pfandrade.me/blog/unsafe-swift/</link>
            <guid isPermaLink="false">https://pfandrade.me/blog/unsafe-swift/</guid>
            <pubDate>Tue, 07 Jan 2020 15:24:25 GMT</pubDate>
            <description><![CDATA[A tutorial-style deep dive into working with unsafe pointers in Swift—memory layout, buffers, and patterns to work safely.]]></description>
        </item>
        <item>
            <title><![CDATA[@DynamicFont]]></title>
            <link>https://pfandrade.me/blog/dynamicfont/</link>
            <guid isPermaLink="false">https://pfandrade.me/blog/dynamicfont/</guid>
            <pubDate>Wed, 18 Sep 2019 10:30:25 GMT</pubDate>
            <description><![CDATA[Describes a Swift UI component to centralize font choices and support Dynamic Type and Dark Mode consistently across the app.]]></description>
        </item>
        <item>
            <title><![CDATA[Building Expectations]]></title>
            <link>https://pfandrade.me/blog/building-expectations/</link>
            <guid isPermaLink="false">https://pfandrade.me/blog/building-expectations/</guid>
            <pubDate>Mon, 17 Dec 2018 14:59:25 GMT</pubDate>
            <description><![CDATA[Introduces a simple Expectation object (backed by `NSCondition`) for waiting on asynchronous tasks outside of XCTest.]]></description>
        </item>
        <item>
            <title><![CDATA[Quick TCP Server Using NSSocketPort]]></title>
            <link>https://pfandrade.me/blog/quick-tcp-server-using-nssocketport/</link>
            <guid isPermaLink="false">https://pfandrade.me/blog/quick-tcp-server-using-nssocketport/</guid>
            <pubDate>Mon, 22 Oct 2018 12:23:25 GMT</pubDate>
            <description><![CDATA[How to use `NSSocketPort` to spin up a simple TCP server for testing without adding heavyweight dependencies.]]></description>
        </item>
        <item>
            <title><![CDATA[NSOperation KVO Pitfall]]></title>
            <link>https://pfandrade.me/blog/nsoperation-kvo-pitfall/</link>
            <guid isPermaLink="false">https://pfandrade.me/blog/nsoperation-kvo-pitfall/</guid>
            <pubDate>Fri, 01 Jun 2018 08:43:42 GMT</pubDate>
            <description><![CDATA[A deep-dive into an NSOperation KVO bug and practical guidance on managing asynchronous operation state to prevent hangs.]]></description>
        </item>
        <item>
            <title><![CDATA[Taming Build Variants With Xcode Configuration Files]]></title>
            <link>https://pfandrade.me/blog/taming-build-variants-with-xcode-configuration-files/</link>
            <guid isPermaLink="false">https://pfandrade.me/blog/taming-build-variants-with-xcode-configuration-files/</guid>
            <pubDate>Tue, 10 Apr 2018 11:01:38 GMT</pubDate>
            <description><![CDATA[How to manage multiple Xcode build configurations with .xcconfig files so build settings stay maintainable and preprocessor logic stays readable.]]></description>
        </item>
        <item>
            <title><![CDATA[Rate Limiting Using a Token Bucket in Swift]]></title>
            <link>https://pfandrade.me/blog/rate-limiting-using-a-token-bucket-in-swift/</link>
            <guid isPermaLink="false">https://pfandrade.me/blog/rate-limiting-using-a-token-bucket-in-swift/</guid>
            <pubDate>Fri, 16 Mar 2018 10:30:24 GMT</pubDate>
            <description><![CDATA[A practical guide to implementing a token bucket in Swift to rate-limit work without fragile timers or runloop dependencies.]]></description>
        </item>
    </channel>
</rss>