Twitter: @drewmccormack

Image by https://pixnio.com/author/milim84

WWDC is just around the corner, and that means it is time to get in your predictions. For a few years now, there has been discussion of a Swift native data modeling framework, which will do for data what SwiftUI is doing for the user interface. This might be the year. The timing feels right, with SwiftUI reaching a usable level. SwiftData may finally make its appearance. But what will SwiftData look like?

Before I answer that, I should state first that I have no inside information at all. I don’t know if SwiftData even exists. But I…


Steve’s anniversary was a few days ago. I always pause, at least for a moment, to remember how great those times were after his return to Apple in 1996. A rollercoaster that convinced me to leave my secure job in the scientific community, and risk everything on something new they were calling “apps”.

Unlike other developers of my era, I never had an exchange with Steve Jobs, and I regret that I now will never get the opportunity. But I do have a “Steve Jobs story”, which I have never shared. I actually don’t know whether it was a hoax…


For a while now, the other half of the Agenda team, Alex, has been pushing me to write a follow up to my post on our sales model, which we jokingly refer to as “cash cow”. I wrote the original post back when Agenda was just a baby note-taking app, with an experimental sales model that was largely untested. It seemed sound in theory — we had plenty of reason to think it would work — but it was early days, and we couldn’t provide definitive evidence.

Last week, an episode of John Gruber’s The Talk Show encouraged me to…


You’ve been hearing about it for months now. Developers — and governments — are fed up with Apple’s App Store sales model. It started with Hey, and now bigger players like Epic and Facebook are joining in like hyenas sensing a wounded beast. It feels like we have passed a tipping point, and you will be hard pressed to find anyone outside Apple who still thinks the 30% tax is the right approach in 2020.

I see plenty of disgruntled tweets pass by, but most conclude with something like “I don’t know what Apple should do, but it can’t stay…


At WWDC19, Apple entered into another chapter in their struggles with getting Core Data to sync reliably. Is it a case of “third times a charm”, or more like “fool me twice”?

Full disclosure: I am the developer of Ensembles, a Core Data sync framework that works with many different services, including CloudKit, Dropbox, WebDAV, and even peer-to-peer. So I am certainly not unbiased when it comes to discussing sync frameworks. But it may come as a surprise to hear that I am rooting for Apple to get this right.

Ensembles has been a great success, in that (a) It works!, and (b) I managed to sell some licenses. An indie developer selling licenses for a source code framework is as rare as hen’s teeth, so the 6 years I have been…


If you have heard of me at all, chances are that it is through my work on the app Agenda. But I have worked on many projects through the years, and one of the more successful is Ensembles, a framework for syncing Core Data stores via iCloud and other services.

When I first developed Ensembles, I took a deep dive into decentralized data synchronization. The plan with Ensembles was to support different cloud storage services, and pure peer-to-peer sync. With no central “truth” or programmable server, this moves the equation firmly in the direction of decentralized algorithms.

After Ensembles was…


TLDR; Sync is dead. Long live sync.

I am hopeless when it comes to keeping up with the latest tech news these days. This morning I was going back through my feeds from the past week, and came across a story that you undoubtedly already read about days ago: Realm has been acquired by MongoDB.

Today I posted my belated take in a Tweet-rade, and got plenty of interesting reactions. The general consensus was that Realm lost out to Firebase in the end. Probably true — it’s difficult to go up against the Google behemoth.

My personal take is that…


TL;DR When you pass data between threads, whether you are using value types or not, you can very easily run into undefined behavior with unexpected results.

When we first heard about Swift structs, and Apple was busy convincing us to adopt value types wherever possible, one of the main selling points was thread safety. When you work with a value type, it is like your own personal copy of the value, and you don’t have to worry that some other part of the code will mutate it. We have all heard this argument many times, and I personally never really questioned the wisdom.

After an extensive discussion on Twitter, my understanding has changed. Although it is no doubt unlikely that you will be bitten by threading…


There has been a lot of criticism over the years of Apple’s stance on free trials in the App Store. This has come to a head in the last few months, with a “Developers Union” formed with the initial objective of putting free trials on Apple’s agenda, and an extensive post by Daniel Jalkut about how recent changes to In-App Purchase (IAP) guidelines do not constitute real free trials.

I don’t want to get into a point-by-point debate on the topic; instead, I want to do something that I haven’t seen anyone do: try to understand why Apple don’t want…


Update: There is a follow up post about this sales model, told from the perspective of 3 years on the market.

TLDR; The note taking app Agenda is launching with a new sales model for Mac apps.

On January 22nd, I am launching a new app for macOS: Agenda. When I say ‘I’, I really mean ‘We’, because Agenda was developed with Alexander Griekspoor and Marcello Luppi. …

Drew McCormack

Master of none. @drewmccormack

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store