<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>Gus What?!</title>
	<atom:link href="http://www.gusverdun.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gusverdun.com</link>
	<description>On AIM, the Web, and software development.</description>
	<pubDate>Tue, 07 Jul 2009 03:10:31 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>AIM 7.0 Beta 2 Now With AIM Lifestream</title>
		<link>http://www.gusverdun.com/2009/07/06/aim-70-beta-2-now-with-aim-lifestream/</link>
		<comments>http://www.gusverdun.com/2009/07/06/aim-70-beta-2-now-with-aim-lifestream/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 03:10:31 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[AIM]]></category>

		<category><![CDATA[AIM Beta]]></category>

		<category><![CDATA[AIM 7]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=402</guid>
		<description><![CDATA[AOL released the second beta of AIM 7.0 for Windows today. This build has a lot of changes since the first beta. While some are very noticeable like the new color/theme chooser and the Lifestream and Me tabs, others might not be so noticeable like the total footprint on disk was reduced by 3MB between [...]]]></description>
			<content:encoded><![CDATA[<p>AOL released the <a href="http://beta.aol.com/projects.php?project=aim7">second beta of AIM 7.0 for Windows</a> today. This build has a lot of changes since the first beta. While some are very noticeable like the new color/theme chooser and the Lifestream and Me tabs, others might not be so noticeable like the total footprint on disk was reduced by 3MB between the two betas. AIM 7 now installs in under under 15MB of disk space. By comparison (chosen totally at random), Digsby takes up 67.7MB on my PC.</p>
<p>Here is my Buddy List using the new &#8220;Grass&#8221; theme:</p>
<p><img src="http://www.gusverdun.com/blog/wp-content/uploads/2009/07/aim7b2_bl.png" alt="AIM Buddy List with Grass theme" title="AIM Buddy List with Grass theme" width="293" height="216" class="aligncenter  size-full wp-image-405" /></p>
<p>There are a lot of cool and very new things to try out in this beta. AOL needs your help. If you find any issues or have some suggestions, be sure to click on the &#8220;Beta Feedback&#8221; link and leave a comment. The IM window has a handy &#8220;Beta Feedback&#8221; link at the top as shown here:</p>
<p><img src="http://www.gusverdun.com/blog/wp-content/uploads/2009/07/aim7b2_bf.png" alt="AIM Beta Feedback" title="AIM Beta Feedback" width="441" height="289" class="aligncenter size-full wp-image-410" /></p>
<p>Clicking on that link will open a browser window where you can leave your comments. Here is a screen shot of me leaving some feedback.</p>
<p><img src="http://www.gusverdun.com/blog/wp-content/uploads/2009/07/aim7b2_fb.png" alt="Sample AIM Beta Feedback" title="Sample AIM Beta Feedback" width="374" height="227" class="aligncenter size-full wp-image-411" /></p>
<p>Remember, like saved away messages, you have to ask for the features you want in order to give them the attention you believe they deserve. Just make sure you ask for something you <u>really</u> want. Please comment early and often. The more details the better.</p>
<p>If you have not tried the first beta, be sure to try this one today.</p>
<p>Could it be the fastest AIM client yet?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2009/07/06/aim-70-beta-2-now-with-aim-lifestream/feed/</wfw:commentRss>
		</item>
		<item>
		<title>AIM 6.9 for Windows</title>
		<link>http://www.gusverdun.com/2009/05/01/aim-69-for-windows/</link>
		<comments>http://www.gusverdun.com/2009/05/01/aim-69-for-windows/#comments</comments>
		<pubDate>Fri, 01 May 2009 12:26:54 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[AIM]]></category>

		<category><![CDATA[AIM 6.9]]></category>

		<category><![CDATA[Running Man]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=380</guid>
		<description><![CDATA[By now I am sure you have heard about the new AIM 6.9 client that was announced by AOL this week. 
Don&#8217;t let the minor version number fool you. These days, any version number higher than the previous one can signify an important update. AIM 6.9 is much improved over AIM 6.8, it is still [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/blog/wp-content/uploads/2009/04/RunningMan09.jpg" alt="AIM 6.9 Running Man Buddy Icon" style="float:left; padding:3px 6px 6px 0px;"/>By now I am sure you have heard about the new <a href="http://download.aim.com/client/69">AIM 6.9</a> client that was announced by AOL this week. </p>
<p>Don&#8217;t let the minor version number fool you. These days, any version number higher than the previous one can signify an important update. AIM 6.9 is much improved over AIM 6.8, it is still FREE, and best of all, AOL has officially brought back the Running Man!</p>
<p>You can read more about this client on the <a href="http://www.aim.com">AIM website</a> and in some of my fellow teammate&#8217;s <a href="http://www.gregsmind.com/2009/04/29/an-old-friend-returns-in-aim-69/">blog</a> <a href="http://www.gmadkat.com/?p=192">posts</a>. There are also plenty of folks <a href="http://search.twitter.com/search?q=aim+6.9">tweeting</a> about it too.</p>
<p>I have been using this client throughout the betas and can confirm that all of my plugins work with AIM 6.9 as long as you update to their latest versions.</p>
<p>Try it today.</p>
<p>As a bonus tip, here is a quick way to switch your current buddy icon to the new Running Man (pictured above):</p>
<div style="text-align:center;">
<a href="aim:setItem?list=aolbart:/0/id/2B0000316E,aolbart:/1/id/2B0000316E">Click Here to Get the New Running Man Buddy Icon</a>
</div>
<p>Enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2009/05/01/aim-69-for-windows/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CoreWitness 1.3.0</title>
		<link>http://www.gusverdun.com/2009/03/09/corewitness-130/</link>
		<comments>http://www.gusverdun.com/2009/03/09/corewitness-130/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 02:13:33 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[CoreWitness]]></category>

		<category><![CDATA[Plugin]]></category>

		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[DAccEvents]]></category>

		<category><![CDATA[IAccPreferences]]></category>

		<category><![CDATA[Open AIM]]></category>

		<category><![CDATA[preferences]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=363</guid>
		<description><![CDATA[I just released an update to my CoreWitness plugin. This minor release adds the showing of the current preference value in the OnPreferenceChanged and OnPreferenceInvalid events. Here is a sample trace I get when I toggle all the check boxes in the privacy tab off, click apply, and then check them again and click save:

01:58.754 [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/corewitness/corewitness64.gif" alt="CoreWitness Plug-in" style="float:left; padding-top:6px; padding-right:6px;"/>I just released an update to my CoreWitness plugin. This minor release adds the showing of the current preference value in the <strong>OnPreferenceChanged</strong> and <strong>OnPreferenceInvalid</strong> events. Here is a sample trace I get when I toggle all the check boxes in the privacy tab off, click apply, and then check them again and click save:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">01:58.754 [gusblog  ] DAccEvents::OnPreferenceChange - 'aimcc.Privacy.DiscloseTypingStatus'
   new value = No
01:58.755 [gusblog  ] DAccEvents::OnPreferenceChange - 'aimcc.privacy.discloseBuddyFeed'
   new value = No
01:58.764 [gusblog  ] DAccEvents::OnPreferenceChange - 'aimcc.Privacy.DiscloseIdleTime'
   new value = No
01:58.777 [gusblog  ] DAccEvents::OnPreferenceChange - 'aimcc.privacy.disclosePluginsToBuddyFeed'
   new value = No
01:58.777 [gusblog  ] DAccEvents::OnPreferenceChange - 'aimcc.Privacy.DiscloseWireless'
   new value = No
02:03.859 [gusblog  ] DAccEvents::OnPreferenceChange - 'aimcc.Privacy.DiscloseTypingStatus'
   new value = Yes
02:03.860 [gusblog  ] DAccEvents::OnPreferenceChange - 'aimcc.privacy.discloseBuddyFeed'
   new value = Yes
02:03.868 [gusblog  ] DAccEvents::OnPreferenceChange - 'aimcc.Privacy.DiscloseIdleTime'
   new value = Yes
02:03.869 [gusblog  ] DAccEvents::OnPreferenceChange - 'aimcc.Privacy.DiscloseWireless'
   new value = Yes
02:03.869 [gusblog  ] DAccEvents::OnPreferenceChange - 'aimcc.privacy.disclosePluginsToBuddyFeed'
   new value = Yes</pre></div></div>

<p>You can get the latest version <a href="/corewitness">here</a>. </p>
<p><strong>Please note that activation of the CoreWitness plugin is now automatic. No registration is needed. </p>
<p>This is a free plugin for <a href="http://dev.aol.com/aim">Open AIM</a> developers.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2009/03/09/corewitness-130/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Welcoming Gmadkat to the Blogging World</title>
		<link>http://www.gusverdun.com/2009/02/22/welcoming-gmadkat-to-the-blogging-world/</link>
		<comments>http://www.gusverdun.com/2009/02/22/welcoming-gmadkat-to-the-blogging-world/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 04:56:16 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[AIM SDK]]></category>

		<category><![CDATA[Open AIM]]></category>

		<category><![CDATA[gmadkat]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=352</guid>
		<description><![CDATA[Open AIM developers can now enjoy a new resource and blogger covering the Open AIM SDK. Gowri IMed me over the weekend to let me know that she started her own blog, called Gmadkat&#8217;s Open AIM Blog. You can follow her posts at the www.gmadkat.com site.
I have known and worked with Gowri for a number [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.gmadkat.com/"><img src="http://www.gusverdun.com/blog/wp-content/uploads/2009/02/gmadkat.png" alt="Gmadkat&#039;s Open AIM Blog" title="Gmadkat&#039;s Open AIM Blog" width="150" height="128" style="float:left; padding-top:6px; padding-right:6px;"/></a><a href="http://dev.aol.com/aim">Open AIM</a> developers can now enjoy a new resource and blogger covering the <a href="http://dev.aol.com/aimclient/OpenAIM168/reference/index.html">Open AIM SDK</a>. Gowri IMed me over the weekend to let me know that she started her own blog, called <a href="http://www.gmadkat.com">Gmadkat&#8217;s Open AIM Blog</a>. You can follow her posts at the <a href="http://www.gmadkat.com">www.gmadkat.com</a> site.</p>
<p>I have known and worked with Gowri for a number of years now. Unfortunately, I just realized that I have never asked her where &#8220;madkat&#8221; came from. Be sure to check out her blog and let us know what ideas and issues you want answers on about Open AIM. Gowri is actually on the Open AIM team, so she has first-hand knowledge of all the current issues and questions that developers are stuck on. I look forward to her many great posts to come.</p>
<p>Lets all give Gowri a nice warm welcome to the blogging world.</p>
<p>P.S. Thanks for the <a href="http://www.gmadkat.com/?p=33">kudos</a> on my <a href="/corewitness">CoreWitness</a> plugin &mdash; I enjoy developing it just as much as I enjoy using it. <img src='http://www.gusverdun.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2009/02/22/welcoming-gmadkat-to-the-blogging-world/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Checking AIM Capabilities Via JavaScript</title>
		<link>http://www.gusverdun.com/2009/02/12/checking-aim-capabilities-via-javascript/</link>
		<comments>http://www.gusverdun.com/2009/02/12/checking-aim-capabilities-via-javascript/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 04:38:23 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[AIM SDK]]></category>

		<category><![CDATA[Open AIM]]></category>

		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Sample Code]]></category>

		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=337</guid>
		<description><![CDATA[With so many different AIM clients out there, how can we tell if a client supports a particular feature? The answer is capabilities. Each screen name has a list of capabilities (GUIDs) that are asserted by the client and plugins.
How can I read these capabilities in the AIM SDK, you might ask? You can see [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/images/logo-openaim.gif" alt="Open AIM" title="Open AIM Developers" style="float:left; padding-top:6px; padding-right:6px;"/>With so many different AIM clients out there, how can we tell if a client supports a particular feature? The answer is capabilities. Each screen name has a list of capabilities (GUIDs) that are asserted by the client and plugins.</p>
<p>How can I read these capabilities in the AIM SDK, you might ask? You can see what a user supports via the AccUserProp_Capabilities property and what the client asserts via the AccSessionProp_Capabilities property.</p>
<p>Here is a dump of the capabilities property for one of my screen names as seen by my <a href="/corewitness">CoreWitness plugin</a>:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">  AccUserProp_Capabilities = Array { ...GUIDs removed from trace here... } 
      {09461345-4C7F-11D1-8222-444553540000} = Direct IM
      {748F2420-6287-11D1-8222-444553540000} = Chat
      {09461343-4C7F-11D1-8222-444553540000} = File Transfer
      {67753137-6A38-6C77-4672-762D49755071} = UUID of a plugin: 'Gus Verdun's Core Test Plug-in (Dev)'
      {09461346-4C7F-11D1-8222-444553540000} = Buddy Icon
      {9FD3969B-84CB-45C1-B5DF-72DF5FAAB98E} = RX-Plugin</pre></div></div>

<p>The <a href="http://dev.aol.com/aim">AIM SDK</a> returns an array of GUIDs in string form for those two properties. The <a href="/corewitness">CoreWitness plugin</a> will automatically map the GUIDs to friendly names. When it encounters a GUID it does not recognize, it scans to see if the GUID matches that of any plugin you have installed. Yes, you can assert your plugin&#8217;s key as a capability if you want too. However, this is not required even thought your plugin&#8217;s key is reserved for you. I chose long ago to assert a different GUID as a capability for my <a href="/rxplugin">RX-Plugin</a> as you can see above. The capability is used to change the behavior of the IMpulse feature when both users have the <a href="/rxplugin">RX-Plugin</a> installed.</p>
<p>The <a href="http://dev.aol.com/aim">AIM SDK</a> always returns VB arrays in JavaScript so you must convert them to a JS array by using the toArray() method. Here is one way you can test to see if a buddy supports a particular capability:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// Test to see if buddy (IAccUser) has the RX-Plugin capability asserted</span>
<span style="color: #003366; font-weight: bold;">function</span> HasRXPlugin<span style="color: #009900;">&#40;</span>buddy<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span> SafeHasCapability<span style="color: #009900;">&#40;</span>buddy<span style="color: #339933;">,</span> <span style="color: #3366CC;">'{9FD3969B-84CB-45C1-B5DF-72DF5FAAB98E}'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
        <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'yes'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">else</span>
        <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'no'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// cap must be in upper case.</span>
<span style="color: #003366; font-weight: bold;">function</span> SafeHasCapability<span style="color: #009900;">&#40;</span>user<span style="color: #339933;">,</span> cap<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">return</span>  user.<span style="color: #660066;">capabilities</span>.<span style="color: #660066;">toArray</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">join</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">indexOf</span><span style="color: #009900;">&#40;</span>cap<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span> e <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>The first function calls the more general function to test if the buddy has the capability asserted by my <a href="/rxplugin">RX-Plugin</a>.</p>
<p>You can use capabilities in your plugins for anything. They can be used to indicate that something is &#8220;on&#8221;, &#8220;selected&#8221;, etc. You can even have more than one&mdash;within reason. The <a href="http://gallery.aim.com/detail/863">AIM Vote &#8216;08</a> plugin uses capabilities to indicate your vote for McCain or Obama and then tallies up the number of buddies with either of those capabilities.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2009/02/12/checking-aim-capabilities-via-javascript/feed/</wfw:commentRss>
		</item>
		<item>
		<title>AccEx C++ Library R3</title>
		<link>http://www.gusverdun.com/2009/02/08/accex-c-library-r3/</link>
		<comments>http://www.gusverdun.com/2009/02/08/accex-c-library-r3/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 02:09:42 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[AIM SDK]]></category>

		<category><![CDATA[AccEx]]></category>

		<category><![CDATA[C++]]></category>

		<category><![CDATA[Open AIM]]></category>

		<category><![CDATA[Plugin]]></category>

		<category><![CDATA[Sample Code]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=322</guid>
		<description><![CDATA[A new release of the AccEx library is now available. This is a library of functions and classes for C++ based Open AIM clients and plugins using the AIM SDK.
This release adds three new classes.
AccEx::CAccExPluginPreferences
This class wraps an AccEx::CAccExPreferences object to help you manage the reserved name space for preferences in a plugin. Open AIM [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/accex/accexlogo.png" alt="AccEx Library for Open AIM Developers" title="AccEx Library for Open AIM Developers" style="float:left; padding-top:6px; padding-right:6px;"/>A new release of the <a href="/accex">AccEx</a> library is now available. This is a library of functions and classes for C++ based Open AIM clients and plugins using the <a href="http://dev.aol.com/aim">AIM SDK</a>.</p>
<p>This release adds three new classes.</p>
<p><strong>AccEx::CAccExPluginPreferences</strong></p>
<p>This class wraps an AccEx::CAccExPreferences object to help you manage the reserved name space for preferences in a plugin. Open AIM Plugins can keep any number of preferences under the &#8220;aimcc.plugin.__GUID__.prefs.__PREF__&#8221; key specifier where __GUID__ is your plugin key and __PREF__ is any alphanumeric name for your preference. </p>
<p>The class is initialized with a pointer to the session and the plugin&#8217;s CLSID. It builds the base preference specifier for the plugin and gives you easy access to the preferences under it. The class also has methods to let you test if a given specifier is in the plugin&#8217;s name space and is of a particular preference. The GetPref() and SetPref() methods are identical to that of AccEx::CAccExPreferences with the only exception that you use the __PREF__ suffix rather than the full specifier.</p>
<p><strong>AccEx::CAccExDAccEventSink</strong></p>
<p>This class helps you implement your own DAccEvents handler. It differs from a the CAccEventSink supplied by the <a href="http://dev.aol.com/aim">Open AIM SDK</a> in a number of ways.</p>
<ol>
<li>Supports ATL</li>
<li>Adds an OnPreEventMapFilter() function that you can use to filter out events</li>
<li>Adds an OnUnknownDispId() function that you can use to catch unhandled events</li>
<li>Wraps all calls to your handler functions in an exception handler</li>
<li>Adds an OnException() function that is called when an exception occurs</li>
<li>Event handlers are not virtual functions</li>
<li>Does not implement the IAccSession manager (See: AccEx::CAccExIAccSessionArray)</li>
</ol>
<p><strong>AccEx::CAccExIAccSessionArray</strong></p>
<p>This class helps you keep track of up to 10 IAccSession objects. The purpose of this class is to encapsulate the management of these interfaces in an array along with their connection point cookie. You can add, remove, and find sessions. There are handy methods to get the first session, also known as the primary session, check if the array is empty, and check if a session is already registered.</p>
<p>You can <a href="/accex">download</a> the latest release and get more information at the <a href="/accex">AccEx</a> page.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2009/02/08/accex-c-library-r3/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Centering an AIM Module Plugin Window</title>
		<link>http://www.gusverdun.com/2009/02/04/centering-an-aim-module-plugin-window/</link>
		<comments>http://www.gusverdun.com/2009/02/04/centering-an-aim-module-plugin-window/#comments</comments>
		<pubDate>Wed, 04 Feb 2009 12:57:59 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[AIM SDK]]></category>

		<category><![CDATA[AMO]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Open AIM]]></category>

		<category><![CDATA[Sample Code]]></category>

		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=310</guid>
		<description><![CDATA[The window.external.window.center() is a handy function in the AIM Modules API that you can use when all you want to do is center a window without regard for the buddy list. If you want to center a plugin window in a way that accounts for the buddy list, then you will need to write your [...]]]></description>
			<content:encoded><![CDATA[<p>The window.external.window.center() is a handy function in the <a href="http://dev.aol.com/aim/plugins/module_plugin_reference">AIM Modules API</a> that you can use when all you want to do is center a window without regard for the buddy list. If you want to center a plugin window in a way that accounts for the buddy list, then you will need to write your own function. A solution I actually needed in one of my plugins.</p>
<p>In order to center a window, we need to know what monitor it&#8217;s in. Here is a function that returns the monitor for a given window:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> findMonitorForWindow<span style="color: #009900;">&#40;</span>tWnd<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// loop over all monitors until we find the one where</span>
    <span style="color: #006600; font-style: italic;">// the top left corner of the target window is in</span>
    <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> 
    <span style="color: #009900;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> m <span style="color: #339933;">=</span> client.<span style="color: #660066;">findWindow</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'_monitor'</span><span style="color: #339933;">+</span>i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>m.<span style="color: #660066;">exists</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span> tWnd.<span style="color: #660066;">x</span> <span style="color: #339933;">&gt;=</span> m.<span style="color: #660066;">x</span> <span style="color: #339933;">&amp;&amp;</span> tWnd.<span style="color: #660066;">x</span> <span style="color: #339933;">&lt;</span> <span style="color: #009900;">&#40;</span>m.<span style="color: #660066;">x</span> <span style="color: #339933;">+</span> m.<span style="color: #660066;">width</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span>
                 tWnd.<span style="color: #660066;">y</span> <span style="color: #339933;">&gt;=</span> m.<span style="color: #660066;">y</span> <span style="color: #339933;">&amp;&amp;</span> tWnd.<span style="color: #660066;">y</span> <span style="color: #339933;">&lt;</span> <span style="color: #009900;">&#40;</span>m.<span style="color: #660066;">y</span> <span style="color: #339933;">+</span> m.<span style="color: #660066;">height</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> 
                <span style="color: #000066; font-weight: bold;">return</span> m<span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000066; font-weight: bold;">else</span>
            <span style="color: #000066; font-weight: bold;">break</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #006600; font-style: italic;">// default to first monitor</span>
    <span style="color: #000066; font-weight: bold;">return</span> client.<span style="color: #660066;">findWindow</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'_monitor0'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>NOTE: &#8216;client&#8217; above is the window.external.client object that has been assigned to a global variable.</p>
<p>Now that we can find the monitor for a given window, we can center the window any way we want in this monitor. Here is a function that centers the window over the region not occupied by a docked buddy list.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> BuddyListAwareCenterWindow<span style="color: #009900;">&#40;</span>tWnd<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// The standard center function:</span>
    <span style="color: #003366; font-weight: bold;">var</span> center <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>o<span style="color: #339933;">,</span>w<span style="color: #339933;">,</span>n<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span>o <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>w<span style="color: #339933;">-</span>n<span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span>2<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> tWndMonitor <span style="color: #339933;">=</span> findMonitorForWindow<span style="color: #009900;">&#40;</span>tWnd<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> blWnd <span style="color: #339933;">=</span> client.<span style="color: #660066;">findWindow</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'_buddylist'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> blWndMonitor <span style="color: #339933;">=</span> findMonitorForWindow<span style="color: #009900;">&#40;</span>blWnd<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003366; font-weight: bold;">var</span> blWidth <span style="color: #339933;">=</span> 0<span style="color: #339933;">,</span> blOffset <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #006600; font-style: italic;">// are both windows in the same monitor?</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>tWndMonitor.<span style="color: #660066;">monitorIndex</span> <span style="color: #339933;">==</span> blWndMonitor.<span style="color: #660066;">monitorIndex</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">// adjust centering width if bl is docked on either left or right</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>blWnd.<span style="color: #660066;">x</span> <span style="color: #339933;">==</span> 0 <span style="color: #339933;">||</span> <span style="color: #009900;">&#40;</span>blWndMonitor.<span style="color: #660066;">width</span> <span style="color: #339933;">-</span> blWnd.<span style="color: #660066;">width</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> blWnd.<span style="color: #660066;">x</span> <span style="color: #009900;">&#41;</span>
            blWidth <span style="color: #339933;">=</span> blWnd.<span style="color: #660066;">width</span><span style="color: #339933;">;</span>
        <span style="color: #006600; font-style: italic;">// adjust centering offset if docked on left.</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>blWnd.<span style="color: #660066;">x</span> <span style="color: #339933;">==</span> 0<span style="color: #009900;">&#41;</span>
            blOffset <span style="color: #339933;">=</span> blWnd.<span style="color: #660066;">width</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    tWnd.<span style="color: #660066;">move</span><span style="color: #009900;">&#40;</span> 
        center<span style="color: #009900;">&#40;</span>tWndMonitor.<span style="color: #660066;">x</span> <span style="color: #339933;">+</span>  blOffset<span style="color: #339933;">,</span> tWndMonitor.<span style="color: #660066;">width</span> <span style="color: #339933;">-</span> blWidth<span style="color: #339933;">,</span> tWnd.<span style="color: #660066;">width</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
        center<span style="color: #009900;">&#40;</span>tWndMonitor.<span style="color: #660066;">y</span><span style="color: #339933;">,</span> tWndMonitor.<span style="color: #660066;">height</span><span style="color: #339933;">,</span> tWnd.<span style="color: #660066;">height</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>There are some edge cases like when a window is bigger than the space it&#8217;s centered on, but this solution should help you get started.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2009/02/04/centering-an-aim-module-plugin-window/feed/</wfw:commentRss>
		</item>
		<item>
		<title>AccEx C++ Library R2</title>
		<link>http://www.gusverdun.com/2009/01/31/accex-c-library-r2/</link>
		<comments>http://www.gusverdun.com/2009/01/31/accex-c-library-r2/#comments</comments>
		<pubDate>Sat, 31 Jan 2009 20:18:30 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[AccEx]]></category>

		<category><![CDATA[C++]]></category>

		<category><![CDATA[Open AIM]]></category>

		<category><![CDATA[Sample Code]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=301</guid>
		<description><![CDATA[A new release of the AccEx library is now available. This is a library of functions and classes for C++ based Open AIM clients and plugins using the AIM SDK.
This release adds some handy helper functions ported over from some of my previous posts. One makes it easier to register plugin commands and the other [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/accex/accexlogo.png" alt="AccEx Library for Open AIM Developers" title="AccEx Library for Open AIM Developers" style="float:left; padding-top:6px; padding-right:6px;"/>A new release of the <a href="/accex">AccEx</a> library is now available. This is a library of functions and classes for C++ based Open AIM clients and plugins using the <a href="http://dev.aol.com/aim">AIM SDK</a>.</p>
<p>This release adds some handy helper functions ported over from some of my <a href="http://www.gusverdun.com/2007/12/17/open-aim-how-to-register-a-plugin-command/">previous</a> <a href="http://www.gusverdun.com/2007/12/30/open-aim-modeless-window-support-for-plugins/">posts</a>. One makes it easier to register plugin commands and the other makes it easy to register an active modeless window in your plugin so that dialog navigation keys are functional. These versions are public domain.</p>
<p>As a follow-on to my post on <a href="http://www.gusverdun.com/2009/01/28/how-to-push-an-item-to-the-buddy-updates-feed/">pushing data to the user&#8217;s Buddy Updates feed</a>, I added a new function that can be called to push a plugin installed or updated item to the feed.</p>
<p>I am now including a Visual Studio 2005 build project.</p>
<div style="text-align:center">
<img src="http://www.gusverdun.com/blog/wp-content/uploads/2009/01/accexr2.png" alt="AccEx Solution Explorer" title="AccEx Solution Explorer"/>
</div>
<p>See the <a href="/accex">AccEx</a> page for more details.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2009/01/31/accex-c-library-r2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to Debug a C++ AIM Plugin</title>
		<link>http://www.gusverdun.com/2009/01/30/how-to-debug-a-c-aim-plugin/</link>
		<comments>http://www.gusverdun.com/2009/01/30/how-to-debug-a-c-aim-plugin/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 13:03:47 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[AIM SDK]]></category>

		<category><![CDATA[Open AIM]]></category>

		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[C++]]></category>

		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=291</guid>
		<description><![CDATA[Here are some tips on how you can debug your own C++ plugins for AIM.
First, I suggest you get about three or four screen names. Developing C++ plugins requires a lot of client re-starts which can get you log-in rate-limited very fast. Also don&#8217;t forget to take advantage of the edit and continue feature in [...]]]></description>
			<content:encoded><![CDATA[<p>Here are some tips on how you can debug your own C++ plugins for AIM.</p>
<p>First, I suggest you get about three or four screen names. Developing C++ plugins requires a lot of client re-starts which can get you log-in rate-limited very fast. Also don&#8217;t forget to take advantage of the edit and continue feature in Visual Studio while debugging since this will save you a login cycle.</p>
<p>Debugging a plugin is a little bit different than an entire application. I typically compile my plugin in Visual Studio. Then launch AIM using my <a href="/imcpl">IM control panel</a> program. Incidentally, this app also lets me kill AIM completely which I need to do when I crash or want to force a restart. When I see the login window, I attach the debugger via the attach to process dialog (CTRL+ALT+P). Look for the aim6.exe process and attach to it. I then set my breakpoints and log in. </p>
<p>NB: There are two things you should note with the debugger. First is to make sure you are debugging native code and not script; very easy to miss. Second, is that your breakpoints will appear as inactive at this time since the plugin is not loaded yet. As long as you make sure you are debugging native code you should not have to worry too much about the breakpoints being disabled. They should light up once you are online.</p>
<p>AIM has its own crash handler that collects stack trace and other information to send along. Since I am developing my own plugin, it makes no sense to report these crashes to AOL. You can temporarily disable it by renaming the C:\Program Files\Common Files\AOL\AOLDiag\tbdiag.dll file to something else. Without it, all crashes get handled by Windows which lets you attach the debugger at the crash point.</p>
<p>With just these few tips you should be able to get started on debugging your own plugins easily.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2009/01/30/how-to-debug-a-c-aim-plugin/feed/</wfw:commentRss>
		</item>
		<item>
		<title>This Blog Turns 3</title>
		<link>http://www.gusverdun.com/2009/01/28/this-blog-turns-3/</link>
		<comments>http://www.gusverdun.com/2009/01/28/this-blog-turns-3/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 03:30:56 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[Site News]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=284</guid>
		<description><![CDATA[Happy Birthday Blog! Is it me or does time seems to go faster when blogging?
I have a long list of posts to write this year and even more software ideas than ever. This year is already off to a great start.
Let me know if there are any topics you would like me to cover on [...]]]></description>
			<content:encoded><![CDATA[<p>Happy Birthday Blog! Is it me or does time seems to go faster when blogging?</p>
<p>I have a long list of posts to write this year and even more software ideas than ever. This year is already off to a great start.</p>
<p>Let me know if there are any topics you would like me to cover on Open AIM, Plugins, AIM Modules, AIM 6.x, etc.</p>
<p>I hope you find the content informative and interesting. Thank you for reading and trying out my plugins.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2009/01/28/this-blog-turns-3/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Pushing Buddy Updates via JavaScript</title>
		<link>http://www.gusverdun.com/2009/01/28/pushing-buddy-updates-via-javascript/</link>
		<comments>http://www.gusverdun.com/2009/01/28/pushing-buddy-updates-via-javascript/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 02:35:05 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[AIM SDK]]></category>

		<category><![CDATA[Open AIM]]></category>

		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Sample Code]]></category>

		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=274</guid>
		<description><![CDATA[Here is the JavaScript edition of my previous post:

function SafePushTestFeed&#40;session&#41;
&#123;
    try &#123;
        manager = session.buddyFeedManager;
        myitem = manager.createBuddyFeed&#40;&#41;;
        myitem.feedTitle = 'Feed Title';
        myitem.feedLink = [...]]]></description>
			<content:encoded><![CDATA[<p>Here is the JavaScript edition of my <a href="http://www.gusverdun.com/2009/01/28/how-to-push-an-item-to-the-buddy-updates-feed/">previous post</a>:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> SafePushTestFeed<span style="color: #009900;">&#40;</span>session<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
        manager <span style="color: #339933;">=</span> session.<span style="color: #660066;">buddyFeedManager</span><span style="color: #339933;">;</span>
        myitem <span style="color: #339933;">=</span> manager.<span style="color: #660066;">createBuddyFeed</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        myitem.<span style="color: #660066;">feedTitle</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'Feed Title'</span><span style="color: #339933;">;</span>
        myitem.<span style="color: #660066;">feedLink</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'Feed Link'</span><span style="color: #339933;">;</span>
        myitem.<span style="color: #660066;">feedDescription</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'Feed Description'</span><span style="color: #339933;">;</span> 
        myitem.<span style="color: #660066;">feedPublisher</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'Feed Publisher'</span><span style="color: #339933;">;</span> 
        myitem.<span style="color: #660066;">itemTitle</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'Item Title'</span><span style="color: #339933;">;</span>
        myitem.<span style="color: #660066;">itemLink</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'Item Link'</span><span style="color: #339933;">;</span>
        myitem.<span style="color: #660066;">itemDescription</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'Item Description'</span><span style="color: #339933;">;</span> 
        myitem.<span style="color: #660066;">itemGuid</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'Item Guid'</span><span style="color: #339933;">;</span>
        myitem.<span style="color: #660066;">itemCategory</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'Item Category'</span><span style="color: #339933;">;</span>
        manager.<span style="color: #660066;">push</span><span style="color: #009900;">&#40;</span>myitem<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000066; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span> e <span style="color: #009900;">&#41;</span> 
    <span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">// You can look this number up in the </span>
        <span style="color: #006600; font-style: italic;">// CoreWitness Symbol Lookup Dialog</span>
        trace<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Exception HRESULT=&quot;</span> <span style="color: #339933;">+</span> e.<span style="color: #660066;">number</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>The buddyFeedManager is a property of the IAccSession interface. In C++ you access properties via the get_Property(prop, value) or get_XXX methods. However, from JavaScript you can access any property including the Acc<em>XXX</em>Prop_ ones by just using the property&#8217;s trailing name (everything after the Acc<em>XXX</em>Prop_ or get_). Property and method names are not case sensitive in JavaScript.</p>
<p>You can read more about the these interfaces by searching for the interface reference pages on <a href="http://aim.search.aol.com/search/search?&#038;query=IAccBuddyFeed+Interface+Reference">IAccBuddyFeed</a> and <a href="http://aim.search.aol.com/search/search?&#038;query=IAccBuddyFeedManager+Interface+Reference">IAccBuddyFeedManager</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2009/01/28/pushing-buddy-updates-via-javascript/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to Push an Item to the Buddy Updates Feed</title>
		<link>http://www.gusverdun.com/2009/01/28/how-to-push-an-item-to-the-buddy-updates-feed/</link>
		<comments>http://www.gusverdun.com/2009/01/28/how-to-push-an-item-to-the-buddy-updates-feed/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 12:16:07 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[AIM SDK]]></category>

		<category><![CDATA[C++]]></category>

		<category><![CDATA[Open AIM]]></category>

		<category><![CDATA[Sample Code]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=257</guid>
		<description><![CDATA[In my previous post, I provided a tool to help you get a Buddy Updates feed. In this post, I will cover how you can programmatically push an item to this feed.
The first thing you should know before using this API is that you should observe some basic rules of netiquette:

Don&#8217;t push anything without checking [...]]]></description>
			<content:encoded><![CDATA[<p>In my <a href="http://www.gusverdun.com/2009/01/23/buddy-updates-feed-url-generator/">previous post</a>, I provided a <a href="/aimurls/buddyfeed.html">tool</a> to help you get a Buddy Updates feed. In this post, I will cover how you can programmatically push an item to this feed.</p>
<p>The first thing you should know before using this API is that you should observe some basic rules of netiquette:</p>
<ul>
<li>Don&#8217;t push anything without checking with the user first.</li>
<li>Don&#8217;t persist any permission granted by the user unless you inform them of such persistence.</li>
<li>Provide a place where the user can view and edit their permission to push items to their feed.</li>
</ul>
<p>Please keep the above rules in mind as you write clients and plugins that push data to a user&#8217;s Buddy Updates feed.</p>
<p>Version <a href="http://dev.aol.com/aimclient/OpenAIM168/reference/index.html">1.6.8</a> of the <a href="http://dev.aol.com/aim">AIM SDK</a> provides an interface that you can use to push just about anything to the user&#8217;s Buddy Updates Feed. This is the same API used by the AIM client to push all plugin installs.</p>
<p>To push an item to this feed you will need to do get the buddy feed manger (IAccBuddyFeedManager) from the session (IAccSession), create a buddy feed item (IAccBuddyFeed), set its properties, and finally push the item via the buddy feed manager. Here is a simple function that adds a test item to the feed:</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;">HRESULT PushTestFeed<span style="color: #008000;">&#40;</span>IAccSession <span style="color: #000040;">*</span>pSession<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    CComPtr<span style="color: #000080;">&lt;</span>IAccBuddyFeedManager<span style="color: #000080;">&gt;</span> spFeedManager<span style="color: #008080;">;</span>
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> SUCCEEDED<span style="color: #008000;">&#40;</span> get_BuddyFeedManager<span style="color: #008000;">&#40;</span>pSession, <span style="color: #000040;">&amp;</span>spFeedManager<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        CComPtr<span style="color: #000080;">&lt;</span>IAccBuddyFeed<span style="color: #000080;">&gt;</span> spFeed<span style="color: #008080;">;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> SUCCEEDED<span style="color: #008000;">&#40;</span> spFeedManager<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>CreateBuddyFeed<span style="color: #008000;">&#40;</span> <span style="color: #000040;">&amp;</span>spFeed <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span>
        <span style="color: #008000;">&#123;</span>
            put_FeedTitle<span style="color: #008000;">&#40;</span>spFeed, CComBSTR<span style="color: #008000;">&#40;</span>OLESTR<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;Feed Title&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            put_FeedLink<span style="color: #008000;">&#40;</span>spFeed, CComBSTR<span style="color: #008000;">&#40;</span>OLESTR<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;Feed Link&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            put_FeedDescription<span style="color: #008000;">&#40;</span>spFeed, CComBSTR<span style="color: #008000;">&#40;</span>OLESTR<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;Feed Description&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            put_FeedPublisher<span style="color: #008000;">&#40;</span>spFeed, CComBSTR<span style="color: #008000;">&#40;</span>OLESTR<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;Feed Publisher&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            put_ItemTitle<span style="color: #008000;">&#40;</span>spFeed, CComBSTR<span style="color: #008000;">&#40;</span>OLESTR<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;Item Title&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            put_ItemLink<span style="color: #008000;">&#40;</span>spFeed, CComBSTR<span style="color: #008000;">&#40;</span>OLESTR<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;Item Link&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> 
            put_ItemDescription<span style="color: #008000;">&#40;</span>spFeed, CComBSTR<span style="color: #008000;">&#40;</span>OLESTR<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;Item Descrtiption&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> 
            put_ItemGuid<span style="color: #008000;">&#40;</span>spFeed, CComBSTR<span style="color: #008000;">&#40;</span>OLESTR<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;Item GUID&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            put_ItemCategory<span style="color: #008000;">&#40;</span>spFeed, CComBSTR<span style="color: #008000;">&#40;</span>OLESTR<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;Item Category&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            AccTransId transId<span style="color: #008080;">;</span>
            <span style="color: #0000ff;">return</span> spFeedManager<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>Push<span style="color: #008000;">&#40;</span>spFeed, <span style="color: #000040;">&amp;</span>transId<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">return</span> E_FAIL<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>The result of pushing the above content to my feed is shown here:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">...
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Feed Title : Item Title<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/title<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;link<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Item Link<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/link<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;description<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Item Description<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/description<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;author<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>gusblog<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/author<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;aimId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>gusblog<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/aimId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;pubDate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Wed, 28 Jan 2009 10:00:00 GMT<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/pubDate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;category<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Item Category<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/category<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;origFeedTitle<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Feed Title<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/origFeedTitle<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;origFeedLink<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Feed Link<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/origFeedLink<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;guid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Item Guid<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/guid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/item<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
...</pre></div></div>

<p>AIM uses the feed&#8217;s link as the source for the favicon.ico when rendering it in the client and on the web. You must be in the online state before you can  push an item. Pushing an item with an existing item GUID in the feed will replace the current content.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2009/01/28/how-to-push-an-item-to-the-buddy-updates-feed/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Buddy Updates Feed URL Generator</title>
		<link>http://www.gusverdun.com/2009/01/23/buddy-updates-feed-url-generator/</link>
		<comments>http://www.gusverdun.com/2009/01/23/buddy-updates-feed-url-generator/#comments</comments>
		<pubDate>Fri, 23 Jan 2009 13:36:19 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[AIM]]></category>

		<category><![CDATA[Buddy Updates feed]]></category>

		<category><![CDATA[URL Generator]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=248</guid>
		<description><![CDATA[Ever wanted to keep tabs on what your buddies are doing? Well, here is a tool you can use to generate the URL used to get your buddy&#8217;s updates feed. 
The buddy updates feed is a collection of all AIM Plugin installations, away and status message changes, third-party social media feeds, and more that your [...]]]></description>
			<content:encoded><![CDATA[<p>Ever wanted to keep tabs on what your buddies are doing? Well, here is a <a href="/aimurls/buddyfeed.html">tool</a> you can use to generate the URL used to get your buddy&#8217;s updates feed. </p>
<p>The buddy updates feed is a collection of all AIM Plugin installations, away and status message changes, third-party social media feeds, and more that your buddy has associated with his or her account.</p>
<p>The tool generates a URL for the <a href="http://dev.aol.com/aim/web/serverapi_reference">Web AIM API</a> that <a href="http://dev.aol.com/aim/web/serverapi_reference#getUserFeed">gets a user&#8217;s feed</a>. This API is not bound by any authentication mechanism at this time so you can use it like any other RSS feed.</p>
<p>Give the <a href="/aimurls/buddyfeed.html">AIM Buddy Feed URL Generator</a> a try. The tool lets you enter the buddy&#8217;s name, feed format (rss,xml,json), optional category, max number of items, and level of detail. [NOTE: I have to admit that the feed category option did not work for me. I will investigate and add a comment when I have an answer.]</p>
<p>Here is a URL that returns the full RSS format of <a href="http://api.oscar.aol.com/buddyfeed/getUser?t=gusverdun&#038;f=rss&#038;bfUI=1&#038;fullContent=1">my feed</a>.</p>
<p>The AIM SDK version 1.6.8 and the one used with AIM 6.8 both expose a Buddy Feed API that you can use to push additional content. I will cover how you can use this API to push any kind of data you want in a future post.</p>
<p><strong>FAQ</strong><br />
<strong>Q:</strong> How can I control what goes in my buddy updates feed?<br />
<strong>A:</strong> You can control what goes into your buddy feed at the <a href="https://settings.aim.com/">AIM Settings Website</a>. Just click on the &#8220;My Buddy Updates&#8221; tab.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2009/01/23/buddy-updates-feed-url-generator/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Closing a Docked AIM Module Window</title>
		<link>http://www.gusverdun.com/2009/01/22/closing-a-docked-aim-module-window/</link>
		<comments>http://www.gusverdun.com/2009/01/22/closing-a-docked-aim-module-window/#comments</comments>
		<pubDate>Fri, 23 Jan 2009 02:06:08 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[AIM SDK]]></category>

		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[AMO]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Open AIM]]></category>

		<category><![CDATA[Sample Code]]></category>

		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=241</guid>
		<description><![CDATA[It has come to my attention that you can&#8217;t programmatically close an AIM Module window while it is docked. The window.external.window.close() method does not appear to work in this situation.
For now, the only workaround is to un-dock the window before closing it:

// global aliases as described in a prior post
wnd = window.external.window;
client = window.external.client;
prefs = [...]]]></description>
			<content:encoded><![CDATA[<p>It has come to my attention that you can&#8217;t programmatically close an AIM Module window while it is docked. The window.external.window.close() method does not appear to work in this situation.</p>
<p>For now, the only workaround is to un-dock the window before closing it:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// global aliases as described in a prior post</span>
wnd <span style="color: #339933;">=</span> window.<span style="color: #660066;">external</span>.<span style="color: #660066;">window</span><span style="color: #339933;">;</span>
client <span style="color: #339933;">=</span> window.<span style="color: #660066;">external</span>.<span style="color: #660066;">client</span><span style="color: #339933;">;</span>
prefs <span style="color: #339933;">=</span> window.<span style="color: #660066;">external</span>.<span style="color: #660066;">prefs</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> CloseDockedWindowWorkAround<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">// un-dock the window briefly.</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>client.<span style="color: #660066;">apiVersion</span> <span style="color: #339933;">==</span> 1<span style="color: #009900;">&#41;</span>
       client.<span style="color: #660066;">docked</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
    wnd.<span style="color: #000066;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>This workaround will be needed in AIM 6.8 through AIM 6.9 Beta 2 (they all return an API version of 1).</p>
<p>I will get this issue fixed in the next AIM 6.9 beta since the plugin window is briefly shown in its undocked state before disappearing.</p>
<p>NOTE: This only applies to the dockable plugin window. All extra windows opened by the plugin can be closed without this workaround since those windows can never be docked.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2009/01/22/closing-a-docked-aim-module-window/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Just Updated to WordPress 2.7</title>
		<link>http://www.gusverdun.com/2009/01/19/just-updated-to-wordpress-27/</link>
		<comments>http://www.gusverdun.com/2009/01/19/just-updated-to-wordpress-27/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 22:33:07 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[Site News]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=235</guid>
		<description><![CDATA[This is really just a note to for me to record when I did this and in case anyone might be interested. I updated from WordPress 2.5.1 to 2.7. 
The admin UI has improved extensively since the last version and I have been wanting to upgrade for some time since WordPress now support Google Gears. [...]]]></description>
			<content:encoded><![CDATA[<p>This is really just a note to for me to record when I did this and in case anyone might be interested. I updated from WordPress 2.5.1 to 2.7. </p>
<p>The admin UI has improved extensively since the last version and I have been wanting to upgrade for some time since WordPress now support <a href="http://gears.google.com/">Google Gears</a>. This should make posting a lot more interesting. From a reader&#8217;s perspective perhaps nothing has changed.</p>
<p>Let me know if you see any problems. Thanks.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2009/01/19/just-updated-to-wordpress-27/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Tips on Developing AMO Plugins</title>
		<link>http://www.gusverdun.com/2009/01/19/tips-on-developing-amo-plugins/</link>
		<comments>http://www.gusverdun.com/2009/01/19/tips-on-developing-amo-plugins/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 13:40:08 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[AIM SDK]]></category>

		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[AMO]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Open AIM]]></category>

		<category><![CDATA[Sample Code]]></category>

		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=234</guid>
		<description><![CDATA[AIM 6.8 and the AIM 6.9 betas all support AIM Modules. These are HTML and JavaScript based plugins that have full access to the Open AIM API plus client level services like HTTP requests and window management.
One of the nicest aspects of AMO plugins is that you can install and uninstall them without having to [...]]]></description>
			<content:encoded><![CDATA[<p>AIM 6.8 and the AIM 6.9 betas all support <a href="http://dev.aol.com/aim/plugins/module_plugin_reference">AIM Modules</a>. These are HTML and JavaScript based plugins that have full access to the Open AIM API plus client level services like HTTP requests and window management.</p>
<p>One of the nicest aspects of AMO plugins is that you can install and uninstall them without having to sign off. This is fantastic from both a development and user perspective.</p>
<p>I recommend that you get an extra plugin key for developing plugins. Once you publish version 1 and set a finger print (optional) you will not be able to develop your plugin further with that key since only plugins with the registered fingerprint will be allowed to load. The solution to this is to get an extra key that you use for development purposes. Don&#8217;t forget to change to the deploy key before publishing.</p>
<p>Here are five tips to help get you started on developing your first plugin:</p>
<p><img src="/images/numbers/one.png" alt="1" style="float:left; padding-top:6px; padding-right:6px;"/> You can install a plugin by running the .amo file. I typically do &#8220;start plugin.amo&#8221; from the command line or make file. AIM registers itself as a handler for this file extension. You can install a plugin even while offline.</p>
<p><img src="/images/numbers/two.png" alt="1" style="float:left; padding-top:6px; padding-right:6px;"/>You should enable the debugging setting in IE for other apps. This helps you attach the JavaScript debugger during development and warns you about unhandled exceptions. With debugging enabled (i.e. not disabled), you can insert &#8220;debugger;&#8221; statements in your code to trigger the debugger. Go to the Internet Settings control panel and uncheck the highlighted option is to do this.</p>
<div style="text-align:center">
    <img src="http://www.gusverdun.com/blog/wp-content/uploads/2009/01/enabledieebugging.png" alt="Enable IE Debugging for AMO plugins" title="IE Internet Settings Window: Advanced tab."/>
</div>
<p><img src="/images/numbers/three.png" alt="1" style="float:left; padding-top:6px; padding-right:6px;"/>Create aliases for the window.external.* objects. This makes it easier to use these by assigning them to a variable. I put these at the top of my JavaScript file:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">debug<span style="color: #339933;">=</span><span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
prefs <span style="color: #339933;">=</span> window.<span style="color: #660066;">external</span>.<span style="color: #660066;">prefs</span><span style="color: #339933;">;</span>
client<span style="color: #339933;">=</span> window.<span style="color: #660066;">external</span>.<span style="color: #660066;">client</span><span style="color: #339933;">;</span>
wnd <span style="color: #339933;">=</span> window.<span style="color: #660066;">external</span>.<span style="color: #660066;">window</span><span style="color: #339933;">;</span>
plugin<span style="color: #339933;">=</span> client.<span style="color: #660066;">pluginInfo</span><span style="color: #339933;">;</span></pre></div></div>

<p><img src="/images/numbers/four.png" alt="1" style="float:left; padding-top:6px; padding-right:6px;"/>Set the AMO_TRACE_ENABLE environment variable to &#8220;true&#8221; in order to use the window.external.client.trace(msg) function that sends output to the debugger. I do it via the Environment Variables dialog in the System Properties control panel (Windows+Break key, click on Advanced tab, then &#8220;Environment Variables&#8221; button.)</p>
<div style="text-align:center">
    <img src="http://www.gusverdun.com/blog/wp-content/uploads/2009/01/amotraceenableglovalvar.png" alt="Set AMO_TRACE_ENABLE environment variable" title="System control panel"/>
</div>
<p>I also create a trace function that helps me leave trace message that are suppressed when the plugin is deployed. This is a good practice. Note that this code uses the global variables &#8216;debug&#8217; and &#8216;client&#8217; that I set up the previous tip. Remember to set debug=0 when you deploy your plugin.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> trace<span style="color: #009900;">&#40;</span>m<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>debug<span style="color: #009900;">&#41;</span>
        client.<span style="color: #660066;">trace</span><span style="color: #009900;">&#40;</span>m<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><img src="/images/numbers/five.png" alt="1" style="float:left; padding-top:6px; padding-right:6px;"/>If your plugin fails to install for some reason, make sure your plugin.xml file is <a href="http://www.xml.com/pub/a/tools/ruwf/check.html">well-formed</a> and that the minimum required attributes are there. Here are the minimum. The UUID must be your key with {}&#8217;s:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugin</span> </span>
<span style="color: #009900;">    schema     = <span style="color: #ff0000;">&quot;1&quot;</span></span>
<span style="color: #009900;">    type       = <span style="color: #ff0000;">&quot;html&quot;</span></span>
<span style="color: #009900;">    uuid       = <span style="color: #ff0000;">&quot;{00000000-0000-0000-0000-000000000000}&quot;</span></span>
<span style="color: #009900;">    name      = <span style="color: #ff0000;">&quot;any name you want&quot;</span></span>
<span style="color: #009900;">    .</span>
<span style="color: #009900;">    .</span>
<span style="color: #009900;">    .</span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Bonus Tip: See my posts tagged with &#8220;<a href="http://www.gusverdun.com/tag/tips/">tips</a>&#8221; for more.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2009/01/19/tips-on-developing-amo-plugins/feed/</wfw:commentRss>
		</item>
		<item>
		<title>RX-Plugin Rule for Looking up Words in a Dictionary</title>
		<link>http://www.gusverdun.com/2009/01/15/rx-plugin-rule-for-looking-up-words-in-a-dictionary/</link>
		<comments>http://www.gusverdun.com/2009/01/15/rx-plugin-rule-for-looking-up-words-in-a-dictionary/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 01:06:35 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[RX-Plugin Rules]]></category>

		<category><![CDATA[Rules]]></category>

		<category><![CDATA[RX-Plugin]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=233</guid>
		<description><![CDATA[Click here to import the &#8216;EZ Define&#8217; rule into your RX-Plugin settings
NOTE: You must have my RX-Plugin installed in order to use this rule.
This rule lets you quickly send your buddy a link to look up the definition of a word. It sends an IM that says: &#8220;word&#8221; as defined by AIM Search and Wiktionary. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="rxplugin:/import?r=PHJ4IHY9IjEiIG49IkVaIERlZmluZSIgbT0ib3V0Ij48bSBvPSJzYSI*XlxzKi9kZWZpbmVccyooLiopPC9tPjxyPiZxdW90O1wxJnF1b3Q7IGFzIGRlZmluZWQgYnkgJmx0O2EgaHJlZj0mcXVvdDtodHRwOi8vYWltLnNlYXJjaC5hb2wuY29tL3NlYXJjaC9zZWFyY2g_cXVlcnk9ZGVmaW5lJSUzQSUxJmFtcDsmYW1wO2ludm9jYXRpb25UeXBlPXJ4cGx1Z2luJnF1b3Q7Jmd0O0FJTSBTZWFyY2gmbHQ7L2EmZ3Q7IGFuZCAmbHQ7YSBocmVmPSZxdW90O2h0dHA6Ly9lbi53aWt0aW9uYXJ5Lm9yZy93aWtpLyUxJnF1b3Q7Jmd0O1dpa3Rpb25hcnkmbHQ7L2EmZ3Q7PC9yPjwvcng*">Click here to import the &#8216;EZ Define&#8217; rule into your RX-Plugin settings</a></p>
<p>NOTE: You must have my <a href="http://www.gusverdun.com/rxplugin/">RX-Plugin</a> installed in order to use this rule.</p>
<p>This rule lets you quickly send your buddy a link to look up the definition of a word. It sends an IM that says: &#8220;word&#8221; as defined by <u>AIM Search</u> and <u>Wiktionary</u>. All you have to do is type &#8220;/define word&#8221;, where &#8220;word&#8221; can be anything you want to look up, and send it.</p>
<p>I picked AIM Search because, after all, it&#8217;s all about AIM here. I also threw in a little bit of markup in the search URL that might just make the folks over at AIM Search do some searching of their own if this rule gets a lot of use. Trust me, that would be a nice problem to have.</p>
<p>Here is a screen shot of this rule in action:</p>
<div style="text-align:center">
<img src="http://www.gusverdun.com/blog/wp-content/uploads/2009/01/ezdefine.png" alt="EZ Define rule demonstration" title="EZ Define"/>
</div>
<p>This should make doing your homework and schooling your friends a little bit easier. Enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2009/01/15/rx-plugin-rule-for-looking-up-words-in-a-dictionary/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Reading an AIM SDK Preference via JavaScript</title>
		<link>http://www.gusverdun.com/2009/01/15/reading-an-aim-sdk-preference-via-javascript/</link>
		<comments>http://www.gusverdun.com/2009/01/15/reading-an-aim-sdk-preference-via-javascript/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 13:23:52 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[AIM SDK]]></category>

		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[AIMcc]]></category>

		<category><![CDATA[AMO]]></category>

		<category><![CDATA[buddy feed]]></category>

		<category><![CDATA[IAccPreferences]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Open AIM]]></category>

		<category><![CDATA[preferences]]></category>

		<category><![CDATA[Sample Code]]></category>

		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=232</guid>
		<description><![CDATA[Last year AOL released AIM 6.8 which is the first version of AIM to support plugins written in HTML and JavaScript. These plugins are called AIM Modules. They are a zip file that contains the plugin&#8217;s manifest, content, and code with a .amo extension. NOTE: a.m.o (addons.mozilla.org) and AMO plugins are not related. 
A complete [...]]]></description>
			<content:encoded><![CDATA[<p>Last year AOL released AIM 6.8 which is the first version of AIM to support plugins written in HTML and JavaScript. These plugins are called AIM Modules. They are a zip file that contains the plugin&#8217;s manifest, content, and code with a .amo extension. NOTE: a.m.o (addons.mozilla.org) and AMO plugins are not related. </p>
<p>A complete introduction to AMOs is beyond the scope of this post. You can read more about the <a href="http://dev.aol.com/aim/plugins/module_plugin_reference">AIM Module Plugin API</a> on the AIM Developer web site. I have written a few of these plugins under the <a href="/amofactory">AMO Factory</a> brand.</p>
<p>In my previous post, <a href="http://www.gusverdun.com/2009/01/13/reading-an-aim-sdk-preference-via-c/">I demonstrated how to read a preference via C++</a>. Here is a sample that accomplishes the same in JavaScript.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// Make a shorter name for this. See the AMO API for docs on this class</span>
client <span style="color: #339933;">=</span> window.<span style="color: #660066;">external</span>.<span style="color: #660066;">client</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">// Get the primary IAccSession object. </span>
<span style="color: #006600; font-style: italic;">// (primary is the first account that signs on.)</span>
session <span style="color: #339933;">=</span> client.<span style="color: #660066;">primarySession</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">// Get the IAccPreferences object for this session</span>
prefs <span style="color: #339933;">=</span> session.<span style="color: #660066;">prefs</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// See the IAccPreferences API</span>
<span style="color: #003366; font-weight: bold;">function</span> safeGetPref<span style="color: #009900;">&#40;</span>spec<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">default</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">// method names of AIMcc objects are not case sensitive.</span>
        <span style="color: #000066; font-weight: bold;">return</span> prefs.<span style="color: #660066;">GetValue</span><span style="color: #009900;">&#40;</span>spec<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
    <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">default</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> canDisclosePluginsToBuddyFeed<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">return</span> safeGetPref<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;aimcc.privacy.disclosePluginsToBuddyFeed&quot;</span><span style="color: #339933;">,</span> 
        <span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>canDisclosePluginsToBuddyFeed<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> 
<span style="color: #009900;">&#123;</span>
    <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'preference is true'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>I recommend that you use try/catch blocks around AIMcc method calls since they can return COM error results that throw exceptions in JavaScript. The safeGetPref() function takes care of this and returns the default value if AIMcc returns any error.</p>
<p>TIP: The e.number property in the catch block has the HRESULT as a negative number. You can find the symbolic name for this error via the Symbol Lookup dialog in my <a href="/corewitness">CoreWitness plugin</a>. Just enter the number in the find box to do the reverse lookup.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2009/01/15/reading-an-aim-sdk-preference-via-javascript/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Reading an AIM SDK Preference via C++</title>
		<link>http://www.gusverdun.com/2009/01/14/reading-an-aim-sdk-preference-via-c/</link>
		<comments>http://www.gusverdun.com/2009/01/14/reading-an-aim-sdk-preference-via-c/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 13:37:18 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[AIM]]></category>

		<category><![CDATA[AIM SDK]]></category>

		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[AccEx]]></category>

		<category><![CDATA[AIMcc]]></category>

		<category><![CDATA[buddy feed]]></category>

		<category><![CDATA[C++]]></category>

		<category><![CDATA[CAccExPreferences]]></category>

		<category><![CDATA[IAccPreferences]]></category>

		<category><![CDATA[Open AIM]]></category>

		<category><![CDATA[preferences]]></category>

		<category><![CDATA[Sample Code]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=231</guid>
		<description><![CDATA[The AIM SDK (AIMcc) has an interface called IAccPreferences that is used for reading and writing preferences. Preferences are associated with a session so they can only be accessed once you have an IAccSession object.
It is up to clients to implement the actual data store behind these preferences by registering an object that implements either [...]]]></description>
			<content:encoded><![CDATA[<p>The AIM SDK (AIMcc) has an interface called IAccPreferences that is used for reading and writing preferences. Preferences are associated with a session so they can only be accessed once you have an IAccSession object.</p>
<p>It is up to clients to implement the actual data store behind these preferences by registering an object that implements either IAccPreferencesHook or IAccPreferencesHook2. You can find more information about these interfaces in <a href="http://dev.aol.com/aim/notes">technote 3 of the AIM SDK</a>.</p>
<p>In this two-part series I will provide some sample code for reading preferences. This first post  provides an ATL/C++ example and my next post will provide a JavaScript example.</p>
<p>In the process of making easy to use sample code, I will need to create some helper classes. These classes will be part of an evolving distribution called AccEx which I am hereby placing in the public domain. I will start by distributing these as source files only until I have more classes. AccEx distributions will be available <a href="/accex">here</a>.</p>
<p>For this post, I created a helper class in AccEx called CAccExPreferences in order to make it easy to read and write preferences in C++. This class has overloaded methods to help you read a preference in various native formats like bool, int, float, etc. and one method to write a preference from a CComVariant.</p>
<p>So let&#8217;s use this thing. Like I said above, the IAccPreferences interface is implemented by AIMcc and associated with the IAccSession since they are (mostly) per-user preferences. Therefore, the only thing you need to initialize a CAccExPreferences object is an IAccSession pointer. The class will take care of acquiring the IAccPreferences interface for you. Here is a simple use-case that reads a real AIMcc preference.</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #666666;">// This sample source is public domain</span>
<span style="color: #339900;">#include &lt;stdafx.h&gt;</span>
<span style="color: #339900;">#include &quot;AccExPreferences.h&quot;</span>
&nbsp;
<span style="color: #0000ff;">static</span> WCHAR kDisclosePluginsToBuddyFeed<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> 
    OLESTR<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;aimcc.privacy.disclosePluginsToBuddyFeed&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
HRESULT CanDisclosePluginsToBuddyFeed<span style="color: #008000;">&#40;</span>IAccSession <span style="color: #000040;">*</span>pIAccSession<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">bool</span> enabled<span style="color: #008080;">;</span>
    AccEx<span style="color: #008080;">::</span><span style="color: #007788;">CAccExPreferences</span> prefs<span style="color: #008000;">&#40;</span>pIAccSession<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> SUCCEEDED<span style="color: #008000;">&#40;</span> 
            prefs.<span style="color: #007788;">GetPref</span><span style="color: #008000;">&#40;</span>kDisclosePluginsToBuddyFeed, enabled<span style="color: #008000;">&#41;</span> 
         <span style="color: #008000;">&#41;</span> <span style="color: #000040;">&amp;&amp;</span> enabled <span style="color: #008000;">&#41;</span>
    <span style="color: #008000;">&#123;</span>
        <span style="color: #666666;">// preference is enabled.</span>
        <span style="color: #0000ff;">return</span> S_OK<span style="color: #008080;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0000ff;">return</span> S_FALSE<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>Stay tuned for my next post where I will do the same using JavaScript.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2009/01/14/reading-an-aim-sdk-preference-via-c/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Tip on Finding Preferences in Open AIM</title>
		<link>http://www.gusverdun.com/2009/01/13/tip-on-finding-preferences-in-open-aim/</link>
		<comments>http://www.gusverdun.com/2009/01/13/tip-on-finding-preferences-in-open-aim/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 12:34:27 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[AIM SDK]]></category>

		<category><![CDATA[CoreWitness]]></category>

		<category><![CDATA[General]]></category>

		<category><![CDATA[Open AIM]]></category>

		<category><![CDATA[Plugin]]></category>

		<category><![CDATA[Plugin Q&A]]></category>

		<category><![CDATA[preferences]]></category>

		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=228</guid>
		<description><![CDATA[Every now and then I have to look up a preference specifier in AIM in order to use it in a plugin.
For example, the other day I wanted to determine if the user has enabled the pushing of AIM Plugins to their buddy feed. I usually check in technote 10 on preferences in the AIM [...]]]></description>
			<content:encoded><![CDATA[<p>Every now and then I have to look up a preference specifier in AIM in order to use it in a plugin.</p>
<p>For example, the other day I wanted to determine if the user has enabled the pushing of AIM Plugins to their buddy feed. I usually check in technote 10 on preferences in the <a href="http://dev.aol.com/aim/notes">AIM SDK technotes</a>. However, you can also do this empirically in AIM with my <a href="http://www.gusverdun.com/corewitness">CoreWitness plugin</a>. All &#8216;aimcc.*&#8217; preference changes will cause the OnPreferenceChanged event to fire on all listeners so you can simply make a change in the client to see what preference specifier is changing.</p>
<p>To make it easier, the latest version of my <a href="http://www.gusverdun.com/corewitness">CoreWitness plugin</a> lets you filter the messages being logged by pressing the * button in the title bar.  To filter the log to just the OnPreferenceChanged event, open the filter dialog and proceed as follows. Click on the &#8216;clear all&#8217; button and then start typing the word &#8220;preference&#8221; in the filter edit box until you see &#8220;OnPreferenceChange&#8221; appear in the list. Select this event and click OK. Here is a screen shot of this step:</p>
<div style="text-align:center">
<img src="http://www.gusverdun.com/blog/wp-content/uploads/2009/01/dacceventsmonitorfilterexample.png" alt="DAccEvents Monitor Filter" title="DAccEvents Monitor Filter" width="306" height="341" class="aligncenter size-full wp-image-229" />
</div>
<p>After doing the above, I changed the &#8216;I have installed a new AIM Plugin&#8217; check box in the privacy tab of AIM 6.9&#8217;s Settings and clicked apply. Here is a screen shot of my results:</p>
<div style="text-align:center">
<img src="http://www.gusverdun.com/blog/wp-content/uploads/2009/01/findingpreferencesviacorewitnessplugin.png" alt="" title="AIM Settings and DAccEvents Monitor result" width="448" height="238" class="aligncenter size-full wp-image-230" />
</div>
<p>As you can see the preference is called &#8216;aimcc.privacy.disclosePluginsToBuddyFeed&#8217;. Finding the preference specifier is only the beginning. I will cover how to read it in a future post.</p>
<p>NOTE: This will only work for aimcc.* preferences. So it is possible that you can make a change in the settings that does not get notified via OnPreferenceChange because it is internal to the client. Internal preferences are not available to pluigns at this time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2009/01/13/tip-on-finding-preferences-in-open-aim/feed/</wfw:commentRss>
		</item>
		<item>
		<title>RX-Plugin Rule for AIM Blast Users</title>
		<link>http://www.gusverdun.com/2009/01/12/rx-plugin-rule-for-aim-blast-users/</link>
		<comments>http://www.gusverdun.com/2009/01/12/rx-plugin-rule-for-aim-blast-users/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 12:56:24 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[RX-Plugin]]></category>

		<category><![CDATA[RX-Plugin Rules]]></category>

		<category><![CDATA[AIM Blast]]></category>

		<category><![CDATA[Rules]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=226</guid>
		<description><![CDATA[Click here to import the &#8216;AIM Blast IM Link&#8217; rule into your RX-Plugin settings
NOTE: You must have my RX-Plugin installed in order to use this rule.
This rule turns the sender&#8217;s screen name of every AIM Blast message into a link that you can click on to start a personal IM conversation.
Here is an example:



This should [...]]]></description>
			<content:encoded><![CDATA[<p><a href="rxplugin:/import?r=PHJ4IHY9IjEiIG49IkFJTSBCbGFzdCBJTSBMaW5rIiBtPSJpbiI*PG0gbz0iaHxzYyI*XlwoJmx0O0ImZ3Q7KFtcd1xzXSspJmx0Oy9CJmd0O1wpIDwvbT48cj4oJmx0O2ImZ3Q7Jmx0O2EgaHJlZj0mcXVvdDthaW06Z29pbT9zY3JlZW5uYW1lPSUxJnF1b3Q7Jmd0O1wxJmx0Oy9hJmd0OyZsdDsvYiZndDspIDwvcj48L3J4Pg--">Click here to import the &#8216;AIM Blast IM Link&#8217; rule into your RX-Plugin settings</a></p>
<p>NOTE: You must have my <a href="http://www.gusverdun.com/rxplugin/">RX-Plugin</a> installed in order to use this rule.</p>
<p>This rule turns the sender&#8217;s screen name of every AIM Blast message into a link that you can click on to start a personal IM conversation.</p>
<p>Here is an example:</p>
<div style="text-align:center">
<img src="http://www.gusverdun.com/blog/wp-content/uploads/2009/01/imblastlink.png" alt="IM Blast to Link" title="IM Blast to Link" width="399" height="394" class="aligncenter size-full wp-image-227" />
</div>
<p>This should make your AIM Blast experience just a little bit better. Enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2009/01/12/rx-plugin-rule-for-aim-blast-users/feed/</wfw:commentRss>
		</item>
		<item>
		<title>AIM Blast Power User Tips</title>
		<link>http://www.gusverdun.com/2009/01/11/aim-blast-power-user-tips/</link>
		<comments>http://www.gusverdun.com/2009/01/11/aim-blast-power-user-tips/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 23:28:32 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[AIM]]></category>

		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[AIM Blast]]></category>

		<category><![CDATA[Link Buddy]]></category>

		<category><![CDATA[Power User]]></category>

		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=219</guid>
		<description><![CDATA[By now the web is buzzing with comments on AIM Blast. Don&#8217;t know what it is? AIM Blast is like an email list for IMs. You can create a permanent &#8220;blast group&#8221;, invite your friends, and then send/receive messages to/from all who are online at the time. It&#8217;s that simple. See the AIM Blast page [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.gusverdun.com/blog/wp-content/uploads/2009/01/aimblast.png" alt="" title="AIM Blast Brand Logo" width="117" height="43" class="alignnone size-full wp-image-223" style="float:left; padding-top:6px; padding-right:6px;"/>By now the web is <a href="http://search.twitter.com/search?q=AIM+BLAST">buzzing</a> with comments on <a href="http://blast.aim.com/">AIM Blast</a>. Don&#8217;t know what it is? AIM Blast is like an email list for IMs. You can create a permanent &#8220;blast group&#8221;, invite your friends, and then send/receive messages to/from all who are online at the time. It&#8217;s that simple. See the <a href="http://blast.aim.com/">AIM Blast</a> page for more details. </p>
<p>Blast groups appear as an automatically managed group in your buddy list. Once you have a blast group, just send an IM to the []-bracketed blast group buddy name.</p>
<p>You might have noticed that you need to reply with <TT>//1</TT> or <TT>//2</TT> when you receive an IM with the invitation to a blast group in order to accept or decline the invitation. It turns out there are many more commands that you can send to the blast group once you have joined.</p>
<p>Here is a list of additional commands you can send to blast group (NOTE: Most of these commands are handled by the host w/o being relayed to the blast group members): </p>
<p><DL><br />
<DT><STRONG><TT>//off</TT></STRONG><br />
<DD>Stop receiving IMs. Use this when you are not interested in the current conversation. Don&#8217;t forget to send <tt>//on</tt> since this is in effect until then.</DD><br />
<DT><STRONG><TT>//on</TT></STRONG><br />
<DD>Start receiving IMs again.</DD><br />
<DT><STRONG><TT>//invite <i>name</i></TT></STRONG><br />
<DD>Invite <i>name</i> to AIM Blast. An easy way to do this without having to go through the AIM Blast web site.</DD><br />
<DT><STRONG><TT>//history</TT></STRONG><br />
<DD>Display last 10 IMs. This is an excellent way to check if you missed any recent blast messages.</DD><br />
<DT><STRONG><TT>//stats</TT></STRONG><br />
<DD>Display stats</DD><br />
<DT><STRONG><TT>//soundon</TT></STRONG><br />
<DD>Turn buddy sound on for the group</DD><br />
<DT><STRONG><TT>//soundoff</TT></STRONG><br />
<DD>Turn buddy sound off for the group</DD><br />
<DT><STRONG><TT>//help</TT></STRONG><br />
<DD>Get the list of // commands.</DD><br />
</DL></p>
<p>I found one more command that is not listed in the <tt>//help</tt> command and that is the <tt>//roll</tt> command to roll 2 six-sided dice; great for playing games and making random decisions via AIM Blast.</p>
<p>One last tip is that my <a href="http://www.gusverdun.com/amofactory/linkbuddy/">Link Buddy</a> plugin (also available from the <a href="http://gallery.aim.com/plugin?uuid=616D3165-3576-6B44-3957-2D4A33556B34">AIM Gallery</a>) has a link that gets you authenticated access to the AIM Blast web site so you don&#8217;t have to enter your password once you are signed-in to AIM.</p>
<div style="text-align:center">
<img src="http://www.gusverdun.com/blog/wp-content/uploads/2009/01/linkbuddy.png" alt="Link Buddy Plugin" title="Link Buddy Plugin" width="224" height="221" class="alignnone size-full wp-image-225" />
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2009/01/11/aim-blast-power-user-tips/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CoreWitness 1.1</title>
		<link>http://www.gusverdun.com/2009/01/10/corewitness-11/</link>
		<comments>http://www.gusverdun.com/2009/01/10/corewitness-11/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 02:53:18 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[AIM]]></category>

		<category><![CDATA[CoreWitness]]></category>

		<category><![CDATA[Plugin]]></category>

		<category><![CDATA[buddy feed]]></category>

		<category><![CDATA[CoreWitnes]]></category>

		<category><![CDATA[update]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=220</guid>
		<description><![CDATA[
I have released an update to my CoreWitness plugin for AIM. This version adds a few new features like the ability to pause and filter the messages being captured.
Here is a screen shot of the new filter dialog:



From this window you can select the messages you want to trace and click on apply, to activate [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.gusverdun.com/blog/wp-content/uploads/2009/01/corewitness11.png" alt="" title="" width="108" height="82" alt="CoreWitness Plug-in" style="float:left; padding-top:6px; padding-right:6px;"/></p>
<p>I have released an update to my <a href="http://www.gusverdun.com/corewitness/">CoreWitness plugin</a> for AIM. This version adds a few new features like the ability to pause and filter the messages being captured.</p>
<p>Here is a screen shot of the new filter dialog:</p>
<div style="text-align:center">
<img src="http://www.gusverdun.com/blog/wp-content/uploads/2009/01/dacceventsfitler.png" alt="DAccEvents Monitor Filter" title="DAccEvents Monitor Filter"/>
</div>
<p>From this window you can select the messages you want to trace and click on apply, to activate your selection without closing the window, or OK to activate and close the window.  You can save your selection as the default to be loaded at sign-on and when you click on load defaults button.</p>
<p>The contents of the event list will be updated as you type in the filter box to show just the events with the partial name. You can ctrl-click to select or de-select an event. The enable state of events not shown by the filter are preserved.</p>
<p>One last &#8220;feature&#8221; I added has more of a viral approach to getting the word out on this plugin (your help is appreciated). CoreWitness will push an activity to your buddy feed every time you install or upgrade this plugin. This will only be done if you have enabled the publishing of AIM Plugin installs in your privacy settings.</p>
<p>You can read more about this and download it on the <a href="http://www.gusverdun.com/corewitness/">Gus Verdun&#8217;s CoreWiteness Plugin-in</a> web page.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2009/01/10/corewitness-11/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Easy tool for generating AIM plugin fingerprints</title>
		<link>http://www.gusverdun.com/2008/12/07/easy-tool-for-generating-aim-plugin-fingerprints/</link>
		<comments>http://www.gusverdun.com/2008/12/07/easy-tool-for-generating-aim-plugin-fingerprints/#comments</comments>
		<pubDate>Sun, 07 Dec 2008 21:15:30 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[AIM SDK]]></category>

		<category><![CDATA[Open AIM]]></category>

		<category><![CDATA[Perl]]></category>

		<category><![CDATA[Plugin]]></category>

		<category><![CDATA[acchash]]></category>

		<category><![CDATA[AMO]]></category>

		<category><![CDATA[fingerprint]]></category>

		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=218</guid>
		<description><![CDATA[Ever wanted a command line version of acchash.exe that simply displays the fingerprint and copies it to the clipboard without any mouse clicks? 
Here you go:

use Digest::SHA;
use Win32::Clipboard;
&#160;
$file = shift;
&#160;
if &#40; -e $file &#38;&#38; -f $file &#41;
&#123;
   $hash = uc&#40; Digest::SHA-&#62;new&#40;256&#41;-&#62;addfile&#40;$file, 'b'&#41;-&#62;hexdigest &#41;;
   print &#34;Plugin Fingerprint for '$file' (copied to clipboard): [...]]]></description>
			<content:encoded><![CDATA[<p>Ever wanted a command line version of <a href="http://dev.aol.com/aim/faqs">acchash.exe</a> that simply displays the fingerprint and copies it to the clipboard without any mouse clicks? </p>
<p>Here you go:</p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">use</span> Digest<span style="color: #339933;">::</span><span style="color: #006600;">SHA</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> Win32<span style="color: #339933;">::</span><span style="color: #006600;">Clipboard</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #0000ff;">$file</span> <span style="color: #339933;">=</span> <span style="color: #000066;">shift</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">-</span>e <span style="color: #0000ff;">$file</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #339933;">-</span>f <span style="color: #0000ff;">$file</span> <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
   <span style="color: #0000ff;">$hash</span> <span style="color: #339933;">=</span> <span style="color: #000066;">uc</span><span style="color: #009900;">&#40;</span> Digest<span style="color: #339933;">::</span><span style="color: #006600;">SHA</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">new</span><span style="color: #009900;">&#40;</span>256<span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">addfile</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$file</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'b'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">hexdigest</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Plugin Fingerprint for '$file' (copied to clipboard): $hash<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
   Win32<span style="color: #339933;">::</span><span style="color: #006600;">Clipboard</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">Set</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">$hash</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">else</span>
<span style="color: #009900;">&#123;</span>
   <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Usage: gushash [plugin_file_to_hash]<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Save this as <tt>gushash.pl</tt> in a location where your command shell can find it.</p>
<p>You will need <a href="http://www.activestate.com/Products/activeperl/index.mhtml">Perl</a> and the <a href="http://search.cpan.org/dist/Digest-SHA-5.47/lib/Digest/SHA.pm">Digest-SHA</a> package to use this script. The latter can be obtained through the ppm (Perl Package Manager) tool that is installed with Perl.</p>
<p>I&#8217;m always making little tools like this in Perl and Python to help me automate stuff.</p>
<p>This is here in case someone finds it useful&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2008/12/07/easy-tool-for-generating-aim-plugin-fingerprints/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Practicing my Python Skills</title>
		<link>http://www.gusverdun.com/2008/11/11/practicing-my-python-skills/</link>
		<comments>http://www.gusverdun.com/2008/11/11/practicing-my-python-skills/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 19:25:06 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[Python]]></category>

		<category><![CDATA[Microsoft]]></category>

		<category><![CDATA[Quiz]]></category>

		<category><![CDATA[Test]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=217</guid>
		<description><![CDATA[I find that the best way to learn a new language is to start using it to solve simple everyday problems as often as possible. I recently finished  a four-day Python programming course so I am now in a constant lookout for ways I could apply this cool language.
I found an interesting post on [...]]]></description>
			<content:encoded><![CDATA[<p>I find that the best way to learn a new language is to start using it to solve simple everyday problems as often as possible. I recently finished  a four-day Python programming course so I am now in a constant lookout for ways I could apply this cool language.</p>
<p>I found an interesting post on <a href="http://www.alleyinsider.com/2008/11/are-you-smart-enough-to-work-at-microsoft-msft-">Alley Insider about a Microsoft puzzle</a> used to interest students in working at Microsoft. As a student of Python, I figured I was game.</p>
<p>I read the rules literally and wrote a Python application to produce all the permutations of the data. Here is the resulting code:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">results = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span><span style="color: #66cc66;">;</span>
<span style="color: #ff7700;font-weight:bold;">def</span> permutations<span style="color: black;">&#40;</span>choices<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span>0,<span style="color: #008000;">len</span><span style="color: black;">&#40;</span>choices<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:
        results.<span style="color: black;">append</span><span style="color: black;">&#40;</span> choices<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span> <span style="color: black;">&#41;</span><span style="color: #66cc66;">;</span>
        nextchoices = <span style="color: black;">&#91;</span>word <span style="color: #ff7700;font-weight:bold;">for</span> word <span style="color: #ff7700;font-weight:bold;">in</span> choices <span style="color: #ff7700;font-weight:bold;">if</span> word <span style="color: #66cc66;">!</span>= choices<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#93;</span><span style="color: #66cc66;">;</span>
        <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>nextchoices<span style="color: black;">&#41;</span>:
            permutations<span style="color: black;">&#40;</span>nextchoices<span style="color: black;">&#41;</span><span style="color: #66cc66;">;</span>
            results.<span style="color: black;">pop</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">;</span>
        <span style="color: #ff7700;font-weight:bold;">else</span>:
            chars = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span><span style="color: #66cc66;">;</span>
            <span style="color: #ff7700;font-weight:bold;">for</span> x <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span>0,4<span style="color: black;">&#41;</span>:
                <span style="color: #ff7700;font-weight:bold;">for</span> y <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span>0,<span style="color: #008000;">len</span><span style="color: black;">&#40;</span>results<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:
                    chars.<span style="color: black;">append</span><span style="color: black;">&#40;</span>results<span style="color: black;">&#91;</span>y<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span>x<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">;</span>
            <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">''</span>.<span style="color: black;">join</span><span style="color: black;">&#40;</span>chars<span style="color: black;">&#41;</span><span style="color: #66cc66;">;</span>
            results.<span style="color: black;">pop</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">;</span>
words = <span style="color: #483d8b;">'IOME HCRE REEC RNHA UATN'</span>.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">;</span>
permutations<span style="color: black;">&#40;</span>words<span style="color: black;">&#41;</span><span style="color: #66cc66;">;</span></pre></div></div>

<p>It did not take me long to find out that one of those 120 permutations is &#8220;HURRICANEORTHEMENACE&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2008/11/11/practicing-my-python-skills/feed/</wfw:commentRss>
		</item>
		<item>
		<title>AIM Vote &#8216;08 Plugin for AIM 6.8+</title>
		<link>http://www.gusverdun.com/2008/10/30/aim-vote-08-plugin-for-aim-68/</link>
		<comments>http://www.gusverdun.com/2008/10/30/aim-vote-08-plugin-for-aim-68/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 21:56:49 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[AIM]]></category>

		<category><![CDATA[AIM Gallery]]></category>

		<category><![CDATA[AMO]]></category>

		<category><![CDATA[Elections]]></category>

		<category><![CDATA[Plugin]]></category>

		<category><![CDATA[Vote]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=215</guid>
		<description><![CDATA[I just wanted to highlight a new plugin that was recently added to the AIM Gallery. The AIM Vote &#8216;08 plugin lets you vote for Obama or McCain and then see who your buddies vote for. Your vote is only visible while you are online and you can change your mind at any time.
Here is [...]]]></description>
			<content:encoded><![CDATA[<p>I just wanted to highlight a new plugin that was recently added to the <a href="http://gallery.aim.com/browse/plugins">AIM Gallery</a>. The <a href="http://gallery.aim.com/detail/863">AIM Vote &#8216;08 plugin</a> lets you vote for Obama or McCain and then see who your buddies vote for. Your vote is only visible while you are online and you can change your mind at any time.</p>
<p>Here is a capture from the AIM Gallery Web page:</p>
<div style="text-align:center">
<a href='http://gallery.aim.com/detail/863'><img src="http://www.gusverdun.com/blog/wp-content/uploads/2008/10/aimvote08.png" alt="AIM Vote on the AIM Gallery" title="aimvote08" width="397" height="630" class="aligncenter size-full wp-image-216" /></a>
</div>
<p>This plugin is all aces in my book; Best part is that I did not even write it but I know the man that did.</p>
<p>Just look at the face of your candidate when he is winning or losing. Well done &#8220;Tommy Gunn&#8221;!</p>
<p><a href="http://gallery.aim.com/detail/863">Click here to go to the AIM Gallery site where you can download this plugin.</a></p>
<p>Enjoy and be sure to vote on November 4th.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2008/10/30/aim-vote-08-plugin-for-aim-68/feed/</wfw:commentRss>
		</item>
		<item>
		<title>AIM 6.9 Beta 2</title>
		<link>http://www.gusverdun.com/2008/10/21/aim-69-beta-2/</link>
		<comments>http://www.gusverdun.com/2008/10/21/aim-69-beta-2/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 04:00:33 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[AIM Beta]]></category>

		<category><![CDATA[6.9]]></category>

		<category><![CDATA[AIM]]></category>

		<category><![CDATA[AMO]]></category>

		<category><![CDATA[beta]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=213</guid>
		<description><![CDATA[AOL released the second beta of AIM 6.9 today. 
This new build has some interesting changes as mentioned on the AOL beta site release notes:

 Sign in as invisible is now an option in the sign in window &#8212; This check box is not sticky so you can&#8217;t check it and expect it to be [...]]]></description>
			<content:encoded><![CDATA[<p>AOL released the second beta of AIM 6.9 today. </p>
<p>This new build has some interesting changes as mentioned on the <a href="http://beta.aol.com/projects.php?project=aim6">AOL beta site release notes</a>:</p>
<ul>
<li> Sign in as invisible is now an option in the sign in window &mdash; This check box is not sticky so you can&#8217;t check it and expect it to be checked the next time you sign in or out. This is a feature that was previously only available in my <a href="imtweaks">IM Tweaks</a> plugin.
<li> The UI has been streamlined. We have removed some of the redundant menus and options &mdash; Less is more or less :). Be sure to send feedback on what you like or don&#8217;t like here.
<li> The buddy find feature is now similar to FireFox. Just press Ctrl+F from the Buddy List&reg; window and begin typing the name of your buddy. You can close the find box to give yourself more room to show your Buddy List by clicking on the X button next to it.
<li> Search the web from your IM window. Just enter a query in the search box to open your browser and see the results. AIM Search is &#8220;powered by AOL search&#8221; and &#8220;enhanced by Google&#8221;.
<li> The <a href="http://dev.aol.com/aim/plugins/module_plugin_reference">AMO API</a> continues to be improved in this version. Most of the changes are internal with a few API extensions. AIM 6.8 AMO plugins are also supported in AIM 6.9. I will cover some of these new API additions in a future post.
<li> One new feature not mentioned in the official release notes is a new option in the context menu of the IM compose box (Ctrl+D) that allows you to &#8220;paste as plain text&#8221;. This makes it ultra-easy to paste web content without messing up your fonts.
</ul>
<p>Here is a screen shot of AIM 6.9 beta 1 and beta 2 Buddy List windows with some of the highlighted changes. As you can see we moved the IM, Buddy List config, and Actions menu to the top under the main menu bar and gave them new icons. All plugin commands that were in the Actions menu are now in the menu with the gear icon.</p>
<div style="text-align:center;">
<img src="http://www.gusverdun.com/blog/wp-content/uploads/2008/10/beta2changes.png" alt="" title="Buddy List Window" width="400" height="564" class="aligncenter size-full wp-image-214" />
</div>
<p>You can download the latest <a href="http://beta.aol.com/projects.php?project=aim6">AIM beta here</a>.  Let me know what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2008/10/21/aim-69-beta-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Have You Seen This Photo?</title>
		<link>http://www.gusverdun.com/2008/08/27/have-you-seen-this-photo/</link>
		<comments>http://www.gusverdun.com/2008/08/27/have-you-seen-this-photo/#comments</comments>
		<pubDate>Thu, 28 Aug 2008 03:08:49 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[AIM]]></category>

		<category><![CDATA[General]]></category>

		<category><![CDATA[stock photos]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=209</guid>
		<description><![CDATA[I got this in an envelope from a local bank the other day:

I was absolutely positive I had seen this photo before but could not remember where until I visited the aim.com website and saw this on the page:

Have you seen this photo somewhere else? Post any you find in the comments (no spam please).
]]></description>
			<content:encoded><![CDATA[<p>I got this in an envelope from a local bank the other day:</p>
<p><a href='http://www.gusverdun.com/blog/wp-content/uploads/2008/08/ccbversion.png'><img src="http://www.gusverdun.com/blog/wp-content/uploads/2008/08/ccbversion.png" alt="Chevy Chase Bank Uses a Stock Photo" title="ccbversion" width="500" height="210" class="aligncenter size-full wp-image-211" /></a></p>
<p>I was absolutely positive I had seen this photo before but could not remember where until I visited the <a href="http://www.aim.com">aim.com</a> website and saw this on the page:</p>
<p><a href='http://www.gusverdun.com/blog/wp-content/uploads/2008/08/aimversion.png'><img src="http://www.gusverdun.com/blog/wp-content/uploads/2008/08/aimversion.png" alt="aim.com uses the same stock photo" title="aimversion" width="420" height="284" class="aligncenter size-full wp-image-212" /></a></p>
<p>Have you seen this photo somewhere else? Post any you find in the comments (no spam please).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2008/08/27/have-you-seen-this-photo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CoreWitness 1.0.7 Shipped</title>
		<link>http://www.gusverdun.com/2008/07/28/corewitness-107-shipped/</link>
		<comments>http://www.gusverdun.com/2008/07/28/corewitness-107-shipped/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 02:57:58 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[CoreWitness]]></category>

		<category><![CDATA[AMO]]></category>

		<category><![CDATA[Code Genertor]]></category>

		<category><![CDATA[DAccEvents]]></category>

		<category><![CDATA[Open AIM]]></category>

		<category><![CDATA[Symbol Lookup]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=208</guid>
		<description><![CDATA[I have updated the CoreWitness Plugin. This version has two new features called DAccEvents Wizard and Symbol Lookup.
The DAccEvents Wizard helps you generate the code needed to handle Open AIM events in your own clients and plugins. It can generate code in C++ and JavaScript. The latter is useful for developing AMO plugins.
The Symbol Lookup [...]]]></description>
			<content:encoded><![CDATA[<p>I have updated the <a href="corewitness">CoreWitness Plugin</a>. This version has two new features called DAccEvents Wizard and Symbol Lookup.</p>
<p>The DAccEvents Wizard helps you generate the code needed to handle Open AIM events in your own clients and plugins. It can generate code in C++ and JavaScript. The latter is useful for developing <a href="http://dev.aol.com/aim/plugins/module_plugin_reference">AMO</a> plugins.</p>
<p>The Symbol Lookup window lets you quickly find the value of a particular constant. You can search by entering a partial name to see all the symbols containing that name. Or, you can do a reverse look up by entering a numeric value to see all the symbols with that value. You can click on any of the static text elements under the list box to copy the text to the clipboard. Clicking on the symbol&#8217;s name will copy an assignment statement to the clipboard.</p>
<p>You can find more information including screen shots and a download link <a href="corewitness">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2008/07/28/corewitness-107-shipped/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Just upgraded to WordPress 2.5.1</title>
		<link>http://www.gusverdun.com/2008/05/23/just-upgraded-to-wordpress-251/</link>
		<comments>http://www.gusverdun.com/2008/05/23/just-upgraded-to-wordpress-251/#comments</comments>
		<pubDate>Fri, 23 May 2008 22:52:42 +0000</pubDate>
		<dc:creator>Gus</dc:creator>
		
		<category><![CDATA[Site News]]></category>

		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.gusverdun.com/?p=207</guid>
		<description><![CDATA[Just a quick heads up. I always like to credit WordPress when I upgrade. This also adds the historical record of my change as a post and lets me test it. 
So far, this looks sharp. I like the way WordPress tells me that a plugin was updated and gives me the option to update [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick heads up. I always like to credit <a href="http://www.wordpress.org">WordPress</a> when I upgrade. This also adds the historical record of my change as a post and lets me test it. </p>
<p>So far, this looks sharp. I like the way WordPress tells me that a plugin was updated and gives me the option to update it automattically. <img src='http://www.gusverdun.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> Very well done.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gusverdun.com/2008/05/23/just-upgraded-to-wordpress-251/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
