inessential by Brent Simmons

March 2006

option-upArrow, option-downArrow

A few people have told me that NetNewsWire is weird that option-upArrow goes to the top of the subscriptions list and option-downArrow goes to the bottom.

The standard is to use cmd, not option, right?

That’s what I thought too—so I went looking in my code for where I implemented this to see if I had left a comment or something to explain it.

But—it’s not anywhere in my code. It turns out that it’s part of the default behavior of NSTableView and NSOutlineView objects. option-upArrow goes to the top, option-downArrow goes to the bottom.

Who knew? I thought it was weird, too, but it’s correct. (For other examples, check out Safari’s and Camino’s bookmarks list.)

What game should I buy?

For Christmas I got a PlayStation Portable and Star Wars Battlefront II.

Now I’m thinking I might like a new game for my birthday. What game should I get?

I prefer flying (spaceships, mainly, but also airplanes) to just running around. (I’ve already got a body in real life: I don’t know why I’d want a virtual one. What I don’t have in real life is a super-fast spaceship with lasers.)

Carnegie’s

Last night we went to dinner at Carnegie’s. We’ve been going there since they were at the old location, since it was the 24th Street Bistro. Carnegie’s is the best restaurant in Seattle. Big claim, but I stand by it. Check it out.

NetNewsWire special offer

We’re running a special sale on NetNewsWire: until NetNewsWire 2.1 ships, you can buy NetNewsWire for $5 off, for just $19.95. Or you can buy the NetNewsWire/MarsEdit bundle for just $29.95, which is an even better deal.

People sometimes ask me—“When’s the best time to buy NetNewsWire, now or when 2.1 ships?”

The answer is: “Hey, we’re running a sale right now!”

A bit of the future

It seemed futuristic to me. Maybe it’s old hat, but to me it was new and cool.

I was getting a crown on one of my wisdom teeth the other day (ugh, don’t think about it)—but, during the procedure, I got to wear a pair of goggles of some kind with a TV screen inside it!

Very cool.

I had a pick of several movies: I chose Life of Brian, which I’d seen many times before, like every geek. I figured it would be the equivalent of going to my happy place. (It was.)

“What Jesus clearly fails to appreciate is that it’s the meek who are the problem.”

“Centuwion, why do they tittew so?”

That was tooth #17. I have to go back for tooth #32. I’m thinking of bringing in my own copy of Monty Python and the Holy Grail.

NetNewsWire Lite 2.1b18: public beta

NetNewsWire IconToday we released a public beta of the Lite version of NetNewsWire. (The previous public beta was full-version-only.)

New features in Lite 2.1 include NewsGator syncing, printing, and posting to del.icio.us. It has the same changes as the full version, except for the things that don’t apply because those features aren’t in the Lite version. (It is, of course, a Universal binary.)

For more details, read the NetNewsWire Lite 2.1b18 change notes.

It’s available from the NetNewsWire betas page. (Just please remember that it is in fact a beta.)

P.S. People sometimes ask what the difference is between full and Lite versions. It’s actually a fairly long list—see this page that lists the differences. (It’s for the 2.0 releases, but it needs only a minor update for 2.1.)

Crazy Old Reader

I’m working on NetNewsWire Lite, so we can do a beta soon.

I happened to go the website and noticed something I’d forgotten—which is that we still distribute a version of NetNewsWire Lite (1.0.2) that runs on pre-Jaguar systems.

Whatever you do, do not run it. It doesn’t know about newer features, and it will for sure mess up your prefs and data. 100% guaranteed, bad things.

Since I know what I’m doing, though, I could run it and see if it still launches, so many OS versions later.

Guess what? It works fine. (Hats off to Apple engineers!)

Screenshot of NetNewsWire Lite 1.0.2

Things you may not know about NetNewsWire...

Here are some things you may not know about NetNewsWire... These apply to 2.0 and 2.0.1, even, not just the public beta.

(I like to write this kind of post now and again because I find, based on the questions we get, that there are things you may not know but that could be helpful.)

