Follow your curiosity, one topic at a time.

API Design

Verifying Contracts Against a Controlled Server Designing an API Client Around Consumer Needs Building Typed Endpoints and Request Bodies in Swift When Protocols Are Overkill in Swift Protocol Inheritance in Swift: Refine Capabilities Without Sharing Storage Property and Method Requirements in Swift Protocols Method Overloading in Swift: Let the Call Site Explain the Choice Abstraction in Swift: Designing Interfaces Around Intent

ARC

Deinitialization in Swift Parent and Child Classes in Swift: Inheritance vs. Ownership Class-Only Protocols in Swift: AnyObject and Ownership Initializers and Deinitializers: The Lifetime of a Swift Object Capture Lists in Swift Closures Automatic Reference Counting (ARC) in Swift

About

About Me

Abstraction

Protocols Instead of Abstract Classes in Swift Abstraction in Swift: Designing Interfaces Around Intent

Accelerate

Sampling Rates, Noise, Filtering, and Drift

Access Control

Encapsulation in Swift: Protecting Valid State

Actors

Refreshing Credentials Without Duplicate Requests Choosing an Executor in Swift Without Blocking the UI Isolated and Nonisolated Methods in Swift Actor Reentrancy in Swift: Keeping Invariants Across Suspension Points Actors in Swift: Protecting State Behind an Isolation Boundary Unstructured and Detached Tasks in Swift: When to Use Each

Adapters

Designing Error Handling Around Swift Protocols

Algorithms

Linear Programming in Swift: Model Constraints and Solve Small Two-Variable Problems Parallel Algorithms and MapReduce in Swift: Partition, Isolate, and Combine The Fourier Transform in Swift: DFT, Radix-2 FFT, and Sampling Cryptographic Algorithms in Swift: SHA-256, X25519, and Derived Keys Merkle Trees in Swift: Commitments, Inclusion Proofs, and Canonical Encoding HyperLogLog in Swift: Estimate Distinct Counts and Merge Compatible Sketches Bloom Filters in Swift: Probabilistic Membership with an Error Budget Inverted Indexes in Swift: Tokenization, Posting Lists, and Boolean Search Dynamic Programming in Swift: State, Recurrences, and Reconstructing Decisions Using SwiftGraph in Swift: Model the Problem and Verify Library Semantics Minimum Spanning Trees in Swift: Kruskal, Union-Find, and Cut Safety A* Pathfinding in Swift: Heuristics, Reopening, and Optimality Shortest Paths in Swift: Dijkstra, Bellman-Ford, and Weight Assumptions Breadth-First Search in Swift: Layers, Shortest Hops, and Multi-Source Search Depth-First Search in Swift: Paths, Cycles, and Topological Order Graphs in Swift: Vertices, Edges, and Representation Contracts Tries in Swift: Prefix Search, Deletion, and Unicode Policy Splay Trees in Swift: Move Accessed Keys to the Root AVL Trees in Swift: Rotations, Cached Heights, and Logarithmic Search Heaps and Priority Queues in Swift: Maintain the Next Best Item Binary Trees in Swift: Shape, Traversal, and Expression Evaluation Quicksort in Swift: Three-Way Partitioning and Duplicate Keys Stable Merge Sort in Swift: Divide, Merge, and Account for Storage Selection Sort in Swift: Minimum Selection and the Cost of Writes Insertion Sort in Swift: Sorted Prefixes and Nearly Sorted Input Bubble Sort in Swift: Inversions, Early Exit, and a Correctness Invariant Comparing Sorting Algorithms in Swift: Stability, Memory, and Real Workloads Queues in Swift: FIFO Without Repeated Array Shifts Stacks in Swift: LIFO State, Balanced Delimiters, and Undo Hash Tables in Swift: Collisions, Resizing, and Stable Key Contracts Analyzing Swift Algorithms: From a Slow Screen to a Defensible Cost Model Big O in Swift: Bounds, Growth Rates, and Amortized Work Time and Space Complexity in Swift: Count Work, Copies, and Live Storage Refresher: Solving Few Problems

Anti-Patterns

Common Object-Oriented Anti-Patterns in Swift

App Design

Migrating Swift Architectures: One Writer, Stable Contracts, and Incremental Cutovers UIKit and SwiftUI Architecture: Preserve Ownership Across the Framework Boundary Architecture and Testability in Swift: Deterministic Boundaries and Useful Evidence Choosing a Swift Architecture from State, Team Boundaries, and Change Pressure Lasso in Swift: Screen State, Actions, Outputs, and Flow Ownership The Composable Architecture in Swift: Reducer Composition, Dependencies, and Effects The Elm Architecture in Swift: Model, Update, View, and Described Effects Redux-Style Architecture in Swift: Pure Reducers and an Ordered Store RIBs at Scale: Feature Ownership, Plugin Boundaries, and Session Cleanup RIBs in Swift: Business Lifetimes, Child Routing, and Dependency Scopes When Architecture Structure Pays Off: Change Cost, Contracts, and Evidence Clean Swift in Swift: Request, Response, and View Model Through the VIP Cycle VIPER in Swift: A Complete Use Case Across Five Roles Clean Architecture in Swift: Dependency Direction and Honest Use-Case Boundaries MVVM in SwiftUI: Observable State, View Identity, and Async Work MVVM with Coordinators in Swift: Typed Outputs and Owned Navigation Flows Data Binding in Swift: Closures, Combine, and Observation Have Different Contracts MVVM in Swift: State Projection, User Intent, and Request Identity Choosing MVP in Swift: Presentation Rules, View Contracts, and Integration Cost MVP in Swift: A Passive View and an Explicit Presentation Contract ModelAdapter-ViewBinder in Swift: Explicit Bindings and Disposable Lifetimes MVC with Coordinators in Swift: Navigation Policy and Screen Lifetime MVC with View State in Swift: Separate Document Facts from Interaction State Refactoring Massive View Controllers in Swift Around Real Responsibilities MVC in Swift: Where Simplicity Helps and Coupling Starts to Hurt MVC in Swift: Model Rules, View Rendering, and Controller Coordination

App Lifecycle

Background Location and App Lifecycle Boundaries

Apps

Portfolio

Architecture

Designing an API Client Around Consumer Needs MVVM with RxSwift Three-Tier Architecture in Swift: Presentation, Use Cases, and Data Boundaries Front Controller in Swift: Validate and Dispatch Incoming Requests in One Place Service Locators and Registries in Swift: Resolution, Scope, and Hidden Dependencies Repository in Swift: Domain Contracts, Cache Policy, and Consistent Writes Migrating Swift Architectures: One Writer, Stable Contracts, and Incremental Cutovers Coordinator in Swift: Navigation, Child Flows, and Ownership UIKit and SwiftUI Architecture: Preserve Ownership Across the Framework Boundary Specification in Swift: Compose Rules with Clear Evaluation Semantics Architecture and Testability in Swift: Deterministic Boundaries and Useful Evidence Null Object in Swift: An Explicit No-Op Policy Instead of Missing Behavior Choosing a Swift Architecture from State, Team Boundaries, and Change Pressure Visitor in Swift: Double Dispatch, New Operations, and the Closed Node Set Lasso in Swift: Screen State, Actions, Outputs, and Flow Ownership Template Method in Swift: Fix the Algorithm and Expose Narrow Hooks Nested Types in Swift The Composable Architecture in Swift: Reducer Composition, Dependencies, and Effects State in Swift: Make Transitions and Legal Operations Explicit The Elm Architecture in Swift: Model, Update, View, and Described Effects Memento in Swift: Restore Owned State Through Opaque Snapshots Redux-Style Architecture in Swift: Pure Reducers and an Ordered Store Mediator in Swift: Coordinate Colleagues Without a Web of Callbacks RIBs at Scale: Feature Ownership, Plugin Boundaries, and Session Cleanup Command in Swift: Model Actions, Undo, and Redo as Explicit Operations RIBs in Swift: Business Lifetimes, Child Routing, and Dependency Scopes Chain of Responsibility in Swift: Explicit Handling, Rejection, and Fallthrough When Architecture Structure Pays Off: Change Cost, Contracts, and Evidence Publisher-Subscriber in Swift: Typed Events, Queued Delivery, and Subscription Lifetime Clean Swift in Swift: Request, Response, and View Model Through the VIP Cycle Proxy in Swift: Control Access, Loading, and Cache Validity VIPER in Swift: A Complete Use Case Across Five Roles Flyweight in Swift: Share Immutable Intrinsic State Without Sharing Edits Clean Architecture in Swift: Dependency Direction and Honest Use-Case Boundaries Facade in Swift: Give a Use Case One Coherent Entry Point MVVM in SwiftUI: Observable State, View Identity, and Async Work Decorator in Swift: Add Behavior While Preserving the Capability Contract MVVM with Coordinators in Swift: Typed Outputs and Owned Navigation Flows Composite in Swift: Treat Leaves and Groups Through One Honest Contract Access Control in Swift Data Binding in Swift: Closures, Combine, and Observation Have Different Contracts Bridge in Swift: Separate Two Independent Axes of Variation MVVM in Swift: State Projection, User Intent, and Request Identity Adapter in Swift: Translate Contracts Without Hiding Meaning Choosing MVP in Swift: Presentation Rules, View Contracts, and Integration Cost Monostate in Swift: Separate Instances with One Shared State MVP in Swift: A Passive View and an Explicit Presentation Contract Lazy Initialization in Swift: Deferred Work, Failure, and Concurrency ModelAdapter-ViewBinder in Swift: Explicit Bindings and Disposable Lifetimes Object Pools in Swift: Bounded Resources, Leases, and Reliable Return MVC with Coordinators in Swift: Navigation Policy and Screen Lifetime Prototype in Swift: Copying Values, Cloning Objects, and Preserving Identity Rules MVC with View State in Swift: Separate Document Facts from Interaction State Builder in Swift: Assemble Configuration Without Publishing Invalid State Refactoring Massive View Controllers in Swift Around Real Responsibilities Abstract Factory in Swift: Construct Compatible Families of Capabilities MVC in Swift: Where Simplicity Helps and Coupling Starts to Hurt Factory Method in Swift: A Stable Workflow with a Construction Hook MVC in Swift: Model Rules, View Rendering, and Controller Coordination Singleton in Swift: Shared Identity, Initialization, and Hidden Dependencies Pure Functions and Side Effects in Swift: Build a Testable Core

