<?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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Chris Chabot - chabotc.com &#187; Javascript</title>
	<atom:link href="http://www.chabotc.com/category/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.chabotc.com</link>
	<description>Random storms of thoughts</description>
	<lastBuildDate>Thu, 07 Jan 2010 14:55:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Announcing : Partuza!</title>
		<link>http://www.chabotc.com/javascript/announcing-partuza/</link>
		<comments>http://www.chabotc.com/javascript/announcing-partuza/#comments</comments>
		<pubDate>Mon, 05 May 2008 14:52:05 +0000</pubDate>
		<dc:creator>chabotc</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[OpenSocial]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.chabotc.com/?p=43</guid>
		<description><![CDATA[While working on shindig i had the need for a test social network site to test the code, and as such a new project was born, to create a simple but full featured social networking site.
Since a project deserves a name that&#8217;s more original then &#8217;shindig example SNS&#8217;, I named it &#8220;Partuza&#8221;. Partuza is slang [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.chabotc.com/wp-content/uploads/2008/05/partuza.png"></a>While working on shindig i had the need for a test social network site to test the code, and as such a new project was born, to create a simple but full featured social networking site.<br />
Since a project deserves a name that&#8217;s more original then &#8217;shindig example SNS&#8217;, I named it &#8220;Partuza&#8221;. Partuza is slang for party, just like shindig is slang for party too (this is in the line of thinking that both ajax and comet being cleaning agents.. it&#8217;s hard to think of a good name ok! <img src='http://www.chabotc.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</p>
<p>You can find the project page at: <a href="http://code.google.com/p/partuza/" target="_blank">http://code.google.com/p/partuza/</a></p>
<p>Â </p>
<p style="text-align: center;"><a href="http://www.chabotc.com/wp-content/uploads/2008/05/partuza.png"><img class="size-medium wp-image-52 aligncenter" title="partuza" src="http://www.chabotc.com/wp-content/uploads/2008/05/partuza-300x207.png" alt="partuza" width="300" height="207" /></a></p>
<p>The project has a number of goals:</p>
<ul>
<li>Have a test case for shindig, for me personally it&#8217;s been quite useful to test php shindig already.</li>
<li>Have something working to show off to potential users of shindig, might work well as a &#8216;live example&#8217; site of shindig at some point. Extended implication of this is that i want to try to support every feature open social and shindig have to offer.</li>
<li>Serve as a practical example of &#8216;how to use shindig&#8217; for (potential and existing) SNS&#8217;s that want to adopt open social and use shindig to do so.</li>
<li>Allow gadget developers to develop and test on a private, fast and local open social service.. this will probably make their lives a lot easier.</li>
</ul>
<p>You can see a live example of what&#8217;s been done so far at:<a href="http://partuza.chabotc.com/" target="_blank"> http://partuza.chabotc.com/</a></p>
<p>It&#8217;s still work in progress, my todo list currently consists of:</p>
<ul>
<li>Activity streams (save, retrieve &amp; show)</li>
<li>Profile editing (atm its just name, email and passwd)</li>
<li>Simple messaging (notify&#8217;s, messages, inbox, etc)</li>
<li>Extended container support (requestShareApp, requestSendMessage, etc)</li>
<li>Keep up with open social developments to support everything open social has to offer (but nothing else)</li>
</ul>
<p>The goal is -not- to make a complete fully features social network site with all bells and whistles (who knows that might change some day but right now it&#8217;s not), partially because i simply don&#8217;t have the spare time to make a bells-and-whistles type of site, and because it&#8217;s outside of the scope of the project&#8217;s intentions (see above: &#8220;Goals of this project&#8221;), the goal is to show and support every open social and shindig feature, not to make a new SNS.</p>
<p>There are some simple instructions on how to set this up on:<br />
<a href="http://code.google.com/p/partuza/wiki/GettingStarted" target="_blank">http://code.google.com/p/partuza/wiki/GettingStarted</a></p>
<p>Ps if you feel you want and can to contribute to Partuza, feel free to drop me a mail.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chabotc.com/javascript/announcing-partuza/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Third Step into the Open Social world</title>
		<link>http://www.chabotc.com/javascript/third-step-into-the-open-social-world/</link>
		<comments>http://www.chabotc.com/javascript/third-step-into-the-open-social-world/#comments</comments>
		<pubDate>Sun, 11 Nov 2007 03:31:02 +0000</pubDate>
		<dc:creator>chabotc</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[OpenSocial]]></category>

		<guid isPermaLink="false">http://www.chabotc.com/generic/third-step-into-the-open-social-world/</guid>
		<description><![CDATA[Ok if you have been reading step one and two of this series, you should now have a good idea of what Open Social is all about. And you have a basic application framework that can tell you who the owner, viewer and friends of both are.
So you would think it is easy sailing from [...]]]></description>
			<content:encoded><![CDATA[<p>Ok if you have been reading step one and two of this series, you should now have a good idea of what Open Social is all about. And you have a basic application framework that can tell you who the owner, viewer and friends of both are.</p>
<p>So you would think it is easy sailing from there right? So did i but unfortunatly this isn&#8217;t the case.</p>
<p>Most of your current prototype/scriptaculous code will be based on prototype&#8217;s &#8216;Ajax.Request&#8217; ajax wrapper. However since the Open Social container is hosted on a different server then where your logic is running, this is &#8216;cross site&#8217; communication, which is disallowed. So all the requests have to be tunneled thru it&#8217;s proxy&#8217;s, which breaks all the current prototype&#8217;s applications.</p>
<p><span id="more-40"></span>There are really two ways out of this, either you could do a a cross domain ajax request (for which a prototype 1.5 patch exists), but i&#8217;m unsure if the policies will always allow this, how this would trigger malware detection programs, and if it would work on all browsers, hence i decided to try to solve the problem in another way.</p>
<p>The end result is a Ajax.Request (and .Updater) implementation which has (roughly) the same API and options as prototype&#8217;s does, and thus allows pretty much all the  the current prototype based software to run un-modified, but internally uses the containers IG_FetchContent (which goes thu the proxy server) call to retrieve the information.</p>
<p>Unfortunately not  all the functionality can be emulated, since _IG_FetchContent doesn&#8217;t return http headers, so auto detection of json/javascript/xml headers is out of the window. So is propper error handling, since _IG_FetchContent doesn&#8217;t do errors per say, but just never returns with the content.</p>
<p>So the evalJSON param in the options field now means &#8216;parse the result as json, no matter what&#8217;, and the same for the evalJS option.</p>
<p>For the rest the functionality is emulated best as i could, but i&#8217;m sure over the following weeks it will be improved on heavily still. However it did so far allow me to continue building my new Open Social applications, without having to resort to arcane _IG_* API calls.</p>
<p>To use this library, include it <strong>after</strong> including prototype, and it will overwrite it&#8217;s Ajax.Request and Ajax.Updater classes.</p>
<p>The library can be downloaded here:</p>
<p><a href="http://www.chabotc.com/wp-content/uploads/2007/11/osajax.js" title="osAjax.js - Open Social compatible Ajax.Request implementation">osAjax.js &#8211; Open Social compatible Ajax.Request implementation</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chabotc.com/javascript/third-step-into-the-open-social-world/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Second Step into the Open Social World</title>
		<link>http://www.chabotc.com/javascript/second-step-into-the-open-social-world/</link>
		<comments>http://www.chabotc.com/javascript/second-step-into-the-open-social-world/#comments</comments>
		<pubDate>Sun, 11 Nov 2007 03:03:49 +0000</pubDate>
		<dc:creator>chabotc</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[OpenSocial]]></category>

		<guid isPermaLink="false">http://www.chabotc.com/generic/second-step-into-the-open-social-world/</guid>
		<description><![CDATA[Being a fan of prototype.js and scriptaculous my self, i was soon taken aback by the arcane javascript API's the Open Social environment offers. Its very much like programming in the old document.getElementById() days, and that can quickly get in the way of quickly writing good and maintainable software.
Hence my second step in the Open [...]]]></description>
			<content:encoded><![CDATA[<p>Being a fan of prototype.js and scriptaculous my self, i was soon taken aback by the arcane javascript API's the Open Social environment offers. Its very much like programming in the old document.getElementById() days, and that can quickly get in the way of quickly writing good and maintainable software.</p>
<p>Hence my second step in the Open Social world was to make a generic Open Social class which could wrap the social functionality (owner, viewer and friends of-) and all its arcane magic into a prototype.js style programming environment, and allow easy loading of all the required social data and wrap it in an uniform data structure.</p>
<p>The result was this class:</p>
<p><a href="http://www.chabotc.com/wp-content/uploads/2007/11/ospeople.js" title="osPeople - open social information wrapper">osPeople - open social information wrapper</a></p>
<p><span id="more-37"></span>This class can be used in 2 ways, either Extend this class to impliment functionality,<br />
and define the any following functions to hook up to the specific events your interested in:</p>
<p><strong>onInitialize();</strong> called when the class initializes<br />
<strong> onLoading();</strong>    called when the request.send call has been made and the data is being loaded<br />
<strong> onComplete();</strong>   called when the person data has been loaded and parse<br />
<strong> onError(msg);</strong>    called when an error occured in the opensocial communication</p>
<p>or call the class with onInitialize, onError, onLoading and/or onComplete functions in the options, for example:</p>
<div class="igBar"><span id="lcode-8"><a href="#" onclick="javascript:showPlainTxt('code-8'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-8">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">new osClass<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span> viewer:true, owner:true, onLoading: my_loading_function, onComplete: my_complete_function, onError: my_error_func<span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>to access the social people data you can use the following json arrays:</p>
<div class="igBar"><span id="lcode-9"><a href="#" onclick="javascript:showPlainTxt('code-9'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-9">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">.<span style="">owner</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">.<span style="">viewer</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">.<span style="">ownerFriends</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">.<span style="">viewerFriends</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>owner and viewer are single items, where *Friends are array's</p>
<p>each person entry is defined as:</p>
<div class="igBar"><span id="lcode-10"><a href="#" onclick="javascript:showPlainTxt('code-10'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-10">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">person.<span style="">id</span>&nbsp; &nbsp; &nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#40;</span>string, unique consistent person id<span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">person.<span style="">name</span>&nbsp; &nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#40;</span>display name on the social site<span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">person.<span style="">isOwner</span>&nbsp; <span style="color:#006600; font-weight:bold;">&#40;</span>bool, is this the owner of the page?<span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">person.<span style="">isViewer</span> <span style="color:#006600; font-weight:bold;">&#40;</span>bool, is this the viewer of the page?<span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">person.<span style="">profile</span>&nbsp; <span style="color:#006600; font-weight:bold;">&#40;</span>string, url to the profile page of this person<span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">person.<span style="">thumb</span>&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#40;</span>string, url to the thumbnail image<span style="color:#006600; font-weight:bold;">&#41;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Usage: to retrieve only the viewer:</p>
<div class="igBar"><span id="lcode-11"><a href="#" onclick="javascript:showPlainTxt('code-11'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-11">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">new osClass<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span>viewer:true<span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>To retrieve everything (viewer, owner, &amp; friends):</p>
<div class="igBar"><span id="lcode-12"><a href="#" onclick="javascript:showPlainTxt('code-12'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-12">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">new osClass<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span>viewer:true,owner:true,viewerFriends:true,ownerFriends:true<span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>other functions:</p>
<div class="igBar"><span id="lcode-13"><a href="#" onclick="javascript:showPlainTxt('code-13'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-13">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">hasError<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;&nbsp; &nbsp; &nbsp; &nbsp; returns true when an error has occured</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">getError<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Example of using this as an application class:</p>
<div class="igBar"><span id="ljavascript-14"><a href="#" onclick="javascript:showPlainTxt('javascript-14'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">JAVASCRIPT:</span>
<div id="javascript-14">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">var</span> myOSClass = <span style="color: #003366; font-weight: bold;">Class</span>.<span style="color: #006600;">create</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Object.<span style="color: #006600;">extend</span><span style="color: #66cc66;">&#40;</span>Object.<span style="color: #006600;">extend</span><span style="color: #66cc66;">&#40;</span>myOSClass.<span style="color: #006600;">prototype</span>, osClass.<span style="color: #006600;">prototype</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">onInitialize: <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">// show unloading msg here?</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">onLoaded: <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">// do things with: this.owner, this.viewer, this.ownerFriends and/or this.viewerFriends</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>To make this application load automaticly on load we have to create an open social container (xml file) which people can add to their profile page, and in it create the class in the container load event, like this:</p>
<p><a href="http://www.chabotc.com/wp-content/uploads/2007/11/demo-container.xml" title="demo container xml">demo container xml</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chabotc.com/javascript/second-step-into-the-open-social-world/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>First Step into the Open Social world</title>
		<link>http://www.chabotc.com/javascript/first-step-into-the-open-social-world/</link>
		<comments>http://www.chabotc.com/javascript/first-step-into-the-open-social-world/#comments</comments>
		<pubDate>Sun, 11 Nov 2007 02:36:20 +0000</pubDate>
		<dc:creator>chabotc</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[OpenSocial]]></category>

		<guid isPermaLink="false">http://www.chabotc.com/javascript/first-step-into-the-open-social-world/</guid>
		<description><![CDATA[The internet has been abuzz with the release of the 'Open Social' social website gadget building API.
If you have completely missed it, you can find a lot of info and a good introduction movie of the 'Google Campfire' event here:
http://code.google.com/apis/opensocial/
Of course being both professionally and personally interested in all new developments on the internet, i [...]]]></description>
			<content:encoded><![CDATA[<p>The internet has been abuzz with the release of the 'Open Social' social website gadget building API.</p>
<p>If you have completely missed it, you can find a lot of info and a good introduction movie of the 'Google Campfire' event here:<br />
<a href="http://code.google.com/apis/opensocial/" target="_blank">http://code.google.com/apis/opensocial/</a></p>
<p>Of course being both professionally and personally interested in all new developments on the internet, i couldn't resist diving right into it; So what does it all mean from a technological point of view? What it comes down to is that Google has created a set of standards (the open social API) and a basic Javascript framework with which Open Social sites can host uniform Gadgets.</p>
<p>This is a huge deal, simply put because a lot of the existing social sites have either no, or poor gadget support, or used a proprietary coding standard, which meant your dream application wouldn't be able to run everywhere, or wouldn't even be realizable on your favorite social site.</p>
<p>Open Social set out to change of all this, and Google's own social site (orkut) combined with many others  (such as hi5.com, ning, myspace, linked in, etc) will be able to use the same Open Social gadgets, potentially creating a huge developer pool for gadgets to run on those sites, and a slew of new gadget choices for its current 20+ million users.</p>
<p><strong>So far so good right?</strong></p>
<p>Well the devil is always in the details of course, as often is the case in bleeding edge technology, well, there is some bleeding going on.</p>
<p><span id="more-36"></span>The current orkut sandbox is temperamental and  often greets a user with a '<em>bad bad server, no donut for you</em>' error. In this case i would simply advice to refresh the page again after getting a fresh cup of coffee.</p>
<p>Or sometimes the gmodules.com server your application/gadget is assigned too, has random crashes (502 or 503 errors and 'i<em>nternal server error'</em> json responses). If thats the case for you, the only thing you can do is remove the application from your 'My Applications', and rename it on your server (ie app.xml to for instance app1.xml), and add it again to your applications. Since its a 'new application', it will be assigned to a new gmodules.com  server, which hopefully  does work; If not, rinse and repeat until it does.</p>
<p>Also don't be supprised if suddenly your favorite sandbox is down for half a day or more.. when google says Alpha (no thats not the famous google beta), they seem to mean it <img src='http://www.chabotc.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>And of course sign up to the orkut sandbox, hi5 sandbox and make a ning community where you can enable opensocial support (write once, debug everywhere while we are still in the 'alpha' faze of development) and make your self very familiar with their development documentation, example gadget containers.</p>
<p>Finally defiantly subscribe to the google open social mailing list, there is a lot of development chatter going on there, and google engineers partake in the discussions too.. there's many nuggets of knowledge to find there.</p>
<p>And check out the projects<a href="http://groups.google.com/group/opensocial-api/web/opensocial-links" target="_blank"> Links of Interest </a>wiki page.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chabotc.com/javascript/first-step-into-the-open-social-world/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WebChat 2.0 &#8211; First release</title>
		<link>http://www.chabotc.com/javascript/webchat-20-first-release/</link>
		<comments>http://www.chabotc.com/javascript/webchat-20-first-release/#comments</comments>
		<pubDate>Thu, 12 Apr 2007 14:49:21 +0000</pubDate>
		<dc:creator>chabotc</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.chabotc.com/javascript/webchat-20-first-release/</guid>
		<description><![CDATA[Due to to many circumstances to mention, the release of WebChat2.0 has suffered some delays; In the meantime most of the desired features (and bug &#38; browser compatibility fixes) have taken place, however a few still remain; As does a healthy dose of nice to have features that will be put in in the future
So [...]]]></description>
			<content:encoded><![CDATA[<p>Due to to many circumstances to mention, the release of WebChat2.0 has suffered some delays; In the meantime most of the desired features (and bug &amp; browser compatibility fixes) have taken place, however a few still remain; As does a healthy dose of nice to have features that will be put in in the future</p>
<p>So because things have been on hold so long i've decided to release and open-source what we have so far, as Eric S. Raymond said: "Release early, release often".The project has been released under the GPL v2 licence.</p>
<p>In laymen terms this means you can do with it what you want, but you have to contribute your changes back to the community / the project, and you can't just pick it up and sell it integrated into your own projects as if it was your own, integration into other projects is only allowed if you either contact me for a commercial licence, or if your project is GPL compatible too; However using it in your website, intranet, extranet, etc is fully permitted without any problems. <span id="more-32"></span> I've setup a code.google.com project at:<br />
<a href="http://code.google.com/p/webchat2/">http://code.google.com/p/webchat2/</a></p>
<p><a href="http://code.google.com/p/webchat2/"></a>To check out the project source:<br />
<em># svn checkout http://webchat2.googlecode.com/svn/trunk/ webchat2</em></p>
<p>You can download the source of this initial release here:<br />
<a href="http://www.chabotc.com/webchat2/webchat2-1.0.tar.gz">http://www.chabotc.com/webchat2/webchat2-1.0.tar.gz</a></p>
<p>Issues can be reported here:<br />
<a href="http://code.google.com/p/webchat2/issues/list">http://code.google.com/p/webchat2/issues/list</a></p>
<p>And you can contribute documentation and other usefull information here:<br />
<a href="http://code.google.com/p/webchat2/w/list">http://code.google.com/p/webchat2/w/list</a></p>
<p><a href="http://code.google.com/p/webchat2/w/list"></a>I'm very open to contributions of any kind, so if you need any help to get started feel free to contact me at chabotc@xs4all.nl</p>
<p>Much of the information about this project can be found in the initial post:<br />
<a href="http://www.chabotc.com/generic/chat-prototype-first-public-demo/">http://www.chabotc.com/generic/chat-prototype-first-public-demo/</a></p>
<p>And the public demo version is still running at:<a href="http://www.chabotc.nl:2001/chat.html">http://www.chabotc.nl:2001/chat.html</a></p>
<p>Talking of the public demo, its been running without a glitch or restarting the IRC server or PHP daemon for over 3 months, so it seems its quite stable in real life testing.Do be ware, since the project isn't completely finished yet, it does mean it currently comes without to much of documentation or instalation guides, and some small bugs remain.</p>
<p>And to get it all running you need a number of things:</p>
<ul>
<li>IRC server (hybrid prefered). I used the Fedora Extra's ircd-hybrid package</li>
<li>PHP (developed and tested with 5.2.x) Need to have socket extentions enabled. The demo version is running in a chroot'd envirioment, there's plenty of guides out there on how to set this up if you need more information about this. Should only be a extra layer of security, since there's no real potential for code injection, however if you are paranoid about security, this could be a good idea</li>
<li>A modern web browser, like IE6, IE7 or preferable Firefox</li>
</ul>
<p>When configuring your IRC server (which is used in the backend, and guarantees infinite scalability which is tried and tested) a few things are important:</p>
<p>Set the "<em>throttle_time</em>" to 0 or else connections would be denied if multiple people connect at the same time.Then to allow for more then the pre configured users from one IP (standard this is set to 3 or 4 connections). Change:<br />
<em>max_clients<br />
number_per_ip<br />
max_global<br />
max_local </em></p>
<p>The demo server on chabotc.nl is set to a max of 4096 connections but any number will do as long as your server can handle it.</p>
<p>Also change the "auth" section in your ircd.conf and comment out the following:<br />
/*flags = need_ident;*/</p>
<p>This is because all connections come from your own server, so it only causes delayes when connecting thru the web chat frontend.Then change your network name and description to something fitting, and you should be all set! There's a lot of other options in the ircd.conf file, but their pretty well documented in the configuration file and there's plenty of documentation about it on the web.</p>
<p>After this, check out the webchat2 source, change the port number you want it to listen on (currently defaults to 2001) in chat.php, change the server list in htdocs/js/chatConnectWindow.js(!!) you can hide the selection box and make it default to your local server easily there too and change the default channel in httpServer.php (line 78).</p>
<p>After this you should be able to run the daemon:<br />
<em># chmod +x ./chat.php<br />
# ./chat.php</em></p>
<p>if all worked well you should be able to connect to your chat setup thru (replace yourhost.com and port number with your local values):</p>
<p>http://www.yourhost.com:2001/</p>
<p>A few wishlist items that are currently high on my list of things to fix:</p>
<ul>
<li>Configuration file for IP's, port numbers, etc</li>
<li>Implement IRC /ignore, /query, /whois, /ping and /help commands in back and frontend</li>
<li>Implement double click on nick (in left list) = open private chat window with that person</li>
<li>Implement right click menu on nick (in left list) for common options like private chat, whois, etc</li>
<li>Few cross browser bugs remain, and smiley's selection still needs to be made! Much in the same style as color parsing in javascript, it needs to insert the image on click, then on sending the msg rewrite the image tag to the matching smiley sequence, aka ":D" etc, translating these smilies to images again is already implemented</li>
</ul>
<p>There's plenty of other items that i left out of the list but those are top priority in my perspective and i'll be working on them as time permits, but i'm very open to patches too</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chabotc.com/javascript/webchat-20-first-release/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
	</channel>
</rss>