Find command

Say you’re looking at a web page, or want to find something in the Sites Drawer or in the subscriptions list. Just type cmd-F. Or choose Edit > Find > Find....

Easy shortcuts

There are a bunch of keyboard shortcuts that don’t require the cmd key. Choose Help > Keyboard Shortcuts to see the list.

Go to top and bottom of subscriptions list

When the subscriptions list has focus, you can go to the top item by typing option-upArrow. To go to the bottom item, type option-downArrow.

Cycle info display below subscriptions

The text at the bottom left corner of the main window, right below the subscriptions list, can be cycled. Just click on it to display a different piece of information. Click again. (Etc.)

Feed Validation

If a feed isn’t working for some reason, you can validate it using the online feed validator. Select the feed and choose Validate this Feed from the gear menu below the subscriptions list.

Turn off dock icon unread count

You can completely turn off the unread count in the dock. Open the Preferences window and uncheck the box next to Show unread count.

Colorize dock icon unread count

You can change the colors of the dock icon unread count—both the background and the text. It doesn’t have to be white-on-red!

Resources online

There are a bunch of pages and feeds with all kinds of resources: scripts and stylesheets written by NetNewsWire users, tips, and so on.

Open tabs in the background

When NetNewsWire opens a new tab, it can do so in the background—that is, it doesn’t have to switch to the new tab.

Open the Preferences window, click the Browsing icon, then uncheck the box next to Select new tabs as they are created.

I myself always have NetNewsWire open tabs in the background, because it suits my personal reading style, which is to go through news items, opening tabs as I go, then go through the tabs that I opened.

(Not that everybody has to read news this way! That’s just how I do it.)

Datelines/summaries in headlines table

Especially useful for widescreen users: you can show datelines, summaries, or both in the headlines table.

See the View > Layout menu. If you show datelines, then you don’t have to deal with the smaller amount of room for columns.

Dinosaurs

If you want to see which of your feeds haven’t updated in a while, choose Window > Dinosaurs.

See all new items at once, see all flagged items at once

Check out these two commands, both from the View menu:

Show New Items Subscription
Show Flagged Items Subscription

Search engine and tag subscriptions

If you want to subscribe to keyword searches and tag feeds, you can: choose File > New Special Subscription > Search Engine... and File > New Special Subscription > Tag....

These are highly useful for me personally, since there’s no way I can subscribe to the entire blogosphere, but I do want to get feedback about my software that people post.

Help Book

NetNewsWire has a manual: choose Help > NetNewsWire Help.

NetNewsWire 2.1: A couple little things

Here are a couple small features added to NetNewsWire 2.1 that you may not have noticed...

Select News Items Tab

Sometimes you’re looking at a web page tab and you want to get back to the News Items tab.

With 2.0, you had a choice: either click the tab with your mouse or navigate to it, one tab at a time, via select-next or select-previous tab keyboard shortcuts.

Now you can get there fast: just type cmd-\\.

(The command appears in the Window menu, under the other tab commands—but it’s really a keyboard shortcut kind of thing.)

60-Day Dinosaurs coloring in the subscriptions list

The dinosaurs feature is cool, but you have to remember to use it. We added one simple little feature: any feed that hasn’t updated in 60 days is now colored brown.

You can change the color, of course: choose View > Show Color Options.

(Obviously, there’s plenty more to do regarding feed management! But still, even this little thing is useful.)

Colors window, other colors

Colors used to be in the preferences window, but it used a popup menu and a single color control.

The problems with that:

1. It made it hard to see all the things you could color.

2. You couldn’t look at your entire color scheme at a glance to get an idea if it all went together.

3. You couldn’t drag-and-drop from one color control to another (since there was only one).

Hence the new Colors window. (It’s almost no lines of code, by the way—thanks to the magic of Cocoa bindings.)

In addition to 60-day dinosaurs, mentioned above, you can now also color subscriptions with 0 unread items, read headlines, and followed headlines. (“Followed” means you opened the web page for that headline.)

