Monday, July 9, 2007

The Distance from .39 to .4

Say hello to my new friend, a relic from my son's closet.

Seductive isn't she, with that curvy bod and the see-through top? I'm told the color is "sage," which looks like teal to me, but maybe that's my Windows bias showing.

Sagey and I are on a quest to reach out to those Mac users who haven't yet upgraded to OS X 10.4. They write and tell me why: my machine has an old hard drive, it really belongs to my cousin, I lost my last hundred at the track, blah blah. It's what keeps us developers employed -- the operating systems keep evolving, the customers don't.

A year ago, standing at the base of this mountain of a project, I couldn't worry about such details. I wanted something to run on a Mac, any Mac. Nine months later, when it ran on mine, I wrote the system requirements ("just like mine") and shipped it.

(In case you're wondering about the flood of orders which surely followed this historic release, let's put it this way: the TP Mac Users Group meeting could easily be held in my kitchen, with plenty of room left for chips and beer.)

Right away I started hearing from 10.39 users, wondering whether they might try the program. I didn't know what to tell them. I figured it might run. If this were Windows, and the operating system version changed by 0.01, everything would still work, it would just have more security warnings.

I didn't have a 10.3 machine, and the only people I knew did were these guys writing in. So I pulled my usual trick: recruited a couple of them to do some testing. It's my low-cost outsourcing program. In exchange for a free copy of the software, I can often get a savvy user to do a couple weeks' worth of useful experiments to help track down a problem. Lately I’m getting a lot of great help from Kent Dristle.

So I sent out the first version to these guys and said give it a try. Answer: program doesn't start. On Windows, this would usually be accompanied by an alert about some missing dll -- if you could find it and put it in the right place, the problem would go away. On the Mac, it just honked and gave no clue.

That’s when I discovered the Magic Switch -- an option in the build settings called “compatibility,” which let me choose 10.3. So I just flip this switch, rebuild, and it will run? Cool. But after another round trip to the testers, it was still no go.

Turns out there is a much bigger hammer in the build settings: a choice to link with the 10.39 SDK. This is like setting the clock back – flip this switch, build, and it complains about functions that haven’t been invented yet. This turned up at least a dozen calls to routines where, sure enough, the fine print said “10.4 only.” I hastily commented out some of these and sent out another version, and this time, success! Sort of! “Starts but crashes immediately” they reported.
Evidently the way the compatibility switch works is: if it comes across a function not supported in 10.3, it doesn’t complain or crash, it just does nothing. Where you were making a call and expecting an answer, you get zero, and usually a crash. So further patching was necessary, and on the next round-trip we were at “Runs but sucks.”

Enter Sagey. With a 10.39 development environment it’s easy to find out about problems like: the Inspector doesn’t come up (because it included a 10.4 gadget called a DatePicker); it doesn’t print (our call to the print routine was 10.4 only; the compatibility substitute did nothing); train movement is jerky (every time the train was redrawn, a jpg image was being slowly decoded).

So all this is now getting ironed out, and I hope to post an upgrade in the next few days. Should make life easier for both our 10.39 users.


CASEY said...

Sagey. Love the name!

That's a damn sexy machine there.

Iestyn Lewis said...

"If this were Windows, and the operating system version changed by 0.01, everything would still work, it would just have more security warnings"

Yeah, no kidding. My colleague's new laptop came with Vista:

"It appears that you're trying to do something useful with your computer. As a precaution, Windows has stopped you. Do you have any idea what you were about to do? Put the computer down. Back up. Leave the room.

OK | Cancel | Ignore