How I imagine using MFC Deck

Thanks @RosemaryOrchard for creating this Category!

@adamtow I was pestering you with questions in your announcement thread, and I thought it might be useful to describe how I am imagine I might use MFC Deck.

What excited me about your initial demo was the idea of using Shortcuts to create my own functional, useful Widgets in iOS 14. To me, what would make this Widgets useful is that they would be constantly updated, reflecting data from some local or remote source, such as the Health app or Dropbox.

So I gravitated toward the Battery Level example, because it seemed to be doing exactly what I wanted. In the course of playing with it though, I learned the hard way that there was a difference between “refreshing” a widget, and re-running the Shortcut that drives it. I noticed this with Battery Level when the battery percentage would update without the icon or tile color updating.

I now understand why this work, but I’m still not sure how, under iOS 14, I would have my own Widgets that refer to my own data sources update on a regular basis. Am I going to have to manually set up Personal Automations to run MFC Deck Autocuts every hour?

The other thing that really slowed my exploration of MFCD is the ubiquity and primacy of Tags. I don’t understand what Tags do for me, or why I constantly feel like I need to administrate them. I just want to make some Widgets. Why all the Tags? I wonder if there’s a way to de-prioritize them in the UX, so that their power is still available to those who understand them, but that they don’t get in the way of new users trying to learn the basics?

I would like to create Widgets that can report on files changing on Dropbox and iCloud drive. For example, I imagine creating a Widget that monitors the log files generated by Adobe After Effects when it’s rendering, showing me the status of the render.

I also like the idea of using Widgets as a launcher for Shortcuts, where the Tiles can show useful data about the last run of the Shortcut. For example, I’d love to launch my Caff Life Shortcut from a Tile that shows my current estimated blood caffeine level, which is calculated by a separate Shortcut. I have the latter part working, but again I’m stuck at trying to figure out how to have it automatically update.

I hope this helps give you a sense of what excited me about your amazing app, and maybe provides you with some opportunities to help guide my experimentation.

-Stu

3 Likes

@Stu

The Battery Level example uses special tokens that can dynamically pull information available to all iOS apps, like battery level, volume, brightness, etc. I can see how this might give a false impression that all cards would constantly update in the background.

As you’ve come to realize, a card that is powered by a shortcut needs that shortcut to run in order for its Card Result to be updated, which would in turn update its display in MFC Deck, widgets, Apple Watch, etc.

How you update the shortcut is really up to you. If you need something that’s always up-to-date, you’ll need to set up some kind of Personal Automation, back-tap accessibility shortcut, NFC tag trigger, etc. that updates the cards without having to tap on them in the app.

For things that I want to have updated super frequently, I would assign an Open App personal automation that runs an MFC Deck card. You can control how often the card’s action actually runs by adjusting its availability (i.e. every minute, every hour, on the weekends, etc.). You’ll still see the annoying Shortcuts notification whenever you open an app, but at least your card updater shortcut isn’t actually running every time (unless that’s what you want).

One thing that I’m hoping to make it in the shipping release is the ability for Open URL cards to automatically update in the background (or as often as Apple lets widgets update). One of the options for Open URL cards is the ability to retrieve the contents of a URL and store the contents into the Card Result field. So, in the case of your log file monitor, you could have a script running on a server that monitors those log files and create a Card Result JSON object that the MFC Deck card is monitoring. Does that make sense?

I’ll make a separate post regarding tags.

1 Like

Regarding tags, this has been a point of confusion for me too! Remember that the app originally was designed to be a way for users to assign multiple actions to the same set of NFC tags.

NFC Tags

An NFC tag would be given a name (i.e. A1, B1, Kitchen Tag, Car Tag, etc.). Cards in different decks would use that tag as a way to provide different actions.

  • Morning Deck: A1 - turns off the lights
  • Evening Deck: A1 - turns on all the lights

If I had a Personal Automation that switched the default decks at certain hours of the day, I would just tap my phone on the tag, and it would do the correct action without me having to fiddle with settings or modify each shortcut to do checks for dates and times.


Differentiating Cards: Text Editing Deck Example

Now, when the app turned into MFC Deck, the concept of tags became less important. I still need a way to differentiate between cards in a deck, especially if they have the same action (but with different input). Consider my Text Editing deck example:

  • Card 1 -> Run Text Editing shortcut with input “Capitalize”
  • Card 2 -> Run Text Editing shortcut with input “UPPERCASE”
  • Card 3 -> Run Text Editing shortcut with input “lowercase”

When choosing one of these cards to display as a widget or in a custom action, I need a way to differentiate between these three cards. Unless I assign the card a custom title (optional attribute), I differentiate them by their tag name:

  • Text Editing (Card 1)
  • Text Editing (Card 2)
  • Text Editing (Card 3)

If you assigned a custom title, it would look like this:

  • Capitalize (Card 1)
  • UPPERCASE (Card 2)
  • lowercase (Card 3)

In effect, a tag is being used as a unique identifier for a card within a deck.


Passthrough and Default Decks

But, as I’ve pointed out in my NFC tag example, a tag can also be shared across multiple decks. This is useful when you tap on an NFC tag but are currently in a deck that doesn’t have a card with that tag. The concept of Passthrough and the Default Deck allows a card to be run even that card is not in the currently active deck. Consider this example:

  • Run card assigned the B1 tag.
  • MFC Deck looks at the currently active deck and sees there’s no card defined.
  • MFC Deck inspects the Default Deck and sees a card with that tag.
  • MFC Deck runs that card in the Default Deck.

Without this ability to assign a tag to a card, I would be unable to trigger an action from an NFC tag unless I was in the right deck.


