Filling in the gaps for a Unix guy.
I am not an old-school Unix guy — but I was raised by one. I knew
ls long before I knew
dir (or the Apple IIe
directory), and understood user accounts and
chmod and privileges before I ever saw a GUI.
But after my departure for college, I finally got a computer to call my own — and because the Atari ST was on its way out, I chose an Apple, the Mac IIsi (and here I really am dating myself). It was expensive, but it did everything I needed for classes, plus a few games on the side. And for command line stuff, our school offered hardwire connections (physical serial cables! to our dorms! at 9600 baud!) back to the Solaris machines which served our email.
I’ve been a “Mac guy” since then, and the best thing that happened in all that was OS X — because suddenly my Mac was *nix based, had a command line equivalent for everything, and was the best of both worlds.
Enter the challenger: iOS
But years go by like so many summer fields; I bought an iPhone about nine years ago, and then I got an iPad Mini as a gift, and I came to love iOS. Or at least, like much of it. Despite this, I relied on a succession of trusty Mac laptops to provide the core of my experience — my go-to place for writing, developing, 3d modeling, even gaming.
This year’s holiday gift was a 10.5" iPad Pro, complete with keyboard case and pencil. It wasn’t a small gift, but with my MacBook Pro getting long in the tooth, the new generation didn’t draw me in at all. The new color was nice, but that was about it: the TouchBar was a flailing attempt at something new, and I feared it would go as unused as the Force Pressure trackpad had. (I know literally one app that uses it: Safari.) TouchID on my laptop wasn’t something I needed, not with the good keyboard right there for entering passwords. And speaking of keyboards: the new MB(P) keyboards have been widely reviled, and let me add to that chorus. I like having some key throw; it prevents repetitive injuries in my fingertips and hands. Despite years of trying, I can’t train myself out of expecting a good 1–2mm of ‘throw’, and bottom out when I’m on other keyboards. Couple that with the abominable flimsiness of the new keyboard and…well, it sure wasn’t worth $1300.
So I bought an iPad Pro, to see what I could do on it. The short answer is, not quite everything, and some things are annoying — but iOS 11 really is a game-changer, with smooth and easy-to-use drag-n-drop, and the larger screen (compared to my Mini) makes two-app usage (I refuse to call it Multitasking) plausible, if not fluent.
I do a lot of things on my laptop, but this essay is going to focus on one of the primary ones: writing. I write fiction, with three published books and a fourth and fifth on their way; this is done in Scrivener for assembling longer works, and for the bulk of my writing, vim backed by a git repo. I also write non-fiction, either on Medium or elsewhere; and I write blog posts in various web-based places.
First Stop: Hardware
I bought the iPad knowing I’d be using it for writing, and so I got it with an external keyboard. For my iPad Mini, I snagged a used Logitech Ultrathin Keyboard Cover, something that they don’t make any more, and it worked ‘fine’; my fingers are just narrow enough that I could type without miskeying, and it had a Control key, so the lack of an Escape key was bearable. (Ctrl-[ is another way to type Escape, in case you didn’t grow up on VT100 terminals). The pair together was slim enough to slip in my pocket, on some pants, and I could have a writing environment ‘anywhere’.
I knew I wasn’t going to find something that slim for the big 10.5" iPad — plus, I was buying a Pencil, too, so I wanted a case to hold it all together. After typing on the Logitech for a while, I instead settled on the Zagg Rugged Messenger, a two-piece affair with an iPad protector that holds the Pencil, and flip-open keyboard/cover that folds to let you view the screen at a variety of angles.
The keyboard’s actually quite nice for a slim non-mechanical; the keys are a little clunky, as in, they go ‘clunk’, but this makes them feel a bit like slightly mushy clicky-keys on a mech keyboard. There are no function keys; instead the row is used for functional keys, including the crucial “Home” and “App Switcher” keys, a dedicated key for switching keyboard types, an incredibly useful key for telling iOS to show the onscreen keyboard (sorely lacking on my Mini!), etc. The keyboard supports two different Bluetooth connections, which mostly serves to get in my way when I press B2 instead of “Home”, but it’s nice to know.
It has both tilde/quote and backslash/pipe, which are two keys that often get dropped on small keyboards; dual Cmd and Option keys, but only one Control (I’d really prefer two Ctrls instead); and of course, no Escape key. This will be important later.
And for fun it’s got color-switchable backlighting. Are you feeling Teal today? You know you are!
Workflow 1: Writing for the web
For blogging and whatnot, there’s usually a web interface that works “jes’ fine”. Most of the time I “actually” write in a separate text editor, often ByWord (which supports Markdown and Dropbox syncing), and then cut/paste into the web, to avoid losing text when a web page decides to bail on me.
Medium has an app, which almost works, except that it doesn’t really support the external keyboard well (e.g., Cmd-I doesn’t make text italic), and it seems to have forgotten some important features like `code view` and control over picture location. Hopefully they’ll fix this soon.
Workflow 2: Scrivener.
Scrivener is a wonderful application that I used heavily on MacOS, and this past year it got an iOS port after many years in beta. (And, knowing one of the beta testers, that was a very long tease.) The iOS version is comparable, but missing a few key features I enjoy (notably, I can’t find “Scrivenings” mode, which lets you edit a bunch of snippets all at once). It’s sufficient for writing, however, and retains its primary utility at helping you maintain a zoomed-out look at the structure of your story.
Scrivener on iOS also added Dropbox syncing, which is great — it helps me work on the same story in two different places. The problem is that it always seems to lead to conflicts. Conflicts when merging writing gives me heartburn; there’s the fear that you’ll lose work, or that sentences will be merged into a mangled mess. Dropbox doesn’t really have a ‘merge’ tool, and neither does Scrivener: instead, it keeps all the conflicted versions, and you have to manually open them up and try to figure out what changed. The single-window nature of iOS makes this even harder, and in practice I’ve settled on just eyeballing one of the versions and using that. This is not good at all.
Workflow 3: vim + git
But the bulk of my writing has always been done in vim, at the command line.
I know what you’re thinking: vim? Really? Isn’t that the editor that people get stuck in? “All I know is :q!” and all that.
But — vim, and its evil twin emacs, remain the most productive editors for people who want to spend a year learning how to make them productive. Both include unlimited scripting potential, with a different orientation toward that, and once you’ve invested the time, both let you be tremendously productive. With vim, instead of banging arrow keys all day, you can ?search to where you want to adjust, add custom syntax highlighting, invent new commands on the fly, use regex for search/replace — all of that.
On top of that, all of my writing ends up in a git repository. Git? Really? Isn’t that that hazing ritual that programmers inflict on each other? Well, yes, it is, and I use about 10% of the power of git — but for that, it’s invaluable.
See, my mission statement was “anywhere I have a command line, I should be able to write”. The harder it is to sit down to write, the less likely you are to actually do it. But this meant writing when away from my machine, and/or away from network, and that meant many different versions that needed reconciling. Additionally, sometimes you want to go back in time and bring back a piece of writing you rewrote: hence, versioning.
Ten years ago, I settled on git; now I have a tracked history of all my changes, which has occasionally proved useful, and I have the ability to write ‘anywhere’ and feel confident about merging in those changes later.
The solution: iVim + Working Copy (so far)
Three years ago, this just couldn’t be done from iOS; the best you could do was install an SSH client (I use Termius, or Cathode when I’m feeling funky) and get back to someone else’s command line.
But some developers have taken it on themselves to improve this. Recently, due to a link in MacStories, I found Working Copy, a full-fledged git-baed environment. WC lets you (after purchase) connect to a remote repository, pull changes, see diffs, edit locally, and commit and push the result back. Awesome! It’s even got an in-app editor that works fine, with syntax highlighting for code and visual diffs for when you’re resolving conflicts.
At the same time, I found iVim. While there have been other ports of vim to iOS in the past, this one is under active development, and trying very hard to integrate with other iOS apps. Notably, with the addition of Files to iOS 11, iVim is able to communicate with other apps in a relatively natural fashion — via the ‘Share’ panel.
In combination the two are almost want I want. WC lets you select a file and “Open in iVim”, which is great, except that it only shares that file and not the whole directory; this means, for example, custom dictionaries that live beside the file aren’t found. And iVim loses state when you exit — I have some vim commands at the start of each story that set it up the way that story wants, like customing highlighting, spacing, and dictionaries — so I have to re-run that chunk each time. Little stuff, annoying. And of course, the external keyboard doesn’t have an Escape key — but iVim lets me use Caps Lock as Esc, and some day my fingers will learn that.
So we’re most of the way there. Grade: B+
Workflow 4: Writing for work
The last type of writing I do is for work. This is almost exclusively done using Microsoft products, usually Word, but often OneNote and sometimes Powerpoint.
All of these apps have iOS releases, and they uniformly work…amazingly well! While each has its quirks (notably OneNote; the MacOS and iOS versions seem to have been written by a different team than the Windows version), they are completely usable. With M$’s network integration, either via Sharepoint or the newer OneDrive, file syncing is quite good, though not 100% seamless. Conflicts are handled by keeping both versions, and with Word’s built-in diff tool, it’s even possible to feel relatively confident that you kept the right set of changes.
For now, it seems, iOS is a perfectly acceptable substitute for a laptop; but it still feels like a substitute. I miss a larger screen, especially when editing-for-flow. A bunch of stuff can be done, but it’s a dancing bear — it’s not so much that the bear dances well, it’s just astonishing that the bear dances at all.
And this hasn’t gotten to more end-to-end workflows, like printing, multi-screen revising, or the big bugbear: prepping a novel for publishing as a paper book.
We’ll see what the new year brings.