inessential by Brent Simmons

January 2008

My Favorite CARS Moment

My favorite CARS moment—that’s Crazy Apple Rumors Site, but it’s too late to learn that—is probably the announcement that it’s going on hiatus, because now I can finally get some goddamn work done.

Or maybe it was one of the times I was in it. ;)

But, really, I have no idea what to say, other than it’s been the only rumors site that speaks the truth—and I love it and will miss it. John Moltz deserves a huge round of applause. And like a gold watch or something. And sexbots of his very own. ;)

Update: More applause from Rogue Amoeba and TUAW. And Gus. (There will be more. ;)

Things you may not know about NetNewsWire 3.1 (part four: misc.)

This should be the last of the things-you-may-not-know-about-NetNewsWire posts. Whew. (Also see parts one, two, and three.) This one’s just misc. stuff, in misc. order.

Cancel refresh session

Cmd-. period cancels a refresh session.

Activity Window

See what’s going on: choose Window > Activity.

Tell Downloads window not to open

If you don’t want the Downloads window to open automatically: open Preferences, click on Downloading, click on Downloads Folder, then uncheck the box next to Open Downloads window when a download begins.

Return to News Items after closing a tab

If you want to always return to News Items after closing a tab (instead of going to the next tab in the list), you can. Preferences, Browsing, Behavior—check the box next to After closing a tab, return to news items.

You can customize the toolbar

Choose View > Customize Toolbar. I expect you to customize the toolbar—it’s set up for brand-new users. After a little while you’re not a brand-new user anymore. ;)

New NetNewsWire tips, styles, and scripts

There are some web pages (and feeds) for NetNewsWire tips, styles, and scripts.

There’s a Help book

People often forget that apps usually come with a Help book. See Help > NetNewsWire Help.

You can share a clippings folder as a feed

It’s easy. See the howto.

Styles menu is hide-able

If you’ve picked a style and don’t plan to change it any time, you can hide the styles popup menu: choose View > Hide Styles Menu. Fewer widgets is good. ;)

App updates checking

You can tell NetNewsWire to automatically check for updates: Preferences, General. Check the box next to Software Updates: Check once a day.

You can check manually at any time: NetNewsWire > Check for Updates...

You can undo closing a tab

If you accidentally close a tab you didn’t mean to close, you can Undo it. That tab will be reloaded.

You can empty the web cache

NetNewsWire has a web cache—just like Safari and other browsers—and you can empty it. Choose NetNewsWire > Empty Web Cache... (This is especially a good idea after a crash.)

You can provide feedback at any time

Choose NetNewsWire > Provide NetNewsWire Feedback. A web page opens where you can enter your feedback.

Sync news items status command

If you use NewsGator syncing, and for some reason you think news items status (read/unread/flagged status) is out-of-sync, choose File > Sync News Items Status.

The developer is on Twitter

And he sometimes mentions what he’s working on. ;)

Things you may not know about NetNewsWire 3.1 (part three: subscriptions list stuff)

More stuff you may not know about NetNewsWire (also see parts one and two)...

Choose to sync or not at subscribe time

If you use NewsGator syncing, you can choose whether or not to sync a feed when you’re subscribing. There’s a Sync this feed checkbox on the subscribe sheet.

(Note: there ought to be a way to change your mind later. There isn’t, yet, but it’s on the to-do list.)

Big list of built-in feeds

NetNewsWire comes with a categorized list of feeds you can subscribe to. Choose View > Show Sites Drawer to see it. Lots of great stuff in there.

Cmd-F does a Find

To do a find in the subscriptions list or Sites Drawer, type cmd-F to open the Find panel. (Sure, I’d like a filter-style find—it’s on the to-do list too.)

Easy expand/collapse folder(s)

Collapse a folder: , key. Expand a folder: . key. Collapse all folders: ; key. Expand all folders: ' key.

Sort feeds

You can sort feeds by name, unread count, attention, or last update. Or you can organize them manually. See View > Sort Subscriptions By.

Sorting is animated. You can turn off animation. You can also tell it to sort only inside folders, but leave the top level organized manually.

Validate feed

To validate a feed, select it, then pull down the gear menu (lower-left corner of the window) and choose Validate this Feed.

