Solipsism Gradient

Rainer Brockerhoff’s blog

Browsing Posts in Software

Zingg! out…

No comments

Well, Zingg! 1.3 is out.

It took a few days longer than I expected. First there were some more bugs and suggestions; then I tested it on Jaguar and two things didn’t work at all; and finally I had a run-in with configuration problems for my local database server. If you’re wondering about the last item, it’s because Zingg! 1.3 now incorporates the latest version of my online version-checking code… which incidentally feeds me the user’s version of Mac OS X for my statistics.

As I type this, the VersionTracker page counts 387 downloads. If past stats are any indication, that means about 800 or 900 downloads total… many people go directly to my site. My site statistics run every midnight, so I have no exact figures yet. Meanwhile, 206 of those people (let’s say 25%) used the new version-checking code. 204 are on Mac OS X 10.3.2, 2 are on 10.3.1. No earlier versions at all! I’ll have to check whether this is a bug or a reliable statistic…

Then again, this is good news, as I’d like to do Panther-only software in the near future. I’ll try and hurry up the next version of XRay to get stats from those users, too.

The Jaguar incompatibilities were quite puzzling. The Zingg! Configurator relies on a main NSTableView to show a list of applications. I wanted to allow the user to sort the table by any of the 4 table columns. The standard way of doing this, by clicking on the column headers, seemed simple to implement. Since I used NSURL objects to store the application names and paths, I subclassed this to store a complete table row in each object and then used the standard NSArray sortedArrayUsingSelector: method to sort this in different ways. It worked on the first try on my Panther development machine… but then in Jaguar it threw an exception indicating that my subclassing wasn’t working at all.

This was complicated by the fact that I’ve migrated all my projects to Xcode, so I couldn’t use a debugger on the Jaguar machine… but I finally found some hints that the NSURL internal workings had changed significantly from Jaguar to Panther – apparently it used to be a class cluster, but wasn’t anymore. To save time, I changed from a is-a to a has-a pattern for my table row object, and this worked again.

Then I ran into a Jaguar bug: the delegate tableView:didClickTableColumn: method isn’t always called, unlike in Panther. The workaround is to turn on the option to allow column reordering (by drag&drop) – I thought it kind of useless but found no other way.

Then (after already uploading the disk image) I had to go back and rewrite the docs for the changes… c’est la vie. At least it’s out now and no bug report’s arrived so far…

Re: Off we go…

No comments

Tomorrow morning the vacation’s over. Whew. It’s been marvelous: no interruptions, good food, beach runs after sundown, lots of coconuts and peace to work on my software; and terrible: heat, unrelenting sun, mosquitoes, constant Axé music thumpa-thumping along somewhere in the background, spotty Internet access and the general discomfort of being away from home.

The good news is that, as seems to become traditional over the Christmas holidays, I found time to do a new version of Zingg!, with lots of new goodies. Expect it in a couple of days; I just need to do some more testing and of course, constant Internet access to do all the publishing, notifications and hands-on support for early adopters.

Cheeky Error Messages

No comments

I’ve never been more than an occasional user of Apple’s MPW (Macintosh Programmer’s Workshop). I thought it was defunct but apparently Apple’s still supporting it for development on older Classic systems.

Anyway, one thing I recall is that the MPW C compiler had some funny error messages, and this post on Ztuff reminded me of that today. Some nice ones:

“…And the lord said, `lo, there shall only be case or default labels inside a switch statement'”

“a typedef name was a complete surprise to me at this point in your program”

“This label is the target of a goto from outside of the block containing this label AND this block has an automatic variable with an initializer AND your window wasn’t wide enough to read this whole error message”

“Too many errors on one line (make fewer)”

I promptly looked up the latest official version of MPW on my Apple Developer CDs (August 2001, if you’re interested) and the latest compilers, unfortunately, seem to have been expurged – there are only the usual dry “illegal whatnot found” messages. I’ll have to see if I can find an older edition.

Unfortunately this sort of humor seems to be increasingly rare. The closest thing I could think of in currently shipping software are the ICQ client connection messages:

First we’ll need an ICQ server…

I’m sure I saw a server somewhere…

Attempting to make sure you are who you say you are…

Now, let’s sort out this little issue called ‘logon credentials’…

Doing something complicated…

Waiting in line with millions of other users…

So much data, so little time…

Fulfilling the server’s endless requests…

Initializing all kinds of protocols…

How fussy can you be about one insignificant connection?

Now comes the tricky part…

Seems like the server is a little picky today…

We’re in. Have fun.

Getting linkage…

No comments

Some nice folks are linking to my recently released Fax Alert Installer. I purposely didn’t do my usual routine of following the release with a barrage of press releases to major Mac websites, to see what would happen.

Today there was a mention at Mac OS X Hints. Previously, Daniel Steinberg also referred to it, and niknud in turn linked to Daniel’s article. Macintouch also had a brief note, as did MacSurfer.

Meanwhile, even with little publicity, there’ve been around 1400 downloads – and so far, in December, Fax Alert Installer downloads are running neck-and-neck with XRay downloads. Not bad…

Aurélio 1.05

No comments

Acabo de publicar um update para o Aurélio Século XXI para Mac.

A versão 1.05 agora roda sob o Classic do Mac OS X 10.1.5 em diante. Detalhes aqui

One of my favorite constantly-used applications, NetNewsWire, wins the Eddy Award. Congratulations to Brent Simmons! Well deserved.

Craftmanship

No comments

Joel Spolksy has a new, unfortunately all-too-brief, article out: Craftmanship. As most of Joel’s articles, this should be required reading for any shareware developer.

It comes down to an attribute of software that most people think of as craftsmanship. When software is built by a true craftsman, all the screws line up. When you do something rare, the application behaves intelligently. More effort went into getting rare cases exactly right than getting the main code working. Even if it took an extra 500% effort to handle 1% of the cases.

Reminds me of when I moved away from home and asked my father (a master carpenter) to check out some furniture I was considering for my apartment. He always reached underneath to check if there were any rough edges – and there always were. He said a true craftsman always sandpapers all edges, even the ones nobody can see.

“But no one else would know!”

He would know.”

Boom!

No comments

So last Saturday morning (or was it Friday?) I was chatting with my editor at Macmania magazine about Panther stuff… we were commenting on the strangely missing “Fax received” notification, when I said I’d seen a suggestion to attach a folder action to the Fax folder; there’s a “new item” script at /Library/Scripts/Folder Action Scripts/add – new item alert.scpt.

So he said, why don’t you change that script a little and write a note how to install it? Hmmm… I said that I knew zilch about AppleScript, but would give it a try.

I thought, perhaps it’ll be too boring to write this up… why not write a little installer in Cocoa… and learn some AppleScript while I’m at it? So four hours later (two were used for drawing the icon, of course!), there was born – ta-dah! – the Fax Alert Installer!

Freeware, for Panther only. There’ve been about 700 downloads already…

Photos licensed by Creative Commons license. Unless otherwise noted, content © 2002-2024 by Rainer Brockerhoff. Iravan child theme by Rainer Brockerhoff, based on Arjuna-X, a WordPress Theme by SRS Solutions. jQuery UI based on Aristo.