Click here to download Nebulous Notes »
The main additions in the 4.2 update to
Nebulous Notes are printing and Syncing Lite.
I use text editors everyday, for everything from drafting blog posts to editing code, which is why Nebulous Notes has evolved into what I've been calling "Your everyday, everything text editor." It seems like everyday I get an email from someone using the app in different ways, such as displaying guitar tabs to editing web pages.
Below is my design thinking on selected features:
Proper Printing
This will be automatically enabled once Apple releases iOS 4.2

Over the next couple months, many apps will start using the new printing API in iOS 4.2. However, what you're likely to see is just a minimal implementation of printing, and users will have to adjust their expectations from what they're used to on the desktop.
First, I think out-of-the-box printing is useless without a print preview. Especially if you're printing on the iPhone or iPod, it's unlikely your app's view will have a one-to-one representation to what will appear on paper. And so I suggest generating a PDF first before users decide to use paper. Doing this has the added benefit of letting users export a PDF version of their work, which they can then send for printing later in case AirPrint is not available.
The second necessary addition is layout customization, such as page numbers and content formatting. When I imagined how users would actually use printing in Nebulous Notes, I came up with the following kinds of end-products:
- Quick hand-outs
- Physical drafts of stories to be edited by hand
- Shopping lists
- Presentation supplements
And so I gave users some control over basic settings such as line-spacing, font-size, and page orientation. I also added a bonus feature that lets users customize the first line of their document separately so as to provide a nice-looking title or header. Now, I'm not going to pretend people expect Nebulous to produce the same kind of output as a typical word processor, but I want them to at least have some capacity to make their print-outs nice-enough to share.
Syncing Lite

When the flood of Dropbox-enabled apps hit the market, many of them tried to duplicate the same exact syncing methodology that Dropbox provides on the desktop. But you have to change your assumptions for mobile. Whereas desktop users are always connected, mobile users are often disconnected. Even if you are always connected to bandwidth, Apple restricts how much computing you can do in the background. So mobile users may go hours if not days without having an opportunity to fully sync.
In addition, the file-management paradigm is different for mobile. Whereas desktop users are accustomed to editing files in memory without saving until they're ready, mobile users want to keep everything cached in case they switch out of their app or turn off their device. And so you really shouldn't have a "Save" button on mobile, nor should you automatically upload changes that users are in the middle of working on.
These considerations rule out automatic syncing. And many of these Dropbox-enabled apps leave users incensed when revisions don't get synced until days later or their recent changes get overridden by the remote copy. Most of the auto-syncing apps simply crash because of how complicated it is to distinguish between changes the user is currently working on, versus changes the user wants to commit locally, but cannot upload yet, versus changes the user hasn't quite downloaded yet.
On the other hand, users really like the concept of automatic syncing, and I think that's what makes Dropbox popular. Manual syncing requires users to actively manage revision conflicts and make a decision whether to download or upload every time they want to commit. This is especially cumbersome in the limited screen real estate on mobile.
This is why I implemented what I call "Syncing Lite" which is a compromise between total revision control and automatic syncing. Syncing Lite works by creating two views, the remote and local view. This makes it clear to the user what's on their device right now versus what's up in the cloud. In a way, this is like the typical two-pane FTP view. However, in Syncing Lite, the local view is also an auto-save view, thereby representing all your recent edits in "memory."
When the user opens a document, the app checks the cloud to see if there's a newer version of the file, and gives you an opportunity to overwrite your local copy with the remote copy (this is really the only part of the process that I would consider "syncing"). Then, while you're editing, your changes are automatically saved locally. And when you're ready to commit your changes, you can hit the Upload button.
A macro toolbar that feels right


One idea I borrowed from iA's Writer is to have a customizable toolbar above the keyboard that blends in with your stock keyboard. Originally, I had it designed using the UIKit's standard toolbar button, but then the macro bar stuck out like a sore thumb. I wanted to make a macro bar that blended in with the interface. I also designed two different keys, one for the iPad, and another for the iPhone. Unlike the iPad, the iPhone's keyboard keys are designed to thumb out when you tap on them, so that you can confirm that you tapped the right key. I also replicated the satisfying keyboard clicking sounds.
The reason for making a macro bar in the first place is that common characters used in text editing often require going to the second keyboard page (tapping ".?123" and then "#+="). You can customize the macro bar with any string of characters you want. I think programmers will appreciate having handy access to keys like { } and [ ].
The right-kind of tab support for programmers

As a programmer I've come to appreciate the handy conveniences of evolved desktop editors. In particular, I like multi-line tabbing, whereby you can select more than one line and indent all the lines at once. The "tab" character was a frequent request to Nebulous, and rather than simply adding an "insert tab" key, I went one step further, and gave them the multi-line tabbing they're used to. And to boot, I added multi-line untabbing.
Appropriate fixed-width fonts

I received an email months ago saying that the fixed width fonts in iOS aren't uniform enough. I was initially skeptical, and I opened one of my source files with the built-in "Courier New" font and it looked fine. But then I received an email from another user, and he noticed this particularly with guitar tabs. So I downloaded the tabs, and lo and behold, I noticed the same problem. I then Googled "best fixed width fonts" and added a few of them into my app. As you can see above, it works like a charm now.
Word-wrapping toggle (work-in-progress)

Now, I'm not quite a snobby designer yet, where I can only implement features if I can implement them fully. It's okay to implement experimental features, so long as you don't pretend they're complete. You should also give users the ability to work-around and control the features.
Given the tools available in the iOS SDK, there's no easy way to turn off word-wrapping in TextViews. You could make your own TextView, but that would be a lot of work and open up new bugs (compared to Apple's rock solid UITextView). You could also automatically resize the TextView as the user types beyond the width of the window, but with large blocks of text this could create a significant performance dip.
So I went ahead and let users decide where to wrap the editor. They can set it to 64x the screen width for all I care. This is a compromise that I think the power users will appreciate.
A word count system that is fun to use

Creative thinker Roger von Oech sent me a link to this article Welcome to the Decade of Games, along with the question, "Does Nebulous have any game possibilities?"
And the answer is YES! Nearly every product has some kind of game possibilities. And so I transformed what was initially going to be a plain word-counting system, and added goal-setting. Users can set a target word count to achieve, and watch see what % they've completed. I also worked hard to make a sleek-looking status bar. Being a former video game designer myself, I am keen on how important it is to have satisfying feedback mechanisms
--
That's it for the latest update. I'm working hard on the next update. If you want to help keep indie developers like myself in business, please spread the word by forwarding this article, rating my app on iTunes, and following me on Twitter.
Recent Comments