Per-feed settings

There are a bunch of things you can set on a per-feed and per-folder basis. Select a subscription, then type cmd-I (or choose Window > Info).

Select multiple feeds

If you select multiple feeds, all the news items from those feeds will be listed in the headlines view.

Contextual menus

You can ctrl-click (or right-click) on a subscription to get a contextual menu.

Search engine feeds, tag feeds

To subscribe to a search engine or tag feeds, see the File > New Special Subscription menu. Search engine feeds are great if you want to see all mentions of a certain keyword on the web. (For instance, you might watch for feedback about your product.) Tag feeds are similar, but follow tags—for instance, you might like Paris, and so you subscribe to a feed that shows all pictures posted to Flickr with the tag Paris.

Easy unsubscribing

Select a subscription and hit the Delete key to unsubscribe.

Turn on/off Latest News, Flagged Items, and Clippings display

You can show or not show each of the Latest News, Flagged Items, and Clippings subscriptions—see View > Show Latest News Subscription and similar.

Don’t read the brown feeds

If a feed turns brown, that means it hasn’t updated in a couple months. You might want to unsubcribe from it. You can find other non-updating feeds: see Window > Dinosaurs.

Turn on/off icons and favicons

You can turn off the display of icons and favicons in the subscriptions list: see the View > Subscriptions menu.

Subs status view

The rectangle button at the very bottom-left of the window opens and closes the NewsGator-News/Thumbnail view. The gear menu is a contextual menu for the selected subscription. The status view (the bit with the text) changes what it displays if you click on it. (Probably should be a popup menu instead.) While downloading, you can click on the status view to open the Activity window.

You can also open the Activity window via Window > Activity.

Things you may not know about NetNewsWire 3.1 (part two: reading stuff)

More stuff you may not know about NetNewsWire (also see part one)...

Space bar

The easiest way to read your news is to hit the space bar—in fact, it’s the only key you need.

The space bar scrolls the current item. If there is no more to scroll, it goes to the next unread item. This way you can read all of your news with coffee cup in one hand, while the other taps the space bar.

Flag/unflag using the f key

Type the f key to flag an item. Type it again to unflag the item.

List of single-key shortcuts

You can see a list of single-key shortcuts by choosing Help > Keyboard Shortcuts. There are a bunch of them. (They’re not customizable yet, but that’s on the to-do list for the future.)

You can go back

