inessential by Brent Simmons

July 2008

NetNewsWire 1.0.7

I was so happy last night when NetNewsWire 1.0.7 appeared on the App Store. I was actually out with some local Mac/iPhone developers, and folks were downloading it right away, as we sat at the table. Fun for me. ;)

There is still plenty of work to do, of course — but here are the changes in 1.0.7 (since 1.0):

- Fixed several crashing bugs.

- Performance is much improved.

- Memory use is much improved, and some memory leaks have been fixed.

- You can unsubscribe from feeds or just remove them from the iPhone. Click the Edit button to start. Click the circle button, then the Delete button. An action sheet will pop up asking you what you want to do. (Don't Show in iPhone or Unsubscribe Everywhere. Or Cancel.)

- It now shows unread items only, and lists only feeds with unread items.

- You can now send a link via email -- click the action menu and choose Email Link.

- The application icon on the home screen now gets the unread count badge.

- Total unread count appears at bottom-left of Feeds page (except during refresh/sync).

- When downloading feeds, the status message says the name of the feed.

- When you open a web page inline, it opens in a new view (it slides over, etc.) You can then go back to the news item view.

- Add to Clippings now works for web pages.

- On the news items list view, the Mark All as Read button now does not appear if all items are read.

- Worked around feeds without titles -- pulls the title from the first words in the description. (Instapundit's feed, for instance.)

- Worked around feeds that forget to put an "http://" at the beginning of their home page link.

- Tightened up metadata display on news item view: categories now appear at the bottom. There's now a space rather than a line break before the author name. Decreased the size of the title.

- Settings are now in the main Settings.app, rather than in NetNewsWire. The Account button is gone.

- Fixed a caching bug where new news items sometimes wouldn't get displayed.

- After tapping Mark All as Unread, it goes back to Feeds view.

The Sites Drawer

The Sites Drawer will be gone as of NetNewsWire 3.2. It was a great feature, but it’s no longer needed.

In case you never used it, here’s a screenshot. Then I’ll tell you why it existed — and what was one of the cool, unanticipated side effects.

Sites Drawer screenshot

Why the Sites Drawer existed in the first place

When I was first writing NetNewsWire back in 2002, most sites didn’t have feeds and people didn’t know what RSS was.

So I wanted a way for people to be able to find something to read without having to go nuts looking for stuff.

I got the idea initially from the classic Usenet reader NewsWatcher. You could get the full group list from the server, which would show you all the groups you could subscribe to.

Well, I knew I couldn’t list every RSS feed, but I could at least give people a bunch of them, enough to get started. Even though it took time to find feeds and maintain the list, it was important.

But these days tons of sites have feeds, and RSS is far more well-known. It’s not so important to include a directory inside the app — and the time spent maintaining the list can be better spent on other things.

A major difference between now and 2002: people used to write in all the time asking how to find feeds and subscribe to them. We pretty much don’t ever get that question anymore.

Unanticipated pure marketing genius

We told people, early on, that they could ask us to add their feed to the Sites Drawer. I don’t think Sheila or I ever said no to any requests. (Sheila updated the Sites Drawer for NetNewsWire 2.x and 3.0 — the glory days of the Sites Drawer. She was way better at it than I was.)

What I didn’t think about, but what quickly became apparent, was that people loved having their feed listed in the app. You could figure that many of our users were also webloggers — cutting-edge types, early adopters. When they saw their own feed in the app, they felt a sense of co-ownership.

And that was totally, awesomely great.

Webloggers who feel attached to your app are more likely to write about it. And that’s how good word spreads — word-of-blog.

I can’t say it was the only reason NetNewsWire did well from it’s earliest days, but it was part of it.

I wish I could say we totally planned it that way. We didn’t, but at least we were smart enough to notice the effect early on and keep it going.

And, frankly, it was fun for me. I didn’t have a blogroll, and I tended to avoid social networking sites. Wanna see my friends? Look in the Sites Drawer. ;)

What I deleted from NetNewsWire 3.2

Here’s the list of what I deleted from NetNewsWire 3.2:

- Microformats

- Sites Drawer

- Add Author to Address Book

- Command to turn on/off icons and favicons in subs list

- Command to turn on/off sort animating in subs list

- Command to show/hide styles menu

- Combined View's "Collapse read items at startup" pref

Not everything on the initial list was deleted, which is normal. (It was a list of things to consider deleting, after all, not a set-in-stone list.) All the feedback I got was very helpful — thanks to everyone who took the time to write to me.

Important note about the last four items: the features still exist, but now as “hidden” prefs that you can set in the Terminal. These aren’t the first hidden prefs, nor will they be the last, I’m sure.

In the end, NetNewsWire was slimmed down by almost a megabyte (mostly resources, but some code too), and the menus and preferences are a little smaller.

My favorite thing was deleting the microformats parsing code. Any CFXML-based code should be nuked. (I have no inside knowledge about CFXML being deprecated or anything — but it should be.)

It also means a slight performance boost when opening news items and web pages, as NetNewsWire now doesn’t look for embedded microformats. (It still looks for feeds in web pages, though, of course.)

I also really liked deleting the Add Author to Address Book command. As Mike Lee said, “In terms of interface unity, ABMultiValue might just be the worst class in Cocoa. Why should querying the Address Book yield a collection seen nowhere else in the entire API?” Oh yes, it was nice to delete this code.

EvilWire

Got NetNewsWire 3.2 down to 333 source files.

Which means, of course, when doing a build for both architectures...

Compiling 46 of 666 source files

More about deleting features

I got an email observing that I was on a minimalism-and-deleting kick — but, thing is, I’m always on that particular kick. It’s not a kick — it’s how I work.

Here’s the schizo thing about software development (at least on Macs):

1. Everybody praises apps that don’t have a ton of preferences and features.

2. Everybody asks for some new preferences and features.

(Okay, not everybody. Not you, I know. I mean everybody else.)

To make it worse:

1. Everybody thinks they’re representative of the typical user, so what they want ought to be a no-brainer.

2. And they act like you put skunks in their fridge if you don’t do whatever-it-is.

(Okay, again — not you. You’re cool. I’m talking about the others.)

The problem is 100 times worse when it comes to deleting features.

I hope it’s self-evident that apps with too much stuff are, in general, bad. And that there are some features whose time has come and gone, and there are features that don’t get used much.

When working on a new version of the app, before I think about the features I want to add, I take a look at what I can get rid of first. It’s a quality-of-app thing. I think of it as making space for the new stuff — but first I have to take the wrecking ball to some old stuff. (If I don’t, you get feature sprawl. Yuck.)

But, the thing is, these are features that some people somewhere use and like. And they’ll be sad to see them go. It’s worse than skunks-in-the-fridge, it’s exploding skunks in bed.

It’s possible that, because my apps are free, I have some extra leeway when it comes to deleting features. It doesn’t feel like that — because I did it when they were for-pay, too.

But I heard from a developer earlier today who liked the idea that I would write about this issue. He didn’t say that his users were a bunch of drama queens suffering from OCD who hate change — but, if he had, I would have understood, despite the hyperbole. (He also could have said that his users were wickedly smart, and I would have said the same about mine. ;)

With any app with some longevity, it’s inevitable that some stuff will have to get deleted. NetNewsWire’s first public betas appeared six years ago: lots of stuff has been deleted.

But, every time, it’s still a mixed situation. Part of me just loves the process — touring the app, putting features in my cross-hairs, thinking about pulling the trigger, adding them to the hit list, then posting the list and getting feedback.

But part of me cringes, too, because I use software too. (Duh.) And I know what it’s like to see something I like change, and I know what it’s like to see a feature I like disappear. Even if there are alternatives, even if I know that I’m the rare one who actually cares about a given feature, I still don’t like it. I sympathize.

So one thing I like doing is getting as much feedback on the possibly-to-delete list as I can. I don’t put things up to a vote, because a vote doesn’t tell me the why of anything, and that matters more than just numbers.

I’ve learned a few specific things in the past few hours that I didn’t know: for instance, that people actually do use the HTML Archive feature. That people don’t use the automatic enclosure downloading feature very much, but they do like the possibility of manual downloading. (I didn’t, and don’t, intend to remove manual downloading of enclosures.)

In the end, though, I’m going to delete some features, add some new ones, and do my best to make it the best release of the app yet. All I can do.

Features to possibly delete from NetNewsWire for Macintosh

I’m working on NetNewsWire 3.2 for Macintosh (and also still working on the iPhone version, worry not). Part of planning is figuring out what features I can delete.

Deleting features has always been a big part of the way I work on NetNewsWire — in some ways, it’s my favorite part, since clutter is the death of software.

(Recall that NetNewsWire 1.x included an outliner and a weblog editor! The outliner got deleted, and the weblog editor got split out into MarsEdit — which, by the way, has a cool new release today. And plenty of other features have been deleted along the way.)

Today I sent an email to my beta testers list with my ideas for features to delete. I welcome feedback, of course — agreements, disagreements, and other ideas for features to delete — though I don’t have time to reply. (I have to spend my time working on the software itself, rather than emailing about it. ;)

Here’s the list:

- Microformats (I bet I could delete them and no one would notice)

- Automatic enclosure downloading -- nuke it (use iTunes!)

- Full Screen command

- Sites Drawer

- FTP syncing (already deprecated)

- Sort (news items) by Arrival Order (it's weird, because there's no Arrival Order column, and sort by Date is already the default)

- Remove ability to turn on/off icons and favicons in subs list (they'd always show)

- Remove ability to turn on/off sort animating in subs list (animating would be on)

- Remove ability to show/hide styles menu (it would always show)

- Remove Add Author to Address Book (which I bet nobody uses)

- Remove subfolder for each feed option in Downloading prefs; don't make "NetNewsWire Enclosures" folder -- people complain about both, so I'd just make it flat

- Remove Combined View's "Collapse read items at startup" pref -- it would be on, no way to turn it off

- Remove the weird pref for "When going to next and previous unread items" -- it would always "Respect expansion state of the Subscriptions List"

- Remove the HTML News Archive feature -- which I bet nobody uses

NetNewsWire progress report: 1.0.7, now with feed removing

I just built NetNewsWire 1.0.7. I have no idea when you’ll see it, when it’ll get into the App Store — I’m just keeping you up-to-date on progress.

Change notes (since the last time I posted, which was for 1.0.5):

1.0.7

- You can unsubscribe from feeds or just remove them from the iPhone. (That is, you can remove them from the iPhone location. They'll continue to appear in other locations.) Click the Edit button to start. Click the circle button, then the Delete button. An action sheet will pop up asking you what you want to do. (Don't Show in iPhone or Unsubscribe Everywhere. Or Cancel.)

- Fixed a crashing bug that could happen when going to the Next Unread item.

- Fixed a cause of database-busy errors that could come up when saving a favicon.

1.0.6

- Does more when receiving a memory warning message -- it dumps cached feed and news item objects (except for the current sub).

- Fixed a small, rare memory leak in the RSS parser. (Did a big leak hunt -- even used scan-build -- and this is all I could find.)

- Fixed a bug introduced in 1.0.5 that could let unread counts get out of sync.

Long-term brain confusion

There are a few things that have confused me all my life. One is the issue of higher numbers.

By that I mean — which number is higher, 1 or 2? 10 or 7?

I always get it wrong. Here’s why:

1. Here is a list.

2. Here’s a second item.

3. Here’s a third item.

Which number is higher? #1, clearly, is higher — it’s above the subsequent numbers. Just look at it — it’s totally, obviously, unquestionably higher.

But no. Everyone else thinks the other way. Despite the clear evidence of their eyes.

Working on deleting feeds

Another NetNewsWire for iPhone progress report...

I’ve been working on NetNewsWire 1.0.6 since yesterday. The main new feature in 1.0.6 will be deleting feeds. When you delete a feed, you have two options of how to delete it:

1. Don’t Show in iPhone — removes it from your iPhone location, but leaves it intact in other places

2. Unsubscribe Everywhere

I thought about just doing #1 — but I think it would seem weird not to be able to unsubscribe from a feed completely, so I’m doing both.

And then, of course, there are still more bug fixes and some new features to do. Work continues, as always.

PS Had a root canal yesterday. I like joking that — given the amount of stress I’m in waiting for my updates to appear on the App Store — the couple hours lying down in the dentist’s chair was a nice, relaxing break. ;)

Change notes for NetNewsWire for iPhone 1.0.5

Below are the change notes (edited for profanity and such) for NetNewsWire for iPhone 1.0.5. It’s not up on the store yet — 1.0.2 is still In Review. But, one of these days, you’ll get an update.

(I feel very good about this build, especially regarding performance issues. It’s much better than 1.0.)

I’m not totally sure why I’m posting these, other than that it keeps me from feeling like a black box where you can’t see in.

Anyway...

Changes in 1.0.5 (since 1.0.4):

- Scrolling is faster in the Feeds list -- now re-using a table cell instead of creating a new one for each row. (Which I had been doing to work around a [REDACTED] in an earlier [REDACTED] of the iPhone [REDACTED]. Glad I don’t have to anymore.)

- The + button is now an action-menu button -- because it will have more than just Add to Clippings in it. (Things like email-link, mark-unread, and send-to-Twitterrific will go in there.)

- Email Link now appears in the action menu for news items and for web pages. Both create a new outgoing message in MobileMail with no recipient, but with subject and body filled in. (The link is the body.)

- Fixed a bug where feeds with blank names could appear (because their titles haven’t been retrieved yet -- now we’re retrieving them first).

- Fixed a bug where GetSubscriptionsList (a server call) would be called at times unnecessarily.

- Fixed a bug where a refresh/sync session would happen twice sometimes, unnecessarily.

- The application icon on the home screen now gets the unread count badge.

- Total unread count appears at bottom-left of Feeds page (except during refresh/sync).

- Reversed delete-older-than-two-weeks change from 1.0.4 -- because [REDACTED] [REDACTING] help me if unread counts don’t match with the iPhone and other readers. I’d be explaining it for the remainder of my natural-born existence.

- It’s now faster to rebuild the Feeds list -- not rebuilding all unread counts every time it loads.

- When downloading feeds, the status message says the name of the feed, so you can better tell what’s happening. (This change, plus putting the unread count at the bottom-left, also have the effect of making this feel like NetNewsWire.)

- On the news items list view, the Mark All as Read button now does not appear if all items are read.

iPhone model

As a software developer, the one thing I’m good at is listening to users.

I’ve always worked in public or semi-public: release, listen to feedback, release, listen, repeat forever. I worked this way for years UserLand. All of NetNewsWire was developed this way, beginning with the very earliest betas of NetNewsWire Lite back in 2002.

My entire career has been about software development as social activity (and a little bit as public performance, I admit).

I don’t know another way to do this — and, if I did, that other way probably wouldn’t suit my temperament. It may not be the best way to do software, but it’s the way that works for me.

Which is why I’m more than a little bit at sea with the iPhone development experience. Getting beta testers is a technical and legal challenge. And I’m used to having hundreds, not just a few. Discussing development and design issues with other developers is usually a valuable thing, but there’s an NDA in the way.

But, then, well, in theory I can do frequent public releases, get lots of feedback, and keep the cycle going. Great theory. Works for me!

Of course, that is, if I had a way to get my releases to the public... That’s where I’m bugged. I keep getting feedback on stuff I fixed or changed days ago. And no feedback on the recent changes.

Anyway, just thought I’d wave hi from out here on the waves.

NetNewsWire for iPhone progress

I’ve been working like crazy on updates to NetNewsWire for iPhone — but, unfortunately, updates aren’t being pushed to the App Store yet. I don’t know why, though I imagine it’s just that things are crazy in the early days.

I don’t know when updates will go out — wish I did.

In the meantime, here’s what I’ve been doing, and here’s the plan:

1. I’ve been fixing bugs and performance issues, and implementing some of the more obvious features. (Not done yet, but getting there.)

Some of the obvious features include things like email-link, choose-clippings-folder, send-to-Twitterrific, mark-as-unread, and remove-feed-from-iPhone-location.

The plan is to finish this up — make stable and fleshed-out the app as it exists right now.

2. Then I’ll revisit the user interface. A number of people have asked for something like a Combined View, where you see excerpts of news items. A reasonable request, absolutely. But the plan is to shore things up in #1 first, then move on to this, once there’s a stable base with a more complete set of features.

Again, I have no idea when any updates will actually appear. But I have indeed been working as quickly as I can — I’ve been pretending to myself that you’re actually getting the updates. ;) (Though not completely satisfying, the pretense fools me enough to keep me going.)

