Coleman McCormick

Archive of posts with tag 'Workflow'

Workflows in Fulcrum

August 25, 2020 • #

Fulcrum’s been the best tool out there for quite a few years for building your own apps and collecting data with mobile forms (we were doing low-code before it was cool). Our product focus for a long time was on making it as simple and as fast as possible to go from ideas to reality to get working on a data collection process. For any sort of work you would’ve previously done with a pen and paper, or a spreadsheet on a tablet, you can rapidly build and deploy a Fulcrum app to your team for things like inspections, audits, and inventory applications.

Workflows in Fulcrum

For the last 8 months or so we’ve been focused on improving what you can do with data after collection. We’re great at speed to build and collect, but had not been focused yet on the rest of a customer workflow. Since the beginning we’ve had an open API (even for SQL, what we call the Query API), code libraries, and other tools. In July we launched our Report Builder, which was a big step in the direction of self-service reporting and process improvement tools

This week we’ve just launched Workflows, which is all about providing users an extensible framework for adding their own business logic of events and actions that need to happen on your data.

If you’re familiar with tools like Zapier or Integromat, you’ll recognize the concept. Workflows is similar in design, but focused on events within the scope of Fulcrum. Here’s how it works:

A workflow listens for an event (a “trigger”) based on data coming through the system. Currently you can trigger on new data created or updated.

When a trigger happens, the relevant record data gets passed to the next step, a “filter” where you can set criteria to funnel it through. Like cases where I want to trigger on new data, but only where a “Status” = Critical.

Any record making it through is passed to an “action”, and at launch we have actions to:

  • Send an email
  • Send an SMS message
  • Send a webhook (man is this one powerful)

We’re excited to see what users build with this initial set of options. There are plans in the works for a lot of interesting things like custom SMTP (for high volume email needs), geofencing, push notifications, and much more.

This is just the beginning of what will become a pillar product. Our Workflow engine will continue to evolve with new actions, filters, and triggers over time as we extend it to be more flexible for designing your business data decision steps and data flows.

✦

Writing on the iPad

October 21, 2018 • #

I posted a couple weeks ago about moving much of my computing activity to the iPad full time. Part of what I had to crack to make that possible was a writing workflow that supported using the tools I prefer, and a method for publishing and previewing with Jekyll.

I’ve been using Jekyll and GitHub Pages for this site for 5+ years. Other CMS systems are interesting and getting better, but there’s something about the total control and simplicity of static sites that keeps me here. This workflow is great with a full Mac setup, but on iPad or mobile, there isn’t a straightforward way to write and publish new content. Most writers wouldn’t want to bother with this and would move to a CMS to clear the hurdles. Given that Jekyll today still requires a working knowledge of git and a command line interface, I recognize that this is highly personal to me, so I wouldn’t really recommend this setup to people focused on writing. But I sort of get a kick out of getting this stuff working and use it as a learning experience.

The main sticking point I needed to solve was previewing content. Jekyll has a built-in web server you can run locally (what happens when you run jekyll serve) on the terminal that generates and serves the site at localhost where you can preview before you publish. On the Mac this is simple: checkout repository, run command to generate site, browse to URL in browser. The first two hurdles aren’t trivial on the iPad. There’s no native unix-like shell on iOS, only terminal apps. This means you need to have a server to connect to to do anything.

My solution starts with running a micro EC2 instance on AWS. For about $10/month I have a full Ubuntu server running, on which I can install whatever I want1. Getting the site checked out and running locally on the server is fairly straightforward if you’ve got a working knowledge of Linux and comfort on the shell2. Next I had to figure out what software on the iPad I could use to combine the writing, versioning, and pushing up to the server for preview or testing purposes. Digging around on this topic I discovered a solution that’s working well so far: a combination of Working Copy and Textastic. The first is a full-featured git client you can use to clone repositories and manage versioning. The second is a rich code editor for iOS that is very impressive in its depth. Inside of Textastic you can add a Working Copy repo as a working directory, meaning your edits happen directly in the repo. With my iPad Pro, I put the Working Copy app in the right side multitask panel so I can manage branching, commits, and pushes while I’ve also got the editor open. In order to access the server and run the site in dev mode, Textastic also has a built-in SSH terminal.

Working Copy and Textastic

Getting through this initial setup was a bit cumbersome — getting the SSH keys sorted out between my main machine, GitHub permissions, and iOS was a bit of a runaround — but I’ve got it all working smoothly now. One other aspect is that I still do most draft writing and idea-keeping in Ulysses, which is my app of choice for any writing on iOS or macOS. So there’s a step to get the content moved over when ready to a real post in git. I’m good with this, though. I treat Ulysses sheets like idea scratchpads; so I’ll have dozens of partially-written post ideas collected there and little by little turn some into completed articles. Managing this collection of randomness makes for kind of a mess in a git repository, so it’s nice to have it organized elsewhere.

