Apple Blog on Scrivener

The Apple Blog has a short but positive review of Scrivener with the apt title of “Scrivener-A Writer’s Paradise.” You can find it at:

This is part of the introduction:

–Michael W. Perry, Untangling Tolkien

Gee Keith, you been pushing scriv pills? Everyone seems to be getting hooked.

[size=85]WARNING semi nauseating rant follows. Illness or other adverse reaction are stictly your problem, not KB’s or mine. You have been warned!


On a slightly more serious note, how is it that an “education professional” managed to write what seems to me to be one of the best utilitarian* tools I own in his spare time? I pay people to write code for a living and I don’t think they could have pulled it off. So KB, what is the select educational program that we should suggest to, or look for in, all future application developers? Seriously, inquiring minds want to know.

I really am not trying to be a smart arse (although you must admit I am quite good at it) but I find it simultaneously hilarious and frustrating that the best piece of software I have seen lately comes from a 5th grade teacher. Scriv has never crashed, but safari barely runs. Scriv never corrupts files, but mail mangle every message I export. Scriv keeps me focused, but word … I hate word. Multi billion dollar a year companies are being taken to task by 5th grade teacher, who just turned 35^H^H^H a year older, works in his spare time and eats too many late night cheese-its and beer combo snacks (it it really possible to too many?).

How do you do it?

[size=85]* Not sparse utilitarian, but functional like a key ring with only the keys you want, and not keys to the house you lived in 30 years ago, some key that you found on the side walk, and something that you think is a key, but you don’t know because it just showed up when your pal returned the keys after borrowing your car. [/size]

I think at least part of the answer comes from the following:

  1. Small target audience + clear sense of direction + actual interest in the use of the software = no feature bloat.

  2. No feature bloat = less overall code, but more importantly, it means that the original software was probably better designed to begin with, rather than having lots and lots of things added on after the event.

(Although I quietly suspect Keith would disagree and that there are secretly a whole lot of things he would want to rip up and start over to do in a slightly more straightforward way or to make future updates easier, but won’t touch because it is too much work and already works and would most likely risk introducing bugs, etc).

It is not so much the size of the overall program, but complexity, that is often the problem. The best thing about Scrivener is that it has a core simplicity to what it is trying to achieve, and throws out everything that doesn’t fit into that model. I suspect the code itself reflects the mindset of the person who developed it, and is therefore easier to alter without introducing as many bugs.

  1. By comparison, Safari* was probably written by a large bunch of coders, who each didn’t know what traps (i.e. “false assumptions”) the other programmers had left there because they were either too lazy or too rushed by i) unrealistic expectations; ii) massive workloads; or iii) pending deadlines.

Keith on the other hand does not have set deadlines or financial pressures (it is in many ways an enjoyable hobby, albeit one that hopefully generates a profit). As a result, he has a current stable release, and the next version (and the one after that, and the one after that) will not get beyond Cornwall [have you moved yet Keith?] until it is itself a near stable release (and only get beyond beta when it is stable). If that means August, it means August. If it meant November, it would be November. But it is a key to Scrivener’s bug free existence that financial pressures do not mean “ship by X or the whole company will go bust” (or all the programmers will be sacked).

  1. Plus, Keith is obviously very talented as a programmer, and dedicated to the application he is writing. The coders you pay (and no offence is intended towards you or them here… you are really just my straw-men) are probably bored and writing database applications that they themselves will never use, and with no personal motivation to make it the most user-friendly experience it can be.

Obviously some ridiculously general assumptions went into writing this, and it is intended to be read as such.


  • Note I know nothing about Safari’s development in particular, it is just another straw-application developed by straw-men :smiley:


All of your arguments are dead on for software development houses. The problem that I am having today is finding folks who can simply produce functional code. These are folks with masters degrees in various IT fields, yet a basic function to read a configuration file escapes them. Heck they don’t even think about the obvious stock libraries that will do it for them.

What I wish I could find here is what I see in KB by way of scriv:
• Dedication to a goal
• Ownership of the process
• Commitment to quality
• Passion for the process not the job (KB’s passion for writing, NOT programming)

I do not think these attributes are encouraged in our educational systems. When I see folks with these attributes that have come out of the US collegiate system they invariably majored in “artistic disciplines*” not “science”. I am currently fighting with HR to reclassify the requirements for future employees to “any degree” from “BS in IT focused field” so I can find a few KB’s.

The reality of the situation is that too many folks work for the paycheck, not the joy of the work. In my opinion this decreases productivity, increases defect rate, lowers moral, and generally ruins peoples lives. I am sure there have been studies done on this. I should probably look for one to prove my case with HR.

All this to once again say “KB, thank you for scriv.”

