I do a lot of teaching.
In my day job, I fly around and teach institutions and their coders how to build big, complex software systems that not only don’t fail, but actually work. This outcome is more rare in Big Data than you might think. Anyway, the point is that what I am doing here is in many ways an extension of what I already do all day, every day… and I guess if I’m honest, every night in my dreams.
But here we’re operating with a few extra constraints. As I type I’m sitting in an IHOP in eastern California, waiting for what is not likely to be a very delicious omelette. I have in front of me my entire after-hours traveling toolbox, which consists of one 9.5-inch iPad Pro. That’s it.
It isn’t that I don’t own a laptop. I just spend all day every frigging day on it, and I don’t want to use it at night, too. Plus I communicate with a lot of diagrams, and I can just see myself sweating away for an hour tweaking a diagram in Visio to make a point I could make on a whiteboard in fifteen seconds. No thanks.
So here’s lesson zero for today: constraints are your friends. Think about that whiteboard again… if it had a bunch of formatting controls, how long would it take you to make a fifteen-second point? That isn’t how we’re going to work here.
Now, probably very much like you, I have about a gazillion drawing apps on my iPad. And I hate every single one of them. Why? Because they’re even more of a pain in the ass to use than Visio. I mean, I have an Apple Pencil. But I figure if I have to use it, I’m probably doing something wrong.
Back to the whiteboard. What do we draw on whiteboards? For me, the answer is mostly boxes and arrows. Sometimes the boxes are ovals. Sometimes the arrows have no heads, or crow’s feet. Usually there is text. Occasionally I’ll draw a really big box to group a set of boxes. But in the end, 95% of the shit I draw on a whiteboard is some incarnation of what we math geeks like to call a graph.
So once you start thinking graphs instead of generalized diagrams, things open up a bit. There are a couple of open-source toolboxes out there dedicated to doing useful stuff with graphs, including laying them out, which beats the hell out of tweaking layouts by hand in Visio or one of her infernal sisters. One of the more popular such packages is called Graphviz, and it is sweet! It’s been ported to every programming language you can think of, and there are desktop apps for every OS that support it. Groovy.
Trouble is, I’m not programming, I’m not working on a desktop, and I’m not processing and analyzing graphs with thousands or millions of nodes. I’m working on an iPad, and I just want an app that will let me draw networks of boxes and arrows, lay them out intelligibly, and otherwise stay the hell out of my way.
Which narrows the field down to… one.
Instaviz might not be the only Graphviz implementation in the App Store, but it is hands-down the only one that is worth a shit. At that it is deeply flawed… there are a few very basic things it should let you do that it doesn’t, and updates only show up about once every thirty years when the author emerges briefly from whatever mental hospital or debtor’s prison or parallel universe he seems to spend most of his time hiding in.
But the things that Instaviz does do are… well, it’s close enough to perfect that I use it despite its flaws. So that’s the big constraint here: when I have to communicate stuff visually, I’m going to use Instaviz.
For the record, here’s an example of the kind of thing Instaviz can do:
The key is that the layout is automatic… the diagram flows around and rejiggers itself every time you add a node or a connection. You still have to format objects, which can be a giant pain in the ass, and there is always some non-trivial possibility that you will lose and have to redo 20 minutes of work, like I just did. But even so it beats every alternative I’m aware of like a sweatshop full of red-headed stepchildren. So that’s useful.
Also the omelette was marginally better than expected. Winning!