Messing Around With Workflow

Recently I've been tinkering a bit with the iOS Workflow app. It's a surprisingly useful little tool that lets you create small programs to tie together various apps on your phone. Based around a graphical programming interface, Workflow gives you a basic ability to integrate the apps on your phone to build new features and really customize iOS for your own needs.

I've mostly been using it for quantified self tracking—mainly tracking the routes I climb, how well I sleep, and the food I eat—but there are lots of other use cases. Business automation is a major segment for these kinds of applications, particularly inasmuch as they allow you to connect your business support applications together to form a system. Some folks use Workflow to create templates for their task managers. Others use it to automate posts to social media. Still others use it to search the app store and grab icons for reviews. If you have a small feature that you need for a specific use case, you might be interested in Workflow.

Of the ways to program on a mobile device, graphical drag-and-drop seems to be a clear winner. Workflow uses visual blocks of program logic that you can move around with your finger to assemble your program. This has upsides and downsides, of course: while it's easy to learn the basics, doing anything complicated quickly becomes a chore. Dragging blocks of syntax around without the ability to copy and paste, do multiple select, or comment out entire blocks makes my normal (more experiment-driven) program development methods very tedious.

Add on to that the lack of any kind of type assertion, poor control of looping constructs, and difficult-to-maintain "magic variables" which are still better than explicit variables and you immediately impose constraints on the size of programs written in Workflow. It's too bad that this is the case, because Workflow is actually a very useful app with lots of integrations with both system applications (Calendar, Health) and 3rd party apps (OmniFocus, IFTTT, Pythonista). If you haven't checked it out yet, you definitely should—it'll grow on you.