PS Here are my change notes since last Friday:

1.0.4

- Worked around feeds without titles -- pulls the title from the first words in the description. (Instapundit's feed, for instance.)

- Worked around feeds that forget to put an "http://" at the beginning of their home page link.

- Tightened up metadata display on news item view: categories now appear at the bottom. There's now a space rather than a line break before the author name.

- Performance: lots of parsing and processing happens in background threads now, so as not to block the main UI thread.

- Performance: at parse time, now ignoring any items published more than two weeks ago. This cuts down on the sheer amount of data the app has to manage, and it goes with the idea that the iPhone reader is for reading what's new. It's not meant to deal with an archive.

- Performance: at startup, deletes news items more than 2 weeks old. (See above for reason.)

1.0.3

- Small performance gain by not invalidating all unread counts every time a news item changes status. Just invaliding unread counts for affected feeds and folders.

- When you open a web page inline, it opens in a new view (it slides over, etc.) You can then go back to the news item view.

- Add to Clippings now works for web pages.

- The Next Unread button in the web page view moves you back to the news item view before showing the next unread.

- Settings are now in the main Settings.app, rather than in NetNewsWire. The Account button is gone. (Note: you still enter username and password in the app the first time you run the app, of course. And you enter username and password in the app if there's an authentication error.)

- Doesn't always refresh/sync at startup -- only if the last refresh/sync was more than 5 minutes ago.

- Fixed a caching bug where new news items sometimes wouldn't get displayed.

- Now displays unread items only (and only feeds with unread items).

- Added a default screenshot so you get something besides black as the app is loading.

1.0.2

- Decreased the font size of the title in the news item view.

- If there's an authentication error contacting our sync server, it's reported and you can re-enter username and password.

- Bigger fonts for text fields in setup and options screens.

- Fixed a crashing bug due to a missing lock.

- Empties the favicon cache if app receives memory-low warning.

- After tapping Mark All as Unread, go back to Feeds view.

- Fixed a couple small memory leaks.

- Mark news item as read the moment the webview starts loading, rather than waiting until it has loaded (which may not happen if you're off-network).

NetNewsWire for iPhone tip -- not showing certain feeds

If there are some feeds you don’t want to see on NetNewsWire for iPhone, but you still want them to appear in the desktop version, here’s what to do:

1. Go to the browser-based reader (sign if needed) then click on Settings (in the blue bar, upper right).

2. Then click on the Edit Locations tab.

3. Scroll down till you see the NetNewsWire iPhone/iPod-Touch location. Then click on Feeds.

4. Uncheck the ones you don’t want to see on your iPhone. Then click Update at the bottom of the screen.

(Obviously, it would be nice to be able to do this more easily through the iPhone. It’s on the to-do list.)

NetNewsWire icon

For the icon for the iPhone version, I wanted to suggest a couple things:

1. It’s NetNewsWire, but it’s just the heart of it, not all the features.

2. It’s an iPhone app.

So I did the simple thing — launched Acorn, cropped the center of the icon, then turned the entire thing an iPhone-ish blue-gray color.

NetNewsWire iPhone icon

1.0 all over again!

Awesome day! NetNewsWire 1.0 for iPhone is available via the App Store. (It’s featured, even.)

I’ve been checking out some other apps — so far I like Remote, Twitterrific, and Exposure. (There are plenty more apps to come, I’m sure. I know of some apps that aren’t listed yet that I’m eager to see.)

So much fun. Of course, I’ve already got 1.0.1 in the pipeline, and I’m working on 1.0.2. But for now I’m still checking out the App Store.