FoldingText is the Greatest Text Editor of All Time

I have been kicking various versions of this post around for months. FoldingText is an app that is very hard to put into words and I'll admit that not everyone will be seduced by its charms. All of the words I've written and deleted up to this point are just ways of saying the following:

FoldingText is the best plain text editor currently available for day-to-day use. It may be the most useful and creatively-innovative word entry application since Byword or Scrivener.

The application itself was made for nerds by a nerd. Jesse Grosjean has done a lot of work on text editing applications and implementing scripting and it shows. Others have written with more depth and include a lot of the facts of the matter, but I'm going to approach this, as I usually do, from the perspective of how I use the tool and why it fits so snugly into my wheelhouse for all of the things I need to do throughout a typical work day.

Some fancy indenting and roll-up functions on display.

Some fancy indenting and roll-up functions on display.


I think in outlines.

After having several conversations with Gabe Weatherhead from Macdrifter, I realized I wasn't alone in this. I've tried mindmaps and they have their place and I've tried using tools specifically designed for outlining (like OmniOutliner) but, in the end, using a plain text outline format always seems like the easiest alternative. This is coming from a guy who has spent many hours fiddling with OPML importing and exporting to various apps and device -- scripts in python, KeyboardMaestro, Applescript, etc.

Websites like Checkvist have come along (thanks, Gabe!) and have made web-based outlining fairly seamless. Ultimately, all of these tools have their place and I've wrestled with each one but it comes down to me fighting against the inevitability of a simple, plain text outline format.

Some things have happened in the last few years that make using a plain text outline a little easier. On the iPad, the keyboard macro ribbon in NebulousNotes works well for keeping things simple and fast. I'm still using the technique I wrote up a few months ago when I'm on my iPad and with a new teeny hardware keyboard arriving soon (I hope), I'm sure it will get more use.

Here's how I use FoldingText.

At the beginning of the week, I'll use nvALT to create a new file for my meetings and planning sessions. This file gets updated with text all week long, using a TextExpander snippet header/divider to delineate the text for each meeting. The TextExpander snippet creates the header text in markdown, bolds it and inserts a date-time stamp. I can be ready to type my notes within seconds of sitting down in a meeting and the headers help me stay consistent in identification and format. This consistency also makes it easy to search for specific meeting minutes later.

The way FoldingText handles indenting and bulleted lists works perfectly for me. When you use Tab and Shift-tab you're met with exactly what you'd expect -- proper indenting. The muscle memory for these hotkeys, built up over the years in similarly well-written and consistent apps, is rewarded.

The little focus ellipsis in the top left of the page.

The little focus ellipsis in the top left of the page.

Once a few meetings are entered, you start making use of the more interesting and unique features of FoldingText. The application gives you the ability to focus on a section of a document at a time. It can also expand and contract pieces of the document based on indent levels. Those markdown meeting headers I mentioned earlier come in very handy here.

Another really powerful feature that I tend to use a lot is "Focus Mode" which amounts to honing your view of the document to a single section with the rest drawing up into an ellipses encased in a little black triangle in the upper left of the page. It's an elegant solution and, like many of the features of the app, I never expected I'd have need for it...until I did. Once it "clicked" for me, I started using the feature often. As with all seriously nerd-centric apps, while each one of these commands can be invoked by the menu, they can also be invoked using handy and intuitive hotkeys.

The Expand and Collapse commands provide more ways to hone what you see. I use them if I have a lot of meeting notes sections cluttering up a page. Selecting all of the meetings from earlier in the week and selecting the "Collapse" command rolls them up to just a header lines. You can also do that with small subsections within larger sections of your document. It's a fantastic feature and I use it constantly to keep the relevant text visible at all times as I write notes throughout the course of a meeting.

Quick jump document navigation menu

Quick jump document navigation menu

There is a handy quick document navigation feature where you can, without using your mouse, zip around your document quickly using section headers. It isn't that helpful early in the week, but later in the week, when the document has grown to massive size, this is a life-saver.

I was slightly baffled by the size of the font when I first opened the app. It seemed to big and I couldn't find any way to change it in the preferences. Then I decided to take a peek at the "Zoom" function and, lo and behold, this menu item makes the text bigger and smaller. It was pretty obvious in retrospect.

Having everything as plain text is brilliant as it allows me to access the same text documents in Dropbox that I access via nvALT for comprehensive searching or Nebulous Notes on my iPad for on-the-go changes, updates or research. The advanced document navigation and view management of those same, simple, markdown-based text files makes this an incredible tool.

