# The blog.

Articles, tutorials and news about mobile development, written by Costantino Pistagna in English and Italian.

- 2025-09-02 [Liquid Glass vs Material 3: The End of Convergence in Mobile Design](https://www.sofapps.it/blog/liquid-glass-vs-material-3/index.md): Apple's Liquid Glass and Google's Material 3 Expressive pull mobile design apart, ending years of convergence and forcing new choices on app developers.
- 2025-06-23 [WWDC25: Hello, Liquid Glass](https://www.sofapps.it/blog/wwdc25-liquid-glass/index.md): How Apple's design went from the skeuomorphism of 2007 to iOS 7 flat minimalism and now Liquid Glass, and why glass suits layered, spatial interfaces.
- 2022-09-08 [Dynamic Island: Neverland and the new iPhone 14 Pro](https://www.sofapps.it/blog/dynamic-island-iphone-14-pro/index.md): The Dynamic Island on iPhone 14 Pro: how Apple turned the notch, born with iPhone X in 2017, into a software feature, and why it feels like a stroke of genius.
- 2021-05-04 [App Tracking Transparency using Combine](https://www.sofapps.it/blog/app-tracking-transparency-combine/index.md): How to wrap ATTrackingManager and ASIdentifierManager in an ObservableObject with Combine, to ask for tracking consent and read the advertising ID.
- 2021-03-24 [SwiftUI within UIKit: Connecting two worlds](https://www.sofapps.it/blog/swiftui-within-uikit/index.md): How to move only the content of a UITableViewCell to SwiftUI through UIHostingController and Combine notifications, with no scrolling issues.
- 2020-11-20 [Apple Silicon: Back to the future](https://www.sofapps.it/blog/apple-silicon-back-to-the-future/index.md): Why the M1 may be for computers what the iPhone was for phones in 2007: Apple's hardware and software integration, and a lead rivals will struggle to close.
- 2020-01-10 [SwiftUI Programming: ObjectBinding and BindableObject](https://www.sofapps.it/blog/swiftui-programming-objectbinding/index.md): How to share a class based model between SwiftUI views with @ObjectBinding and BindableObject, using Combine PassthroughSubject to notify changes.
- 2020-01-09 [SwiftUI Programming: An Introduction to States](https://www.sofapps.it/blog/swiftui-programming-states/index.md): How @State ties a SwiftUI view to its data, why this beats the UIKit controller approach, and how to extract subviews and pass a model to them.
- 2020-01-08 [SwiftUI Programming: Building more complex views](https://www.sofapps.it/blog/swiftui-programming-complex-views/index.md): How to build a custom table view cell in SwiftUI with VStack, HStack, Image and Spacer, and how the ViewBuilder closure composes views without addSubview.
- 2020-01-07 [SwiftUI Programming: Classes and Structs in SwiftUI](https://www.sofapps.it/blog/swiftui-programming-classes-structs/index.md): Why a class cannot simply replace a struct as a SwiftUI View, what error the compiler gives, and how a final class makes it possible when needed.
- 2020-01-06 [SwiftUI Programming: The View Object](https://www.sofapps.it/blog/swiftui-programming-view-object/index.md): What a View is in SwiftUI: a struct conforming to a protocol with a single body requirement, and how opaque types differ from plain protocols.
- 2020-01-05 [SwiftUI Programming: An Introduction](https://www.sofapps.it/blog/swiftui-programming-introduction/index.md): Why SwiftUI marks a break with UIKit and MVC: a declarative framework where the interface is derived from state. Notes that open a series of tutorials.
- 2019-06-28 [TextField and UIViewRepresentable](https://www.sofapps.it/blog/textfield-uiviewrepresentable/index.md): How to work around the TextField limits of iOS 13 beta 2 by wrapping UITextField and its delegate in a UIViewRepresentable, with focus moving between fields.
- 2019-06-18 [A TicTacToe game in SwiftUI](https://www.sofapps.it/blog/tictactoe-swiftui/index.md): Build a working TicTacToe game in under 160 lines of SwiftUI: a Combine-backed model, a SquareView bound to it, and an alert when the game ends.
- 2019-06-17 [iPadOS, Catalyst and Sidecar](https://www.sofapps.it/blog/ipados-catalyst-sidecar/index.md): After a week with an iPad Pro and a Bluetooth keyboard: why iPadOS, Catalyst and Sidecar matter more than the hardware, even if it won't replace my MacBook Pro.
- 2019-06-13 [SwiftUI programming](https://www.sofapps.it/blog/swiftui-programming/index.md): Why SwiftUI marks a turning point for Apple platforms: a declarative framework where the interface is derived from state, and what changes from MVC.
- 2018-06-18 [WWDC18: ARKit2 a 2D tracking performances comparison](https://www.sofapps.it/blog/arkit2-image-tracking-performance/index.md): A practical ARKit 2 case study: tracking business cards with ARImageTrackingConfiguration on iOS 12, plus a workaround for the poorer tracking on iOS 11.
- 2018-06-02 [Custom CloudKit sharing workflow](https://www.sofapps.it/blog/custom-cloudkit-sharing/index.md): A CloudKit sharing workflow without UICloudSharingController: a public record stores the CKShare URL so friends can fetch private data without share dialogs.
- 2018-03-28 [Stored properties and extensions: a pure Swift approach](https://www.sofapps.it/blog/swift-stored-properties-extensions/index.md): Swift extensions cannot hold stored properties. A pure Swift workaround with a static Holder, then a per-instance dictionary keyed by memory address.
- 2018-02-01 [Building a HomeKit accessory](https://www.sofapps.it/blog/homekit-accessory-arduino/index.md): How to build a HomeKit accessory with a Raspberry Pi running Homebridge and an Arduino YUN: a gate remote and a DHT22 sensor controlled with Siri.
- 2017-11-17 [Face ID is a huge step forward](https://www.sofapps.it/blog/face-id-step-forward/index.md): Why Face ID is more than a biometric password: the TrueDepth sensor, a learning engine that adds context awareness, and why the published attacks prove little.
- 2017-11-16 [Tales from the future](https://www.sofapps.it/blog/tales-from-the-future/index.md): A failed Instagram post sets off a thought experiment on camera permissions and the iPhone X TrueDepth camera, and on why iOS should show when it is in use.
- 2017-11-08 [A Swift extension for String and HTML](https://www.sofapps.it/blog/swift-string-html-extension/index.md): Convert HTML strings into NSAttributedString with a native Swift String extension, set font, size and color through CSS, and read the document attributes.
- 2017-11-03 [iPhone X and peripheral vision](https://www.sofapps.it/blog/iphone-x-peripheral-vision/index.md): How the iPhone X Safe Area and peripheral vision shape app layout: screen zones, landscape insets and aspect ratios compared with the iPhone 8.
