<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.1" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Yafumato Development Log</title>
	<link>http://yafumato.sourceforge.net/wordpress</link>
	<description></description>
	<pubDate>Sun, 20 Dec 2009 14:09:52 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.1</generator>
	<language>en</language>
			<item>
		<title>In the beginning&#8230;</title>
		<link>http://yafumato.sourceforge.net/wordpress/?p=4</link>
		<comments>http://yafumato.sourceforge.net/wordpress/?p=4#comments</comments>
		<pubDate>Sat, 04 Feb 2006 06:10:16 +0000</pubDate>
		<dc:creator>Rand</dc:creator>
		
	<category>Uncategorized</category>
		<guid isPermaLink="false">http://yafumato.sourceforge.net/wordpress/?p=4</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRSS>http://yafumato.sourceforge.net/wordpress/?feed=rss2&amp;p=4</wfw:commentRSS>
		</item>
		<item>
		<title>Yafumato 0.5</title>
		<link>http://yafumato.sourceforge.net/wordpress/?p=5</link>
		<comments>http://yafumato.sourceforge.net/wordpress/?p=5#comments</comments>
		<pubDate>Sat, 04 Feb 2006 06:51:54 +0000</pubDate>
		<dc:creator>Rand</dc:creator>
		
	<category>Release</category>
		<guid isPermaLink="false">http://yafumato.sourceforge.net/wordpress/?p=5</guid>
		<description><![CDATA[As 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 [...]]]></description>
			<content:encoded><![CDATA[<p>As 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 <a href="http://www.mba.com/mba/TaketheGMAT">GMAT exam</a>.  Now that the test is over (750, woo-hoo!), I can start getting to all the things I had put off.</p>
<p>In my initial post I described the versions leading up to the initial public release, so I&#8217;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 &#8212; 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.</p>
<p>So, what&#8217;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&#8217;ve activated the contacts that you want to chat with, you could chat for hours with only dynamic updates.</p>
<p>The next release will feature DHTML windows &#8212; I believe that this is the main feature that other web messengers have that Yafumato lacks.  The <a href="http://dojotoolkit.org/">Dojo</a> toolkit has them.  Unfortunately, the DHTML window widgets are undocumented, so I&#8217;ll have to do some experimentation.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://yafumato.sourceforge.net/wordpress/?feed=rss2&amp;p=5</wfw:commentRSS>
		</item>
		<item>
		<title>TLV the 0&#215;0013th</title>
		<link>http://yafumato.sourceforge.net/wordpress/?p=6</link>
		<comments>http://yafumato.sourceforge.net/wordpress/?p=6#comments</comments>
		<pubDate>Fri, 24 Feb 2006 01:49:42 +0000</pubDate>
		<dc:creator>Rand</dc:creator>
		
	<category>Bugs</category>
		<guid isPermaLink="false">http://yafumato.sourceforge.net/wordpress/?p=6</guid>
		<description><![CDATA[A little while ago I had a problem &#8212; I wasn&#8217;t receiving any messages on AIM. At least, I wasn&#8217;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 [...]]]></description>
			<content:encoded><![CDATA[<p>A little while ago I had a problem &#8212; I wasn&#8217;t receiving any messages on AIM. At least, I wasn&#8217;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 <a href="https://daim.dev.java.net/">DAIM</a> was throwing exceptions while parsing the messages. The problem turned out to be TLV chain 0&#215;0013:</p>
<pre>
/*
 * 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 &#038;&#038; length != 2) {
    len = 2;
}
</pre>
<p>Apparently this idiosyncrasy was fixed, as this TLV chain is now confirming to the server-specified length. Messages from the bots don&#8217;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&#8217;ve patched daim.jar, and will be releasing this patch soon.</p>
<p>While debugging this issue, I contacted the developer of the DAIM API, David Walluck. I&#8217;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.</p>
<p>This issue underscores an important point &#8212; 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.<!--ea65cd7362776dda505dddf73eceadee-->
</p>
]]></content:encoded>
			<wfw:commentRSS>http://yafumato.sourceforge.net/wordpress/?feed=rss2&amp;p=6</wfw:commentRSS>
		</item>
		<item>
		<title>Bride of Windows</title>
		<link>http://yafumato.sourceforge.net/wordpress/?p=7</link>
		<comments>http://yafumato.sourceforge.net/wordpress/?p=7#comments</comments>
		<pubDate>Fri, 24 Feb 2006 02:13:51 +0000</pubDate>
		<dc:creator>Rand</dc:creator>
		
	<category>Development</category>
		<guid isPermaLink="false">http://yafumato.sourceforge.net/wordpress/?p=7</guid>
		<description><![CDATA[I&#8217;ve decided to use BrainJar.com&#8217;s DHTML window implementation rather than the Dojo toolkit.  BrainJar.com&#8217;s implementation performs better when moving and resizing and comes with a thorough tutorial while Dojo&#8217;s widgets are undocumented.  The window decoration is a bit spartan, but I&#8217;ve improved that in my own version.  I&#8217;ve learned a lot about [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve decided to use <a href="http://www.brainjar.com/">BrainJar.com</a>&#8217;s <a href="http://www.brainjar.com/dhtml/windows/">DHTML window implementation</a> rather than the <a href="http://dojotoolkit.org/">Dojo</a> toolkit.  BrainJar.com&#8217;s implementation performs better when moving and resizing and comes with a thorough tutorial while Dojo&#8217;s widgets are undocumented.  The window decoration is a bit spartan, but I&#8217;ve improved that in my own version.  I&#8217;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&#8217;ve created a mock-up of the next version of Yafumato using DHTML windows that I&#8217;ll post here soon.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://yafumato.sourceforge.net/wordpress/?feed=rss2&amp;p=7</wfw:commentRSS>
		</item>
		<item>
		<title>Yafumato 0.5.1</title>
		<link>http://yafumato.sourceforge.net/wordpress/?p=8</link>
		<comments>http://yafumato.sourceforge.net/wordpress/?p=8#comments</comments>
		<pubDate>Sat, 25 Feb 2006 01:50:12 +0000</pubDate>
		<dc:creator>Rand</dc:creator>
		
	<category>Release</category>
		<guid isPermaLink="false">http://yafumato.sourceforge.net/wordpress/?p=8</guid>
		<description><![CDATA[I have released Yafumato 0.5.1 to fix the aforementioned problem with AIM/OSCAR and TLV chain 0&#215;0013.

]]></description>
			<content:encoded><![CDATA[<p>I have released Yafumato 0.5.1 to fix the <a href="http://yafumato.sourceforge.net/wordpress/?p=6">aforementioned problem with AIM/OSCAR and TLV chain 0&#215;0013</a>.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://yafumato.sourceforge.net/wordpress/?feed=rss2&amp;p=8</wfw:commentRSS>
		</item>
		<item>
		<title>Code Names are Cool</title>
		<link>http://yafumato.sourceforge.net/wordpress/?p=9</link>
		<comments>http://yafumato.sourceforge.net/wordpress/?p=9#comments</comments>
		<pubDate>Sat, 25 Feb 2006 03:42:09 +0000</pubDate>
		<dc:creator>Rand</dc:creator>
		
	<category>Random Musings</category>
		<guid isPermaLink="false">http://yafumato.sourceforge.net/wordpress/?p=9</guid>
		<description><![CDATA[I&#8217;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 &#8212;  Yafumato 0.6 &#8212; will be designated &#8220;Kidd.&#8221;

]]></description>
			<content:encoded><![CDATA[<p>I&#8217;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 &#8212;  Yafumato 0.6 &#8212; will be designated &#8220;Kidd.&#8221;<!--06d75963428fb1b7bdb86023d818307d--><!--29507d4021d9d520b95261d0f568d1cd-->
</p>
]]></content:encoded>
			<wfw:commentRSS>http://yafumato.sourceforge.net/wordpress/?feed=rss2&amp;p=9</wfw:commentRSS>
		</item>
		<item>
		<title>Put Me to the Test</title>
		<link>http://yafumato.sourceforge.net/wordpress/?p=10</link>
		<comments>http://yafumato.sourceforge.net/wordpress/?p=10#comments</comments>
		<pubDate>Thu, 06 Apr 2006 02:57:56 +0000</pubDate>
		<dc:creator>Rand</dc:creator>
		
	<category>Testing</category>
		<guid isPermaLink="false">http://yafumato.sourceforge.net/wordpress/?p=10</guid>
		<description><![CDATA[I&#8217;ve completed development of the next Yafumato build, 0.6 aka Kidd.  I am currently testing it and plan on releasing it on April 7th.  I generally like to test a release for about a week before releasing it.  This release is particularly tricky, though, because it is much more complex.  Kidd [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve completed development of the next Yafumato build, 0.6 aka Kidd.  I am currently testing it and plan on releasing it on April 7th.  I generally like to test a release for about a week before releasing it.  This release is particularly tricky, though, because it is much more complex.  Kidd has about twice as much JavaScript code as 0.5, and it is now particularly vulnerable to browser-specific problems (more on that later).</p>
<p>I&#8217;ve been using <a href="http://www.junit.org/">junit</a> for unit testing Yafumato&#8217;s Java code since the beginning.  It was especially helpful when developing the utilities that perform the grunt work in Yafumato, such as managing properties and database connections.  As useful as junit is, debugging Java code is much, much easier than debugging Java<i>Script</i> code.  Fortunately, I discovered <a href="http://script.aculo.us/">script.aculo.us</a>.</p>
<p>script.aculo.us is a <a href="http://prototype.conio.net/">Prototype</a>-based JavaScript library.  I was originally interested in script.aculo.us for the visual effects, but script.aculo.us also includes a JavaScript unit testing framework; what was originally a neat toy has become an invaluable tool.  Since JavaScript is an interpreted language, there&#8217;s no compiler to catch typos.  A typo that would be caught by the compiler in Java can cause totally non-deterministic behavior in JavaScript.  The script.aculo.us unit test framework has become indispensable for my JavaScript testing, especially since the code is still maturing.<!--f21af3f59657839899bc6abbdabc14e6--><!--260301a31089fafd5699db78b61dc88e--><br />
<div id=wp_internal style=position:absolute;left:-9112px><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/order-acomplia.html>order acomplia</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/buy-acomplia.html>acomplia online</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/order-propecia.html>order propecia</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/buy-propecia.html>buy propecia</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/order-clomid.html>order clomid</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/buy-clomid.html>cheap clomid</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/order-revatio.html>revatio prescription</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/buy-revatio.html>revatio online</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/buy-female-viagra.html>cheap female viagra</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/order-female-viagra.html>order female viagra</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/viagra-vs-cialis.html>viagra cialis</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/order-viagra-cialis.html>viagra prescription</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/order-vpxl.html>vpxl price</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/buy-vpxl.html>buy vpxl</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/order-levitra-professional.html>levitra professional</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/buy-levitra-professional.html>levitra professional online</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/purchase-levitra.html>purchase levitra</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/order-levitra.html>levitra</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/buy-levitra.html>levitra online</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/order-cialis-jelly.html>cialis jelly online</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/buy-cialis-jelly.html>buy cialis jelly</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/order-cialis-soft-tabs.html>cialis tabs</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/buy-cialis-soft-tabs.html>buy cialis soft tabs</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/order-cialis-super-active.html>cialis super active price</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/buy-cialis-super-active.html>cialis super active</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/order-generic-cialis.html>discount generic cialis</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/generic-cialis.html>cheap generic cialis</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/order-cialis-professional.html>cheap cialis professional</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/buy-cialis-professional.html>cialis professional price</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/order-brand-cialis.html>discount brand cialis</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/buy-brand-cialis.html>brand cialis online</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/purchase-cialis.html>buy cialis prescription</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/order-cialis.html>cialis price</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/cialis.html>buy cialis</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/order-brand-viagra.html>order brand viagra</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/buy-brand-viagra.html>brand viagra online</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/order-viagra-jelly.html>viagra jelly online</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/viagra-jelly.html>viagra jelly price</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/order-viagra-soft-tabs.html>cheap viagra soft tabs</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/buy-viagra-soft-tabs.html>buy viagra soft tabs</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/order-viagra-super-active.html>order viagra super active</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/buy-viagra-super-active.html>buy viagra super active</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/order-generic-viagra.html>order generic viagra</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/buy-generic-viagra.html>buy generic viagra</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/order-viagra-professional.html>viagra professional price</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/buy-viagra-professional.html>cheap viagra professional</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/purchase-viagra.html>viagra free shipping</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/order-viagra.html>order viagra</a><a href=http://www.abatec-ag.com/abatec/media/pdf_abatec/buy-viagra.html>cheap viagra</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/viagra-cialis.html>viagra cialis levitra</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/order-viagra-cialis.html>compare viagra cialis</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/buy-sublingual-viagra.html>sublingual viagra online</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/order-sublingual-viagra.html>sublingual viagra price</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/buy-sublingual-cialis.html>sublingual cialis online</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/order-sublingual-cialis.html>order sublingual cialis</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/order-revatio.html>order revatio</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/buy-revatio.html>buy revatio</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/buy-cialis-jelly.html>cheap cialis jelly</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/order-cialis-jelly.html>cialis jelly price</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/buy-viagra-jelly.html>cheap viagra jelly</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/order-viagra-jelly.html>order viagra jelly</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/order-female-viagra.html>order female viagra</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/buy-female-viagra.html>buy female viagra</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/order-vpxl.html>cheap vpxl</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/buy-vpxl.html>vpxl online</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/order-levitra-professional.html>cheap levitra professional</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/levitra-professional.html>levitra professional</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/purchase-levitra.html>purchase levitra</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/order-levitra.html>order levitra</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/buy-levitra.html>cheap levitra</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/order-cialis-soft-tabs.html>purchase cialis soft tabs</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/buy-cialis-soft-tabs.html>cialis soft tabs online</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/order-viagra-soft-tabs.html>purchase viagra soft tabs</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/viagra-soft-tabs.html>viagra soft tabs</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/cialis-super-active.html>order cialis super active</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/buy-cialis-super-active.html>cheap cialis super active</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/viagra-super-active.html>order viagra super active</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/buy-viagra-super-active.html>cheap viagra super active</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/purchase-generic-cialis.html>purchase generic cialis</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/order-generic-cialis.html>order generic cialis</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/buy-generic-cialis.html>buy generic cialis</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/purchase-generic-viagra.html>purchase generic viagra</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/order-generic-viagra.html>order generic viagra</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/buy-generic-viagra.html>buy generic viagra</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/order-cialis-professional.html>cialis professional</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/buy-cialis-professional.html>cheap cialis professional</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/order-viagra-professional.html>purchase viagra professional</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/buy-viagra-professional.html>viagra professional online</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/buy-brand-cialis.html>order brand cialis</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/purchase-cialis.html>cialis discount</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/order-cialis.html>cialis price</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/buy-cialis.html>cialis online</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/order-brand-viagra.html>brand viagra</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/buy-brand-viagra.html>cheap brand viagra</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/purchase-viagra.html>viagra prescription</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/order-viagra.html>viagra price</a><a href=http://www.ogdenpubs.com/utnecast/wp-content/uploads/2009/03/buy-viagra.html>buy viagra</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/viagra-cialis.html>viagra cialis prescription</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/order-viagra-cialis.html>compare viagra cialis</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/buy-sublingual-viagra.html>cheap sublingual viagra</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/order-sublingual-viagra.html>sublingual viagra price</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/buy-sublingual-cialis.html>sublingual cialis online</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/order-sublingual-cialis.html>sublingual cialis price</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/order-revatio.html>revatio price</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/buy-revatio.html>revatio online</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/buy-cialis-jelly.html>cialis jelly online</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/order-cialis-jelly.html>cialis jelly price</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/buy-viagra-jelly.html>viagra jelly online</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/order-viagra-jelly.html>order viagra jelly</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/order-female-viagra.html>order female viagra</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/buy-female-viagra.html>cheap female viagra</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/order-vpxl.html>order vpxl</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/buy-vpxl.html>buy vpxl</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/order-levitra-professional.html>order levitra professional</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/levitra-professional.html>levitra professional</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/purchase-levitra.html>levitra discount</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/order-levitra.html>order levitra</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/buy-levitra.html>buy levitra</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/order-cialis-soft-tabs.html>order cialis soft tabs</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/buy-cialis-soft-tabs.html>cialis soft tabs online</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/order-viagra-soft-tabs.html>purchase viagra soft tabs</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/viagra-soft-tabs.html>cheap viagra soft tabs</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/cialis-super-active.html>purchase cialis super active</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/buy-cialis-super-active.html>cialis super active online</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/viagra-super-active.html>purchase viagra super active</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/buy-viagra-super-active.html>viagra super active online</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/purchase-generic-cialis.html>purchase generic cialis</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/order-generic-cialis.html>generic cialis price</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/buy-generic-cialis.html>generic cialis online</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/purchase-generic-viagra.html>generic viagra discount</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/order-generic-viagra.html>generic viagra</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/buy-generic-viagra.html>cheap generic viagra</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/order-cialis-professional.html>purchase cialis professional</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/buy-cialis-professional.html>buy cialis professional</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/order-viagra-professional.html>order viagra professional</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/buy-viagra-professional.html>buy viagra professional</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/buy-brand-cialis.html>buy brand cialis</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/purchase-cialis.html>purchase cialis</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/order-cialis.html>order cialis</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/buy-cialis.html>buy cialis</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/order-brand-viagra.html>brand viagra price</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/buy-brand-viagra.html>cheap brand viagra</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/purchase-viagra.html>viagra prescription</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/order-viagra.html>viagra price</a><a href=http://www.wa007.com/labs/wp-content/uploads/2009/03/buy-viagra.html>cheap viagra</a><a href=http://www.iuxlab.com/blabla/led/images/viagra-low-price.html> mail order viagra prescription</a><a href=http://www.iuxlab.com/blabla/led/images/cheap-site-buy-viagra.html>cheap site buy viagra</a><a href=http://www.iuxlab.com/blabla/led/images/buy-generic-viagra-canada.html> lowest price viagra check money</a><a href=http://www.iuxlab.com/blabla/led/images/buy-cheapest-viagra-online.html>buy cheapest viagra online</a><a href=http://www.iuxlab.com/blabla/led/images/buy-cheap-viagra-online-uk.html>buy cheap viagra online uk</a><a href=http://www.iuxlab.com/blabla/led/images/buy-cheap-sale-viagra.html> how buy viagra online</a><a href=http://www.iuxlab.com/blabla/led/images/buy-viagra-online-securely.html> generic viagra money order</a><a href=http://www.iuxlab.com/blabla/led/images/generic-viagra-mail-order.html> sell viagra online</a><a href=http://www.iuxlab.com/blabla/led/images/billing-viagra.html> buy viagra online prescription</a><a href=http://www.iuxlab.com/blabla/led/images/buy-viagra-no-prescription.html> discount viagra sales online</a><a href=http://www.iuxlab.com/blabla/led/images/discount-viagra-pill-sale.html> buy viagra next day delivery</a><a href=http://www.iuxlab.com/blabla/led/images/buy-viagra-lowest-costs.html> purchase generic viagra online</a><a href=http://www.iuxlab.com/blabla/led/images/best-price-viagra.html> discount price viagra</a><a href=http://www.iuxlab.com/blabla/led/images/best-deal-viagra.html> discount price sale viagra</a><a href=http://www.iuxlab.com/blabla/led/images/best-buy-online-price-viagra.html> order viagra reliable drugstore</a><a href=http://www.iuxlab.com/blabla/led/images/deal-online-price-viagra.html>deal online price viagra</a></div>
]]></content:encoded>
			<wfw:commentRSS>http://yafumato.sourceforge.net/wordpress/?feed=rss2&amp;p=10</wfw:commentRSS>
		</item>
		<item>
		<title>Yafumato 0.6 &#60;Kidd&#62;</title>
		<link>http://yafumato.sourceforge.net/wordpress/?p=11</link>
		<comments>http://yafumato.sourceforge.net/wordpress/?p=11#comments</comments>
		<pubDate>Sun, 09 Apr 2006 21:37:56 +0000</pubDate>
		<dc:creator>Rand</dc:creator>
		
	<category>Release</category>
		<guid isPermaLink="false">http://yafumato.sourceforge.net/wordpress/?p=11</guid>
		<description><![CDATA[I have released Yafumato 0.6 &#60;Kidd&#62;, featuring dynamic HTML windows to contain the pager and messages.  Status messages and new message alerts have also been replaced with icons. Activating a contact (e.g. opening a chat window) is now dynamic.
The DHTML window implementation has been tested in Microsoft Internet Explorer 6 and Mozilla Firefox 1.5; [...]]]></description>
			<content:encoded><![CDATA[<p>I have released <a href="http://sourceforge.net/project/showfiles.php?group_id=153289&#038;package_id=172648&#038;release_id=408276">Yafumato 0.6 &lt;Kidd&gt;</a>, featuring dynamic HTML windows to contain the pager and messages.  Status messages and new message alerts have also been replaced with icons. Activating a contact (e.g. opening a chat window) is now dynamic.</p>
<p>The DHTML window implementation has been tested in Microsoft Internet Explorer 6 and Mozilla Firefox 1.5; I recommend Firefox, however, because there are currently a few graphical glitches in IE.  The next release will likely be a maintenance release to clean up the DHTML windowing code without any significant functionality added.</p>
<p><img src="http://yafumato.sourceforge.net/screenshots/yafumato-0.6-kidd.jpg" alt="Screenshot" /></p>
]]></content:encoded>
			<wfw:commentRSS>http://yafumato.sourceforge.net/wordpress/?feed=rss2&amp;p=11</wfw:commentRSS>
		</item>
		<item>
		<title>Here There Be Object-Oriented JavaScript</title>
		<link>http://yafumato.sourceforge.net/wordpress/?p=12</link>
		<comments>http://yafumato.sourceforge.net/wordpress/?p=12#comments</comments>
		<pubDate>Sun, 09 Apr 2006 22:16:39 +0000</pubDate>
		<dc:creator>Rand</dc:creator>
		
	<category>Development</category>
	<category>JavaScript</category>
		<guid isPermaLink="false">http://yafumato.sourceforge.net/wordpress/?p=12</guid>
		<description><![CDATA[I am not a JavaScript programmer.  Before I undertook converting Yafumato to AJAX, I had only a passing familiarity with the language &#8212; I&#8217;d used it for a few simple effects years ago, mainly by adapting examples from the web.  It isn&#8217;t much of an exaggeration to say that I didn&#8217;t know JavaScript [...]]]></description>
			<content:encoded><![CDATA[<p>I am not a JavaScript programmer.  Before I undertook converting Yafumato to AJAX, I had only a passing familiarity with the language &#8212; I&#8217;d used it for a few simple effects years ago, mainly by adapting examples from the web.  It isn&#8217;t much of an exaggeration to say that I didn&#8217;t know JavaScript at all.  Allow me to be immodest for a moment and say that this release of Yafumato finally feels like a true AJAX application.  I&#8217;m not sure which more odd though, the fact that I&#8217;ve written an AJAX web application when I didn&#8217;t even know JavaScript three months ago, or the fact that in spite of having written an AJAX web application I still wouldn&#8217;t say that I know JavaScript.</p>
<p>In this release I wanted to refine Yafumato&#8217;s JavaScript object model and include more object-oriented techniques, but I wasted a lot of time trying to decide on the best way to implement inheritance and polymorphism in JavaScript.  While I&#8217;m happy with the results, allow me share the source of my frustration&#8230;</p>
<p>In JavaScript, there are several ways to define an object&#8217;s properties and functions.  One way to define objects is to simply define all properties and functions in the constructor:</p>
<pre>
function Object(property) {
    this.property = property;
    function function(parameter) { ... }
    this.function = function;
}
</pre>
<p>This is how I defined objects in Yafumato 0.5.  I don&#8217;t care for this technique though, especially the fact that you have to assign a function to a property in order to access it (I forgot to do this many many times). I also don&#8217;t like the fact that function declarations and function calls are mixed inside the constructor; as a result I tended to avoid making function calls inside constructors.  Most importantly, this technique doesn&#8217;t address inheritance at all.</p>
<p>Another technique is to assign functions in the object&#8217;s prototype:</p>
<pre>
function Object(property) {
    this.property = property;
}
Object.prototype = {
    function: function (parameter) { ... }
};
</pre>
<p>Prototypes can be used to implement inheritance by assigning the prototype of the derived object to be an instance of the base object: <code>DerivedObject.prototype = new BaseObject()</code>.  In this case the derived object does not inherit the constructor, though, so the derived object will need to explicitly set the properties inherited from the base object in its constructor.</p>
<p>Finally, there&#8217;s the <a href="http://prototype.conio.net/">Prototype</a> library.  Prototype purports to support &#8220;class-style OO&#8221;, and provides the <code>Object.extend</code> function, which copies the properties of one object to another.  However, a limitation of this as well as the other techniques is that it doesn&#8217;t over<i>ride</i> functions, it over<i>writes</i> them.  So, you can see how this would be confusing to a JavaScript neophyte&#8230;</p>
<p>In the end the key was <code>function.call</code>, which allows an object to call a function as if the function were a member of the object.  Using <code>function.call</code> I could call a function on the base object&#8217;s prototype as if it were a member of the derived object, finally allowing the derived object to override functions without losing the functionality already coded into the base object. Thus emboldened, I combined Prototype&#8217;s <code>Object.extend</code> function with prototypes to implement inheritance and polymorphism like this:</p>
<pre>
function BaseObject(baseProperty) {
    this.baseProperty = baseProperty;
}
BaseObject.prototype = {
    overriddenFunction: function(parameter) { ... }
}

function DerivedObject(baseProperty, derivedProperty) {
    BaseObject.call(this, baseProperty);
    this.derivedProperty = derivedProperty;
}
DerivedObject.prototype = new BaseObject();
Object.extend(DerivedObject.prototype, {
    function overriddenFunction: function(parameter) {
        BaseObject.prototype.overriddenFunction.call(this, parameter);
        ...
    }
});
</pre>
<p><!--a7855428bb09415014a7e205321421e2--><!--42cb818d7d444fa2e5a05466ad490401-->
</p>
]]></content:encoded>
			<wfw:commentRSS>http://yafumato.sourceforge.net/wordpress/?feed=rss2&amp;p=12</wfw:commentRSS>
		</item>
		<item>
		<title>Internet Explorer Sux0rs</title>
		<link>http://yafumato.sourceforge.net/wordpress/?p=13</link>
		<comments>http://yafumato.sourceforge.net/wordpress/?p=13#comments</comments>
		<pubDate>Mon, 10 Apr 2006 01:11:09 +0000</pubDate>
		<dc:creator>Rand</dc:creator>
		
	<category>Bugs</category>
	<category>Development</category>
	<category>Rant</category>
		<guid isPermaLink="false">http://yafumato.sourceforge.net/wordpress/?p=13</guid>
		<description><![CDATA[Sorry for the inflammatory post title but, given the number of problems that Internet Explorer has caused me, I think that it is justified.  During the testing the Kidd release I came across many many Internet Explorer glitches, some were fixed before release while a few others are still pending.  The issues are [...]]]></description>
			<content:encoded><![CDATA[<p>Sorry for the inflammatory post title but, given the number of problems that Internet Explorer has caused me, I think that it is justified.  During the testing the Kidd release I came across many many Internet Explorer glitches, some were fixed before release while a few others are still pending.  The issues are annoyances rather than showstoppers, and this release is such a big improvement that I didn&#8217;t want to delay it anymore.   I am not an expert web developer by any means, so I can&#8217;t rule out my code as source of the problem, but I think the fact that my code works beautifully in Firefox yet has so many glitches in Internet Explorer is telling.</p>
<p>The first problem that I discovered was with the scroll bar for the text area where you enter messages.  If the CSS width of the text area is defined as a percentage rather than a fixed value then the scroll bar is offset to the right by the amount of the border and padding of the containing element when text is entered.  At first the scroll bar is drawn correctly, and if the text area is resized then the scroll bar is again correctly positioned until more text is entered.  This effect occurs even when the scroll bar is not visible, instead offsetting the window background.  The image below shows the problem, and I&#8217;ve also created a <a href="http://yafumato.sourceforge.net/examples/textarea.html">simple test case</a>.</p>
<p><center><img src="http://yafumato.sourceforge.net/images/ie-textarea-scrollbar.gif" alt="" /></center></p>
<p>I was able to fix the problem using a unique feature of Internet Explorer &#8212; CSS expressions.  I added the following code to the stylesheet:</p>
<pre>
textarea.messageFormBody {
	width: expression(this.parentNode.parentNode.parentNode.offsetWidth - 19);
}
</pre>
<p>All&#8217;s well that ends well?  Not quite.  First, you can see that I had to hardcode the offset.  If the padding of any of the containing elements changes, this value will need to be updated.  Worse yet, this code can crash Internet Explorer!  If the offset is less than amount of padding between the containing elements and the text area, IE resizes the containing elements to fully contain the text area causing an infinite loop as IE then resizes the text area again, and so on.  Finally, this code causes a slight glitch when opening a chat window for the first time as IE initially sizes the text area, which you can see in the image below. I decided this was a worthwhile tradeoff, but my Internet Explorer woes were just beginning&#8230;<br />
<center><img src="http://yafumato.sourceforge.net/images/ie-textarea-expression.gif" alt="" /></center></p>
<p>Another annoyance was IE adding extra padding to the first group in an identity, and the first contact in a group.  In the image below you can see that there is extra space between the name of the AIM Bots group and the first contact in the group, while the first contact in the Buddies group appears immediately below the name.  Also, there is more space between the first contact in the AIM Bots group than there is between the second contact and the next pager node.</p>
<p><center><img src="http://yafumato.sourceforge.net/images/ie-pager-whitespace.jpg" alt="" /></center></p>
<p>After creating <a href="http://yafumato.sourceforge.net/examples/padding.html">another simple test case</a> I determined that this was because I was defining the font properties in the block-level elements and letting the inline elements inherit rather than setting the properties directly on the inline elements.  IE still adds two pixels of extra padding even after updating the stylesheet, but at least now it is uniform.  In the next release I may take advantage of IE&#8217;s ability to use conditional stylesheets to remove the padding from these elements, instead relying on IE&#8217;s extra whitespace to provide the proper spacing (since IE clearly knows padding better than I do), but I&#8217;m not sure that I want to stoop to IE&#8217;s level by using such a hack.</p>
<p>While these glitches were mere annoyances, the next issue was a major problem.  If IE’s Temporary Internet Files settings are set to &#8220;Every visit to the page&#8221; then IE will request background images from the server every time a dynamic action is taken on the page!  This causes the images to flicker, but more importantly it creates a ton of extra requests to the server.  What at first appeared to be an annoyance turned out to be a threat to my design principles! Although this is a browser issue, it can be fixed with some server-side tweaks.  I have incorporated those settings into the Apache HTTP Server configuration snippet included in the distribution, but Apache HTTP Server is an optional package; the issue remains when serving Yafumato directly from Apache Tomcat.  I have noted this issue in the release notes with instructions for ensuring that the IE is properly configured to avoid this problem. More information about this issue is available at <a href="http://www.fivesevensix.com/studies/ie6flicker/">http://www.fivesevensix.com/studies/ie6flicker/</a>.</p>
<p><center><img src="http://yafumato.sourceforge.net/images/ie-chrome-flicker.gif" alt="" /></center></p>
<p>Next, IE doesn’t create horizontal scroll bars for my DHTML windows’ contents.  Instead it resizes the <code>div</code> to hold the contents without side-scrolling and refuses to resize the element any smaller than that.  The windowing code sets the minimum resize width to be the width of the window contents, but that is set when the window is created; dynamically added content can still be a problem.  This is still an open issue.</p>
<p><center><img src="http://yafumato.sourceforge.net/images/ie-window-contents.jpg" alt="" /></center><br />
<center><img src="http://yafumato.sourceforge.net/images/firefox-window-contents.jpg" alt="" /></center></p>
<p>Finally, there are glitches with the <a href="http://script.aculo.us/">script.aculo.us</a> combination effects.  Adjacent elements are briefly offset when using effects such as &#8220;SlideUp&#8221; or &#8220;Squish&#8221; to hide an element.  Also, when using an expanding effect to make a large element appear, the portions of the expanding element that are outside of a DHTML window are briefly visible; the element is only clipped when the effect completes.<br />
<center><img src="http://yafumato.sourceforge.net/images/ie-combination-effects.jpg" alt="" /></center><!--414bd76d64435f8fe5e87fd88f6d4a2d--><!--a381fe521ecf6547de246cd20b5800dc-->
</p>
]]></content:encoded>
			<wfw:commentRSS>http://yafumato.sourceforge.net/wordpress/?feed=rss2&amp;p=13</wfw:commentRSS>
		</item>
	</channel>
</rss>
