• CocoaHeads Boston will meet this Thursday evening at 7:00 PM at MIT. Join us in-person or via Zoom. Details (including important notes about parking and building access) at:

    www.meetup.com/cocoahead…

  • A random piece of train track.

    Photo of a piece of train track, about 20 feet / 6 meters long.
  • Keyboard Shortcut Recorder for UIKit

    Keyboard Shortcut Recorder for UIKit is a custom control for letting a user specify a hardware keyboard shortcut in an iPhone/iPad app. I built this control when implementing Unread’s ability to set custom keyboard shortcuts for certain actions.

    This control is inspired by KeyboardShortcuts by Sindre Sorhus, which I used in Unread for Mac.

    Keyboard Shortcut Recorder for UIKit is available as an open source Swift package on GitHub.

  • I released Unread 4.3 with:

    • Article actions for Anybox, Flyleaf, Matter, and wallabag
    • Ability to set a custom keyboard shortcut for each article action
    • Ability to perform shortcuts on articles and links

    Detailed release notes are available.

  • This weekend is Indie Charity Weekend, an opportunity for you to discover some great apps while supporting charity at the same time. Thank you to Will Bishop for organizing this.

    Check it out at: indiecharityweekend.com

  • CocoaHeads Boston will meet in person tomorrow (Thursday) evening at 7:00 PM. We will be in room 325 of the E-51 Building at MIT. After the meeting we will walk to MEX for dinner and socializing. The classroom portion of the meeting will also be available via Zoom.

  • Our political leaders need to acknowledge that Trump won and facilitate a peaceful transfer of power. Perhaps business leaders need to say they will work with the incoming administration.

    But I do not understand why anyone needs to say “congratulations”.

  • This Is What Half the Country Wants

    Some believe that the election results indicate a severe weakness in the Democratic party or of Kamala Harris’ Presidential campaign. I wish I agreed, but the problem is bigger than that.

    The danger of Trump seemed clear in 2016, but that danger has become much more apparent since that time. We had the Russia scandal, the Comey firing, the extortion of Ukraine, the COVID response, the insurrection, the stolen classified documents, and the Madison Square Garden hate rally. I could go on.

    Despite all of that, this is the third Presidential election in which Trump got over 45% of the popular vote. Against three very different candidates. No primary challenger came close to defeating Trump either.

    Voters know what they are getting with Trump. Roughly half the country wants an illiterate hate-mongering insurrectionist dictator as President.

  • Let’s do this, America.

    www.youtube.com/watch

  • I canceled my Washington Post subscription and my Amazon Prime subscription.

  • Today is the first day of early voting here in Massachusetts. It feels good to get that done.

    “I voted early” sticker
  • Weird Bug Around Sharing to Reminders on macOS and iOS

    On both iOS and macOS, if you share an item via the share sheet or share popover to Reminders, Unread will offer to create a reminder. Interestingly, if the window or view offering the item has a current NSUserActivity, the default reminder title will be the title of that current NSUserActivity.

    You can see this from Safari:

    1. Open https://www.goldenhillsoftware.com
    2. Find the link to Feedly.
    3. Long press that link on iOS, or right click that link on macOS.
    4. Choose “Share…” from the resulting context menu.
    5. Choose “Reminders” from the share sheet or share popover.

    Expected result: If the reminder has a default title, it would be “New Reminder”, “Feedly”, or “Feedly: Track the topics and trends that matter to you” (the title of the linked page).

    Actual result: The default title is “Unread: An RSS Reader” – the title of the page with the link.

    I filed this as FB15271013, along with a sample project demonstrating that the title is coming from the NSUserActivity. The sample project has a UIActivityItemSource that offers better titles in its subjectForActivityType function and its activityViewControllerLinkMetadata function.

  • On iOS 18, saving an article to Safari Reading List (via the SSReadingList API) sometimes just does nothing. The user does not even get the alert prompting for permission to add a URL to Safari Reading List. The API call returns without throwing an exception. I filed FB15190050 with more info.

  • I released Unread 4.2 with iOS 18 features, and with new optional toolbar buttons and keyboard shortcuts on Mac.

    www.goldenhillsoftware.com/2024/09/u…

    Unread is an RSS reader with beautiful typography and a variety of color themes.

  • Tuesday is election day here in Massachusetts. An added benefit to voting now is the assurance that your voter registration is in good order for the November election.

    Decisions are made by those who show up.

  • Today is the first day of early voting for the Massachusetts state primary.

    “I Voted Early” sticker
  • This is a good article by Jason Snell about macOS permissions checking being out of balance. The excessive permission checking is probably the most frustrating aspect of using a Mac.

    sixcolors.com/post/2024…

  • I released Unread for Mac! Unread is an RSS reader with beautiful typography, color themes, and more. Unread has a long history on iPhone and iPad, and is now also available for Mac.

  • In 2020 President Biden saved democracy by defeating Trump. Now he is continuing to save democracy by passing the torch.

  • A deer in my back yard.

    Photo of a deer behind a deck - about 20 feet from where I was standing behind a screen door.
  • Once again the Supreme Court reminds us why we need to keep Trump out of office.

  • iOS Home Screen Personalization and Alternate Icons

    iOS 18 lets each app supply a light mode, dark mode, and tinted version of its icon. iOS also allows an app to let a user choose an alternate icon – letting customers personalize how an app appears on their home screen. While both capabilities are great, this combination of features does not appear to mix well.

    If an app has several icon options that vary only by color combination, it seems natural to let the user choose one option for light mode and another for dark mode. But there is no way to do this without providing n2 app icon entries in the asset catalog. It also seems like the tinted icon should be the same for each option when they only vary by color combination. But the only way for several icon options to use the same tinted variant is to copy the same PNG into each app icon asset catalog entry.

    My ideal solution to this would be a new setAlternateIconName method on UIApplication that accepted 3 different parameters: a light mode icon name, a dark mode icon name, and a tinted icon name. Alternatively a setAlternateIconNameForDarkMode method and a setAlternateIconNameForTinted method could work. I filed FB13999626 requesting this.

    For context, this is Unread’s screen letting the user choose an alternate icon. There are 32 different options that vary only by color scheme. I ideally want to let the user choose one for light mode and one for dark mode, and have the tinted variation be the same regardless.

    Unread screen letting user choose alternate icon
  • I am excited about text entry suggestions in AppKit.

  • CocoaHeads Boston will meet via Zoom tomorrow (Thursday) evening at 7:00 PM Boston time. New participants and participants from outside the Boston area are always welcome. www.meetup.com/cocoahead…

  • Preparing for the macOS Beta

    As soon as the new beta of macOS is out, I want to install it and use it as much as possible. But I also want my Sonoma installation to remain intact with my data – as a fallback, and because we will probably be unable to submit Mac apps from the beta to App Store Connect.

    It took me some time to determine how to set this up. I ended up doing this:

    1. Create a new APFS volume.
    2. Download the Sonoma installer from the Mac App Store.
    3. Install Sonoma on the new volume.
    4. Boot into the new volume, and use Migration Assistant to copy my data from the other volume.

    I now have a “Sonoma” volume and a “macos2024” volume.

subscribe via RSS