Associated Types

Associated Types in Swift: Preserve Relationships Between Capabilities

AsyncSequence

Streaming Responses and Incremental Parsing Pagination: Page Numbers, Cursors, and Stable Ordering Bridging Publishers to async/await with .values Combine vs. async/await and AsyncSequence Building Streams with AsyncStream and AsyncThrowingStream in Swift Consuming Values with AsyncSequence in Swift

AsyncStream

Buffering, Backpressure, and Stream Termination in Swift Building Streams with AsyncStream and AsyncThrowingStream in Swift

Authentication

Handling Logout During an In-Flight Request Refreshing Credentials Without Duplicate Requests Authentication Headers and Credential Scope

Background

Background Transfers and App Relaunch

Basics

Error Handling in Swift Access Control in Swift Enumerations in Swift Control Flow in Swift: if, guard, switch, and Loops Strings and Characters That Don’t Bite Operators You Actually Use stride in Swift Initialization in Swift Methods and mutating in Swift Properties in Swift Structures and Classes in Swift: Value vs. Reference Types Functions in Swift Arrays and Dictionaries in Swift

Best Practices

Clean Code in Swift

Bitwise

Mastering Swift Bitwise Operators: Theory and Practical Examples

Books

Books

Caching

HTTP Caching with Cache-Control and ETag Managing Resources: share and Multicasting

Cancellation

Rejecting Stale Results After Request Replacement in Swift Continuation Ownership, Cancellation, and Double Resume in Swift Cancellation Handlers and Reliable Resource Cleanup in Swift Cooperative Cancellation and Cancellation Checks in Swift The Observer Pattern in Swift: Subscriptions, Ordering, and Cancellation

Case Study

Build a Small Reading-List App with Protocol-Oriented Swift A Functional Spreadsheet App in Swift: Formulas, Dependencies, and Cycles

Classes

Deinitialization in Swift Initialization in Swift Inheritance in Swift

Clean Code

Clean Code in Swift

Closures

Higher-Order Functions in Swift: Reusable Policies and Honest Effects Thinking Functionally in Swift: Functions as Values Capture Lists in Swift Closures Escaping and Non-Escaping Closures in Swift Closures in Swift

Codable

Validating Decoded Data Before It Reaches the UI Decoding JSON with Codable: Keys, Numbers, Dates, and Failure Building Typed Endpoints and Request Bodies in Swift

Collections

compactMap and flatMap in Swift: Missing Values, Nested Values, and Lost Errors map, filter, and reduce in Swift: Choose the Operation That Matches the Result From Imperative to Declarative Swift Without Losing the Algorithm stride in Swift Subscripts in Swift Arrays and Dictionaries in Swift

Combine

Combine vs. the Observation Framework in SwiftUI Bridging Publishers to async/await with .values Combine vs. async/await and AsyncSequence Testing Publishers Debugging Pipelines with print and handleEvents Managing Resources: share and Multicasting Schedulers: receive(on:) and subscribe(on:) Error Handling: catch, retry, and replaceError Notifications as Publishers Key-Value Observing with Publishers Timers Networking with URLSession Publishers Sequence Operators: first, last, and collect Time: debounce, throttle, and delay Combining: combineLatest, zip, and merge Filtering: filter, removeDuplicates, and compactMap Transforming: map, flatMap, and scan AnyCancellable and Memory Management @Published Properties Subjects: PassthroughSubject and CurrentValueSubject sink and assign Publishers, Subscribers, and Subscriptions

Composition

Parser Combinators in Swift: Build a Grammar from Small Functions Building Diagrams with Functions in Swift: A Small Layout Language Protocol Inheritance in Swift: Refine Capabilities Without Sharing Storage Composition Over Inheritance in Swift Protocols Instead of Multiple Inheritance in Swift Wrapping Core Image Filters in Swift Functions The Limits of Class Inheritance in Swift

Concurrency

WebSockets: Connection State and Reconnection Coalescing Duplicate Requests and Rejecting Stale Results Timeouts, Cancellation, and Request Lifetimes Requests and Responses with async and await in URLSession Profiling Task Lifetimes and Main-Actor Contention in Swift Finding Data Races in Swift with Thread Sanitizer Avoiding Deadlocks and Blocking Waits in Swift Concurrency Testing Concurrent Swift Code with Controlled Interleavings Rejecting Stale Results After Request Replacement in Swift Continuation Ownership, Cancellation, and Double Resume in Swift Bridging Publishers to async/await with .values Combine vs. async/await and AsyncSequence Bridging Callback APIs with Checked Continuations in Swift Buffering, Backpressure, and Stream Termination in Swift Building Streams with AsyncStream and AsyncThrowingStream in Swift Schedulers: receive(on:) and subscribe(on:) Consuming Values with AsyncSequence in Swift Notifications as Publishers Migrating to Swift 6 Data-Race Safety Choosing an Executor in Swift Without Blocking the UI Isolated and Nonisolated Methods in Swift Sendable in Swift: Moving Values Across Isolation Boundaries The Main Actor and UI-Facing State in Swift Actor Reentrancy in Swift: Keeping Invariants Across Suspension Points Actors in Swift: Protecting State Behind an Isolation Boundary Task Priority, Inheritance, and Priority Inversion in Swift Unstructured and Detached Tasks in Swift: When to Use Each Cancellation Handlers and Reliable Resource Cleanup in Swift Cooperative Cancellation and Cancellation Checks in Swift Task Groups in Swift: Fan-Out, Aggregation, and Early Exit Creating Tasks and Choosing Their Lifetime Owner in Swift Structured Concurrency and Child-Task Lifetimes in Swift Running Independent Work with async let in Swift Suspending Functions with async and await in Swift Threads, Dispatch Queues, and Swift Tasks: Three Layers of Concurrent Work Concurrency vs. Parallelism in Swift: Understanding the Difference Schedulers: observe(on:) and subscribe(on:) Single, Maybe, and Completable Stopping Updates When a Feature Ends Injecting Recorded Sensor Data for Deterministic Tests Combining Motion and Location Without Shared-State Races Timestamps, Stale Samples, and Out-of-Order Events Geocoding, Reverse Geocoding, and Request Limits Accelerometer and Gyroscope Measurements Operation and OperationQueue in Swift Swift Concurrency: async/await, Tasks, and Actors RunLoop Explained for Swift Developers

Conformance

Adopting Swift Protocols in Structs, Enums, and Classes

Continuations

Continuation Ownership, Cancellation, and Double Resume in Swift Bridging Callback APIs with Checked Continuations in Swift

Copying

Deep Copy vs. Shallow Copy in Swift

Core Image

Wrapping Core Image Filters in Swift Functions

Core Location

Stopping Updates When a Feature Ends Testing Unavailable Hardware and Denied Permissions Injecting Recorded Sensor Data for Deterministic Tests Designing Features Around Uncertainty and Accuracy Distinguishing Missing Data from a Valid Zero Reading Combining Motion and Location Without Shared-State Races Timestamps, Stale Samples, and Out-of-Order Events Background Location and App Lifecycle Boundaries Geocoding, Reverse Geocoding, and Request Limits Visits and Significant Location Changes Region Monitoring and Geofencing Heading, Compass Calibration, and Magnetic Interference Distance Filters and Energy-Aware Tracking Location Updates and Accuracy Requirements Device Testing vs. Simulator Capabilities Handling Permission Changes and Reduced Accuracy Requesting Motion and Location Permissions in Context Checking Sensor Availability Before Starting Work

Core Motion

Stopping Updates When a Feature Ends Distinguishing Missing Data from a Valid Zero Reading Combining Motion and Location Without Shared-State Races Timestamps, Stale Samples, and Out-of-Order Events Heading, Compass Calibration, and Magnetic Interference Sampling Rates, Noise, Filtering, and Drift Altitude, Pressure, and Relative Measurements Pedometer Data and Activity Recognition Attitude, Reference Frames, and Coordinate Conversion Device Motion, Gravity, and User Acceleration Accelerometer and Gyroscope Measurements Device Testing vs. Simulator Capabilities Requesting Motion and Location Permissions in Context Checking Sensor Availability Before Starting Work

Coupling

The Law of Demeter in Swift: Reduce Knowledge of Object Internals

Data Modeling

Distinguishing Missing Data from a Valid Zero Reading A Functional Spreadsheet App in Swift: Formulas, Dependencies, and Cycles

Data Races

Finding Data Races in Swift with Thread Sanitizer Migrating to Swift 6 Data-Race Safety Sendable in Swift: Moving Values Across Isolation Boundaries Actors in Swift: Protecting State Behind an Isolation Boundary

Data Structures

