Jun 2002

OS X web services mailing list

As I talked about in my previous post, I set up a mailing list for OS X developers whose apps use web services and formats.

Mailing list for OS X Web Services Developers

I’ve been thinking of starting a mailing list for developers who write web services desktop apps for Mac OS X. If I hear from a few people that they would participate, I’ll get it started.

It would have two main purposes:

1. Setting standards.

For instance, Steve Ivy and I worked up a clipboard format for RSS items. We haven’t presented it to the world yet: I’d like to run it by a small group of developers first.

Such a clipboard format would allow an application like MacNewsWire, an RSS news reader, to exchange data with a website authoring tool such as Archipelago. In other words, one would copy (or drag) an item from MacNewsWire into Archipelago in order to post it to a weblog.

The point is to make sure our apps interoperate, which helps everybody.

2. Developing a standard toolbox of code.

It’s in everybody’s best interest that apps in this space are of high quality: that helps build the market. For example, Dan Wood’s excellent CURLHandle has apparently become a widely-used framework for doing HTTP downloads. I use it myself. (Dan is the guy behind Watson.)

Me, I have some RSS and OPML parsing code to contribute. I bet other people have other code. Developing and testing such code, and making it available under a license (such as BSD or MIT) that allows people to use it, means we all have more time to concentrate on our respective visions rather than the nuts-and-bolts underneath.

Deleting code

I love deleting code.

Select, delete. Bam. You are the weakest method, goodbye. Build. Errors. Fix errors. Re-factor. Select, delete. Au ’voir.

If you work like I do, then your projects always get to a point where the main features are all there and all that’s left are bugs—and clean-up.

Look, there’s some lovely filth right here. Select, delete, auf wiedersehen.

Uh oh, looks like my data and UI are intermingled right here. Think MVC. MVC MVC. Re-factor. Select, delete. Build. Yahoo.

This is my favorite part of software development, when the code goes from weird but working to clean and maintainable and working much better.

And the most fun part is that delightful Delete key.


My sister sent me a link to this cool browseable house.

It reminds me of when I first saw the web. I thought of it as more than just a collection of documents with sprinklings of links, I thought of it as a way to build hypertext worlds.

OPML for Cocoa

I wrote an OPML parser for Cocoa today. (I’ll release it with a BSD license after it gets more burn-in.)

This is the second time I’ve written an OPML parser: I did it in C for Frontier/Radio. That version was of course based on the original scripts (by Dave Winer, now home from the hospital, thank goodness).

Writing this parser in Cocoa was a very different exercise than when I did it for the Frontier kernel. In Frontier the object was to convert OPML text to an outline object—which is a user-interface object—while with Cocoa I’m working with pure data, just converting the OPML text to an array of arrays (and using dictionaries for the attributes).

Anyway, I’m reminded what a nice format OPML is. Easy for machines to parse, easy to implement.

Western Tiger Swallowtail

The other day while gardening I got buzzed by a western tiger swallowtail. He almost hit me in the head!

So far this year that’s the only butterfly I’ve seen (except for cabbage white, of course).

New IE changes home page pref

I downloaded the new Internet Explorer for OS X—it uses Quartz text smoothing if you’re running OS X 10.1.5, so the text is nice like in OmniWeb.

Unfortunately, it changed my home page pref to www.msn.com. I switched it back to inessential.com easily enough, but still, this kind of thing pisses me off. So: be forewarned.

Open Source Icons for OS X

Jeff Stys at Xicons.com noted my wish for open source icons for OS X app developers—and, after a few emails back and forth, there is now an Open Source section at Xicons. Way to go Jeff. I’m so pleased.


When I think about how far raindrops have to fall to reach earth, I’m amazed they don’t kill us. If they were dimes instead of drops of water we’d be in lots of trouble.

How I learned not to be a perfectionist

I learned when I was a teenager not to be a perfectionist. Or, more accurately, I learned that perfection won’t necessarily save you from anything.

My family went away Friday nights to spend the weekends at the beach house. I was left alone at home.

Some weekends I would throw a party, sometimes big, sometimes small. Then on Sunday I’d clean the house to make sure there were no signs of the party.

I liked to clean anyway. My family was a very messy bunch, and I liked things put away. I liked to have the floors vacuumed and the dishes cleaned.

So I made sure to clean every Sunday whether or not I had thrown a party. This way no one could tell by the state of the house whether or not I had thrown a party.

Still I got into trouble from time to time for throwing a party. It’s hard to remove all traces of a party.

So one weekend I decided to clean the house perfectly. No party. I started cleaning Friday night after my family left. I cleaned all Saturday and all Sunday until they returned.

I even cleaned the bathrooms and mowed the lawn. I cleaned everything. Perfection achieved.

You know what happened, of course. I got in trouble for throwing a party, even though I had spent the entire weekend cleaning.

My parents said the house was so perfectly clean I must have thrown a party. I asked them to show me some evidence. They said there’s no other explanation for such a perfectly clean house. So I was in trouble.

Lesson learned: perfection is as likely to get you into trouble as it is to save you.

MacNewsWire 1.0b7

This update to MacNewsWire is all about new usability features.

Changes include using color instead of checkmarks to show which items have been read; a progress bar when downloading news; a dock menu; keyboard shortcuts; contextual menus; and so on.

Here’s a screen shot:

MacNewsWire screen shot

The news that changes everything

Ever since I was a boy I had the idea that one day there would be the news that changes everything.

It could happen any day. You might wake up one day, turn on the news, and there it is, the biggest story of all time.

This news could be one of a few things:

Communication with aliens
Undeniable proof of the existence or non-existence of God
Demonstrable e.s.p or telekinesis or similar
The invention of a time machine
Travel to and from parallel universes
The invention of a faster-than-light spaceship
Discovery of a super-cheap, super-abundant, safe, environmentally-friendly energy source

I’m still waiting. Any day now.

Seth Dillingham on documenting Conversant

Seth Dillingham is writing docs for Conversant. He writes, “It’s like learning a new way to see the software, because I’m forced to explain it to people who don’t really know anything about it. It can be frustrating, but it’s also helping me to see areas that could be improved in the software, things that are obvious and make the most sense only if you were present at the creation.”

It’s an important lesson I’ve learned several times—it’s good for engineers and architects to write docs because it makes the software better.

The software is everything—it’s what gets us out of bed in the morning, it’s why we stay up late, it’s what we dream about.

In fact, as I was lying in bed last night waiting for sleep to come I got into that semi-dreamy state, only instead of seeing butterflies or sheep or whatever I saw linked lists. In my mind I was skipping along, following the pointers, jumping from one node to the next.

The Joys of SSH

Brent Ashley writes about the joys of ssh. One of my favorite ssh-related things is scp. With one command I can back up my entire website (which lives somewhere in California) to my local hard drive. Easy and secure.

RSS auto-discovery

I followed the good idea of adding a link tag to my sites pointing to the RSS version. Here, here, and here.