The Switch to Ulysses

Posted by Chris Rosser on Tue 29 May 2018
Hello! This site is archived and no longer maintained. For Chris' main site go to

This post feels like it's been a long time in the making. I've finally switched to Ulysses…for blogging, at least for now and perhaps more in the future. Yes, I still use and prefer Scrivener for writing fiction, especially anything longer than a novella, but this post isn’t about fiction writing.

The problem

I have to admit that my blogging situation is a mess. I blog with Pelican, a static site generator built with Python. Pelican is immensely flexible and I'm happy with it; the site it builds is lean, loads fast and is secure, with no backend scripts or databases to exploit.

Pelican has its quirks though; not least, the way it handles cross-site linking and images is incompatible with any markdown generator except its own. When it comes to drafting a post, I don't necessarily want to fire up a full Python/Pelican environment just to see what my post will look like — but that’s just what I have to do if I want to preview images.

Pelican isn't the problem — I am.

My problem is fragmentation. As I write this, I've got draft posts strewn about the place — in my file system, in emails I've sent to myself, in DropBox and Apple Notes. The stuff in Apple Notes, I'd completely forgotten about. I've written timely posts, only to forget about them for months — thereby making them useless to me.

It's time to consolidate.

The solution

I first seriously tested Ulysses last year. There was a lot I liked about it, with several stand-out features that I think can really help me now.

Firstly, there's the library. I liked that idea then, and it's even more compelling to me now.

All my writing, in one app that’s virtually the same on my Mac or iPad does make for a very compelling argument. The older and busier I get, the less I tolerate friction. Ulysses is very good at reducing friction. Chris Rosser, Ulysses review

I had my reservations, but honestly my need for an everything bucket has finally overwhelmed them.

Secondly, there's the Ulysses UI. It's a beautiful place to write, with very little difference across macOS and iOS. Currently, I use a variety of apps to write posts: MultiMarkdown Composer on macOS, Editorial on iOS and Gedit on Linux. None are nice drafting environments, nor do they have the concept of a Library. They are good text editors, but they are not good writing programs.

Thirdly, is Ulysses' outstanding sync ability that requires no user interaction and does not require Dropbox. DropBox support is there if you need it, but Ulysses operates best when you use iCloud. That's fine by me, the less I use Dropbox the better.

Lastly, is Ulysses' export abilities. Scrivener is built on the principle that you have one manuscript and while it's possible to place multiple articles within the Draft folder, compiling and export just one of them is a pain. Not so Ulysses, which lets you export anything you want, at every level of the Library, with comparative ease. The export mechanism is also easier and produces nice-looking (an customisable) output in a variety of formats.

Naturally, as a markdown-based editor, Ulysses starts off much closer to the format I need to inject into my blog. Top it off and I've discovered a game-changing way to grease the wheels between Ulysses and Pelican.

Integrating Ulysses with Pelican

Back in my review last year, I alluded to the need to change my publishing system before I could switch to Ulysses. Well, I've done that and it's all thanks to a Pelican plugin and the Textbundle format.

Textbundle is simply a folder containing a markdown file, a manifest (in JSON format) and assets, such as images. The specification is completely open and is supported by Ulysses both for import and export. I include the link for reference, you'll never need to crack it open or mess with the internals unless you want to.

So, what's the big deal?

By embracing textbundle, I can write in Ulysses, taking advantage of the Library and the way Ulysses handles pictures, links and passthrough blocks and then export individual posts to Textbundle format.

The best bit, is an obscure Pelican plugin I found GitHub that enables Pelican to read and process the textbundle format. This means, I can drop a textbundle package into my Pelican build folder and the reader plugin will handle the rest. No more messy file management, no more stupid {attach} or {file} directives in my source article. That’s going to make it a hell of a lot easier to reuse my blog’s content or package it into other formats.

In my last post, I described how I migrated to Netlify. I put the cart before the horse for the move was predicated in getting the textbundle plugin to work — it does, and very well indeed.

So to conclude, Ulysses is a welcome part of my toolkit. With it I can write my posts on macOS and iOS in what's essentially the same app with the same feature set. Thanks to its iCloud support, I'm no longer dependent on Dropbox. Textbundle also gives me a much cleaner way to transfer files along my publishing tool chain, even with my new serverless host.

Wow you read this far! This site is archived and no longer maintained. For Chris' main site go to