There's a lot more to say about FoldingText and I may post items here or there as I find new uses for key features. If you're a plain text person who uses markdown and can use your Mac at work (that's a pretty long list of caveats!), you're crazy if you're not using this app.

If you want to listen to an interview with the creator of FoldingText, Grosjean was interviewed by Brett Terpstra on his podcast, Systematic on 5by5.tv. Go give it a listen!

Building a Better iPad Outliner (with Nebulous Notes)

I own OmniOutliner. It's a fantastic app when you've got a job to do on your Mac. However, I've written before about how frustrating the sync options are -- the Omni method of going back and forth between the Mac and iPad versions of OmniOutliner just doesn't work for me. It's awkward and assumes I have a decent data connection. Sadly this is often not the case in conference rooms that sometimes do a passable impersonation of a lead-lined coffin.

What I'm left to do is create a new outline for my meeting on the iPad and then find a way to merge it back into my larger weekly meeting outline file on the Mac. It basically makes my iPad useless for taking meeting notes in OmniOutliner because the steps necessary to go back and forth are too much to bother with.

Up until yesterday, I was hauling my 13" Macbook Air around from room to room, keeping a large outline of the week's meetings in nvALT. Since my machine was doing a backup yesterday, I cracked out the iPad and decided to figure out a way to solve my outlining problems once and for all.

My workflow relies heavily on two things -- Dropbox and text files. Dropbox is the hub for all documents and does a great job syncing things back and forth between devices as well as home and work. The key to working with these files on the iPad is having an app that works well with Dropbox (and there are many) but also has the capacity to create a clear, easy-to-read, well-indented meeting outline.

There's no clear winner on the latter part of that requirement so I enlisted the help of Nebulous Notes, a universal app which I've been using on my iOS devices for some time. It makes use of TextExpander, markdown and has a great macro feature which I thought might take advantage of to replace my iPad's OmniOutliner for good (or until they make sync work the way I need it to).

My meeting notes consist of a header which contains the meeting name and a time-date stamp. I have had a TextExpander macro made for this for years and the naming consistency has helped me find many a meeting entry over that time. I just type "newmeeting" and it fires a macro that puts the cursor right where I need it.

- **%| %m%d%Y %H%M%p**

Once the meeting header is set up, I need a new line a tab and a hyphen so that markdown formatting can take over, creating nice, easy-to-read indentation. While there are some ways that Nebulous helps out of the box, such as providing a "Tab" button, it was still a lot of taps to enter the new line, hit the Tab toolbar button, hit the keyboard alternate button, find the hyphen, tap that, enter a space, etc.

Nebulous also supports custom macros in addition to the canned (albeit helpful) ones already on the toolbar. Custom macros can be put on the toolbar for quick access as well. All of a sudden this ad hoc, plain text outlining tool starting looking much easier...

nebulous macro palette

nebulous macro palette

The first macro is one that creates a new line, single tab and a hyphen as described above.

[return]$tab- 

Seems easy enough but it saves a ton of keystrokes and tapping. Now, when I'm on the end of a topic line, a simple button tap sends me into the details. But what if I want to create two levels of detail? Simple, another macro with two tabs. The last piece was to create another macro to add a hyphen when needed instead of the three-tap method I was current dealing with. (I realize the "slide the finger to quickly access the alternative keyboard" trick works on the iPad but it takes far longer than hitting one of Nebulous' macro buttons.)

Just by setting up those few macros, I have create a fully-realized meeting outline tool in markdown using Nebulous Notes. The outline in the same format I've been using for years and is searchable, extensible and ubiquitous thanks to Dropbox. The beauty of this is, after the meeting is over, the notes I've just taken are ready back at my desk -- they can be inserted into an email to the team with a simple copy/paste.

markdown version of the outline

markdown version of the outline

nebulous' html rendering of the outline

nebulous' html rendering of the outline

It's always worth taking a look at old processes and see what you can improve. If you have to do something more than a few times, it might be time to see if you can automate it, or least take some of the pain out of it. By removing friction, you're not only making yourself more productive but you're also taking away some of the frustration that keeps you from doing things in the first place.

Markdown Footnotes in Keyboard Maestro

I use Squarespace 5 to host technologynotes.net and, despite some asking around and trying different stuff, seems that SS5 doesn’t support multimarkdown.

Since I’ve always wanted to add footnotes to my posts I decided to take it upon myself to hack something together in Keyboard Maestro. The goal was to create a macro that would allow me to easily and quickly create footnotes in my posts as well as provide the code to give the reverse link at the bottom of the page.[1]