Linear Programming in Swift: Model Constraints and Solve Small Two-Variable Problems Parallel Algorithms and MapReduce in Swift: Partition, Isolate, and Combine The Fourier Transform in Swift: DFT, Radix-2 FFT, and Sampling Cryptographic Algorithms in Swift: SHA-256, X25519, and Derived Keys Merkle Trees in Swift: Commitments, Inclusion Proofs, and Canonical Encoding HyperLogLog in Swift: Estimate Distinct Counts and Merge Compatible Sketches Bloom Filters in Swift: Probabilistic Membership with an Error Budget Inverted Indexes in Swift: Tokenization, Posting Lists, and Boolean Search Dynamic Programming in Swift: State, Recurrences, and Reconstructing Decisions Using SwiftGraph in Swift: Model the Problem and Verify Library Semantics Minimum Spanning Trees in Swift: Kruskal, Union-Find, and Cut Safety A* Pathfinding in Swift: Heuristics, Reopening, and Optimality Shortest Paths in Swift: Dijkstra, Bellman-Ford, and Weight Assumptions Breadth-First Search in Swift: Layers, Shortest Hops, and Multi-Source Search Depth-First Search in Swift: Paths, Cycles, and Topological Order Graphs in Swift: Vertices, Edges, and Representation Contracts Tries in Swift: Prefix Search, Deletion, and Unicode Policy Splay Trees in Swift: Move Accessed Keys to the Root AVL Trees in Swift: Rotations, Cached Heights, and Logarithmic Search Heaps and Priority Queues in Swift: Maintain the Next Best Item Binary Trees in Swift: Shape, Traversal, and Expression Evaluation Quicksort in Swift: Three-Way Partitioning and Duplicate Keys Stable Merge Sort in Swift: Divide, Merge, and Account for Storage Purely Functional Data Structures in Swift: Persistent Lists and Queues Selection Sort in Swift: Minimum Selection and the Cost of Writes Insertion Sort in Swift: Sorted Prefixes and Nearly Sorted Input Bubble Sort in Swift: Inversions, Early Exit, and a Correctness Invariant Comparing Sorting Algorithms in Swift: Stability, Memory, and Real Workloads Queues in Swift: FIFO Without Repeated Array Shifts Stacks in Swift: LIFO State, Balanced Delimiters, and Undo Hash Tables in Swift: Collisions, Resizing, and Stable Key Contracts Analyzing Swift Algorithms: From a Slow Screen to a Defensible Cost Model Big O in Swift: Bounds, Growth Rates, and Amortized Work Time and Space Complexity in Swift: Count Work, Copies, and Live Storage

Data-Structures

Swift Sets: Basics and Practical Examples

Deadlocks

Avoiding Deadlocks and Blocking Waits in Swift Concurrency

Debugging

Profiling Task Lifetimes and Main-Actor Contention in Swift Finding Data Races in Swift with Thread Sanitizer Avoiding Deadlocks and Blocking Waits in Swift Concurrency Debugging Pipelines with print and handleEvents LLDB Survival Guide: Theory, Tricks, and Python Hooks Reflection in Swift with Mirror Finding Memory Bugs with Address Sanitizer

Delegation

Delegation in Swift: One Object Reporting to Another

Dependency Injection

Factories in Protocol-Oriented Swift: Construct the Right Capability Dependency Injection in Swift Without a Container

Design

Designing Features Around Uncertainty and Accuracy When Protocols Are Overkill in Swift Mixing Object-Oriented and Functional Programming in Swift The SOLID Principles in Swift: Boundaries That Survive Change Composition Over Inheritance in Swift OOP vs. POP in Swift: Two Ways to Share Behavior Thinking in Objects: Modeling a Domain in Swift

Design Patterns

Three-Tier Architecture in Swift: Presentation, Use Cases, and Data Boundaries Front Controller in Swift: Validate and Dispatch Incoming Requests in One Place Service Locators and Registries in Swift: Resolution, Scope, and Hidden Dependencies Repository in Swift: Domain Contracts, Cache Policy, and Consistent Writes Coordinator in Swift: Navigation, Child Flows, and Ownership Specification in Swift: Compose Rules with Clear Evaluation Semantics Null Object in Swift: An Explicit No-Op Policy Instead of Missing Behavior Visitor in Swift: Double Dispatch, New Operations, and the Closed Node Set Template Method in Swift: Fix the Algorithm and Expose Narrow Hooks State in Swift: Make Transitions and Legal Operations Explicit Memento in Swift: Restore Owned State Through Opaque Snapshots Mediator in Swift: Coordinate Colleagues Without a Web of Callbacks Command in Swift: Model Actions, Undo, and Redo as Explicit Operations Chain of Responsibility in Swift: Explicit Handling, Rejection, and Fallthrough Publisher-Subscriber in Swift: Typed Events, Queued Delivery, and Subscription Lifetime Proxy in Swift: Control Access, Loading, and Cache Validity Flyweight in Swift: Share Immutable Intrinsic State Without Sharing Edits Facade in Swift: Give a Use Case One Coherent Entry Point Decorator in Swift: Add Behavior While Preserving the Capability Contract Composite in Swift: Treat Leaves and Groups Through One Honest Contract Bridge in Swift: Separate Two Independent Axes of Variation Adapter in Swift: Translate Contracts Without Hiding Meaning Monostate in Swift: Separate Instances with One Shared State Lazy Initialization in Swift: Deferred Work, Failure, and Concurrency Object Pools in Swift: Bounded Resources, Leases, and Reliable Return Prototype in Swift: Copying Values, Cloning Objects, and Preserving Identity Rules Builder in Swift: Assemble Configuration Without Publishing Invalid State Abstract Factory in Swift: Construct Compatible Families of Capabilities Factory Method in Swift: A Stable Workflow with a Construction Hook Singleton in Swift: Shared Identity, Initialization, and Hidden Dependencies

Development

Setting Up a New macOS Device: My Essential Tweaks Zombies In Swift Network Issues in MacBooks with Silicon Chips and Proposed Solutions Test Doubles In Swift iOS Accessibility Basics SwiftUI View Values, Identity, and State: Avoiding Common Bugs This Is Why I Don't Prefer Git GUI Tools Why I Prefer To Store My Files On A Digital Ocean Space & Not Google Drive Or Dropbox. Gentle Introduction To Unit Testing. Refresher: Solving Few Problems iOS/Android Developer Security Basics Understanding GPS Hardware Basics for Mobile Developers Swift Sets: Basics and Practical Examples Using unicode markers (LTR: 0x200E, RTL:200F) to align "hybrid RTL/LTR strings" correctly. Mastering Swift Bitwise Operators: Theory and Practical Examples Easily Tiling Images in Interface Builder Without Code Why my 0.3 MB image occupies around 10 MB on RAM? Why You Should Never Use Floating-Point or Double Data Types for Money Calculations! Understanding Optionals in Swift: Handling Absence of Data Safely Swift: The Difference Between Void and () Swift: The Difference Between nil, Nil, NULL, NSNull Understanding Swift: Differences Between Any, AnyObject, and AnyHashable Swift Root/Base Class & NSObject: A Quick Look Swift's Basic Data Types & Type Inference Understanding Swift Variables and Constants: A Dive into Mutability Mastering Swift Style Guides: Elevate Your Code to the Next Level Swift Lexical Structure Swift Reserved Keywords, with brief explanations. Advantages of Swift Over Objective-C What is Swift Programming Language? Roadmaps

Diagnostics

Diagnosing Slow Requests and Excessive Network Usage

Dispatch

Default Implementations in Swift Protocol Extensions

Downloads

Download Progress, Resuming, and Temporary Files

Encapsulation

An OOP Refresher Before Protocol-Oriented Swift Encapsulation in Swift: Protecting Valid State

Energy

Profiling Sensor Work and Battery Usage Visits and Significant Location Changes Distance Filters and Energy-Aware Tracking

Enums

Enumerations in Swift Enumerations and Algebraic Data Types in Swift: Make Invalid States Harder to Build Pattern Matching in Swift

Equality

Equality, Identity, and Hashable in Swift

Error Handling

Error Handling: catch, retry, and replaceError Error Handling: catch, catchAndReturn, and retry Designing Error Handling Around Swift Protocols Typed Throws in Swift 6: Carry Error Types Through Protocols

Errors

Separating Transport Errors from Application Failures Error Handling in Swift defer in Swift

Executors

Choosing an Executor in Swift Without Blocking the UI

Extensions

Constrained Protocol Extensions in Swift: Make the Requirement Visible Default Implementations in Swift Protocol Extensions

Factory

Factories in Protocol-Oriented Swift: Construct the Right Capability

Foundation

Operation and OperationQueue in Swift

Frameworks

ABI Stability in Swift

Functional Programming

Transforming: map, flatMap, and scan Functors, Applicative Functors, and Monads in Practical Swift A Functional Spreadsheet App in Swift: Formulas, Dependencies, and Cycles Parser Combinators in Swift: Build a Grammar from Small Functions Mixing Object-Oriented and Functional Programming in Swift Building Diagrams with Functions in Swift: A Small Layout Language Lazy Sequences in Swift: Deferred Work, Repeated Work, and Bounded Results Iterators and Sequences in Swift: Pull Values Without Assuming Replay Persistent Binary Search Trees and Tries in Swift Purely Functional Data Structures in Swift: Persistent Lists and Queues Property-Based Testing in Swift: Generators, Shrinking, and Reproducible Failures Value Types and Copy-on-Write in Swift: Independence Without Eager Copies The Value of Immutability in Swift: Stable Facts and Explicit Changes Enumerations and Algebraic Data Types in Swift: Make Invalid States Harder to Build Optionals as a Functional Tool in Swift compactMap and flatMap in Swift: Missing Values, Nested Values, and Lost Errors map, filter, and reduce in Swift: Choose the Operation That Matches the Result Higher-Order Functions in Swift: Reusable Policies and Honest Effects Wrapping Core Image Filters in Swift Functions From Imperative to Declarative Swift Without Losing the Algorithm Pure Functions and Side Effects in Swift: Build a Testable Core Thinking Functionally in Swift: Functions as Values

