<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://liman.io/</id>
    <title>liman.io</title>
    <updated>2026-02-08T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <author>
        <name>Daniel Fürst</name>
        <email>dpfuerst@gmail.com</email>
        <uri>https://twitter.com/DnlFrst</uri>
    </author>
    <link rel="alternate" href="https://liman.io/"/>
    <link rel="self" href="https://liman.io/blog/feed/"/>
    <rights>All rights reserved 2026, Daniel Fürst</rights>
    <entry>
        <title type="html"><![CDATA[Arbeitszeiten bequem auf dem iPhone erfassen]]></title>
        <id>https://liman.io/blog/arbeitszeiten-bequem-mit-iphone-erfassen</id>
        <link href="https://liman.io/blog/arbeitszeiten-bequem-mit-iphone-erfassen"/>
        <updated>2026-02-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Du bist angestellt, Lehrer oder Beamter und musst deine Arbeitsstunden erfassen? Hast aber keine Lust mehr auf Excel-Tabellen oder Papierkram? Mit Mind the Hour kannst du Arbeitszeiten, Pausenzeiten, Überstunden und Abwesenheiten erfassen - so bequem wie noch nie.]]></summary>
        <author>
            <name>Daniel Fürst</name>
            <email>dpfuerst@gmail.com</email>
            <uri>https://twitter.com/DnlFrst</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Using ColorDrop to Change Line Color in Procreate on iPad]]></title>
        <id>https://liman.io/blog/colordrop-line-color-procreate-ipad</id>
        <link href="https://liman.io/blog/colordrop-line-color-procreate-ipad"/>
        <updated>2024-09-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Learn how to efficiently change line colors in Procreate using the ColorDrop feature, which allows for quick color filling by dragging and dropping. This method offers greater precision and control compared to alpha locking.]]></summary>
        <author>
            <name>Daniel Fürst</name>
            <email>dpfuerst@gmail.com</email>
            <uri>https://twitter.com/DnlFrst</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Automating Focus on iOS]]></title>
        <id>https://liman.io/blog/automating-focus-on-ios</id>
        <link href="https://liman.io/blog/automating-focus-on-ios"/>
        <updated>2024-04-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Mind the Focus enhances iOS by automating focus based on calendar events for increased productivity.]]></summary>
        <author>
            <name>Daniel Fürst</name>
            <email>dpfuerst@gmail.com</email>
            <uri>https://twitter.com/DnlFrst</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Link iOS Sleep Schedule with Hue Light Bulbs using Shortcuts and Hue API]]></title>
        <id>https://liman.io/blog/link-ios-sleep-schedule-hue-light-bulbs-api-shortcuts</id>
        <link href="https://liman.io/blog/link-ios-sleep-schedule-hue-light-bulbs-api-shortcuts"/>
        <updated>2023-06-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[An iOS shortcut to link the sleep schedule with the Hue light bulbs through the Hue API.]]></summary>
        <author>
            <name>Daniel Fürst</name>
            <email>dpfuerst@gmail.com</email>
            <uri>https://twitter.com/DnlFrst</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Deploying Multi Zones on Vercel with Next.js]]></title>
        <id>https://liman.io/blog/vercel-nextjs-multi-zones-deployment</id>
        <link href="https://liman.io/blog/vercel-nextjs-multi-zones-deployment"/>
        <updated>2023-05-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Next.js and Vercel offer support for multi zones that merge different deployments in a single project. Assigning custom domains to all zone in Vercel is crucial to encourage search engines to index each deployment.]]></summary>
        <author>
            <name>Daniel Fürst</name>
            <email>dpfuerst@gmail.com</email>
            <uri>https://twitter.com/DnlFrst</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[How busy is your gym? A home screen widget for iOS]]></title>
        <id>https://liman.io/blog/gym-scriptable-widget-ios</id>
        <link href="https://liman.io/blog/gym-scriptable-widget-ios"/>
        <updated>2023-05-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A home screen widget for iOS created using Scriptable and JavaScript to display the number of visitors currently at your gym.]]></summary>
        <author>
            <name>Daniel Fürst</name>
            <email>dpfuerst@gmail.com</email>
            <uri>https://twitter.com/DnlFrst</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Tackling `AttributeGraph precondition failure: setting value during update` using Realm in SwiftUI]]></title>
        <id>https://liman.io/blog/attributegraph-precondition-failure-value-update-realm-swiftui</id>
        <link href="https://liman.io/blog/attributegraph-precondition-failure-value-update-realm-swiftui"/>
        <updated>2022-11-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[In SwiftUI, `AttributeGraph precondition failure` is a common error that often hints at an underlying issue. In this article, we look at an instance of this error occurring when using Realm's `@ObservedResults` property wrapper.]]></summary>
        <author>
            <name>Daniel Fürst</name>
            <email>dpfuerst@gmail.com</email>
            <uri>https://twitter.com/DnlFrst</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Updating Schema of Synced Realm and iOS App in Production]]></title>
        <id>https://liman.io/blog/schema-update-production-synced-realm-ios</id>
        <link href="https://liman.io/blog/schema-update-production-synced-realm-ios"/>
        <updated>2022-11-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Realm offers a development mode to conveniently design your app’s data models from its source code. Once the app enters the production environment, updating the app’s data models becomes more involved. This article shows you how to perform such a schema update in a synchronized Realm and iOS.]]></summary>
        <author>
            <name>Daniel Fürst</name>
            <email>dpfuerst@gmail.com</email>
            <uri>https://twitter.com/DnlFrst</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Serve Static Files during Development with Parcel]]></title>
        <id>https://liman.io/blog/static-files-development-parceljs</id>
        <link href="https://liman.io/blog/static-files-development-parceljs"/>
        <updated>2022-09-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Serving static files like images is an essential ingredient for front-end development. With bundlers such as webpack and Parcel, this task has become as easy as developers could wish for. While this holds for the production environment of a front-end, matters are a little more complicated during development. parcel serve does not copy static files to the output directory during development, leaving developers on the outlook for a custom solution.]]></summary>
        <author>
            <name>Daniel Fürst</name>
            <email>dpfuerst@gmail.com</email>
            <uri>https://twitter.com/DnlFrst</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Open Third-Party URLs in a SwiftUI App Using a Share Extension]]></title>
        <id>https://liman.io/blog/open-url-share-extension-swiftui</id>
        <link href="https://liman.io/blog/open-url-share-extension-swiftui"/>
        <updated>2022-08-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[There are two widespread ways of opening an URL with a SwiftUI app, namely custom URL schemes and universal links. Since the latter are not applicable for third-party URLs, I utilize a share extension combined with a custom URL scheme to open third-party URLs in a SwiftUI app.]]></summary>
        <author>
            <name>Daniel Fürst</name>
            <email>dpfuerst@gmail.com</email>
            <uri>https://twitter.com/DnlFrst</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Infinite Scrolling List for Paginated Results from GraphQL with SwiftUI]]></title>
        <id>https://liman.io/blog/infinite-scrolling-list-pagination-graphql-swiftui</id>
        <link href="https://liman.io/blog/infinite-scrolling-list-pagination-graphql-swiftui"/>
        <updated>2022-07-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Creating a list in SwiftUI is pretty simple. To populate lists, we usually refer to other data sources, e.g., an API. This way, the items in the list can easily exceed the available vertical display space which automatically makes the list scrollable. However, the API used as the list’s data source may not return all items that satisfy the corresponding request. Rather, the returned results are paginated where only one of the pages is returned at a time. To enable the user to scroll through the list of all items seamlessly, we refer to the paradigm of infinite scrolling.]]></summary>
        <author>
            <name>Daniel Fürst</name>
            <email>dpfuerst@gmail.com</email>
            <uri>https://twitter.com/DnlFrst</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Synced Realm on iOS with SwiftUI using Sign-in with Apple for Authentication]]></title>
        <id>https://liman.io/blog/synced-realm-swiftui-sign-in-with-apple</id>
        <link href="https://liman.io/blog/synced-realm-swiftui-sign-in-with-apple"/>
        <updated>2022-06-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Some apps store sensitive user information that requires authorized access. For example, an app may store a user’s first and last name which should not be accessed by any other user. As such, these apps need to integrate with authorized data storage. On iOS, two commonly employed technologies for authentication and authorized data storage are Sign-in with Apple and Realm, respectively.]]></summary>
        <author>
            <name>Daniel Fürst</name>
            <email>dpfuerst@gmail.com</email>
            <uri>https://twitter.com/DnlFrst</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Security Vulnerability in GitLab: Sending Arbitrary Requests through Jupyter Notebooks]]></title>
        <id>https://liman.io/blog/gitlab-security-vulnerability-jupyter-notebooks</id>
        <link href="https://liman.io/blog/gitlab-security-vulnerability-jupyter-notebooks"/>
        <updated>2022-02-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[With GitLab 14.3, the DevOps platform fixed a security vulnerability that enabled an attacker to impersonate a victim while sending arbitrary HTTP requests. Exploiting this vulnerability would allow an attacker to gain maintainer access to a third-party project, for example. This exploit was possible due to a stored XSS vulnerability in the rich representation of Jupyter notebooks. Combining the lack of HTML sanitization with an npm package used by GitLab triggered an arbitrary HTTP request on behalf of the victim, impersonating them.]]></summary>
        <author>
            <name>Daniel Fürst</name>
            <email>dpfuerst@gmail.com</email>
            <uri>https://twitter.com/DnlFrst</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Migration of a dockerized MySQL database with SQLAlchemy and Alembic]]></title>
        <id>https://liman.io/blog/migration-dockerized-mysql-sqlalchemy-alembic</id>
        <link href="https://liman.io/blog/migration-dockerized-mysql-sqlalchemy-alembic"/>
        <updated>2021-01-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The data models in a database evolve with the development of a codebase. Hence, applying changes to these data models is a common task of developers. While tools like SQLAlchemy and Alembic come in handy to accomplish these tasks, using Docker for the development process adds another layer of challenges on top. In this article, I showcase the migration of a dockerized MySQL database in Python with the aforementioned tools.]]></summary>
        <author>
            <name>Daniel Fürst</name>
            <email>dpfuerst@gmail.com</email>
            <uri>https://twitter.com/DnlFrst</uri>
        </author>
    </entry>
</feed>