If you want to go back to the previous news item, you can: type cmd-[. Or choose Go > Back. You can even add Forward and Back buttons (a la Safari) to the toolbar: choose View > Customize Toolbar.

Multiple selection

You can select multiple news items—and flag them or whatever. You can open their links all at once—just hit return or right arrow. (To open using the opposite of your prefs—to open in your external browser if you normally open in NetNewsWire—hold down the option key.)

There’s a limit (20, I think), so you won’t accidentally try to open 1000 items at once.

You can navigate using arrow keys

NetNewsWire is unique as far as I know in that you can navigate between the subscriptions list and headlines list using the arrow keys. When in subscriptions, use right arrow to go to the headlines list. When in the headlines list, use left arrow to go back to the subscriptions list.

Page-up/page-down works on description view

When the headlines list (in widescreen or traditional view) has focus, then the page-up/page-down keys scroll the description view up and down. (Just like Mail.)

Set font settings

You can change a bunch of font and color settings: open Preferences, then see the Colors and Fonts panes. (Note: some style sheets may over-ride font settings. Not all do, but some do.)

You can make text bigger/smaller

The make text bigger/smaller commands (see the View menu) work on the description view (as well as on web pages).

Widescreen users: how to save space

If you use the widescreen view, you can stack the headlines view: instead of multiple columns, the dateline appears below the title. Choose View > Layout > Show Datelines.

If you also want to see the first line of text, choose View > Layout > Show Summaries Below Title.

Show summaries in-line

Best when used with traditional view: View > Layout > Show Summaries In-line.

Find in the description view

If you want to find text in the description view, click on the view to give it focus (or navigate there using Tab), then type cmd-F. (It’s not cool like Safari’s find, I know, but it works. No need to make a feature request to make it cooler. ;)

Easy expand/collapse in Combined View

To collapse the current news item, hit the , key. To expand, hit the . key.

To collapse all, hit the ; key. To expand all, hit the ' key.

(Note: these same shortcuts work in the subscriptions list and Sites Drawer.)

Select text before post-to-weblog

If you want to quote part of a news item, select the text you want to quote in the description view, then choose News > Post to Weblog.

Change the look

If you use traditional or widescreen view, there’s a popup menu at the bottom-right of the window where you can choose a different style.

You can find more styles (beyond just what ships with the app) by going to the NetNewsWire Styles page.

The awesome self-repairing crashing bug

Back during the 3.1 beta period, just after the launch of Leopard, I created a self-referential (sort-of), self-repairing crashing bug.

Here’s the scoop:

I needed to revise the crash log reporter for Leopard, since crashes are now stored one per file, rather than one file per app.

So I did, and tested it (I already had a crash log on disk), and it worked great. Cool. Release beta.

But...

The crash-log-finder code crashed when there were no NetNewsWire crash logs on disk. Since Leopard was new, the odds of there being no crash logs yet was pretty good.

So it crashed for a bunch of people. (Yes, a crashing bug about reporting crashes.)

However—and I bet you’ve figured this out already—it was self-repairing because, once it crashed, then next time you launch NetNewsWire, it would find the newly-created crash log just fine. And all was well from that point.

(Of course I fixed it asap anyway.)

In the end it was a stupid bug, an uninitialized variable. Something like this:

Where f is the path the crash log...

NSString *f;
[find the crash log...]
if (f)
    [do something with the crash log...]

Obviously, NSString *f = nil; was the answer.

(Good thing I’m secure in my coding skills or I’d never admit to such a stupid mistake. Normally I’m a compulsive variable initializer. Feh.)

Designing For The First Launch

Daniel Jalkut: “If you’re an indie software developer and you get me talking for more than about 30 seconds about business, I’ll inevitably start talking about the first-launch experience and how it relates to sales. I call it the ‘run away screaming’ factor.”

On the design of the first-run assistant

One of the things I was super-glad about with NetNewsWire 3.1 is that we decided to get rid of the old first-run window—the one that popped up a web page in a window, that prompted you to create an account, but that was very un-Mac-like.

Instead we went with a native window, with real Mac controls and all that good stuff.

Normally this is kind of a boring thing—not one of the exciting features, not necessarily worth discussing. But since this is an example of a hybrid app with an online component, I thought it might be interesting to other developers of hybrid apps.

I’m not holding it up as a work of art or even an example of best practices—it’s just some notes from a practitioner.

(NetNewsWire users might find this interesting too, but this post is intended for other Mac developers. Non-programmers might also find it interesting, or insane, to see how much thought goes into what looks like straightforward, no-brainer user interface.)

The goals of the first-run assistant

We decided to do a few things:

1. Make it so you can create an account or enter your info for an existing account. Or not create an account if you don’t want to.

2. Turn on NewsGator syncing. Include some text about why syncing is cool.

3. Link to the privacy policy and terms of service.

4. Ask for email address, with checkbox for okay-to-send-email or not.

5. Present as little friction as possible—don’t overwhelm the new user so that he quits without trying the app. Ask for just the minimum required to make an account: username and password.

What it looks like

Here’s a screenshot. (Note: you can open the window yourself. Type cmd-option-shift-4. I left in this testing code because I knew I’d be writing this weblog post. ;)

First-run assistant screenshot

The first thing to notice is that it looks like other Mac OS X assistants. For instance, launch /Applications/Utilities/Boot Camp Assistant, and you’ll see that it looks similar. (This makes a huge difference, by the way. Check out the original draft of this window. Ugh. Not good.)

Another thing is that it’s not modal—you can close the window with cmd-W. NetNewsWire runs in non-synced mode, and no NewsGator account is created. That won’t be appropriate for every hybrid app, but in this case we could do it.

The syncing pitch

When you want to pitch a feature, there’s always a tension between saying too much and too little. You need to say enough to make it enticing, but not so much that people’s eyes glaze over. In practice, in this context, that means one or two sentences.

I could write many paragraphs talking about why syncing is cool and what the benefits are. But I had to compress it.

The original mockup read, “With NewsGator syncing, you can read your RSS feeds on different computers and on your iPhone. It’s free.”

The final version reads, “With syncing, you can read your RSS feeds on different computers, on the web, and on your iPhone. It’s fast, and it’s free.”

The original version was cool because it assumes you have an iPhone. ;) And if you don’t have one, we’ve kind of flattered you, since we know you’re the kind of person who’s going to get an iPhone. It also spells out what is my personal favorite benefit of syncing. (iPhone reading!)

