Dev. Diary: Quest for an interface

I’m currently finishing off the Literature & Latte website: getting the new forum up and running, gathering together free downloadable stuff (a couple of trivial programs and some classes for Cocoa programmers), putting together a links page, and of course getting the Scrivener page ready (so that I’m ready to hit the ground running when it is actually finished). Whilst I’ve been doing this, I’ve also been mocking up the new interface for Scrivener. I had it sketched out on paper, but I wanted to see what it would look like in practice: there’s no point in forging ahead unless it looks like it’s going to work. (Pretty much all of the code for Scrivener has already been written – the hard part now is just putting it all back together so that it works well in the new interface, optimising it and ironing out any glaring bugs – a couple of months’ work at least.)

This is really the third iteration of Scrivener’s interface; the fourth, if you count Hemingway, my prototype for Scrivener. Getting the interface right has probably been the single-most difficult aspect of designing Scrivener – after all, a good interface is crucial, and can make or break an application. These have been my objectives in designing the interface:

1. It has to be intuitive. If you need to glance at a manual before you start writing, something is wrong.
2. It has to allow fluid movement between outlining, composing and editing.
3. Every document should be linked with a synopsis, to facilitate easy outlining.
4. You should be able to get everything out of the way if you want to so that you are left with just you and your text.
5. It should provide for easy cross-referencing, both with other text documents and media files used for research.
6. You should be able to dictate the way you want to work (I hate software that tries to force you into a particular work flow), so it has to be flexible.
7. There should be no bloat. If it’s not essential to everyday writing, it doesn’t belong in the application.

The hardest part of designing a really good, intuitive interface has been simply this: there are currently no programs out there quite like Scrivener to refer to for inspiration. Now of course, I’m not claiming that there is nothing else out there that has the same purpose as Scrivener (there is plenty); just that nothing else quite works in the same way. For a start, no other program I know allows you to keep a synopsis for each document that can be viewed in a separate overview as an outline (which was Scrivener’s original raison d’etre). And, whilst there are a few index card/corkboard emulations out there, all of the programs that do provide a corkboard provide it as their main feature, not as something integrated with project management, text editing or outlining (excepting perhaps Final Draft). This gives rise to numerous implementation problems: exactly when should you see the corkboard? How should you be able to access it? In Scrivener Gold, the corkboard is a separate mode altogether. It’s like another program tacked on, which is not good. In the never-released Scrivener 0.3, you would see the corkboard when you clicked on a group in the binder – but this was problematic too, because groups could also hold text, so you needed a switch to toggle between viewing the corkboard and the text for group items. Hardly elegant. Now I have come up with another solution: the corkboard (and outliner mode, for that matter) works a little like “Bookmarks” in Camino. Click the corkboard in the toolbar and the current document turns into a corkboard, displaying the children of the currently selected document (outlining will be a little more fluid in the new version – like groups, text items in the binder can also have children, for instance). Click it again, and the corkboard disappears.

And what about all the problems involved in having a split view that lets you look at your research in one view whilst looking at your text in another? To my knowledge, no other program has that feature (yet). I would be surprised if I’m not wrong, though – there must be. It’s such an obvious idea. I looked to DevonThink for ideas, but as good as DevonThink is for storing lots of different document types, it only lets you look at one at a time in any one window.

Hence the many revisions and iterations of the Scrivener interface. I’ve finally hit on one I think really draws everything together in a unified, intuitive manner, though. So before I present you with a mock-up of the new interface, humour me whilst I blather a little about some of the other interfaces that nearly made the grade.

Firstly, I should acknowledge some of the main influences on the Scrivener interface. The biggest influence at first, I think it’s fair to say, was Xcode (which I believe also had an influence on various other apps out there, such as DevonThink):

Xcode’s interface is simple and effective: it shows all your files on the left, and you can organise them however you like; on the right, you edit them. It sets a standard for any kind of project manager. The navigation bar in Scrivener is straight out of Xcode.

The next important influence was, of course, Ulysses:

Ulysses has an undeniably beautiful interface: it is a triumph of minimalism (there isn’t even a toolbar). It displays a “browser” of your documents on the left, with notes and meta-data on the right. It set several standards for similar programs, among them a full-screen view (now almost de-rigeur, but I believe Blue-Tec were the first to do it) and a label and status for every document. The document area of the interface is distinguished by being contained in a box (actually a tab view) separate from the browser. The muted colours around the text area cause the eyes to be drawn to the actual text. Moreover, the text area looks comfortably like a page from a book. I fully admit that, whilst redesigning the interface to Scrivener, I have often fired up Ulysses to remind myself of what a well-designed interface looks like.