That means, yes, you can go nuts.

NetNewsWire 2.1: Performance

When I started work on NetNewsWire 2.1, I had two main things in mind: NewsGator syncing and performance. I’ve talked a bit about syncing, so now I’ll talk about performance.

No silver bullet

Except in the simplest or most specialized applications, there is no “silver bullet,” one place to optimize your code that makes everything faster.

Imagine, for instance, a web browser with super-fast network but super-slow page layout.

Or imagine an email app with a super-fast database—but the text editor can’t keep up with your typing.

Fact is, performance issues are specific—usually even more specific than the above. For instance, the hypothetical text editor is slow only with HTML editing but not when editing plain text. And then, it’s slow only if you’re using multiple font sizes and have an embedded graphic.

So: there aren’t any silver bullets. Performance is a matter of reproducing the exact performance issues people run into, then making those specific things fast.

Sometimes there might be a silver bullet, sort of

Okay, there was one silver bullet, sort of, here: just producing a Universal binary made it faster on Intel Macs. But that’s it.

Shark!

So what I did was identify a few places where people were reporting performance bugs the most.

Then I used this super-cool tool from Apple called Shark.

Want to know what the heck is happening? Run Shark while it’s happening. (I find “Tree (Top-Down)” view most useful most of the time.)

Shark is utterly and totally my good friend.

Made some stuff faster

One thing I ended up having to do was rewrite almost completely the browser tabs manager. In 2.0 and 2.0.1, if you had a large list of browser tabs (in the hundreds), startup could take minutes, which is crazy.

In 2.1, a large list of browser tabs doesn’t affect startup time. (Oh, maybe a fraction of a second.) This was my top priority, and I was glad to nail it so completely.

(I go into more details about performance fixes in the change notes for 2.1b16.)

Made other stuff seem faster

There’s an art to performance fixes. Some stuff you make faster, other stuff you make seem faster.

Performance when marking all as read was one of those things. I was able to optimize it a little—but mainly it was bound by code that isn’t mine (SQLite code), so I couldn’t optimize it past a certain point.

How do you make it seem faster? The answer in this case was to use another thread, so that it doesn’t block the user interface. (When the user interface is blocked, that’s when you get the spinning beach ball.)

Problem solved. Now it seems instant.

My favorite couple posts

Avi Drissman wrote about NetNewsWire performance issues on his weblog a few weeks ago. I invited him to join the private beta, which he did.

And now he writes about how it’s “amazingly fast” and doesn’t lock up.

I love posts like that. You have no idea. That’s where my motivation comes from—making things people like. (Thanks, Avi!)

NetNewsWire 2.1: Sorting by Attention

When I first started working on NetNewsWire back in 2002, my conception of it was pretty simple: it was a way to stop having to click around to all those bookmarks of weblogs to see if there was something new.

Remember doing that? I bet you do—I bet you did it for years, like I did.

So my whole idea, way back when, was that NetNewsWire boosted your productivity, because you didn’t have to keep manually opening these sites in your browser. And, furthermore, you’d probably be able to get more news this way. (Maybe, you know, like from double the number of sites or something!)

Okay—there’s the problem, right there. It didn’t turn out to be double, or three times, or four times—people subscribe to many hundreds of feeds. There are NetNewsWire users with more than a thousand feeds.

Sort by Attention screenshotObviously, you want your aggregator to present you with the more important stuff first. As an aggregator developer I’ve been thinking about this problem for a long time—and so have NetNewsWire users, and I have a list of ideas and feature requests that is quite long and full of good stuff.

But what would be a first good step, one simple thing that would help right away, that we could do in 2.1?

Sorting subscriptions by attention.

We already had the ability to sort subscriptions by name, unread count, last update. And NetNewsWire already knew some things about your behavior—for instance, it knows when you open an item’s web page. It wasn’t keeping track of things like posting to weblog or posting to del.icio.us, but it is now.

The sort will get better over time, since it’s only just started to track certain things—but even right off the bat I found the feature useful. I was a little surprised to see which feeds I really use the most and which I don’t.