But the original version didn’t make it explicit that there’s an online reader. So I added the “on the web” bit. It’s one of those phrases where you know what it means (browser-based reader) even though it’s not explicit. (It could have been more explicit, but at the cost of more words and, hence, the more potential for the eyes-glaze-over effect.)

I also added the “It’s fast” part as a result of collaborating with Nick F. Bradbury and Nick F. Harris—they both thought that talking about performance was important, and I agreed. (We passed around mockups and critiques, and our first-run assistants are similar, though not exactly the same. It was quite fun, actually. I don’t often collaborate on UI that way.)

The “it’s free” part is, of course, totally critical. It’s entirely possible that some NetNewsWire users would get to this part and think that we’re selling a service on top of the free NetNewsWire. So we had to be explicit that the syncing is free too.

Two sentences, and we’ve listed the main benefits, mentioned the magic word iPhone, and took away any nervousness about being charged for something.

It’s important, by the way, that “it’s free” be last—since the last thing in a sentence is emphasized, and since the free-ness is, human nature being human nature, the thing most likely to entice people to try it. People love free.

The account box

In my original mockup, it didn’t distinguish between new and existing account. The idea was to keep it simple: if you enter account info that didn’t exist, we’d create an account. If it did exist, it was an existing account.

But this idea had a major drawback: what if you typed in an existing username but the wrong password? Is that a new account or existing account? No way to know.

So I added a segmented control to switch between the two. Also, since people may have been confused about that control (or might just filter it out), I added some of that note-text-in-gray that made it explicit. “If you already have a NewsGator account, click ‘Existing Account.’” (There’s a similar line of text for if you have clicked on Existing Account.)

I didn’t really want to add more words—more friction, more eyes-glaze-over bits—but I think it’s okay.

I went around for a while on whether or not the new/existing-account section should be in a box or not. Finally I went with the box. Even though it was more, visually, I think it turned out more clear to have this section grouped.

Goddamn links-as-UI

Here’s something I hate from Windows—the use of links as UI elements outside of HTML views.

But I did it in two places: the link to Terms of Service and the Privacy Policy. When it actually means, “Click here to open a page in your browser,” I think it’s okay. (If it means anything else, then it should be some other kind of button.)

Anyone writing a hybrid app will, most likely, have reasons to call out to a web page. There may be better ways for specific cases, but in the general case, link-as-UI isn’t awful, if kept to this specific meaning.

I went around a little bit on whether or not to underline the links. They looked like crap when underlined—it made the window look busier. But I was concerned that it might not be clear that they are, in fact, links.

Since I’m a Mac guy, I went without the underlining. ;)

(By the way, they’re just NSButtons.)

The syncing checkbox

The please-sync checkbox is checked by default—but syncing is not really turned on unless you do actually create a new account or enter info for an existing account. I was afraid this might be a source of confusion, but I think it’s intuitive, works like you’d expect.

First-run assistants are all about reducing anxiety. One obvious source of anxiety would be wondering if this is your one shot to set up syncing. It’s not, of course, so we say, “If you don’t turn on syncing now, you can turn it on later.”

In some earlier versions of this window we tell you how to turn on syncing later: open the Preferences and click the Syncing toolbar button. But that’s more words, and words mean more anxiety and glazed eyes—and I figured nobody would remember the instructions anyway. It’s enough to communicate that simple boolean: YES, you can turn it on later if you want to. Anxiety reduced, and not even the anxiety of trying to remember instructions.

You know what? There’s a lot of stuff going on in this window. But it works.

Skip this Step

Since creating an account is optional, we needed a way to skip it. I couldn’t rely on people being aware that they could just close the window, so there’s a Skip this Step button. You end up with this:

First-run assistant screenshot with no syncing

Here I do actually say how to turn it on later, even though nobody would remember the instructions. It communicates that it’s easy (the instructions aren’t long)—and it would have seemed chintzy and weird not put the instructions there, given all the space.

The most important thing here is that you realize you’re finished, you’ve done it, you can go use the app and have fun now.

Create account

What if you created an account and turned on syncing—here’s what you see:

First-run assistant screenshot with syncing

Here we actually ask for your email address and ask if we can send you news via email. We make it clear that it’s optional, and the send-news checkbox is unchecked by default. We also tell you a benefit of typing in your email address.

When this came up in the meeting, the developers were adamant that the less we ask for, the better— we don’t want people to bail during the setup process. But other folks did want to ask for the email address for the standard reasons.

Is it funny for an RSS company to ask if we can send you news via email?

I’m like, okay, can do, but I want to blog about it. ;)

So this ended up being my favorite part of the assistant, just because of what it says about the business of the web. Everybody asks for your email address, no matter what. Even RSS companies. (Greg Reinacker reminded me how Coda brings up a thing about a mailing list. I consider it a good sign when NewsGator folks give me the What Would Panic Do? line. ;)

That’s it! Have fun!

Again, this page makes it clear that you’re finished. Once you click Finish, you get another window which starts the first-sync process and may give you some options. But you’re off and running at this point.

Small technical point: the email address gets sent to the server in the background—it doesn’t block anything. The window disappears immediately. There was no need to keep the window around, display a progress indicator, or anything like that.

Here’s something I didn’t do: OPML import. I think both Inbox and FeedDemon have that as part of the first-run process, but I felt like it was too much here. It’s a platform difference, I think: Windows users are used to longer installation processes, while Mac users expect to double-click and go. It’s a tough call, because OPML importing would have made sense here. (Email apps, for instance, may prompt you to import email from another app.) But I wanted to get as close to double-click-and-go as I could, and decided not to do OPML import here.

That’s it! This post is over! Have fun reading something else!

P.S.

The window background was made using Acorn.

Things you may not know about NetNewsWire 3.1 (part one: browser stuff)

Every time we do a new release of NetNewsWire we get new users and a ton of feedback.

With the 3.1 release this was a bit more than normal because, well, it’s free now, and because we actually open a page in NetNewsWire where we ask people for feedback. (The page opens automatically, just once, two weeks after running NetNewsWire the first time.)

I spent a couple hours today reading some of this feedback, and realized it’s time to do a few posts on things you may not know about NetNewsWire. (By the way, reading feedback is pretty fun. Folks are nice. ;)

It plays video and Flash

The most common feature request in the feedback I read today is that NetNewsWire should play video, Flash, YouTube, etc.

It does. It’s turned off by default, but it’s easy to turn on.

Open Preferences, click Browsing. Click the News Items tab—to enable Flash and video, make sure the box next to Enable plug-ins is checked.

Click the Web Pages tab and repeat to do the same thing for web pages.

A couple things to know, though:

1. On some machines, you may have to enable plug-ins for both news items and web pages in order to make them work in web pages.

2. Plug-ins are off by default because they’re unstable and eat lots of memory. (Flash in particular.) So if you run into memory or crashing issues, the first thing to try is turning off plug-ins.

You can open tabs in the background

When you open the page for a news item, the page opens in front, by default. Lots of people have asked (in the feedback) for a way to make the tab open in the background instead.

Here’s how:

Open Preferences, click Browsing, click the Behavior tab (if necessary), and uncheck the box next to Select new tabs as they are created.

If you use an external browser instead of NetNewsWire’s browser, you can tell it to open links in the browser in the background. Check the box next to Open links in background.

It’s super-easy to go from a web page back to the News Items tab

Hit the \\ key.

You can have traditional browser tabs—tabs across the top—instead of vertical tabs

Some people prefer browser tabs across the top—horizontal, no thumbnails. It’s easy to do: choose Tab > Position Tabs on Top.

To go back to vertical tabs, choose Tab > Position Tabs on Right.

You can hide the subscriptions list when reading a web page