Overall this workflow allows me to stick with the tech stack I’ve gotten used to while affording the flexibility to write on the iPad or my phone. From a writing perspective I find the constraints a helpful aid in focusing on the writing and not getting distracted to mess with other things. I have a couple of other helper tricks I’ll write about later that make working with Jekyll easier. As I work with this flow some more, I’ll make sure to note any other tricks once the comfort of habit sets in.

  1. I also use this instance to try out other server tools I want to play around with — a Linux sandbox. â†©

  2. A good topic for a future post on common tools and techniques all computer users should know… â†©

✦

High Security, High Usability

October 4, 2018 • #

As computing platforms get more complex and critical to daily life, maintaining secure usage gets more challenging.

I’ve written about this before, but it’s a known mantra in the product and IT space that security and usability are inversely proportional. That is, a gain in one is a loss in the other. This has long been visible in enterprise software that is perceived as annoying or frictional in the pursuit of security (password rotation every n days, can’t reuse, complexity requirements). It’s what gives employees a bad taste in their mouth about enterprise systems, among other things. That reduction in usability begets bad behavior on the part of users — the proverbial Post-It note on the monitor with the last 3 passwords in clear text.

Those of us that make software never want to compromise on usability, but us realists recognize the need for secure data and privacy. There are exciting developments lately that might be closing this gap.

Password managers like 1Password already have done a lot to maintain secure computer usage behavior by simplifying the “secure defaults” — primarily not reusing passwords across services and enabling realistic use of longer, random strings. Two-factor authentication adds a wrinkle in usability that (unlike many other auth wrinkles) affords a powerful layer of security, albeit with a cost. The two-factor support within 1Password makes it shockingly smooth to deal with, though. So much so that I enable two-factor auth on any service that offers it, without hesitation.

What got me thinking about this topic again was a specific new addition to the personal security workflow. I just got an iPhone XS; it’s my first experience with Face ID (which deserves a healthy dose of praise in its own right). But the real breakthrough is the integration of 1Password into the built-in Password Autofill facility in iOS 12.

Here’s a before and after example of signing into GitHub on my phone:

Before: Go to GitHub, see that I’m signed out, switch to 1Password, copy password, return to GitHub, paste credentials, tap sign in, go back to 1Password, copy 2FA code, go back and paste it in, success.

After: Go to GitHub, tap “Passwords” in browser, Face ID, pick account, it autofills, paste 2FA code, success.

This seems like trivial stuff, but given how many seconds/minutes of each day I spend doing this process, it’s a big deal. Before, making this process smoother would require a dent in its security. Now we get to have a friction-free process without the compromise.

✦

Recent Links: Glue, Org Charts, and Patreon’s Growth

August 16, 2017 • #

⚗️ Amazon Announces AWS Glue

AWS Glue is a fully managed extract, transform, and load (ETL) service that makes it easy for customers to prepare and load their data for analytics. You simply point AWS Glue to your data stored on AWS, and AWS Glue discovers your data and stores the associated metadata

Interesting new service from AWS (is there a need in computing they don’t cover at this point?), providing serverless ETL transformations on datasets hosted anywhere. The automatic discovery is particularly interesting for applications dealing in highly variable data structures.

🏢 The Strategies and Tactics of Big

A conversation between Benedict Evans and Steven Sinofsky on big companies, their org charts, and what makes each (and their products) different.

đź’µ Inside Patreon

Patreon is still tiny compared to Kickstarter, where 13 million backers have funded 128,000 successful campaigns, but it’s rapidly growing. Half its patrons and creators joined in the past year, and it’s set to process $150 million in 2017, compared to $100 million total over the past three years.

This is a fascinating company, creating a funding mechanism for independent creators with a different model than the Kickstarter structure.

✦

Canvas podcast series on Workflow

November 30, 2016 • #

If you’re a podcast listener and an iOS user of productivity apps, you should subscribe to the Canvas podcast. Hosted by Federico Vittici (of MacStories) and Fraser Spiers, these guys know all there is about making the iPad into a tool for getting real work done.

They’ve been doing a series on Workflow, the powerful app for iOS task automation. I love this app and use it a ton for a few simple, yet repetitive everyday tasks from my phone.

Hopefully they continue the series with additional stuff on how they’re using Workflow to tie together processes for iPad-based work.

✦

Task Capture with Siri & OmniFocus

November 10, 2015 • #