If you use this feature, there are a couple special cases to be aware of, so you know what’s happening:

1. The attention score for a smart list is based on the current contents only—smart lists don’t remember things you did months ago (but other feeds do).

2. The attention score for a group is the average of the score of the feeds inside the group.

P.S. If you use FeedDemon, you may have seen a similar idea: attention reports. Cool stuff.

P.P.S. How many feeds do I subscribe to? 132. I learned a long time ago that I have to be ruthless with ’em. I rely on a few search engine subscriptions and tag subscriptions to fill in the blanks that the regular feeds don’t cover. (My favorite feeds are weblogs of people that I know.)

P.P.P.S. Is this the end of feed management and relevance and all that? No, it’s just the beginning.

NetNewsWire 2.1: Print Command

I don’t mind admitting that it surprised me, and continued to surprise me, and kept surprising me, every time a person asked for a Print command in NetNewsWire.

The thing is, this was one of the most common feature requests.

It’s just that, in this Web two-point-oh world, this universe of podcasting and aggregating, who prints? The answer, it turns out, is: lots of folks.

Well, then, right on. So we added a Print command.

It prints either the current description or the current web page (whichever is in front). It’s standard—you can do the normal thing to make a PDF, all that stuff.

Screenshot thumb

NetNewsWire 2.1: Post to del.icio.us command

One of the most popular types of AppleScript scripts people write for NetNewsWire is a post-to-del.icio.us command. It’s a natural fit, right? It makes total sense that, if you use del.icio.us, you’d want to be able to send stuff there from your aggregator.

I love it that people could write those scripts—it’s one of the joys of being a developer, when you make it so your app is scriptable so that people can create their own custom workflows.

But, at the same time, it became apparent that this had to become a built-in feature, just because so many people want to do it.

We had some choices:

1. Punt and look at it for a later release. (The scripts, after all, do in fact work!)

2. Write a del.icio.us client and bake it into NetNewsWire.

3. Make NetNewsWire work with other apps that post to del.icio.us.

If you know me, you know we did #3. ;)

(If you don’t know me—one of the things I’m most proud of doing is creating the external weblog editor interface which allows different aggregators to connect to different weblog editors. I like working with other apps and other developers; I like connecting apps.)

Choose your del.icio.us app

What we did: we added a new command in the News menu: Post to del.icio.us. It works with any one of four apps: your default browser, NetNewsWire, Cocoalicious, and Pukka.

The default choice is your default browser, since that’s what most people are probably using already. (If you choose NetNewsWire, it just pops up a window with a web page in it—it’s just the browser-based interface, not a new client.)

The choices I think are very cool are Cocoalicious and Pukka. Both are desktop apps, both talk to del.icio.us, but they have different and interesting approaches. (I’m a big fan, by the way, of apps that run on your desktop but that are Web-centric. No surprise there!)

You already could have chosen one of those apps as your weblog editor in NetNewsWire—but that means choosing between posting to a weblog or posting to del.icio.us, when lots of people do both.

Anyway, if you haven’t checked ’em out, and you post to del.icio.us, you should. They’re cool apps, and Buzz and Justin are cool cats, and it pleases me to be able to connect my stuff to their stuff.

P.S. I’d love to figure out how to make this work with dashLicious too, but I haven’t figured it out yet. It’s a Dashboard widget, which means the context is different than with desktop apps.

NetNewsWire 2.1: NewsGator Syncing

Some of you are already familiar with NewsGator, and some of you aren’t—so I’ll explain what the deal is with NewsGator syncing and why it’s cool.

All these feature requests

I’ve long had feature requests like this:

“What about a website version? I’d love to be able to read my feeds online for when I’m away from my regular computer.”

“What about a Windows version? I use Windows at work.”

“What about getting feeds on my phone?”

Feeds everywhere

It became obvious to me that people get their feeds on more than one computer—in fact, sometimes it’s different types of computers (Windows-at-work is common), and sometimes people have cool gadgets where they get their feeds.