There’s not a lot of room to read web pages when you have the subscriptions list showing and vertical tabs. You can tell NetNewsWire to hide the subscriptions list when a web page is showing: choose View > Automatically Hide Subscriptions List.

(This is what I do, by the way. A personal favorite feature.)

You can make text bigger/smaller

We don’t have toolbar commands for making text bigger and smaller, but we do have menu commands. See View > Make Text Bigger and View > Make Text Smaller. They even have the standard keyboard shortcuts.

You can close all your tabs

Choose Tab > Close All Tabs.

You can do a linkdump of your tabs

If you want to post all your tabs to your weblog, or just save them on disk (perhaps to email to somebody), you can. See Tab > Post Tabs to Weblog and Tab > Export Tabs.

You can open a news item using the opposite of your prefs

If you normally open news items in NetNewsWire, but want to open it in your default browser instead, type option-return.

To open a link in an HTML view in your default browser: shift-click the link.

You can set font preferences for news items and web pages

Open Preferences, click Fonts, click the News Items tab, then set your preferences. Click the Web Pages tab and do the same for web pages.

Note, however, that some styles may use a different font than your preference—just as some web pages do too.

You can easily switch from tab to tab

Type 9 to go up (or left) in the tabs list. Type 0 to go down (or right) in the tabs list.

You can open the current page in your default browser

If you’re reading a web page, and want to open it in your default external browser, type cmd-option-B. (Or pull down the gear menu and choose Open in Default Browser.)

You can send a web page via email

Choose File > Mail Contents of this Page or File > Mail Link to This Page.

You can use commands like Post to Weblog, etc. on web pages

They’re enabled for web pages as well as for news items.

You can search for text on a web page

It’s not that cool incremental search, but you can type cmd-F to do run the Find panel on a web page. (Obviously, of course, I want to do that cool Safari-like search.)

You can do a Google search

In the address bar, type g followed by a space, followed by whatever you want to search for, as in g iPhone SDK. Then hit return. Or use the search field in the toolbar—click the triangle to pull down the list of search options. (Not intended as a Monocle replacement, however. ;)

You can subscribe to feeds linked-to from a web page

When viewing a web page, to the right of the address bar is a bluish RSS icon—it’s a popup menu. Click on it to choose a feed from the page to subscribe to.

(It’s disabled when NetNewsWire doesn’t detect any feeds linked-to from the page.)

NetNewsWire: how to share clippings

If you use NewsGator syncing, you can share your clippings folders as feeds. In other words, you can make a clippings folder that other people can subscribe to. (In fact, you can make a bunch of clippings folders, if you want.)

In the screen shot below, I have a Cocoa clippings folder. I’ve opened the Info window and checked the box next to Share as an RSS Feed. The URL appears below, and the Copy Feed URL button copies the URL to the clipboard, so you can paste it in an email or whatever.

clippings info window screenshot

I should make this feature easier to find, no doubt—and I will. (It would also be nice if the feed URL were shorter, and it would be cool if there were an HTML version, not just an RSS feed.)

A few tips about Clippings

To create a new clippings folder: File > New Clippings Folder

You can add a news item or web page to a clippings folder via drag-and-drop. (The Add to Clippings command puts items at the top level. Drag-and-drop is the easiest way, for now, to put something in a sub-folder.)

To delete a clipping, or a clippings folder, use the Delete key.

If you don’t see Clippings at all, choose View > Show Clippings.

PS The Cocoa clippings feed in the screen shot doesn’t actually exist—I deleted it. If you’re interested in Cocoa news, let me recommend Cocoa Blogs.

PPS As talked about in a previous post, there are lots of other ways to share news items.

NetNewsWire and other desktop apps: your RSS router

One of my favorite features of NetNewsWire is how it works with a bunch of other desktop apps.

The idea is this: news comes in to NetNewsWire, and then you route stuff to wherever it should go.

Twitterrific: Breaking news network

One day it became obvious that Twitter was how people got breaking news—it appeared in Twitterrific first.

How could NetNewsWire compete with that? Add some kind of super-fast-breaking news channel thingy? Weeeeeellllll no. I mean, you’ve already got Twitterrific, so why.

Instead I made it a cool combo—you’re reading something (a news item or web page) in NetNewsWire, type ctrl-T, and then the URL appears in Twitterrific, all ready for the tweeting.

