Eric Albert points to a beautifully written essay on switching. It certainly resonates with me, as it's about life choices more than it is the Mac.

Since the response from my beta testers has been less than overwhelming, please download ICeCoffEE 1.3b2 and let me know if you experience any problems. Aside from updating to a slightly newer APE and changing the version number in about 45 places, this will be 1.3 final unless I hear of any more bugs.

Monaco 10 in Emacs

I finally figured out a way to get the Carbon port of Emacs to use another font than Monaco 12 for windows (or frames in Emacs parlance) after the first window.

The obvious custom-set-faces only affects the first window, but the following works:

(cond ((eq window-system 'mac)
       ; needed for subsequent windows because custom-set-faces somehow
       ; doesn't apply and we reset to Monaco 12 otherwise
       (setq default-frame-alist '((font . "-*-Monaco-*-100-*")))

I had a few hours to work on ICeCoffEE over the weekend: it went well, and I've implemented some preliminary Carbon support. My research is sucking up considerably more than the usual amount of time this week, so it'll probably be Saturday until I get a chance to finish.

This may be old news for everyone else, but if you use Radio or another system compatible with its comments interface, you can get a RSS feed of your comments courtesy of Philip Pearson's Comment Monitor service. We've been going back and forth on the PyCS site about migrating my comments to a faster server, but it'll take some work.

I was all ready to schedule my weekend around the scheduled downtime for rhap0 (the server node for one of our group's Linux clusters), but our new cluster sysadmin noticed everyone was logged off now and decided to upgrade it tonight instead. He is kicking some serious ass. So much for my full day of immunology studying, though.

Kuk Sool Won is up and going again this semester, now with a website that, uh, isn't a porn site (domain hijackers, sigh).

I was looking to find a new edition of Janeway's Immunobiology, as none of the local bookstores had a copy; a search on Dealtime revealed Wal-Mart as an option. Scary.

DSBRTuner 1.0.1+njr5 released, adding a requested feature, audio input volume adjustment, as well as a fix for a crashing bug when no audio input devices are connected.

Next up should be ICeCoffEE 1.3.

I've said the most of anyone in #macdev over the past 167 days. Something tells me that might be a sign I'm IRCing too much.

Some bugs I haven't seen mentioned elsewhere, which made last week a bit more painful than it should have been:

1. If you do a selective restore in Retrospect under Mac OS X, and choose to replace corresponding files, it restores the files in the wrong place. In my case, I was trying to restore /Library/Preferences/edu.mit.Kerberos on a disk named “Mac OS X”, but Retrospect restored to /Mac OS X/Library/Preferences/edu.mit.Kerberos instead. I tried a restore three times over and was very confused when the file didn't appear as I expected; finally, I switched restoration methods and it worked. A few days later, when poking around I noticed a “Mac OS X” folder I didn’t recognize and realized what happened. This would have been fine in pre-10.0 versions of Mac OS X, which mounted disks directly at the filesystem root instead of in the /Volumes directory, but in 10.2, it’s simply a bug. On my parents' computers, which have a partition named “Applications”, this bug could potentially cause the entire /Applications folder to be incorrectly overwritten.

2. While I was working from home, my desktop Mac suddenly became unresponsive. I came into the lab to check it out: it was very slow to respond, and top indicated that the kernel task was using over 100% CPU. Several reboots and over an hour later, the culprit turned out to be my old FireWire/USB 2.5″ hard drive enclosure, where the FireWire plug had become loose and was making intermittent contact.

3. I was burning a CD with Toast when it gave me this message:

So, what’s this mysterious error –5000? I didn’t have permissions to access the file. Toast does a scan before burning to verify that the files are accessible, but apparently permissions is not one of the things it checks. I made two coasters before I figured out the problem.

It would be really nice if my RSS feed started including paragraph breaks again. That UserLand is spending time on somewhat more useless things such as custom RSS generation is incredible when my RSS feed is completely unreadable for longer entries. I'm not the only one having this problem. For now, if I double-space my posts in NetNewsWire, they get extra space…

Converted ICeCoffEE to use APE and the Unsanity Installer yesterday, in place of its previous input manager/posing and custom installer implementation. It went reasonably smoothly; the APE SDK docs could use some revision and expansion, and the provided Project Builder template has some mistakes in it. Throwing out lots of flaky loader code and my previous hacked-together installer in favor of more reliable and robust replacements felt so good.

While creating the build script I ran into a Project Builder limitation: there's no way to use a Copy Files build phase to copy something at the top level of the “output” directory which will work equally well building from PB and with 'pbxbuild install'. I ended up using two Copy Files phases.

Before I release 1.3 I need to find a reliable way to get the installer to remove old versions, and would like to add support for 10.2's Terminal. 1.2 had 10.1 Terminal support, but was too unstable to ever release publicly. If you're still using 10.1.x, ICeCoffEE 1.2b2 is available here, but please don't distribute it or email me that it crashes Terminal—I know.

Last week someone sent me a feature request to add support for Safari to ICeCoffEE. My first thought was “huh?”, but it's almost working now, thanks to Safari's excellent code quality and the open-source WebCore framework. The remaining problem is that I'm unable to immediately set and retrieve the selection. -[WebCoreBridge setSelectionFrom:startOffset:to:endOffset:] sets the selection, but it doesn't get updated until some time after the mouseUp: method returns, and I can't figure out how to force it to update.

In any case, I need to get back to work and studying. I've got a few war stories (one about Retrospect, one about OS X in general) that I will post later today.

Steven Frank writes about small developers who have to compete with Apple's iApps.

Mike Pinkerton is thinking about quitting work on Chimera.

I don't know what I can say to urge the Chimera folks onward. Competition is good. Safari is not and never will be entirely open source. Safari's rendering won't catch up to Gecko overnight, and it may never have support for some of the cutting-edge standards that Gecko supports. Nor will the interface necessarily work the way I want. I like and use Chimera, many hours a day, every day. Please keep going, and try to get others involved. Making Chimera more approachable for programmers would be a start—I've tried to make and suggest changes several times, and even submitted patches, which have been mostly ignored.

Next Page »