But, the thing is, people want their feeds and read/unread state to be the same everywhere.

And so that is what NewsGator syncing is about. It’s not just about NetNewsWire—it’s about having your feeds everywhere.

There’s a web-based version for when you’re away from NetNewsWire. There are other apps (for Windows, mobile phones, Media Center) that sync using the same system.

(You have no idea how many feature requests were, specifically, “Please make it sync with FeedDemon!” Lots of NetNewsWire users are also FeedDemon users. Well, now, cool—they do sync.)

More about syncing

Unlike the .Mac/FTP-based syncing, the NewsGator syncing works in the background, during refresh sessions. (Except for the first sync, that is.)

It’s much less obtrusive—you don’t have to tell it when to sync, it just does it. And there’s no big modal dialog box (except for the first sync), since syncing is just part of downloading feeds.

One of the side effects of this syncing is that, even if you only use NetNewsWire on one machine and don’t use anything else, you still get the benefit of faster feed refreshes. Here’s how it works:

1. At the beginning of a feed refresh session, NetNewsWire finds out from NewsGator Online which feeds need to be downloaded.

2. NetNewsWire then downloads only those feeds. It may be just 5 or 10, or it may be 100—but it doesn’t download every single one of your feeds every time. This saves bandwidth and CPU.

P.S. Here’s a screen shot showing NetNewsWire and NewsGator Online.

NetNewsWire 2.1b16 public beta

NetNewsWire IconNetNewsWire 2.1b16—get it while it’s hot!

It’s a universal binary, of course—in fact, it’s been developed on Intel Macs.

The big new feature of this release is NewsGator syncing—but there are also a bunch of performance enhancements, bug fixes, and smaller new features (including commands for printing, emailing, and posting to del.icio.us).

For the full scoop, read the NetNewsWire 2.1b16 change notes.

You can download it from the NetNewsWire betas page.

A few screen shots: NewsGator syncing, refreshing plus XML source window, crazy colors, choosing post-to-del.icio.us app, Print command, sort-by-attention command.

(I’ll be posting more here about some of the individual new features and changes.)

NetNewsWire beta testers sent a bunch of great quotes...

But my favorite one is this from Justin at carpeaqua.com: “NetNewsWire 2.1 is 112 times more gooder than the previous version.”

Bugs on the basepaths

U.S.S. Mariner: “Almost as baffling is Bunny’s ‘slow ball.’ Traveling a straight line and barely rotating, it moves so little that three batters take three swings at it and never make contact. Given the ball’s extremely minimal rotation, it seems likely that this is not a ‘slow ball’ as we conventionally think of it but instead a knuckleball, which Bunny is using to best take advantage of the known unusual air currents at the Polo Grounds.”

Feed platform presentation: Microsoft, Google, and NewsGator

Niall Kennedy: Feed platform presentation: Microsoft, Google, and NewsGator: “I will lead a session on Feeds as a Platform at the Emerging Technology conference tomorrow at 1:45 p.m. I will talk about the feed ecosystem, peer into the future a bit, and introduce attendees to three real-world examples of feed platforms.”

I’ll be there! In fact, I’ll be speaking for ten minutes or so about syncing (with a little demo of the latest beta of NetNewsWire).

Mail Act-On looks cool

People have been pointing me to Mail Act-On, which looks quite cool and useful. It sounds like it would solve some of the reasons why I can’t use Mail.

(But not all of them, unfortunately. I say “unfortunately” because I’d love to switch away from Entourage. In fact, sometimes I use mutt+BBEdit for a few hours just to give myself a break from Entourage. I even have a codeless language module for email in BBEdit that works pretty well.)

Interview about Mail

A brief interview with me about Mail appears on the Hawk Wings weblog. (It’s part of a series of interviews: check out the archives.)

The world of email clients amazes me. I’m less happy with my email app in 2006 than I was using Eudora on System 7 back in 1996.

Negative 5750

I love to delete code. It’s the best thing about programming.

