Fixing Bluetooth stuttering in macOS

After doing a clean install of macOS Catalina on my MacBook Pro, I noticed that, while listening to music via a pair of Bluetooth headphones, either the mouse pointer on my screen would start lagging or the audio would start stuttering every couple of minutes, and it had been driving…

Building for newer versions of iOS from an older version of Xcode

You might have encountered this problem; a project you're working hasn't yet been updated for the most recently released version of Xcode, but your device is already running a recent version of iOS, which of course is not supported. In my particular case, the project had a bug that only…

Resuming AVPlayer after being interrupted

As part of a pet-project, I've been building a media player which internally uses AVPlayer. One of my goals is to build a component that could potentially easily be re-used while it handles most of the groundwork around AVPlayer, such as (but not limited to) retrieving metadata, progress info, and…

Better JSON parsing in Swift

Some time after this post was published, I learned that support for immutable structs was actually added to ObjectMapper in the form of ImmutableMappable, which does exactly what you'd expect! Apple also released Swift 4, which includes Codable, which is used now by Swish instead of Argo. Every since Swift…

Quick tip: Deleting merged branches

If you are working with feature branches, a common approach is to delete the feature branch after it has been merged back to your main development branch. This helps to keep your project tidy and organized. Here are two short bash snippets to delete merged branches. Deleting local branches that…

Replacing Core Data with Realm

The side project mentioned in the previous post requires some data to be persistent. While I had looked at Realm in the past, eventually I drifted back to Core Data. This was mostly due to NSFetchedResultsController and the fact that it enables animating changes to your table- and collectionviews. At…