Reach out anytime!

More About Me

Photo of Christian


Latest Blog Posts

Sep 21 2023

Sparkle v2.5 Adds Relevant Version Highlighting to Release Notes

With Sparkle v2.5, you can ship release notes for multiple versions, and then use CSS to hide outdated information from the user.

Sep 18 2023

Portable Painter Micro Palette

As a birthday gift, I got the Portable Painter Micro watercolor palette with some new colors. Here’s my first sketch with it.

Sep 13 2023

UserDefaults.register(defaults:) Is a Bit Like Nil-Coalescing

Mental model: registering fallback values for UserDefaults is like Optional coalescing in Swift.

Sep 11 2023

Year 36, a 🎂 Retrospective

Some bullet points (and stats) about my previous year in life.

Sep 9 2023

Kill Unsaved Emacs Buffers UX: Replacing Yes/No/Save with Meaningful Options

Since Emacs 29, I'm being asked if I want to save or discard an unsent mail in a very confusing way. I found a fix.

Sep 7 2023

The Missing Array.appending(contentsOf:)

There is no immutable append variant to concatenate two Arrays, or Strings, or other collections in the Swift standard library. Here is one.

Aug 15 2023

Making Your App Extensible with JavaScriptCore: Annotated Presentation with Full Transcript

Last year's presentation slides with the full talk transcript for my JavaScriptCore plugin approach.

More blog posts in the archive