Can you give me a concrete example of how tags have been confusing you? Is it when creating a card? Is it when trying to add multiple cards to a deck? Is it when using the custom actions in Shortcuts?

I do want to make the app easy to use for the user, and I realize that having three concepts to juggle: Decks, Cards, and Tags, is a whole lot more difficult to remember than just Decks and Cards. I would appreciate any suggestions on how to, as you say, de-prioritize tags in the UX, without getting rid of them entirely.

Thanks for reading. I know it is a lot to take in!

2 Likes

Adam, thanks for the detailed replies!

I think you face an interesting set of circumstances with this complex and powerful app. It seems like you set out to build an app to support a rich NFC-tag-based workflow, and along the way added some cool Widget stuff — and then iOS 14 came along with its Widgets support, and created a pretty amazing opportunity for that once-secondary aspect of your app to shine.

Speaking only for myself, I don’t see myself creating physical grids of NFC tags. As a Shortcuts power user, I went through my NFC phase, and like most people I settled into a system of using a few of them regularly, but I have not found that they have revolutionized my life. What little I want to do with NFC tags is amply handled by Shortcuts. For example, I actually do have a tag near my office door that can tun on and off lights. The Shortcut it runs knows whether to tun them on or off based on the time of day.

I wonder if I won’t be alone in being significantly more interested in “Widgetizing my Shortcuts,” as you adeptly put it, than in creating physical grids of NFC tags.

With that said, thanks again for the detailed description of tags. As I suspected, the reason they feel like unnecessary additional administration to me is that they seem to exist solely to support the part of the app I’m not that interested in.

One big stumbling block I faced was when using the New Action Card button from the Action Sheet. It won’t let me complete the task of creating a card until I assign a tag, but there’s no way to create a new tag from this workflow, so I just got stuck. Eventually I re-used another tag, not having any idea what kind of conflicts or messiness I was creating.

Then I discovered that pressing the + button instead of using the Action Sheet created a Card with a tag automatically generated for it, so now that’s all I use to create Cards, and the Action Sheet has not been useful to me.

When you have two prominent ways to do something important in your app, and they behave slightly differently, it created a cognitive burden on your user to remember how both buttons work, and why you might want to use one or the other.

If the NFC aspect of the app is important to you, and tags are essential to it, then I can certainly see why you’d want to keep them around. But I’d suggest making tags feel optional, even if, under the hood, they are essential.

I might suggest moving the tag field farther down in the Edit Card sheet, and reducing its visual prominence.

I would definitely suggest always automatically creating a tag whenever a Card is created, no matter the method.

I’d suggest having any method of creating a single Card open the Edit Card sheet. I’ve never created a Card and not immediately wanted to edit it.

I might also consider re-thinking the Action Sheet. Right now it requires the user to know the difference between a “Quick Card,” a “Blank Card,” and an “Action Card” — distinctions I’m still not sure I understand after quite a bit of playing with the app.

I imagine the Action Sheet is a nice, easily expandable place for you to add cool functionality, but right now it just feels like an alternative plus button. This contributes to my feeling that using MFC Deck is complex and daunting.

I hope that helps! I appreciate the invitation to offer suggestions, but I also hope that I’ve done a good job of describing what I’m ultimately excited about doing with your amazing app.

-Stu

Yes, thanks for this. I suspected I’d probably have to do a bit more on the server side to live my dream of having Widgets on my phone reporting the status of my renders.

I did wonder though, would there be any way for the MFC Deck app itself, running in the background, automatically run some kind of a shortcut on some periodic basis? Like the Autocuts Shortcut? So MFC Deck itself would be keeping my Widgets current, in the as-if-I-tapped-them-manually sense where the corresponding Shortcuts actually run?

-Stu

Third-party apps can’t run shortcuts like iOS can without opening the Shortcuts app. I submitted a Feedback Assistant with Apple to add that… maybe in iOS 15! So, for now, you’ll have to create some kind of Personal Automation to run your cards in an automated fashion using the MFC Deck Autocuts shortcut.

I haven’t tested this, but a user on Reddit adapted Autocuts to run automatically in the background using the DND trick. You may want to check it out and see if this is something that could be repurposed with MFC Deck: https://www.reddit.com/r/shortcuts/comments/hsa0lf/bringing_real_automation/

All good points. I’ve begun work on re-working tags with the following changes:

  • New Card action does not require you to specify the tag. If you leave the Tag field blank, it auto-assigns a tag to the new card.
  • Actions that ask for cards now show either: (1) the computed name of the card or (2) the tag name. Where the computed name of the card is either (1) the optional title you give a card, the shortcut to run, the deck to switch to, or the URL to open + the name of the tag (i.e. MyShortcut (Deck-1))
  • When using a Text action to supply the name of a card, you can enter either (1) the custom title of the card, the computed name, or the name of the tag. Note that this can result in multiple matches if you have multiple cards with the same (1) or (2). Right now, MFC Deck will choose the first one.

I’m not entirely happy with the Action Sheet, so I think I’m going to be re-working that for the final release. I hear you about the different actions – Quick Card, New Blank Card, New Action Card, Add Existing Tags – being confusing.

One benefit to tapping the + button and NOT having the edit sheet appear is that you can create multiple buttons at a time. This is especially useful on iPad, where you can drag and drop shortcuts and decks onto a blank button to quickly assign its action. Maybe there can be an option to switch between this approach and what you are looking for.

Yes, that’s kind of what I was thinking — maybe if you create a single Card, you jump right into Edit. But if you create multiple Cards you don’t.

Thanks for being open to feedback!

Check out the latest build. You will want to join the correct TestFlight since I have split the programs into an iOS 13 and 14 ones. See my post about this in this forum for detailed change notes.

1 Like

Got it, thank you! Gets better with each build!