Curriculum Vitae
Some facts, first:
- Date of Birth: Sep. 11th, 1987 (37 years of age)
- Location: Bielefeld, Germany
Projects
I write regularly about clean coding practices here, and about knowledge management over at the Zettelkasten Blog.
App and Book Releases
This is a chronologic list of my own publications and initial app releases and major versions. I still work on the apps and ship updates. A freelance work timeline is at the bottom of the page.
-
2019: Make Money Outside the Mac App Store (2nd Edition), a rewrite and large update of the instruction manual for selling and distributing macOS apps
-
2018: The Archive v1, macOS note-taking & knowledge management app.
v1.0 released in 2018, v1.9 in 2025, I’ve developed this blazing fast note-taking app for macOS with a JavaScript plug-in system as a solo developer. Most complex project I’ve ever tackled, with many user interactions and automated tasks like file cloud sync.
Tech Stack: Swift / MVVM / Layered architecture with functional core / RxSwift functional reactive bindings / unidirectional flow with ReSwift / TDD / full stack web development / MultiMarkdown C parsing engine
-
2017: TableFlip, macOS table editor with Markdown, CSV, and LaTeX compatibility.
Tech Stack: Swift / Objective-C / MVVM / Layered architecture with functional core / unidirectional flow of state with ReSwift / TDD / full stack web dev
-
2016: Make Money Outside the Mac App Store (1st Edition), an instruction manual for selling and distributing macOS apps.
-
2015: Creating Multi-Process Mac Applications, e-book.
-
2014: Exploring Mac App Development Strategies, e-book.
-
2014: Word Counter, measures your output as a writer on macOS.
Tech Stack: Objective-C / VIPER and MVVM / Layered architecture / TDD – Ported partly to Swift, but still mixed code base.
-
2014: Tapping Test, iOS app for ME-Improved.
Tech Stack: Objective-C / Core Data / MVC / Layered architecture
-
2012: Calendar Paste, iOS app, and my first ever App Store release.
Tech Stack: Objective-C / Core Data / MVC / Layered architecture
Talks and Workshops
-
2023-09: Whole-day Legacy Code Retreat-style workshop at Macoun 2023. Focus on making confusing code with weird logic intelligible and testable.
-
2022-11: “Making Your App Extensible with JavaScriptCore”: a CocoaHeads talk about safe JavaScriptCore plugin systems.
-
2019-10: Whole-day code reatreat-style workshop split into “TDD 1: DRY & Clean” and “TDD 2: Test-driven” at Macoun 2019.
-
2018-10: “Code-Generierung mit Sourcery am Beispiel ObjectBox” (German), a talk about Swift code generation with Sourcery, and how my then employer ObjectBox used this for the Objective-C/Swift library integration.
-
2017-10: “RxReSwift - Betriebsunfälle & Lehrgeld” (German), a talk about using RxSwift and ReSwift in my apps.
-
2017-02: FastSpring Webinar “Beyond the Mac App Store: A Practical Guide to Go From Code to Cash” (Watch a recording), a 45-minutes-webinar where I showed the underpinnings of publishing macOS apps on your own, and we discussed how all this works with FastSpring.
-
2016-10: “Pflegeleichte Software” (German), a talk about maintainable software and seemingly forgotten architecture patterns.
Code is not something you only write once. You have to be able to maintain software. Without the right mental models, however, trends like MVVM and VIPER won’t help. We get ideas for the structure of an app from software architectures and use ReSwift to model the flow of information.
Original German Abstract
Code ist nichts, was man nur einmal schreibt. Software muss man pflegen können. Ohne passende mentale Modelle helfen Trends wie MVVM und VIPER aber nicht. Aus Softwarearchitekturen holen wir uns Ideen zur Struktur einer App und nutzen ReSwift zum Modellieren des Informationsflusses.
Open Source
The list of individual repositories would be too long, so I’m referring GitHub organizations/teams and accounts instead:
- My personal GitHub account shows contributions, but most of my projects are organized in teams:
- GitHub team for book manuscripts and samples
- GitHub team for personal projects and private project collaborations. The latter you can’t see, though :)
- GitHub team for Zettelkasten & The Archive-related things like themes, plug-ins, and the website.
Libraries
To bootstrap a macOS app:
- WhatsNewKit: Tell users about new features in your app.
- AppGuideOverlay: Interactive tutorial to highlight parts of the UI.
- BetaExpiration: Adding visual indication about how long a beta build will continue to work. Like TestFlight, but baked into the app.
- CrashReporter: PHP server script to receive, and AppKit library to send app crash reports.
- ErrorHandling: Offering users a way to report unexpected app pathways.
- TrialLicensing: Add a time-based trial and license code-based gating of features to your app.
- Settings for macOS (co-maintainer)
User Interface Components:
- FatSidebar: Large sidebar for huge icons with drag-and-drop reordering and expand-on-hover.
- LoopingAnimation
- Omnibar and Reactive Extensions: Search/filter among a list of results, forwarding list navigation shortcuts.
- TextKitAutoCompletion: Type-to-filter auto-completion add-on to native macOS text views.
- Typewriter Modes: Keep a comfortable part of the text view in focus so that users don’t have to write at the bottom end of the screen.
- WebcamSnap: Take pictures with a camera from a Mac app.
Background services and architecture:
- DeclarativeTextKit: Express complex manipulations to
NSTextView
and in-memory text buffers with a declarative DSL. - ReSwift, a Redux-inspired unidirectional data flow library. My favorite open source project of the past years because of the people and its impact. (Co-maintainer)
- RxFileMonitor: Reactive extensions to an
FSEvent
file system monitor. - SearchExpressionParser: Boolean
AND
andOR
andNOT
, and parenthesized sub-expressions for search-based interfaces, for example the Omnibar UI component. - SwiftXattrs: Access extended file attributes (xattrs).
- SwiftCSV: CSV/TSV parser for Swift (package maintainer and group admin).
Apps and Games
- TermQuickRPG: Terminal adventure game rendering in ncurses, written in Ruby.
- NowNowNow: a cross-platform
/now
-page reader using SwiftUI / The Composable Architecture (TCA). - InfiniteCanvas: drawing app concept.
- Cacti VS Llamas: a turn-based game concept.
Jobs, Freelance Gigs, and Project Timeline
Also, check out what I’m doing now.
-
🌟 Since 2013: Self-employed indie app developer and freelancer. In short, I’m creating macOS and iOS apps that help people get stuff done in a delightful way, I write books, and give talks and workshops.
-
Small projects in 2025:
-
fixkey.ai, macOS LLM-driven writing assistant. Helped with the audio transcription and responsing to hardware changes.
Tech Stack: Swift / SwiftUI / Core Audio
-
-
Mar 2025–Jul 2025: Ambue Ltd, iPad app for property retrofitting risk assessment.
Tech Stack: Swift / SwiftUI / Composable Architecture / Swift Concurrency (Swift 6 Mode) / PhotoKit.
I joined my friend Lukáš Kubánek on the project to create an iPad client app for Ambue’s risk assessment for retrofitting properties in the UK. Lukáš did excellent work designing the UI and UX of filling out these long survey forms, and I continued with specific form designs and introducing photographic evidence of defects.
At Ambue, I was responsible for preparing client–server communication, and this grew into designing the server endpoints for sync/upload. Rather by accident, I also found myself helping this non-software-engineering company turn their vision into a product strategy with achievable milestones.
-
May
Tech Stack: Swift / SwiftUI / MVVM / Reactive Programming (Combine) / Swift Concurrency / pjsip
I was hired for a macOS app client rewrite in SwiftUI for Starface’s softphone client.
Using SwiftUI for a large and complex code-base with all these moving parts taugt me a lot about the difference between small tutorial-size examples and enterprise application-size code.
Starface has a very cool engineering team, and a super exciting “problem space” because there’s so many moving parts and events going through a phone app: contacts management, faxes (yes, faxes!), chat, phone calls, conference calls and conference management.
At Starface, I got introduced to my now good friend and excellent developer, hacker, and engineer Oliver Epper. We continue our collaboration in ‘book clubs’ and with coding experiments.
-
Small projects in 2023:
-
Enai, macOS-native start-up for an integrated browser and app platform. I helped fix some bugs and with AppKit-specific patterns.
Tech Stack: Swift / AppKit
-
fixkey.ai, macOS LLM-driven writing assistant. Helped with the initial UI.
Tech Stack: Swift / AppKit
-
-
Jan 2020–Apr 2023: Timing, macOS app for automated time-tracking with many app integrations.
Tech Stack: Swift / Objective-C / SQLite / Protobuf / Reactive Programming (RxSwift)
Working on the macOS time-tracking app Timing. Adding features (most notably integrations with other apps), fixing bugs, and overall trying to be helpful :) During three years of working with Daniel Alm and the rest of the gang on the app, Timing felt like home – very much like working on my own apps.
-
Aug 2021–Aug 2022: “Tap Challenge” Game
Tech Stack: SwiftUI / Reactive Programming (Combine) / Swift Structured Concurrency / TDD / Google Firebase Auth + Storage / full stack web dev for Google Firebase account management
A fully SwiftUI app targeting iOS 15 devices, using Combine and async/await to great success (and delight!). We use Firebase Cloud for user authentication and storing data. Using Apple’s new tech was very educating, and working within our small team was a pleasure.
I project-managed our team of 3 (2 developers, 1 designer), planned the application in cooperation with the client, and defined the Scope of Work. Apart from the usual app development, there’s been a lot of work behind the scenes.
Using Firebase as a backend to store data and create and manage user accounts in the iOS app was one thing – but then whipping up the HTML/CSS and JavaScript to get a web portal to login and manage one’s account was fun because so much came for free and I could try out modern web APIs for a change.
-
Jul 2019: tapvis iOS UI Automation (Web Archive link).
Tech Stack: Swift / MVVM
Integration of FastSpring purchases and license verification in the app, an onboarding app module, and some additional bugfixing and refactorings to match macOS best practices. With my macOS expertise, I could help figure out what exactly needed to be done to achieve the desired result so everyone was on the same page regarding the effort and scope.
I was delighted to work with Christian! He supported the development of our macOS app and went way beyond the limited scope of his appointed tasks: he conscientously delivered results within the time frame he estimated in advance, and on top fixed additional bugs in other parts of out app. He also contributed to the definition of the work requirements and thus removed from our way in advance. —Steven Reinisch, CEO Quantosparks GmbH, developers of Tapvis
Original German testimonial
Ich bin von der Zusammenarbeit mit Christian begeistert! Er unterstützte uns bei der Weiterentwicklung unserer macOS app. Nicht nur, dass er die ihm angetragen Aufgaben in der von ihm geschätzten Zeit gewissenhaft erledigte, er hat auch Bugs gefixt, die nicht Teil der Aufgabenbeschreibung waren. Darüber hinaus hat er sich aktiv bei der Definition der Arbeitspakete eingebracht und somit mögliche Stolpersteine früh aus dem Weg geräumt. Ein klasse Typ!
-
Feb 2019: Sub-contracting to develop an iOS app for ADinfinitum Inc..
Tech Stack: Objective-C / Core Data
-
May 2018–Nov 2018: ObjectBox: iOS Software and Library Developer
Tech Stack: Objective-C / C / C++ / Protobuf
For the existing C++ library core, I developed the Objective-C++ wrapper and exposed a user-friendly Swift API that was very unintrusive: developers could keep writing plain Swift objects without inheriting overhead from the library. The iOS project was eventually frozen in favor of a focus on Internet of Things applications.
-
2016/2017: Chef.One (Web Archive link): Social dining platform.
Tech Stack: Swift / VIPER
I was involved in getting the first iOS app release up and running for this tasty start-up from Hamburg, Germany.
-
2011–2018: Bielefeld University, Project “Peer Learning”: student peer support, coaching, workshops
We did really cool stuff here: we planned and executed workshops for nearly every skill students at University could need. Examples: memorization, PowerPoint presentations, body language, and time management. We coached 1:1 on these topics and others, too.
-
2012–2014: Department of Philosophy, Bielefeld University: IT-support and web development
-
2011–2012: student assistant of Prof. Dr. Rüdiger Bittner, then Jun.-Prof. Dr. Maria Kronfeldner, Department of Philosophy, Bielefeld University.
-
2007–2008: German armed forces, office and staff duty, running the office by myself at times; rank when leaving: Hauptgefreiter
-
Feb 2004: Front-end web developer internship at elephantseven, Gütersloh
I was lucky to have a supportive member of the team onboard me to their typo3 tech stack, and thanks to my prior experience with web development, I was actually able to ship features and help prepare the CMS and plan the UI. I’m grateful for the opportunities to develop in cooperation with the others, since usually students don’t get to do a lot of “real” work in internships at all. Also, I had to make 0 coffees, that was a boon and unexpected :)
Education
-
since 2008: Bielefeld University, Germany. Bachelor’s Degree in Philosophy & Computer Science.
-
2007: Abitur (A-levels / higher education entrance certification) after 13 years at school. Tested in: Physics, Mathematics, Philosophy, and German.
-
2005–2006: Taking applied computer science classes after school in my part-time at Fachhochschule der Wirtschaft (FHDW), Gütersloh, Germany.