Preventing edits in TextFields unless cell is selected

For the ToDo section in MarsManaged, the goal is for the user to see and quickly manage their upcoming tasks.  The user should be able to easily tweak bookmarked tasks, set target dates, complete or delete them. Now, given that each cell is composed of multiple editable TextFields, it’s important to prevent unintended editing on …

NewsWave for Mac 2022.0 (macOS Monterey compatibility update)

Today was Keynote day! And what a day, the new MacBook Pro’s look amazing and we have release dates for macOS Monterey, just a couple days out! With that in mind I’ve submitted a compatibility update for NewsWave for Mac, version 2022.0. No fancy new features today, this update focuses on compatibility and addresses a couple …

Using NSSortDescriptor to sort Dates and nil values

Today I’ve been working on sorting tasks, as I’m using swiftUI and CoreData I use a FetchRequest with the following SortDescriptor: NSSortDescriptor(keyPath: \Task.targetDate, ascending: true) The idea being it will sort based on the task due date from smallest to the largest, meaning you’ll see the ones you should act on first at the top. …

Multiple Word, Random Order Search – CoreData & SwiftUI

Today I worked on the search functionality for the upcoming Product Management app. Given that this app will contain lots of long notes, having good search is essential. In most cases & for most apps, a simple one to one comparison will do the job great -like in the above image-. Here’s how a predicate implementation …

Counting CoreData entries based on relationship entities

As I continue working on the new product management app, I was trying to get a quick CoreData count. To be precise,  I needed to get the count for how many of its relationships met a given criteria. There’s quite a few approaches but none as clean as “the filter”:  Using it for boolean arguments:     …

Developing on the cutting edge

If you’re working on a new app using the latest Xcode & macOS Monterey betas be aware of a bug that leads to SceneStorage failures appearing on the console: Failed to restore SceneStorage with key selectedTaskId. at SwiftUI/SceneStorage.swift:105[…]Failed to restore SceneStorage with key sidebarSelection. at SwiftUI/SceneStorage.swift:105Binary[2571:23261] Checked for defaults IMKUseDistributedObjects. result is 0Binary[2571:23261] IMK will …

Identifying combinations of dates in text using regex

For the upcoming app I’m working on I need a way to easily detect dates the user may have typed at the end of a line. It was time to re-visit old faithful regex.  After lots of readings and tests I ended up settling on this beauty:       “.*[0-9]{2}/[0-9]{2}” Here’s what it does: The …

Struggling with a basic macOS SideBar, RowList & DetailView app in SwiftUI

Its amazing how fast you can prototype in SwiftUI, it seems like magic. At the same time, when you start to get into the details, it can be infuriating…  Let me explain… After completing the prototype last week and deciding on the key features for the app  I started implementing them. One of the very …

What differentiates good from great Project & Product Managers?

Although this blog is entirely focused on my developer-side, this is a part-time (nights and weekends) enterprise. My ‘main’ job is not in development, it has quite a bit to do with product management. **I promise you this is going somewhere** Over many years, in many roles, the one thing that I’ve seen consistently differentiate …