Recent Articles
See all 48 articles »
GitHub Sponsors
I'm a software engineer with years of experience in the industry, creating articles and frameworks for the Apple developer community. To support my work, please sponsor me on GitHub.
Subscription
Subscribe to receive the latest updates from ⌘ kean (a blog about Swift, iOS, and other software engineering topics). You are going to receive updates about the recent articles and projects.
RSS
Subscribehttps://kean.blog/feed.xml
Open Source

A powerful image loading and caching system

See all 22 projects »
All Articles
-
AppKit is Done Feb 24, 2021
Learn how to build delightful macOS apps using only SwiftUI
-
RxUI Feb 16, 2021
Applying SwiftUI ideas to improve the developer experience of using RxSwift
-
Apple Documentation Feb 15, 2021
Everything that is wrong with Apple's documentation
-
Triple Trouble Feb 14, 2021
Implementing triple-column navigation in SwiftUI using NavigationView
-
XCFrameworks Feb 13, 2021
Caveats of using XCFrameworks with Swift Package Manager
-
Pulse: Network Inspector Jan 31, 2021
Building a multiplatform tool using SwiftUI
-
Formatted Strings Nov 29, 2020
Using XMLParser and NSAttributedString to add support for basic formatting in localizable strings
-
WWDC20 Summary Jul 13, 2020
An overview of the changes introduced on WWDC20 from the design and product perspective
-
Introducing Align 2 Jun 18, 2020
Layout anchors, reimagined
-
VPN, Part 2: Packet Tunnel Provider Jun 14, 2020
Using NEPacketTunnelProvider to implement a VPN client
-
VPN, Part 1: VPN Profiles May 24, 2020
Using Network Extension framework to create and manage VPN profiles
-
How Does VPN Work? May 19, 2020
A Russian nesting doll of network protocols
-
Let's Build a VPN Protocol May 18, 2020
How to implement a custom VPN client and server using Packet Tunner Provider
-
Nuke 9 May 17, 2020
Reflecting on the five years of the performance improvements
-
SwiftUI Experience Apr 3, 2020
Is SwiftUI delivering on its promises?
-
Introducing FetchImage Mar 18, 2020
FetchImage makes it easy to download images using Nuke and display them in SwiftUI apps
-
SwiftUI Data Flow Jan 16, 2020
Everything you need to know about data flow in SwiftUI
-
Effective Unit Testing Dec 4, 2019
Why most unit testing is a waste in Swift and how to extract the most value from tests
-
CI for Swift Frameworks Nov 13, 2019
How I went from manually testing my frameworks to having hundreds of unit tests and multiple automatic checks running on every change
-
SwiftUI Layout System Oct 22, 2019
Taking a deep dive into SwiftUI layout system
-
Regex, Part 3: Matcher Sep 25, 2019
Explore two different regex matching algorithms
-
Regex, Part 2: Compiler Sep 22, 2019
What are Type-2 (or regular) languages? How can Finite State Automation be used to recognize them? Where do regex fit into all this?
-
Regex, Part 1: Parser Sep 15, 2019
Exploring Parser Combinators (or monadic parsers) which are a great example of functional programming used to bring practical benefits
-
Regex, Prologue: Grammar Sep 9, 2019
Using a formal grammar to describe a regular expression language
-
Let's Build a Regex Engine Aug 20, 2019
How to understand the language of
<\/?[\w\s]*>|<.+[\W]>
-
Navigation Problem Mar 24, 2019
How to solve it without Coordinators and why Coordinators might be not an optimal solution for you
-
Future<Value, Error> Nov 12, 2018
Future – a streamlined Future<Value, Error> implementation with functional interface
-
Let's Talk Architecture Aug 11, 2018
MVC – The Past. MVVM with RxSwift or ReactiveCocoa, MVP – The Present. Functional Architectures – The Future.
-
Are Optionals Any Good? Jun 14, 2018
Taking a step back to see what is good and bad about Optional type in Swift
-
Resumable Downloads Jun 6, 2018
Exploring how resumable downloads - one of my favorite new features in Nuke 7 - are implemented using HTTP range requests
-
Network Extension, Part 1 - Introduction May 22, 2018
Introduction to a series of posts about the Network Extension framework
-
Trunk-Based Development Mar 23, 2018
Why feature branches might prevent continuous integration and discourage refactoring and what other branching strategies are worth considering.
-
Creating Views in Code Jan 12, 2018
Tips and tricks to keep code in your views nice and readable
-
Cancellation Token Dec 15, 2017
A unified model for cooperative cancellation of asynchronous operations
-
Naive Date and Time Dec 1, 2017
Foundation offers great APIs for manipulating dates with time zones, however, it might be missing a few things
-
Three Use Cases of Phantom Types Nov 24, 2017
Adding additional type safety using phantom types on the examples
-
Align: Intuitive Auto Layout Nov 17, 2017
I'm thrilled to introduce a new intuitive and powerful Auto Layout library - Align
-
Codable: Tips and Tricks Nov 10, 2017
Introduced in Swift 4 to replace NSCoding APIs, Codable also features first-class JSON support
-
Smart Retry Sep 3, 2017
Combining retryWhen operator with Reachability and delay options inspired by RxSwiftExt to implement auto-retries
-
API Client in Swift Jul 10, 2017
How to implement a declarative and powerful API client using Alamofire, RxSwift, and Codable
-
Introducing RxNuke Jun 11, 2017
I'm excited to introduce a new addition to Nuke - RxNuke which brings the power of RxSwift to your image loading pipelines
-
RxSwift Testing Jun 6, 2017
Unit testing paging in a scroll view using RxSwift testing infrastructure - RxTest
-
Interface Builder: Previews May 1, 2017
Using Interface Builder to quickly preview features on different screen sizes and in different orientations
-
Let's Build UIStackView Jan 16, 2017
Explores how UIStackView works under the hood to build its open source replacement - Arranged
-
Core Data Progressive Migrations Jun 18, 2016
Using NSPersistentStoreCoordinato and NSMigrationManager for progressive schema migrations in Core Data
-
Image Caching Jan 26, 2016
In-depth look at HTTP cache and Foundation's URL Loading System to cache images on disk
-
Preheating Images Jan 12, 2016
Preheating is an effective way to improve user experience by downloading data ahead of time in anticipation of its use
-
Immutability and Builder Pattern Jan 10, 2016
Modelling large immutable objects in Objective-C without creating telescoping initializers