Fatbobman (东坡肘子)
banner
fatbobman.com
Fatbobman (东坡肘子)
@fatbobman.com
Swift & SwiftUI enthusiast | Tech blogger

Blog: http://fatbobman.com
Newsletter: http://weekly.fatbobman.com

@fatbobman at X
@[email protected]
https://www.linkedin.com/in/fatbobman/
Pinned
创建了一个苹果生态中文开发者的新手包。目前我只能找到比较少的人,想加入的请回复或 at 我 @fatbobman.bsky.social
go.bsky.app/JD23kdf
Reposted by Fatbobman (东坡肘子)
The NSModelActor macro empowers developers to enjoy seamless concurrent programming in Core Data, mirroring the elegance of Swift Data—minus the SwiftData hiccup of views not auto-refreshing in private contexts
fatbobman.com/en/posts/co...
github.com/fatbobman/C...
GitHub - fatbobman/CoreDataEvolution: A library aimed at modernizing Core Data by incorporating the elegance and safety of SwiftData-style concurrency.
A library aimed at modernizing Core Data by incorporating the elegance and safety of SwiftData-style concurrency. - GitHub - fatbobman/CoreDataEvolution: A library aimed at modernizing Core Data b...
github.com
January 11, 2025 at 1:01 PM
Reposted by Fatbobman (东坡肘子)
"Android users don't pay, not worth it"

iOS developer Shudao Wang proved otherwise with 8M+ cross-platform downloads.

His key lesson: Focus on experience consistency, not pixel-perfect matching.

One developer's journey from skepticism to success 👇
fatbobman.com/en/posts/fr...
From iOS to Android - A Candid Look at My Real-World Journey into Dual-Platform Development
A real-world journey from iOS to Android: cross-platform development, feature alignment, app store differences, monetization strategies, and navigating China’s unique Android ecosystem
fatbobman.com
November 26, 2025 at 12:21 PM
"Android users don't pay, not worth it"

iOS developer Shudao Wang proved otherwise with 8M+ cross-platform downloads.

His key lesson: Focus on experience consistency, not pixel-perfect matching.

One developer's journey from skepticism to success 👇
fatbobman.com/en/posts/fr...
From iOS to Android - A Candid Look at My Real-World Journey into Dual-Platform Development
A real-world journey from iOS to Android: cross-platform development, feature alignment, app store differences, monetization strategies, and navigating China’s unique Android ecosystem
fatbobman.com
November 26, 2025 at 12:21 PM
Reposted by Fatbobman (东坡肘子)
Fatbobman’s Swift Weekly #112 is out!
When AI Makes "Seeing Is Believing" Impossible

🌟 Deep Dive into iMessage
📲 2025: The Year SwiftUI Died
📘 MainActor by Default
💬 Embedded Swift
🪟 QuickLayout

and more...
weekly.fatbobman.com/p/fatbobman...
Fatbobman's Swift Weekly #112
When AI Makes "Seeing Is Believing" Impossible
weekly.fatbobman.com
November 24, 2025 at 12:23 PM
Huge shoutout to this week's sponsor: proxyman!

Try Proxyman! The best-in-class macOS that helps you capture/debug HTTP(s) with a few clicks. Support iOS devices and Simulator.

Get started 🚀 l.fatbobman.com/sb-proxyman
November 24, 2025 at 1:23 PM
Thanks to those who generously shared their wisdom with us: LingJueYa, @jacobstechtavern.com, @natpanferova.bsky.social, Oleksii Oliinyk, Mattt, @avanderlee.com, @massicotte.org, Doug Gregor, Rauhul Varma, Paweł Kozielecki, Constantine Fry, Aether and Grady Zhuo
Fatbobman’s Swift Weekly #112 is out!
When AI Makes "Seeing Is Believing" Impossible

🌟 Deep Dive into iMessage
📲 2025: The Year SwiftUI Died
📘 MainActor by Default
💬 Embedded Swift
🪟 QuickLayout

and more...
weekly.fatbobman.com/p/fatbobman...
Fatbobman's Swift Weekly #112
When AI Makes "Seeing Is Believing" Impossible
weekly.fatbobman.com
November 24, 2025 at 12:26 PM
Fatbobman’s Swift Weekly #112 is out!
When AI Makes "Seeing Is Believing" Impossible

🌟 Deep Dive into iMessage
📲 2025: The Year SwiftUI Died
📘 MainActor by Default
💬 Embedded Swift
🪟 QuickLayout

and more...
weekly.fatbobman.com/p/fatbobman...
Fatbobman's Swift Weekly #112
When AI Makes "Seeing Is Believing" Impossible
weekly.fatbobman.com
November 24, 2025 at 12:23 PM
Reposted by Fatbobman (东坡肘子)
Apple never gave us an iMessage API.
So someone built one.

Deep Dive into iMessage — and how an Agent was born.

