As we finished packing up the warehouse this weekend for the upcoming – unplanned move of my non-profit, my thought turned to how I can upgrade Wasted Time for this summer. Obviously, the key item to add to the app is support for Siri Shortcuts. While I could do this via NSUserActivities, I thought that is a stop gap approach and I should focus on supporting the more forward looking API called Siri Intents. This focus would also allow me to build my own custom Intents.
I have created six intents:
- Start a meeting with XX attendees. (This would actually address one of the big short comings of the application to date, quickly adding a bunch of attendees to a meeting and starting it)
- Add an attendee.
- Remove an attendee.
- Quorum Reached.
- End a Meeting.
- Reset Meeting.
These intents pretty much address all of the major functions, excluding the Tweet function. I did not want to add a rest history option, as this is more appropriately done within the app itself.
Creating the Siri Intents and donating them to Siri for Siri short cuts was pretty trivial. I am trying to decide if Add and Remove attendee make sense for donating, and I will probably remove that function, but for now I am learning.
The bigger issue is all the technical debt that has built up in the app over the last 7 years since it was first released. I built the app using the standard MVC technique and since the meeting started view is designed to handle all of it’s messages, it doesn’t really lend itself for deep linking. There is a lot of duplicate code, a big no-no in object oriented design, and the UI really does drive the logic flow.
I believe the best approach for refactoring the app would be to create a Meeting Object. This object would be able to be started, stopped, add and remove attendees, etc. The UI would just show the state of the object at any given time. This approach would allow me to reduce duplicate code, have a meeting “run” in the background purely from voice, and allow for deep linking so that you could jump to a meeting via Siri Shortcuts.
I am hoping that I can get enough time to pull this off this summer, while still working on my new app – Holiday Card Tracker.