inessential by Brent Simmons

October 2002

Article sent to MacTech

The article I was writing for MacTech—I submitted it this morning, so it doesn’t need any more review.

But of course I already have another article in the works, and when that needs review I’ll be sure to post a note here.

Thanks to everyone who volunteered! I appreciate it.

Reviewers needed

I’m just about finished writing a second article for MacTech on developing contextual menu plugins for OS X.

I’d like to have a couple knowledgeable OS X developers review it before I submit it—but, of course, I’d like to submit it tomorrow.

So, if you have interest and can read it this afternoon or tonight, please send me email (to brent at ranchero dot com) and I’ll email you the article. (And of course I’ll also thank you for your help in the article itself.)

Thanks!

Working on MacTech article

I’m working on part two of my MacTech article on writing contextual menu plugins. Part two will cover running Unix commands, adding a submenu to the contextual menu, handling a text selection, and sending an update event to the Finder.

For those who read part one—any feature requests for part two? Any questions I can answer?

I’m also thinking about other articles I can write for MacTech. I have lots of ideas. But I’d be happy to take suggestions. Any articles you really want to see?

Update to previous post

I should have been more clear about RSS and relative URLs.

The spec clearly says that URLs in link elements must be absolute.

But I’m talking about relative URLs inside the description element. Unless I’m just totally blind, I didn’t see anything about that.

Should aggregators parse relative URLs?

Question: should RSS aggregators and newsreaders parse (expand) relative URLs in RSS items?

My thinking is no, they shouldn’t. As I see it, the idea behind syndication is transportability. The content of an RSS item is not relative to a location on the Web. (Which is different from HTML pages, for instance, which are relative to their own URLs.)

But nevertheless I get bug reports—people tell me images don’t show up for a certain feed, or the URLs don’t work. And it’s because they’re relative URLs.

What do you think?

I can, of course, see the other point of view also (that RSS feeds are relative to the link specified in the channel header, usually the home page of the site).

I want to do what’s right, but I’m not sure which is right.

Huevos 1.1b2

Huevos 1.1b2 includes a very useful change—you can type a hotkey combination in any app and bring Huevos to the front instantly.

The default is Control-Escape, an easy left-handed gesture. You can change it via the Preferences window.

For me this new feature makes all the difference. Before this, Huevos was okay, somewhat useful, but this change puts it over the top.

(Note to Cocoa developers: the HotKeys API is a Carbon API, and I didn’t know how to access it from Cocoa—until I saw this helpful post from the Unsanity folks.)

The Who

Speaking of the Who (which I do, below)—if I had to pick a personal favorite band from the ’60s, it wouldn’t be the Beatles or the Rolling Stones. Or the Doors, the Kinks, Jefferson Airplane, or Bob Dylan.

It would be the Who. All the way. Totally.

Not just for their great sound and the way they smashed up their guitars onstage but for their style, the band’s persona. That whole sharp mod thing. The blue collar kid in revolt who isn’t a hippie.

(Hippies were, then as now, the privileged kids revolting against privilege. How totally boring. The most conventional way of being unconventional.)

The Who: Vespa scooters. Speed. Cool clothes.

Noise.

Love it.

It’s time for a new Nirvana

We’ve been lucky so far, we rock-n-roll fans. Every decade or so there’s a revolution, a new band (or family of bands) that comes along and changes everything.

From the Beatles and the Who to the Sex Pistols and the Clash to Nirvana—the history of rock is the history of rock’s revolution against itself.

When the Clash came along it was all Foreigner and REO Speedwagon. When Nirvana came along it was Michael Jackson and those prettified hair bands on MTV.

These days we have Britney Spears and boy bands and Eminem.

People my age, we did the Nirvana thing. It’s time for the next bunch of kids to do their thing. I have no doubt that it’s coming.

I just hope it’s really, really noisy. I’ll know you’re doing the right thing if my first instinct as an older person is to hate it.

By the way, I actually saw Nirvana perform live several times, at dorm parties and at house parties in Olympia in the late ’80s. And I couldn’t stand them. They weren’t really Nirvana yet—they were a boring heavy metal band. But, you know, they got really good later.

How to be happy

For a while it seemed like the Internet was drowning in a tide of annoying crap.

Spam! Pop-under ads! Flash ads!

The day-to-day experience of working and living in this wonderful network was getting worse by the day.

So I took steps.

1. I switched from Eudora to Apple’s Mail app.

I did this reluctantly, and there are still some things I’d love to change about Mail, but I did it for one reason: Mail has intelligent spam filtering.

It lives up to its billing. It is all that.

On a bad day I see two spams. On a good day, none. Wow.

