Subscribe

I make apps, take a look 👇

Timeless' app icon

Timeless

Reduce time anxiety and stay focused

Timeless is a subtle clock replacement. It helps you feel less anxious about the time and more focused on how you should be spending it.

  • Fix Windows 10 2004 update Blue Screen on Corsair ONE

    TL;DR: Install the latest version of Corsair Link to fix the issue.

    Microsoft recently released the 2004 version update for Windows 10. It includes a bunch of cool new features, like WSL 2 which integrates Linux even better into the Windows operating system.

    I immediately jumped at the opportunity to install the update when it presented itself, only to be disappointed during the installation. It repeatedly failed with a BSOD mentioning cpuz141_x64.sys caused a PAGE_FAULT_IN_NONPAGED_AREA.

    At first I was confused, because I wasn’t aware a CPU-Z driver was installed at all. After some digging I discovered it’s used by the Corsair Link utility installed on all 2017/2018 Corsair ONE models.

    Corsair Link is mandatory as it’s solely responsible for updating the fan speeds while the system is in use. Without it the computer will overheat. A terrible depedency I wasn’t fully aware of when I bought the machine.

    A picture of the Corsair ONE with its components visible

    It’s pretty though and fast.

    The in-app update mechanism for Corsair Link promised me I was running the latest version. That was concerning. It suggested I might not be able to install the 2004 update at all. Luckily I came across this topic on the Corsair forum: CORSAIR LINK 4.4.4.9 for CORSAIR ONE (2017/2018). Posted in 2018 it provides a download link to an updated version of Corsair Link. Why this version isn’t available through the in-app updater is unknown to me.

    After installing the newer version, Windows continued the OS update without a hitch. 🥳

  • Fix 'broken' iPad Pro (2nd gen) Smart Keyboard Folio

    My Smart Keyboard Folio has been unresponsive for months. I was almost getting ready to trash it. Every time I folded it into position, the onscreen keyboard slid up as if a physical keyboard wasn’t connected at all.

    It was attached though and I tried everything to get it to work:

    • Force-rebooting my iPad with the keyboard disconnected, then connecting it afterwards. Didn’t work.
    • Cleaning the contacts with alcohol and a clean cloth. Didn’t work.
    • Nudging it from the bottom left or right corner. Worked at first, then nothing.

    The problem manifested over a few weeks, getting worse every day. I thought the ribbon cable had been damaged. Nothing I could do to fix it.

    Then I tried bending the magnets that snap the keyboard into place. 🧲

    I couldn’t believe it at first, but the problem was resolved instantly. After folding and unfolding it several times it still works. I’m actually typing this article on it.

    The trick is to bend the magnets slightly towards where it connects with the iPad. Don’t overdo it, just curve them up a tiny bit. I can’t even see the difference on mine, but the effect is there.

    A photo showing to bend the corners of the Smart Keyboard Folio upwards

    So, if you’ve ruled out all software-related issues, you might want to give this a go. Let me know if you got yours working again too!

    Note: I’m not responsible for any damage you cause to your keyboard. Be careful and use common sense.

  • VMWare Fusion 10 on macOS Catalina

    This post is for those of us running an older version of VMWare Fusion on macOS Catalina. VMWare Fusion 11.5 supports macOS 10.15 out of the box.

    I use VMWare Fusion 10 to test my apps on previous and future versions of macOS. Since this fall, that’s become problematic. The screen remains blank when I start one of my virtuals on Catalina. Oddly enough the preview in the virtual machine overview works fine.

    Catalina requires apps to request permission for various tasks. Recording the screen is one of them. Apparently Fusion uses this feature, but neglects to ask for permission. Thus the screen stays black.

    Some people found a way to get around this by granting permission manually. Here’s how that works.

    ⚠️ Note that this requires running Terminal commands in Recovery Mode. Make sure you’re comfortable with these steps. I don’t offer any support and am not responsible if things don’t go as planned. ⚠️

    Create the script

    Create a new script file where you can easily access it. I recommend /tmp/fixfusion.sh. Paste in the following:

    #!/bin/sh  
    
    # Change the following to fit your system
    root="/Volumes/Macintosh HD"
    
    "$root/usr/bin/sqlite3" "${root}/Library/Application Support/com.apple.TCC/TCC.db" 'insert into access values ("kTCCServiceScreenCapture", "com.vmware.fusion", 0, 1, 1, "", "", "", "UNUSED", "", 0,1565595574)'
    

    Enter Recovery Mode

    Enter Recovery Mode by restarting your Mac and holding down + R while it boots.

    Start a Terminal window by selecting UtilitiesTerminal from the menu bar when you’ve reached Recovery Mode.

    Unlock your disk if necessary

    If your primary drive is encrypted using FileVault (it should be), unlock it first by running the following command:

    diskutil apfs unlock "Macintosh HD"

    (Again, adjust the command if your disk isn’t called “Macintosh HD”.)

    Enter your passphrase when it asks for it.

    Run the script

    You can now run the script you created earlier:

    sh "/Volumes/Machintosh HD/tmp/fixfusion.sh"

    It’s supposed to not show any output. If there’s no error, it worked.

    Reboot

    Check System PreferencesSecurity & PrivacyPrivacyScreen Recording and you’ll notice VMWare Fusion has the permission it needs.

    A screenshot of System Preferences showing permission for VMWare Fusion to record the screen

    That’s it. Your virtual machines should properly work again. 🥳

  • Sponsor me on GitHub

    GitHub entered me into their sponsored developers program!

    This means you can easily support me through my repos or the projects I contribute to. 👯‍♂️

    I made a page where I feature the generous people who sponsor me: thanks.boy.sh

  • Migrating away from DevMate: redirecting Sparkle updates

    Originally appeared on dangercove.com

    DevMate is the service I use to gather download and install statistics for most of my apps. It also serves the update feeds for all non-Mac App Store apps. Earlier this year DevMate announced its retiring the platform in December.

    A screenshot of my DevMate dashboard, showing about 50 downloads and 30 installs for Timeless in the past 30 days and 100 downloads and 60 installs for Pipvid

    In this post I’ll outline how I’m preparing my apps to migrate to a new update feed. Christian Tietze mentions asking DevMate to point the Sparkle update feed to a new location. He also recommends to not rely on DevMate’s redirect to work forever. That’s where my approach comes in.

    I urge you to take control over the feed URL entirely and redirect it yourself. DevMateKit uses Sparkle under the hood. This means a custom update URL can be specified by implementing a Sparkle delegate method.

    Setting the URL

    class ApplicationCoordinator: NSObject, Coordinator {
    
      ...
    
      private func configureUpdates() {
        DM_SUUpdater.shared().delegate = self
      }
    }
    
    extension ApplicationCoordinator: DM_SUUpdaterDelegate_DevMateInteraction {
        func feedURLString(for updater: DM_SUUpdater) -> String? {
            if Defaults.shared.isEnabled(setting: .betaUpdates) {
                return .appcastBetaURLString
            } else {
                return .appcastURLString
            }
        }
    }
    
    extension String {
        static let appcastURLString = "https://updates.dangr.co/\(Bundle.main.bundleIdentifier!)/appcast.xml"
        static let appcastBetaURLString = "https://updates.dangr.co/\(Bundle.main.bundleIdentifier!)/beta-appcast.xml"
    }
    

    After this change Timeless will check for updates at https://updates.dangr.co/com.dangercove.Timeless.Mac/appcast.xml. The updates.dangr.co domain is mine and I can set redirects for it however I want.

    Redirecting

    I use Netlify to handle the redirects. Here’s what that looks like:

    com.dangercove.Timeless.Mac/appcast.xml*      https://updates.devmate.com/com.dangercove.Timeless.Mac.xml:splat       301
    com.dangercove.Timeless.Mac/beta-appcast.xml* https://updates.devmate.com/beta/com.dangercove.Timeless.Mac.xml:splat  301
    

    As you can see I currently redirect to the feed at DevMate, but I can redirect it anywhere else whenever I want. This allows me to use DevMate for as long as possible and switch to any other service that uses Sparkle. I’m keeping a close eye on App Center by Microsoft. They put Sparkle feeds for macOS on the roadmap for September.

I make apps, take a look 👇

Pipvid's app icon

Pipvid

Snaps videos to any corner

Adds a picture-in-picture mode to VLC and QuickTime. Ideal for watching videos in the corner of your screen while you work on something else.