Functions

Thinking Functionally in Swift: Functions as Values Closures in Swift Functions in Swift

GCD

Threads, Dispatch Queues, and Swift Tasks: Three Layers of Concurrent Work

Generics

Phantom Types in Swift Performance Considerations for Protocol-Oriented Swift Functors, Applicative Functors, and Monads in Practical Swift Primary Associated Types in Swift: Keep the Useful Type Information Associated Types in Swift: Preserve Relationships Between Capabilities Constrained Protocol Extensions in Swift: Make the Requirement Visible Higher-Order Functions in Swift: Reusable Policies and Honest Effects Opaque and Boxed Types in Swift: some vs. any Generics in Swift

Geodesy

Location Updates and Accuracy Requirements

Graphics

Building Diagrams with Functions in Swift: A Small Layout Language Why my 0.3 MB image occupies around 10 MB on RAM?

HTTP

URLs, Query Parameters, and Percent Encoding in Swift HTTP Methods, Status Codes, and Headers: What URLSession Puts on the Wire

Hardware

Understanding GPS Hardware Basics for Mobile Developers

Hashable

Equality, Identity, and Hashable in Swift

Immutability

The Value of Immutability in Swift: Stable Facts and Explicit Changes

Inheritance

Parent and Child Classes in Swift: Inheritance vs. Ownership final in Swift: Closing Inheritance Deliberately The Limits of Class Inheritance in Swift Overriding Methods and Properties in Swift Designated and Convenience Initializers in Swift

Initialization

Designated and Convenience Initializers in Swift Initializers and Deinitializers: The Lifetime of a Swift Object

Instruments

Profiling Task Lifetimes and Main-Actor Contention in Swift Profiling Sensor Work and Battery Usage

Interface-Builder

Using unicode markers (LTR: 0x200E, RTL:200F) to align "hybrid RTL/LTR strings" correctly. Easily Tiling Images in Interface Builder Without Code

Interoperability

Swift Interoperability with Objective-C, C, and C++

Isolation

Isolated and Nonisolated Methods in Swift

Iterators

Iterators and Sequences in Swift: Pull Values Without Assuming Replay

JSON

Decoding JSON with Codable: Keys, Numbers, Dates, and Failure

KVO

Key-Value Observing with Publishers

Kalman Filter

Combining Motion and Location Without Shared-State Races

LLDB

LLDB Survival Guide: Theory, Tricks, and Python Hooks

Law of Demeter

The Law of Demeter in Swift: Reduce Knowledge of Object Internals

Lazy Evaluation

Lazy Sequences in Swift: Deferred Work, Repeated Work, and Bounded Results

Libraries

Portfolio

Logging

Redacting Sensitive Data from Network Logs Debugging Pipelines with print and handleEvents

Macros

Macros in Swift

Main Actor

Schedulers: receive(on:) and subscribe(on:)

MainActor

The Main Actor and UI-Facing State in Swift

MapKit

Geocoding, Reverse Geocoding, and Request Limits

Math

Heading, Compass Calibration, and Magnetic Interference Attitude, Reference Frames, and Coordinate Conversion Refresher: Solving Few Problems iOS/Android Developer Security Basics Understanding GPS Hardware Basics for Mobile Developers Swift Sets: Basics and Practical Examples

Memory

Value Types and Copy-on-Write in Swift: Independence Without Eager Copies Delegation in Swift: One Object Reporting to Another Value Types vs. Reference Types in Swift: Choosing Ownership

Memory Management

AnyCancellable and Memory Management sink and assign Creating Tasks and Choosing Their Lifetime Owner in Swift Disposing and DisposeBag Stopping Updates When a Feature Ends Capture Lists in Swift Closures Finding Memory Bugs with Address Sanitizer Escaping and Non-Escaping Closures in Swift Memory Safety in Swift: Exclusive Access Automatic Reference Counting (ARC) in Swift

Metaprogramming

Macros in Swift

Methods

Type Properties and Methods in Swift: static vs. class Method Overloading in Swift: Let the Call Site Explain the Choice

MetricKit

Profiling Sensor Work and Battery Usage

Migration

Bridging Publishers to async/await with .values Migrating to Swift 6 Data-Race Safety

Modeling

Enumerations and Algebraic Data Types in Swift: Make Invalid States Harder to Build Optionals as a Functional Tool in Swift Reading and Drawing UML Class Diagrams for Swift Thinking in Objects: Modeling a Domain in Swift

Network Framework

Offline Behavior and Reachability Assumptions

Networking

Diagnosing Slow Requests and Excessive Network Usage Reading URLSessionTaskMetrics Verifying Contracts Against a Controlled Server Testing Status Codes, Invalid Payloads, and Transport Errors Isolating HTTP Fixtures with URLProtocol Streaming Responses and Incremental Parsing WebSockets: Connection State and Reconnection Background Transfers and App Relaunch Download Progress, Resuming, and Temporary Files Uploading Files and Multipart Form Data Coalescing Duplicate Requests and Rejecting Stale Results Offline Behavior and Reachability Assumptions HTTP Caching with Cache-Control and ETag Retry Policies, Backoff, and Idempotency Timeouts, Cancellation, and Request Lifetimes Redacting Sensitive Data from Network Logs Handling Logout During an In-Flight Request App Transport Security and TLS Trust Refreshing Credentials Without Duplicate Requests Authentication Headers and Credential Scope Designing an API Client Around Consumer Needs Pagination: Page Numbers, Cursors, and Stable Ordering Validating Decoded Data Before It Reaches the UI Decoding JSON with Codable: Keys, Numbers, Dates, and Failure Building Typed Endpoints and Request Bodies in Swift Separating Transport Errors from Application Failures Requests and Responses with async and await in URLSession Choosing a URLSession Configuration URLs, Query Parameters, and Percent Encoding in Swift HTTP Methods, Status Codes, and Headers: What URLSession Puts on the Wire Networking with URLSession Publishers

NotificationCenter

Notifications as Publishers

OOP

Mixing Object-Oriented and Functional Programming in Swift Common Object-Oriented Anti-Patterns in Swift The Law of Demeter in Swift: Reduce Knowledge of Object Internals Dependency Injection in Swift Without a Container The SOLID Principles in Swift: Boundaries That Survive Change Deep Copy vs. Shallow Copy in Swift Equality, Identity, and Hashable in Swift Delegation in Swift: One Object Reporting to Another Composition Over Inheritance in Swift Parent and Child Classes in Swift: Inheritance vs. Ownership Protocols Instead of Multiple Inheritance in Swift Protocols Instead of Abstract Classes in Swift Type Properties and Methods in Swift: static vs. class OOP vs. POP in Swift: Two Ways to Share Behavior final in Swift: Closing Inheritance Deliberately Method Overloading in Swift: Let the Call Site Explain the Choice An OOP Refresher Before Protocol-Oriented Swift Overriding Methods and Properties in Swift Designated and Convenience Initializers in Swift Initializers and Deinitializers: The Lifetime of a Swift Object Polymorphism in Swift: One Interface, Different Behavior Abstraction in Swift: Designing Interfaces Around Intent Encapsulation in Swift: Protecting Valid State Reading and Drawing UML Class Diagrams for Swift Value Types vs. Reference Types in Swift: Choosing Ownership Thinking in Objects: Modeling a Domain in Swift Inheritance in Swift

Objective-C

Key-Value Observing with Publishers Swift Interoperability with Objective-C, C, and C++ Key-Value Observing (KVO) in Swift Swift: The Difference Between nil, Nil, NULL, NSNull Understanding Swift: Differences Between Any, AnyObject, and AnyHashable Understanding Swift Variables and Constants: A Dive into Mutability Advantages of Swift Over Objective-C What is Swift Programming Language? Method Swizzling in Swift

Observation

Combine vs. the Observation Framework in SwiftUI

Observer

The Observer Pattern in Swift: Subscriptions, Ordering, and Cancellation

Offline

Offline Behavior and Reachability Assumptions

Open Source

Swift Evolution: How the Language Changes

Operators

Managing Resources: share and Multicasting Sequence Operators: first, last, and collect Time: debounce, throttle, and delay Combining: combineLatest, zip, and merge Filtering: filter, removeDuplicates, and compactMap Transforming: map, flatMap, and scan Operators You Actually Use Advanced and Custom Operators in Swift

Optimization

Why my 0.3 MB image occupies around 10 MB on RAM?

Optionals

Optionals as a Functional Tool in Swift compactMap and flatMap in Swift: Missing Values, Nested Values, and Lost Errors Optional Chaining in Swift

Overriding

Overriding Methods and Properties in Swift

Ownership

Class-Only Protocols in Swift: AnyObject and Ownership

POP