I’ve talked before about the concept of “ubiquitous capture” and how achieving a system where you never lose an item is an ideal for a seamless GTD setup. No matter what task management tool you use of the hundreds of options, both automatic or analog, there are still moments when a fleeting piece of info we want to remember — either something new to do or an idea or breakthrough on an existing project task — slips through the cracks. The best system for managing all of your collective “stuff” is any that you trust to be the go-to place for all the things that require your attention.

In any GTD-esque system, the two core concepts are capture and review:

  1. Capture anything on your mind so it lives in a system, not in your head.
  2. Review your “inbox” on some repeated schedule to process things into the right place, grouping things by project, adding deadlines, or filing into contexts.

When I got started building my personal workflow, I found the biggest initial hurdle was a reliable mechanism for getting things into my inbox as quickly and readily as possible. I’ve tried notebooks, cards, text files, and most digital task apps to try and find a single tool that works, but there was always friction and things would get forgotten. My short term memory is horrendous, and most things needing to find their way into my inbox would occur to me while getting ready in the morning or while driving or biking to work.

Enter Siri

True ubiquitous capture is achieved by using whatever tools are most reliably available to you, and for me that’s OmniFocus and my iPhone. OmniFocus 2 for iOS added a built-in Reminders capture feature to pull things added to a specific list over into the OF inbox. Then using the “Siri, add this to my list…” command when dictating gives you hands-free, fast access to append items to the inbox. I say things like:

  • “Add assemble new furniture to my inbox list”
  • “Add get flu shot to my inbox list”
  • “Remind me to take out the trash when I get home” (using location-aware contexts in OF)

With Siri set up this way, I now have a wider funnel for capturing anything I’m thinking about anywhere I’ve got my phone. So even when I’m in the car or working in the garage and some random item pops into my head, I can make sure it doesn’t slip through. It’ll be there waiting in my inbox for the next review when I’m processing my workload.

✦

Dropbox and Backups

June 13, 2013 • #

I use Dropbox as the nerve center for all of my digital goods, keeping data, configurations, histories, log files, and anything else I need access to centralized and available from my Mac or iOS devices.

Here are a few of my daily tools or information trails I want to keep synced up, so anything here can be a few clicks or a search away:

  • Instant message chat history
  • iTunes library
  • Histories + log files
  • OmniFocus backups

Chat Archiving

I use Messages on the desktop for all chat conversations with my Jabber and Google accounts. I access the transcript history daily to find things I told people in chat conversations, look up links I sent, and other things. So much of my communication happens via instant messaging that I rely on it to keep logs of interactions (albeit securely).

Backing up chat transcripts is simple with symlinks. For me, I want all chat logs to be archived into a Dropbox directory continuously, so I don’t have to remember to back them up. Messages stores its transcript files here:

~/Library/Messages/Archive/

Since I want my chats to all be instantly backed up to Dropbox, I symlink the directory into a ~/Dropbox/backups directory, like this:

ln -s ~/Library/Messages/Archive ~/Dropbox/backups/chats/

Linking those files to a Dropbox directory will automatically sync them to your account in real time, if you have syncing enabled. These files are then backed up for good, in case I need to search later. A downside with Messages is the transcript files are .ichat files, not plain text. So they can’t be searched from the Dropbox iOS app or mobile text readers. The in-app search works okay, but hopefully we’ll see some performance improvement there in the upcoming OS X Mavericks release. This piece from Glenn Fleishman has some other good tips on instant messaging with Messages.

iTunes

My iTunes media is mostly secure at this point, with iTunes Match and iCloud, but I still like to keep a backup of the raw XML library data. This contains a ton of stuff I don’t want to lose, like playlists, ratings, and other metadata. ID3 tags and album art are safe with the MP3 files. A couple of symlinks make it so every time I close iTunes, the latest changes to my library get backed up. The .itl file is the primary iTunes database, and the XML file adds a software compatibility layer for other apps that read from your library (like Garage Band and others):

ln -s ~/Music/iTunes/iTunes\ Library.itl \
  ~/Dropbox/backups/iTunes/iTunes\ Library.itl

ln -s ~/Music/iTunes/iTunes\ Music\ Library.xml \
  ~/Dropbox/backups/iTunes/iTunes\ Music\ Library.xml

History + Logs

On a daily basis, I’m all over the place with my machine — working with data in Postgres or SQLite, writing Ruby scripts, and just generally working on the shell doing tons of different things. I love having my command history for anything that has a CLI archived somewhere, so when I need to pull up some command or see how I had built a package from source, it’s as simple as searching a history file. Many Linux & Mac applications keep themselves a history file inside your home directory, typically hidden, like .bash_history for the bash shell environment. I use zsh, with the awesome oh-my-zsh environment framework, highly recommended. Here’s a few I keep around for posterity and convenience, in a “histories” backup1 directory:

  • ~/.zsh_history
  • ~/.irb-history
  • ~/.psql_history

