Archive for the ‘Bug Bite’ category

Download Link Fixed

March 13, 2009

Downloading IMLocation hasn’t been working for several weeks(!!).

I have been using a semi-automated process to package IMLocation up on a .dmg and release it. The scripts had been working unchanged for about a year, but after I made some changes to the IMLocation Xcode project, they didn’t work correctly anymore. Everything appeared to build, but the .dmg on my website was corrupt.

I discovered the problem, because the number of downloads in my server logs did not match the bandwidth used.

This is entirely my fault for not doing an end to end test, to make sure that the final bits on my website were correct.

Lesson learned.


The Technical Story of the Adium Fixes in Version 0.32

December 31, 2008

Here are the problems I had updating my Adium plugin for version 1.3 of Adium, in the order they were discovered.

First, Adium plugins now must declare a minimum version of Adium. If you don’t say “I require at least version x.x of Adium” then Adium assumes the plugin is too outdated to work and won’t load it. (Turns out that was the right assumption for my plugin!) You declare a minimum supported version by adding a value for AIMinimumAdiumVersionRequirement in your info.plist.

Second, AppleScript support for getting the current status message is broken. So I had to add a way for IMLocation to ask the plugin for the current status message. (It also means that I’m stuck requiring a plugin for any integration with Adium, which is a shame.) For what it’s worth, I prefer the new AppleScript interface for Adium (modulo the “not working right now” bit).

Third, the way plugins are written for Adium has changed. From a software-engineering perspective the changes are for the best, and will make a better Adium. But of course I’m complaining because I had to do more work :-).

Plugins used to inherit from AIPlugin, which had a field named adium that was analogous NSApp. Now plugins conform to the AIPlugin and AIPluginInfo protocols, and can inherit from anything. (Hint: #import <Adium/AISharedAdium.h> will give you the adium back, but now as a proper global.)

Fourth, the way I was updating the status message for Adium wasn’t working so well. And the more I looked into it, the more it looks like very little (if anything) was changed in Adium. It just had a different way of dealing with statuses that wasn’t working out all that well for me.

Solving this issue took me longer then solving all other problems combined. But in the end it was definitely worth it. I have better integration with Adium now. And I was able to get rid of some update-throtteling code of mine that prevented too many changes to the status being made too quickly (Adium is now smart enough to do that internally!).

Fifth, testing, testing, testing. All code that’s written must be tested. And because so many changes were made to Adium as well as my plugin’s code, I waited a few days before officially pushing my changes, to allow more time for bugs to be discovered.

Adium Support is Broken

December 24, 2008

Regretfully, integration with Adium isn’t working right now.

I apologize for releasing without adequate testing.

I did not change any of the Adium-related code from version 2.9 and I foolishly assumed it all still worked because nobody had complained. But in the 13 months since I had last tested my Adium plugin, Adium was updated in a way that broke it. I had gotten out of the habit of using Adium (I prefer iChat’s simplicity and video capabilities) and so I missed this issue completely.

Unfortunately, it looks like getting the status message from Adium with AppleScript is broken, so I don’t yet have a fix out.

I can get the status type (eg away, available), but without a way to get/set the status message there’s not much useful I can do.

I am working on updating my Adium plugin so I can ask it for all details of the the current status. I expect a fix shortly, holidays permitting.

Messages to Nowhere

January 3, 2008

This article has been updated, and moved here