Another, less obvious, influence has been MacJournal, the excellent blogging software:

Studying MacJournal helped me figure out how to simplify the search/filter feature, as I wanted to get rid of the pane that is used to display search results in Scrivener Gold. MacJournal, a little like Ulysses, displays search results in its content table. It’s interface is good because everything about it is functional and clearly defined. (Incidentally, the way MacJournal handles ctrl-clicks in its contents table is exactly the same as in the next version of Scrivener. I came up with this idea on my own, thought it was brilliantly original, and then, upon downloading MacJournal 4, discovered that Dan Schimpf had beaten me to it.)

An even less obvious influence on the newest interface is the Camino web browser:

The tab bar and the way that “bookmarks” mode is toggled has been a direct influence on t he tabbed interface and the way the corkboard and outliner modes are handled in Scrivener. Camino also looks like a cool, modern Cocoa application (aside from the pinstripes), which is, not unnaturally, what I want for Scrivener.

There are many other interfaces I have looked at and which have had some influence, of course. From Speed Download I took the rather beautiful gradient outline view (much more subtle than the blue of Mail and the iApps) and the colour-themed toolbar (Scrivener has a purplish-blue colour theme, whereas Speed Download uses an eye-catching red). Aperture has influenced some of the HUD panels in Scrivener: the new keywords panel looks much like the black, translucent one found in Aperture. OmniOutliner and Hog Bay Notebook (now Mori) have had a large influence on the new outliner. iSale and Delicious Library helped me rethink and redesign the corkboard view.

Right, onto the Scrivener interfaces (click on the images to read more about each interface, if you haven’t lost the will to live already):

Hemingway (the prototype for Scrivener)

Scrivener Gold (Scrivener betas 0.1 – 0.2)

Scrivener 0.3b (never released even to beta-testers)

Scrivener (mock up of the new interface)

What you see there is the main view – how it is likely to look for most of the time you are using it. Yeah, I know not everyone is going to like it, but that is unavoidable; beauty is in the eye of… Well, you know. You can hopefully see how the eye is naturally drawn to the central column, where you actually edit and compose your text. It’s simple, it separates the binder from the document area without resorting to a drawer (although you will be able to hide the binder and the inspector), and it is fairly obvious that it is a writing tool. Of course, this doesn’t show how the corkboard, outliner and split views work – I’ll leave that for another time.


Wow. I’ve just been called a Mac fanboy (or near enough) over on the Apple support forums. Despite the fact that I bemoan Apple as much as extol them. Why are people so rude and downright nasty on forums? A question on University Challenge recently revealed that given a certain number of users and a certain amount of time, the chances of someone calling somebody else a Nazi on any given public forum on the internet soon rises to 100%. Someone elsewhere pointed out that because they can’t be seen, many people forget basic manners when using the internet. No one has a chance to say, “Say that to my face.” What sad, little people they must be, if the only thing they can do to make themselves feel better about their lives is to insult strangers whilst hidden behind a mask of anonymity.

Dev go d'oh

I was just browsing the Jer’s Novel Writer forums (I often browse the forums of other writing programs to keep on top of what the users out there want, and I also think that Jer’s is a lovely program – there’s always a copy in my Applications folder). I came across a post in which a user is requesting the ability to see more than one outline at the same time, and I nearly slapped my forehead. I nearly made a very silly mistake in the new interface. In the new design, I have an “outliner” and a “corkboard” icon in the toolbar. Clicking on one of them puts the current document into that mode, showing an outline or a corkboard in the document view (clicking on them again toggles the document out of that mode). However, I had it so that once you clicked on, say, the outliner, the outliner would then take over the whole view. So that even if you had two different documents open in a split view, the focussed document would become an outline and the other document would be hidden so long as the outline was visible. What was I thinking? This is completely counter-intuitive. It’s obvious to me now that the outline should only take over the selected split view. That way you can have two outlines, or two corkboards, open at the same time. Now that is going to be cool.

The brand new yellow MacBook