SQLite internals, binary plist decoding, AppleScript automation, sandbox workarounds — all in one place.

fatbobman.com/en/posts/de...
Deep Dive into iMessage - Behind the Making of an Agent
Explore iMessage internals: SQLite database structure, Core Data timestamps, macOS sandbox bypass. Learn to build iMessage Agents with TypeScript for message automation and AI integration, featuring the complete implementation of open-source imessage-kit project.
fatbobman.com
November 19, 2025 at 12:18 PM
Reposted by Fatbobman (东坡肘子)
Fatbobman’s Swift Weekly #111 is out!
Homebrew 5.0: Parallel Downloads, MCP Integration, and Intel's Final Countdown

🌟 Liquid Glass Adaptation in UIKit + SwiftUI
⚡ Claude Code Skills
📘 Rust on iOS
🔍 FSWatcher

and more...

weekly.fatbobman.com/p/fatbobman...
Fatbobman's Swift Weekly #111
Homebrew 5.0: Parallel Downloads, MCP Integration, and Intel's Final Countdown
weekly.fatbobman.com
November 17, 2025 at 12:23 PM
Apple never gave us an iMessage API.
So someone built one.

Deep Dive into iMessage — and how an Agent was born.

SQLite internals, binary plist decoding, AppleScript automation, sandbox workarounds — all in one place.

fatbobman.com/en/posts/de...
Deep Dive into iMessage - Behind the Making of an Agent
Explore iMessage internals: SQLite database structure, Core Data timestamps, macOS sandbox bypass. Learn to build iMessage Agents with TypeScript for message automation and AI integration, featuring the complete implementation of open-source imessage-kit project.
fatbobman.com
November 19, 2025 at 12:18 PM
A shoutout to the amazing individuals who graciously shared their priceless wisdom with us: Shuhari, Alex Ozun, @eidhof.nl , @twostraws.bsky.social, @ctietze.mastodon.social.ap.brid.gy, Ein Verne, Tjeerd In 't Veen, Davide Ficano, okooo5km and LiYanan
Fatbobman’s Swift Weekly #111 is out!
Homebrew 5.0: Parallel Downloads, MCP Integration, and Intel's Final Countdown

🌟 Liquid Glass Adaptation in UIKit + SwiftUI
⚡ Claude Code Skills
📘 Rust on iOS
🔍 FSWatcher

and more...

weekly.fatbobman.com/p/fatbobman...
Fatbobman's Swift Weekly #111
Homebrew 5.0: Parallel Downloads, MCP Integration, and Intel's Final Countdown
weekly.fatbobman.com
November 17, 2025 at 12:31 PM
Fatbobman’s Swift Weekly #111 is out!
Homebrew 5.0: Parallel Downloads, MCP Integration, and Intel's Final Countdown

🌟 Liquid Glass Adaptation in UIKit + SwiftUI
⚡ Claude Code Skills
📘 Rust on iOS
🔍 FSWatcher

and more...

weekly.fatbobman.com/p/fatbobman...
Fatbobman's Swift Weekly #111
Homebrew 5.0: Parallel Downloads, MCP Integration, and Intel's Final Countdown
weekly.fatbobman.com
November 17, 2025 at 12:23 PM
Reposted by Fatbobman (东坡肘子)
Fatbobman’s Swift Weekly #0110 is out!
Skip Fuse Now Free for Indie Devs!

🌟 The Art of SwiftData
📲 SPM To Tuist
🔖 Language Discovery
🗺️ Xcode 26.1 CPU Usage Issue
💬 imessage-kit
and more...

weekly.fatbobman.com/p/fatbobman...
Fatbobman's Swift Weekly #0110
Skip Fuse Now Free for Indie Devs!
weekly.fatbobman.com
November 10, 2025 at 12:21 PM
By using CTFontCreatePathForGlyph in Core Text to convert glyphs to CGPath, then combining them into a glyph shape and passing it to glassEffect(_:in:) for shape rendering, we can obtain a transparent “glass text” material that’s not limited to pure geometric shapes and can have customized content.
November 13, 2025 at 12:08 PM
Deep dive into iOS 26 Liquid Glass adaptation 🔍

From Sheet refactoring to custom glass text
From UIBarButtonItem sizing to CABackdropLayer control
Complete solutions for UIKit + SwiftUI hybrid architecture

fatbobman.com/en/posts/gr...
Grow on iOS 26 - Liquid Glass Adaptation in UIKit + SwiftUI Hybrid Architecture
Practical iOS 26 Liquid Glass adaptation experience from Grow (180K+ 5-star ratings). Covers Sheet/Navigation/Popover refactoring, UIBarButtonItem size calculation, CABackdropLayer side effects, custom glass text effects in UIKit + SwiftUI hybrid architecture. Includes complete runnable demo project.
fatbobman.com
November 12, 2025 at 12:28 PM
let's appreciate the incredible folks who generously imparted their invaluable insights to us: Mathis Gaignet, Alberto Salas, Letizia Granata, Artem Mirzabekian, @mjtsai.bsky.social , Cristian Díaz, Mark Szymczyk, Photon and Saw-000
Fatbobman’s Swift Weekly #0110 is out!
Skip Fuse Now Free for Indie Devs!