But, of course, I’m working on a new version of NetNewsWire that has a big new feature plus some smaller new features. So I’ve written a bunch of new code.

Well, I got curious as to how I was doing on number of lines of code—and found that, at least so far, NetNewsWire 2.1 has 5750 fewer lines of code than NetNewsWire 2.0.1. (This includes the various frameworks I wrote that NetNewsWire uses.)

How could this be?

The first thing is, the Notepad has finally been removed. (There’s a good chance you have no idea what I’m talking about. It was a 1.x feature that nobody used. It was hidden for 2.0: it could only be turned on via a Terminal command. And now it has finally been removed.)

The second thing is that NetNewsWire 2.1 requires 10.3.9 or greater—which means two sub-things:

a. I could delete Jaguar-specific code.

b. I could switch to using Cocoa bindings in a bunch of places (most notably in the preferences window) which allowed me to delete a ton of code.

And the third thing is just that, like any programmer, I get better over time and find ways to make my code smaller and better. This part is actually my favorite—when I realize I can do in five lines what I used eight lines to do—and not only that, it’s more readable and easier to maintain.

I have a thing about this deleting-code thing. (You might recall how, for the 2.0 release, we split the weblog editor out into a separate app. This continues that tradition.)

Of course, the actual app folder will probably be bigger than 2.0.1—since this version includes both PowerPC and Intel compiled code and has some new resources (new windows, graphics, etc.).

But—fewer lines of code.

Where we are with NetNewsWire 2.1

You might wonder where we are with NetNewsWire 2.1...

It’s in private beta testing right now, and we will do a public beta as soon as we can. There are a few more bugs to fix first.

So—what’s coming in 2.1?

The big new feature is NewsGator syncing. The idea is that you can use multiple copies of NetNewsWire and keep your subscriptions and read/unread status in sync—but, more than that, you can use other applications that sync: NewsGator Online, FeedDemon, NewsGator Outlook edition, and several other applications from NewsGator and third parties that we’ll be talking about soon.

The idea is not just syncing but ubiquity, to make it so that your feeds and read/unread states are there no matter where you are.

If you’ve used the .Mac/FTP syncing that exists in NetNewsWire already, you’ll find the new syncing to be slicker. It runs in the background. Most of it happens while refreshing feeds. You don’t have to remember to do it or tell NetNewsWire when to do it—it just happens. Except for the initial sync, it doesn’t interrupt your flow with a big modal dialog.

Another big new thing is that it’s a Universal binary. In fact, I’ve been developing it on an Intel machine since last year (I had the Developer Transition Kit; now my development machine is an iMac Core Duo, which I adore).

Another new thing: we’ve worked hard on performance. The goal is to make it seem like PowerPC users now have an Intel Mac, and Intel Mac users have, well, something even faster. Consider these benchmarks:

PowerBook G4 1.33 GHz
2.0: 19.773651
2.1: 9.830022

Intel iMac Core Duo 1.83 GHz
2.0: 9.731011
2.1: 4.917876

The above measures one specific thing—saving a 634-item list of browser tabs to disk 1,000 times. But it’s an indicator of the kind of work we’ve done to make this a faster NetNewsWire.

(Why 634 tabs? It’s a real-world tabs list from a private tester. I prefer testing with real-world data whenever possible.)

After NewsGator syncing, universal binary, and performance, what else?

Bug fixes. Bunches of bug fixes. I’ll go into lots more details in the change notes, of course.

And a couple smaller features that are among the most-commonly-requested features.

When will we release a public beta? As soon as possible. As mentioned, there are more bugs to fix. I’ll be at Etech next week, so it will probably be after that. (But you can certainly ask me for a demo if you’re there.)

P.S. It’s a free upgrade. In fact, existing NetNewsWire users will get two years of free upgrades plus a free subscription to NewsGator.

Some of the questions you might have can be answered here. But also feel free to send email to support and ask questions on the forums.

(You could email me directly, sure—but I know that you’d rather I spent my time programming rather than answering email. ;)