Before I post the screenshot of the macro, I should preface with a little explanation of how it works.

  1. Position your cursor where you want the superscripted number to appear.

  2. Trigger your hotkey and you will be prompted with an input box asking you for a number. This is obviously the number of the given footnote. If you have a lot of footnotes, that might be slightly problematic but as I’ll only be adding one or two, I figured it wouldn’t be a issue.

  3. Entering the number will generate the code for the superscript containing the number entered with a link to a reference. This process also stores the reference to the reverse-link on your clipboard.

  4. To finish up, go to the bottom of the page. If there isn’t already a horizontal rule, add one.

  5. Paste the text the macro added to your clipboard. The macro will contain a markdown-formatted numbered list item followed by a link back to your reference in the post and some dummy text for you to replace with your actual footnote.

Here’s the macro itself:


  1. It’s pretty easy, it turns out. ↩

Which Apps I Use (and When)

One of the big focus areas for iOS developers lately is the creation of task and reminder apps. Being a heavy OmniFocus user, the thought of splitting my focus isn't one that I look forward to. Sure, I like checking out new apps now and then, but putting tasks in the iOS Reminders app, OmniFocus and yet another app seems like I'll end up missing something.

Enter Checkmark by builtbysnowman, a new app that helps you remember things you need to do, but focusing more on where you are doing things rather than just having good ways of managing your lists.

After buying the app, and testing it out briefly, it is clear the app is slick and has merit but it is causing me, yet again, to rethink my tool selection to find the best combination of tools for the jobs at hand.

I have the following apps on my phone being used for some very specific functions:

Task and List Management

  • OmniFocus - Main task/project repository. Useful for everything. Does location-awareness and integrates with Siri (sort of).
  • Checkmark - Location-based reminders only(?)
  • Due - Useful for pulling recurring, reminder-type tasks out of my Calendar ("take out trash", etc)
  • Reminders - Stock Apple app. Useful but hardly idea. Just used to shuttle things from Siri to OmniFocus.
  • Ita - Gorgeous but never used.

Writing and Note Management

  • Drafts - Useful for quick, "reminder-like" notes.
  • Scratch - Another quick text entry tool, like Drafts. Testing it out.
  • Writing Kit - This is the best app for writing on the iPad. By far. Hands down.
  • Nebulous Notes - Still my favorite Dropbox text file editor.
  • Byword - I generally use the Mac version (writing in it right now)
  • Notesy - I want to like this but had stability issues. Waiting...
  • Elements - Some great parts, but rarely used.

How Do I Decide Which App To Use?

Having this many tools makes it critical for me to be targeted with how each app should be used. Like lots of people who post about this stuff, I feel like each tool is not quite up to the task. I keep downloading each new thing, expecting it to be the final piece of the puzzle only to find it is ever-so-slightly imperfect.

The current task-tracking tool breakdown, for today anyway, is to use OmniFocus for capturing tasks that are related to projects. If it is something related to a project or a person I have a context for, OmniFocus is also a natural choice.

For single tasks or tasks that are tied to a specific place, I've started using the fairly-amazing Checkmark. So far the app has been performing really well in all of my tests and the interface is slick as hell. As I've never really used the location-based reminders in OmniFocus, this is scratching the itch for ephemeral needs. I will continue to put it to work and expect I'll follow up with some sort of tech note on this site at some point.

Checkmark also does time-based tasks, which I have started using as well. Previous to that, I was using a mix of OmniFocus or my calendar, both of which aren't really the best tool for the job. Due was in the mix for a while, and it was well-suited to the task, but having things spread out over so many tools is disorienting and just doesn't sit well with my somewhat-well-ordered-and-organized mind. I generally want the best tool for the job, but I want to use the least amount of tools possible. Adding more tools just adds more friction.

For recurring events, since Checkmark doesn't have support for them, I continue to use Due. As mentioned above, Fantastical works for this but it always felt like pushing a boulder up a hill. I'll still use Fantastical to set up things like birthdays and actual events, but recurring reminders are now much better served using Due.

The Apple Reminders app only really comes into play via OmniFocus, making use of the makeshift Siri integration. Using Siri, I can integrate iCloud and Siri's insertion of tasks into OmniFocus, which has saved me a ton of time over the last few months.

When I need to write something down that isn't task-related and anywhere between a few words to a sentence or two, the two apps I turn to are Drafts and Scratch. Given how easy it is to make nice Markdown changes in Scratch, I've been using that more. I'd say Scratch is still in a beta state for me. It's an impressive app so far, however. If I could get Scratch's "append to Dropbox file" to work in the iOS6 beta I'm sure I could find some interesting uses as well...

