inessential by Brent Simmons

March 2003

Focus rings

I just added focus rings to the current alpha (not yet public) of NetNewsWire. It’s weird that focus rings aren’t automatic with Cocoa, you need to do some extra work.

This came about from using Transmit, which I instantly fell in love with. It has focus rings around its table views.

But I’m still on the fence about it for NetNewsWire. Here’s a screen shot.

Search engine back up

Just FYI, to whom it may concern:

The search engine for this site and is back up. This completes the move to Cornerhost, unless any glitches are found.

Back to working on NetNewsWire...

Moved to a new host

Last night I moved this site and to a new host, Cornerhost. This should mean that there are fewer—hopefully no—outages due to the database server getting stuck.

My previous host was great, except that running MySQL wasn’t their thing. (I think they may have been doing it only for me.) Cornerhost, on the other hand, specializes in running MySQL.

I moved to Cornerhost partly on Mark Pilgrim’s recommendation.

There may be some glitches with the website as a result of the move. If you notice anything messed up, please let me know.

(Known bug: the search engine isn’t back up yet.)

Happy Birthday to Me!

Happy Birthday to Me!

It’s also Josh Lucas’ birthday, though he has some personal bad news, sadly. My condolences go to Josh and his family.

I was born 0x023 years ago in Chicago. I left Chicago while I was still a baby, and I hadn’t been back until, coincidentally, this past weekend. I was at a bachelor party for my sister’s husband-to-be. It was totally fun.

Sorry for the outage

Sorry for the outage here and on The database server was stuck. It’s back now. (It’s not my server; it’s not something I could fix myself.)

Anyway... back to your regularly scheduled programming.

WebKit WebKit

WebKit WebKit I want WebKit.

Dear Apple,

I want WebKit. I promise to use it for good and not for evil.

NetNewsWire and Keynote

An interesting feature request for NetNewsWire appeared on Tom Bridge’s weblog today—creating Keynote presentations from RSS feeds.

Tom Bridge writes: “Imagine for just a moment with me. You wake up, and on the way to the shower flip open your powerbook, fire up NetNewsWire and go get clean. When you've come back, NNW has created a Keynote presentation for you.”

It’s a good idea!

But... I have a few things to do first—fixing some bugs, adding new features to the weblog editor—before I could work on this. It will be a few weeks before I can do much with this idea.

Greatest hits

Now and again, when I have time, I like to write little funny stories. I don’t actually have time to write one right now, but I figured I’d point to a few of them, in case you’re relatively new to my weblog and may have missed them.

Here’s one, probably the most popular, on doing bong hits with Bill Gates.

My personal favorite is on how it’s so hard to teach squirrels to play baseball.

Here’s my BBEdit song.

Here’s one on the inherent evil of that Three Dog Night song Joy to the World.

Then there’s my list of top ten really mean put-downs.

Though it’s not terrifically funny, I like it as a rant: how I don’t want wearable computers.

Here’s a post on how I like to say inappropriate things. I compare a part of my anatomy to a roll of duct tape.

Another personal favorite is Frank, a fable.

Not writing about war

My guess is that now and in the coming days some people will be looking for more news and opinion about the war in Iraq—and other people will be looking for less, they’ll be looking for other things to read about.

So, just so you know, I don’t intend to write about the war either here or on

NetNewsWire 1.0.2 progress

In case you’re curious on how NetNewsWire 1.0.2 development is going...

It’s a four-step process:

1. Move low-level, relatively bug-free code into separate frameworks. The RSS parser, for instance, goes into a framework. (The main reason is that it makes code maintenance and testing easier, and it makes it so I can re-use this code easily in other software.)

2. Fix a bunch of small quick-hit bugs. Things like bugs with date display and keyboard shortcuts. A particular crashing bug in the weblog editor. That kind of thing.

3. Fix—or at least dramatically improve—performance and memory issues when one has lots of subscriptions and lots of unread headlines.