And I don’t have to manage a bunch of filters. (I had, no kidding, hundreds of spam filters in Eudora and I added more every day. And I was still drowning in spam.)

2. I switched from Internet Explorer to Chimera.

The first time a pop-under ad tried to appear, Chimera presented a dialog telling me that it could prevent pop-under ads from ever appearing. Did I want to let it do this for me?

Yes!

No more pop-up or pop-under ads. None. Zero. So cool.

(I understand Mozilla has the same feature, by the way.)

3. I nuked Flash.

Oddly, none of the browsers on my machine gave me the option to turn off Flash.

So I found where it lived on disk and I trashed it.

I had discovered that the major use of Flash on the Web was for ads. Really annoying ads, with things that move and make noise. Super-yuck.

Have I missed Flash? Are there other uses for Flash I’m sad about missing out on?

Nope. I don’t miss Flash in the least tiny bit.

Conditional GET support

Conditional GET support went into NetNewsWire quite easily—and so I’m working on a new beta to release today.

For sites that support it, this will reduce bandwidth consumption dramatically.

Other ideas for ways to reduce bandwidth use are of course very welcome.

BigCat en route

Today my hope is to release a new beta of the BigCat plugin. Changes will include cool new icons and the ability to run shell scripts as well as AppleScript scripts.

Also there will be an installer, since people sometimes run into difficulties doing manual installs.

If it doesn’t happen today it will probably get released tomorrow.

Why develop for Macs?

Duncan Wilcox continues the discussion on why develop for Macs instead of Windows.

Duncan writes: “On Windows you have 20 times as many users, but you probably have at least 5-10 times as many competitors. And for some reason, many Windows users appear to put up with the mostly crappy GUIs of free software, so you also have to compete against $0. Plus you have the Borg of all competitors.”

Huevos Tip

Tip for Huevos users: you can search my sites by adding a search engine named Ranchero and making the search string http://ranchero.com/search.php?q=%@.

This searches both ranchero.com and inessential.com together.

Huevos 1.1b1

A new beta of Huevos has been released.

(For those who don’t know: Huevos is a Web search utility. Type a search string and choose a search engine, then click Search or hit Return to run the search in your default browser. You can configure the list of search engines.)

Changes include a cool new application icon by Kristopher Couch.

Huevos app icon

The main window is now smaller, so it takes up less space on your screen. The window can also be floated by choosing Float Search Window from the Window menu.

On Jaguar the main window is metallic. Not just because it’s cool but because with an app like Huevos you want to be able to move it around easily, and with metal windows you can click anywhere to move it around.

Huevos main window

Foo!

This article—Going Native: The Attraction of the Cocoa Interface—is exactly the kind of thing that drives me crazy.

Me, I’m a Cocoa developer, so you’d think I’d appreciate an article that compares Cocoa to Carbon and declares Cocoa the winner.

But there’s just too much misinformation here. It’s the kind of thing I’ve read other places, too. There is a class of user who’s biased against Carbon—unreasonably, in my opinion. A good app is a good app.

I’ll take a few points from the article:

1. “Carbon is still very much a work in progress, and that Apple has been somewhat slow to provide access through the Carbon environment to all the ‘goodies’ that come with the Mac OS X architecture.”

Cocoa is still very much a work in progress too, and there are plenty of goodies, visual and otherwise, that aren’t accessible via Cocoa. (Compare the palettes in Interface Builder to see what’s missing in Cocoa, or try writing an OSA component.)

2. ”...it is a bit difficult, especially for a non-developer such as myself, to keep track of what exactly is Cocoa-specific and what can be used by both Cocoa and Carbon applications.”

Good! Why would you want to? A good app is a good app.

3. “Once a feature is made accessible through the Carbon environment, the developers of these Carbon applications still need to update them to make use of this feature. And that process can and will take months and even years in some cases.”

This is true in some cases, not true in other others. Same thing with Cocoa, of course.

4. “But, with Jaguar, Apple has made the brushed-metal visual appearance a core component of the system’s interface, which, in Cocoa applications, can actually been turned on or off by simply toggling a single ‘switch’ somewhere in the definition of the interface.”

Same is true for Carbon. It’s a checkbox in Interface Builder. Exactly the same as with Cocoa.

5. “...drawers are, as far as I can tell, an interface tool that is only used in Cocoa applications.”

Carbon developers, beginning with Jaguar, can also create drawers.

6. “...another interface feature that is pretty much specific of Cocoa applications is the dialog sheet.”

Carbon apps can use sheets too. That many don’t yet is not the fault of Carbon.

7. “While OS X’s customizable toolbars are not the exclusive domain of Cocoa applications...”

True. Carbon apps can use the new HIToolbar, which is the equivalent of the Cocoa toolbar.