When Protocols Are Overkill in Swift Performance Considerations for Protocol-Oriented Swift Refactoring a Swift Class Hierarchy into Protocols Build a Small Reading-List App with Protocol-Oriented Swift Factories in Protocol-Oriented Swift: Construct the Right Capability The Observer Pattern in Swift: Subscriptions, Ordering, and Cancellation Designing Error Handling Around Swift Protocols Typed Throws in Swift 6: Carry Error Types Through Protocols Protocol Inheritance in Swift: Refine Capabilities Without Sharing Storage Primary Associated Types in Swift: Keep the Useful Type Information Associated Types in Swift: Preserve Relationships Between Capabilities Constrained Protocol Extensions in Swift: Make the Requirement Visible Default Implementations in Swift Protocol Extensions Class-Only Protocols in Swift: AnyObject and Ownership Adopting Swift Protocols in Structs, Enums, and Classes Property and Method Requirements in Swift Protocols OOP vs. POP in Swift: Two Ways to Share Behavior The Limits of Class Inheritance in Swift An OOP Refresher Before Protocol-Oriented Swift Protocols in Swift

Pagination

Pagination: Page Numbers, Cursors, and Stable Ordering

Parallelism

Concurrency vs. Parallelism in Swift: Understanding the Difference

Parsing

Parser Combinators in Swift: Build a Grammar from Small Functions

Performance

Diagnosing Slow Requests and Excessive Network Usage Reading URLSessionTaskMetrics Coalescing Duplicate Requests and Rejecting Stale Results HTTP Caching with Cache-Control and ETag Choosing a URLSession Configuration Profiling Task Lifetimes and Main-Actor Contention in Swift Combine vs. the Observation Framework in SwiftUI Buffering, Backpressure, and Stream Termination in Swift Managing Resources: share and Multicasting Key-Value Observing with Publishers Choosing an Executor in Swift Without Blocking the UI Sequence Operators: first, last, and collect Filtering: filter, removeDuplicates, and compactMap AnyCancellable and Memory Management Task Priority, Inheritance, and Priority Inversion in Swift Concurrency vs. Parallelism in Swift: Understanding the Difference Profiling Sensor Work and Battery Usage Performance Considerations for Protocol-Oriented Swift Lazy Sequences in Swift: Deferred Work, Repeated Work, and Bounded Results map, filter, and reduce in Swift: Choose the Operation That Matches the Result Static vs. Dynamic Dispatch in Swift Why my 0.3 MB image occupies around 10 MB on RAM?

Persistence

Purely Functional Data Structures in Swift: Persistent Lists and Queues

Phantom Types

Phantom Types in Swift

Physics

Altitude, Pressure, and Relative Measurements

Polymorphism

Polymorphism in Swift: One Interface, Different Behavior

Portfolio

Portfolio

Privacy

Redacting Sensitive Data from Network Logs Handling Logout During an In-Flight Request Handling Permission Changes and Reduced Accuracy Requesting Motion and Location Permissions in Context

Probability

Designing Features Around Uncertainty and Accuracy Region Monitoring and Geofencing

Programming

Setting Up a New macOS Device: My Essential Tweaks Zombies In Swift Network Issues in MacBooks with Silicon Chips and Proposed Solutions Test Doubles In Swift iOS Accessibility Basics SwiftUI View Values, Identity, and State: Avoiding Common Bugs This Is Why I Don't Prefer Git GUI Tools Why I Prefer To Store My Files On A Digital Ocean Space & Not Google Drive Or Dropbox. Gentle Introduction To Unit Testing. Refresher: Solving Few Problems iOS/Android Developer Security Basics Understanding GPS Hardware Basics for Mobile Developers Swift Sets: Basics and Practical Examples Using unicode markers (LTR: 0x200E, RTL:200F) to align "hybrid RTL/LTR strings" correctly. Mastering Swift Bitwise Operators: Theory and Practical Examples Easily Tiling Images in Interface Builder Without Code Why my 0.3 MB image occupies around 10 MB on RAM? Why You Should Never Use Floating-Point or Double Data Types for Money Calculations! Understanding Optionals in Swift: Handling Absence of Data Safely Swift: The Difference Between Void and () Swift: The Difference Between nil, Nil, NULL, NSNull Understanding Swift: Differences Between Any, AnyObject, and AnyHashable Swift Root/Base Class & NSObject: A Quick Look Swift's Basic Data Types & Type Inference Understanding Swift Variables and Constants: A Dive into Mutability Mastering Swift Style Guides: Elevate Your Code to the Next Level Swift Lexical Structure Swift Reserved Keywords, with brief explanations. Advantages of Swift Over Objective-C What is Swift Programming Language? Roadmaps

Properties

Property Wrappers in Swift Type Properties and Methods in Swift: static vs. class Properties in Swift

Property Wrappers

@Published Properties

Protocols

When Protocols Are Overkill in Swift Performance Considerations for Protocol-Oriented Swift Refactoring a Swift Class Hierarchy into Protocols Build a Small Reading-List App with Protocol-Oriented Swift Factories in Protocol-Oriented Swift: Construct the Right Capability The Observer Pattern in Swift: Subscriptions, Ordering, and Cancellation Designing Error Handling Around Swift Protocols Typed Throws in Swift 6: Carry Error Types Through Protocols Protocol Inheritance in Swift: Refine Capabilities Without Sharing Storage Extensions in Swift Primary Associated Types in Swift: Keep the Useful Type Information Associated Types in Swift: Preserve Relationships Between Capabilities Constrained Protocol Extensions in Swift: Make the Requirement Visible Default Implementations in Swift Protocol Extensions Class-Only Protocols in Swift: AnyObject and Ownership Protocols Instead of Multiple Inheritance in Swift Adopting Swift Protocols in Structs, Enums, and Classes Protocols Instead of Abstract Classes in Swift Property and Method Requirements in Swift Protocols OOP vs. POP in Swift: Two Ways to Share Behavior The Limits of Class Inheritance in Swift An OOP Refresher Before Protocol-Oriented Swift Opaque and Boxed Types in Swift: some vs. any Polymorphism in Swift: One Interface, Different Behavior Protocols in Swift Static vs. Dynamic Dispatch in Swift

Quality

Swift Test Coverage, Test Plans, and CI Reliable UI Testing in Swift Integration Testing in Swift: Networking and Storage How to Avoid Flaky Tests in Swift Testing Asynchronous Swift Code FIRST Principles for Reliable Swift Tests

QuickCheck

Property-Based Testing in Swift: Generators, Shrinking, and Reproducible Failures

Race Conditions

Rejecting Stale Results After Request Replacement in Swift Actor Reentrancy in Swift: Keeping Invariants Across Suspension Points

Reactive Programming

Subjects: PassthroughSubject and CurrentValueSubject sink and assign Publishers, Subscribers, and Subscriptions Testing with RxTest and RxBlocking Writing Custom Reactive Extensions MVVM with RxSwift RxCocoa: Binding Observables to UIKit Schedulers: observe(on:) and subscribe(on:) Error Handling: catch, catchAndReturn, and retry Combining Operators: combineLatest, zip, merge, concat, withLatestFrom Transforming Operators: map, flatMap, flatMapLatest, concatMap Time Operators: debounce, throttle, delay, interval, timer, timeout Filtering Operators: filter, distinctUntilChanged, skip, take Driver and Signal Single, Maybe, and Completable Relays: PublishRelay and BehaviorRelay AsyncSubject ReplaySubject BehaviorSubject PublishSubject Disposing and DisposeBag Subscribing Creating Observables: just, of, from, and create Observables and Observers

Refactoring

Refactoring a Swift Class Hierarchy into Protocols Common Object-Oriented Anti-Patterns in Swift From Imperative to Declarative Swift Without Losing the Algorithm

Reliability

Retry Policies, Backoff, and Idempotency

Requirements

Property and Method Requirements in Swift Protocols

Resilience

Retry Policies, Backoff, and Idempotency Error Handling: catch, retry, and replaceError

Resource Management

Cancellation Handlers and Reliable Resource Cleanup in Swift

Roadmap

Roadmaps

RunLoop

Timers

Runtime

Reflection in Swift with Mirror Key-Value Observing (KVO) in Swift RunLoop Explained for Swift Developers ABI Stability in Swift Method Swizzling in Swift

RxCocoa

Writing Custom Reactive Extensions MVVM with RxSwift RxCocoa: Binding Observables to UIKit Driver and Signal

RxSwift

Testing with RxTest and RxBlocking Writing Custom Reactive Extensions MVVM with RxSwift RxCocoa: Binding Observables to UIKit Schedulers: observe(on:) and subscribe(on:) Error Handling: catch, catchAndReturn, and retry Combining Operators: combineLatest, zip, merge, concat, withLatestFrom Transforming Operators: map, flatMap, flatMapLatest, concatMap Time Operators: debounce, throttle, delay, interval, timer, timeout Filtering Operators: filter, distinctUntilChanged, skip, take Driver and Signal Single, Maybe, and Completable Relays: PublishRelay and BehaviorRelay AsyncSubject ReplaySubject BehaviorSubject PublishSubject Disposing and DisposeBag Subscribing Creating Observables: just, of, from, and create Observables and Observers

SOLID

The SOLID Principles in Swift: Boundaries That Survive Change

Safety

Memory Safety in Swift: Exclusive Access

Schedulers

Schedulers: receive(on:) and subscribe(on:) Time: debounce, throttle, and delay

Security

App Transport Security and TLS Trust Authentication Headers and Credential Scope iOS/Android Developer Security Basics

Sendable

Sendable in Swift: Moving Values Across Isolation Boundaries

Sensors

