Let my (software) go!

It’s out! Nisus Writer Express 2.0 was released very late last night and I have to be honest here: You have no idea how happy we are to see it released. Well, I guess you do now.

Anyway, as Charles mentioned in an earlier post, we worked very hard on this release and I think that it shows, if I do say so myself. The engineering team did most of the heavy lifting, keeping the app stable even in the alpha builds, let alone the beta builds. Our beta test team did a great job in finding bugs, they deserve to be acknowledged too. We couldn’t have done it without them, that’s for sure.

So thanks to all of you for your help, and thanks to our engineering team for making a great app.

Now, time for sleep!

The First Nisus Writer Express 2.0 Review

Well, the first review of Express 2.0 is in. Not bad for a product that hasn’t even been released as of this writing.

I’d be lying if I said I wasn’t nervous. Pre-game jitters, so to speak. This is a big release for us, and we have worked very hard to get Express 2.0 right.

The mac360.com review makes me think that we have.

Long Tests

NWE 2.0 has had one of the longest and most involved beta test phases of any product I’ve ever worked on. Earlier this week we released what I hope will be the last beta, beta 9. We have released a new beta about once a week, sometimes more frequently, sometimes less. This is a great achievement for us because in the past our software and our process of doing a beta release were not good enough to allow us to be this interactive with our testers. Martin, Dave, and Andrew have all worked hard to perfect our release process though so now we can decide to do a beta late afternoon and have it out by evening. Our entire engineering team has done a great job of keeping the app overall stable while working on their own parts. I’m very proud of the hard work all of us have done!

Express Tips in Latest Macworld

The latest issue of Macworld has as its cover story “Top Mac Tips”. Almost all of it is tips on how to get the best out of Office. However, Adam Engst of TidBits fame has raised the Nisus flag, adding a couple of tips on using the Document Manager and how to find just the right word with Nisus Thesaurus.

Thanks Adam!

P.S. The check is in the mail.

Shirky: The RIAA Succeeds Where the Cypherpunks Failed

Clay Shirky has a great piece on how the RIAA’s efforts to shut down file sharing services and file sharing users is driving the adoption of encryption technology by mainstream users. The fact is, people will share music. It is going to happen. The RIAA can keep trying to shut these services down, but all they are doing instead is pushing these system to evolve until finally something will be created that is immune to the RIAA’s legal efforts.

Customizing your word processor – creating a “block indent” button

A user recently asked for a button that would “block indent” selected text:

First, will there be a button you can push that will indent an entire paragraph?

Second, (a more accurate description of ‘block indent’) will there be a button you can push that will indent both right and left margins of a paragraph? An example of needing this feature would be, say, if you have a quote that is too long for quotation marks, you will want to ‘block indent’ it, which means the paragraph is centered on the page, but indented on both right and left margins.

We have not made provisions for any such “buttons”. However, that does not mean that you (any user) can’t extend the “out of the box” capabilities of Nisus Writer Express to fulfill unforeseen needs.

I answered:

To paraphrase the House Un-American Activities Committee:

There is not now, nor has there ever been a button you can push that will indent an entire paragraph.

You should, however (in Nisus Writer Express 2.x), be able to create a “Style” in the “Style Sheets” view of Nisus Writer Express that will consist of an indented paragraph (you’ll set the ruler parameters along with the font, etc.) Then, you’ll be able to select a range of text (put your insertion point inside a paragraph or select portions of various paragraphs) and click that style’s name in the Style palette. There, once you’ve created the “block indent” or “block quote” style, one click achieves the desired result… almost the same as Nisus Writer Express coming shipped with a button.

Can you think of other ways to customize Nisus Writer Express that others might appreciate knowing about?

`//rite on!

Hear me!

Our next release will mark the beginning of a lot of new things for Nisus. Among them will be a redesign of our web-site and some of our online services. Over the last year we have started our forum and now these blogs. Next we are going to redesign our web-site to make it way easier to get to the products or services you are trying to find on our site. NWE 2.0 will also include a revised feedback engine and some new Help menu commands pointing you to the right places online to get answers when you have questions.

Why are we doing all of this? Because we want to know you, our customers! And we also want you to know about us. There is nothing that makes my day more than to hear from a customer who is happy with what we provide and feels like we listen to their concerns. It’s part of what makes this job fun so we are constantly trying to find ways to make more and more people experience us in that way.

Tables: Touch Fuzzy, Get Dizzy

Tables are a major feature for Nisus Writer Express version 2.0, and we’ve been working hard on them. There are a lot of little details that take time to get things just right. For instance: drawing table cell borders.

When drawing table cells we wanted to make sure that the border edges look sharp and clean. To accomplish this we have to prevent the lines from being antialiased when drawn on screen. This means that a thin line has to be drawn at the exact same coordinate as the pixel it should fill.

On the Macintosh screen pixels are one point (1pt) wide. This means that if you imagine a pixel as a square, the bottom of the square is at y-coordinate of 0.0, and the top of the square is at 1.0. So for a 1pt line to exactly fill that pixel, it must be centered inside the pixel at a y-coordinate of 0.5. Had we tried to draw the line at 0.0 only the top half of the line would have fallen into the pixel. The other half would have wound up in the pixel below, and we would have a 1pt line that was drawn into two pixels, leading to a fuzzy image.

Drawing is slightly different with lines of even width. Imagine a 2pt line. If we try to draw the line at 0.5, then we fill the pixel with coordinates 0.0 through 1.0, but the remaining 1pt of the line would spill into the pixels above and below. So again we have 1pt of line drawn into 2 pixels, yielding a fuzzy line. So when drawing lines of even point widths, we have to align them on integer coordinates.

For tables things are made more complicated by different line styles, weights, joins, user specified row heights, and other kinds of table properties. When considering all these, you cannot just draw a border edge at the nearest 0.5 or 1.0 coordinate, since other cells depend on an edge being drawn at a particular location.

In some cases it is actually impossible to avoid antialiasing. For example, imagine a 1pt line and a 2pt line both centered along the same axis. If you draw them both at 0.5, the 1pt line will be sharp, but the 2pt line will be fuzzy. If you choose 1.0, then the 1pt line will be fuzzy.

Getting all this right took just about a day of work, but table borders are looking good. We hope you guys will enjoy using our slick table editor when 2.0 is released.

Finishing 2.0

One of our developers recently moved to Japan. It has been a bit of a challenge to continue working with him while he is over there because the time difference is so great. Yesterday though, we did a bit of pair coding using iChat and and SubEthaEdit. The coolest part was using our iSights so we could video chat. I’ve never seen much benefit for a video-phone style service, but I have to say that when it comes to working very closely together, being able to see the other person makes a huge difference!