8. “For example, when using Cocoa applications such as Mail or TextEdit to type text, I sorely miss the ability to do drag-and-drop text editing (rather than just cut-and-paste).”

It’s weird how this is screwed up. And many users don’t realize that you can drag-and-drop text in Cocoa apps. Select some text, mouse-down and hold for a second or two. Then drag. It works.

I wish it worked like Carbon drag-and-drop, though—it’s a pain to have to pause before dragging.

NetNewsWire Pro Progress Report

I get a fair amount of email asking me how NetNewsWire Pro is coming along. I’ve been pretty quiet here lately because I’m very heads-down, working as fast as I can, working on the various new features.

I started with the hard stuff first, some new UI programming. In various states of done-ness are weblog editing, AppleScript support, the notepad, and train-friendliness.

My hope is to get a beta out before the end of this month and ship it in November. (Of course, my hopes and reality may not match exactly.)

I get lots of requests for a Windows version, too. (Even from my Mom the other day.) I have a choice—keep making the Mac version better, or spend n months doing a Windows version.

Well, it’s a no-brainer—I’ll keep making the Mac version better. (And do some other Mac software.)

NW OS X Dinners

I was thinking of starting an informal thing, not a users group or anything, but semi-regular dinners with other people here in the Northwest who are OS X developers.

I mean “developers” in the broad sense—not just people writing desktop apps but webloggers, scripters, designers, writers, system admins, power users, and so on.

OS X users who create things, in other words. Not just super-geeks.

There wouldn’t be a membership roll or dues or anything, just an announcement now and again to be at some restaurant at some particular time.

If you live in the Northwest, what do you think? Good idea? Would you attend? Me, I think it would be fun.

Me

Me

It’s an old picture of me, May 1993, on a windy day on the beach at Nice.

When I arrived in France in July 1992 I had a crewcut. Nearly a year later my hair had gone uncut—because my French wasn’t good enough to tell a barber how I wanted it done. Nuts!

About the stubble there’s no excuse, just that I used to be lazy about shaving.

Lived-in apps

I’ve always been fascinated how people tend to live in one particular application.

Some people might live in Word or Excel. People used to live in HyperCard. (Some probably still do.) Some people live in Frontier. Lots of webloggers probably live in their Web browser. The more gregarious types probably live in their chat program or their email app.

By “live in” I mean the app that feels like home, the app where you spend most of your time.

Me, I’ve been living in Project Builder (unsurprisingly) for the last half-year or so.

What app do you live in? And why? I’m curious.

Greatest desktop app of all time

My pick for the greatest desktop application of all time is MORE.

Not only for what it does—it’s an outliner—but for its user interface. It feels so right and good.

When I’m working on user interface it’s the je-ne-sais-quoi of MORE I aspire to. Getting that light, fast, and so right feeling is the goal.

What’s your pick for greatest desktop app of all time?

TigerLaunch and CodeWarrior and REALbasic

I’m working on a new release of TigerLaunch that includes support for CodeWarrior and REALbasic project files.

Request: if you have one or more project files of either type, would you stuff ’em and email them to me? (To brent at ranchero dot com.) I need some files to test with. Thanks!

Screen-scraped feeds

A common feature request for NetNewsWire is that I add feeds that happen to be screen-scraped and that are done without the owner’s explicit permission.

(CNN and VersionTracker are the most common requests.)

I won’t do it for a couple reasons:

1. Screen-scraped feeds are prone to breakage if the owner of the site changes the layout of their site.

When that happens, who do you think well get the bug report? (Answer: me.)

2. There are probably some legal issues here.

Even if there aren’t, it’s still possible that a given screen-scraped site has lawyers who want to make a legal issue of it anyway. You can imagine how reluctant I am to end up in court.

And so, a reminder—if a site doesn’t offer an RSS feed, you can always send them email and (politely, of course) ask them if they would consider RSS.

They may not even know what it is, or they may not understand the benefit of it.

My contention is that RSS brings a site more visitors—for instance, I actually visit more sites now that I have a way to scan through the headlines of >100 sites. An RSS feed is like an advertisement, in a way. (Perhaps you can make the case better than I can; hopefully you get my meaning.)

And if it’s a weblogger you’re asking to support RSS, offer to help. Said weblogger may not realize how to turn on RSS, or they may need a little scripting help. When you’re asking for a favor, offer a favor in return. Be generous.

Jon Udell

Jon Udell: “It all adds up to one more piece of evidence supporting my hypothesis that we are about to enter a golden age of desktop software. Things have been crashingly dull on that front for many years now. I contend that Web services will revitalize things. Desktop apps aren’t just connecting the user to the local filesystem anymore, they’re connecting the user to the cloud, where all the innovation is happening. How that connection is made is about to become a hugely important piece of the innovation.”

