All blogs / Mobile / iOS / Android
Bruno Rocha
SwiftRocks is Bruno Rocha's blog about Swift / iOS and the software engineering industry.
Mobile / iOS / AndroidPerformance / optimizationSoftware / engineering practice
- Posts
- 106 from 7 Nov 2016 to 9 Aug 2026
- Posting
- monthly (6 in the last year)
- Kind
- personal blog
- Feed
- https://swiftrocks.com/rss.xml
2026 6
- Using AI while exercising your critical thinking
- Everything about my smart home and homelab setup
- A system prompt to get AI to stop pretending to be human
- I tried to record music onto a cassette tape using modern tech
- Digitizing photos from the 1998 Game Boy Camera
- How my software engineering workflow has changed in the past year
2025 5
2024 9
- What happens when you move a file in git?
- Focus not on the task, but on the problem behind the task
- Working at startups vs large companies
- My process for learning new languages
- What are mobile release engineering teams and when do you need one? (Runway)
- Recommended WWDC24 Sessions
- Using @_silgen_name to forward declare functions in Swift and improve build times
- Software engineering book recommendations
- What the hell are passkeys? (Runway)
2023 2
2022 12
- Are your frameworks bulletproof?
- What's the "any" keyword? Understanding Type Erasure in Swift
- Using a Macbook Pro as a gaming console
- Sentiment Analysis with NSTagger: Ranking popular subreddits by the negativity/hostility of its comments
- Thoughts on SwiftUI vs UIKit
- Understanding Certificates and iOS Provisioning Profiles
- Performance Trace Profiles in iOS: Debugging performance issues you can't reproduce
- Faster iOS performance debugging with ETTrace
- How async/await works internally in Swift
- How necessary are the programming fundamentals?
- There is no right or wrong in software engineering
- Focus on concepts, not approaches
2021 17
- Detecting Broken Constraints in Swift
- How To Solve Any iOS Crash Ever
- Enabling Module Stability in Swift Package Manager Projects
- Unit Testing Weak References / Retain Cycles in Swift
- Solving CPU Usage Crashes with Xcode's Energy Organizer
- How AsyncSequence works internally in Swift
- Reverse engineering a 5 year old Xcode issue
- Swift's Documentation Markup
- Adding Intelligent Code Generation to Swift Projects with SourceKit
- StaticString, and how it works internally in Swift
- Extending / Creating Combine Publishers the Right Way
- Benchmarking Swift Code Properly with Attabench
- How Actors Work Internally in Swift
- Creating 3D Models from Photographs with RealityKit in Swift
- Thread Safety in Swift
- Creating a licensing system for paid apps in Swift
- Be careful with Obj-C bridging in Swift
2020 21
- Understanding @inlinable in Swift
- DispatchSource: Detecting changes in files and folders in Swift
- How Swift API Availability Works Internally
- UI Testing Deeplinks and Universal Links in iOS
- Improving Observer Pattern APIs in Swift With Weak Collections
- App Attest: How to prevent an iOS app's APIs from being abused
- Entry Points in Swift: How @main and @UIApplicationMain work internally
- Adapting Objective-C APIs to Swift with NS_REFINED_FOR_SWIFT
- Creating Debug Menus in Swift with UIContextMenuInteraction
- How to create Widgets in iOS 14 in Swift
- Benefits of using throwing functions (try) - Swift's most underrated feature?
- How Random Numbers Work In Swift
- Unit Testing Preprocessor Macros in Swift
- Weak Dictionary Values in Swift
- Understanding Swift's ObjectIdentifier
- Useful Global Swift Functions
- How Collection Diffing works in Swift
- Swift Codable: Decoding / Encoding With Context
- Reducing iOS Build Times by using Interface Modules
- How Hashable works in Swift
- Using Type Erasure to Build a Dependency Injecting Routing Framework in Swift
2019 17
- Faster Array Operations With CollectionOfOne in Swift
- How OptionSet works inside the Swift Compiler
- NSCopying uses in Swift
- Swift's Sequence Inside The Compiler: How for loops work internally
- Building a Face Detecting Robot with URLSessionWebSocketTask, CoreML, SwiftUI and an Arduino
- Using SIMD Vector Types in Swift
- Timsort and Introsort: Swift's Sorting Algorithms
- Advanced lldb tricks for Swift - Injecting and changing code on the fly
- Swift ExpressibleBy protocols: What they are and how they work internally in the compiler
- Useful (and obscure!) Foundation types in Swift
- Understanding Opaque Return Types in Swift
- Inside SwiftUI's Declarative Syntax's Compiler Magic
- autoreleasepool uses in Swift
- Avoiding Release Anxiety 2: On the importance of creating a code Style Guide
- Avoiding Release Anxiety 1: Block-based UI Testing in Swift
- iOS Responder Chain: UIResponder, UIEvent, UIControl and uses
- Adding iOS Home Shortcuts to Specific Parts of An App in Swift
2018 16
- Avoiding Callback Hell in Swift
- How @dynamicMemberLookup Works Internally in Swift (+ Creating Custom Swift Attributes)
- How Never Works Internally in Swift
- What's .self, .Type and .Protocol? Understanding Swift Metatypes
- Running Other Apps' Siri Shortcuts Through Deeplinks in Swift
- How CaseIterable Works Internally in Swift
- Swift Associated Types With Default Values
- Lazy Sequences in Swift And How They Work
- Writing Custom Pattern Matching in Swift
- Writing Cleaner View Code in Swift By Overriding loadView()
- The Forbidden @inline Attribute in Swift
- Competitive Programming With Swift
- Unowned Properties in Swift
- Memory Management and Performance of Value Types
- Understanding DispatchQueues
- Detecting TouchID fingerprint/FaceID face changes