Well, this is annoying. Lots of people have complained about issues with the new MacBooks – “mooing” coming from the fan, whining, overheating, crashing, warping; you name it. Of course, much of this seems disproportionate: if you hang out at a support site, you are only going to hear from people with problems, not satisfied customers. All the same, I have not had a single problem with my white MacBook (touch wood) – sure, it runs hotter than I’d like, and I’m going to get one of those lap cooler thingimajigs so that, should we want more children, the option will not have been cooked away, but other than that this thing is lovely.

Except… After two weeks of heavy-ish use, I noticed that the trackpad and palm-rests (especially the right one, because my right-hand does all the trackpad work) had started to turn a horrible yellowish colour:

It looks like I’ve been smoking 60 a day and breathing heavily on the surface of my MacBook for two years. Not pretty. It’s also very surprising, given that I have owned an iBook for two years and it never suffered from anything like this – it’s a bit scuffed, but there is no discolouration anywhere. And it seems that other’s are having the same issues after a few weeks’ use, too:

(I hope that last one doesn’t disappear – I’ve noticed that the Apple mods are quite trigger happy when it comes to deleting posts.)

I wonder if this is why Apple charge extra for the black MacBook? Someone somewhere noted that Apple only care about how lovely their products look in the store; they don’t care how they look a few days later, because cosmetic issues aren’t covered under AppleCare. Well, I hope whoever said that is wrong, but judging by the bad press that Apple is receiving recently for this sort of thing, it seems not.

Personally, I can live with it. My MacBook is just a machine, after all, and so long as it works well, I’m happy. I couldn’t afford to wait for another revision, because I need an Intel machine now so that I can make sure Scrivener is Intel-ready, but I do hope that Apple fix this issue for the next batch of MacBooks – if you are thinking of buying one and don’t want to pay the “black tax”, you might want to wait.

What you don’t see on those Apple ads:

“Hi, I’m a Mac.”
“And I’m a PC. Is that jaundice or are those just liver spots?”

I do wonder: why is there a continued discrepancy between the brilliance of the Apple software engineers and the rest of the company?

Full Screen vs Typewriter Mode…

I just came across a very interesting post, via the Hog Bay Software forum, here. The poster, Khoi Vinh, proposes an application (he mocks up something that he calls BlockWriter) that works just like a typewriter. It blocks out everything else on your desktop and doesn’t allow any editing, thus forcing you to forge on with your text. You can use the cursor keys to go back, but if you type, it types over the text already there – so that you can block out mistakes using XXXXX just like on an old typewriter. You can’t cut, copy or paste, and you can’t go back and edit large chunks of your text. The idea is simply that you have to type, and think more about what you are typing, just like you had to on a typewriter.