Cocoa drawback

I totally dig Cocoa—you’ve probably guessed that by now.

But there are some times when it can be infuriating. If you’re using the built-in controls and customizing them just a little bit, then it’s totally cool.

But then there are times when no amount of customizing will do: to get what you want you have to go back to square one, you have to subclass NSView and go from there.

An example of that is OmniOutliner. I recall reading that it’s a complete re-implementation of NSOutlineView. (Please correct me if I’m wrong.)

They had to do that because, if I remember right, to get things like wrapping headlines it was necessary to start over: no amount of tweaking NSOutlineView was going to do the job. (Or at least not well.)

Some of the upcoming features in NetNewsWire Pro are sending me down the same path. For example, I want to do a table view like Jason Kottke’s mockup—but, because it has table cells of varying heights, I’m having to go back to square one, do my own NSView subclass.

Bummer.

Here’s hoping that the built-in controls get more powerful and flexible in the future.

(Note: I’m only pretending to complain. I love UI programming, so it’s not really the bummer I make it sound like.)

OSXCon: Development Lessons from Bare Bones Software

Jeremy Zawodny reports from the OS X Conference on Bare Bones Software: “BB is a strange company, as they’ve been Mac-only and have been in business for over 10 years. Haven’t gone out of business, gone public, or been bought. It’s very rare. They make a living doing Mac-only. So it can be done.”

When people ask me about the business I’m building, I tell them I’m following the BBEdit model.

Some lessons I’ve learned from BBEdit: do a Lite version and keep it free; care about quality, care about bugs and stability; listen carefully to your users; don’t let your app do too much (but don’t let it do too little); implement scriptability; and add plug-in support when appropriate.

Company logo needed

Company logo needed...

Check out the design of this site, with the big blue moon in the upper left corner. (People reading via RSS: click here.)

Now check out ranchero.com.

The graphic in the upper-left corner there is just a place-holder. I need a company logo graphic to go in that space, something that looks at least as cool as the blue moon on inessential.com.

There are two options: a horseshoe or an atom. (These are the motifs Ranchero Software has traditionally used.)

This is the atom we used to use:

atom

Here’s the horseshoe we used to use:

horseshoe

The problem with that horseshoe is that it’s too small and it’s oriented incorrectly—it should be upside down (so as to catch good luck, as the superstition goes).

If you’re a graphics guy, and would like to take up this challenge, I can offer no money—but I can offer a link on the right side of the ranchero.com home page and the sincere thanks of a grateful developer.

Also note: I’m not wedded to the current color scheme used at ranchero.com. Something brighter would probably be better.

Tinderbox and NetNewsWire

Mark Bernstein: “Tinderbox’s default behavior is pretty good, but NetNewsWire has just added some new XML drag flavors that let Tinderbox understand whether you’re dragging a news feed (which you’d probably want to have updated automatically) or a news story (where you probably want to keep the summary in Tinderbox, and to provide easy access to the full story).”

I’m so pleased! Thanks go to Mark and the Tinderbox folks.

Separate mailing list?

Should I create a separate mailing list for the NetNewsWire Pro beta?

I set up a poll on Yahoo Groups.

Arguments in favor of creating a new list: it may get a bit of traffic at times, and it will be off-topic for people who aren’t into beta-testing.

Arguments against creating a new list: one list is easier to follow. People don’t have to sign up for yet another mailing list.

NetNewsWire Scripting Support

I’ve written up a preliminary spec for AppleScript and OSA scripting support in NetNewsWire (the pro version).

Feedback is totally appreciated, of course.

By the way, I got a start on the implementation: last night I added a Scripts menu to the application and today I got started on the scripting dictionary.

I’m very pleased to note that adding scripting support is much easier than it used to be. It’s gotten to the point where the design, not the implementation, is the challenge—which is as it should be.

Also: when I have some spare time I’ll post a tutorial with source code on adding a Scripts menu to any Cocoa application. It’s easy. (And this code will make it even easier.) But it may be a few days or weeks before I get to it.

Hippo Birdies to Jake

Happy Birthday to Jake!

Y’all wouldn’t know it, but Jake calls me up now and again to ask questions about the kernel, or some scripts, or whatever—and I’m always glad to hear from him. I get the chance to catch up on UserLand and on what Jake’s been up to, and that’s always cool.

And so I think to myself: Jake is lucky to work at UserLand. He’s lucky to have found a job that fits him so well and that he does so well.

And then I think: well, UserLand is lucky to have Jake. Jake’s a guy you want on your team.