Twitterrific screenshot

The baseball fan in me thinks of it as a double-play combination—NetNewsWire to Twitterrific to Twitter. Inning over.

(Note: the News > Send to Twitterrific command appears only if you have Twitterrific and it’s 2.1 or greater.)

MarsEdit and ecto

I’m writing this post in MarsEdit, which I adore. Lots of folks adore ecto.

I don’t have to tell you the advantages of using a desktop weblog editor—local storage, scriptability, offline drafts, performance, one interface for all your weblogs, etc.—you know this stuff. (And if you don’t know, you should find out.)

The News > Post to Weblog command is how you get news items and web pages from NetNewsWire to your weblog. This way NetNewsWire doesn’t have to have a built-in weblog editor: you can mix and match, choose the weblog editor you prefer.

(Note to anyone who’s new to NetNewsWire: the original version of NetNewsWire had a built-in weblog editor, which later was broken out and mostly rewritten and hugely expanded and turned into MarsEdit, which was later sold to Red Sweater Software. Before MarsEdit 1.0 shipped I made sure NetNewsWire would work with any weblog editor that supports a simple Apple event interface.)

VoodooPad

Got VoodooPad? It’s a desktop wiki—you write stuff in it, save stuff in it.

If you have VoodooPad, then a Send to VoodooPad command appears in the News menu.

del.icio.us choices

For posting to del.icio.us you choose from an external browser, NetNewsWire’s browser, Cocoalicious, Postr, Pukka, and WebnoteHappy.

In fact, the command is somewhat mis-named, because some of these apps do things other than posting to del.icio.us.

del.icio.us app popup menu screenshot

iCal and Address Book

When you come to a web page or news item that includes calendar or contact microformats (such as at upcoming), NetNewsWire presents popup menus at the bottom of the window: you can add an event to iCal (as in the screen shot below) or add contact information to Address Book.

microformats screenshot

Also, if a feed includes an email address for the author, you can add the author’s email address to Address Book (via News > Add Author to Address Book).

Mail

There are two ways to send news items and web pages via email. You can send just the URL, which works with any email client (Mail, Mailsmith, Entourage, and so on).

Or you can send the page as HTML mail, which works with Mail.

These commands, like the others, are in the News menu. These commands appear in the File menu rather than in the News menu, for the simple reason that that’s where the commands appear in Safari.

Mail screenshot

iPhoto

When an image appears in a news item or web page, you can ctrl-click (or right-click) on the image and choose Add Image to iPhoto Library. Easy.

Scripting

Last thing—but the most powerful thing. NetNewsWire is scriptable via AppleScript, which means you can use or write scripts for things like sending items to Yojimbo, building a blogroll, and plenty more.

There’s no way we can figure out, in advance, everything that everybody might want to do—so we make NetNewsWire scriptable, so people can add the features they want. (And we pay attention to the kinds of scripts people write, since actually writing a script is a pretty strong feature request.)

NetNewsWire even has the concept of scripted feeds—it can run AppleScript or shell (Python, Ruby, etc.) scripts that generate RSS. Anything that happens on your machine, you can probably create a feed for it.

See the NetNewsWire Scripts page for more scripts written by NetNewsWire users.

NetNewsWire 3.1 is free

NetNewsWire 3.1 is free!

By free I mean both that we’ve released it from its cage and that it costs no money. Zero dollars.

Upgrades are free. It’s free for new users. It’s freeware.

You can download it right away. Here are the change notes.

NetNewsWire is not alone—we’ve also made FeedDemon, NewsGator Inbox, and NewsGator Go! free.

Why go free? Nick Bradbury and Greg Reinacker explain it better than I would, but it boils down to this: the software is great marketing for our enterprise software; and the more users we have, the better able we are to calculate relevance and importance.

I dream of being able to make it so you spend less time reading stuff you don’t care about—I want the important news to go right to the top.

There’s a FAQ that explains a bunch of things—I’m not going to repeat it all here.

But I will say that, for me personally, this is a dream come true. Every developer wants to be able to work on the software they love, make a living at it, and give it to the world for free.

Usually you get to pick two out of three—if you’re lucky. Me, I get all three.