Work
Here’s an overview of my work and areas of expertise, spanning my Mac app Diagrams, freelance client projects, and open-source libraries.
Skills
- AppKit: My entry point into Apple development and still my go-to framework for building Mac apps.
- SwiftUI: Adopted from the start, comfortable with the declarative model, advanced concepts, and bridging to older frameworks.
- UIKit: A mature framework I reach for when building polished iOS apps, especially where SwiftUI falls short.
- Combine: A long-time FRP proponent, previously using ReactiveSwift and now fluent in Apple’s first-party framework.
- Swift Concurrency: Solid understanding of Swift’s modern concurrency model and its tools. This ain’t easy, so definitely still learning.
- TCA: Drawn to its Redux-inspired approach to app architecture, a natural fit for how I like to structure code.
- SQLiteData: Another of Point-Free’s libraries, becoming my go-to persistence solution.
- CloudKit & Sync: Comfortable with Apple’s native sync service and strategies for implementing sync correctly, including offline support, conflict resolution, and sharing.
- Reverse Engineering: Passionate about diving into Apple’s frameworks to understand, extend, or work around their behavior.
- Agentic Coding: Working with Claude Code in my daily workflow to boost my productivity, relying on years of hands-on experience to keep its output in check.
- UX Design: Not a designer, but something I care deeply about and have a strong eye for making it feel right.
Projects
- A native, document-based diagram editor for Mac I created, owning product vision, architecture, and development.
- Swift / AppKit / SwiftUI / ReactiveSwift / MVVM / Redux
- Architected around a custom Redux-based layer for managing document state with advanced undo support, paired with MVVM in the UI layer.
- Built a custom canvas rendering stack driven by a declarative DSL for describing canvas content, conceptually similar to SwiftUI but predating it.
- Developed an interaction engine on top, handling mouse/keyboard events and supporting an infinite canvas, smart grid layout, and advanced relationship routing.
- Designed a palette system for defining reusable element and relationship types, with built-in presets for common domains.
- Implemented a custom document format with an intermediate serialization layer and versioned migrations.
- Built a StoreKit-based activation flow with a custom free trial, in-app purchase handling, and receipt validation.
- Implemented system integrations including Quick Look previews and thumbnails, Shortcut automation, and PDF/image export.
- Localized into three languages (English, German, Chinese).
- Distributed on the Mac App Store and Setapp.
- Collaborated with business mentor Ronald Scholz and designer Alex Käßner, who created the app’s visual identity and designed the UI.
- Contributed to select subcomponents of a well-established Git client for Mac.
- Swift / SwiftUI / AppKit / Combine
- Modernized two features originally built in AppKit / Objective-C / XIB by rebuilding them in SwiftUI. For each, first built a standalone prototype to validate the approach, then integrated it into the main codebase.
- Rebuilt the merge wizard for resolving various kinds of Git file conflicts, revamping the UI for modern macOS design language.
- Rebuilt the onboarding flow, a complex multi-screen experience handling trial registration, license activation, and initial app setup.
- Worked largely independently, aligning with the team on requirements and integration points.
- A newly developed iPad app for property surveying at a UK-based retrofitting company, designed for an offline-first workflow to ensure reliable use without connectivity on-site.
- Responsible for gathering requirements, designing UI/UX concepts, and handling the full development.
- Swift / SwiftUI / TCA
- Developed a generic survey template system, enabling various survey kinds to be authored outside the app using a hierarchical structure (pages, sections, subsections, fields), with additional domain-specific grouping into stories and rooms. Introduced entities to represent multiple instances of items (e.g. walls, windows).
- Implemented conditional logic, evaluating template-defined rules against in-progress survey data.
- Started with a Swift-based DSL, then laid the groundwork for JSON-based templates with a custom schema and versioning strategy to support evolution.
- Built custom SwiftUI field controls optimized for on-site input, supporting numeric, text, date, single/multiple select, image and entity collection fields—with clear indication of missing values and values pending confirmation.
- Worked independently for most of the project and was joined by Christian Tietze in the final phase.
- The screenshots above show a demo survey designed to showcase all features of the system, rather than a specific survey kind used by the client.
- A Mac app for clearing duplicate tracks in Serato DJ libraries.
- Built the app from scratch, owning the architecture and full implementation.
- Swift / AppKit / SwiftUI / Combine / Swift Concurrency / MVVM
- Implemented UI based on the design spec, including interactive matching strategy selection and results presentation in a highly customized
NSTableView. - Implemented duplicate detection logic for identifying and grouping tracks based on configurable matching strategies.
- Reverse-engineered Serato DJ library formats and built a framework providing read/write access to track, crate, and preference data.
- Built a reusable foundation for the client’s app suite, bundling libraries for licensing, permissions, shared UI, and Apple framework extensions.
- Designed the licensing stack (server-validated activation, device linking, offline grace period, reactivation), with a companion UI package covering welcome and license-management flows.
- Implemented a Sparkle-based multi-channel release pipeline supporting dynamic feed selection.
- Worked closely with Kyle Halevi, the designer behind the app’s UI.
Open Source
I occasionally publish open-source libraries on GitHub. Here are some current highlights:
- InterposeKit: A revamp of Peter Steinberger’s method swizzling library with nice Swift API.
- swift-mrdt: Three-way merging of concurrent changes to collection data types.
- CombineExtensions: A
CurrentValuePublishertype and additional operators for Combine. - SettingsRepository: A lightweight, type-safe, and extensible settings system for Swift apps.
Let’s Talk
I’m always open to new freelance engagements on iOS and macOS projects, whether that means owning an app end-to-end, contributing to a specific subcomponent, or jumping in for focused consulting. If that sounds like a fit, drop me a line.











