Blog
Thoughts on development, products, and more.
2026
-
The Complete Guide to tvOS App Icons and Top Shelf Images
The Complete Guide to tvOS App Icons and Top Shelf Images
-
Debugging Video Corruption After FFmpeg Compression
Debugging Video Corruption After FFmpeg Compression
-
What Developers Must Do Before iOS 27 Ships
What Developers Must Do Before iOS 27 Ships
-
A Strange Bug Caused by SwiftUI + macOS 26
Debugging a bizarre crash where a menu-bar-only SwiftUI app silently dies on macOS 26 — no crash log, no Sentry report — and how to fix it
-
Adding a New Xcode Target? Don't Forget These Two Files
When adding a new Xcode target, forgetting Localizable.xcstrings and InfoPlist.xcstrings leads to missing localizations and broken UI text. Here's how to avoid it.
-
FOMO Is the Cyberpsychosis of the AI Era
FOMO Is the Cyberpsychosis of the AI Era
-
Don’t Build on Giants Without a Moat
Warnings and reflections on building products around various tech giants and major AI companies.
-
I created OrbitTrigger to help with my daily work.
Introducing my newly created macOS app, OrbitTrigger, and how it is transforming my daily workflow.
-
Energy Allocation in the AI Era
Time is becoming increasingly scarce.
-
My thoughts about ClawdBot
Some reflections on using ClawdBot.
-
My Cyberpunk style dashboard.
A brief introduction to my new dashboard.
2025
-
Opening the Multiverse for AI: The Real Value of Git Worktree
Why Git worktree is useful in AI coding
-
Thoughts on the Current State of MCP
Some thoughts about MCP
-
Adding a New Target? Don’t Forget These Two Files
Some tips for localization when add a new target in Xcode
-
Fix Xcode SPM fetch failed
How to fix Xcode update and fetch swift package error
-
Second Year of 'Ship-a-ton'
Reflections on participating in RevenueCat's hackathon for the second year
-
AI Coding Might Harm Your Ability to Code
Some thoughts on 'vibe coding' and how it affects my coding skills.
-
How to Use Custom LLM Assistants in Xcode 26
A quick exploration of connecting custom models to Xcode 26
-
How to create app icon for new Apple System
It's about how to create new styled icon for iOS 26 / macOS 26
-
Debug with Playground in Xcode 26
Xcode 26
-
Glance of Apple foundation model
This is an article about the first impression of Apple foundation model.
-
Make SwiftUI great again, on Neovim
Make SwiftUI great again, on Neovim
-
SFSafeSymbols: Type-Safe Access to Apple’s SF Symbols in Swift
About how to hide bottom bar in SwiftUI
-
Black Mirror and the Subscription Trap: Where Tech, Capital, and Ethics Collide
Black Mirror and the Subscription Trap: Where Tech, Capital, and Ethics Collide
-
Make a colorful menubar for macOS APP
Make a colorful menubar for macOS APP
-
My ASO Learning Journey
My ASO Learning Journey
-
Start a New Adventure with OrbitRing!
Start a New Adventure with OrbitRing!
-
Preventing Sentry from Reporting SwiftUI Preview Errors
Preventing Sentry from Reporting SwiftUI Preview Errors
-
Upload DSYM to Sentry with Xcode Cloud
Upload DSYM to Sentry with Xcode Cloud
2024
-
My keyword for 2024: Freedom
My keyword for 2024: Freedom
-
Time to say goodbye to RevenueCat
Time to say goodbye to RevenueCat
-
How to avoid translating certain strings in SwiftUI
Additional way to localize you app in right way.
-
How to localize the strings as parameter in SwiftUI
Localize all the strings in you project.
-
Tools I used for icon management.
Introduce a greet tool - Nucleo.
-
Hide bottom bar in SwiftUI
About how to hide bottom bar in SwiftUI
-
Create a nice dashboard for my homeLab
This is an article about how I made a nice and feature rich dashboard for my homelab.
-
How I config my Neovim with LazyVim
Why I config my Neovim with LazyVim
-
How to localize your App name in a modern way
Xcode 15 created project have something diffierent to localize your App, especially App name.
2023
-
The way SwiftUI handles external scheme redirects.
SwiftUI handle Oauth callback.
-
iOS Moya Implementing OAuth 2.0 Requests
Updated to work with Alamofire 5 and Catalyst
-
How to Improve Cursor Movement Smoothness in macOS Terminal
When using NeoVim to write code in both Linux and macOS, it's evident that there is a slight lag when continuously moving the cursor using h/j/k/l in the macOS terminal.