⌘ kean.blog

GitHub Sponsors

There are no ads on kean.blog. If you found it entertaining or helpful, please support the author directly using GitHub.

♡ Sponsor

All Articles


  • Client-Side Search

    Apr 9, 2021

    How to build client-side search with lunr.js

  • Nuke Docs

    Apr 8, 2021

    How to build great documentation for a framework

  • The SwiftUI Experiment

    Mar 30, 2021

    Wrapping up the series on Pulse development

  • Time to Log

    Mar 29, 2021

    Designing and implementing Pulse for watchOS

  • Concurrency Done Right

    Mar 24, 2021

    The actor model and other concurrency patterns used in Nuke

  • What's a Document

    Mar 15, 2021

    A quick write-up on selecting a document format for Pulse

  • ...But Not NSTableView

    Mar 1, 2021

    Integrating NSTableView with SwiftUI

  • 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

  • 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

  • Image Prefetching

    Jan 12, 2016

    An effective way to improve user experience by loading 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