How I Write, Updated

It’s been about a year since I posted How I Write, and my workflow has changed a bit. Some of the changes have been due to external forces, others are simply due to writing more often. I’ve posted over 130 entries in the last year, and while that’s not prolific by some standards, it was more than sufficient to make every rough spot apparent.

Tagging

Since I don’t use dedicated blogging software, I do everything through the Finder. I use tags in the content of text files to provide hooks for sorting, searching, and categorizing. Implemented this way, tags are bombproof; unless the file is corrupted to the point where it’s inaccessible, you can read the tags. It also makes it easy for Spotlight to find something even if you haven’t used OpenMeta tags or the new Mavericks tagging implementation. While I don’t use Windows at all, this would also have the benefit of working cross-platform.

I have made heavy use of Spotlight comments in the past, and later OpenMeta tags. It’s immensely easier to find information if I can type something like “kind:bookmark bone density” into Spotlight, or use a tag browser to home in on what I’m looking for than it would be to browse through dozens or hundreds of nested folders to find all of the files in various formats (bookmarks, PDFs, etc.) that I’ve saved on a subject.

Hazel

I use Hazel to move and sort files based on simple rules. When I publish a blog entry, for example, I enter a “published” tag at the bottom of the text file, Hazel grabs it from my Notes folder and files it under Blog > Published, and then further auto-organizes by year and month subfolders. This provides a very simple but robust organization as a backup to search. As I wrote about several years ago I’ve long since stopped spending a lot of time organizing my files, and instead rely almost exclusively on search.

Hazel is a way to automate the minimal remaining organizational structure I do want to implement. It works with OpenMeta or Mavericks metadata tags too, in addition to (or instead of) file contents. Like I said in that earlier piece, handling tedious repetitive tasks is what computers are meant to do. Hazel is the best tool I’ve found to date for automating filing and hierarchical systems, with minimal attention after setup.

Drafts

At first, I resisted using Drafts because it seemed too fiddly. When Merlin Mann talked about it on an episode of Back to Work and again on Mac Power Users. He introduced some interactions that sounded interesting, but possibly more trouble than they were worth. I installed Drafts just to check it out, but barely touched it for months afterward.

Two things made me switch to using Drafts almost exclusively. I started using TextExpander, both on my iPhone and on OS X. Simplenote relaunched their app in September 2013, and made some significant changes, one of which was suddenly eliminating support for TextExpander. I liked the cosmetic changes in Simplenote quite a bit. The Simperium syncing backend seemed to have been improved as well but — primarily because of the lack of TextExpander integration — I decided to take another look at alternatives.

Notesy was one possibility. I had already been using it in parallel with Simplenote for Markdown previews and was experimenting with using it for longer writing. One of the things I like about it is having feedback as to which files have been synced to Dropbox. While Simperium’s syncing generally just worked, there had been a few hiccups (detailed in last-year’s post) that made me leery of trusting it too much. There’s also no feedback; you either see the changes, or you don’t, and there’s no progress indication of any kind.

One thing I don’t like about Notesy is the need to generate a title before you can do anything else. Simplenote just grabs the first line of a note to use as the title, which fits very well with how I want to interact with a note-taking app. Notesy has that slight friction and interruption of my thoughts that made me take another look at Drafts.

Drafts, like Simplenote, uses the first line of a note as the file name. It launches in roughly half the time of Notesy, a couple of seconds faster than even Simplenote, and auto-creates a new note on launch. Both of the other apps require an interaction to create a new note. This is not necessarily a bad thing. Notesy and Simplenote have to balance note reading with note writing because they are general-use note-taking apps. Drafts is more streamlined because it is narrowly focused on capturing and processing text.

Of course Drafts supports TextExpander. When Apple brought down the boom on the slightly hacky way Smile had leveraged Reminders to make snippets available in iOS, Drafts was one of the first note-taking apps to update its integration, and in fact the developer has been consistently aggressive in updating and developing Drafts. Notesy took until 2.5.2, released just a few days ago, to restore TextExpander support. Notesy is still a great app, but development has slowed significantly.

(My fallback if Notesy stops working well is Byword, but Byword is more suited to longer-form writing and final drafts than note-taking. It is beautifully designed and well-suited to writing in Markdown, however. The way it deemphasizes the markup characters, which lets you focus more on your words, is especially nice. It also has continuing support for TextExpander.)

Besides TextExpander support, launch speed, and frictionless note creation, Drafts lets you perform a metric assload of actions with your text. This is what Merlin Mann was talking about, and why I initially thought it would have a huge learning curve. You can go way down the rabbit hole if you want to, but I use just a few regularly.

Anything you enter into a Draft can be sent to a number of other applications and/or manipulated. Notes I write in Drafts get sent to Notesy, if I’m going to be writing in Markdown, or Simplenote if it’s just a memo or thought. Drafts auto-generates a title for Notesy based on the first line of the note, which eliminates that friction.

