Going open-source
Sep 23, 2021, 2:00 AM
In this post, I’ll discuss how I try to continously extract functionality from my various app projects into public, open-source libraries. I’ll reason around why I think this is good (and fun), the steps involved, some perhaps unexpected...
Building the KeyboardKit app
Sep 22, 2021, 2:00 AM
In this post, I’ll discuss the development of my new KeyboardKit app for iOS and iPadOS. I’ll go through my original vision, the actual outcome as well as a bunch of findings, problems etc.
Git tags cheat sheet
Aug 26, 2021, 2:00 AM
In this post, I’ll list a couple of git commands that I found useful when cleaning up a very unstructured git tag history. This post is primarily meant to be a brain dump for my own use, but if you find the information useful, that’s great.
Distributing closed-source frameworks with SPM
Feb 15, 2021, 1:00 AM
In this post, we’ll look at how to distribute closed-source XCFrameworks-based products with the Swift Package Manager (SPM). The information is based on a real product that I just launched and goes through project setup, package...
Removing UIKit support in KeyboardKit
Jan 15, 2021, 1:00 AM
In this post, I’ll discuss why I have decided to stop supporting UIKit-based keyboards in KeyboardKit 4.0.
Mocking with MockingKit
Jan 2, 2021, 1:00 AM
In this post, I’ll demonstrate how to use MockingKit to mock protocols and classes. We can then use this technique in unit tests and to fake not yet implemented logic.
Making Xcode and SPM trust a private SSH server
Jan 2, 2021, 1:00 AM
In this post, I’ll provide a solution to the dreaded the server ssh fingerprint failed to verify error that may bite you when you add an SPM dependency to an app from a private server over SSH, using an IP address and port.
Building a video streaming app for iOS in SwiftUI
Dec 25, 2020, 1:00 AM
In this post, I’ll discuss how I built a movie-streaming app for iOS and iPadOS in SwiftUI, for the Swedish video streaming service Cineasterna.
Building a video streaming app for tvOS in SwiftUI
Dec 9, 2020, 1:00 AM
In this post, I’ll discuss how I built a movie-streaming app for tvOS in SwiftUI, for the Swedish public library video streaming service Cineasterna.
An easier way to manage full screen covers in SwiftUI
Oct 28, 2020, 3:00 PM
In this post, we’ll look at an easier way to manage full screen covers in SwiftUI, that lets us reuse functionality, reduce state management and present many covers in the same way.
Validate Localized Resources
Oct 20, 2020, 9:00 AM
In this post, we’ll look at a way to validate app localizations and integrate it into Fastlane and any CI processes you may have.
Swift Semantics
Oct 16, 2020, 7:00 AM
In this post, we’ll look at various ways to improve readability and writeability of Swift code by introducing extensions to Swift’s native types.
An easy way to manage toasts in SwiftUI
Oct 13, 2020, 3:00 AM
In this post, we’ll look at how to easily manage and present toasts in SwiftUI, in a way that borrows heavily from the sheet and alert approaches discussed in earlier posts.
Avoiding the keyboard in SwiftUI
Jun 8, 2020, 6:00 PM
UPDATE! This is now a built-in feature in SwiftUI, so I have removed it from SwiftUIKit and will not maintain it anymore. This post is only kept for reference.
An easier way to manage alerts in SwiftUI
Jun 7, 2020, 5:00 AM
In this post, we’ll look at an easier way to manage alerts in SwiftUI, that lets us reuse functionality, reduce state management and present many different alerts in the same way.
An easier way to manage sheets in SwiftUI
Jun 6, 2020, 3:00 PM
In this post, we’ll look at an easier way to manage sheets in SwiftUI, that lets us reuse functionality, reduce state management and present many different sheets in the same way.
Uniquely identify the current device
Jun 6, 2020, 5:00 AM
In this post, we’ll look at how to uniquely identify the current device. We’ll look at different way of persisting the unique identifier to make it available even if the app is uninstalled.
Using the iOS keychain to persist data
Jun 5, 2020, 5:00 AM
In this post, we’ll look at how to read from and write to the keychain on iOS devices. We’ll look at a great library for this and how we can make it more abstract.
Url encode strings
Jun 4, 2020, 3:00 PM
In this post, we’ll discuss how to url encode strings. We’ll then create an extension that let’s us do this easier and with less code.
Case-sensitive String replace operations
Jun 4, 2020, 11:00 AM
In this post, we’ll discuss how to replace all occurences of a string within another string. We’ll then create an extension that allows for easier case-sensitive replacements.
Case-sensitive String contains checks
Jun 4, 2020, 7:00 AM
In this post, we’ll discuss how to check if a String contain another String. We’ll then create an extension that allows for easier case-insensitive checks.
Base64 encode and decode strings
Jun 4, 2020, 3:00 AM
In this post, we’ll discuss how to Base64 encode and decode strings in Swift. We’ll then create extensions that make this a lot easier and more readable.
Numeric string representations
Jun 3, 2020, 11:00 AM
In this post, we’ll create string representations of numeric types in Swift and extend these types with convenience functionality to make them easier to use.