I have a 13-year-old dog and a cat who’s just over six. Over the years, I’ve taken my dog to a pet photography studio almost annually, but my cat’s severe social anxiety has kept him from joining these photo sessions. In the past year, though, we’ve noticed some improvement in our cat’s demeanor. While he still resists going outside, he now recovers in just minutes after returning from baths or vet visits, rather than the hours it used to take. Seeing this progress, my wife and I decided to take a chance this year by bringing both furry brothers to the studio, hoping to capture a wonderful photo of them together.
For this photoshoot (last weekend), we prepared extensively. Beyond booking a more relaxed and generous time slot, we packed an “emergency kit” of their favorite treats, toys, and familiar blankets, particularly concerned that the studio environment might stress our cat. To our delight, despite our cat’s face clearly saying “I’m not happy about this” throughout the entire session, the photoshoot went relatively smoothly—though the coveted dog-and-cat portrait didn’t quite meet our expectations.
But the real test was just beginning. After the photoshoot, my wife and I kept a watchful eye on our cat’s every move. He seemed fine on the surface, but we couldn’t shake a feeling of unease. Sure enough, the morning after the photoshoot, he had diarrhea, which sent our anxiety through the roof. Fortunately, after two bouts, everything appeared to return to normal—his energy was good, and his appetite remained strong. However, later that day, my wife reported that our cat’s urination didn’t seem as smooth as usual and instructed me to monitor him closely. Cat owners know that urinary issues can be quite serious for felines and are often triggered by stress.
This morning (before sitting down to write this newsletter), our cat seemed to sense our worries. He approached me with a soft meow, guiding me to follow him to his private bathroom. Under my watchful eye, he leisurely drank water for a few minutes, then smoothly completed his urination before darting off to play—demonstrating his healthy physical condition through actions rather than words—leaving me both relieved and amused.
Though cats and dogs don’t speak human language, they’re certainly not lacking in intelligence. They can keenly sense your concern and respond in their own ways. While caring for them certainly requires effort, the pure emotional connection they provide far exceeds what we invest. I’m incredibly grateful for these little beings who bring such warmth to human society.
I’ve just scheduled another photoshoot with the studio for six months from now. I’m hoping to finally realize my small wish—to recreate the scene from my cartoon avatar: a perfect portrait with my fur babies sitting quietly on either side of me.
In this age where large language models increasingly blur the line between human and AI communication, making interactions with AI feel almost indistinguishable from those with real people, I still cherish the wordless yet deeply connected communication I share with my pets. That subtle, authentic beauty is a living connection that even the most advanced technology can never replace.
Original
Using Proxyman to Intercept and Simulate iPhone App Network Requests
In the Internet age, developers increasingly interact with network data. Just as we rely on the debugging features of our IDEs to optimize our code, network debugging tools have become indispensable assistants for quickly, efficiently learning, researching, and analyzing network data. This article explains how to use Proxyman to capture the network request information of an iPhone app and simulate server responses by providing mock data. This allows you to test and develop applications without relying on a real server.
Recent Recommendations
Why I Avoid Group
Group
is a convenient tool in SwiftUI for applying modifiers to multiple views at once, but its behavior can be unreliable in certain scenarios. In this post, Chris Eidhof shares why he avoids using Group
in practice, pointing out that it doesn’t create a real container view but merely provides ViewBuilder syntax. He also highlights inconsistent behavior of modifiers like .background
between Previews and the Simulator, and unexpected onAppear
execution. These issues become even more pronounced at the boundary between SwiftUI and UIKit. Chris recommends using stable containers like VStack
or ZStack
instead, for more predictable view structures.
Implementing Sign in with Apple in the watchOS Simulator
Since Sign in with Apple isn’t supported in the watchOS Simulator, it can be a major hurdle during development. In this post, Leo Dion describes a clever workaround used by the BrightDigit team: the server writes temporary authentication data to the Simulator, while the client watches for file changes and triggers the login flow. This approach simulates a realistic login experience during development and integrates cleanly into existing authentication architectures—making it especially useful for those testing login functionality on watchOS.
Color Space in Color-Specific APIs
Color management has long been one of Apple’s strongest areas, but mishandling color spaces can easily lead to display mismatches or inconsistencies across platforms. In this article, Weichao Deng dives deep into how common Apple APIs like UIColor
, Color
, and NSColor
handle color spaces, covering asset catalog color definitions, differences in initialization across frameworks, and caveats when accessing component values. A must-read for anyone who cares about consistent color rendering across Apple platforms.
Building a MCP server in Swift
The Model Context Protocol (MCP) is one of the most exciting emerging concepts, extending LLM capabilities to interact with real-world data and tools. For Apple platform developers, building an MCP server in Swift is an excellent way to get started. In this post, Adam Wulf shares his experience using the mcp-swift-sdk to implement a basic MCP server. He explains the architecture, stdio-based transport, tool registration and invocation, and how to integrate with Cursor and Claude for testing and development.
The
mcp-swift-sdk
is a Swift implementation of the MCP spec by Mattt, who also built iMCP, a macOS app that grants MCP clients access to system calendar, contacts, messages, reminders, and weather data.
Solving Swift Macro Trust Issues in Xcode Cloud Builds
Swift macros offer powerful capabilities, but they often cause build failures in Xcode Cloud due to trust errors like “Target must be enabled.” In this article, Cihat Gündüz presents a simple and effective fix: add a ci_scripts/ci_post_clone.sh
script to disable Xcode’s macro fingerprint validation before the build. He explains why this works, discusses the security tradeoffs, and highlights why this workaround will become increasingly important as macros gain traction in the Swift ecosystem.
Git Hooks 🤝 Swift
Git hooks are a great way to automate code checks and validations at commit time, yet many Apple developers avoid them due to unfamiliarity with bash. In this article, Natan Rolnik demonstrates how to gradually adopt Swift for Git hooks—starting with shell scripts, then moving to Swift scripts and finally compiled executables. He shares practical examples like enforcing commit message prefixes ([feature]
, [bugfix]
, etc.) and rejecting commits containing print
or TODO
statements, showcasing how Swift can bring maintainability and flexibility to your automated workflows.