We are a group of people excited by the Swift language. We meet each Saturday morning to share and discuss Swift-related topics.
All people and all skill levels are welcome to join.
RSVP: https://www.meetup.com/A-Flock-of-Swifts/
| Image / Link | Summary |
|---|---|
Kiraa |
YouTube channel by Errol Brandt focused on practical, skeptical analysis of AI and technology for business decision-makers. The channel pushes back on AI hype, with videos about AI economics, cloud AI, Apple/ARM hardware, open source, token usage, and the Kiraa engine. |
TileDown/tile-down |
A Swift static site generator called tiledown. It parses a constrained Markdown profile into typed tiles, then renders static HTML/CSS and optional browser JavaScript. It supports CommonMark/GFM basics, build-time math-to-SVG, charts, Mermaid, RSS, article PDFs, theming, and a local preview CLI. |
mihaelamj/cupertino-desktop |
Early-stage native Apple-platform app for browsing Apple Developer documentation, Swift Evolution |
| Image / Link | Summary |
|---|---|
![]() Monads are Easy |
Explains monads using a concrete warehouse/book-scanning analogy. The post frames a monad as something that can wrap a value and flatten nested containers via flatMap, then tests that idea against arrays, optionals, results, custom structs, and JSON. |
![]() Replacing Bash with Swift in an AI Harness |
Describes replacing a Bash tool in an AI coding harness with embedded Swift via SwiftScript. The author argues this creates a more controlled runtime than shell execution, while still needing clear sandboxing boundaries for real security. |
![]() Protecting sensitive content when screen sharing and remote control are active |
Apple documentation on detecting active screen capture, mirroring, and remote-control sessions. It recommends using SwiftUI’s isSceneCaptured or UIKit’s sceneCaptureState to selectively redact sensitive content, notify users, or disable risky actions while balancing privacy with usability. |
![]() Hide SwiftUI Views from Screenshot |
Investigates how to hide specific SwiftUI views from screenshots and screen recordings without wrapping them in a secure text field. The post traces the approach through CALayer capture flags, SwiftUI renderer internals, privacySensitive(false), and private redaction reasons, with caveats about SPI and security limits. |
![]() Type-Driven Design in Swift: Better Money Formatting |
Argues for separating raw money values from formatted display values in Swift. The article uses currency and rounding examples to show why formatted strings should not feed calculations, then proposes domain-specific types to keep calculation data and UI presentation distinct. |
extension Sequence {
func mapToSet<Transformed: Hashable, Failure: Error>(
transform: (Element) throws(Failure) -> Transformed
) throws(Failure) -> Set<Transformed> {
var accumulated = Set<Transformed>(minimumCapacity: underestimatedCount)
for element in self {
try accumulated.insert(transform(element))
}
return accumulated
}
func mapToCountedSet<Transformed, Failure: Error>(
transform: (Element) throws(Failure) -> Transformed
) throws(Failure) -> [Transformed: Int] {
var accumulated = [Transformed: Int](minimumCapacity: underestimatedCount)
for element in self {
try accumulated[transform(element), default: 0] += 1
}
return accumulated
}
}| Article | URL | Description |
|---|---|---|
| A Feature Flags System in Swift | https://livsycode.com/best-practices/a-feature-flags-system-in-swift/ | Walks through building a type-safe, thread-safe feature flag system in Swift, including feature definitions, priority-based sources, local overrides, and an internal QA/developer toggle screen. |
| A floating card using safeAreaBar | https://codakuma.com/floating-safe-area-bar/ | Shows how to build a bottom-pinned floating SwiftUI card using safeAreaBar on iOS 26, with an iOS 18 fallback based on safeAreaInset, material blur, and gradients. |
| ContentUnavailableView in SwiftUI - Complete Guide With Examples | https://www.sagarunagar.com/blog/contentunavailableview-swiftui/ | A practical guide to SwiftUI’s ContentUnavailableView, covering empty states, failed searches, recovery actions, customization, accessibility, and common mistakes. |
| Cupertino v1.1.0: my Apple docs index was 30% lies and I didn't know | https://aleahim.com/blog/cupertino-v1-1-0-poison-cleanup/ | Describes debugging and cleaning a corrupted Apple documentation search index, including crawler poison cases, CDN/SPA failure modes, audit checks, and release-version lessons. |
### Using idiomatic views in SwiftUI to build a chat app:
```swift
@Observable
final class ViewModel {
var items: [Item] = []
var input = ""
func send() {
items.append(.init(title: input, isUser: true))
items.append(.init(title: "Hello", isUser: false))
}
}
struct V: View {
var viewModel = ViewModel()
var body: some View {
List {
ForEach(viewModel.items.reversed()) { item in
let image = item.isUser ? "bubble.left" : "bubble.right"
Label(item.title, systemImage: image)
.listRowSeparator(.hidden)
.padding(.horizontal, 20)
.containerRelativeFrame(.horizontal, alignment: item.isUser ? .leading : .trailing)
.scaleEffect(y: -1)
}
}
.listStyle(.plain)
.safeAreaBar(edge: .top) {
HStack {
@Bindable var binding = viewModel
TextField("Send a message", text: $binding.input)
.frame(minHeight: 40)
.padding(.horizontal, 16)
.onSubmit(viewModel.send)
.glassEffect()
Button {
viewModel.send()
} label: {
Image(systemName: "arrow.up")
.font(.title.weight(.semibold))
.padding(6)
.tint(Color(uiColor: .systemBackground))
}
.glassEffect(.regular.tint(Color.accentColor).interactive(), in: Circle())
}
.padding(.horizontal, 16)
.scaleEffect(y: -1)
}
.scaleEffect(y: -1)
}
}
| < Swift 6.2 | Swift 6.2+ | |
|---|---|---|
struct, enum, func, class |
nonisolated |
@MainActor |
actor |
isolated to actor |
isolated to actor |
func synchronous() |
nonisolated(nonsending) |
nonisolated(nonsending) |
func nonsynchronous() async |
nonisolated(sending) |
nonisolated(nonsending) |
| run in background | nonisolated func f() async |
@concurrent func f() async |
This session focused heavily on Swift isolation, actor semantics, memory management, and SwiftUI state behavior. Participants discussed actor isolation control, async result support, ARC internals, and the practical realities of SwiftUI reevaluation. There was also discussion of zombie objects, pointer APIs, and classic software design patterns.
-
Swift isolation documentation: https://developer.apple.com/documentation/swift/isolation()
-
Actor isolation control proposal: https://github.com/swiftlang/swift-evolution/blob/main/proposals/0313-actor-isolation-control.md
-
Async result support proposal: https://github.com/swiftlang/swift-evolution/blob/main/proposals/0530-async-result-support.md
-
Discussion topics:
- Actor isolation semantics
- Async result handling
- Reevaluation behavior in SwiftUI
- State propagation through modifiers
-
Formatting values in SwiftUI: https://serialcoder.dev/text-tutorials/swiftui/formatting-values-in-swiftui-text-and-textfield/?utm_source=substack&utm_medium=email
-
SwiftUI state deep dive: https://www.nsvasilev.com/posts/swiftui-state/?utm_source=substack&utm_medium=email
-
Reusable SwiftUI views: https://matteomanferdini.com/swiftui-reusable-views/?ck_subscriber_id=2978341758&utm_source=convertkit&utm_medium=email&utm_campaign=SwiftLee%20Weekly%20-%20Issue%20323%20-%2021730246
-
Discussion topic:
- What portions of a view hierarchy reevaluate when modifier state changes
-
OpaquePointer documentation: https://developer.apple.com/documentation/swift/opaquepointer
-
Discussion topics:
- Zombie objects
unownedvsunowned(unsafe)- Pointer mutation
- Debugging memory issues
- WatchConnectivity reliability discussion: https://tarek-builds.dev/p/watchconnectivity-was-failing-40-of-the-time-so-i-stopped-using-it/?utm_source=substack&utm_medium=email
-
Software design patterns: https://en.wikipedia.org/wiki/Software_design_pattern
-
Prior A Flock of Swifts references: https://github.com/aflockofswifts/meetings/tree/main/2025#20250329 https://github.com/aflockofswifts/meetings/tree/main/2025#presentation-gof-design-patterns-in-swift
This session focused on Swift-based web tooling, Core Animation fundamentals, and developer infrastructure topics including Docker and Apple documentation workflows.
Participants shared resources related to static site generation, animation timing curves, and practical references for Core Animation behavior.
Josh ran a code-along where we used UICollectionView to power a large collection of items.
-
Toucan Sites (Swift-based static site generator): https://toucansites.com
-
Related site: https://aleahim.com
-
Apple documentation mirror/search: https://sosumi.ai
-
Core Animation Programming Guide: https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CoreAnimation_guide/Introduction/Introduction.html
-
Reacting to layer changes: https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CoreAnimation_guide/ReactingtoLayerChanges/ReactingtoLayerChanges.html#//apple_ref/doc/uid/TP40004514-CH7-SW6
-
Cubic Bézier curve visualizer: https://cubic-bezier.com/#.17,.67,.83,.67
-
Discussion topics:
- Animation timing curves
- Core Animation behavior
- Layer updates and rendering
-
TechWorld with Nana: https://www.youtube.com/@TechWorldwithNana
-
Discussion topics:
- DevOps
- Docker learning resources
- DockerCon talks and historical conference content
This session explored creative tooling (including voice-controlled presentations and video generation), Swift networking evolution, and practical career development advice. There was also discussion around Core Animation, compositional layouts, and real-world app development. A recurring theme was focusing on building and refining real projects as a path to growth.
Josh H. presented about interviewing and preparing for interviews.
- Bio - provide additional context not just a repeat of the resume
- Behavioral - prepare about experience you had where you made a mistake and how you overcame it
- Technical Deep Dive - prepare something interesting and with sufficient depth
- System Design
- Practical
- Knowledge (know the APIs)
- Data structures and Algorith - Yes, you need this.
- AI? How to use tooling effectively
You should always do a post mortem of the interview.
- Just not the right person for the job (it happens, move on)
- They liked someone else better (maybe ask about positions in another dept if big company)
- Behavioral (they didn't want to work with you)
- Technical (you didn't have the skill)
- Something else
-
Swift networking vision (accepted): https://github.com/swiftlang/swift-evolution/blob/main/visions/networking.md
-
Discussion topics:
- OpenAPI as the primary interface layer
- Standardizing underlying networking primitives (HTTP, TLS, observability)
swift-http-typesas a shared foundation
-
Apple training tutorial: https://developer.apple.com/tutorials/app-dev-training/getting-started-with-today
-
Compositional layout tutorial: https://www.kodeco.com/5436806-modern-collection-views-with-compositional-layouts
-
Core Animation demo: https://github.com/mihaelamj/CubeIn3DWithCoreAnimation
-
UIKit reference: https://www.oreilly.com/library/view/programming-ios-14/9781492092162/
-
Core Animation book: https://www.oreilly.com/library/view/ios-core-animation/9780133440744/
-
Voice-controlled presentation system: https://tow.com/2026/05/02/how-i-controlled-my-slides-with-my-voice-live-at-deep-dish-swift/ https://tow.com/2026/04/03/action-phrase-voice-control-for-live-production/
-
Remotion (video generation): https://www.remotion.dev
-
WWDC session reference (3D body pose & segmentation): https://www.youtube.com/watch?v=WWDC23-placeholder
-
Fieldnote (plant journal app): https://apps.apple.com/us/app/fieldnote-plant-journal/id6757382315
-
Core takeaway:
- Focus on improving real apps and iterating on existing work
- Study patterns used in your own projects
-
Interview preparation: https://interviewing.io/blog/we-co-wrote-the-official-sequel-to-cracking-the-coding-interview-introducing-beyond-ctci
-
Discussion topics:
- Pattern recognition in interviews
- Practicing with mock interviews
- Balancing preparation with full-time work
-
Notable ideas:
- “Best version of you”
- Emphasis on adaptability and learning across domains (UI, data, graphics)
-
Privacy-focused cell phone provider: http://calyx.org
-
Protocol stack reference: https://en.wikipedia.org/wiki/Protocol_stack
-
Ed's Lil Finder Guy (Etsy): https://www.etsy.com/listing/4489125113/lil-finder-guy-magnetic-poseable-mini
This session focused on SwiftUI patterns (notably .refreshable and task cancellation), growing interest in AI “agent skills” ecosystems, and security considerations in AI systems. There was also discussion around mentorship, career development, and practical engineering wisdom. Several reusable SwiftUI samples and concurrency patterns were shared.
-
SwiftUI samples: https://www.hackingwithswift.com/samples/swiftui
-
Refreshable + task cancellation discussion: https://antongubarenko.substack.com/p/swiftui-refreshable-task-cancellation?utm_source=substack&utm_medium=email
-
Example:
.refreshablewithdeferfor state cleanup
struct ContentView: View {
@State private var items = [1,2,3]
@State private var isRefreshing = false
var body: some View {
NavigationStack {
ScrollView {
VStack {
let _ = Self._printChanges()
let cells = ForEach(items, id: \.self) { item in
Label("List item number \(item)", systemImage: "star.fill")
}
if isRefreshing {
cells.redacted(reason: .placeholder)
} else {
cells
}
}
}
.refreshable {
isRefreshing = true
defer { isRefreshing = false }
let newItems = [4,5,6]
do {
for newItem in newItems {
items.append(newItem)
try await Task.sleep(for: .seconds(1))
}
} catch {
print(error)
}
}
}
}
}- Notable takeaway:
- “
defer {}always works” (practical pattern for state cleanup)
- “
-
Core Data agent skill: https://github.com/AvdLee/Core-Data-Agent-Skill
-
Swift agent skills collection: https://github.com/twostraws/swift-agent-skills
-
Mozilla on AI security and zero-day risks: https://blog.mozilla.org/en/privacy-security/ai-security-zero-day-vulnerabilities/
- SQLite Data (Point-Free): https://github.com/pointfreeco/sqlite-data
-
Tim Cook community letter: https://www.apple.com/community-letter-from-tim/
-
Apple developer event: https://developer.apple.com/events/view/8D4G7DD8LR/dashboard?ck_subscriber_id=2978341758&utm_source=convertkit&utm_medium=email&utm_campaign=SwiftLee%20Weekly%20-%20Issue%20320%20-%2021464229
- Video resources: https://www.youtube.com/watch?v=p3NdQL9DND0&list=PLBn01m5Vbs4CYoNYe55G1kijxeNza9SMe&index=10 https://www.youtube.com/watch?v=ddOFVcZ2X6M https://www.youtube.com/watch?v=SQ-bn9iC5gw https://www.youtube.com/watch?v=INlzHNbQ9Eg
-
Swift mentorship program: https://www.swift.org/mentorship/
-
Discussion topics:
- Mentorship opportunities
- Interview preparation challenges
- Balancing full-time work with career growth
https://www.etsy.com/listing/4489125113/lil-finder-guy-magnetic-poseable-mini
This session blended discussion of conference talks (notably Deep Dish Swift), SwiftUI architecture challenges, and advanced state management patterns. A strong theme was the difficulty of animation and motion design in SwiftUI, along with ongoing friction around @StateObject, view lifecycle, and UIKit feature gaps. Participants also shared a large collection of Swift articles, architecture references, and tooling resources, alongside some accessibility considerations and AI knowledge tools.
-
Deep Dish Swift: https://deepdishswift.com https://www.youtube.com/@DeepDishSwift/streams
-
Notable talks discussed:
- Playing the Long Game as an Indie Developer — Adam Tow
- Mistakes I Made In Alamofire 5 — Jon Shier
- AltStore: From Hacky Side Project to Legitimate App Store — Riley Testut
- Surviving in Low Connectivity — David Beck
- Reverse Engineering the macOS Genie Animation — Chad Etzel
-
try! Swift: https://www.youtube.com/@trySwiftConference
https://tryswift.jp/en/
-
SwiftUI
Transaction: https://developer.apple.com/documentation/SwiftUI/Transaction -
Keyframe animations: https://developer.apple.com/documentation/swiftui/keyframetimeline
-
Lazy initialization and
@StateObject: https://fatbobman.com/en/posts/lazy-initialization-state-in-swiftui/ https://developer.apple.com/documentation/swiftui/stateobject/init(wrappedvalue:) -
Discussion topics:
- Lifecycle challenges with
@StateObject - View recreation pitfalls
- Lack of UIKitDynamics equivalent in SwiftUI
- Difficulty of motion design even before implementation
- Lifecycle challenges with
struct V: View {
@State var isOn = true
var body: some View {
A(viewModel: VM())
}
}
public struct A: View {
@StateObject var viewModel: VM
public init(viewModel makeViewModel: @escaping @autoclosure () -> VM) {
_viewModel = .init(wrappedValue: makeViewModel())
}
public var body: some View {
Text(viewModel.name)
}
}
public final class VM: ObservableObject {
var name = "Josh"
init() {
print("expensive work")
}
}-
MVVM guidance: https://github.com/efremidze/swift-architecture-skill/blob/main/swift-architecture-skill/references/mvvm.md#view-guidance
-
Package traits in Xcode: https://www.massicotte.org/blog/package-traits-in-xcode/
-
Interface Segregation Principle in iOS: https://swiftandmemes.com/interface-segregation-principle-in-ios-how-to-prevent-protocol-from-becoming-a-prison/?utm_source=substack&utm_medium=email
-
Building a List replacement: https://swiftwithmajid.com/2026/04/06/building-list-replacement-in-swiftui/
-
SwiftUI preview testing: https://mobilea11y.com/blog/swiftui-preview-testing/?utm_source=substack&utm_medium=email
-
Swift Charts discussion (limitations and accessibility concerns)
-
URL resource values: https://developer.apple.com/documentation/foundation/urlresourcevalues
-
iOS file system overview: https://tanaschita.com/ios-file-system-overview/?utm_source=substack&utm_medium=email
-
FormatStyle references: https://formatstyle.guide/number/ https://goshdarnformatstyle.com/numeric-styles/
- Grove AI Knowledge Base: https://apps.apple.com/us/app/grove-ai-knowledge-base/id6759467865?mt=12
-
Swift Blog Carnival (tiny languages): https://christiantietze.de/posts/2026/04/swift-blog-carnival-tiny-languages
-
Jevons paradox: https://en.wikipedia.org/wiki/Jevons_paradox
-
Cupertino MCP documentation project: https://github.com/mihaelamj/cupertino
This session focused on modern Swift architecture patterns, emerging Apple ML tooling (MLX), and increasing overlap between Swift development and AI workflows. There was notable interest in coordinator-based navigation in SwiftUI, LLM tooling integration, and evolving Swift language features such as Codable redesign discussions.
-
Coordinator pattern for SwiftUI navigation: https://medium.com/@wesleymatlock/swiftui-coordinator-pattern-navigation-without-navigationlink-d9ebc5a3388b
-
Mihaela M. shared a production-style coordinator implementation: https://github.com/mihaelamj/nsspainapi/tree/main/Packages/Sources/SharedModels/Coordinators
-
Example navigation project: https://github.com/joshuajhomann/PokemonNavigation
- New Codable prototype discussion on Swift Forums: https://forums.swift.org/t/new-codable-prototype-available-for-feedback/85186
-
Apple MLX project: https://opensource.apple.com/projects/mlx/
-
MLX Swift bindings: https://github.com/ml-explore/mlx-swift
-
OpenAI Codex use cases for native Apple apps: https://developers.openai.com/codex/use-cases/native-ios-macos-apps?utm_source=substack&utm_medium=email
-
Andrej Karpathy discussion and notes: https://x.com/karpathy/status/2039805659525644595 https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f
- Obsidian-based LLM knowledge system: https://github.com/kepano/obsidian-skills
-
Privacy-focused services: https://calyx.org
-
Video resource: https://www.youtube.com/watch?v=31OyQa_3gZU
This session covered a wide range of Swift-adjacent topics, including SwiftUI animation techniques, concurrency discussions, and emerging graphics approaches like Gaussian splatting. Participants shared numerous high-quality resources spanning SwiftUI, Metal, system-level tools, retro computing, and Apple history. There was also discussion of development tooling, emulation environments, and cross-platform workflows.
-
Josh H. shared a guide on the SwiftUI Animatable protocol: https://www.sagarunagar.com/blog/swiftui-animatable-protocol-guide/?utm_source=substack&utm_medium=email
-
Additional SwiftUI text rendering insights: https://nilcoalescing.com/blog/AdjustingLineHeightInSwiftUIOniOS26/?utm_source=substack&utm_medium=email
-
Ray F. shared updates on Swift: https://www.swift.org/blog/whats-new-in-swift-march-2026/
- Discussion of concurrency models and tradeoffs: https://livsycode.com/swift/thread-vs-queue-vs-actor/?utm_source=substack&utm_medium=email
-
Gaussian splatting exploration: https://www.unrealtwin.com/gallery/derelict-corridor
-
Overview of Gaussian splatting: https://medium.com/data-science/a-comprehensive-overview-of-gaussian-splatting-e7d570081362
-
Metal-based implementation: https://github.com/scier/MetalSplatter
-
PAR2 command line tools: https://github.com/Parchive/par2cmdline
-
Swift logging server: https://github.com/krugazor/SwiftLoggerServer
-
SwiftBasic project: https://github.com/jeradesign/SwiftBasic
-
Cadova (creative coding / graphics tool): https://github.com/tomasf/Cadova
-
WWDC video index (including delisted content): https://nonstrict.eu/wwdcindex/
-
Steve Jobs archive downloads: https://stevejobsarchive.com/publications/download
-
Apple: The First 50 Years (book): https://books.apple.com/us/book/apple/id6749329845
-
Remastered 1984 Apple ad: https://www.youtube.com/watch?v=ErwS24cBZPc
-
Ubuntu installation references (Carlyn C.): https://documentation.ubuntu.com/desktop/en/24.04/tutorial/install-ubuntu-desktop/ https://linuxsimply.com/linux-basics/os-installation/dual-boot/ubuntu-on-mac/ https://www.youtube.com/watch?v=KIgxEEzT9ek https://linuxiac.com/linux-swap-explained-do-you-need-it/ https://www.youtube.com/watch?v=aUbHiKVRAAw
-
macOS recovery issue troubleshooting: https://mrmacintosh.com/how-to-fix-the-recovery-server-could-not-be-contacted-error-high-sierra-recovery-is-still-online-but-broken/
-
iPod emulator: https://mitchivin.github.io/ipod/
-
OpenEmu: https://openemu.org
-
Virtual II: https://www.virtualii.com
-
Merlin cross-development tools: https://www.brutaldeluxe.fr/products/crossdevtools/merlin/
Ed developed a new protein visualizing Vision Pro app:
- VisionProtein: https://visionprotein.com
This session centered on upcoming Apple events (WWDC26), Swift evolution (including Swift 6.3 and networking discussions), and the growing intersection of Swift with AI agent tooling. There was also active discussion around concurrency primitives, AsyncStream use cases, and emerging libraries. Participants shared resources spanning accessibility tooling, long-running AI application design, and developer ecosystem events.
-
WWDC 2026: https://developer.apple.com/wwdc26/
-
Self Service Repair (official Apple parts): https://selfservicerepair.com/en-US/home
-
Community-driven WWDC events: https://communitykit.social/ https://www.meetup.com/core-coffee-a-catch-up-for-ios-and-macos-developers/events/313900770
-
Conferences: https://swiftsonicconf.com https://omt-conf.com
-
Swift 6.3 release: https://www.swift.org/blog/swift-6.3-released/
-
Swift networking vision: https://github.com/swiftlang/swift-evolution/blob/main/visions/networking.md?utm_source=substack&utm_medium=email
-
Yielding accessors proposal: https://github.com/swiftlang/swift-evolution/blob/main/proposals/0474-yielding-accessors.md
-
SwiftUI environment value (
appearsActive): https://developer.apple.com/documentation/swiftui/environmentvalues/appearsactive
-
TaskGate (concurrency utility): https://github.com/mattmassicotte/TaskGate?utm_source=substack&utm_medium=email
-
Queue implementation discussion: https://github.com/mattmassicotte/Queue/blob/main/Sources/Queue/AsyncQueue.swift
-
Discussion topics:
- AsyncStream for server-sent events (SSE)
- Cross-platform networking challenges (macOS/Linux)
-
Blender MCP integration: https://github.com/ahujasid/blender-mcp
-
Google Stitch: https://stitch.withgoogle.com
-
Anthropic long-running app design: https://www.anthropic.com/engineering/harness-design-long-running-apps
-
Agent skill selection framework: https://www.avanderlee.com/ai-development/a-9-step-framework-for-choosing-the-right-agent-skill/?utm_source=substack&utm_medium=email
-
iOS Accessibility Agent Skill: https://github.com/dadederk/iOS-Accessibility-Agent-Skill?ck_subscriber_id=2978341758&utm_source=convertkit&utm_medium=email&utm_campaign=SwiftLee%20Weekly%20-%20Issue%20314%20-%2020983352
-
Sentry skill tooling: https://warden.sentry.dev/ https://github.com/getsentry/skills/tree/main/plugins/sentry-skills/skills/skill-scanner
-
Firebase / Xcode compatibility issue: firebase/firebase-ios-sdk#15974
You can now script the browser using Swift.
- https://soumyamahunt.medium.com/what-you-should-know-before-migrating-from-gcd-to-swift-concurrency-74d4d9b2c4e1
- https://github.com/mattmassicotte/Queue
https://nerdyak.tech/development/2023/04/06/avoid-swiftui-spacers-in-stacks.html
enum TimeoutError: Error {
case timedOut
}
func withTimeout<T: Sendable>(_ duration: Duration,
operation: @Sendable @escaping () async throws -> T) async throws -> T {
try await withThrowingTaskGroup(of: T.self) { group in
// Task 1: your actual work
group.addTask {
try await operation()
}
// Task 2: timeout
group.addTask {
try await Task.sleep(for: duration)
throw TimeoutError.timedOut
}
let result = try await group.next()!
group.cancelAll()
return result
}
}Dicussed copy on write and how it preserves value semantics and isolation.
Ed's VisionPro app is available for pre-order and shipping on April 1!
To prepare us to understand some of the new Swift Evolution proposals, Josh took us on a playground quick tour through:
- consuming
- consume
- borrowing
- copy
- inout
- mutating
- sending
struct V {
var w: String
init(w: String) {
self.w = w
}
func make(_ x: consuming String) -> String {
x.append("a")
print(x)
return consume x
}
func a(_ x: String) {
var y = x
y.append("a")
print(y)
}
func b(_ x: borrowing String) {
var y = copy x
y.append("a")
_ = x
}
func c(_ x: inout String) {
}
mutating func f() {
w = ""
}
consuming func close() -> String {
""
}
func r(_ x: sending NSView) -> NSView {
consume x
}
}
let r = "a"
let v = V(w: r)
print(r)
let s = "hello"
v.a(s)
v.make(r)
print(r)This has come up a few times. "rg" is a command line tool that works faster than awk and grep and automatically respects .git rules. It is open source (MIT) and written in Rust.
Apple APN
https://developer.apple.com/documentation/storekit/implementing-promotional-offers-in-your-app
Handwriting practice app from Alex!
Send commands to an AI agent from iMessage from Mihaela!
How it works:
iPhone (iMessage) → Mac (iRelay daemon) → Claude Code → response → iMessage
Brief history of LLVM. Modular and Mojo. LLVM for AI chips.
"People who ignore this [AI] will be left behind."
- https://www.sagarunagar.com/blog/geometry-in-swiftui/
- https://medium.com/@oscarberggren082/swiftui-charts-caused-major-stutter-in-my-app-replacing-it-with-path-fixed-everything-9b15059efeae
- https://sundayswift.com/posts/building-a-high-performance-list-framework/
- https://azamsharp.com/2026/03/04/mvvm-and-cost-of-old-patterns.html
Making reproducible outputs:
Model personalization
- https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens
- https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-pull-request-github
- https://git-scm.com/docs/git-worktree
- Keyboard Maestro recommended by Bob
- https://www.simplypsychology.org/learning-kolb.html
- https://ldaustralia.org/information-resources/response-to-intervention/
2026-02-28 09:48:07 From Josh Homann to Everyone: https://www.youtube.com/watch?v=69Gw7aoWMMI
2026-02-28 09:53:15 From SWEET Institute to Everyone: What are is your opinion on server driven UI?
Josh reminded us that dynamic animator is part of UIKit.
- https://github.com/joshuajhomann/DynamicAnimatorAttachment
- https://github.com/joshuajhomann/DynamicRadialGravity
Mihaela reminds us that these things can be done with Core Animation.
let spring = CASpringAnimation(keyPath: "position.y")
spring.fromValue = layer.position.y
spring.toValue = layer.position.y + 200
spring.mass = 1.0
spring.stiffness = 100
spring.damping = 10
spring.initialVelocity = 0
spring.duration = spring.settlingDuration
layer.add(spring, forKey: "springMove")
layer.position.y += 200 // update model layerCarlyn reminds us of other affordances in SwiftUI
- https://developer.apple.com/documentation/swiftui/view/visualeffect(_:)
- https://www.hackingwithswift.com/quick-start/swiftui/how-to-add-metal-shaders-to-swiftui-views-using-layer-effects
From Josh. Not really Swift related, but speaks to the idea of having a clear goals and specifying what you want a product to be.
We looked at different implementations of string replacement. At first we thought Swift string was the winner but then Tobias noticed that the units were milliseconds instead of microseconds.
Related is the topic of "new" serialization.
RG is a fast version of Grep: https://github.com/BurntSushi/ripgrep
Alex reminds us that regular expressions can be hard.
Helpful for learning regex.
And a great WWDC video from Michael Ilseman
A Swift First embedded operating system (linux distro)
- Nvidia https://www.nvidia.com/gtc/
- siggraph https://s2026.siggraph.org
We talked a bunch about different AI tools and got an interesting demo from Tobias about a Mac app he wrote for keeping track of web articles.
Talked about using Codex and Claude with worktrees. It lets you try out a bunch of solutions in parallel.
Just for fun project by Carlyn to do proper title case for a given style guide.
Ed wants to test his Vision Pro app without buying another Vision Pro.
This month, Swift is just ahead of COBOL at position 21.
Josh brought up some articles to read.
Copy-on-write pattern.
Building a toast component. Good interview topic because it gets to if you understand the view hierarchy.
More on Observable.
Frank was back from https://arcticonference.com which was a great conference. Not recorded but some of the speakers indicated that they would post their talks. One of those was ElementaryUI which Josh shared a link to.
Josh Homann shared:
- https://shumer.dev/something-big-is-happening
- https://openai.com/index/new-result-theoretical-physics/
- https://openai.com/index/introducing-gpt-5-3-codex-spark/
- https://openai.com/index/harness-engineering/
Josh feels that the industry is at a major transition and early adopters will benefit.
Ed Arenberg shared:
Carlyn raised concerns about AI being over-hyped in a crypto-bro-style way. There are indications that it is having a significant negative impact on open-source projects.
Also,
Ray shared anecdotal experiences about AI being useful but not getting to a full solution. He also raised some concerns about "The Point Free Way"--a new skills constellation that has strict license requirements.
Ed gave a demo of his VisionPro app that he has been building with Xcode 26.3 and claude code. It gives rich visualizations of large proteins and even unfolds them visually. It reads in proteins in pdb format shows them.
carlyn shared: - https://rothemundlab.caltech.edu
Ed Arenberg shared:
- https://pdb101.rcsb.org
- https://www.rcsb.org
- https://files.wwpdb.org/pub/pdb/doc/format_descriptions/Format_v33_Letter.pdf
Josh Homann shared:
Discussion included: - Ribbon diagrams - PDB file structure and specification (~170 pages) - Protein visualization tools
Alex shared:
https://github.com/swiftlang/swift-evolution/blob/main/proposals/0504-task-cancellation-shields.md
-
Josh Homann shared Apple documentation on allowing agentic coding tools to access Xcode:
https://developer.apple.com/documentation/xcode/giving-agentic-coding-tools-access-to-xcode -
Josh Homann shared OpenAI’s announcement of the Codex app:
https://openai.com/index/introducing-the-codex-app/ -
carlyn shared a discussion on Mastodon arguing that AI can be a barrier to innovation because it relies on existing code patterns rather than enabling fundamentally new ideas:
https://mastodon.social/@mrtoto@mrtoto.net/116029868243712977
Ray Fix reacted positively to the discussion. -
Josh Homann shared an article on Kimi K2.5 and its free API:
https://medium.com/data-science-in-your-pocket/kimi-k2-5-free-api-b4ce65a14dd3 -
Josh Homann shared an Ars Technica article describing multiple Claude AI agents collaborating to create a new C compiler:
https://arstechnica.com/ai/2026/02/sixteen-claude-ai-agents-working-together-created-a-new-c-compiler/ -
carlyn shared a post from Adafruit’s Limor Fried discussing AI usage:
https://mastodon.social/@adafruit@fosstodon.org/116029624511670210 -
Josh Homann shared Steve Yegge’s essay “Welcome to Gas Town”:
https://steve-yegge.medium.com/welcome-to-gas-town-4f25ee16dd04 -
Chitaranjan sahu shared a post emphasizing that the future is not about AI replacing programmers, but about people who think clearly about systems moving faster while others generate low-quality output at scale:
https://x.com/ryolu_/status/2019089085034586239
-
Ray Fix shared a talk titled How Apple Replaces Entire Frameworks by Bryce Bostwick:
https://www.youtube.com/watch?v=SuQGQ1vh9k0 -
Ray Fix shared the related GitHub repository SwizzleEverything:
https://github.com/brycebostwick/SwizzleEverything/ -
Ray Fix shared the talk Closing the Performance Gap Between Swift and C by Paul Toffoloni:
https://www.youtube.com/watch?v=-pbd2wkdpD8 -
Ray Fix shared Swift in the Browser with ElementaryUI by Simon Leeb:
https://www.youtube.com/watch?v=OmQ881sOTIc
carlyn asked how ElementaryUI relates to ElementaryOS. -
Ray Fix shared Introducing the Swift SDK for Android by Marc Prud’hommeaux:
https://www.youtube.com/watch?v=mZNIAuQ7s7k -
Josh Homann shared references on method swizzling and dynamic method replacement in Swift:
- Swift underscored attributes documentation:
https://github.com/swiftlang/swift/blob/main/docs/ReferenceGuides/UnderscoredAttributes.md - Swift Forums discussion on dynamic method replacement:
https://forums.swift.org/t/dynamic-method-replacement/16619
- Swift underscored attributes documentation:
-
Josh Homann shared the Point-Free website. They have a new version of The Composable Architecture (TCA 2.0) and a bunch of skills that implement "The Point-Free Way" https://www.pointfree.co
-
Josh Homann shared a YouTube video about a scientist's view of AI:
https://www.youtube.com/watch?v=PctlBxRh0p4 -
carlyn shared a Psychology Today article on curiosity deficits:
https://www.psychologytoday.com/us/blog/the-curiosity-deficit -
Josh Homann shared the SwiftSonic conference Sessionize page:
https://sessionize.com/swiftsonic-26 -
Josh Homann shared the SwiftSonic conference website:
https://swiftsonicconf.com -
Chitaranjan sahu shared a tweet by Chris Lattner related to LLVM and compiler topics:
https://x.com/clattner_llvm/status/2020107665566036122?s=20 -
Josh Homann shared an article on tiered caching in Swift:
https://kylebrowning.com/posts/tiered-caching-in-swift/?utm_source=substack&utm_medium=email -
Josh Homann shared a Levels.fyi job listing:
https://www.levels.fyi/jobs?locationSlug=united-states&jobId=141351424356164294 -
Josh Homann shared a GitHub repository for SwiftUI Agent skills:
https://github.com/AvdLee/SwiftUI-Agent-Skill?utm_source=substack&utm_medium=email -
Josh Homann shared a Captain SwiftUI Substack article on observation and SwiftUI complexity:
https://captainswiftui.substack.com/p/objectively-better-observably-trickier?utm_campaign=post-expanded-share&utm_medium=post%20viewer&triedRedirect=true -
Josh Homann shared a SwiftDifferently article on SwiftUI performance:
https://www.swiftdifferently.com/blog/swiftui/swiftui-performance-article?utm_source=substack&utm_medium=email -
Josh Homann shared an article on exploring Xcode using MCP tools and external clients:
https://rudrank.com/exploring-xcode-using-mcp-tools-cursor-external-clients -
Josh Homann shared the XcodeBuild MCP project website:
https://www.xcodebuildmcp.com -
Tobias mentioned xclaude and shared the related GitHub plugin:
https://github.com/conorluddy/xclaude-plugin
- Announcing the Swift Windows Workgroup
https://www.swift.org/blog/announcing-windows-workgroup/ - What’s New in Swift — January 2026
https://www.swift.org/blog/whats-new-in-swift-january-2026/
Continues to be useful. Interesting how course content has shifted over the years.
- MIT OpenCourseWare
https://ocw.mit.edu - MIT 6.001 — Structure and Interpretation of Computer Programs (Spring 2005)
https://ocw.mit.edu/courses/6-001-structure-and-interpretation-of-computer-programs-spring-2005/ - MIT 6.0001 — Introduction to Computer Science and Programming in Python
https://ocw.mit.edu/courses/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/ - Coursera Instructor Page (Alex)
https://www.coursera.org/instructor/~873260 - Scala Functional Programming Course
https://www.coursera.org/learn/scala-functional-programming - Scala Specialization
https://www.coursera.org/specializations/scala
- SwiftUI Lab (older but still useful)
https://swiftui-lab.com
- Swift Actors pitfalls
https://www.fractal-dev.com/blog/swift-actors-pitfalls - objc.io talk — Solving the View Model Problem (Part 1)
https://talk.objc.io/episodes/S01E476-solving-the-view-model-problem-part-1 - Liquid Glass Toast
https://writetodisk.com/liquid-glass-toast/
- Ordinary Language Philosophy
https://en.wikipedia.org/wiki/Ordinary_language_philosophy - Embodied Cognition
https://en.wikipedia.org/wiki/Embodied_cognition
(Related to An Immense World by Ed Yong)
- Discussion on risks of tools with email access
- Recommendation to use a fully separate “burner computer” for sensitive experimentation
- UTM (virtual machines on macOS)
https://mac.getutm.app
-
Speaking of burner computers and the need for virtual machines. https://www.reddit.com/r/accelerate/comments/1qrr3he/a_real_security_problem_just_showed_up_on/
Josh shares that Anthropic's CEO talks about how AI is growing exponentially. That changes everything.
Some links from Ray:
- https://www.preposterousuniverse.com/podcast/2026/01/05/339-ned-block-on-whether-consciousness-requires-biology/
- https://philarchive.org/rec/BLOCOM-3
Carlyn recommends “An Immense World” by Ed Yong
Josh hypothesises that language might not matter in a year's time.
There is a post on the Swift blog:
https://www.swift.org/blog/exploring-the-swift-sdk-for-android/
Also,
Small mini-projects that can fit into context that runs in a loop.
- https://ghuntley.com/ralph/
- https://www.youtube.com/watch?v=RpvQH0r0ecM
- https://github.com/snarktank/ralph
- https://help.figma.com/hc/en-us/articles/35280808976151-Figma-MCP-collection-MCP-collection-overview
- Josh Homann shared resources related to AI coding tools and agent workflows:
- Claude Cowork introduction
https://support.claude.com/en/articles/13345190-getting-started-with-cowork - OpenCode
https://opencode.ai - OpenAI Codex repository (shared twice during the meeting)
https://github.com/openai/codex - Codex Skill Manager
https://github.com/Dimillian/CodexSkillManager - Curated list of agent skills
https://github.com/heilcheng/awesome-agent-skills?tab=readme-ov-file
- Claude Cowork introduction
- Peter Wu raised a question about global actor lifecycle, and specifically:
- Lifecycle of custom (unowned) executors owned by a global actor.
Josh noted that requiring an async context for clients wanting to use analytics is a high hurdle. Better off to just use locks / mutex and have synchronous method calls.
-
Mihaela MJ shared a gist related to the discussion:
https://gist.github.com/mihaelamj/ca6b3955f47217d976111b9164d8d927 -
Apple’s Swift logging library:
https://github.com/apple/swift-log/tree/main
-
Mihaela MJ shared her Cupertino repository that got a mention on https://iosdevweekly.com/
-
Josh Homann showed how to add Cupertino to Codex via MCP:
codex mcp add cupertino -- /usr/local/bin/cupertino serve
- Mihaela MJ mentioned Flipper Zero, followed by the official site:
https://flipper.net - Carlyn shared several articles related to car hacking and replay/CAN injection attacks:
- Wired article on a tiny hacking device:
https://www.wired.com/2015/08/hackers-tiny-device-unlocks-cars-opens-garages/ - Replay attack discussion:
https://tcm-sec.com/intro-to-car-hacking-replay-attacks/ - Ars Technica on CAN injection attacks:
https://arstechnica.com/information-technology/2023/04/crooks-are-stealing-cars-using-previously-unknown-keyless-can-injection-attacks/
- Wired article on a tiny hacking device:
All speech is Haiku
No other way to converse
Words are poetic
PR obsolete
Just let AI fix it all
No more code reviews
Humans make Haiku
AI just steals from people
Creativity
Zooming with AIs
No more humans required
Meetings so lonely
-
The Pipe project was shared and discussed, including recent architectural changes (shared by Peter Wu):
- Repository: https://github.com/PeterWu9/Pipe
- Pipe is no longer an
AsyncSequence. - Pipe now vends an
AsyncStream. - Additional updates were pushed incorporating feedback from Josh Homann.
-
A concurrency observation was raised that
async letdoes not always result in parallel execution in practice (noted by Peter Wu).
-
Several resources on approachable Swift concurrency and recent community discussion were shared (by Josh Homann):
-
An article exploring a new way of working with Metal shaders in SwiftUI was shared (by Josh Homann):
-
Visual and dataflow programming nostalgia was discussed, referencing tools such as Max/MSP/Jitter and PureData (shared by carlyn).
-
A code analytics and exploration tool was recommended (shared by carlyn):
- DeepWiki: https://deepwiki.com
- Hugging Face LeRobot (shared by Ed Arenberg): https://github.com/huggingface/lerobot
- NVIDIA Isaac Sim (shared by carlyn): https://developer.nvidia.com/isaac/sim
-
A broader philosophical discussion touched on the idea that English (human-readable text) is becoming a programming language (remark by Georgi Dagnall), and that some modern “AI” systems resemble markdown-driven plugin frameworks (observed by carlyn).
We discusses using tuist to reduce build times by pre compiling.
Video shared by ChitaRanjan
We reviewed the various implementations of pipe from last year and discussed how to iterate over the pipe:
public final class Pipe<Value: Sendable>: Sendable, AsyncSequence {
public typealias Stream = AsyncStream<Element>
public typealias AsyncIterator = Stream.AsyncIterator
public typealias Element = Value
private let lockedContinuations: Mutex<[UUID: Stream.Continuation]>
private let replayCount: Int
public init(replay: Int = 0) {
replayCount = replay
lockedContinuations = .init([:])
}
deinit {
lockedContinuations.withLock { continuations in
continuations.values.forEach { $0.finish() }
}
}
public func send(_ value: Value) {
lockedContinuations.withLock { continuations in
continuations.values.forEach { $0.yield(value) }
}
}
public func makeAsyncIterator() -> AsyncIterator {
let (stream, continuation) = Stream.makeStream(of: Element.self,
bufferingPolicy: .bufferingNewest(replayCount))
let id = UUID()
continuation.onTermination = { [weak self] _ in
self?.lockedContinuations.withLock { $0[id] = nil }
}
lockedContinuations.withLock { $0[id] = continuation }
return stream.makeAsyncIterator()
}
}A sequence is just an iterator factory and a for loop is syntactic sugar for making an iterator and looping over it (async or not):
let pipe = Pipe<Int>()
let array = [1, 3, 5, 7, 9]
Task {
for value in array { }
var i = array.makeIterator()
while let value = i.next() {
}
for await value in pipe {
print(value)
}
var iterator = pipe.makeAsyncIterator()
while let value = await iterator.next() {
print(value)
}
}We discussed context engineering as outlined in this video and these notes We discussed how to refine the prompt from december to produce better code by not cluttering the context window:
- Software requirements GPT shared by Carlyn
- How coding agents explore your codebase shared by ChitaRanjan
- Does the iOS code matter? blog post shared by Josh