[size=85]* In my uneducated definition these are the humanities, languages (including English), true arts, and educational programs (teachers need more humans relations than I can allow to fall into a science even if they are teaching science). Probably not accurate, but that is how I classify things.[/size]

Nor are they encouraged by most jobs. It’s hard to stay dedicated to a goal when management shifts you to a new project every 3-6 months. It’s hard to commit to quality when management cares more about meeting a marketing-driven release schedule. And after too many 60-hour weeks, it’s just plain hard to give a sh*t about much of anything.

Obviously I have no idea where your workplace falls on the spectrum. But I do know that the difference between “good” and “bad” programming environments is vast, so I imagine the difference in the code coming out of those environments is also vast.


[Note that the below comments are again made without knowledge of who you are hiring, and what sort of software you are trying to get written…]

I know your Universities operate rather differently to our own, and in fact there was a lot of fuss (almost exclusively negative) when Melbourne University decided to take up a “US-style” model to replace its existing model, which basically meant channeling students into one of about 6 generic courses and forcing them to specialise as post-graduates. Apparently it saves them lots of money, but it certainly reduced the University’s appeal to the students.

I taught at a different university in Melbourne for a number of years, including writing lecture notes for various subjects, as well as assignments/exams etc. When doing these things, I guess you always try to influence students to approach things in the manner you describe, which is easier said than done. Unfortunately, one of the largest problems is dealing with students who are not interested in learning, but passing; students who see success as a degree that helps their job interview, rather than skills that help their job performance. Unfortunately, a lot of pressures pile up - social pressure, financial pressure, time pressure… with assignments and exams usually accumulating around the same period, you simply cannot afford to waste time properly analysing and learning when you can get by on cut’n’paste for the assignments and short-term memory for the exams.

Where does all that leave students? Often failing to properly understand what their degree claims they have been taught, and that is before we begin to worry about a dedication to quality. Are such values any better in graduates from other disciplines such as the arts? As a general rule, I very much doubt it. What I think you are seeing is students in those disciplines who have chosen an area of study to match their interests, and people who are taught to produce work that inspires them (and if it doesn’t, change what you are doing to something that does).

Inspiration like that would help software developers, but it would not make them. If you took those students and sat them in front of a task of your choosing, rather than theirs, where they didn’t have any creative control (as they would in say, marketing, or graphic design), and I think you would find their dedication to quality would quickly dissipate. It is one thing to have dedication to a goal and process (eg. writing) of your own choosing, but it is a lot harder to dedicate yourself fully to someone else’s, unless you find the work challenging.

And I think if you hired people from other disciplines you would be drastically undervaluing the technical skill and training required to program well. From my teaching experience, I would say that only around 40% of the students I saw have a genuine aptitude for programming. Another 30% can fake it, until you throw them into a situation that requires them to apply the skills they have learnt to an entirely new and foreign domain. If you took a group of people from other disciplines, I expect these figures would be much lower still.

Keith is indeed a rare beast (and a self-taught one at that!) and one that would be valuable at any software company. But you need an intersection of the above traits and genuine programming ability for it to work out. When you consider that to “pass” at university you need to know only 50% of what you are meant to, that really means you need to be looking at the top 10%-20% of graduates before you find both skill and dedication. Below that and you will find students that got there with one of the two, but not both.


PS - I should add that I also agree with Katherine’s points, and that I am very lucky to have found an employer that allows flexible work arrangements, pays for any overtime (which is never a requirement), and produces software that I find genuinely challenging and interesting to work with.

I can see why. They may call it “US-style,” but that’s not at all how US universities work.


I may be oversimplifying their model somewhat :smiley:
I must confess I didn’t read about it in much detail… I just skim-read the plan and the student reactions.


I think what Jaysen is arguing for is programmers who also have a fair dose of liberal arts training in their background, which matches up creativity with critical thinking skills, rather than an exclusion of technical skills. Having worked at a college, the one thing that industry always begged for was graduates with social, critical thinking, writing, communications, and technical skills. The latter being the one they felt they could most easily find, the four previous skills the ones sorely lacking. A common refrain was that “we [the employer] can teach them the technical skills, but we can’t teach them to think.”

The million dollar question is: can anyone else?

While I was there, I actually argued for an introduction of a couple of semester-long subjects for first years: one entirely based on debugging skills, and how to apply yourself to tracking the bastards down; and the other one that was entirely about problem solving and critical thinking, using tasks that required you to nut out complex problems rather than churn out copycat code.

Unfortunately, we had to teach databases, and we had to teach operating systems, and we had to teach data structures, and software engineering, and 5 different languages and the latest .NET platform technology and web programming and scripting and “ethics” and numerous other things that will be redundant in 3, 4, or 5 years time, and hope that the “thinking” stuff filtered through in all the other subjects. It doesn’t.

Why equip them with skills (critical thinking, problem solving) that could last a life time? And as an elective, would any students choose it anyway? I doubt it.


Reminds me of when I was working at a university in London. In one of my first years there as a full-time lecturer in the mid-80s, I had a 4th year BA class, of whom a number, at the end of the year came and said to me, “Mark, thank you very much … you are the only teacher who has made us think in 4 years; that’s what we thought we were coming to university for!” In my last year, the best student in the 4th year, a very bright girl, came to me and said, “Mark, your classes are too difficult; we have to think!” And she was not being facetious. It saddened me immensely.

How refreshing to hear of business and technological firms calling for people with liberal arts skills. For most of my life, the cry has been, “What’s the use of learning languages? We need people with business/technical training … they can pick up languages later if they need them.” So short sighted …

Unless you have any objection, JRP, I’ll send part of your reply to one of my students here, who was basically asking that very question. Mind you, it is begging a question to claim that a BA in English Language and Culture from here will provide the students with much in the way of critical thinking.


I studied graphic design at a time when Macs weren’t yet ubiquituous in the industry, and certainly not at colleges - we had three machines for the entire art department that had to be booked days in advance. But most of us could see that the industry was rapidly heading that way, and often bemoaned how much time we spent working on layout pads instead of being trained on the Macs.

The dept. head’s response was exactly that: “Anyone can teach you how to use a Mac. We’re here to teach you how to think.”

And it’s absolutely true; in my first two weeks at an agency I learnt more about Macs and the practical, technical side of design than two years of art lessons ever could have… and nothing about creative matters, because who has the time to sit down and teach the new kid how to brainstorm?

I suspect that these days, in a time when all industry moves at breakneck speed, this is all even more true. So thank goodness for enlightened lecturers :slight_smile:

JPR hit it on the head. It isn’t the skills that folks need, it is a brain.

I don’t have a degree. At all. A basic high school diploma is as far is I went. I was fascinated by computers in the '90s so I went to the library, checked out a book, borrowed $200 to buy an old 286 and started learning. Now I run a group of folks responsible for 400 systems serving major internal and internet sites for fortune 500 company. When I started staffing my boss said that we needed to find folks “as crazy as you are” to be successful. Asking him what he meant his reply was along the lines of “You never seems to accept that there are limits to what you can do. When you hit the end of what you know, you start digging into every resource we have to find answers.”

With his help I managed to get 5 people that are apparently as crazy as I am in the first year. The 6 of us managed to do the same amount of work as a staff of 20 managed by one of my peers. I am doing very little different than he is, I just have guys who love what they do and like the challenge of doing it.

Which illustrates a point that JPR didn’t hit. Folks who are cross functional like KB are that way because they want to be, not because the have to be. I had a guy who HATED computers but wanted a job because he had a BS in CS and left that he should be working in the industry. He was the only person who had a glimmer of possibility for the job we had so I hired him. Nothing but trouble for the next 2 weeks. I found a BS in bio-tech with a minor in CS and i would clone him if I could. He is an unstoppable force in problem solving. I have had to force him to go home and sleep when difficult problems presented himself. Oh and he is the party guy (big party at his house tonight actually).

Anyway, the point is that I wish folks like KB, matt, AmberV, and the myriad of other very tech folks on the forms were here where I could make them offers (excluding feather brain, but I am sure I could find a use for him – just kidding). Of course they wouldn’t accept them because folks like us would rather take a chance on our own and this corp is no longer willing to offer the incentives to get folks like us to come on board.

Oh well. I will just have to find some young new graduate to twist and beat – I mean mold and shape into a productive person.

Yep, completely understand and agree with what you are saying now.

And you are right - most education systems are too intent on making students remember how to do stuff, rather than the processes to figure out how to do it on your own. But getting students to understand the latter is more important is very hard, when all of their assessments are based on the former.


PS - Surely you need a brightly coloured feather duster to clean the monitor’s of the other hard workers?

Feather duster/monitor cleaner is a thought. Some that I had were
• squeeze ball stress reliever with feedback
• key beard crumb cleaner (would need to work after office hours)
• perigean fodder
• general catch all for anger and frustration. Next time you find a nasty gordian-code-knot mutter “that damn pigeon” under your breath. It is amazing how well that works.

I am thinking of begging KB to start a section on the forums for things like this and the SVN thread. More focused on real world work practice and tech. Some things that I thought would fit there nicely are the SVN thread, maybe this tirade on hiring, some of bird-brain’s OS-X tips, AmberV’s entire brain.

But then again, we are not here to talk tech real life practices.