Writing Kit is an amazing iPad editor (in fact I've written this post using it). I feel dumb not having used it sooner and I can't recommend it enough. I have the notes for an upcoming review/recommendation post to explain exactly what makes it so great but, in the meantime, just go buy it.

Nebulous Notes is still a staple for editing Markdown notes for work. It works well for a lot of things and does a decent job of avoiding Dropbox conflicts, although they still happen occasionally if I'm swapping back and forth between my Mac and iPad.

~~~

For me, keeping things as simple as possible in a very hectic work (and home) environment is paramount. Cluttering up my devices with a bunch of apps that are half-solutions doesn't really help me much because adding any level of friction just means that I won't record something or remember something or be reminded of something important. Friction can be anything from not being able to find an app you need when you need it to having to think for a half-second about what the best way to record something is.

Do I use Due or Checkmark to set a reminder? Do I use OmniFocus? Wait, is there a project for that? Does it make sense to put it in a particular context? Will I need to transfer this task to my main OmniFocus database at some point? Let's look at how I make some of these calls...

I will generally follow the decision tree outlined below to determine which reminder app to use:

  1. Is it a simple recurring task? If yes, use Due. If no, go to 2.
  2. Is it a complicated recurring task? If yes, go to 4, if no, go to 3.
  3. Is this a simple, one-step task? If yes, use Checkmark If no, go to 4.
  4. Use OmniFocus.

How should I set a timer?

Due has timers, but Siri is so dead simple I prefer using it. I guess if I have to be sneaky and silent when I need to time something one day, I'll use Due but how often does something like that come up? I'd guess nearly never. At least I have alternatives..?

I need to write something. How do I choose which tool to use?

  1. Is it really short? Like noting where I parked or someone's phone number? Use Scratch or Drafts (Scratch is currently on the Home Page for this purpose).
  2. Is it a piece for the website? Use Byword on my Mac, or Writing Kit on my iPad. I don't use my iPhone for writing posts.
  3. Is it longer than a few lines but not for the website? Then I almost always use nvALT on my Mac and Nebulous Notes on my iOS devices. Whatever it is gets synced to Dropbox.
  4. Is it really long? Use Scrivener or Byword (although I recently wrote a very long work document in nvALT -- I didn't know it would grow to the length it did and nvALT worked pretty damn well. It looked gorgeous with my output from Marked too.)*

So there you have it. My streamlined decision trees for which tool I use and when. I try to keep it as simple as possible but still use the best tool for the job. I consider myself lucky that there are so many great tools out there to make me more effective wherever I happen to be.

Managing Links in Markdown

Writing things for this site generally involves a lot of links. My tried and true methods of inserting links to my posts fall into two categories.

Brett Terpstra's Markdown Services has included a service called "md - Links from Safari Tabs" which I used a lot at one point. I have had spotty success with it lately but it is still the first thing I try when I have a lot of tabs open in Safari that would be a good list of reference links.

When it works, it's a huge timesaver and leaves me with a block of markdown reference links that look like this.

Screen Shot 2012 06 27 at 3 29 26 PM

Keyboard Maestro Markdown Macros is the other way I do things related to markdown links. I mapped all of my macros to the same hotkey so they appear in a palette but I haven't thought through the ergonomics of it in order to organize in a special way. They kind of accreted over time whenever I needed something to speed up the process of automating my post writing and I just developed the muscle memory to use them.

Let me quickly walk you through what each one does.

Screen Shot 2012 06 27 at 4 29 16 PM

Insert New Link Reference - this requires a selected bit of text with the objective of turning that into a reference link. After selecting the text and hitting the requisite hotkey, I end up with

[selectedtext][]

Type a New Link - this one requires a link on the clipboard.

Screen Shot 2012 06 27 at 4 39 41 PM

When I hit the hotkey, I get a text entry box asking for what I want the link text to be and when I type it in and hit Enter, I get something that looks like this:

[Gridwriter](http://gridwriter.com)

Link selected to Safari URL - this one requires some selected text in the article body with the aim of getting the link from the active Safari tab. This is a common workflow as I'm often surfing for a link to include in a post and, once I find it, I want to get it into the text quickly. Shift-Opt-Left/Right Arrow selects a word, Cmd-Opt-K+3 will quickly swap to the last active Safari tab, swap back to the Byword window and create the link.

Here's how I make that one happen:

Screen Shot 2012 06 27 at 4 46 43 PM

Create Reference Link - this is a new one to create a reference link which functions in a way similar to the last macro. Write some text down in the reference link area of the Byword document, select it, hit the Cmd-Opt-K+4 and it will turn that word into a reference link using the active Safari tab.


Markdown is such a powerful tool. Its transparency in the form of plain text and its portability due to being able to open in any text editor and be able to read it is remarkably productive. I live in Markdown all day long at this point and little things like the macros and services noted above help improve my day. I hope it does the same for you.