In the beginning…
February 4, 2006 on 1:10 am | In Uncategorized | Comments OffYafumato 0.5
February 4, 2006 on 1:51 am | In Release | No CommentsAs I said, I just released Yafumato 0.5. It had actually been ready for about a week, but I delayed releasing it because I was studying for the GMAT exam. Now that the test is over (750, woo-hoo!), I can start getting to all the things I had put off.
In my initial post I described the versions leading up to the initial public release, so I’ll just take a second to talk about the 0.4 release. From an interface perspective, the changes were minor; a few dynamic updates were bolted on to the page, but they could only update elements that were already visible. The real effort was the server-side code to support the dynamic updates — to determine what changed and create the XML. The 0.5 release was well into development when I released 0.4, which I tested for about a week. Although the changes in the 0.5 release are much more dramatic, only a few files were changed from the 0.4 release.
So, what’s new in the 0.5 release? Well, although it may not look it, the messaging page was completely redesigned. I implemented a JavaScript object model that is patterned after the server-side architecture. The JSP actually writes very little HTML when generating the messaging page, instead populating the JavaScript object model that dynamically creates the HTML for the pager. The pager is now completely dynamic as a result. Contacts are dynamically shown or hidden based on their status (by default the page uses the AIM convention of a separate group for offline contacts, though this behavior can be changed in the JSP). Also, the actions of sending messages and expanding or collapsing groups now dynamically update the page rather than redirect to a new page. The actions that still redirect are updating status and activating a contact. If a contact is active when the page is loaded, however, that contact can be deactivated and reactivated dynamically. When the update interval is set to a low value (I like to use three seconds at home) the application is very responsive. Once you’ve activated the contacts that you want to chat with, you could chat for hours with only dynamic updates.
The next release will feature DHTML windows — I believe that this is the main feature that other web messengers have that Yafumato lacks. The Dojo toolkit has them. Unfortunately, the DHTML window widgets are undocumented, so I’ll have to do some experimentation.
TLV the 0×0013th
February 23, 2006 on 8:49 pm | In Bugs | 1 CommentA little while ago I had a problem — I wasn’t receiving any messages on AIM. At least, I wasn’t receiving any messages from my friends; the moviefone and shoppingbuddy bots were working fine. At first I thought I was just a pariah, but I realized that I had a real problem when the problem continued on Monday the 13th. I turns out that DAIM was throwing exceptions while parsing the messages. The problem turned out to be TLV chain 0×0013:
/*
* Possessed TLV type, type 0x0013.
*
* A TLV of type 0x0013 can only be 2 bytes, despite its
* server-specified length. I have never seen this in action, but
* having this here hasn't ever broken anything.
*/
if (type == TLVType.AIM_TLV_ATH_REGISTRATION_STATUS && length != 2) {
len = 2;
}
Apparently this idiosyncrasy was fixed, as this TLV chain is now confirming to the server-specified length. Messages from the bots don’t have this TLV chain, so they worked. This made things easier to debug, as I was able to compare the DAIM hex dumps and identify the problem. I’ve patched daim.jar, and will be releasing this patch soon.
While debugging this issue, I contacted the developer of the DAIM API, David Walluck. I’m going to try to join the DAIM project as a developer since David is busy with grad school and looking for someone to take over the project.
This issue underscores an important point — neither API propagates exceptions up to the application. This is a flaw that is going to have to be fixed before Yafumato can move out of the alpha stage.
Bride of Windows
February 23, 2006 on 9:13 pm | In Development | No CommentsI’ve decided to use BrainJar.com’s DHTML window implementation rather than the Dojo toolkit. BrainJar.com’s implementation performs better when moving and resizing and comes with a thorough tutorial while Dojo’s widgets are undocumented. The window decoration is a bit spartan, but I’ve improved that in my own version. I’ve learned a lot about JavaScript reading BrainJar.com and modifying the code; I intend to carry over that knowledge into a re-write of the messaging JavaScript object model. I’ve created a mock-up of the next version of Yafumato using DHTML windows that I’ll post here soon.
Yafumato 0.5.1
February 24, 2006 on 8:50 pm | In Release | No CommentsI have released Yafumato 0.5.1 to fix the aforementioned problem with AIM/OSCAR and TLV chain 0×0013.
Code Names are Cool
February 24, 2006 on 10:42 pm | In Random Musings | No CommentsI’ve decided, starting with the next release, to use code names in addition to version numbers. Why? Because code names are cool, and I like being cryptic. As such, the next release — Yafumato 0.6 — will be designated “Kidd.”
Powered by WordPress with Pool theme design by Borja Fernandez.
Entries and comments feeds.
Valid XHTML and CSS. ^Top^