4. Add a few new features—mostly weblog editing features such as supporting more Radio and Movable Type options. (Some other things too.)

I gave myself a week to do step 1—but it’s already finished. I did it over the weekend. It was totally fun, by the way. If you’re a Cocoa developer, but you’ve shied away from building frameworks, you should know that it’s a piece of cake.

So now I’m in the middle of step 2, doing a bunch of quick-hit bug fixes. This is one of my favorite things to do, because it’s all about polish, getting the details right. With some good hours of brain-time you can knock off bugs by the anthill.

Later this week I’ll move on to performance and memory issues, then on to adding new features probably next week. Then I’ll release the first beta of 1.0.2.

XML-RPC and OS X 10.2.5

I’ve received email from people this morning telling me that OS X 10.2.5 will contain fixes to Apple’s XML-RPC code. Which I think is great. I had no doubt they would fix the bugs.

Now, I don’t get pre-release copies of the system, so I can’t confirm this. But, assuming it’s true, the obvious question for me is: why not switch back to the system-supplied XML-RPC code?

Here’s why I do not plan to switch back:

1. My philosophy is to always use system-supplied code whenever possible. My time can be much better spent in ways other than re-inventing the wheel. However, I already have re-invented the wheel in this case. There’s a value to being in control of the source code. If I want to or need to add features, I can.

2. My XML-RPC code runs on systems previous to 10.2.5. I don’t want to require that NetNewsWire users run 10.2.5.

3. The code is designed to be forgiving of things like unencoded ampersands and characters outside of the XML-RPC spec. It has to be forgiving, because not all of the various weblog publishing systems return perfectly valid responses all of the time. (That’s just a fact of life. It’s not my job to be an XML cop. I’d rather just have things work.)

4. My code is in the form of a set of Cocoa classes. Apple’s code is procedural. I prefer using Cocoa, since NetNewsWire is a Cocoa app. It fits better.

5. My code uses CURLHandle, which is what NetNewsWire uses to read feeds and so on. There’s a value to using the same HTTP client software throughout the app. For instance, once I fix the bug with authenticating proxies in the news reader, I can fix it in the XML-RPC code at the same time, since the fix will be the same.

NetNewsWire 1.0.1 Ships

NetNewsWire 1.0.1 has been released! Here’s the What’s New in NetNewsWire 1.0.1 page. The biggest changes since 1.0 are crashing bug fixes.

But there are some other nice things too—the news reader, for instance, is more forgiving of feeds with errors, so parsing failures will happen less often.

Today I’m starting work on 1.0.2, which will include more bug fixes but also some new features. Based on the feedback I’ve been getting, it sounds like what’s most wanted are new features for the weblog editor—specifically, support for more Radio and Movable Type options.

Short-term NetNewsWire road map

Here’s the short-term road map for NetNewsWire...

NetNewsWire 1.0.1 will probably be released Friday. This release is mainly about fixing crashing bugs—but it also fixes some weblog editor bugs and makes some other improvements here and there.

The big change in 1.0.1 is under-the-hood—it’s the brand-new XML-RPC client code that’s used by the weblog editor. It replaces the system’s built-in code that was a source of crashes in the weblog editor. (It’s available under the open source BSD license, so other Cocoa developers can use it too—and help improve it if they want to.)

Another change—less major in terms of code, but still nice—is that the RSS parser is more forgiving of unencoded ampersands, which is the most common cause of feed-reading failures.

(I’ll do a what’s-new-in-1.0.1 page that explains more of this in friendlier terms.)

So—what’s next? What’s coming in 1.0.2?

1.0.2 will have more under-the-hood changes: I plan to make frameworks out of some of the underlying code that doesn’t change much. For instance, the XML-RPC code will be in a framework, the RSS parser will be in a framework, the OPML parser will be in a framework, and so on.

For non-developers... frameworks are like separate modules. They’re hidden from view unless you do a Show Package Contents on the app. As a user you wouldn’t notice the difference if code is in a framework or not. But it means two good things:

1. It’s easier to maintain and test code that’s in frameworks. I can write test apps that are specific to a framework, and I can work on a framework separately from working on NetNewsWire, and only incorporate the updated framework when it’s ready.

2. Some of these frameworks will be released as open source (BSD license) so that other developers can use them. Frameworks are easier to use and integrate than just raw source files.

Okay, that’s pretty boring to most of you... So what else is coming in 1.0.2?

More bug fixes. More small enhancements. And, finally, some new features.

I haven’t decided yet which features yet are going into 1.0.2, but they’ll most likely be weblog editor features, such as:

1. Allowing Radio users to specify that a post should not go on the home page.

2. Supporting more Movable Type options.

3. At least some minimal AppleScript support for the weblog editor—the ability to get and set the contents of the Title, URL, and Body fields. Lots of people want this so they can write scripts that initiate a new post in NetNewsWire.

4. Support for uploading media objects (pictures, movies, etc.) to sites that support it. (I think Radio and Movable Type support this.)

5. Some kind of Feedster integration. I don’t know what, yet, just that I like the idea. (Okay, this isn’t a weblog editor thing.)

Note: The above list is just my preliminary thoughts: the list of new features in 1.0.2 may change.

Also—a question—what new features would you most like to see? If you had to pick just one, what would it be?

NetNewsWire 1.0.1fc1

NetNewsWire 1.0.1fc1 fixes a weblog editor bug with saving drafts and includes a couple other minor changes.

See the change notes for the whole scoop.

This is a final candidate release. We’re looking for deal-stopper bugs, bugs bad enough to prevent this from being released as 1.0.1.

Once 1.0.1 is released, we’ll go back to fixing bugs—and also adding new features, such as supporting more Movable Type options, allowing Radio users to specify that a post shouldn’t go on a home page, and so on.

NetNewsWire 1.0.1b5

NetNewsWire 1.0.1b5 fixes some crashing bugs, partly fixes a bug regarding Movable Type categories, and moves commands from the View menu to the Window menu. (Commands that should have been in the Window menu to begin with, since they have to do with opening and hiding windows.)

Read the change notes for the full scoop.

Kensington Optical Elite

The other day I asked what’s the best optical mouse, and I got a bunch of comments.

So... what did I end up with?

Here’s how the decision process went.

1. The feedback I got suggested there are three great mouse makers: Kensington, Microsoft, and Logitech.

2. My instinct is as always to support the little guy, so Microsoft was provisionally eliminated as a choice.

3. Then the feedback I got, and the research I did, suggested that Kensington has better Mac OS X software and support than Logitech. So I chose Kensington.

4. Then—how to choose a specific mouse? I wanted one in the $20 - $50 range that had at least two buttons and a scroll wheel. It had to be optical, of course (that was the whole point). Trackpads not allowed. And, of course, it had to not be completely ugly. (Hyper-concern with aesthetics is the mark of a good Mac user.)

This left just a few mice to choose from. I chose the Kensington Optical Elite.

There were some runners-up—the PocketMouse Pro, for instance.

But I’ve been totally happy with the Optical Elite.

Roogle via Huevos

I added Roogle, the RSS search engine not affiliated with Google, to my copy of Huevos. Here’s the search string:

Open Source XML-RPC for Cocoa

I posted a new open source XML-RPC implementation for Cocoa. It’s BSD licensed, which means you can use it in commercial apps and apps that aren’t themselves open source.

This code is, at this writing, just a little ahead of the code that’s in the current NetNewsWire beta. NetNewsWire’s weblog editor uses XML-RPC to communicate with Radio UserLand, Movable Type, Conversant, Blogger, and so on.

The code is in beta: it needs more testing and more documentation.

People will ask: why not use WebServicesCore? Here’s a quote from the Cocoa XML-RPC page:

At this writing (7 March 2003) the implementation of XML-RPC in Apple’s WebServicesCore has a crashing bug. Whenever a method response contains an empty element, there’s a crash.

