<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Lukáš Kubánek</title><link>https://lukaskubanek.com/</link><description>Recent content on Lukáš Kubánek</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Wed, 15 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://lukaskubanek.com/index.xml" rel="self" type="application/rss+xml"/><item><title>What I’m Doing Now</title><link>https://lukaskubanek.com/now/</link><pubDate>Mon, 20 Apr 2026 00:00:00 +0000</pubDate><guid>https://lukaskubanek.com/now/</guid><description>When I last updated this page, I was at Local-First Conf in Berlin. That was back in May 2025. Since then, life turned upside down.
I caught COVID at the conference and had to skip the last day and head home early. It felt like a normal cold and cleared up in a few days. But over the following weeks, I developed long-COVID symptoms like fatigue, brain fog, and headaches. For quite some time I was completely knocked out and disqualified from life.</description></item><item><title/><link>https://lukaskubanek.com/til/2026-04-15/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><guid>https://lukaskubanek.com/til/2026-04-15/</guid><description>Today I learned about isolated deinit from SE-0371, which allows actor types to have a synchronous deinit that runs on the actor&amp;rsquo;s executor. Especially useful for @MainActor types that need to perform clean-up work by accessing their own isolated state.</description></item><item><title/><link>https://lukaskubanek.com/til/2026-01-01/</link><pubDate>Thu, 01 Jan 2026 00:00:00 +0000</pubDate><guid>https://lukaskubanek.com/til/2026-01-01/</guid><description>Today I learned about Optional.take() that returns the wrapped value and clears the optional in a variable in one go. See the example in the docs.</description></item><item><title/><link>https://lukaskubanek.com/til/2025-03-30/</link><pubDate>Sun, 30 Mar 2025 00:00:00 +0000</pubDate><guid>https://lukaskubanek.com/til/2025-03-30/</guid><description>Today, while working on a major refactor of InterposeKit, I learned that KVO in Objective-C works by dynamically creating a subclass at runtime. It’s called NSKVONotifying_OriginalClass and it overrides the getter and setter of the observed property to include the observation logic. When removing the observation, the runtime even restores the original class and cleans up after itself.</description></item><item><title/><link>https://lukaskubanek.com/til/2025-02-28/</link><pubDate>Fri, 28 Feb 2025 00:00:00 +0000</pubDate><guid>https://lukaskubanek.com/til/2025-02-28/</guid><description>Today I learned how to convert YAML to JSON directly from the command line using yq (not to be confused with the Python implementation): yq eval data.yaml -o json -P &amp;gt; data.json</description></item><item><title>The Year 2024 in Review</title><link>https://lukaskubanek.com/blog/review-of-2024/</link><pubDate>Sun, 16 Feb 2025 00:00:00 +0000</pubDate><guid>https://lukaskubanek.com/blog/review-of-2024/</guid><description>This one took me longer than I’d have liked! We’re already well into 2025 and only now have I found the time to reflect on the past year. The reason? We’re on a nomad trip, once again spending the entire winter season in Bansko, Bulgaria. This time, we arrived before Christmas, and since then, we’ve been splitting our time between work, skiing and social activities, leaving little room for much else.</description></item><item><title/><link>https://lukaskubanek.com/til/2025-02-01/</link><pubDate>Sat, 01 Feb 2025 00:00:00 +0000</pubDate><guid>https://lukaskubanek.com/til/2025-02-01/</guid><description>Today I learned that Group and ForEach have public support for accessing their subviews starting in iOS 18 and macOS 15 using the Group.init(subviews:transform:) and ForEach.init(subviews:content:) initializers, respectively.</description></item><item><title/><link>https://lukaskubanek.com/til/2025-01-21/</link><pubDate>Tue, 21 Jan 2025 00:00:00 +0000</pubDate><guid>https://lukaskubanek.com/til/2025-01-21/</guid><description>Today I learned that wrapping a Swift string literal in pound signs removes the need to escape quotes. Instead of &amp;quot;{\&amp;quot;key\&amp;quot;: \&amp;quot;value\&amp;quot;}&amp;quot; you can write #&amp;quot;{&amp;quot;key&amp;quot;: &amp;quot;value&amp;quot;}&amp;quot;#.</description></item><item><title/><link>https://lukaskubanek.com/til/2025-01-17/</link><pubDate>Fri, 17 Jan 2025 00:00:00 +0000</pubDate><guid>https://lukaskubanek.com/til/2025-01-17/</guid><description>Today I learned that NSAlert allows setting a custom icon image to replace the default app icon.</description></item><item><title/><link>https://lukaskubanek.com/til/2024-11-18/</link><pubDate>Mon, 18 Nov 2024 00:00:00 +0000</pubDate><guid>https://lukaskubanek.com/til/2024-11-18/</guid><description>Today I learned that submenus on iOS display a bold chevron on the left when presented on an iPhone and a more subtle chevron on the right when presented on an iPad.</description></item><item><title/><link>https://lukaskubanek.com/til/2024-11-17/</link><pubDate>Sun, 17 Nov 2024 00:00:00 +0000</pubDate><guid>https://lukaskubanek.com/til/2024-11-17/</guid><description>Today I learned that when moving items in a list on iOS, UIKit uses target indices as they are after deletion, while SwiftUI uses them as they were before deleting the moved item.</description></item><item><title>The Year 2023 in Review</title><link>https://lukaskubanek.com/blog/review-of-2023/</link><pubDate>Sun, 31 Dec 2023 00:00:00 +0000</pubDate><guid>https://lukaskubanek.com/blog/review-of-2023/</guid><description>The year is slowly coming to a close, and so, just like last year, I’m pausing to put together a blog post to reflect on it. Join me as I dive into the highlights and lessons from 2023 from both a personal and business perspective. If you’re here only for particular topics, you can directly navigate to sections about my nomad trip, freelancing, new iOS app, relocation from Berlin to Dresden, more travels later in the year, insights on my health and habits, or my switch from Twitter to Mastodon.</description></item><item><title>The Year 2022 in Review</title><link>https://lukaskubanek.com/blog/review-of-2022/</link><pubDate>Sat, 31 Dec 2022 00:00:00 +0000</pubDate><guid>https://lukaskubanek.com/blog/review-of-2022/</guid><description>At the end of each year, I usually take some time to reflect on all that has happened. In the past, these thoughts were mainly focused on my work. I would write up a summary of the year’s events at Diagrams, post it to our internal Basecamp, and share it with the team on New Year’s Eve.
Starting with this year, I’m completely changing that format as I’m beginning to post my reflections publicly on my website and share it with a wider audience.</description></item><item><title>The Diagrams Story</title><link>https://lukaskubanek.com/blog/diagrams-story/</link><pubDate>Fri, 23 Sep 2022 00:00:00 +0000</pubDate><guid>https://lukaskubanek.com/blog/diagrams-story/</guid><description>During my computer science studies, I switched from Windows to Mac and was amazed by all the high-quality native apps from independent developers. Their gorgeous designs and well-crafted user experiences attracted me to the point where I started thinking of building one myself. At that time, I lacked a proper tool for sketching software architecture diagrams. And so the idea for building a native diagram editor for the Mac was born.</description></item><item><title>Work</title><link>https://lukaskubanek.com/work/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lukaskubanek.com/work/</guid><description>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.</description></item></channel></rss>