I have to say, this idea appeals to me. I am messing around with it at the moment to see if it is something that might fit into Scrivener – a proper full-screen typewriting mode (as opposed to, or maybe as well as, the current full screen mode which is based on Ulysses’ implementation… Interesting, definitely interesting.

UPDATE: Well, I tried this out… Not the full screen part, but the crippled editing part. I put together a small test app that doesn’t allow any editing – only typing. To delete, you have to move the cursor back and then type over text (it just replaces the text with “X”s). It feels awful. In theory, it’s a good idea, but the fact is that if you touch-type, you can touch-type a lot quicker on a keyboard than you can on a typewriter, but at the same time you make more mistakes (I had no idea how much I relied on the backspace key). Moreover, because you are so used to being able to edit in a text editor, it feels very unnatural. Anyway, feel free to try it out for yourself, but there is no way this is going into Scrivener. Still, all this has given me an idea for a slightly nicer looking full screen…

Scrivener icons (and distractions)

Half-term is pretty much over. As soon as it gets to 3.15pm on a Friday, that’s the holiday over. Ho-hum. I spent most of this week designing the icons and graphics for Scrivener. I spent the first day or two just surfing the web trying to find good PhotoShop tutorials. I came across this:

I was always into drawing cartoons as a kid, and I still enjoy sketching occasionally, though ultimately I don’t have the patience to produce anything particularly good. These tutorials are fantastic, though, especially if you want to draw the female form in a comic-book style. So needless to say, they distracted me from my real purpose – icon design – for a good few hours. They just give a good overview of getting the proportions right. For instance, when I sketch a face freehand, I always have problems getting the size of the eyes to match when drawing the face at an angle. The tutorial on faces ( really helped, though. This is what I came up with:

Anyway. As far as the icons go, I ended up playing around in PhotoShop with layer style settings, gradient fills and the shape tool, and after nearly a week’s work, I have finally managed to put together the icon set that I will use for Scrivener 1.0 (a few of the icons are just modified common Apple icons):

The only one I’m not 100% certain about is the binder icon, which doesn’t sit at the right angle if you’re going by the Apple Human Interface Guidelines (it’s sloping backwards when it should be sitting straight, as though sitting on a shelf). I’ll probably leave it for now, though – I really have to get onto rebuilding the interface, and I don’t want this thing to get stuck in development hell forever.

Mobile phones

Much as I hate them,* mobile phones have reinvigorated a part of our language which was hitherto sadly neglected outside of learning to read and clever literary novels: present tense. Before mobile phones, anybody standing at a bus stop announcing loudly, “I am at the bus-stop,” or proclaiming, “I am in a shop,” whilst paying for their groceries, would have been taken and locked away. Now, I’m not saying it wouldn’t be a good idea to lock away the loud and rude mobile-phone-users who do this on buses and in shops, but that’s just the way of the world.

Salinger: “The human voice conspires to desecrate everything on earth.”

*Or used to. Now it’s more a grudging tolerance. I even own one – though, much to the annoyance of friends, I refuse to put any numbers into the thing or have it switched on. Ever.

Christmas Tree Farm and toddler talk

You know, when I was younger and greener, a friend of mine had a young child who spent a lot of time with us. We all lived in a big post-student house and her daughter spent a lot of weekends in said house. And I, what with being younger and greener and all that, had a notion that capitalism and ownership must be a learned concept, based on an isolated observation of this girl’s daughter giving away without any qualms whatsoever some pine cones she had collected. (“When you have your own children” is a sentence-starter that can be on a par with “When I found God”, so I apologise for the next sentence:) When you have your own children, such illusions are soon shattered (I wanted to put in a simile referring to a chimera and Belleraphon here, but my Greek mythology just isn’t up to it). The first words most of these little tykes learn is ,”No, mine! Mine, mine, MINE!” Ho-hum.

All the same, watching language develop is fun and interesting in equal measure. I wish toddler social habits could be carried on into the adult world (admittedly, some adults have toddler social habits). It being half-term and all, today we did one of our family trips and visited Christmas Tree Farm in Downe. I was surprised there was so much greenery so close to South London. Anyway, of all the animals on display, Thurston went straight for the chickens, turkeys and ducks. Over and over again. We dragged him around the rest of the farm, to be sure, but that was where his heart was. But you know, as we walked around the farm, it kind of depressed me. The parenting skills on display, I mean, You get into the farm and you can buy, for a mere 50p, a bucket of animal feed. And strewn across this farm were empty buckets. Not just one or two, but dozens. Which adds up to a lot of parents who just do not give a flying donut about their child littering. At this point, I need to calm my blood pressure. But I digress. Blah blah, terrible kids, terrorising animals, blah blah, and then Thurston, after saying, “Sorry chicken” to some chicken he’s bumped into with the gate, pours the rest of the animal feed right over the top of a chicken, laughs his lungs out, and then spends the next ten minutes chasing ducks. Toddler fun, parental consternation (which could be a mantra). And after that, we go to a local pub, and in the garden there is a toddler play area, and a little girl playing in the wooden den-house. And this is how Thurston, without further ado, introduces himself to the little girl: “I chased ducks.” Now that’s an introduction, and no mistake.

I sort of wish, now, that I hadn’t spent so much time in my younger days (not that I’m exactly old, but hey, Jesus died when he was my age, and Kurt Kobain, who, let’s face it, has had far more impact on my life than Jesus, died when he was six years younger than I am right now) wasting time on deliberating about how to meet people (did I say people? I meant girls). You just march right up and, without further ado (or embarrassment), announce the most important aspect of your day or life. Some possible introductions:

“I ate eggs for breakfast.”

“I bought PCGamer.”

“I surfed for porn.”

“I typed over one thousand meaningless numbers into Excel today. That’s more than yesterday. Meaningless, I mean.”

Come to think of it, I doubt if it would have helped. But it might be worth a go anyway. At worst, the other person will just think you’re talking on your hands-free mobile phone. Feel free to leave your own, should you happen by.