We fully expect this (and other smaller bugs) to get fixed—but we couldn’t wait. (NetNewsWire’s weblog editor uses XML-RPC heavily; it’s how external editors work with weblogs.)

Using this XML-RPC code has other benefits: it’s Open Source, so you can see the code. As a set of Cocoa classes it’s easier to use than a C API, and you can create sub-classes.


I was recently going through the office closet and dealing with old hard drives. I found some weird old graphics from like 1996.

I don’t know what InnerWeb was supposed to be—but it’s a tracing of my head.

A friend of mine was working on starting an Internet café, and this was part of some website graphics we were working on. (The café didn’t happen.)

We were working on a product named Scramble at some point. It didn’t ship. I don’t remember what it was going to be.

Here’s a metal thing. I think it’s a piece from a lighter. I have no idea what the point is here.

Need a searchlight?

Here’s an old-fashioned Home button.

Here’s a six-shooter. To be used on only the nastiest of bugs.

Here’s a weird 3D thing.

Here’s a colorful engine.


I’ve been thinking about advertising recently. So when PerversionTracker, one of my favorite sites, posted their advertising offer, I jumped on it.

If you look at the bottom of the review for Xupport 1.2.7, you’ll see a little text ad for NetNewsWire. I tried to come up with a slogan that would fit in with the site.

NetNewsWire: It’s Not Metal™

So, anyway, I was wondering about how advertising is changing in the weblog age.

One thing that’s important to me is that ads should be clearly marked as ads. (And my ad on PerversionTracker is clearly marked.)

But what do you think of the whole topic?

When a software vendor has a little extra money to spend on advertising, what’s cool to do and what’s not cool to do?

Is it a good idea for software vendors to spend at least a little money on the weblogs and news sites in their ecosystem?

I’m not about to go on a spending spree. But it’s not too early to start thinking about these things.

NetNewsWire 1.0.1b3

NetNewsWire 1.0.1b3 includes a variety of bug fixes.

One of the most common causes of problems in both the news reader and the weblog editor is unencoded ampersands—and NetNewsWire is now more forgiving of this error.

Downloading categories from Radio UserLand weblogs should work again. (It was broken in a recent beta.)

See the change notes for more info.

NetNewsWire 1.0.1b2

NetNewsWire 1.0.1b2 contains mostly fixes for the new XML-RPC code the weblog editor uses.

It’s still a beta! There are plenty more bugs to fix.

By the way, I hope to release my new XML-RPC client under a BSD license some time this week.

MacSlash interview

MacSlash interviews me. Cool. I like doing interviews.

One of the things I like about MacSlash and similar sites is how questions are submitted by readers of the site. You end up with some pretty surprising questions sometimes.

NetNewsWire/Spring Bundle

We’re trying something new—new for us—we’re bundling NetNewsWire and UserCreations Spring. You can buy them together for just $39.95.

It’s called the Breakaway Bundle. Why the name? I think we liked the sound. But it does make me think of a running back breaking away from his tacklers to run open field all the way to the end zone.

(Note to people who don’t follow American football: never mind the above image. Just think good thoughts.)

And the name has—at least for me—an undertone of something about the future, breaking away into the future with the next generation of Internet apps.

Best optical mouse?

What’s the best optical mouse? (For Mac OS X, of course.)

I’ve been using the standard Apple optical mouse—and it’s great—except I also want a two-button mouse (at least two buttons) and a scroll wheel.

I don’t care if the mouse itself is wireless. The cord doesn’t get in my way. It’s just important that it be optical—I can’t go back to mechanical mice.

What do you recommend?

Old logos

In 1997 we were working on some logos for Ranchero Software. (It was right around this time I started working for UserLand, and so Ranchero Software went into hibernation.)

I’ve been going through closets and old hard drives and things, so there’s bound to be a bunch of things like this over the next several days.

Update: Here’s the logo we eventually chose, which we used for several (hibernatory) years: