Typewriter emulator

Whilst thinking about full screen mode for the next version of Scrivener, I came across Khoi Vinh’s ideas for an old-fashioned typewriter emulator over on his Subtraction site:


I know that Jesse Grosjean of Hog Bay Software (hogbaysoftware.com) is thinking along similar lines with his program, WriteRoom (which is currently a bit like the full screen mode of Ulysses implemented as a standalone application - interesting).

Anyway, I thought I would have a crack at implementing Khoi’s ideas, in the hopes of creating something that may be useful for Scrivener. The idea is really simple: a modern software program that is as limited but as satisfying as an old typewriter. Yes, it really could be one of the most backward-thinking uses of the Cocoa text-system ever. :slight_smile: The thinking behind this is that it forces you to move forward with your text rather than going back and tinkering with it, which should happen in editing after the text has been generated. You can download what I have so far here:

literatureandlatte.com/frees … Writer.zip

Please do not use this for any real world work just yet, as it is still a work-in-progress and there are a few bugs lurking, including one in the “Fix Text” feature that can lose some text. I just present it so that you can mess around with it and see what you think. These are the features:

  • Click on the green zoom button or go to View > Toggle Full Screen to enter full screen mode.
  • Hitting backspace while the cursor is at the end of text works as normal.
  • Hitting backspace when there is a selection or when the cursor is not at the end of text causes the affected text to be struck-through rather than deleted.
  • You can also use the hyphen key to strike out text, by typing over it.
  • When the cursor is placed before text and you start typing, the new text will overwrite the old text rather than get inserted, unless you select Edit > Insertion Mode. Even then, as soon as you move the cursor to a different area of text, Insetion Mode will end.
  • To add bold, just like on an old typewriter, type over the word you want bold again.
  • To add an underline, again as on a typewriter, type over the word you want with the underscore character.
  • Choose Edit > Fix Text to delete struck-through text and convert underlined text to italics. (There is a bug in this part somewhere. Also, this needs moving to an export option and there needs to be some option as to whether underlines are translated or not.)

I’ve been in touch with Khoi, and he is quite happy with the results so far, although we do have some conceptual differences, so if it is ever released separately from Scrivener it is unlikely to be called BlockWriter (unless it fits with Khoi’s ideas enough).

Let me know what you think - I actually really like it, although I haven’t decided whether that is because it is genuinely useful or because it is a fun gimmick just yet.

You know, there is something about this concept that I really like. Perhaps it is, as you put it, the gimmick effect right now. Well, call me archaic, but as I think you already know, I actually do use manual typewriters when the mood strikes. I own four, and I love them all with equal zeal. However, what I do not like is the integration of the text that I create using my typewriters, and the rest of the world. I am very much a product of the digital era. I use organisers and powerful mind mapping applications that would take ages to implement using a cork-board with index card and string (although I certainly have done that, too!) Getting text from typewritten pages into the computer is a laborious process, even with good OCR.

I am writing this response using BlockWriter, as a matter of fact. It is interesting, because recently I have taken to pretty much doing what this makes simple. When I am writing, instead of deleting things that I have written, I will select them and apply the over-strike font garnish to them. This way, I retain a fixed copy of how my mind was operating when a certain piece was written. Additionally, I use underscore to signify text which has been added to the draft after the initial typing phase.

Now, with BlockWriter the latter function would not really be used, as one would be “typing forwards,” and not doing any insertion or editing, other than scoring out bad attempts. Anyway, enough blather. If this application emulated the physical exertion that is required to use a manual, it would help with the blather-tongue, too. :slight_smile:

Things that I like:
1) Utilising backspace, rather than going with the original concept of disallowing it entirely. The fact of the matter is, with an effortless mechanical interface, we are going to type at a much faster rate than with a manual. With a manual, you must slow yourself down, and apply a strict cadence, lest you find the hammers in a tangle and your paper strewn with difficult to remove typos. The computer does not have the hammer problem, and as far as typos go, why enforce a typo at the sacrifice of speed? One of the reasons why I like using the computer to write is that the speed affords me the ability to lay down text nearly as rapidly as I can form it in my head. With prose, this may not be true (and indeed, I have never found writing prose to feel limited on a manual, or even when using the form of accelerated handwriting that I prefer), but for all other things, such as this comment, I can produce text far faster than a pen can scratch, or the hammers can cascade. That the backspace key does turn into a strike-out function when moving the cursor back into already minted text is a nice subtle transition. Leave it there for typo fixes, but that’s it.
2) Taking advantage of it really being a piece of software for things such as striking out a sentence. Rather than bang-bang-banging on the hyphen key, I can just select a range with the mouse, hit hyphen and it’s all struck out. There is no need to emulate the physical aspect in this case. In this vein, bulk underline should be included likewise.
3) The page that I am producing here really does look like something that came out of a typewriter. I like that. While this is something not addressed in this implementation, you might want to give it some thought. Part of what makes digital writing difficult for me is the uniformity of text. Scanning over text that has been written makes my mind go a little dizzy because there are no minor deviations in its presentation for the mind to grasp on to. Contrast to a typed sheet of paper which has subtle variations in the darkness of each stroke. The baseline is not going to be perfect. Margins drift slightly. There are variations in the fibres and reflectivity of the paper. Et cetera. These little things give the brain something to grasp on to and move itself about as a conception. Reading over text is easier, because you sub-consciously recall all of those little hooks in a section. Finding a sentence in a stack of pages that have been hand-typed, as opposed to a stack of pages that came out of the printer, is far easier! So here is an idea, what if BlockWriter introduced minor variations in a number of factors, such as the ones listed above. They would need to be awfully subtle, truthfully a good typewriter produces a pretty clean page, and in fact the more subtle it is the better this concept works. Stylistically exaggerated variation would defeat the purpose.
4) Adjustable background dimmer. Pure black creates a high-contrast situation with the pure-white that is a bit much for my eyes. Allowing a small portion of the background applications to bleed through does alleviate this. However, I much rather would prefer colour options. Even typewriters do not use 100% perfectly white paper and perfectly black ink. The default contrast is a bit much.

Things that I do not like so much:
1) When the scroll bar finally appears, the whole text buffer jumps over. It would be nicer if the scroll bar appeared outside of the text area, and faded into existence rather than the jarring effect. I’m sure that is something you already identified, but did not see the need to spend XX hours developing for a prototype.
2) The additive type-over feature from the original concept would actually be nice, as it would help enforce forward-typing. Right now, you can kind of cheat by typing over existing text. I understand this was probably excluded for timing reasons, as with the scroll bar.

In summary, I really like it so far, but I will be trying it out for a few days and I will let you know how it goes. I am curious to see what I feel about it once the gimmick phase dies out. I suspect I will enjoy it, since I am a typewriter person already, but we shall see. I do think you have struck a good balance between mechanic emulation and what is not necessary to emulate.

Suggestion: An export function which automatically applies all strike-outs, removing them from the text. Export should be file and clipboard enabled. This would require a little bit of logic, such as in the case of “island” strike-outs, where a single word has been struck out, but not the space around it. Simple removal of struck out items only would result in a double-space being left behind.

Oh, and I would not so easily dismiss it from Scrivener! Having it as a mode which can be toggled on or off would actually be interesting. Obviously, most people would never use it, but if you have the code-base lying around, why not? I think a number of people would be interested in using it, at least as a step in the writing process.

Thanks for the feedback, AmberV. I think something like this definitely has legs, and I do think it will get incorporated into Scrivener in some way, too. Any suggestions you or anybody else have about how to make it more typewriter-ly and yet intuitive would be greatly welcomed. Before I reply to the points you raise, here are a couple of thoughts I have:

  1. Jess Grosjean of Hog Bay Software has suggested that the close button and slider in full screen mode should fade in and out when the moused over rather than being visible all of the time. I think he is right. (We are currently sharing ideas, as he is working on an interesting comparable project, WriteRoom, of which I daresay you are aware.)

  2. I think I actually prefer the white page with black text over the old-style computer monitor text (eg. green or amber on black) that most full screen apps default to. Although research has apparently said that the black on white is harder on the eyes, it is actually what the eye is used to. I hate forums, for instance, that force me to work in green on black. I’ll come back to this, though…

  3. I am thinking of using this for the full-screen mode in Scrivener, but with another editing mode, too. Perhaps the background could be blue instead of black when editing… Dunno. Just playing with ideas at the moment. It would be cool if Scrivener’s full screen mode could be a little more original rather than a Ulysses clone.

  4. This app badly needs “typewriter scrolling” (yes, another Ulysses first :slight_smile: ). When typing at the very bottom of the screen in full screen, it is really annoying.

To address the things you like:

  1. Yes, this is what I found. I tired having backspace always strike out text, but it didn’t feel right. Like you say, you can type much faster on a keyboard than you can on a typewriter. I can type at around 80 words per minute on a good day, but I make innumerable minor errors that I backspace out instantly. In fact, I didn’t even realise this until I prototyped this app with backspace X’ing out the last letter. Every other word ended up with an X towards its end… I think Khoi Vinh disagrees with this one, but I definitely like my backspace at the end of text. Incidentally, one of Khoi’s original ideas for BlockWriter was an option to have a typewriter keys sound play as you typed, but the speed with which you can type on a modern keyboard was an issue here, too. I tried it - the sound couldn’t keep up. I find exactly the same with that Typewriter Keyboard program (and it is distracting rather than cool in practice).

  2. I have just implemented bulk outline (haven’t uploaded the update yet, though). I might also implement bulk bold, perhaps by boldening text if it is selected and you re-type the first letter. What do you think?

  3. Hmm… I’m not so sure about this. You could, technically, colour each letter with a random shade of very dark grey to black, but to me, this is taking things a bit far. :slight_smile: I may well play around with this a bit later, though, just to see how it looks - I doubt it will make it into the final implementation, though.

  4. I agree - I prefer a faded out black rather than the pure black, too. What I really like about this is that it feels like you are looking at the page and everything else is still there, but is unfocussed and in the background - just as the rest of the room would be whilst looking at the page in your typewriter. Colour options will definitely go in the preferences when I polish it up. However, I may limit it to shades of black and white (ie. greys) to maintain the typewriter mataphor.

And what you didn’t like so much:

  1. Scrollbar - I totally agree. Currently it is just using the default Cocoa scroll view behaviour. When I polish things up, I will fix this.
  2. Additive typing - I looked into this, actually. It would be more effort than it is probably worth, though. One of the Cocoa text system engineers gave me some info on what I would need to do. The problem is that you are never going to want to print out your work looking like that (waste of ink), and at the same time, the text system doesn’t support overwrites. I could do it using some custom drawing, but then what should happen when you copy and paste to another program? Which text should be copied, the writing underneath or the overwritten text? To solve this, I went back to the typewriter metaphor, and asked myself, when you overwrite text on a typewriter, what is it usually for? Well, it’s usually because you mistyped a letter so you go back and type over it (maybe Tippexing it out first) - that’s why I went with the overwrite. I could just disallow overwriting, though…

An export function that gets rid of struck-out text and allows you to decide what to do with underlined text will be added later. The current “Fix Text” function is just a prototype of the code that will be moved to the exporter.

Anyway, thanks a lot for taking the time to feedback on this app. I’m looking forward to enhancing it…


The first impression I get is an eerie feeling of being back in time, when I used a typewriter because where I grew up word processing was only science fiction. Like AmberV, I also own two typewriters that I use once in a while, just because the mechanics of it forces me to change my writing patterns The same reason why I write longhand, using a fountain pen, most of my first drafts, even if they are novel-lenght. So BlockWriter could be a nice addition to my writer’s toolbox.
Besides the excellent comments by AmberV, I would like to suggest the following features:* The ability to change font size. It would be great if it show on screen as a real pica or elite type would on a typewriter.

  • The ability to change background color. I agree that computer generated white is brighter, and more tiring than paper-white.
  • I could be awesome to be able to setup margins as in a real-typewriter, giving you a better sense of how much text you have written (word and character count are excellent for this, but I also like an at-a-glance impression).
    Finally, I’m very glad that Jesse (at Hog Bay Software) and Keith, are finally addressing this bare-bone, basic writer’s tools, but without the straightjacketing computer age concept of plain text (this is, to my mind, a conceptual problem with Ulysses). In the real world you can underline, overtype for emphasis, strike out to remove text, and so on. I don’t particularly like inserting programmer’s tags. This is why I see BlockWriter as a great move in that direction.[/list]

I am glad to see that is not a completely dead concept, as it sounded from the original blog post.

Yes, I am aware of the WriteRoom project, and in fact have even submitted a few thoughts to that forum. I even submitted a multi-column editing feature before stumbling across your MyColumns prototype! Now that I have played with it, I agree with you, the overall experience is not as pleasant as reading; which is a real shame! I was racking my noodles, trying to think of a way around, and the only thing I could come up with was a time-delayed bulk insert, but how do you convey that visually without completely freaking out the user? While I like the concept of fading GUI elements, the main problem with this concept is that if you are unfamiliar, or are suddenly using the program on an unfamiliar screen resolutions, it can mean a lot of Hunt and Click. This is one problem with WriteRoom (and Ulysses) scroll bar. It is located directly beside the typing area, but it is invisible. Consequently, it is more difficult to quickly utilise it with the mouse, because when you start the actual movement, you do not know precisely where you are going with it. You have to travel, feedback to fade-in, stop, and then manipulate. Though, on the other hand, Having elements that are essentially invisible until needed is a good thing. What if the ‘X’ and the slider were barely visible and then faded up as the mouse comes within 50 pixels of them? Oh, as an aside, I always liked your Scrivener Gold’s scroll bar the best because even if it were to be invisible, you know precisely where it is – as far over on the right side as you can go. Finding it becomes irrelevant, it is simply a matter of tossing the mouse over to the right-hand side. Utilising screen edges is important in all things, Apple is very aware of this. It is my belief that these things become even more important when they represent functions which step outside of the primary “intent” of an environment. The mouse is wholly outside of the intent of BlockWriter, or any full screen situation, which is all about text and typing.

I definitely agree with you on the matter of dark text on a light background. I have never been very fond of the default settings in Ulysses, and consequently most other full screen implementations, since they all went after the console look too, with the exception of one or two. Here is a small thumbnail screen shot of my colour settings in WriteRoom:

As you can see, I am using an off-white slightly pinkish cast; there is a reason for this! The curtains where my typewriter sits cast this colour across the page when I am working in there. The brightness is very carefully chosen. I believe that, while the literal contrast is far weaker than actual ink on paper, this ratio much more closely emulates the “feel” of ink on paper. The darker page colour compensates for the difference between an emitting surface and a purely reflective surface. The text colour itself is about 86% dark, with a sepia cast. This seems to anti-alias especially well with the background colour.

Colour aside, you have accomplished something extremely important that amazingly, no other full screen implementation seems to have sufficiently addressed. That is, the presentation of the text follows simple typographic constraints that vastly increase readability. There is a good strong left and right margin, and enough top and bottom margin to keep text from “floating” outside of the “page.” There is that all important amount of line spacing, which looks about like the second stop of most typewriters, the 1.5x line height setting. This is my favourite setting when I know I do not need to double space. Double spacing on a computer screen is completely useless (More On That!), but keeping lines distinct is vital. All other full screens use a 1x line-height which for me is very difficult to interface with. One improvement you could make is to add an option to either indent or space paragraphs visually. This would not add a real tab or newline, but a visual one, to help paragraphs stand out.

As a default mode for Scrivener, you would probably run into a little friction. I say it would make a superb secondary mode though. It is novel; it is a tool which approaches the software philosophy in such a way that it stimulates through its simplicity. Where the Ulysses full screen philosophy simply removes distraction; BlockWriter removes distraction and introduces a physical element that is largely lacking in the software realm. We lose the sense that the forging of something is derived from anything else; and the necessity of loss/gain, et cetera. Philosophical notions, no doubt, rooted in my own subjective approach to life, but perhaps useful as a different perspective on things. One of the things that I very much like about writing on a manual typewriter is the tactile nature of it. It is to writing what sculpting is to the art of form.

Agreed, pinning the working line to the centre of the monitor would be quite nice, especially if you managed to implement a bit more intelligently than the Ulysses team did. Their implementation is just quirky enough that I find myself not using it a lot. But don’t feel as if you are copying Ulysses on it. The concept of pinning text in the centre of the monitor is actually quite old. I remember from my DOS PC days, there was a key called Scroll Lock which did precisely this in any application that support it. It locked the cursor and input to the vertical centre. Amusingly, the key still exists on every PC ever shipped, but I don’t think it has had an actual function in over a decade.

Now, in response to the original line items.

It is interesting that you brought up the introduction of sound into the application, for that would certainly be one of the main “typewriter-ly” things missing. Someone in the WriteRoom forum had the same notion, but I had my doubts on how effective it would be, based on two things: When typing on a manual, we type with a steady cadence. You queue up your letters and execute them in a careful staccato that, for a good typist, is around 60 WPM. On a computer we tend to type in bursts, because we are not constrained at all by mechanics. Since some word forms and letter combinations are naturally easier to type than others, they tend to “roll off” the hand. While this is a natural inclination on a manual, you avoid it because that sort of habit generally leads to a jam. And of course the second problem is speed itself. I can type over 125 WPM on a computer, with bursts of 150 WPM. As I put it in the WR forum, I can only imagine that with sound effects, such typing would probably sound like stepping into a 1940’s newsroom right before deadline. It sounds as if your experimentation has confirmed this.

I do not think that sound is something that should be completely discarded, however! There might be some other solution that would allow the senses to participate more, that might not be realistic from a typewriter perspective, but provide that little extra tactile feeling that the human brain so enjoys. Like the clicking noise on an iPod to make up for the complete lack of any tactile response from the physical controls themselves. Without the clicking, it is more difficult to navigate the menus. Nothing has changed by the noise, yet it is suddenly dramatically easier to “feel” your way through a menu if it clicks. How about: A similar, subtle click each time the spacebar is pressed? Maybe, every three or four keystrokes? It would be more abstract, but it would provide a bit of a metronome for the mind to “ride” as you physically convert your thoughts into words.

Bulk bold: Less intuitive, but useful, as making things bold is even more mechanical than underlining, right now, since you have to flawlessly retype what you wrote all over again. One has to start wondering though, with these “bulk” actions in place, what justification exists for omitting the standard keystrokes as well. I like the idea of using the old-fashioned method, as it is just part of that counter-normal stimulation process that BlockWriter presents, but for those who are less into that concept, can you justify not having Cmd-B around? I know that I, even if the standards existed, would still use the emulation techniques. It simply feels more tactile to underscore a section with the underscore key.

I am fully aware that my thoughts on this were off the deep end. Truth be told, the typographical conventions that you are using, already increase the readability of BlockWriter so much, that subliminal variation systems might just be overkill. It is just one of those completely off the wall things that “would be cool,” you know? What if BlockWriter looked like a scanned document as you typed it up? Would that increase or decrease the experience? If the implementation is impractical, but the concept is good, is there anything that can be done as a substitute?

Another nice thing about the “curtain” versus “wall” is that I can finally have reference material available in full screen if I want it! In fact, I am utilising that ability right now. I have my browser window with your post open to the right of the typing area, and I decreased the opacity so that I can read your response as I type. In WriteRoom, I would have needed to print out your comment, first, or simply use it in windowed mode.

On the restriction of grey-scale as colour options. I have another idea. If you want to be realistic, in a physical typing environment, unless you are typing in the middle of Wal*Mart under a battery of 9500º arc lamps, pure shades of grey simply do not exist. Even if you are sitting out in the sunlight, most of the time atmospheric effects or the reflectivity of the immediate environment will not result in a purely white colour base. I’d say most people typed indoors, though, and once you get indoors you have curtains, artificial lighting, firelight, et cetera. What you actually see is going to be a casted hue on the paper, most likely a yellowish or warm hue cast. The main reason that I just just a touch of colour in my setup is because stark black & white, and even more pleasing, yet still neutral, grey arrangements, feel “dead” or oddly surreal to me. Add just a little warmth to the screen, and all of that goes away. Something that I do quite frequently is adjust my System Display settings to use the D50 white point calibration. This is what a lot of graphic artists use to mimic gallery lighting settings, but I’ve found it makes looking at the standard black on white text entry fields a lot less “jarring.”

So, my idea is right along those lines, actually. Instead of having foreground/page colour wells (restricted to grey, even), have a Contrast slider that simultaneously decreases the brightness of the page and the darkness of the text. Then have a second slider for colour temperature (though perhaps calling it something less technical). Fiddling with that would add a colour cast to the text/page greys. Do play with Apple’s screen calibration white-point slider to see what I mean. I don’t know, I think having these two sliders would get most people precisely the preference they want, within the constraints of the typewriter look.

For the rest, there is always that alternate mode. WordPerfect 5.1 blue/white, or 1984 terminal screen. There are a lot of people that do like that. Scrivener should not lock them out. But for people that like the look of a typed/printed page, I like the two slider idea. Now the question is whether or not Apple provides access to a colour model that makes this kind of adjustment easy. I wonder if not actually changing the colours at all, but applying a real-time CoreImage filter effect to the display would be the solution?

Now for the negative bullets.

I agree, visual over-typing would be fun from an emulation standpoint, but it does serve little practical use. The mechanical process of applying liquid paper and typing over a bad section did not even occur to me, as what the current over-typing metaphor relates to. You are right though, that is basically all you are doing, sans all of the fumes and sitting around for two minutes waiting for it to dry. :slight_smile: So the question is whether or not it is something that should be allowed. If the purpose of BlockWriter is to encourage “forward writing,” in the same manner that a typewriter does, then I think it should be disabled and made so that any key you hit will insert an overstrike. Why? Because even though this function is possible on a typewriter, because of all the things we are sans, it is much, much more difficult to execute it. Thus, when you are typing out your prose on a typewriter, you generally do not work with the liquid paper or the Tippex until it is time to revise or correct typos. Messing around with sticky fluids and waiting for them to dry completely halts the writing process, and thus marginalises its usefulness as a quick edit. Forward writing continues. On the computer, all of these steps are left out and the end result is displayed instantaneously. The temptation to edit while writing creeps in, and the forced forward writing concept withers. So that is my opinion.

It comes to mind that a lot of these restrictions are going to be personal in nature. I wonder if a preference section with a set of check boxes to disable/enable some of the more strict features would be a good idea? Perhaps this would alleviate the need for “modes.” Writers who do not want the forward writing ideology foisted upon them can simply turn off those features, set to use unrestricted colour pot selection and viola: WriteRoom/Ulysses/CopyWrite/MacJournal/et cetera.

You asked for ideas on intuitive typewriter-ly things that might be missing. I think the largest disconnected right now is this: Typewriters produce fixed width, line centric output. Text editors produce variable width, paragraph centric output. In this sense, a typewriter document is much more like a Mainframe text file, which has a limited length buffer for every line, whereas the UNIX/PC text file is a stream, and line endings are simply a display standard. A text editor could, if it was decidedly odd, decide to display newlines as bowls of fruit instead of vertical spacing.

Okay, on one side of things, I do not think the user should be forced to carriage return when the line gets to the end ding. That would be an example of taking the metaphor too far! But where I do see problems is when you do things which come from the typewriter world, such as adding format in a mechanical fashion, or over-typing. These things are so decidedly unusual for a text editor, that you forget that you are still working with a text stream. Ploughing over a newline causes paragraphs to jump around, for instance. Of course, just removing over-typing altogether would solve this problem.

Here is my big idea of the day, though. My little pet, of course, annotations :slight_smile: I said I would get to double spacing, so here goes. Double spacing is generally pointless except for aesthetically speaking, on a screen, because we cannot go back and add text in between lines, but, what if we could? Like on a typewriter, ribbon select to red text, and then go back and add comments in between lines? This would mean that ribbon select is actually two things: text colour selection, and implicit insertion mode. However, it would have an important distinction from “black text” insertion mode that currently exists. Instead of inserting into the text stream, it would create Scrivener annotations. What we are essentially talking about here, is re-displaying the annotation system in a more typewriter-ly fashion, and when in typewriter mode, making the addition of annotations much more like using a typewriter (with magical powers).

This suggestion might be completely impossible to implement, and it is a little hard to describe, so I made another illustration, which should be self-explanatory:

Well, the main problem is that it is displaying text at odds to streaming, and since BlockWriter is paragraph centric instead of line centric, how does it know how to couple these two text areas together? Of coarse, if this idea is impossible, just showing annots. and footnotes as being right in the text stream with a different colour, that is fine too. We could still use the ribbon select idea in that case. Our magical typewriter could have a special ribbon colour for footnotes.

I know that I had another idea, but it is almost time for my mid-night nap, and I am nodding off whenever I close my eyes in an attempt to recall it. So, I’ll post if I think of anything further!

Wow… Thank you both for the feedback. I am going to write a lengthy and more thoughtful reply as soon as I get chance (my day job is going to dominate everything until Thursday). Until then, I would love to hear your opinions on the idea of Scrivener becoming really pared down (not losing all its features, but being simplied drastically). See:

lit-n-lat.blogspot.com/2006/06/o … iters.html

Feel free to start a separate thread about that if you are interested. Either way I will write a proper reply to your BlockWriter thoughts here as soon as soon as possible once Wednesday is over.

I really do appreciate you taking the time to post all of this very valuable feedback.

It is too bad finding those old typefaces in modern fonts can be so difficult. I would love to see my Olympia SM-9 face in a font form, but have not been successful. You might be interested in this font selection. Keith a “defaults” accessible option might be nice so that we could use our preferred monospace font. Personally, I am not a huge fan of Courier New’s legibility. But yes, being able to select between 10 and 12 pitch would be neat. Due to the way computer screens work, this would not result in a perfectly identical display across systems, though. I wonder if there would be a way to automatically zoom a font depending on the user’s settings, so that it always appeared as though you had a sheet of typed paper taped to the screen. This should be readable for everyone (if not, you probably need glasses, or have your monitor too far away from your face).

I just posted another response, see section {m4} and see if that is something that would appeal to you. I think it would be a lot easier to set things up using these two sliders, than to have to try and recreate something using various colour pots.

This is an (in my opinion) [b]essential[/b] remark! As I was falling asleep a few minutes ago, I realised what it is about this whole movement of stripped-back writing tools. It’s not that we need to remove the power of the computer; it is that a writer does not actually need the power of the computer, which has been traditionally bestowed upon her/him by the “text editor,” or even worse, “word processor.” The last word processor I used that seemed to actually be designed with a writer and mind, and not an amateur layout designer, was Word Perfect for DOS. Before that, WordStar.

I drift. The primary thing is this: We need a different set of tools than any text editor provides. Look at it this way, when you are typing on a typewriter and your eyes notice an error five lines up, what do you do about it? You grab a pen, make a quick standardised or personalised proof-reading mark, and continue. Want to move a paragraph around, draw an arrow. You might have different colours for different types of notation. Slash out a part that should be removed, et cetera. The key is, your remarks are fluid and quick, and the result is a document that has one layer of text and a layer of instructions for handling that text.

The computing scenario, as we know, is entirely different. The instructions disappear and the text becomes a continually evolving work. On the surface this seems quite handy, but here is the fundamental problem. The problem is not getting side-tracked by what you have written a few minutes ago and wanting to change it. There is often no better time than right after you have written something, to mini-critique it! The problem is that the traditional computer interface forces us to makes these changes to completion whenever we spot them. Now, you could come up with a system of notation, and now that I have realised this, I just might create an ASCII based proof-reader system. But that is a pretty – well out of the box way of doing things. Most people, when presented with the power to insert text and infinitely manipulate existing text, simply attack the error and fix it, causing the WriteEditWriteEditEditEdit loop that so plagues modern writing.

So, quite simply, we need a simple notation system that we can slap down on our BlockWritten text as we type. Naturally, we would not want to perfectly mimic the pen, because most writers do not own tablets, and using the mouse like a pen is unwieldy to say the least. If you do have a tablet, do check out a software called Curio. It lets you draw right on your page. I absolutely adore Curio because I can use proof-reading concepts on the computer screen; creating quick instructions for later execution. But without a tablet, such usage would be clunky. So a system of adding mark-up that does not involve the actual process of handwriting and drawing lines around, would be what we need. Things could be done involving a combination of drag and drop, with and without holding down modifier keys, keyboard gestures, and such.


Problem: Move paragraph C between ¶A and ¶B.
Action: Triple-click paragraph to select it, drag it up. As you drag, the cursor becomes a drop indicator. When you get between A and B, let go. The text does not actually move, a circle is drawn around the paragraph and an arrow indicates where it was dropped to.

Problem: Split a paragraph.
Action: Click at split point, in red ribbon mode (see prior message on ribbon select concept), press the enter key. A ‘¶’ symbol gets inserted in red.

Problem: Highlight a double phrase or word usage.
Action: Select one of the phrases, hold down the shift key, and drag to the second phrase, let go. An arrow gets drawn across the next, and the original phrase is underscored in red.

Problem: Delete a paragraph.
Action: Triple-click (or drag click) paragraph, hit the ‘delete’ key. Paragraph gets slashed diagonally in red.

And so forth. The idea is simple, all proof-reading style event should be one or two clicks total. They should feel natural, but utilise computing conventions. Once learned, they should not require too much thinking. If I see a problem and want to make note of it for later, I should be able to just quickly slash out some notation, ribbon select (definitely need a keyboard shortcut for that), and continue typing right where I left off.

There are other computing tasks where this kind of work-flow is supported, but sadly with writing, the closest thing I have seen is Curio, and technically they do not even market their software on that. I am just using their brainstorming tools as a text editing environment. Indeed, there are some serious flaws. If you add some text, all of your markings lose their “link” with the text because they are on a separate layer and not linked to the underlying text.

The single most destructive mentality that computer age writing has brought is the concept of multi-tasking. Editing while writing, layout while writing (which Ulysses addressed); these things are all damaging to the writing process itself.

One nice thing about this concept is that since all of these marks are made using the text editor, they could be automatically ‘committed’ by the user. You could choose ‘commit’ from the menu, and it would step through edit asking if you want to have the software enact the change, do it yourself, or skip it for later. Kind of like the way spell-check works. Commit would, of course, automatically snapshot before starting, so your old version would be available.

Line one is a screenshot grab from BlockWriter. Nothing has been altered.

Line two. I scanned a sheet of paper and placed this texture behind Courier New. I then reduced the blackness to 74%, and adjusted the anti-aliasing algorithm in Photoshop to mimic…

Line three, which is a simple scan from my Olympia SM-9.

Note the subtle base-line drift, slight back-tilt letter-forms. Keith, of particular note, the variation between letters is not actually brightness, it is boldness. Unless you are using a poorly struck letter which did not fully contact the paper, most variation is in how much over the minimum amount of pressure required to make a crisp letter – has been applied.

I know, this makes the task of variation even more theoretical and completely beyond the tools provided by Apple. Some things would be random, but other things would be user effected. For example, boldness is effected by the speed and pressure of a typist. Since pressure is not measured on a computer keyboard, the software would have to guess at the psychological state of the user based on heuristics and speed.

All of this is pie in the sky, but it would result in utterly personal documents coming out of BlockWriter. Something that no writing environment does to date. I would go so far as to say, no computing environment period. Even artistic applications provide tools which give identical results for two different users. There is no “hand” in Photoshop. There are “techniques.” Typewritten pages have a “hand” as well. This is well known, and in fact scientific enough that law enforcement can use handedness to determine identity between typewritten documents. It is my belief that we establish a rapport with the pages we type, based on the psychometrics which produced it, allowing us to find things on that page easier.

Blah, blah, blah. Hardly any of this is applicable, and should probably even be in the off-topic section of this forum. But yes.

Honestly, Line Two is 95% there. Give the background a little texture, drop the contrast a tad, give it some environmental lighting, and that is going to be enough for anyone. If you randomised the baseline by +/-2 pixels, that would be it for what is technologically feasible in this decade.

Oh! And one other very important thing I thought of, but forgot to type of. I don’t know how often it is that I am typing with some book or other document that I have written sitting beside the typewriter. Full screen was a bit of a back-lash against the whole multi-tasking revolution, and as a cultural movement amongst writing applications, it served its purpose well, but it is time to go beyond that, I do think.

One very simple thing that already exists is making the “shield” around the paper semi-opaque. I’ve been using that a lot. When I want to see a source document I drop the opacity to “dim.” When I am writing something brand new, I pop it back up to 90%, no distraction; but textured, not this solid black that other full screen environments provide.

The second very simple thing? More than one document. Split screen in Scrivener serves a vital purpose, and is incredibly useful. What if we could have two documents “draggable” in the full screen area? Or even three? Why not? How would this work? Cmd-click three documents, hit “Typewriter Mode” and those three documents show up with the last clicked doc in the most prominent position. Grab a document with the mouse and hurl it toward the side of the screen to get rid of it.

This idea came around by thinking of how it would be nice to have “Draft One” with all of your proof-reading instructions on it, next to Draft Two, if you preferred to work that way, rather than use the commit feature.


Another idea is one that I floated in the WriteRoom forum, which basically takes the concept of Vim’s buffers into the easy to use modern era. In case you’ve never gotten much further in Vim than a wildly beeping computer and sporatic emanations of text, Vim allows you to have several files open simultaneously which, in its default mode, are completely hidden from the user, and there is not even a visual indicator that multiple files are indeed open. If you are typing in buffer one, and wish to type in buffer six, you would type :b6. While this might seem a tad clunky, know that all of Vims features can be accessed in a roughly similar fashion. So if you use that application constantly, it is second nature. The second thing to note is that the mouse is not touched. Vim was based on the editor Vi, which was invented long before the mouse came along. Another feature of Vim is the ability to view multiple drafts on the screen at once, in a split screen much like Scrivener Gold allows. You can split the screen, which will by default show the same file allowing you to be in two places of the document at once. But, this new split window now functions like a separate Vim editor. You can load up another buffer in it, and use it as a source reference while typing in the other window.

The idea that I proposed for WriteRoom would somewhat resemble hidden tabs. Stylised buttons which disappeared when the mouse was not over them, but with an important distinction: They can be accessed with the keyboard. Cmd-1 would load tab one, and so forth. This way, you could load three or four documents into BlockWrite at once, reducing the need to exit the serene environment that it provides. In addition to the concept of the hidden buffer environment, I do think it would be nice to have side-by-side display, as Scrivener provides, for certain tasks. There are just some things that we refer to more often that a hidden buffer would easily accomodate.

I created some mock up ideas of a more analogue typing environment. In this attempt, I wanted to use tools which were strictly available to Keith, as opposed to Photoshop anti-aliasing models and such.

For them, I scanned a full sheet of textured onion skin paper (from eSleek, which I recommend if you can get hold of. They are one of the last paper manufacturers producing onion skins that I know of), and did a little treatment in Photoshop. I reduced the detail of the scan, so that the result became more of an idea of paper, rather than a literal picture of paper. Putting digital text on a paper background is nothing new, but it has never been pulled off convincingly, in my opinion. The text nearly always feels as if it is “floating” over the background. There is no sense of integration between paper and text. Part of that problem is that the background is being too literal. The idea is to suggest paper; to recreate the feel of it, without necessarily showing it. This is a basic concept in art. I also added a little vignette, to draw attention away from the sides and allow the paper to feel less “flat.”

Then, using Pages, I placed this image as a background, and started playing with fonts. For this example, I am using the excellent Underwood Pro font from Vintage Type, which unlike most typewriter fonts, is hand-drawn, not scan based. While Courier might feel retro to us, it is important to remember that it was designed by IBM to be a modern, progressive take on what was then considered a standard look for user created type. It simplified the letter-forms, “modernising” them using 1950’s aesthetics. Using an older, typewriter authentic font only serves to increase the feel of paper, in my opinion.

With the font, I’ve matched the hue of the paper with the font colour to further the illusion of environmental lighting:

Red: 25 Green: 9 Blue: 0, with an opacity of 76%. It was my hope that using the opacity to adjust the darkness of the text would allow some of the paper texture and overall vignette to bleed through into the font. This would only serve to make the text feel as if it were more a part of the paper.

The last step is more controversial, using Cocoa’s text drop shadow feature, I created a very slight halo around each letter. I wish that this tool had the ability, like Photoshop’s version, to add a slight amount of grain to the shadow, as that would be more realistic, and more importantly it would make each letter individual. But sticking with Cocoa tools, we can still mimic the slight amount of fibre absorption around each letter strike, to a degree. The settings for that are:

Colour: full black
Angle: N/A
Offset: 0 pt
Blur: 1 pt
Opacity: 65%.

I experimented with matching the text colour with the shadow, but found that it caused the text to become much too blurry. Ironically, a more intense shadow colour increased the sharpness of the text considerably. Still, some will probably feel that it is too fuzzy. However, turning shadow off almost completely destroys the illusion, in my opinion. The text goes back to “floating” over a paper image. If anyone is curious to see what it is like, I can create a sample. An alternative is to use a bolder font.

So here is the finished result, click on the image to see a full sized version (and make sure your browser is not zooming the image):

Enjoy the amusement of my leaving in a typo on a paragraph about proofing. :slight_smile:

And lastly, an example of what a bolder font would look like, with no shadow:

Unfortunately, in the case of this font, it is rather much less readable in bulk amounts, compared with the VT Underwood font, but it serves as an example (although one interesting “feature” of the font is a little baseline drift).

I am not perfectly happy with the results. Using Photoshop or something, I could create something that looked almost exactly like type on paper, but like I said, I wanted to do something realistic. If the contrast feels a bit odd to you, my theory on that is this: While an actual scan of typed paper will be crisp white with black text, this combination is hard on the eyes after a while, and due to the light emittive state of monitors, it is not an accurate portrayal of paper. With a softer, more muted presentation, we can more closely attain the “feel” of looking at a sheet of paper with text on it, even though strictly speaking, the colouring is way off.

AmberV, thanks for all the input into this. I will post a proper reply as soon as I get time. Until then, I spent five minutes implementing your suggestions in your last post (thanks for making it so easy):

literatureandlatte.com/frees … Writer.zip

Not sure whether it looks like the text is still floating.

Note that I only very quickly made the background texture by grabbing a small section from your screenshot. If you have time to put together a decent 256 x 256 tiling texture I would be very grateful. Also note that this still uses Courier New, as I have to use a font that everybody has. Underwood Pro may look better, but it’s $20 so even if I buy it, I can’t distribute it. Users may want to try it for themselves, though, when BlockWriter eventually gets Preferences (bear in mind that Preferences will be one of the things added when it gets polished into something that is not just a prototype/experiment).

Oh, and another thing: this presents a problem if implemented with Scrivener. Font “bleed” and colour are an actual font attribute that you would only ever want in typewriter mode. This would mean that this mode would need temporary attributes (which Scrivener currently uses for different coloured text in full screen mode), which I was kind of hoping to get away from, because it means that any coloured text is “masked” by the temporary colour… Something for me to think about.


I just took a glance at the “free stuff” page (wanted to send a link to blockwriter to a writer friend) and didn’t see blockwriter listed, so I sent them the direct link to the download instead.

Just wondering if that’s not listed on purpose or if it was an oversight…

It’s not listed yet because it’s just a prototype, and the name “BlockWriter” belongs to Khoi Vinh of subtraction.com. If he likes it enough when I have done more work on it, it will be made available properly, otherwise it will be renamed. Until then it will just be available via the direct link posted here or on my blog, but of course anybody is free to try it out.

I initially had some difficulty getting the new version to work right. The background was showing up just fine, but the text effects were not. I thought perhaps you had forgotten to enable that in the distribution version, but when I tried it on a different computer, earlier today, I saw that it looks wonderful. So I figured out that I probably just needed to wipe the preferences, and that is just what did the trick.

That you are using Courier instead of the premium font is something I expected. I don’t believe VT sells a distribution license for their fonts, unfortunately. So in fact, while I did the demo using Underwood, I specifically designed the effects to work well with Courier New as well. Fortunately, both fonts have a thin lined presentation, so it was pretty easy to find a balance. I think the biggest issue might come up with people who prefer Monoco, or old Courier to Courier New. Those both have a much thicker presentation and the bleed effect will make them quite blurry and over-bearing. Since this effect does embolden Courier New, I suspect that will alleviate people’s problems with it, as one of the biggest gripes with it is how slight the font feels.

I wonder if perhaps the problem of conflicting styles could be solved by simple user preference? In the preferences, have a checkbox that is on by default, which says “Override font style.” This will enable a font selection interface, and a small message warning the user that colour and style will be temporarily masked while in typewriter mode. When the checkbox is un-ticked, the settings from the RTF file will be displayed directly. Whether or not the paper background is visible in this mode is your call. My vote is to remove it entirely. Just show exactly what the user has in their RTF document. This preference could perhaps even be accessible when in Typewriter mode, over by the dimmer or something.

But anyway, your quick implementation looks great! I think the text integrates well with the texture, perhaps even a bit better than the example I posted, which was a touch too blurry. I will be curious to see what other users think, and I will definitely be using it quite a bit in the next few days. You can prototype what you think will look appealing, but only after using it for several hours can you really tell if you’ve hit the “feels right” zone, or not. My biggest concern is that it will never slip into the background and become an “invisible” appearance. Previous attempts that I have seen at establishing this look have had that problem of feeling gimmicky and never sublimating into the background of the eye. Fortunately, the main reason for this is, in my opinion, the “float effect,” and since we have pretty much solved that problem, we should be sitting in a pretty good position for it to have a long-term visual appeal that does not pop out and become tacky over time.

Well, I look forward to seeing how it feels after some use too. :slight_smile: I will think about the Preferences at a later date - that will be one of the last things I will do.

I should have mentioned that I have only implemented the new effects for full screen mode at the moment (purely because I did it very quickly). Thus, if you start typing before you enter full screen mode, you will not see the text effects even when you enter full screen. If you fire up full screen before you start typing, everything should work fine. This is just because I haven’t got around to changing the default font for the non-full screen mode yet or implementing anything that might change the font between modes.

I love this! It has the feeling of a writing environment while still allowing me to remain loose; no expectation to write anything of significance.

AmberV’s feedback is right on the money (IMHO). Eye-strain is not something I particularly enjoy so muted color schemes are a nice way to alleviate this, although it may be nice to give the user a choice between some default sets or a creation of their own. All in due time though.

The adjustable transparency of the window box is excellent but the ability to open multiple documents in Full Screen mode would be be the icing on the cake.

Well done Keith (and all involved), I look forward to the evolution of this wee gem.

One of the coolest non-writing tools I’ve found recently is a program called Art Rage II, which is about recreating the experience and feel of using traditional media (paint, charcoal, pencil, marker, etc.) on a computer. One of the features they offer is the ability to control the color and surface of the canvas on which you’re working. The ability to specifiy different textures, rag content, etc. of the “paper” on which you’re typing would be extremely cool (although not necessarily useful).

My very first post on this board, and it’s a double.

Well, I would be very grateful for any “paper texture” contributions. :slight_smile:

What formats would work for you? There’s an editor for the paper textures in Art Rage and I can export as Photoshop layers.