🌟 The Art of SwiftData
📲 SPM To Tuist
🔖 Language Discovery
🗺️ Xcode 26.1 CPU Usage Issue
💬 imessage-kit
and more...

weekly.fatbobman.com/p/fatbobman...
Fatbobman's Swift Weekly #0110
Skip Fuse Now Free for Indie Devs!
weekly.fatbobman.com
November 10, 2025 at 12:22 PM
Fatbobman’s Swift Weekly #0110 is out!
Skip Fuse Now Free for Indie Devs!

🌟 The Art of SwiftData
📲 SPM To Tuist
🔖 Language Discovery
🗺️ Xcode 26.1 CPU Usage Issue
💬 imessage-kit
and more...

weekly.fatbobman.com/p/fatbobman...
Fatbobman's Swift Weekly #0110
Skip Fuse Now Free for Indie Devs!
weekly.fatbobman.com
November 10, 2025 at 12:21 PM
Reposted by Fatbobman (东坡肘子)
Developers frequently convert measurement units. it seems simple, but juggling multiple units, internationalization, formatting, precision, and rounding can become complicated. luckily, apple's measurement api in foundation simplifies these tasks.
fatbobman.com/en/posts/a-...
From 180 cm to 5′ 11″ - A Complete Guide to Swift Measurement
Master Swift’s Measurement API for safe unit conversion, precise formatting, and custom unit support—perfect for building internationalized, user-friendly iOS apps
fatbobman.com
May 7, 2025 at 12:42 PM
Reposted by Fatbobman (东坡肘子)
Use Swift’s generics, KeyPath, protocol extensions, and ResultBuilder to build a type-safe DataFrame export tool with TabularData. Dive into column mapping, conditional logic, and clean DSL syntax for maximum flexibility, highlighting Swift’s appeal.
fatbobman.com/en/posts/ex...
Experience the Charm of Swift - One-Click DataFrame Export
Build a generic, type-safe DataFrame export tool in Swift using TabularData, KeyPath, and ResultBuilder—with column selection, mapping, and filtering support
fatbobman.com
May 21, 2025 at 12:38 PM
Reposted by Fatbobman (东坡肘子)
when data changes in the iCloudKit public database, Core Data with CloudKit does not update immediately. to prevent frequent refreshes, the system syncs public data every 30 minutes after the app is launched.
fatbobman.com/en/posts/co...
December 27, 2024 at 11:34 PM
To debug Core Data code in VSCode/Cursor, you only need to do two things:

- use Xcode's Swift toolchain
- after the first time or after adjusting the model, use a script to compile xcdatamodeld into momd and place it in the correct build directory
fatbobman.com/en/snippet/...
November 5, 2025 at 12:43 PM
Reposted by Fatbobman (东坡肘子)
Fatbobman’s Swift Weekly #0109 is out!
Dangerous but Fortunate — Twice!

🔄 onChange in same Time
📱 ScrollView snapping
🗺️ Roadmap for improving the type checker
🧩 AnyLanguageModel

and more...
weekly.fatbobman.com/p/fatbobman...

#swift #swiftUI #iOS
Fatbobman's Swift Weekly #0109
Dangerous but Fortunate — Twice!
weekly.fatbobman.com
November 3, 2025 at 12:21 PM
manage application configurations in one place with ObservableCloud Macros. whether it's UserDefaults or NSUbiquitousKeyValueStore, views automatically respond to configuration changes. Supports Codable and RawRepresentable.
github.com/fatbobman/O...
November 4, 2025 at 12:23 PM
Reposted by Fatbobman (东坡肘子)
apply textContentType to a TextField, and watch the system smartly offer spot-on suggestions as users type in details like email, password, phone number, or verification code, boosting both input speed and security
fatbobman.com/en/posts/te...
April 7, 2025 at 1:50 PM
thanks to those who generously shared their insights with us: Matt Comi, @natpanferova.bsky.social,Slava Pestov, @dbolella.bsky.social, Anton Gubarenko, @jessesquires.com, Kyle Ye, Erk Ekin, @jacobstechtavern.com, Mikhail Isaev and Mattt
Fatbobman’s Swift Weekly #0109 is out!
Dangerous but Fortunate — Twice!

🔄 onChange in same Time
📱 ScrollView snapping
🗺️ Roadmap for improving the type checker
🧩 AnyLanguageModel

and more...
weekly.fatbobman.com/p/fatbobman...

#swift #swiftUI #iOS
Fatbobman's Swift Weekly #0109
Dangerous but Fortunate — Twice!
weekly.fatbobman.com
November 3, 2025 at 12:23 PM