The single action that I use the most often, besides sending a note to another app, is a modified “Prepend to Dropbox” action that I use for capturing links. I copy the URL, open Drafts, use a TextExpander snippet to paste it and wrap it with Markdown link formatting, type in a description of what the link is, and trigger the action. I based the action on the included Drafts action, and modified it to include a timestamp and divider so that when I view my Links file in a Markdown preview, I see a nice list of timestamped headings, tappable links with meaningful titles, whatever notes I made, and a divider line between entries.

TextExpander

My use of TextExpander has gradually expanded (no pun intended) over time. I’ve started using it for code snippets as well as tagging. The good and bad thing about using a macro program is that you quickly become dependent on it. While most of the things I use TextExpander for are short (like expanding “TE” into “TextExpander”) not having it available causes constant minor irritation since I have to peck out tags and other content in long form instead of using one of my short triggers. Lack of support of TextExpander in an iOS note-taking app has become a deal breaker for me.

Markdown

I use Markdown as the starting point for nearly everything I write now, including most of my work documents. I export to RTF or other formats as needed, usually using the newest version of Marked. If I have to lay out a document with more control, I copy text into Pages and do the formatting there, but notes and draft text start in nvALT. I could technically use CSS to do layout and formatting, but I haven’t learned enough CSS yet to do all of the things I want.

You can use HTML alongside Markdown. Gruber writes for the web almost exclusively, and so reserves underlines in his mind for links. He has no markup for underlines in Markdown. For work printed on dead tree carcasses, it’s occasionally necessary to use underlining, so I added a TextExpander snippet for underline formatting. I also started adding HTML comment blocks to hide tags in preview mode, which makes me contemplate switching my tag delimiter character back to # from @. Hashtags are used as one of the two methods of marking up header text in Markdown, which is why I switched characters initially.

Squarespace

This blog is hosted on Squarespace. On the whole, I like it better than my previous WordPress one, but there are some aggravations:

Poor Content Management

If I want to link to a past entry, I often do a site search instead of going through the content manager, but that doesn’t work for edits. In the posts view on Squarespace, you can only see 10 entries at a time. It takes forever to find a past article and update or change it. This is one place where WordPress’s uglier and clunkier interface is actually superior for most use cases.

No Offline Mode or Editor API

There is no integration with MarsEdit or other blogging software in Squarespace 6. When I started writing more, I realized the limitations and frustrations of having to do everything through a web interface, and started looking at editors. Squarespace 5 used to support MarsEdit and other offline editors through an API. Support for that API doesn’t appear to be secure even in Squarespace 5.

Squarespace’s editing interface is generally well-designed and stable, but not ideal. The current post editor doesn’t make links or formatting stand out well; it’s a lighter gray than the gray body text, which doesn’t provide nearly enough contrast to distinguish links from other content. Image blocks work better than they used to, though. It used to be more difficult to lay out a page with images smaller than full page-width in the older version, and you couldn’t do it in the editor view at all before.

Limited Markdown Support

Markdown is supported, but it’s plain standard Markdown. Features like footnotes, made possible and easy in MultiMarkdown, aren’t supported. Neither is SmartyPants. I’ve fallen back to copying the HTML source from nvALT’s preview instead of pasting Markdown text because I want proper typographical marks, and I’ve often found a need for footnotes as well.

Some Simple Things Are Difficult

This is probably more reflective of my shortcomings as a coder than of Squarespace itself, but two features that I would like to implement are pop-up footnotes, like those on Marco Arment’s site or Lukas Mathis’. Mathis also has details on his implementation method, but I haven’t been able to get it working on Squarespace. I’ve used a Safari plugin called Footnotify for years that presents footnotes in-place. I think it’s the way footnotes should be done, and since I’m an opinionated bastard, I want to do it right on my site. [Update 2014–03–19: I’ve since been able to get this working due to a post by Sid O’Neill. Many thanks, Sid!]

The other feature I would like to is to provide a permalink next to the post headline. Right now, I’ve got a permalink code block working in the post footer, but I’ve found no way to inject the necessary code to place it immediately after the heading link. This style is nearly universal for linklist-type posts on blogs, and I wonder why it’s not a standard option.

Finally (!)

I write these posts about my workflow to share some of the things I’ve found either useful or difficult. When I run into a problem, or want to know how to better utilize a new tool, I’ve found material like this very helpful.

When I was running into syncing problems in Simplenote, I found the lengthy posts of Michael Schechter and Shawn Blanc to be helpful for tweaks to my revised setup, and their thoughts provided reinforcement for my decisions. If like-minded borderline-obsessives agreed substantially with my assessments, then I must be doing something right.

Dr. Drang is about 1.22x109 times geekier than I am, so I can’t use everything I read in his posts, but they make interesting and informative reading. Brett Terpstra is similarly geekily useful. Because of his writing on tagging, I explored using Tags and Default Folder X again, both of which I had played with but not fully appreciated earlier. Yuvi Zalkow put together a video on Scrivener that, last year, helped me get a handle on more of the advanced features of Scrivener.

Some people find fellow paraphiliacs and enablers online. I’ve found other people who share my enthusiasm for finding the best, most efficient, and elegant ways of doing things, and who want to write about it. Hopefully something in this post has helped you in some way.