Keith Blount Founder and Lead Developer at Literature & Latte
Who are you and what do you do?
I’m Keith Blount and I’m the big bad boss at Literature & Latte Ltd, creators of Scrivener for Mac and Windows, and soon for iPhone and iPad. As well as being the designer and general overseer of the program, I’m also the Mac developer. I’m based in Cornwall, England, but the team is cast far and wide - we have team members in the US and Australia.
L&L started out as just me, and I came to developing on the Mac by chance, really. I was a teacher with lofty ambitions of writing a novel but found that word processors didn’t really suit my disorganized brain, so I set out to create a program that would allow me to write sections of text as they came to me, in any order, and that would let me get a better grasp of the over-all structure and, at the same time, refer to research. So, I taught myself Objective-C and the Cocoa frameworks (mainly from Stephen Kochan’s Programming in Objective-C and Aaron Hillegass’s Cocoa Programming on OS X) to create Scrivener. There is no better form of procrastination than building your own tools.
I’m currently working on the design for the iOS versions along with two other members of the team, although I won’t be getting involved in the iOS code - I’m a Mac-lover at heart and will continue as lead developer on our Mac version, just overseeing and having a hand in the design of the versions we build for other platforms.
What is your computer and workspace setup while developing?
Up until last year I only ever owned laptops, so I started developing Scrivener back in 2004 on a 12” iBook, and from there worked through 13” and 15” MacBooks. The advantage of that was that it forced me always to be careful that Scrivener worked well even on small screens. Last year, though, I moved to developing on a Quad-Core Intel Xeon Mac Pro with 8GB memory, which fairly flies, even if it is overkill for what I do with it. It’s connected to a 27” Apple display, a Macally IceKey keyboard (which has the old iBook feel to it) and a Microsoft natural mouse. I have never really got on with trackpads on a desktop, although I do have a Magic Trackpad at hand for testing gestures when necessary.
I also have an 11” MacBook Air which I use mainly as my writing machine, but is in effect a testing machine seeing as that is where I use Scrivener the most. This set-up means that I’m now always testing Scrivener on some of the largest and smallest screens available, which is very useful.
There’s always a cup of black coffee to hand and in the mornings I frequently have to unearth the keyboard from beneath piles of paper, notes, books and “to do” lists. There’s usually an iPhone 4S charging on the desk, too, and I have a smaller desk nearby for an iPad and an HP machine, for testing Scrivener on other platforms.
What are your favourite Apple iOS API's to use within apps you develop?
That’s a tough one seeing as the Cocoa.framework itself covers most things I do. I like the ease of the WebKit and PDFKit frameworks for incorporating web and PDF features into a program, and also the Quick Look elements that have been added to the Quartz framework on Lion. In terms of APIs within the Cocoa framework, though, I love how relatively straightforward it is to build a custom view such as our corkboard or comments views starting with a plain NSView, and for all of its glitches and limitations, I am also very grateful for the NSText system. Our Windows developer had to source his own spell-checking engine, write his own RTF parser, his own tables and bullets code and create a lot of other features from scratch that are already built into Cocoa’s NSText system out of the box. There are problems with it, sure - the tables interface is a bit clumsy, I had to add quite a lot of my own code to the standard RTF parser, its .doc and .docx translators are buggy - but whenever I start to moan about its limitations I just take a look at how much work our Windows developer has to do in order to achieve something that Cocoa provides either “for free” or at least a good starting point for.
What is some software that you use outside of Xcode for development?
I use Photoshop for any images I have to create myself (although I use a great icon designer, Janik Baumgartner for most graphics these days), and Skitch for sharing screenshots when supporting users. I use FileStorm for packaging .dmg files and AppViz to keep track of our Mac App Store sales and reviews.
I also use various programs for testing out Scrivener’s export features - Word, Pages, Nisus Writer, Kindle Previewer, Adobe Digital Editions, OpenOffice and many more.
One of the main programs I use, though, is Scrivener itself - I keep all of my development notes and my programming “to do” list in a Scrivener project. This serves the dual purpose of (1) keeping me organized and (2) constantly testing Scrivener by having it always in use.
What do you do to stay up to date on new iOS features, frameworks and SDK's?
Mainly I use Apple’s own resources for this - the developer pages of the Apple website and its associated community forum. The Mac developer program means you get access to pre-release OS X seeds and documentation, so I’ve always been able to have Scrivener fully-compatible with, and taking advantage of new features in, all major OS X upgrades. So, for instance, on the day Lion was released we had a version ready that supported its new full screen mode, Quick Look additions and other new features. The Apple developer area is generally the best place to keep abreast of things seeing as no one is allowed to talk about new features outside of there anyway.
I also sometimes stop by Macrumors.com to see if any big news might be coming up (although you have to stay away from the comments if you want to remain sane).
I’d love to make it to WWDC one year, but being on the other side of the Atlantic with a pathological hatred of flying makes that awkward.
From a developers perspective, are your hopes for the next major iOS update?
Mainly, I hope that OS X doesn’t get locked down - as much as I like the Mac App Store, I would hate to see OS X move to a system whereby the only way you can buy and install software is from the App Store, and where every single feature you add has to be approved by Apple. I also hope the file system continues to be exposed via the Finder and Save and Open panels - there’s some of talk of moving away from this to a more iOS-based approach, where the end-user doesn’t have to think about where their files are stored at all. (I can see that file systems can be confusing for less technically-minded users at first, but I’m always wary of simplification at the expense of flexibility and freedom.)
But that’s what I don’t want… What I’d really like to see are some improvements in the text system - improvements to tables and lists, a built-in page layout view supporting footnotes, better importers and exporters… But I doubt it will happen. Apple has to leave us something to do, after all. I’d also like to see the Quick Look framework opened up a little more. I think that’s an amazing framework that is so far under-used. In Scrivener, for instance, it means that someone can view an Excel file without leaving Scrivener, even though Scrivener knows nothing about the Excel file format - it just passes the file to the Quick Look engine which provides the preview. But it’s still a little fragile and could do with a little extra love in the next version of OS X.
Finally, what is your favourite app?
There are lots of apps I think are great, but none I could pick as an absolute favourite. Pretty much all of my time on my Mac is spent in Xcode, Mail, Safari, Camino and Scrivener, with some time in Photoshop, iTunes, iPhoto and Skitch too. I think, in part, it’s difficult to answer because, as an indie developer, if the program you’re working on isn’t your favourite app, then you’re probably working on the wrong app. I’ll therefore end with a blatant plug: if you’re interested in writing long texts such as novels, screenplays, theses or business plans, check us out at Literature and Latte.