Designing Features Around Uncertainty and Accuracy Distinguishing Missing Data from a Valid Zero Reading Timestamps, Stale Samples, and Out-of-Order Events Background Location and App Lifecycle Boundaries Visits and Significant Location Changes Region Monitoring and Geofencing Heading, Compass Calibration, and Magnetic Interference Distance Filters and Energy-Aware Tracking Location Updates and Accuracy Requirements Sampling Rates, Noise, Filtering, and Drift Altitude, Pressure, and Relative Measurements Pedometer Data and Activity Recognition Attitude, Reference Frames, and Coordinate Conversion Device Motion, Gravity, and User Acceleration Accelerometer and Gyroscope Measurements Device Testing vs. Simulator Capabilities Handling Permission Changes and Reduced Accuracy Requesting Motion and Location Permissions in Context Checking Sensor Availability Before Starting Work

Sequence

Iterators and Sequences in Swift: Pull Values Without Assuming Replay

Signal Processing

Sampling Rates, Noise, Filtering, and Drift Pedometer Data and Activity Recognition Device Motion, Gravity, and User Acceleration

State

The Value of Immutability in Swift: Stable Facts and Explicit Changes

Streaming

Streaming Responses and Incremental Parsing

Streams

Buffering, Backpressure, and Stream Termination in Swift Building Streams with AsyncStream and AsyncThrowingStream in Swift Consuming Values with AsyncSequence in Swift

Strings

Strings and Characters That Don’t Bite

Structured Concurrency

Task Groups in Swift: Fan-Out, Aggregation, and Early Exit Structured Concurrency and Child-Task Lifetimes in Swift Running Independent Work with async let in Swift

Swift