With those backed up, I can always search the logs for when I installed something with Homebrew:

history | grep "brew install mapnik"

As for OmniFocus, backups are cake. Just check the preferences for the database backup location and frequency settings, and change it to somewhere within your Dropbox folder.

In addition to the convenience of keeping this stuff linked into a secure, synced place like Dropbox, using an online backup service (like the fantastic Backblaze) is a no-brainer for keeping your stuff safe. You should be using one. Even though Time Machine is super simple to get going to an external HDD, I don’t trust the hardware enough to rely solely on that.

  1. Remember, history files can often contain passwords and other secure data. Make sure if you keep them around they’re somewhere secure. â†©

✦

Rediscovering GTD

February 6, 2013 • #

For the last month or so, I’ve been readopting the GTD methodology for organizing my work, personal and business. I read David Allen’s book back in 2007, and attempted to adopt the workflow. This was before having any sort of smart device, so workflow systems were much different back then. My system when I initially jumped in involved pens and pads, inboxes, folders — most of the recommended elements from the book. I didn’t last long, and since then I’ve only dabbled around really getting back into it. Merlin Mann and Dan Benjamin’s recent podcast series on the subject spurred me back into giving it another serious go.

Without getting into the weeds of the system, I’ve always seen three pillars to GTD that are critical to reaping benefit:

  • Ubiquitous capture
  • Breakdown your work into discrete, actionable tasks (processing)
  • Weekly review of projects and actions

There are more elements to the total system, but these are the core functional components of GTD that I’ve adopted, eschewing the parts about the 43 folders and some of the other fiddly things like labelmakers and lettered reference file cabinets. I think a contributor to my initial dropoff with the system was not appreciating that you can adopt only some elements of the total system, as long as you’re closing all the loops.

Here’s a snapshot of how I’m reintegrating GTD into my daily flow:

Capture

I’m a heavy user of OmniFocus for everything task-related. The notion of “ubiquitous capture” is the first step to getting the thoughts, ideas, and tasks out of your brain and into the flow. For me, ubiquity means it needs to enter the river of material to be processed either through my Mac or my iPhone, one of which I’ll have at fingertips at all times. I love the tangibility of pen and paper, but I’m not trustworthy enough to have that at all times. There are OmniFocus versions for Mac and iOS, so that gets that piece out of the way. Plus they stay in sync over the air. If something you need to do something about enters your mind, there needs to be a frictionless way for it to enter the pipeline.

Processing

This is probably what I struggle with the most. This is where the majority of the thinking comes into play; What project is this action part of? Should I just do it right now? How many smaller actions does it need to be broken into?

Effective processing requires regular attention. If you just load up the inbox for weeks on end without sorting through each item and determining the next action (which could be deleting it), you end up working through tasks right out of the inbox. I can sort through the cruft in my inbox with vigilance and a heavy delete-key finger, but where I tend to fall off the wagon is with keeping the processing frequent enough not to get behind. I’ll find myself after a few consecutive hectic days cherry-picking actions to tackle right in the inbox, instead of hitting things from a higher level based on project importance or context. This can lead to wheel-spinning and procrastination, and put you right back to thrashing around with all that data in your head.

This time around, I’m putting more energy into the processing steps. Failure there is a large part of why I fell out with GTD some time back.

Reviewing

The weekly review is processing’s older brother, meant to walk you through each of the projects on your plate, reorganize them, enter any missing actions, and just generally get a “control tower” snapshot of all the runways in front of you. OmniFocus has an awesome “review” mode designed to handhold you through looking at each and every project in your OmniFocus database one by one. With a full force inbox dump, plus effective processing, it’s insane how many projects end up in the system. A good, regular review is a healthy way to clear the decks and make way for the projects that you’re actually going to do. This is another area I’ve struggled with in the past, it’s one of the last steps in truly closing loops and making sure your task database isn’t filled with garbage to fight with.

The unspoken “fourth pillar” in all of this is, naturally, doing. Inboxes, apps, text files, and folders aren’t going to actually accomplish those next actions for you. Many blog posts out there neglect to mention this most-critical piece of the flow (it seems obvious, right?), but it’s important. Making sure that the actions are as mindlessly straightforward as possible in the processing phase is critical to making the actions so easy, you hardly have to think while you’re cranking. GTD mostly serves as a method to create order from chaos. My personal objective is to get comfortable enough to make the system second-nature. I don’t want to think while I’m doing, at least not very much.

Related links:

✦
✦