JuniperPhoton’s Substack
Subscribe
Sign in
Home
SwiftUI
Color Management
Graphics
PhotonCam
Archive
About
Inspect & optimize Image Decoding timing in iOS
Displaying images in iOS is both easy and challenging.
Aug 17
•
JuniperPhoton
12
Observation framework: Beyond the documentation about observing property changes
Starting with iOS 17, Apple introduced the Observation framework to make updating SwiftUI views more efficient.
Jul 27
•
JuniperPhoton
4
4
SwiftUI + Core Animation: Demystify all sorts of Groups
Understand DrawingGroup, CompositingGroup and GeometryGroup in the Core Animation way
Jul 21
•
JuniperPhoton
8
Color Management
View all
Color Management across Apple Frameworks. Part 4: Color Management in Core Graphics & Core Image
This article is the fourth part of this series.
Apr 12
•
JuniperPhoton
2
Color Management across Apple Frameworks. Part 3: Color Space in Image-Specific APIs
This article is the third part of this series.
Apr 7
•
JuniperPhoton
1
Color Management across Apple Frameworks. Part 2: Color Space in Color-Specific APIs
This article is the 2rd part of this series.
Mar 16
•
JuniperPhoton
6
Color Management across Apple Frameworks. Part 1: Understand Colors
This series of articles delve into the concept of Color Management across Apple’s frameworks, particularly on Core Video, Core Image, and Metal.
Feb 24
•
JuniperPhoton
5
Graphics
View all
Inspect & optimize Image Decoding timing in iOS
Displaying images in iOS is both easy and challenging.
Aug 17
•
JuniperPhoton
12
SwiftUI + Core Animation: Demystify all sorts of Groups
Understand DrawingGroup, CompositingGroup and GeometryGroup in the Core Animation way
Jul 21
•
JuniperPhoton
8
Creating Core Image Metal Shader Library in a Swift Package Plugin
I wrote an article pinpointing some pitfalls and solutions when building Metal Shaders for Core Image Kernels, which replies on setting Build Settings…
May 28
•
JuniperPhoton
4
Decoding some Hidden Magic of MakerApple Metadata
Inspecting the EXIF metadata always surprises me, as so much hidden information can be found inside that dictionary.
Apr 16
•
JuniperPhoton
2
SwiftUI
View all
Observation framework: Beyond the documentation about observing property changes
Starting with iOS 17, Apple introduced the Observation framework to make updating SwiftUI views more efficient.
Jul 27
•
JuniperPhoton
4
4
SwiftUI + Core Animation: Demystify all sorts of Groups
Understand DrawingGroup, CompositingGroup and GeometryGroup in the Core Animation way
Jul 21
•
JuniperPhoton
8
Rethinking ViewModel in SwiftUI
The question of whether the ViewModel concept should exist has become increasingly prevalent recently.
Jul 19
•
JuniperPhoton
5
2
SwiftUI 2025: What’s Fixed, What’s Not, and How I Build Apps Now
In 2022, I wrote an article about the state of SwiftUI and whether it was possible to build a complete app without using UIKit or AppKit.
Jul 15
•
JuniperPhoton
4
3
Recent posts
View all
Rethinking ViewModel in SwiftUI
The question of whether the ViewModel concept should exist has become increasingly prevalent recently.
Jul 19
•
JuniperPhoton
5
2
SwiftUI 2025: What’s Fixed, What’s Not, and How I Build Apps Now
In 2022, I wrote an article about the state of SwiftUI and whether it was possible to build a complete app without using UIKit or AppKit.
Jul 15
•
JuniperPhoton
4
3
Photon’s Indie Dev: June 2506
with extra content: me seeking for a job in Japan
Jun 29
•
JuniperPhoton
2
WWDC 25 NOTES: Game of identifying running threads in Swift 6.2
Apple introduced some changes regarding Swift Concurrency in WWDC 25.
Jun 17
•
JuniperPhoton
4
3
WWDC 25 NOTES: Thoughts about being Sherlocked or copied
In tech, “Sherlocked” means a platform copies a third-party app’s features, making the original obsolete.
Jun 15
•
JuniperPhoton
2
See all