<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Iva Horn</title>
		<link>https://i2h3.de/</link>
		<description>Recent content on Iva Horn</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
		
			<lastBuildDate>Tue, 24 Mar 2026 14:00:00 +0100</lastBuildDate>
		
			<atom:link href="https://i2h3.de/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Nextcloud File Provider and Remote Changes</title>
				<link>https://i2h3.de/nextcloud-file-provider-remote-changes/</link>
				<pubDate>Tue, 24 Mar 2026 14:00:00 +0100</pubDate>
				<guid>https://i2h3.de/nextcloud-file-provider-remote-changes/</guid>
				<description>&lt;p&gt;This article is about how and why the Nextcloud file provider extension for macOS learns about changes on servers without Apple&amp;rsquo;s centralized push notification service.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Xcode Breakpoints in the Nextcloud Desktop Client</title>
				<link>https://i2h3.de/xcode-breakpoints-file-provider-extension/</link>
				<pubDate>Mon, 23 Feb 2026 11:27:26 +0100</pubDate>
				<guid>https://i2h3.de/xcode-breakpoints-file-provider-extension/</guid>
				<description>&lt;p&gt;When attaching Xcode to the file provider extension process of the Nextcloud desktop client, the debugger connected just fine — but every single breakpoint was displayed hollow and in dashes which means Xcode cannot associate the position with a line of code on disk.&#xA;Tracking down the root cause turned into quite the adventure.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Nextcloud Desktop Client Size Analysis</title>
				<link>https://i2h3.de/nextcloud-desktop-client-size/</link>
				<pubDate>Wed, 11 Feb 2026 10:30:00 +0100</pubDate>
				<guid>https://i2h3.de/nextcloud-desktop-client-size/</guid>
				<description>&lt;p&gt;A question I encounter regularly from users is why the Nextcloud Desktop Client is so large.&#xA;After all, it&amp;rsquo;s &amp;ldquo;just&amp;rdquo; a file synchronization app, right?&#xA;Let me explain what&amp;rsquo;s actually inside that 945 MB application bundle by inspecting the 4.0.6 release with file provider extension for macOS.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Nextcloud Docker Container Commandline</title>
				<link>https://i2h3.de/nextcloud-container-commandline/</link>
				<pubDate>Wed, 04 Feb 2026 16:00:06 +0100</pubDate>
				<guid>https://i2h3.de/nextcloud-container-commandline/</guid>
				<description>&lt;p&gt;A snippet to quickly open a bash session as www-data in a Nextcloud Docker container.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Model Conversion Implementations</title>
				<link>https://i2h3.de/model-conversion-implementations/</link>
				<pubDate>Mon, 26 Jan 2026 11:09:57 +0100</pubDate>
				<guid>https://i2h3.de/model-conversion-implementations/</guid>
				<description>&lt;p&gt;Having one semantic data model but two different types for implementation to separate domains and architecture layers brings up the question: where to put the conversion code?&lt;/p&gt;</description>
			</item>
			<item>
				<title>Signing Arbitrary macOS Bundle Identifiers</title>
				<link>https://i2h3.de/unregistered-macos-bundle-identifiers/</link>
				<pubDate>Wed, 10 Sep 2025 15:07:26 +0200</pubDate>
				<guid>https://i2h3.de/unregistered-macos-bundle-identifiers/</guid>
				<description>&lt;p&gt;If you’re shipping apps for both iOS and macOS, you’ve probably noticed that registering bundle identifiers with your developer team is necessary for iOS only.&lt;/p&gt;</description>
			</item>
			<item>
				<title>iOS Shortcut to App Store Releases</title>
				<link>https://i2h3.de/ios-shortcut-to-app-store-releases/</link>
				<pubDate>Mon, 21 Apr 2025 22:11:01 +0200</pubDate>
				<guid>https://i2h3.de/ios-shortcut-to-app-store-releases/</guid>
				<description>&lt;p&gt;I frequently have to install different builds of the same app, including the latest App Store release.&#xA;With an iOS shortcut workflow it is reduced to two taps.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Virtual Ubuntu on Apple Silicon</title>
				<link>https://i2h3.de/virtual-ubuntu-on-apple-silicon/</link>
				<pubDate>Thu, 13 Mar 2025 08:17:32 +0100</pubDate>
				<guid>https://i2h3.de/virtual-ubuntu-on-apple-silicon/</guid>
				<description>&lt;p&gt;I figured out how I can run Ubuntu 24.04 Noble Numbat (LTS) on an Apple Silicon Mac for free with UTM Virtual Machines while also having hardware accelerated graphics.&lt;/p&gt;</description>
			</item>
			<item>
				<title>German Nextcloud Localizations</title>
				<link>https://i2h3.de/german-nextcloud-localizations/</link>
				<pubDate>Mon, 03 Mar 2025 10:49:41 +0100</pubDate>
				<guid>https://i2h3.de/german-nextcloud-localizations/</guid>
				<description>&lt;p&gt;While opening a pull request to fix a minor issue in the localization process of the Nextcloud Notes app for iOS I learned why &lt;code&gt;de&lt;/code&gt; localizations must be overwritten with &lt;code&gt;de_DE&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Docker Compose Testcloud</title>
				<link>https://i2h3.de/docker-compose-testcloud/</link>
				<pubDate>Thu, 27 Feb 2025 22:22:36 +0100</pubDate>
				<guid>https://i2h3.de/docker-compose-testcloud/</guid>
				<description>&lt;p&gt;Frequently I need a clean throwaway deployment of Nextcloud to quickly reproduce bugs or have an isolated back end for client development and automated testing.&#xA;This is the next level.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Easy Nextcloud Test Container</title>
				<link>https://i2h3.de/easy-nextcloud-test-container/</link>
				<pubDate>Wed, 18 Dec 2024 15:13:40 +0100</pubDate>
				<guid>https://i2h3.de/easy-nextcloud-test-container/</guid>
				<description>&lt;p&gt;How to quickly and easily spin up a Docker container with Nextcloud for testing core features quickly.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Federated Nextcloud Development Environment</title>
				<link>https://i2h3.de/federated-nextcloud-development-environment/</link>
				<pubDate>Thu, 28 Nov 2024 08:33:56 +0100</pubDate>
				<guid>https://i2h3.de/federated-nextcloud-development-environment/</guid>
				<description>&lt;p&gt;Verifying one feature I had to implement requires two Nextcloud development instances talking to each other.&#xA;This is how I figured it out.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Back From Parental Leave</title>
				<link>https://i2h3.de/back-from-parental-leave/</link>
				<pubDate>Fri, 01 Nov 2024 22:00:00 +0100</pubDate>
				<guid>https://i2h3.de/back-from-parental-leave/</guid>
				<description>&lt;p&gt;I was on parental leave for the last three months and in regard to the main topic of this blog they went differently than I expected.&lt;/p&gt;</description>
			</item>
			<item>
				<title>iPad Pro 11-inch M4 (2024)</title>
				<link>https://i2h3.de/ipad-pro-11-inch-m4-2024/</link>
				<pubDate>Mon, 28 Oct 2024 20:00:00 +0000</pubDate>
				<guid>https://i2h3.de/ipad-pro-11-inch-m4-2024/</guid>
				<description>&lt;p&gt;I bought an iPad Pro with a 11-inch display and the latest M4 chip and was surprised and pleased.&lt;/p&gt;</description>
			</item>
			<item>
				<title>What&#39;s new in Xcode 16</title>
				<link>https://i2h3.de/whats-new-xcode-16/</link>
				<pubDate>Wed, 17 Jul 2024 13:49:44 +0200</pubDate>
				<guid>https://i2h3.de/whats-new-xcode-16/</guid>
				<description>&lt;p&gt;No big thing worth mentioning for me - except one.&lt;/p&gt;</description>
			</item>
			<item>
				<title>What&#39;s new in AppKit (2024)</title>
				<link>https://i2h3.de/whats-new-appkit-2024/</link>
				<pubDate>Wed, 10 Jul 2024 13:18:25 +0200</pubDate>
				<guid>https://i2h3.de/whats-new-appkit-2024/</guid>
				<description>&lt;p&gt;Small but useful improvements in the name of convergence.&#xA;Nothing amazing, though.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Swift Testing</title>
				<link>https://i2h3.de/swift-testing/</link>
				<pubDate>Tue, 25 Jun 2024 16:30:00 +0200</pubDate>
				<guid>https://i2h3.de/swift-testing/</guid>
				<description>&lt;p&gt;During WWDC24, Apple finally introduced a &amp;ldquo;swifty&amp;rdquo; test framework to replace XCTest.&lt;/p&gt;</description>
			</item>
			<item>
				<title>WWDC24</title>
				<link>https://i2h3.de/wwdc24/</link>
				<pubDate>Sat, 15 Jun 2024 09:00:00 +0200</pubDate>
				<guid>https://i2h3.de/wwdc24/</guid>
				<description>&lt;p&gt;This is my personal and subjective summary of Apple&amp;rsquo;s keynote and state of the union during its worldwide developer conference 2024.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Workers Instead of Managers</title>
				<link>https://i2h3.de/workers-instead-of-managers/</link>
				<pubDate>Sat, 18 May 2024 15:08:53 +0200</pubDate>
				<guid>https://i2h3.de/workers-instead-of-managers/</guid>
				<description>&lt;p&gt;Breaking down individual features of domain-oriented managers into dedicated implementations improves developer experience.&lt;/p&gt;</description>
			</item>
			<item>
				<title>SwiftUI Platform-Dependent Padding Modifier</title>
				<link>https://i2h3.de/swiftui-platform-dependent-padding-modifier/</link>
				<pubDate>Thu, 28 Mar 2024 22:57:56 +0100</pubDate>
				<guid>https://i2h3.de/swiftui-platform-dependent-padding-modifier/</guid>
				<description>&lt;p&gt;Some SwiftUI views I have require padding one platform and none on the other.&#xA;To avoid preprocessor switches everywhere I created a custom view modifier for it.&lt;/p&gt;</description>
			</item>
			<item>
				<title>File Provider Domain Connection to File Provider Domain</title>
				<link>https://i2h3.de/file-provider-domain-connection-to-file-provider-domain/</link>
				<pubDate>Sat, 23 Mar 2024 10:10:53 +0100</pubDate>
				<guid>https://i2h3.de/file-provider-domain-connection-to-file-provider-domain/</guid>
				<description>&lt;p&gt;We need file provider extension processes to talk to each other.&#xA;What first appeared to be prevented by sandbox on iOS works with a different API.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Logging and Signposting Taxonomy in Concurrency</title>
				<link>https://i2h3.de/logging-and-signposting-taxonomy-in-concurrency/</link>
				<pubDate>Tue, 12 Mar 2024 07:28:09 +0100</pubDate>
				<guid>https://i2h3.de/logging-and-signposting-taxonomy-in-concurrency/</guid>
				<description>&lt;p&gt;Having a file provider extension with multiple domains and processes and even more enumerators logging in parallel can become a mess. Leveraging the subsystem and category fields to the rescue.&lt;/p&gt;</description>
			</item>
			<item>
				<title>fileproviderctl Changes in macOS 14.4</title>
				<link>https://i2h3.de/fileproviderctl-changes-macos-14.4/</link>
				<pubDate>Mon, 11 Mar 2024 16:01:53 +0100</pubDate>
				<guid>https://i2h3.de/fileproviderctl-changes-macos-14.4/</guid>
				<description>&lt;p&gt;Apparently, the feature set of &lt;code&gt;fileproviderctl&lt;/code&gt; has been narrowed down to the dismay of developers, testers and even administrators and it appears to be intentional.&lt;/p&gt;</description>
			</item>
			<item>
				<title>MD5 Performance Test App</title>
				<link>https://i2h3.de/md5-performance-test-app/</link>
				<pubDate>Wed, 06 Mar 2024 10:05:08 +0100</pubDate>
				<guid>https://i2h3.de/md5-performance-test-app/</guid>
				<description>&lt;p&gt;Out of necessity I created a minimalistic SwiftUI app which performs MD5 hashing to get a rough feeling how efficient it is on Apple devices.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Result Builders To Mock File System</title>
				<link>https://i2h3.de/result-builders-mocking-file-system/</link>
				<pubDate>Tue, 27 Feb 2024 14:43:06 +0100</pubDate>
				<guid>https://i2h3.de/result-builders-mocking-file-system/</guid>
				<description>&lt;p&gt;I need to maintain a virtual file system in a CoreData database.&#xA;Setting up test scenarios is tiresome, so I made use of result builders and its &lt;em&gt;nice&lt;/em&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Convenient NSPredicate Initializers</title>
				<link>https://i2h3.de/convenient-nspredicate-initializers/</link>
				<pubDate>Thu, 22 Feb 2024 09:04:20 +0100</pubDate>
				<guid>https://i2h3.de/convenient-nspredicate-initializers/</guid>
				<description>&lt;p&gt;There is a better way than to repeat the same or similar &lt;code&gt;NSPredicate&lt;/code&gt; all the time and it is very nice to read.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Execution Order of Multiple Defer Blocks</title>
				<link>https://i2h3.de/multiple-defer-blocks-execution-order/</link>
				<pubDate>Fri, 16 Feb 2024 09:51:55 +0100</pubDate>
				<guid>https://i2h3.de/multiple-defer-blocks-execution-order/</guid>
				<description>&lt;p&gt;I rarely need to use defer blocks and mostly it is for ending signpost intervals.&#xA;I checked the possible situation of having multiple and in which order they are executed.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Signposting Macro</title>
				<link>https://i2h3.de/signposting-macro/</link>
				<pubDate>Fri, 16 Feb 2024 09:00:00 +0100</pubDate>
				<guid>https://i2h3.de/signposting-macro/</guid>
				<description>&lt;p&gt;I was very excited about macros because they allow the reduction of boilerplate code like handling signposts.&#xA;This macro reduces signposting in a method to a single word expression.&lt;/p&gt;</description>
			</item>
			<item>
				<title>FileManager Throws Error on Getting File Provider Services</title>
				<link>https://i2h3.de/filemanager-throws-error-on-getting-file-provider-services/</link>
				<pubDate>Thu, 15 Feb 2024 16:00:00 +0100</pubDate>
				<guid>https://i2h3.de/filemanager-throws-error-on-getting-file-provider-services/</guid>
				<description>&lt;p&gt;I found out how to successfully get replicated file provider services by URL on iOS which previously was impossible due to FileManager throwing a cryptic error.&lt;/p&gt;</description>
			</item>
			<item>
				<title>@preconcurrency Imports</title>
				<link>https://i2h3.de/preconcurrency-import/</link>
				<pubDate>Wed, 14 Feb 2024 10:00:00 +0100</pubDate>
				<guid>https://i2h3.de/preconcurrency-import/</guid>
				<description>&lt;p&gt;This is one of the things I do not find when I am looking for them but only later by accident.&#xA;When Xcode is reports warning with strict concurrency checks enabled and they are about Apple&amp;rsquo;s own frameworks, they might be what you are looking for.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Asynchronous Throwing XPC Protocols</title>
				<link>https://i2h3.de/asynchronous-throwing-xpc-protocols/</link>
				<pubDate>Tue, 13 Feb 2024 09:30:00 +0100</pubDate>
				<guid>https://i2h3.de/asynchronous-throwing-xpc-protocols/</guid>
				<description>&lt;p&gt;I always thought that &lt;code&gt;@objc&lt;/code&gt; protocols put constraints on protocol definitions that make the use of &lt;code&gt;async&lt;/code&gt; and &lt;code&gt;throws&lt;/code&gt; impossible.&#xA;Don&amp;rsquo;t ask me why.&#xA;It actually is not necessary to use completion handlers. &lt;code&gt;async throws&lt;/code&gt; methods can be used instead.&lt;/p&gt;</description>
			</item>
			<item>
				<title>fileproviderctl Is Broken on macOS 13.6 Ventura</title>
				<link>https://i2h3.de/fileproviderctl-broken-macos-13.6/</link>
				<pubDate>Mon, 12 Feb 2024 09:00:00 +0100</pubDate>
				<guid>https://i2h3.de/fileproviderctl-broken-macos-13.6/</guid>
				<description>&lt;p&gt;macOS 13.6 Ventura shipped a &lt;code&gt;fileproviderctl&lt;/code&gt; binary with broken signing which rendered it useless and us unable to properly clean up the environment.&lt;/p&gt;</description>
			</item>
			<item>
				<title>macOS fileproviderctl Is Your Friend</title>
				<link>https://i2h3.de/macos-fileproviderctl-is-your-friend/</link>
				<pubDate>Sun, 11 Feb 2024 18:00:00 +0100</pubDate>
				<guid>https://i2h3.de/macos-fileproviderctl-is-your-friend/</guid>
				<description>&lt;p&gt;Developing a file provider for macOS is more pleasant developer experience than for iOS.&#xA;At least in my opinion.&#xA;One of the reasons is the availabilty of helpful command-line tools like &lt;code&gt;fileproviderctl&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>macOS Color Palettes</title>
				<link>https://i2h3.de/macos-color-palettes/</link>
				<pubDate>Fri, 09 Feb 2024 18:00:00 +0100</pubDate>
				<guid>https://i2h3.de/macos-color-palettes/</guid>
				<description>&lt;p&gt;A quick note how to create, find and backup custom color palettes on macOS.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Reveal &lt;private&gt; Logs on macOS Sonoma</title>
				<link>https://i2h3.de/reveal-private-logs-macos-sonoma/</link>
				<pubDate>Thu, 08 Feb 2024 10:00:00 +0100</pubDate>
				<guid>https://i2h3.de/reveal-private-logs-macos-sonoma/</guid>
				<description>&lt;p&gt;While I am still convinced the unified logging system is great, the masking of value interpolations gets into my way often enough, too.&#xA;The way to unmask those values has changed drastically from macOS release to macOS release.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Why I Chose CoreData Instead of SwiftData</title>
				<link>https://i2h3.de/why-i-chose-coredata-instead-of-swiftdata/</link>
				<pubDate>Mon, 05 Feb 2024 20:00:00 +0100</pubDate>
				<guid>https://i2h3.de/why-i-chose-coredata-instead-of-swiftdata/</guid>
				<description>&lt;p&gt;SwiftData is very neat. Concise, simple and fast. I quickly hit show stoppers, though.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Documentation Comments on Test Methods</title>
				<link>https://i2h3.de/documentation-comments-on-test-methods/</link>
				<pubDate>Sat, 03 Feb 2024 00:00:00 +0100</pubDate>
				<guid>https://i2h3.de/documentation-comments-on-test-methods/</guid>
				<description>&lt;p&gt;I just want to share a minor inspiration which might help in daily business with unit tests.&lt;/p&gt;</description>
			</item>
			<item>
				<title>@Attribute(.unique) Causes Model Replacement</title>
				<link>https://i2h3.de/swiftdata-unique-attribute-causes-model-replacement/</link>
				<pubDate>Fri, 02 Feb 2024 00:00:00 +0100</pubDate>
				<guid>https://i2h3.de/swiftdata-unique-attribute-causes-model-replacement/</guid>
				<description>&lt;p&gt;While making my first experiences with SwiftData, I also used &lt;code&gt;@Attribute(.unique)&lt;/code&gt; on a model property.&#xA;I expected model insertion to throw an error or crash in case this constraint is violated.&#xA;The actual behaviour was rather surprising.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Logging Macro</title>
				<link>https://i2h3.de/logging-macro/</link>
				<pubDate>Thu, 01 Feb 2024 00:14:57 +0100</pubDate>
				<guid>https://i2h3.de/logging-macro/</guid>
				<description>&lt;p&gt;With the introduction of Swift macros in 2023, I have came across a few situations in which they have become useful.&#xA;One is the reduction of boilerplate code.&#xA;In example the automatic declaration of a &lt;code&gt;Logger&lt;/code&gt; property on a type.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Nonisolated Extension Functions</title>
				<link>https://i2h3.de/nonisolated-extension-functions/</link>
				<pubDate>Wed, 31 Jan 2024 00:00:00 +0100</pubDate>
				<guid>https://i2h3.de/nonisolated-extension-functions/</guid>
				<description>&lt;p&gt;With strict concurrency checking enabled in an Xcode project, I encountered a warning while using &lt;code&gt;URLSession&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
