Mentee Question 3: How to know when multiple publishers completed?

In JavaScript-world, it's really easy to know when multiple promises completed: just use Promise.all. How do you do the same thing in Combine?

read more

Automating your changelog and GitHub releases

In a short time I’ve created 25 releases for my static site generator Saga. For each release I’ve manually updated the CHANGELOG.md file, which is a bit tedious and easy to forget. I really wanted to automate this using GitHub Actions, which I was...

read more

A review of Markdown parsers for Swift

A hugely important part of any static site generator is of course the parsing of Markdown content. The default parser for Saga is Parsley, a custom wrapper around a cmark fork. While I am generally quite happy with it, there are some problems.

read more

Building my own static site generator, part 7: updates & the road to 1.0.0

In the past few days I’ve made some pretty substantial improvements to Saga, to make it work for me and my website, which is now built using Saga.

read more

Building my own static site generator, part 6: replacing SwiftMarkdown

I've already replaced my own SwiftMarkdown package...

read more

Building my own static site generator, part 5: replacing Ink and Splash

I've replaced the Ink and Splash dependencies with my own SwiftMarkdown package.

read more

Building my own static site generator, part 4: a complete redesign

An unexpectedly quick fourth article about Saga, after a complete redesign of the API.

read more

Building my own static site generator, part 3: thoughts so far

In the third and final part of this series about Saga I'm looking at the pros and cons of the current system and what I might want to change.

read more

Building my own static site generator, part 2: API design

Part 2, where I'm looking back at the current API of Saga.

read more

Building my own static site generator, part 1: inspiration & goals

In part 1 of a series of articles I'm looking at the inspiration behind my static site generator Saga, now available on Github.

read more

Swift generics and arrays

I’m in the very early stages of building my own static site generator in Swift. I want the library to provide a basic Page type, that the user can then extend with custom metadata, and I need to be able to put Pages with different kinds of metadata...

read more

Looking at the static site generator Publish

I'm taking a look at the static site generator Publish, written in Swift.

read more

Mentee Question 2: How to get started

Resources for learning Swift and UIKit, what to build first, opinions on Unit Testing, and more.

read more

Mentee Question 1: UIKit or SwiftUI

My take on the very common question "What should I learn or focus on? UIKit or SwiftUI?"

read more

Book review: Thinking in SwiftUI

A while ago I asked on Twitter which Swift-related book I should review next, and overwhelmingly Thinking in SwiftUI by the objc.io guys was chosen. An excellent choice!

read more

Exploring two-way databinding solutions in UIKit

With SwiftUI we have the @Binding property wrapper that makes it really easy to create a two-way databinding between a form field and a model, but in the UIKit world it's slightly less easy. Let's explore some solutions.

read more

Book review: Practical Combine

It's almost exactly 10 years since I wrote my last book review. Time flies! Also, it makes me realize that the way I've been learning has changed dramatically. I am much more guided by autocomplete and documentation within Xcode, and in-depth articles and videos about one particular topic, instead of reading books.

read more

Connecting Stripe to Firestore via Cloud Functions and webhooks

After adding subscriptions in iOS via Apple’s Storekit, I have now also added subscriptions to the web client of Critical Notes, using Stripe (even though they have some serious drawbacks at the moment). Since it was a bit of a puzzle to get it...

read more

WWDC20 review

A quick review of the keynote and State of the Union talks. Let's see which of my wishes have been fulfilled, and which SwiftUI problems have been solved.

read more

A review of SwiftUI problems

I've been working with SwiftUI for almost half a year now, and in that time I've learned a lot. I love a lot about it, but there are also so many bugs and issues that need workarounds that it's kind of maddening.

read more