Recently I've been getting more and more use out of Workflow on my phone. As a programmer I get a lot of value out of any kind of system that lets me automate common tasks, and for my phone Workflow fits the bill. Despite the somewhat clunky drag-and-drop UI, it's still capable enough to help me take some of the irksomeness out of things like recording quantified self metrics.

In particular, I've been using it recently to keep track of my weight lifting and rock climbing results. These workflows streamline the note-taking process to the point where entering a lift or climb only takes a few taps - a huge time saver for me.

A lot has been written about Workflow in general, so I'll just touch on a few key points that have colored my experience.

Firstly, the system is severely hampered by iOS's lack of good inter-app communication, and relies heavily on URL schemes to pass data back and forth. In general this works well enough, but it does make it quite slow to execute workflows that involve lots of app switching. It also limits the applications you can automate to just those few that have implemented URL schemes. Even basic tasks such as launching an app can't be performed without them, so the set of applications that can be scripted is pretty small. Perhaps with Apple acquiring Workflow we'll see a more performant, broadly-supported solution in the future.

Workflow doesn't provide any kind of versioning of the programs you create, so the best way to experiment is unfortunately to copy an existing workflow and modify it. Coming from a more traditional software background, this seems like a big oversight to me. In addition, there's not an easy way to create "library" workflows that you can reuse, making it difficult to share functionality between programs.

While the app does provide an Apple Watch complication, it's not very good - tapping any of the workflows presented attempts to run it immediately. Time traveling using the digital crown scrolls through the list of workflows, but often it seems to me that the selection jitters unexpectedly leaving me confused about which workflow I just triggered. If the workflow has side effects (like most good ones do) then this might cause something unwanted to happen. One possible workaround would be to turn off all of the workflows and just use the complication to launch the watch app. However, if you disable the "show in complication" option for all of your workflows, then any time you open the app it will present you with a menu asking you to re-enable them! It's quite irritating. My solution was to create a no-op workflow that just does nothing and drops you back in the Workflow watch app; this is the only one I have enabled on the complication now.

In the future, I would like to see more options for automatically triggering workflows in response to time, location, or context events. Launch Center Pro provides Workflow integration to a degree, allowing you to schedule notifications that will trigger workflows; however, it's very basic and easy to break by changing the workflow name. This really feels like something that should be solved within Workflow itself.

Overall the app and the workflows you can make with it are useful enough to justify putting a little time in, here and there, to programming it. I do wish that it were more capable and a bit more streamlined - enabling larger and more powerful programs - but for now I'm just glad to have something that can help me stay healthy.