• Night in Berlin

  • 🪞 🚊 Selfie through the train window

  • Berlin Friedrichstr

  • Sun over Berlin

  • Old and new construction

  • White camper

  • Construction in Berlin

  • 🐱 Decoration cat

  • 🍜 TanTan Ramen

  • aarle - a Shaarli/Pinboard bookmark manager

    Can you even call yourself an iOS Engineer if you never shipped a Twitter or Pinboard client?

    On the 2nd of January, I migrated my bookmarks from Safari / Pinboard to a self-hosted Shaarli instance. I generally prefer native Apps over web interfaces but couldn’t find a client for iOS/macOS. Time for a tiny new App.


    iOS Screenshot of aarle

    iOS Screenshot of aarle

    aarle is pure SwiftUI App for macOS and iOS. The feature set is the bare minimum:

    • Log in using a URL and the secret of your Shaarli instance
    • Browser your bookmarks
    • Filter your bookmarks by tag
    • Declare favorite tags shown in the sidebar / start screen
    • Basic Search
    • Add / Edit bookmarks
    • Share extension to add bookmarks

    Only yesterday I decided to also add basic Pinboard support as the APIs are very similar:

    • Log in using your Pinboard API key (can be found on the Pinboard settings)
    • Basic search of your last 1000 entries

    The backlog for minor improvements is already overflowing. As a next big feature, I would like to add offline read-it-later support using webarchives. Because why not.


    I hope to submit the App to App review in a few days, in the meantime you can join the Testflight groups:

    The code

    I’m not spending time on another hot-take how buggy SwiftUI is. I really enjoy working on this rather basic App and currently have no interest in building another UIKit/Catalyst App in my free time. It was also my first time spending more than a few minutes on SwiftUI for macOS. AppKit is Done - kean.blog was an amazing timesaver for this. The code itself is only functional, not clean, not dry, not covered with tests. Nothing to be proud of in itself, but I enjoy the App and that’s all that mattered here for me. If you are interested, it’s open source. For the basic UI architecture: A few stores that contain a redux-like flow are passed to the views as EnviornmentObject. The views listen to the store’s state changes and update it using actions.

  • More old firetrucks

  • 🎥 Old cinema

  • 🚊 S-Bahn train

  • Home

  • 🚲 Cyclist in Berlin