Diagnosing Slow Requests and Excessive Network Usage Reading URLSessionTaskMetrics Verifying Contracts Against a Controlled Server Testing Status Codes, Invalid Payloads, and Transport Errors Isolating HTTP Fixtures with URLProtocol Streaming Responses and Incremental Parsing WebSockets: Connection State and Reconnection Background Transfers and App Relaunch Download Progress, Resuming, and Temporary Files Uploading Files and Multipart Form Data Coalescing Duplicate Requests and Rejecting Stale Results Offline Behavior and Reachability Assumptions HTTP Caching with Cache-Control and ETag Retry Policies, Backoff, and Idempotency Timeouts, Cancellation, and Request Lifetimes Redacting Sensitive Data from Network Logs Handling Logout During an In-Flight Request App Transport Security and TLS Trust Refreshing Credentials Without Duplicate Requests Authentication Headers and Credential Scope Designing an API Client Around Consumer Needs Pagination: Page Numbers, Cursors, and Stable Ordering Validating Decoded Data Before It Reaches the UI Decoding JSON with Codable: Keys, Numbers, Dates, and Failure Building Typed Endpoints and Request Bodies in Swift Separating Transport Errors from Application Failures Requests and Responses with async and await in URLSession Choosing a URLSession Configuration URLs, Query Parameters, and Percent Encoding in Swift HTTP Methods, Status Codes, and Headers: What URLSession Puts on the Wire Profiling Task Lifetimes and Main-Actor Contention in Swift Finding Data Races in Swift with Thread Sanitizer Avoiding Deadlocks and Blocking Waits in Swift Concurrency Testing Concurrent Swift Code with Controlled Interleavings Rejecting Stale Results After Request Replacement in Swift Combine vs. the Observation Framework in SwiftUI Continuation Ownership, Cancellation, and Double Resume in Swift Bridging Publishers to async/await with .values Combine vs. async/await and AsyncSequence Bridging Callback APIs with Checked Continuations in Swift Testing Publishers Buffering, Backpressure, and Stream Termination in Swift Debugging Pipelines with print and handleEvents Managing Resources: share and Multicasting Building Streams with AsyncStream and AsyncThrowingStream in Swift Schedulers: receive(on:) and subscribe(on:) Consuming Values with AsyncSequence in Swift Error Handling: catch, retry, and replaceError Notifications as Publishers Migrating to Swift 6 Data-Race Safety Key-Value Observing with Publishers Choosing an Executor in Swift Without Blocking the UI Timers Networking with URLSession Publishers Isolated and Nonisolated Methods in Swift Sequence Operators: first, last, and collect Sendable in Swift: Moving Values Across Isolation Boundaries Time: debounce, throttle, and delay Combining: combineLatest, zip, and merge The Main Actor and UI-Facing State in Swift Filtering: filter, removeDuplicates, and compactMap Actor Reentrancy in Swift: Keeping Invariants Across Suspension Points Transforming: map, flatMap, and scan AnyCancellable and Memory Management Actors in Swift: Protecting State Behind an Isolation Boundary @Published Properties Task Priority, Inheritance, and Priority Inversion in Swift Subjects: PassthroughSubject and CurrentValueSubject sink and assign Unstructured and Detached Tasks in Swift: When to Use Each Publishers, Subscribers, and Subscriptions Cancellation Handlers and Reliable Resource Cleanup in Swift Cooperative Cancellation and Cancellation Checks in Swift Task Groups in Swift: Fan-Out, Aggregation, and Early Exit Creating Tasks and Choosing Their Lifetime Owner in Swift Structured Concurrency and Child-Task Lifetimes in Swift Running Independent Work with async let in Swift Suspending Functions with async and await in Swift Threads, Dispatch Queues, and Swift Tasks: Three Layers of Concurrent Work Concurrency vs. Parallelism in Swift: Understanding the Difference Testing with RxTest and RxBlocking Writing Custom Reactive Extensions MVVM with RxSwift RxCocoa: Binding Observables to UIKit Schedulers: observe(on:) and subscribe(on:) Error Handling: catch, catchAndReturn, and retry Combining Operators: combineLatest, zip, merge, concat, withLatestFrom Transforming Operators: map, flatMap, flatMapLatest, concatMap Time Operators: debounce, throttle, delay, interval, timer, timeout Filtering Operators: filter, distinctUntilChanged, skip, take Driver and Signal Single, Maybe, and Completable Relays: PublishRelay and BehaviorRelay AsyncSubject ReplaySubject BehaviorSubject PublishSubject Disposing and DisposeBag Subscribing Creating Observables: just, of, from, and create Observables and Observers LLDB Survival Guide: Theory, Tricks, and Python Hooks Profiling Sensor Work and Battery Usage Stopping Updates When a Feature Ends Testing Unavailable Hardware and Denied Permissions Injecting Recorded Sensor Data for Deterministic Tests Designing Features Around Uncertainty and Accuracy Distinguishing Missing Data from a Valid Zero Reading Combining Motion and Location Without Shared-State Races Timestamps, Stale Samples, and Out-of-Order Events Background Location and App Lifecycle Boundaries Geocoding, Reverse Geocoding, and Request Limits Visits and Significant Location Changes Region Monitoring and Geofencing Heading, Compass Calibration, and Magnetic Interference Distance Filters and Energy-Aware Tracking Location Updates and Accuracy Requirements Sampling Rates, Noise, Filtering, and Drift Altitude, Pressure, and Relative Measurements Pedometer Data and Activity Recognition Attitude, Reference Frames, and Coordinate Conversion Device Motion, Gravity, and User Acceleration Accelerometer and Gyroscope Measurements Device Testing vs. Simulator Capabilities Handling Permission Changes and Reduced Accuracy Requesting Motion and Location Permissions in Context Checking Sensor Availability Before Starting Work Phantom Types in Swift Linear Programming in Swift: Model Constraints and Solve Small Two-Variable Problems Setting Up a New macOS Device: My Essential Tweaks Parallel Algorithms and MapReduce in Swift: Partition, Isolate, and Combine The Fourier Transform in Swift: DFT, Radix-2 FFT, and Sampling Cryptographic Algorithms in Swift: SHA-256, X25519, and Derived Keys Three-Tier Architecture in Swift: Presentation, Use Cases, and Data Boundaries Merkle Trees in Swift: Commitments, Inclusion Proofs, and Canonical Encoding Front Controller in Swift: Validate and Dispatch Incoming Requests in One Place HyperLogLog in Swift: Estimate Distinct Counts and Merge Compatible Sketches When Protocols Are Overkill in Swift Service Locators and Registries in Swift: Resolution, Scope, and Hidden Dependencies Bloom Filters in Swift: Probabilistic Membership with an Error Budget Performance Considerations for Protocol-Oriented Swift Repository in Swift: Domain Contracts, Cache Policy, and Consistent Writes Inverted Indexes in Swift: Tokenization, Posting Lists, and Boolean Search Migrating Swift Architectures: One Writer, Stable Contracts, and Incremental Cutovers Refactoring a Swift Class Hierarchy into Protocols Coordinator in Swift: Navigation, Child Flows, and Ownership Dynamic Programming in Swift: State, Recurrences, and Reconstructing Decisions UIKit and SwiftUI Architecture: Preserve Ownership Across the Framework Boundary Specification in Swift: Compose Rules with Clear Evaluation Semantics Build a Small Reading-List App with Protocol-Oriented Swift Using SwiftGraph in Swift: Model the Problem and Verify Library Semantics Architecture and Testability in Swift: Deterministic Boundaries and Useful Evidence Factories in Protocol-Oriented Swift: Construct the Right Capability Null Object in Swift: An Explicit No-Op Policy Instead of Missing Behavior Minimum Spanning Trees in Swift: Kruskal, Union-Find, and Cut Safety Clean Code in Swift Choosing a Swift Architecture from State, Team Boundaries, and Change Pressure Swift Evolution: How the Language Changes The Observer Pattern in Swift: Subscriptions, Ordering, and Cancellation Visitor in Swift: Double Dispatch, New Operations, and the Closed Node Set Swift Package Manager: A Practical Guide Operation and OperationQueue in Swift A* Pathfinding in Swift: Heuristics, Reopening, and Optimality Swift Concurrency: async/await, Tasks, and Actors Lasso in Swift: Screen State, Actions, Outputs, and Flow Ownership Macros in Swift Designing Error Handling Around Swift Protocols Template Method in Swift: Fix the Algorithm and Expose Narrow Hooks Nested Types in Swift Swift Test Coverage, Test Plans, and CI Shortest Paths in Swift: Dijkstra, Bellman-Ford, and Weight Assumptions Error Handling in Swift Typed Throws in Swift 6: Carry Error Types Through Protocols The Composable Architecture in Swift: Reducer Composition, Dependencies, and Effects State in Swift: Make Transitions and Legal Operations Explicit Zombies In Swift Breadth-First Search in Swift: Layers, Shortest Hops, and Multi-Source Search The Elm Architecture in Swift: Model, Update, View, and Described Effects Memento in Swift: Restore Owned State Through Opaque Snapshots Depth-First Search in Swift: Paths, Cycles, and Topological Order Redux-Style Architecture in Swift: Pure Reducers and an Ordered Store Reliable UI Testing in Swift Mediator in Swift: Coordinate Colleagues Without a Web of Callbacks Graphs in Swift: Vertices, Edges, and Representation Contracts Functors, Applicative Functors, and Monads in Practical Swift RIBs at Scale: Feature Ownership, Plugin Boundaries, and Session Cleanup Command in Swift: Model Actions, Undo, and Redo as Explicit Operations Tries in Swift: Prefix Search, Deletion, and Unicode Policy A Functional Spreadsheet App in Swift: Formulas, Dependencies, and Cycles RIBs in Swift: Business Lifetimes, Child Routing, and Dependency Scopes Chain of Responsibility in Swift: Explicit Handling, Rejection, and Fallthrough Integration Testing in Swift: Networking and Storage Splay Trees in Swift: Move Accessed Keys to the Root Parser Combinators in Swift: Build a Grammar from Small Functions When Architecture Structure Pays Off: Change Cost, Contracts, and Evidence Publisher-Subscriber in Swift: Typed Events, Queued Delivery, and Subscription Lifetime Mixing Object-Oriented and Functional Programming in Swift AVL Trees in Swift: Rotations, Cached Heights, and Logarithmic Search Building Diagrams with Functions in Swift: A Small Layout Language Clean Swift in Swift: Request, Response, and View Model Through the VIP Cycle How to Avoid Flaky Tests in Swift Proxy in Swift: Control Access, Loading, and Cache Validity Common Object-Oriented Anti-Patterns in Swift Heaps and Priority Queues in Swift: Maintain the Next Best Item VIPER in Swift: A Complete Use Case Across Five Roles Lazy Sequences in Swift: Deferred Work, Repeated Work, and Bounded Results Flyweight in Swift: Share Immutable Intrinsic State Without Sharing Edits Network Issues in MacBooks with Silicon Chips and Proposed Solutions The Law of Demeter in Swift: Reduce Knowledge of Object Internals Binary Trees in Swift: Shape, Traversal, and Expression Evaluation Iterators and Sequences in Swift: Pull Values Without Assuming Replay Clean Architecture in Swift: Dependency Direction and Honest Use-Case Boundaries Testing Asynchronous Swift Code Facade in Swift: Give a Use Case One Coherent Entry Point Dependency Injection in Swift Without a Container Quicksort in Swift: Three-Way Partitioning and Duplicate Keys Persistent Binary Search Trees and Tries in Swift MVVM in SwiftUI: Observable State, View Identity, and Async Work Decorator in Swift: Add Behavior While Preserving the Capability Contract Swift Interoperability with Objective-C, C, and C++ The SOLID Principles in Swift: Boundaries That Survive Change Reflection in Swift with Mirror Stable Merge Sort in Swift: Divide, Merge, and Account for Storage Key-Value Observing (KVO) in Swift Purely Functional Data Structures in Swift: Persistent Lists and Queues MVVM with Coordinators in Swift: Typed Outputs and Owned Navigation Flows Composite in Swift: Treat Leaves and Groups Through One Honest Contract Property Wrappers in Swift Protocol Inheritance in Swift: Refine Capabilities Without Sharing Storage Extensions in Swift Deep Copy vs. Shallow Copy in Swift Selection Sort in Swift: Minimum Selection and the Cost of Writes Access Control in Swift Test Doubles In Swift Property-Based Testing in Swift: Generators, Shrinking, and Reproducible Failures Data Binding in Swift: Closures, Combine, and Observation Have Different Contracts Deinitialization in Swift Primary Associated Types in Swift: Keep the Useful Type Information Bridge in Swift: Separate Two Independent Axes of Variation Enumerations in Swift Equality, Identity, and Hashable in Swift Insertion Sort in Swift: Sorted Prefixes and Nearly Sorted Input Control Flow in Swift: if, guard, switch, and Loops Value Types and Copy-on-Write in Swift: Independence Without Eager Copies MVVM in Swift: State Projection, User Intent, and Request Identity Associated Types in Swift: Preserve Relationships Between Capabilities Adapter in Swift: Translate Contracts Without Hiding Meaning Delegation in Swift: One Object Reporting to Another Bubble Sort in Swift: Inversions, Early Exit, and a Correctness Invariant The Value of Immutability in Swift: Stable Facts and Explicit Changes Choosing MVP in Swift: Presentation Rules, View Contracts, and Integration Cost Constrained Protocol Extensions in Swift: Make the Requirement Visible Monostate in Swift: Separate Instances with One Shared State Composition Over Inheritance in Swift iOS Accessibility Basics Comparing Sorting Algorithms in Swift: Stability, Memory, and Real Workloads Enumerations and Algebraic Data Types in Swift: Make Invalid States Harder to Build MVP in Swift: A Passive View and an Explicit Presentation Contract Default Implementations in Swift Protocol Extensions Lazy Initialization in Swift: Deferred Work, Failure, and Concurrency Parent and Child Classes in Swift: Inheritance vs. Ownership Queues in Swift: FIFO Without Repeated Array Shifts ModelAdapter-ViewBinder in Swift: Explicit Bindings and Disposable Lifetimes Optionals as a Functional Tool in Swift Object Pools in Swift: Bounded Resources, Leases, and Reliable Return Class-Only Protocols in Swift: AnyObject and Ownership Protocols Instead of Multiple Inheritance in Swift Stacks in Swift: LIFO State, Balanced Delimiters, and Undo SwiftUI View Values, Identity, and State: Avoiding Common Bugs compactMap and flatMap in Swift: Missing Values, Nested Values, and Lost Errors MVC with Coordinators in Swift: Navigation Policy and Screen Lifetime Adopting Swift Protocols in Structs, Enums, and Classes Prototype in Swift: Copying Values, Cloning Objects, and Preserving Identity Rules Protocols Instead of Abstract Classes in Swift Hash Tables in Swift: Collisions, Resizing, and Stable Key Contracts map, filter, and reduce in Swift: Choose the Operation That Matches the Result MVC with View State in Swift: Separate Document Facts from Interaction State Property and Method Requirements in Swift Protocols Builder in Swift: Assemble Configuration Without Publishing Invalid State Type Properties and Methods in Swift: static vs. class Analyzing Swift Algorithms: From a Slow Screen to a Defensible Cost Model Higher-Order Functions in Swift: Reusable Policies and Honest Effects Refactoring Massive View Controllers in Swift Around Real Responsibilities Abstract Factory in Swift: Construct Compatible Families of Capabilities OOP vs. POP in Swift: Two Ways to Share Behavior FIRST Principles for Reliable Swift Tests final in Swift: Closing Inheritance Deliberately Big O in Swift: Bounds, Growth Rates, and Amortized Work Wrapping Core Image Filters in Swift Functions MVC in Swift: Where Simplicity Helps and Coupling Starts to Hurt Factory Method in Swift: A Stable Workflow with a Construction Hook The Limits of Class Inheritance in Swift Method Overloading in Swift: Let the Call Site Explain the Choice This Is Why I Don't Prefer Git GUI Tools Time and Space Complexity in Swift: Count Work, Copies, and Live Storage Why I Prefer To Store My Files On A Digital Ocean Space & Not Google Drive Or Dropbox. From Imperative to Declarative Swift Without Losing the Algorithm MVC in Swift: Model Rules, View Rendering, and Controller Coordination Gentle Introduction To Unit Testing. An OOP Refresher Before Protocol-Oriented Swift Singleton in Swift: Shared Identity, Initialization, and Hidden Dependencies Overriding Methods and Properties in Swift Pure Functions and Side Effects in Swift: Build a Testable Core Designated and Convenience Initializers in Swift Thinking Functionally in Swift: Functions as Values Refresher: Solving Few Problems Initializers and Deinitializers: The Lifetime of a Swift Object RunLoop Explained for Swift Developers Opaque and Boxed Types in Swift: some vs. any Generics in Swift Polymorphism in Swift: One Interface, Different Behavior Protocols in Swift Capture Lists in Swift Closures Abstraction in Swift: Designing Interfaces Around Intent Encapsulation in Swift: Protecting Valid State Reading and Drawing UML Class Diagrams for Swift Value Types vs. Reference Types in Swift: Choosing Ownership Thinking in Objects: Modeling a Domain in Swift Static vs. Dynamic Dispatch in Swift Type Casting in Swift iOS/Android Developer Security Basics Understanding GPS Hardware Basics for Mobile Developers Swift Sets: Basics and Practical Examples Using unicode markers (LTR: 0x200E, RTL:200F) to align "hybrid RTL/LTR strings" correctly. Mastering Swift Bitwise Operators: Theory and Practical Examples Easily Tiling Images in Interface Builder Without Code Why my 0.3 MB image occupies around 10 MB on RAM? Why You Should Never Use Floating-Point or Double Data Types for Money Calculations! ABI Stability in Swift Finding Memory Bugs with Address Sanitizer Understanding Optionals in Swift: Handling Absence of Data Safely Swift: The Difference Between Void and () Swift: The Difference Between nil, Nil, NULL, NSNull Understanding Swift: Differences Between Any, AnyObject, and AnyHashable Swift Root/Base Class & NSObject: A Quick Look Swift's Basic Data Types & Type Inference Understanding Swift Variables and Constants: A Dive into Mutability Mastering Swift Style Guides: Elevate Your Code to the Next Level Swift Lexical Structure Swift Reserved Keywords, with brief explanations. Strings and Characters That Don’t Bite Operators You Actually Use Advantages of Swift Over Objective-C What is Swift Programming Language? stride in Swift Escaping and Non-Escaping Closures in Swift defer in Swift Method Swizzling in Swift Advanced and Custom Operators in Swift Optional Chaining in Swift Memory Safety in Swift: Exclusive Access Automatic Reference Counting (ARC) in Swift Initialization in Swift Inheritance in Swift Subscripts in Swift Methods and mutating in Swift Properties in Swift Structures and Classes in Swift: Value vs. Reference Types Closures in Swift Functions in Swift Pattern Matching in Swift Arrays and Dictionaries in Swift Portfolio Roadmaps

