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.
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.
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.
Building my own static site generator, part 2: API design
Part 2, where I'm looking back at the current API of Saga.
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.
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...
Looking at the static site generator Publish
I'm taking a look at the static site generator Publish, written in Swift.
Mentee Question 2: How to get started
Resources for learning Swift and UIKit, what to build first, opinions on Unit Testing, and more.
Mentee Question 1: UIKit or SwiftUI
My take on the very common question "What should I learn or focus on? UIKit or SwiftUI?"
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!
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.
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.
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...
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.
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.
User subscriptions on the web
As I am reaching feature-completeness of my side project Critical Notes, I need to add paid subscriptions to it. Users can already subscribe in the iOS app, but of course not everyone uses iOS, so I need to build something for the web client too.
WWDC20 wishlist
WWDC is just around the corner, and we're all waiting like little kids at Christmas to see what Apple is going to announce. Most of us also are hoping for specific changes, here are my top wishes.
Connecting Storekit to Firestore via Cloud Functions and webhooks
I've recently added subscriptions to my Critical Notes iOS app, using Apple's StoreKit. Here is how I hooked it all up to Firestore including server-side receipt validation.
Clean up Firestore and Storage when deleting a document
When you delete a document in Firestore, its subcollections and their documents are not automatically recursively deleted. Here is a simple Cloud Function that takes care of it.
After Vapor and Django comes.. Firestore
Over a year ago I wrote that I started working on a brand new side project, and that I was building the backend for that project. I started with Vapor 3, then made the same backend in Django REST Framework, and couldn't really choose between the two...