<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Swift on Evan Coleman</title><link>https://edc.me/tags/swift/</link><description>Recent content in Swift on Evan Coleman</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 08 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://edc.me/tags/swift/index.xml" rel="self" type="application/rss+xml"/><item><title>Introducing xcode-remote: A Feedback Loop for AI Agents That Write Swift</title><link>https://edc.me/posts/introducing-xcode-remote/</link><pubDate>Wed, 08 Jul 2026 00:00:00 +0000</pubDate><guid>https://edc.me/posts/introducing-xcode-remote/</guid><description>&lt;p>My coding agents live on a headless Mac, supervised by &lt;a href="https://edc.me/posts/introducing-leo/">Leo&lt;/a>. They run in launchd background sessions: no GUI, no logged-in desktop, nobody at the keyboard. For most work that&amp;rsquo;s fine. An agent can write Swift, run tests, even boot a simulator headlessly and screenshot it. What it can&amp;rsquo;t do is put the app in front of me.&lt;/p>
&lt;p>The apps I want to watch run on the Mac I&amp;rsquo;m sitting at, in a simulator there or on the iPhone paired to it. So for a while the loop closed through me: the agent builds, I copy the &lt;code>.app&lt;/code> over, launch it, squint at Console, and paste crash reports back into the conversation. That got old fast.&lt;/p></description></item><item><title>Introducing MacroBrewery: A Collection of Swift Macros for Code Generation</title><link>https://edc.me/posts/introducing-macrobrewery/</link><pubDate>Tue, 30 Dec 2025 00:00:00 +0000</pubDate><guid>https://edc.me/posts/introducing-macrobrewery/</guid><description>&lt;p>If you&amp;rsquo;ve worked on a Swift codebase of any size, you&amp;rsquo;ve written the same boilerplate code hundreds of times. Memberwise initializers. Builder patterns. Enum case accessors. Test stubs. It&amp;rsquo;s tedious, error-prone, and frankly, boring.&lt;/p>
&lt;p>Swift 5.9 introduced macros, and I finally had a way to solve this properly. So I built &lt;a href="https://github.com/evandcoleman/MacroBrewery">MacroBrewery&lt;/a>, a collection of macros that generate the repetitive code I was tired of writing by hand.&lt;/p>
&lt;h2 id="whats-included">What&amp;rsquo;s Included&lt;/h2>
&lt;h3 id="autoinit">@AutoInit&lt;/h3>
&lt;p>Generates memberwise initializers that improve on Swift&amp;rsquo;s built-in one: optionals default to &lt;code>nil&lt;/code>, properties with default values preserve them as parameter defaults, and you can set any access level.&lt;/p></description></item></channel></rss>