Swift 5.7

Primary Associated Types in Swift: Keep the Useful Type Information

Swift 6

Migrating to Swift 6 Data-Race Safety Typed Throws in Swift 6: Carry Error Types Through Protocols

Swift Evolution

Swift Evolution: How the Language Changes

Swift Testing

Testing Status Codes, Invalid Payloads, and Transport Errors Testing Concurrent Swift Code with Controlled Interleavings Testing Publishers Testing Unavailable Hardware and Denied Permissions Injecting Recorded Sensor Data for Deterministic Tests

SwiftPM

Swift Package Manager: A Practical Guide

SwiftUI

Combine vs. the Observation Framework in SwiftUI The Main Actor and UI-Facing State in Swift @Published Properties Build a Small Reading-List App with Protocol-Oriented Swift Property Wrappers in Swift

Syntax

Nested Types in Swift Extensions in Swift Control Flow in Swift: if, guard, switch, and Loops Type Casting in Swift Swift Lexical Structure defer in Swift Advanced and Custom Operators in Swift Optional Chaining in Swift Subscripts in Swift Pattern Matching in Swift

TLS

App Transport Security and TLS Trust

Task Groups

Task Groups in Swift: Fan-Out, Aggregation, and Early Exit

Tasks

Task Priority, Inheritance, and Priority Inversion in Swift Unstructured and Detached Tasks in Swift: When to Use Each Cooperative Cancellation and Cancellation Checks in Swift Creating Tasks and Choosing Their Lifetime Owner in Swift Structured Concurrency and Child-Task Lifetimes in Swift Threads, Dispatch Queues, and Swift Tasks: Three Layers of Concurrent Work

Testing

Verifying Contracts Against a Controlled Server Testing Status Codes, Invalid Payloads, and Transport Errors Isolating HTTP Fixtures with URLProtocol Testing Concurrent Swift Code with Controlled Interleavings Rejecting Stale Results After Request Replacement in Swift Continuation Ownership, Cancellation, and Double Resume in Swift Testing Publishers Timers Time: debounce, throttle, and delay Testing with RxTest and RxBlocking Testing Unavailable Hardware and Denied Permissions Injecting Recorded Sensor Data for Deterministic Tests Device Testing vs. Simulator Capabilities Refactoring a Swift Class Hierarchy into Protocols Swift Test Coverage, Test Plans, and CI Reliable UI Testing in Swift Integration Testing in Swift: Networking and Storage How to Avoid Flaky Tests in Swift Testing Asynchronous Swift Code Dependency Injection in Swift Without a Container Property-Based Testing in Swift: Generators, Shrinking, and Reproducible Failures FIRST Principles for Reliable Swift Tests Pure Functions and Side Effects in Swift: Build a Testable Core

Thread Sanitizer

Finding Data Races in Swift with Thread Sanitizer

Threads

Threads, Dispatch Queues, and Swift Tasks: Three Layers of Concurrent Work

Timeouts

Timeouts, Cancellation, and Request Lifetimes

Timers

Timers

Tooling

Swift Package Manager: A Practical Guide

Trees

Persistent Binary Search Trees and Tries in Swift

Tries

Persistent Binary Search Trees and Tries in Swift

Type Safety

Phantom Types in Swift Generics in Swift Type Casting in Swift

UIKit

The Main Actor and UI-Facing State in Swift RxCocoa: Binding Observables to UIKit

UML

Reading and Drawing UML Class Diagrams for Swift

URL

URLs, Query Parameters, and Percent Encoding in Swift

URLProtocol

Isolating HTTP Fixtures with URLProtocol

URLSession

Reading URLSessionTaskMetrics Background Transfers and App Relaunch Download Progress, Resuming, and Temporary Files Uploading Files and Multipart Form Data Separating Transport Errors from Application Failures Requests and Responses with async and await in URLSession Choosing a URLSession Configuration HTTP Methods, Status Codes, and Headers: What URLSession Puts on the Wire Networking with URLSession Publishers

Uploads

Uploading Files and Multipart Form Data

Validation

Validating Decoded Data Before It Reaches the UI Functors, Applicative Functors, and Monads in Practical Swift

Value Semantics

Value Types and Copy-on-Write in Swift: Independence Without Eager Copies

Value Types

Deep Copy vs. Shallow Copy in Swift Adopting Swift Protocols in Structs, Enums, and Classes Value Types vs. Reference Types in Swift: Choosing Ownership Methods and mutating in Swift Structures and Classes in Swift: Value vs. Reference Types

WebSockets

WebSockets: Connection State and Reconnection

XCTest

Testing Unavailable Hardware and Denied Permissions

Xcode

Device Testing vs. Simulator Capabilities Using unicode markers (LTR: 0x200E, RTL:200F) to align "hybrid RTL/LTR strings" correctly. Easily Tiling Images in Interface Builder Without Code

async/await

Bridging Callback APIs with Checked Continuations in Swift Running Independent Work with async let in Swift Suspending Functions with async and await in Swift Swift Concurrency: async/await, Tasks, and Actors

final

final in Swift: Closing Inheritance Deliberately

iOS

Profiling Sensor Work and Battery Usage Stopping Updates When a Feature Ends Testing Unavailable Hardware and Denied Permissions Injecting Recorded Sensor Data for Deterministic Tests Designing Features Around Uncertainty and Accuracy Distinguishing Missing Data from a Valid Zero Reading Combining Motion and Location Without Shared-State Races Timestamps, Stale Samples, and Out-of-Order Events Background Location and App Lifecycle Boundaries Geocoding, Reverse Geocoding, and Request Limits Visits and Significant Location Changes Region Monitoring and Geofencing Heading, Compass Calibration, and Magnetic Interference Distance Filters and Energy-Aware Tracking Location Updates and Accuracy Requirements Sampling Rates, Noise, Filtering, and Drift Altitude, Pressure, and Relative Measurements Pedometer Data and Activity Recognition Attitude, Reference Frames, and Coordinate Conversion Device Motion, Gravity, and User Acceleration Accelerometer and Gyroscope Measurements Device Testing vs. Simulator Capabilities Handling Permission Changes and Reduced Accuracy Requesting Motion and Location Permissions in Context Checking Sensor Availability Before Starting Work Setting Up a New macOS Device: My Essential Tweaks Zombies In Swift Network Issues in MacBooks with Silicon Chips and Proposed Solutions Test Doubles In Swift iOS Accessibility Basics SwiftUI View Values, Identity, and State: Avoiding Common Bugs This Is Why I Don't Prefer Git GUI Tools Why I Prefer To Store My Files On A Digital Ocean Space & Not Google Drive Or Dropbox. Gentle Introduction To Unit Testing. Refresher: Solving Few Problems iOS/Android Developer Security Basics Understanding GPS Hardware Basics for Mobile Developers Swift Sets: Basics and Practical Examples Using unicode markers (LTR: 0x200E, RTL:200F) to align "hybrid RTL/LTR strings" correctly. Mastering Swift Bitwise Operators: Theory and Practical Examples Easily Tiling Images in Interface Builder Without Code Why my 0.3 MB image occupies around 10 MB on RAM? Why You Should Never Use Floating-Point or Double Data Types for Money Calculations! Understanding Optionals in Swift: Handling Absence of Data Safely Swift: The Difference Between Void and () Swift: The Difference Between nil, Nil, NULL, NSNull Understanding Swift: Differences Between Any, AnyObject, and AnyHashable Swift Root/Base Class & NSObject: A Quick Look Swift's Basic Data Types & Type Inference Understanding Swift Variables and Constants: A Dive into Mutability Advantages of Swift Over Objective-C What is Swift Programming Language? Books Portfolio Roadmaps

macOS

LLDB Survival Guide: Theory, Tricks, and Python Hooks